Filesystem MCP

modelcontextprotocol/servers· Проверено 12.11.2026· 91,9 тыс.на GitHub

Открывает агенту доступ к файлам в папках, которые вы перечислили при запуске: читать, писать, править по фрагментам, искать и переносить. За пределы этих папок сервер не выходит.

Как подключить

Что сделать до подключения

1

Node.js 24 или новее; без Node.js есть образ Docker mcp/filesystem, папки монтируются в /projects

Конфиг для вашего клиента

Команда в терминале, в папке проекта. Флаг --scope user подключит сервер для всех проектов. Подробно о Claude Code

claude mcp add --transport stdio filesystem \
  -- npx -y @modelcontextprotocol/server-filesystem /Users/username/Desktop /path/to/other/allowed/dir

Проверка: claude mcp list показывает статус рядом с каждым сервером: ✔ Connected, ! Needs authentication или ✘ Failed to connect. Внутри сессии то же видно по команде /mcp.

Инструменты сервера

read_text_fileчитает текстовый файл
read_media_fileчитает картинку или аудио
read_multiple_filesчитает несколько файлов сразу
write_fileсоздаёт или перезаписывает файл
append_fileдописывает текст в конец
edit_fileправит фрагменты с показом диффа
create_directoryсоздаёт папку
list_directoryпоказывает содержимое папки
list_directory_with_sizesпоказывает папку с размерами
directory_treeстроит дерево папок
move_fileпереносит или переименовывает
copy_fileкопирует файл
search_filesищет файлы по маске
get_file_infoпоказывает размер и даты
list_allowed_directoriesпоказывает разрешённые папки

Что попросить агента

«Найди в <~/Projects/site> все файлы .md, где упоминается <слово>, и перечисли их»Найдёт файлы через search_files и прочитает их пачкой через read_multiple_files
«Поправь в <config.yaml> порт с 8080 на 9090, сначала покажи изменения»Вызовет edit_file с dryRun, покажет diff и после согласия применит правку
«Покажи структуру папки <docs> и самые крупные файлы»Построит дерево через directory_tree и выведет размеры через list_directory_with_sizes
«Разложи скриншоты из <Загрузки> по папкам по месяцам»Получит даты через get_file_info, создаст папки через create_directory и перенесёт файлы через move_file
«К каким папкам у тебя есть доступ?»Вызовет list_allowed_directories

Для каких задач

Разобрать папку с документами и разложить файлы по подпапкам
Поправить фрагменты в нескольких файлах и сначала посмотреть дифф в режиме dryRun
Найти файлы по маске вроде *.pdf в дереве проекта
Дать агенту справочную папку только на чтение рядом с рабочей
Открыть доступ к файлам в Claude Desktop, VS Code и других клиентах

Ограничения

!

Сервер входит в набор эталонных реализаций протокола — учебных примеров, которые для продакшена не готовы

!

search_files ищет только по именам и путям, по содержимому файлов не ищет

!

Проверка папок идёт по пути: файл с жёсткой ссылкой извне при правке меняется и там

!

Обход дерева ограничен 100 000 записей, а один вызов к медленной облачной папке ждёт не дольше 15 секунд

Если не работает

Ошибка Filesystem call timed out after 15000 ms или stopped after visiting 100000 entries
Папка в облачном хранилище или на медленном сетевом диске: сузьте path или добавьте эту папку в excludePatterns.
Запись падает с Parent directory does not exist
write_file не создаёт папки: сначала создайте папку через create_directory.
Запись падает с Access denied - read-only directory
Сервер запущен с --read-only-dir для этой папки: пишите в другую разрешённую папку или перезапустите сервер без этого флага для неё.
Сервер сразу закрывает соединение и выходит со статусом 1
Так бывает, когда папок нет в командной строке и клиент не поддерживает Roots: укажите разрешённые папки в args.
В Docker на Linux сервер не может писать в смонтированную папку
Образ работает от пользователя node с UID 1000: добавьте перед mcp/filesystem аргументы "--user", "<uid>:<gid>" со значениями id -u и id -g.

Частые вопросы

Как запретить агенту менять файлы?
Добавьте в args флаг --read-only: останутся только инструменты чтения. Чтобы закрыть на запись одну папку, используйте --read-only-dir <путь>.
Как запустить на Windows?
Укажите command: cmd и добавьте в начало args "/c", "npx". Остальные аргументы те же.
Почему сервер не стартует без папок?
Серверу нужна хотя бы одна разрешённая папка. Если папок нет в аргументах и клиент не передаёт их через Roots, сервер завершается с ошибкой.
Как ограничить доступ в Docker?
Монтируйте нужные папки в /projects, а для папок только на чтение добавьте к --mount флаг ro. Образ работает от пользователя node с UID 1000.
Работает ли сервер из России?
Сервер работает на вашем компьютере с локальными папками, ключи и аккаунты не нужны.

Похожие серверы