mcpField
F
Filesystem MCP

Filesystem MCP

本地服务
github.com开发工具26今天更新

关于 Filesystem MCP

Filesystem MCP 是本地 MCP 服务,允许 AI 客户端在指定文件夹中浏览、搜索和修改文件。它将文件操作工具与敏感文件屏蔽、只读设置及部分高风险操作确认结合。

主要功能

  1. 01浏览和读取允许访问的文件夹
  2. 02搜索文件名和文件内容
  3. 03编辑、应用补丁、移动和删除文件
  4. 04通过差异预览更改
  5. 05屏蔽敏感文件并限制路径
  6. 06支持 stdio 和 Streamable HTTP

适用场景

  1. 01在代码仓库中查找 TODO
  2. 02应用编辑前审阅文件差异
  3. 03比较配置文件或日志文件
  4. 04将 AI 客户端限制在指定文件夹

MCP 相关

向 MCP 客户端提供文件系统工具,包括目录列表、搜索、读取、差异比较和文件修改操作。支持 stdio 与 Streamable HTTP 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"filesystem-context": {
"command": "npx",
"args": [
"-y",
"@j0hanz/filesystem-mcp"
],
"env": {
"FS_ALLOWED_DIRS": "<FS_ALLOWED_DIRS>"
}
}
}
}
启动命令npx -y @j0hanz/filesystem-mcp
需要配置的环境变量
FS_ALLOWED_DIRSAllowed directories; ':'-separated on Unix, ';'-separated on Windows. Alternative to positional arguments.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@j0hanz/filesystem-mcp2.11.0
ocighcr.io/j0hanz/filesystem-mcp:2.11.0

工具

13

收录的工具列表 · 更新于 3 周前

参数类型必填说明
filesarray是要创建的文件列表(最多 100 个);每个条目都必须包含 path 和 content

详细介绍

Filesystem MCP 标志

Filesystem MCP

让你的 AI 助手安全地处理文件。

读取、搜索、编辑和修补你选择的文件夹中的文件。
机密文件会保持隐藏,有风险的更改则会等待你的确认。

npm 版本 CI 许可证:MIT GitHub 星标 HOL 信任度

在 VS Code 中安装 在 VS Code Insiders 中安装 在 Visual Studio 中安装 在 Cursor 中安装 在 Claude Desktop 中安装

filesystem-mcp MCP 服务——Glama 上的质量和维护评分

这是什么?

模型上下文协议(MCP)是 Claude、GitHub Copilot in VS Code 和 Cursor 等 AI 应用连接工具的方式。 Filesystem MCP 是一个 MCP 服务:它是在你的计算机上运行的小程序,为 AI 提供 14 个用于处理文件的工具。你可以选择它能访问哪些文件夹,其他所有位置都无法访问。

连接后,你可以提出以下请求:

  • “找出此仓库中的所有 TODO,并按文件分组。”
  • “将所有 .ts 文件中的 getUser 重命名为 fetchUser。先给我看差异。”
  • “config.dev.json 和 config.prod.json 之间有哪些更改?”
  • “读取 server.log 的最后 50 行并解释错误。”
  • “将旧截图移到 archive/2025/。”

为什么选择 Filesystem MCP?

  • 默认安全。AI 只能使用你允许的文件夹,并且会阻止访问 .env 文件、私钥和云凭据。AI 删除非空文件夹、打开未经你允许的文件夹,或使用 create 或 move 覆盖文件前,服务会先征求你的同意。只有 create 和复制操作可以通过传入 overwrite: true 跳过确认。使用 edit、patch 和 replace_text 所做的编辑会直接应用,但你可以先通过 dryRun 查看差异。如果你希望 AI 绝不修改任何内容,--read-only 会移除所有写入工具。
  • 专为代码搜索和编辑而设计。AI 可以像使用 grep 一样搜索文件内容,并使用不会卡住的正则表达式引擎(RE2);默认情况下,服务会跳过 .gitignore 忽略的文件,以及 node_modules 等文件夹。编辑采用精确匹配替换,文本不匹配时会返回错误;你也可以先预览差异。
  • 节省 AI 的上下文。AI 可以在一次调用中读取多个文件,也可以只读取所需的行;读取前还可以检查文件大小和令牌估算值。
  • 兼容任何 MCP 客户端,可通过 stdio 或 HTTP 运行,支持 macOS、Linux 和 Windows。你可以通过 npx、Docker 或一键安装的 Claude Desktop 扩展来安装,也可以基于它构建自己的客户端。
  • 注重隐私。它在你的计算机上运行,不收集遥测数据,也不会发起网络请求。
与参考服务相比

以下是本服务与官方 @modelcontextprotocol/server-filesystem 的区别,依据其 2026-10-11 的 README 核对:

功能Filesystem MCP参考服务
搜索文件内容search_text:字面文本或 RE2 正则表达式无;search_files 仅匹配名称
敏感文件默认阻止访问 .env、密钥和凭据不阻止
覆盖文件create 会先征求你的同意(除非使用 overwrite: true)write_file 会直接覆盖,不征求同意
删除文件delete;删除非空文件夹前会征求同意无
.gitignore列出和搜索工具会遵循其规则不支持
只读模式--read-only 会移除所有写入工具仅支持 Docker ro 挂载
应用统一差异patch无
比较两个文件diff无
跨多个文件替换在文件夹或 glob 范围内使用 replace_text无
监视文件订阅文件并接收变更通知无
传输方式stdio,或使用 --port 的 Streamable HTTPstdio

快速开始

说明

你需要 Node.js 24 或更高版本。使用 node --version 查看。

  1. 将服务添加到你的 AI 应用。请从下方选择对应的应用。
  2. 将 /path/to/project 替换为 AI 可访问的文件夹。你可以列出多个文件夹。
  3. 重启应用并询问:“你可以访问哪些文件夹?”

提示

VS Code 目前会将你打开的文件夹共享给服务,因此一键安装到 VS Code 无需指定路径。在其他应用中或通过 HTTP 使用时,请将文件夹填入 args。如果 AI 提示没有可访问的文件夹,这样就能解决。

VS Code

点击上方的 Install in VS Code,或将以下内容添加到 .vscode/mcp.json:

{
  "servers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@j0hanz/filesystem-mcp@latest", "/path/to/project"]
    }
  }
}

也可以在终端中运行:

code --add-mcp '{"name":"filesystem","command":"npx","args":["-y","@j0hanz/filesystem-mcp@latest","/path/to/project"]}'
Cursor

点击上方的 Install in Cursor,然后将文件夹添加到 args。或者将以下内容添加到项目中的 .cursor/mcp.json,或添加到 ~/.cursor/mcp.json 以应用于所有项目:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@j0hanz/filesystem-mcp@latest", "/path/to/project"]
    }
  }
}
Claude Desktop

如需一键安装,请下载 filesystem-mcp.mcpb, 用 Claude Desktop 打开,并选择允许访问的文件夹。Claude Desktop 内置的 Node.js 会运行它。扩展的设置还允许你启用只读模式并屏蔽更多文件。

如需手动设置,请将以下内容添加到 claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@j0hanz/filesystem-mcp@latest", "/path/to/project"]
    }
  }
}
Claude Code
claude mcp add filesystem -- npx -y @j0hanz/filesystem-mcp@latest /path/to/project

或者安装插件,它会将服务指向当前项目:

/plugin marketplace add j0hanz/j0hanz-marketplace
/plugin install filesystem-mcp@j0hanz-marketplace
Visual Studio

将以下内容添加到解决方案文件夹中的 .vs\mcp.json,或添加到 %USERPROFILE%\.mcp.json 以应用于所有解决方案:

{
  "servers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@j0hanz/filesystem-mcp@latest", "C:/path/to/project"]
    }
  }
}
GitHub Copilot CLI 和 Antigravity CLI(插件)

filesystem-mcp 插件 会将服务设置为用于当前项目:

客户端安装
Copilot CLIcopilot plugin marketplace add j0hanz/j0hanz-marketplace,然后运行 copilot plugin install filesystem-mcp@j0hanz-marketplace
Antigravity CLIgit clone https://github.com/j0hanz/j0hanz-marketplace,然后运行 agy plugin install ./j0hanz-marketplace/plugins/filesystem-mcp
Docker

容器只能访问你挂载的文件夹。此配置通过 :ro 挂载和 --read-only 标志双重禁止写入。

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/path/to/project:/workspace:ro",
        "ghcr.io/j0hanz/filesystem-mcp:latest",
        "--read-only",
        "/workspace"
      ]
    }
  }
}

移除 :ro 和 --read-only,即可允许 AI 进行更改。VS Code 和 Visual Studio 使用 "servers",而不是 "mcpServers"。更多信息请参阅 在 Docker 中运行。

其他 MCP 客户端

Windsurf、Cline 和大多数其他客户端使用与上文 Claude Desktop 相同的 mcpServers JSON 配置。在任何客户端中,服务配置如下:

  • 命令: npx
  • args: -y、@j0hanz/filesystem-mcp@latest,然后是一个或多个文件夹

你也可以全局安装,并运行 filesystem-mcp /path/to/project:

npm install -g @j0hanz/filesystem-mcp
## 工具
工具功能
list_roots显示服务可以使用的文件夹。
list以树形结构列出文件夹内容,类似于 ls 或 tree。
find_files按名称或 glob 查找文件,例如 **/*.test.ts。
search_text在文件中搜索文本或正则表达式,类似于 grep,并可选择显示上下文行。
stat获取文件大小、日期、类型、权限和令牌估算值,不读取文件内容。
read读取整个文本文件,或按行、文件头或文件尾读取。图片和音频会作为媒体返回;其他文件则以 binary 返回。
diff比较两个文件并返回统一 diff。
create ✎写入新文件、追加内容或创建空文件夹。替换文件前会先询问,除非设置 overwrite: true。
edit ✎替换文件中的指定文本。对同一文件的所有编辑要么全部应用,要么全部不应用。dryRun 会先显示 diff。
patch ✎将统一 diff 应用到文件。所有区块要么全部应用,要么全部不应用。
replace_text ✎在多个文件中查找并替换文本或正则表达式。dryRun 会显示将要进行的更改。
move ✎移动、重命名或复制文件和文件夹。覆盖前会先询问,除非复制操作设置了 overwrite: true。
delete ✎删除文件和文件夹。删除非空文件夹前会先询问。
undo ✎在服务运行期间,按撤销 ID 或最近的 N 次调用还原之前的更改。跳过已更改的文件。

✎ 会更改文件。--read-only 会移除这些工具。

除非 AI 明确要求,否则搜索和列表工具会跳过隐藏文件、被 .gitignore 忽略的文件,以及 node_modules、dist 和 .git 等文件夹。

配置

大多数人只需要提供文件夹参数。以下选项涵盖常见 场景:

选项功能
--read-only移除所有会更改文件的工具。
--deny '<pattern>'屏蔽更多文件,例如 --deny 'private/**' 或 --deny '*.sqlite'。
--allow '<pattern>'取消屏蔽一个内置的机密文件模式,例如 --allow '.env.example'。
--allow-cwd也允许使用启动服务时所在的文件夹。
--max-file-size <n>read 可读取的最大文件大小,以字节为单位。默认值为 10 MiB。
--port <n>通过 HTTP 在 http://127.0.0.1:<n>/mcp 提供服务,而非使用 stdio。
--print-config打印服务将使用的设置,然后退出。

标志放在包名称之后的 args 中,例如 ["-y", "@j0hanz/filesystem-mcp@latest", "--read-only", "/path/to/project"]。

完整配置参考涵盖所有标志 和环境变量、完整的机密文件列表、限制、使用 API 密钥的 HTTP 设置、 Docker 和故障排除。

安全

保护措施工作原理
文件夹沙箱服务端会解析所有路径,包括符号链接;解析后的路径必须位于允许的文件夹内。
敏感文件.env、*.pem、*.key、SSH 密钥、.npmrc、云凭据以及更多文件都会被禁止访问,并从列表中隐藏。
由你掌控当 AI 要删除非空文件夹、访问新文件夹或使用 create 或 move 覆盖文件时,服务端会先征求你的同意。只有当 AI 传入 overwrite: true 时,create 和复制操作才会跳过确认。原地编辑(edit、patch、replace_text)无需确认,但 dryRun 会预览这些操作。无法征求确认的客户端会收到错误。
禁止访问的文件夹AI 和客户端都无法添加你的主文件夹本身、系统文件夹,或 ~/.ssh、~/.aws 等类似文件夹。
安全写入新内容会先写入临时文件,然后再重命名到目标位置,因此即使发生崩溃,也不会留下写了一半的文件。写入时会保留文件权限。
不会因正则表达式卡住RE2 的运行时间呈线性,因此任何搜索模式都不会让服务端卡住。
HTTP服务端默认仅监听 localhost。使用任何其他地址都需要 API 密钥。
容器Docker 镜像以非 root 用户运行。

如果你发现安全漏洞,请私下报告。 SECURITY.md 说明了具体方式。

构建自己的客户端

你也可以在自己的代码中调用 Filesystem MCP:例如 Agent、编辑器插件、Web 应用、CI 任务或脚本。规则与 AI 应用相同,因此你的代码无法访问允许文件夹之外的内容,也无法读取机密文件。

import { Client } from '@modelcontextprotocol/client';
import { StdioClientTransport } from '@modelcontextprotocol/client/stdio';

const dir = '/path/to/project';
const client = new Client(
  { name: 'my-app', version: '1.0.0' },
  { capabilities: { elicitation: { form: {} } }, versionNegotiation: { mode: 'auto' } },
);
client.setRequestHandler('elicitation/create', async () => ({ action: 'decline' }));
await client.connect(
  new StdioClientTransport({
    command: 'npx',
    args: ['-y', '@j0hanz/filesystem-mcp', dir],
    cwd: dir,
  }),
);

const result = await client.callTool({ name: 'search_text', arguments: { searchPattern: 'TODO' } });
const { matches } = (result.structuredContent ?? result._meta) as { matches: unknown[] };
console.log(matches);
await client.close(); // stops the server process; without it the script never exits

基本信息:

  • 数据所在位置。 文本块是为模型编写的。对于会自行编写文本的工具(list、search_text、edit 等),相同的数据以 JSON 格式存放在 _meta 中;对于 stat、create 和 list_roots,则存放在 structuredContent 中。read 是例外:文件文本仅在文本块中,_meta 中存放的是相关元数据。
  • 路径。 如果服务器的工作目录位于某个根目录下,相对路径将相对于该工作目录解析;否则,相对路径将相对于根目录解析。如果有多个根目录,路径必须仅存在于其中一个根目录下。绝对路径不会产生歧义。搜索结果以相对于根目录的路径显示,因此可以直接传回。名称与磁盘上的名称仅在 Unicode 形式(NFC 或 NFD)或空格字符(U+00A0、U+202F)上不同,也能找到对应条目。
  • 确认。 覆盖文件、递归删除以及根目录之外的路径都需要向用户确认。声明 elicitation 能力并在处理程序中回答;或者,对于 2026-07-28 协议,将它们作为数据(input_required)接收,稍后再回答。
  • 协议版本。 服务器支持 2025 协议和 2026-07-28 协议,可通过 stdio 和 Streamable HTTP 通信。通过 HTTP 通信时,2025 年协议的客户端不会收到确认请求或更改通知。
  • 资源。 可通过 filesystem-mcp://file/{+path} 读取和订阅任何文件;internal://instructions 和 get-help 提示词包含面向模型的服务器指南。

客户端指南中有详细说明,并使用 TypeScript 和 Python SDK 进行了测试;examples/ 中有六个可运行的客户端:

示例说明
fsq通过 stdio 或 HTTP,从 shell 调用任意工具;脚本可使用 --json
browser本地 Web UI,服务器的问题会显示在页面中
tail通过文件订阅实现 tail -f,可在本地使用,也可连接远程服务
gatekeeper编码 Agent 会显示每项更改的差异,并等待你输入 y/N
hooks每当工作区发生更改时,通过模型运行一项任务
python使用 Python SDK 为工作区生成 TODO 报告

隐私政策

Filesystem MCP 完全在你的机器上运行。本政策适用于 npm 包、Docker 镜像和 .mcpb 桌面扩展。

  • 数据收集: 无。服务器不进行遥测、分析或崩溃报告,也不会发出任何外部网络请求。
  • 使用和存储: 服务器只会在你允许的文件夹内读取和写入文件,且仅在 MCP 客户端调用工具时执行。工具结果只会发送给该客户端,不会发送到其他地方。短期结果缓存和撤销历史记录(保存的文件内容)都存储在内存中,并会在服务器退出时消失。
  • 与第三方共享: 服务器不会共享数据。你的 MCP 客户端可能会根据其自身的隐私政策,将工具结果发送给其模型提供商。
  • 保留: 进程退出后,服务器不会保留任何内容。诊断日志会写入你机器上的 stderr;你的 MCP 客户端可能会将日志保存到自己的日志文件中。
  • 联系方式: 在 https://github.com/j0hanz/filesystem-mcp/issues 提交问题,或通过 GitHub Security Advisories 私下报告安全问题。

参与贡献

欢迎提交 Bug 报告、想法和拉取请求。请先阅读 CONTRIBUTING.md。其中介绍了环境配置、从源代码运行服务,以及拉取请求需要通过的检查。

如果 Filesystem MCP 对你有帮助,请在 GitHub 上点个星,帮助更多人发现它。

贡献者

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。