用途
Filesystem MCP 是一款 MCP(Model Context Protocol)服务器,用于让 Claude、VS Code 中的 GitHub Copilot、Cursor 等 AI 应用安全地操作本地文件。它是一个运行在你自己电脑上的小程序,向 AI 提供 13 个文件操作工具。你自行选择允许它使用的文件夹,这些文件夹之外的内容一律不可访问。
主要能力
- 读取、搜索、编辑和补丁文件,支持一次读取多个文件,或只读取需要的行;读取前可查看文件大小与 token 估算。
- 支持类似 grep 的文件内搜索,使用 RE2 正则引擎,不会因正则导致挂起;默认跳过 .gitignore 忽略的文件以及 node_modules、dist、.git 等目录。
- 编辑采用精确匹配替换,文本不匹配时返回错误;可先用 dryRun 预览 diff。
- 支持读取和订阅任意文件资源,格式为 filesystem-mcp://file/{+path};还提供 internal://instructions 以及 get-help 提示词,内含面向模型的服务器指南。
安全机制
- 默认安全:AI 只能使用你允许的文件夹;.env 文件、私钥、云凭证等被屏蔽。
- 删除非空文件夹、打开未授权文件夹、用 create 或 move 覆盖文件时,服务器会先询问用户;只有 create 和 copies 可通过 overwrite: true 跳过询问。
- edit、patch、replace_text 的编辑无需询问即可应用,但可先用 dryRun 展示 diff。
- 若希望 AI 完全不修改文件,使用 --read-only 会移除所有写入类工具。
- 隐私:完全在本机运行,无遥测、无分析、无崩溃报告,也不发起对外网络请求。
使用方式
需要 Node.js 24 或更高版本,可用 node --version 检查。
安装与接入方式:
- 通过 npx 安装:使用命令参数 -y、@j0hanz/filesystem-mcp@latest,再加上一个或多个文件夹路径。
- VS Code:点击 Install,或将配置加入 .vscode/mcp.json。VS Code 当前会与服务器共享你已打开的文件夹,因此其一键安装无需路径;其他应用或 HTTP 方式需在 args 中放入文件夹路径。
- Cursor:点击 Install 后将文件夹加入 args,或写入项目中的 .cursor/mcp.json,全局配置为 ~/.cursor/mcp.json。
- Claude Desktop:下载 filesystem-mcp.mcpb 后用 Claude Desktop 打开并选择允许的文件夹,由其内置 Node.js 运行;也可手动写入 claude_desktop_config.json(Settings → Developer → Edit Config),或安装插件指向当前项目。
- Visual Studio:将配置加入解决方案文件夹中的 .vs\mcp.json,或全局的 %USERPROFILE%.mcp.json。
- Docker:容器只能看到你挂载的文件夹。提供的示例通过 :ro 挂载和 --read-only 标志双重阻止写入;去掉这两项即可允许 AI 修改文件。
- Windsurf、Cline 及大多数客户端使用与 Claude Desktop 相同的 mcpServers JSON 配置。
配置完成后重启应用,可问 AI:“Which folders can you access?” 来确认。若 AI 表示没有可用文件夹,在 args 中补充文件夹路径即可解决。
常用配置项:多数人只需文件夹参数。标志放在包名之后的 args 中,例如 ["-y", "@j0hanz/filesystem-mcp@latest", "--read-only", "/path/to/project"]。完整配置参考涵盖所有标志与环境变量、完整敏感文件列表、限制、带 API 密钥的 HTTP 设置、Docker 及故障排查。
也可全局安装后运行:filesystem-mcp /path/to/project。
自建客户端
可让自己的代码(agent、编辑器插件、Web 应用、CI 任务或脚本)调用 Filesystem MCP,规则与 AI 应用相同:代码无法访问允许文件夹之外的位置,也无法读取敏感文件。
- 数据位置:文本块面向模型编写;对于自行生成文本的工具(list、search_text、edit 等),相同数据以 JSON 形式放在 _meta 中;stat、create 和 list_roots 的数据放在 structuredContent 中。read 是例外:文件文本仅在文本块中,_meta 只保存其元数据。
- 路径:相对路径在服务器工作目录位于某个根目录内时按该目录解析,否则按根目录解析;存在多个根目录时,路径必须恰好位于其中一个之下。绝对路径不存在歧义。搜索结果以相对于根目录的形式输出,可直接回传。
- 确认:覆盖、递归删除和根目录之外的路径会询问用户。需声明 elicitation 能力并在处理器中应答;或在 2026-07-28 协议下作为数据(input_required)接收并稍后应答。
- 协议版本:服务器支持 2025 协议与 2026-07-28,通过 stdio 和 Streamable HTTP 通信。通过 HTTP 时,2025 时代的客户端不会收到确认或变更通知。
客户端指南包含经 TypeScript 和 Python SDK 测试的细节,examples/ 目录提供六个可运行客户端示例。
适用场景
- 在仓库中查找所有 TODO 并按文件分组。
- 在所有 .ts 文件中把 getUser 重命名为 fetchUser,先查看 diff。
- 对比 config.dev.json 与 config.prod.json 的差异。
- 读取 server.log 最后 50 行并解释错误。
- 将旧截图移动到 archive/2025/。
限制
- 需要 Node.js 24 或更高版本。
- 只能访问你显式允许的文件夹,容器方式下只能看到被挂载的文件夹。
- 通过 HTTP 使用时,2025 时代客户端不支持确认和变更通知。
- 其他平台与客户端的细节、官方对照说明及完整配置,资料中指向完整配置参考与客户端指南,未在此逐项展开。