mcpField
F
filesystem-context

filesystem-context

本地服务
github.com/j0hanz文件与存储26今天更新

关于 filesystem-context

filesystem-context 是本机运行的文件系统 MCP 服务,让 AI 助手在指定文件夹内读取、搜索、比较和修改文件。它通过目录沙箱、敏感文件屏蔽和可选只读模式限制访问。

主要功能

  1. 01限定授权目录的文件访问
  2. 02文件名与内容搜索
  3. 03按行读取和文件比较
  4. 04精确编辑、补丁与批量替换
  5. 05敏感文件默认屏蔽
  6. 06只读模式及写入确认

适用场景

  1. 01在代码库中搜索 TODO 和正则内容
  2. 02查看文件差异并预览修改
  3. 03安全地整理项目文件

MCP 相关

它是 MCP 服务,向 MCP 客户端提供 14 个文件操作工具。支持 stdio 和 Streamable HTTP 传输。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"j0hanz-filesystem-context": {
"command": "npx",
"args": [
"-y",
"@j0hanz/filesystem-context-mcp"
]
}
}
}
启动命令npx -y @j0hanz/filesystem-context-mcp

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

安装包
npm@j0hanz/filesystem-context-mcp1.0.9

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。