j0hanz/filesystem-context-mcp-server

j0hanz/filesystem-context-mcp-server

от j0hanz
Безопасный MCP сервер для работы с файловой системой: чтение, запись, поиск, сравнение и патч файлов. Все операции изолированы в разрешённых директориях с защитой от обхода путей. Подходит для AI-ассистентов, которым нужен контролируемый доступ к файлам.
Filesystem MCP logo

Filesystem MCP

Let your AI assistant work with your files, safely.

Read, search, edit, and patch files in the folders you choose.
Secret files stay hidden, and risky changes wait for your OK.

npm version CI License: MIT GitHub stars HOL Trust

Install in VS Code Install in VS Code Insiders Install in Visual Studio Install in Cursor Install in Claude Desktop

What is this?

Model Context Protocol (MCP) is how AI apps such as Claude, GitHub Copilot in VS Code, and Cursor connect to tools. Filesystem MCP is an MCP server: a small program that runs on your computer and gives the AI 13 tools for working with files. You choose which folders it can use, and everything outside them is off limits.

Once it is connected, you can ask things like:

  • "Find every TODO in this repo and group them by file."
  • "Rename getUser to fetchUser in all .ts files. Show me the diff first."
  • "What changed between config.dev.json and config.prod.json?"
  • "Read the last 50 lines of server.log and explain the error."
  • "Move the old screenshots into archive/2025/."

Why Filesystem MCP?

  • It is safe by default. The AI can use only the folders you allow, and .env files, private keys, and cloud credentials are blocked. The server asks you before the AI deletes a non-empty folder, opens a folder you did not allow, or writes over a file with create or move. Only create and copies can skip that question, by passing overwrite: true. Edits made with edit, patch, and replace_text apply without asking, but the AI can show you the diff first with dryRun. If the AI should never change anything, --read-only removes every tool that writes.
  • Search and editing are made for code. The AI can search inside files like grep, with a regex engine (RE2) that cannot hang, and by default the server skips .gitignored files and folders like node_modules. Edits are exact-match replacements that return an error when the text does not match, and you can preview them as a diff first.
  • It saves the AI's context. The AI can read many files in one call or only the lines it needs, and it can check a file's size and token estimate before reading it.
  • It works with any MCP client, over stdio or HTTP, on macOS, Linux, and Windows. You can install it with npx, Docker, or a one-click Claude Desktop extension, or build your own client on it.
  • It is private. It runs on your machine, has no telemetry, and makes no network calls.

Часто задаваемые вопросы

Инструменты были проиндексированы:
create

Записывает текстовые файлы целиком (создаёт новые, перезаписывает или дописывает) или создаёт пустые каталоги. Отсутствующие родительские каталоги создаются. edit или patch изменяет часть существующего файла.

Создаёт файлы.

Параметры
  • directoriesstring[]

    Пустые каталоги для создания, как mkdir -p; уже существующий остаётся как есть.

  • filesobject[]

    Список файлов для создания (максимум 100); каждая запись требует path и content; суммарный размер содержимого ограничен лимитом размера файла.

delete

Удаляет файлы, каталоги или символьные ссылки безвозвратно, как rm или rm -r. Пути задаются точно; глоб-шаблоны не раскрываются.

Удаляет файл.

Параметры
  • ignoreIfNotExistsboolean

    Если путь не существует, молча возвращай успех, а не ошибку.

  • pathsstring[]обязательный

    Пути для удаления (максимум 1000); принимает файлы, каталоги или симлинки

  • recursiveboolean

    Удалить содержимое каталога рекурсивно (требуется для непустых каталогов)

diffтолько чтение

Сравнивает два текстовых файла и возвращает унифицированный diff от a к b, как diff -u.

Diff

Параметры
  • astringобязательный

    Первый файл для сравнения

  • bstringобязательный

    Второй файл для сравнения.

  • contextinteger

    Количество строк контекста вокруг каждого изменения (по умолчанию: 3)

edit

Редактирует текстовые файлы на месте, заменяя точное oldText на newText, как str_replace. Каждый oldText должен совпадать ровно один раз, и файл записывается только в том случае, если все его правки совпадают. replace_text заменяет каждое вхождение во всех файлах.

Edit Files

Параметры
  • dryRunboolean

    Предпросмотр изменений без записи на диск (по умолчанию: false = применять правки)

  • editsobject[]

    Замены, применяемые к path (обязательны при указании path); не допускаются при указании files

  • filesobject[]

    Записи для каждого файла (пакетный режим)

  • ignoreWhitespaceboolean

    Игнорировать различия в начальных/конечных пробелах при сопоставлении oldText

  • pathstring

    Один путь к файлу; взаимоисключающе с параметром files.

find_filesтолько чтение

Находит файлы по имени или glob-шаблону; возвращает пути к файлам относительно корня, готовые для передачи в read или edit. Шаблон без / совпадает с именами файлов на любой глубине. search_text ищет по содержимому.

Находит файлы.

Параметры
  • cursorstring

    Непрозрачный курсор пагинации; передавайте его без изменений для следующей страницы. Страницы — это срез одного снимка, сделанного при первом запросе; он истекает примерно через 60 секунд. Если запрос отклонён, повторите его без курсора.

  • includeHiddenboolean

    Включает скрытые элементы (начинающиеся с .)

  • includeIgnoredboolean

    Включайте игнорируемые элементы (node_modules, .git и т.д.).

  • maxDepthinteger

    Максимальная глубина сканирования каталога; 0 = только базовый каталог, опустите для неограниченной глубины

  • maxResultsinteger

    Максимальное количество соответствующих файлов, возвращаемых на страницу

  • pathstring

    Базовый каталог для поиска (по умолчанию: первый разрешенный корень).

  • patternstringобязательный

    Шаблон glob для сопоставления путей к файлам (например, /*.ts, src//*.js)

  • sortByenum

    Порядок сортировки: path = полный путь (по умолчанию), name = только базовое имя

listтолько чтение

Выводит файлы и подкаталоги каталога в виде дерева имён, как ls или tree. includeSizes добавляет размеры и общий итог; stat возвращает даты.

Список.

Параметры
  • cursorstring

    Непрозрачный курсор пагинации; передавайте его без изменений для следующей страницы. Страницы — это срез одного снимка, сделанного при первом запросе; он истекает примерно через 60 секунд. Если запрос отклонён, повторите его без курсора.

  • includeHiddenboolean

    Включает скрытые элементы (начинающиеся с .)

  • includeIgnoredboolean

    Включайте игнорируемые элементы (node_modules, .git и т.д.).

  • includeSizesboolean

    Показывает размеры файлов в дереве и итоговую строку с количеством и байтами.

  • maxDepthinteger

    Максимальная глубина обхода каталогов (по умолчанию: 1 = только верхний уровень; увеличьте для более глубокого рекурсивного обхода)

  • maxEntriesinteger

    Размер страницы (по умолчанию: 1000). Продолжайте с nextCursor; неполная первая страница также содержит resourceUri для всего списка.

  • pathstring

    Каталог для вывода списка (по умолчанию: первый разрешённый корень).

  • sortByenum

    Порядок внутри каждого каталога: name (по умолчанию) или size (сначала самые большие)

list_rootsтолько чтение

Перечисляет каталоги, к которым этот сервер имеет доступ, в виде абсолютных путей, включая те, что пользователь предоставил во время этой сессии. Другие инструменты могут попросить пользователя предоставить доступ к пути за пределами этих каталогов.

Корневые каталоги рабочей области

Параметры

Без параметров.

move

Перемещает, переименовывает или копирует файлы и директории, как команды mv или cp -r. Каждый путь назначения задаёт полный новый путь, а не папку для перемещения; отсутствующие родительские директории создаются.

Перемещает или копирует файлы.

Параметры
  • copyboolean

    Копировать вместо перемещения; исходные файлы остаются на месте.

  • movesobject[]обязательный

    Выполняемые операции (максимум 100)

  • overwriteboolean

    Только в режиме копирования: перезаписывает существующие целевые объекты без подтверждения.

patch

Применяет однофайловый унифицированный diff к одному существующему текстовому файлу, как git apply. Ничего не записывается, пока каждый фрагмент не применится в порядке файла с точно совпадающим контекстом; фрагменты находятся по контексту, поэтому начальные номера строк могут быть смещены.

Патч

Параметры
  • diffstringобязательный

    Унифицированный дифф для одного файла, который нужно применить (созданный инструментом diff или при сухом прогоне редактирования)

  • dryRunboolean

    Предпросмотр результата без записи (по умолчанию: false)

  • pathstringобязательный

    Файл, к которому применяется diff.

readтолько чтение

Читает текстовые файлы, как cat: целиком или один срез через head, tail или startLine/endLine. Изображения и аудио возвращает как media; передаётся binary: true, и тогда любой другой бинарный файл возвращается целиком как встроенный ресурс в base64.

Читает файл.

Параметры
  • binaryboolean

    Возвращает бинарный файл, который не изображение и не аудио, целиком как встроенный ресурс в base64. Только чтение целиком.

  • endLineinteger

    Конечная строка (нумерация с 1); требует startLine

  • headinteger

    Возвращает первые N строк.

  • includeHashboolean

    Включите хэш SHA-256 возвращаемого содержимого в ответ.

  • pathstring

    Один путь к файлу; взаимоисключающий с путями

  • pathsstring[]

    Массив путей к файлам для пакетного режима (до 1000); нельзя использовать вместе с параметром path

  • startLineinteger

    Строка начала (индексация с 1)

  • tailinteger

    Возвращает последние N строк.

replace_text

Находит и заменяет каждое вхождение литерального текста или регулярного выражения RE2, как sed -i, в одном файле или во всех файлах в каталоге, при необходимости отфильтрованных по glob. Шаблон применяется ко всему файлу: он может охватывать несколько строк, а ^ и $ привязываются к началу и концу файла. edit заменяет одно уникальное точное совпадение.

Ищет и заменяет.

Параметры
  • caseSensitiveboolean

    Включить учёт регистра (по умолчанию: без учёта регистра)

  • dryRunboolean

    Предпросмотр замен без записи на диск (по умолчанию: false = применить изменения)

  • includeHiddenboolean

    Включает скрытые элементы (начинающиеся с .)

  • includeIgnoredboolean

    Включайте игнорируемые элементы (node_modules, .git и т.д.).

  • isRegexboolean

    Обрабатывает searchPattern как регулярное выражение RE2 (по умолчанию: точное совпадение текста)

  • maxDepthinteger

    Максимальная глубина сканирования каталога; 0 = только базовый каталог, опустите для неограниченной глубины

  • maxFilesinteger

    Максимальное количество файлов для обработки

  • maxResultsinteger

    Максимальное общее количество совпадений по всем файлам до остановки.

  • pathstring

    Файл для перезаписи или каталог, в котором нужно выполнить перезапись. Если его опустить, будет затронут ВЕСЬ первый допустимый корневой каталог, ограничьте его намеренно и сначала сочетайте широкий охват с dryRun=true.

  • patternstring

    Glob для ограничения замен конкретными типами файлов (напр. **/*.ts); по умолчанию: все текстовые файлы

  • replacementstringобязательный

    Текст замены. Используйте ссылки на группы захвата ($1, $2 и т. д.), когда isRegex=true. Используйте пустую строку, чтобы удалить все совпадения.

  • returnDiffboolean

    Включает объединённый diff всех изменений в ответе.

  • searchPatternstringобязательный

    Точный литеральный текст или regex-шаблон RE2 для поиска. Когда isRegex=true, используется синтаксис RE2 (опережающие проверки, ретроспективные проверки и обратные ссылки не поддерживаются). Значение не может быть пустым или состоять только из пробелов.

  • wholeWordboolean

    Сопоставлять только целые слова (привязка к границам слова)

search_textтолько чтение

Ищет в содержимом файлов буквальный текст или регулярное выражение RE2, как grep; возвращает совпавшие строки с номерами строк и путями относительно корня, готовые для передачи в read или edit. Шаблоны сопоставляются в пределах одной строки. find_files сопоставляет имена файлов.

Поиск содержимого

Параметры
  • caseSensitiveboolean

    Включить учёт регистра (по умолчанию: без учёта регистра)

  • contextinteger

    Число строк контекста, возвращаемых с каждой стороны от каждого совпадения, как в grep -C (по умолчанию: 0, максимум: 10)

  • cursorstring

    Непрозрачный курсор пагинации; передавайте его без изменений для следующей страницы. Страницы — это срез одного снимка, сделанного при первом запросе; он истекает примерно через 60 секунд. Если запрос отклонён, повторите его без курсора.

  • includeHiddenboolean

    Включает скрытые элементы (начинающиеся с .)

  • includeIgnoredboolean

    Включайте игнорируемые элементы (node_modules, .git и т.д.).

  • isRegexboolean

    Рассматривает searchPattern как регулярное выражение (по умолчанию: буквальное совпадение текста)

  • maxDepthinteger

    Максимальная глубина сканирования каталога; 0 = только базовый каталог, опустите для неограниченной глубины

  • maxResultsinteger

    Максимальное количество совпадающих строк на странице

  • pathstring

    Файл для поиска или каталог, в котором нужно искать (по умолчанию: первый разрешённый корень целиком). Если указан файл, ищется только этот файл: шаблон игнорируется, а фильтрация скрытых или игнорируемых элементов не применяется.

  • patternstring

    Glob для ограничения поиска конкретными типами файлов (например, **/*.ts); по умолчанию: все текстовые файлы

  • searchPatternstringобязательный

    Точный литеральный текст или regex-шаблон RE2 для поиска в содержимом файлов. Когда isRegex=true, используется синтаксис RE2 (без lookahead, lookbehind и backreferences). Не может быть пустым или состоять только из пробелов.

statтолько чтение

Получает метаданные без чтения содержимого, как ls -ld: тип, размер (для файлов) или entryCount (для каталогов; секретные файлы не учитываются), tokenEstimate, метки времени, права доступа (readOnly в Windows), MIME-тип, определяемый по расширению, и цель символической ссылки. Также проверяет, существуют ли пути.

Получает информацию о файле.

Параметры
  • pathstring

    Один путь к файлу; взаимоисключающий с путями

  • pathsstring[]

    Массив путей к файлам для пакетного режима (до 1000); нельзя использовать вместе с параметром path

2.9.1основная
2.9.0
2.8.1
2.8.0
2.7.6
2.7.5
2.7.4
2.7.3
2.7.2
2.7.1
2.7.0
2.6.3
2.6.2
2.6.1
2.6.0
2.5.2
2.5.1
2.5.0
2.4.1
2.4.0
2.3.0
2.2.0
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.0
1.19.1
1.19.0
1.18.0
1.17.1
1.17.0
1.16.3
1.16.2
1.16.1
1.16.0
1.15.5
1.15.4
1.15.3
1.15.2
1.15.1
1.15.0
1.14.1
1.14.0
1.13.2
1.13.1
1.13.0
1.12.0
1.11.1
1.11.0
1.10.0
1.9.1
1.9.0
1.8.0
1.7.3
1.7.2
1.7.1
1.7.0
1.6.2
1.6.1
1.6.0
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.4
1.0.3
1.0.1
1.0.0

Выберите клиент, чтобы установить j0hanz/filesystem-context-mcp-server:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "j0hanz-filesystem-context-mcp-server-2jmpmwqtt5": {
      "args": [
        "-y",
        "@j0hanz/filesystem-mcp@latest"
      ],
      "command": "npx"
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "j0hanz-filesystem-context-mcp-server-2jmpmwqtt5": {
      "args": [
        "-y",
        "@j0hanz/filesystem-mcp@latest"
      ],
      "command": "npx"
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "j0hanz-filesystem-context-mcp-server-2jmpmwqtt5": {
      "type": "stdio",
      "args": [
        "-y",
        "@j0hanz/filesystem-mcp@latest"
      ],
      "command": "npx"
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"j0hanz-filesystem-context-mcp-server-2jmpmwqtt5\",\"type\":\"stdio\",\"args\":[\"-y\",\"@j0hanz/filesystem-mcp@latest\"],\"command\":\"npx\"}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "j0hanz-filesystem-context-mcp-server-2jmpmwqtt5": {
      "args": [
        "-y",
        "@j0hanz/filesystem-mcp@latest"
      ],
      "command": "npx"
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add j0hanz-filesystem-context-mcp-server-2jmpmwqtt5 -- npx -y @j0hanz/filesystem-mcp@latest

Либо через JSON-конфиг:

claude mcp add-json j0hanz-filesystem-context-mcp-server-2jmpmwqtt5 "{\"args\":[\"-y\",\"@j0hanz/filesystem-mcp@latest\"],\"command\":\"npx\"}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add j0hanz-filesystem-context-mcp-server-2jmpmwqtt5 -- npx -y @j0hanz/filesystem-mcp@latest

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.j0hanz-filesystem-context-mcp-server-2jmpmwqtt5]
command = "npx"
args = ["-y", "@j0hanz/filesystem-mcp@latest"]
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите j0hanz/filesystem-context-mcp-server, а в поле команды запуска — строку ниже:
npx -y @j0hanz/filesystem-mcp@latest

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "j0hanz-filesystem-context-mcp-server-2jmpmwqtt5": {
      "args": [
        "-y",
        "@j0hanz/filesystem-mcp@latest"
      ],
      "command": "npx"
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "j0hanz-filesystem-context-mcp-server-2jmpmwqtt5": {
      "args": [
        "-y",
        "@j0hanz/filesystem-mcp@latest"
      ],
      "command": "npx",
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например j0hanz-filesystem-context-mcp-server-2jmpmwqtt5.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: j0hanz-filesystem-context-mcp-server-2jmpmwqtt5
    command: npx
    args:
      - "-y"
      - "@j0hanz/filesystem-mcp@latest"
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "j0hanz-filesystem-context-mcp-server-2jmpmwqtt5": {
      "args": [
        "-y",
        "@j0hanz/filesystem-mcp@latest"
      ],
      "command": "npx"
    }
  }
}

Похожие MCP-сервера

efforthye/fast-filesystem-mcp

efforthye/fast-filesystem-mcp

от efforthye

MCP инструмент для файловой системы через Claude Desktop. Поддерживает чтение и запись больших файлов, пакетное редактирование с резервированием, поиск по содержимому. Полезен для автоматизации файловых операций.

TypeScript⭐ 64
mark3labs/mcp-filesystem-server

mark3labs/mcp-filesystem-server

от mark3labs

Работает с локальной файловой системой: читает, создаёт, перемещает файлы и каталоги, ищет текст по содержимому. Доступ только к разрешённым папкам.

Go⭐ 692
exoticknight/mcp-file-merger

exoticknight/mcp-file-merger

от exoticknight

MCP-сервер для быстрого объединения нескольких файлов в один. Удобен разработчикам, которым нужно сливать текстовые файлы или фрагменты кода в один документ. Работает только с разрешёнными директор...

JavaScript⭐ 28
mamertofabian/mcp-everything-search

mamertofabian/mcp-everything-search

от mamertofabian

Кроссплатформенный MCP сервер для быстрого поиска файлов на Windows (Everything SDK), macOS (mdfind) и Linux (locate). Помогает разработчикам AI-ассистентов находить файлы по имени, пути и регулярн...

Python⭐ 366
erikhoward/adls-mcp-server

erikhoward/adls-mcp-server

от erikhoward

MCP-сервер для Azure Data Lake Storage Gen2. Предоставляет инструменты для файловых операций: загрузка, скачивание, управление метаданными и контейнерами. Полезен для интеграции ADLS2 с MCP-клиента...

Python⭐ 6
tumf/mcp-text-editor

tumf/mcp-text-editor

от tumf

MCP сервер для построчного редактирования текстовых файлов с частичным доступом снижает расход токенов при работе с LLM. Поддерживает безопасное редактирование через хэш-валидацию и работу с разным...

Python⭐ 202
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин