j0hanz/filesystem-context-mcp-server

j0hanz/filesystem-context-mcp-server

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

Filesystem MCP Server

npm version License: MIT

Install in VS Code Install in VS Code Insiders Install in Visual Studio

Add to LM Studio Install in Cursor

Secure filesystem MCP server for reading, writing, searching, diffing, and patching files.

Table of Contents

  • Overview
  • Key Features
  • Quick Start — Docker · CLI Usage
  • Client Configuration
  • Use Cases
  • Architecture
  • MCP Surface — Tools · Resources · Prompts
  • MCP Capabilities — Tool Annotations · Structured Output
  • Configuration — HTTP & Auth · File Size Limits · Access Control · Output & Inline Limits · Tasks · Logging & Diagnostics · Performance
  • HTTP Endpoints
  • Security
  • Development
  • Troubleshooting
  • Credits
  • Contributing and License

Overview

A secure, production-ready Model Context Protocol server that gives AI assistants controlled access to the local filesystem. All operations are sandboxed to explicitly allowed directories with path traversal prevention, sensitive file blocking, and optional Bearer token authentication.

Supports stdio (default) and Node Streamable HTTP transport. HTTP sessions are implemented with isolated per-session server state. The HTTP transport is stateful by default and currently non-resumable; it does not persist an event store for Last-Event-ID replay.

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

Создаёт один или несколько файлов (до 100), записывая или перезаписывая содержимое и создавая родительские каталоги по мере необходимости. Файлы передаются в виде: [{ path, content }], формы для одного пути нет. Молча перезаписывает существующие файлы: сначала прочитайте, если нужно сохранить текущее содержимое.

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

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

    List of files to create (max 100); each entry requires path and content

delete

Окончательно удаляет один или несколько файлов, каталогов или символьных ссылок (не более 1000 за вызов). Это действие необратимо. Передавайте пути: [...] ; отдельной формы для одного пути нет. Для непустых каталогов требуется recursive=true, и дополнительно запрашивается подтверждение пользователя для каждого из них, поэтому вызов возвращается без удаления, пока не придёт это подтверждение. Клиент, который не может запрашивать подтверждение, получит ошибку с указанием альтернативы. Корневые каталоги рабочей области удалить нельзя.

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

Параметры
  • ignoreIfNotExistsboolean

    Silently succeed if a path does not exist instead of returning an error

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

    Paths to delete (max 1000); accepts files, directories, or symlinks

  • recursiveboolean

    Delete directory contents recursively (required for non-empty directories)

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

Сравнивает два файла и возвращает unified diff с количеством строк. Передайте два пути как a и b. Используйте после пробного запуска редактирования (dry-run), чтобы сравнить с другим файлом или просмотреть изменения между двумя путями.

Diff

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

    First file to compare

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

    Second file to compare

  • contextinteger

    Number of context lines surrounding each change (default: 3)

edit

Применяет последовательные литеральные замены строк к одному или нескольким файлам (не более 5 файлов за вызов). Режимы: для одного файла { path, edits } или для нескольких файлов: { files: [{ path, edits }] }. oldText должен точно совпадать с содержимым файла; включите 3-5 строк окружающего контекста, чтобы гарантировать уникальность. Установите dryRun=true, чтобы просмотреть diff без записи. Для массовой замены регулярных выражений по glob-шаблону во множестве файлов используйте replace_text.

Edit Files

Параметры
  • dryRunboolean

    Preview diffs without writing to disk (default: false = apply edits)

  • editsany[]

    Replacements applied to path; not allowed when using files

  • filesobject[]

    Per-file entries (batch mode)

  • ignoreWhitespaceboolean

    Ignore leading/trailing whitespace differences when matching oldText

  • pathstring

    Single file path; mutually exclusive with files

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

Находит файлы, соответствующие glob-шаблону. Возвращает совпавшие пути с необязательными метаданными. Курсоры постраничной навигации ссылаются на привязанный к запросу снимок, который истекает через 60 секунд. Для поиска по содержимому используйте search_text; для массовых замен по регулярным выражениям используйте replace_text с тем же glob-шаблоном.

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

Параметры
  • cursorstring

    Opaque pagination cursor; pass unchanged for the next page. Pages slice one snapshot taken on the first call; it expires after ~60s — re-request without a cursor if rejected.

  • includeHiddenboolean

    Include hidden items (starting with .)

  • includeIgnoredboolean

    Include ignored items (node_modules, .git, etc).

  • maxDepthinteger

    Max directory depth to scan; 0 = base directory only, omit for unlimited

  • maxResultsinteger

    Maximum number of matching files to return per page

  • pathstring

    Base directory to search under (default: first allowed root)

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

    Glob pattern to match file paths (e.g. /*.ts, src//*.js)

  • sortByenum

    Sort order: path = full path (default), name = basename only

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

Перечисляет отсортированные записи каталога и ASCII-дерево. maxDepth=1 - верхний уровень. maxEntries задаёт размер страницы; продолжайте с nextCursor. resourceUri используется только при превышении жёсткого лимита.

Список.

Параметры
  • cursorstring

    Opaque pagination cursor; pass unchanged for the next page. Pages slice one snapshot taken on the first call; it expires after ~60s — re-request without a cursor if rejected.

  • includeHiddenboolean

    Include hidden items (starting with .)

  • includeIgnoredboolean

    Include ignored items (node_modules, .git, etc).

  • maxDepthinteger

    Max directory depth to traverse (default: 1 = top-level only; increase to recurse deeper)

  • maxEntriesinteger

    Page size (default: 1000). Continue with nextCursor; resourceUri is only for hard-cap overflow.

  • pathstring

    Directory to list (default: first allowed root)

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

Перечислите разрешённые корневые каталоги рабочей области. Сначала вызовите этот инструмент, чтобы узнать, какие пути доступны; все остальные инструменты ограничены этими корневыми каталогами. Разрешённые каталоги настраиваются через аргументы командной строки, переменную окружения FS_ALLOWED_DIRS или --allow-cwd.

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

Параметры

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

move

Перемещает, переименовывает или копирует файлы и директории по явно указанным путям назначения (не более 100 операций за вызов). Передайте moves: [{ source, destination }], отдельной формы для одной пары нет. Родительские директории создаются автоматически. Установите copy=true, чтобы копировать вместо перемещения (исходники сохраняются). Если путь назначения уже существует, инструмент запрашивает подтверждение перезаписи, поэтому вызов завершается без перемещения до тех пор, пока подтверждение не получено; copy=true с overwrite=true пропускает запрос, у move такого обходного пути нет. Перемещения в себя молча пропускаются.

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

Параметры
  • copyboolean

    Copy instead of move; sources are left in place

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

    Operations to perform (max 100)

  • overwriteboolean

    Copy mode only: overwrite existing destinations without confirmation

patch

Применяет единый unified diff к одному файлу и записывает результат. Принимает { path, diff }. Используется после просмотра dry-run инструмента diff: принимает diff blob напрямую, а не переформулирует его как правки строк. Отклоняет многофайловые diff и diff, контекст hunk которых не совпадает с файлом. Устанавливает dryRun=true для предварительного просмотра результата без записи.

Патч

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

    Single-file unified diff to apply (as produced by the diff tool or edit dry-run)

  • dryRunboolean

    Preview the result without writing (default: false)

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

    File to apply the diff to

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

Читает один или несколько текстовых файлов и возвращает содержимое. Частичное чтение: head (первые N строк), tail (последние N строк), startLine/endLine (диапазон строк). Пакетный режим: передайте paths[] вместо path; параметры строк общие для всех файлов. head, tail и startLine/endLine взаимоисключающие: используйте ровно один.

Читает файл.

Параметры
  • endLineinteger

    End line (1-indexed)

  • headinteger

    Return first N lines

  • includeHashboolean

    Include SHA-256 hash of the returned content in the response

  • pathstring

    Single file path; mutually exclusive with paths

  • pathsstring[]

    Array of file paths for batch mode (max 1000); mutually exclusive with path

  • startLineinteger

    Start line (1-indexed)

  • tailinteger

    Return last N lines

replace_text

Выполняет массовый поиск и замену в файлах, соответствующих glob-шаблону. Заменяет ВСЕ вхождения в каждом файле (в отличие от edit, который заменяет только первое совпадение). Установите returnDiff=true, чтобы просмотреть изменения в виде unified diff до или после записи. По умолчанию используется литеральное сопоставление; установите isRegex=true, чтобы включить регулярные выражения RE2 с группами захвата ($1, $2).

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

Параметры
  • caseSensitiveboolean

    Enable case-sensitive matching (default: case-insensitive)

  • dryRunboolean

    Preview replacements without writing to disk (default: false = apply changes)

  • includeHiddenboolean

    Include hidden items (starting with .)

  • includeIgnoredboolean

    Include ignored items (node_modules, .git, etc).

  • isRegexboolean

    Treat searchPattern as a RE2 regex (default: literal text match)

  • maxDepthinteger

    Max directory depth to scan; 0 = base directory only, omit for unlimited

  • maxFilesinteger

    Maximum number of files to process

  • maxResultsinteger

    Maximum total match count across all files before stopping

  • pathstring

    File to rewrite, or directory to rewrite under. Omitting it targets the ENTIRE first allowed root — scope it deliberately, and pair a wide scope with dryRun=true first

  • patternstring

    Glob to restrict replacements to specific file types (e.g. **/*.ts); default: all text files

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

    Replacement text. Use capture group references ($1, $2, etc.) when isRegex=true. Use an empty string to delete all matches.

  • returnDiffboolean

    Include a unified diff of all changes in the response

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

    Exact literal text or RE2 regex pattern to search for. When isRegex=true, uses RE2 syntax (no lookahead, lookbehind, or backreferences are supported). Cannot be empty or whitespace-only.

  • wholeWordboolean

    Match whole words only (word boundary anchoring)

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

Ищет в содержимом файлов по тексту или регулярному выражению (в стиле grep). Возвращает совпадающие строки с путём к файлу, номером строки (отсчёт от 1) и смещением столбца (отсчёт от 0). Ограничьте поиск конкретными типами файлов с помощью шаблона (например, **/*.ts). Установите includeHidden=true, чтобы включить скрытые файлы. Для поиска по имени файла используйте find_files.

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

Параметры
  • caseSensitiveboolean

    Enable case-sensitive matching (default: case-insensitive)

  • cursorstring

    Opaque pagination cursor; pass unchanged for the next page. Pages slice one snapshot taken on the first call; it expires after ~60s — re-request without a cursor if rejected.

  • includeHiddenboolean

    Include hidden items (starting with .)

  • includeIgnoredboolean

    Include ignored items (node_modules, .git, etc).

  • isRegexboolean

    Treat searchPattern as a regex (default: literal text match)

  • maxDepthinteger

    Max directory depth to scan; 0 = base directory only, omit for unlimited

  • maxResultsinteger

    Maximum number of matching lines to return per page

  • pathstring

    File to search, or directory to search under (default: the whole first allowed root). Naming a file searches that file alone: pattern is ignored and hidden/ignored filtering does not apply.

  • patternstring

    Glob to restrict search to specific file types (e.g. **/*.ts); default: all text files

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

    Exact literal text or RE2 regex pattern to search for in file contents. When isRegex=true, uses RE2 syntax (no lookahead, lookbehind, or backreferences). Cannot be empty or whitespace-only.

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

Получает метаданные одного или нескольких файлов или каталогов: размер, тип, права доступа, MIME-тип, временные метки и tokenEstimate. Используйте tokenEstimate, чтобы предварительно оценить стоимость чтения перед вызовом read. Одиночный путь: передайте path. Пакетный режим: передайте paths[].

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

Параметры
  • pathstring

    Single file path; mutually exclusive with paths

  • pathsstring[]

    Array of file paths for batch mode (max 1000); mutually exclusive with path

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

mark3labs/mcp-filesystem-server

mark3labs/mcp-filesystem-server

MCP-сервер для безопасного доступа к локальной файловой системе. Операции: чтение, запись, копирование, а также удаление и поиск. Работает только с разрешёнными директориями. Поддерживает проверку ...

Go687
exoticknight/mcp-file-merger

exoticknight/mcp-file-merger

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

JavaScript27
efforthye/fast-filesystem-mcp

efforthye/fast-filesystem-mcp

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

TypeScript61
hyperb1iss/droidmind

hyperb1iss/droidmind

DroidMind связывает AI-ассистентов с Android-устройствами через MCP. Управляйте приложениями, анализируйте логи, автоматизируйте UI и выполняйте shell-команды на естественном языке. Полезен разрабо...

Python431
joshuarileydev/mac-apps-launcher-mcp-server

joshuarileydev/mac-apps-launcher-mcp-server

MCP-сервер для macOS: запускает приложения и открывает файлы через выбранную программу. Полезен разработчикам и продвинутым пользователям, автоматизирующим работу с Mac-приложениями через ИИ-агентов.

JavaScript19
tumf/mcp-text-editor

tumf/mcp-text-editor

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

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

Лука Никитин