Filesystem MCP Server logo

Filesystem MCP Server

★★★★ 4.3/5
访问官网
分类
MCP
定价
免费
访问
直连可用

快速结论

Filesystem MCP Server 是 Model Context Protocol 官方参考服务器仓库中的 Node.js 文件系统实现,npm 包名为 @modelcontextprotocol/server-filesystem。项目作者字段现归属 “Model Context Protocol a Series of LF Projects, LLC.”,适合学习 MCP tools、Roots 和工具注解,或在个人开发环境中让 Agent 访问一个专门准备的工作目录。它不是托管存储、同步盘,也不是经过生产加固的多租户文件服务。

它提供文本与媒体读取、批量读取、写入、差异编辑、目录创建与遍历、搜索、移动和元数据查询。写入会覆盖已有文件,编辑和移动被标记为 destructive;工具注解只是给客户端的风险提示,不是强制授权。目录白名单能缩小范围,但不能替代容器、虚拟机、Unix 权限、只读挂载、备份和动作确认。若任务只需分析,最安全的配置仍是不给写工具或只挂载只读副本。

核心功能

  • 文件读取read_text_file 支持全文、head 或 tail,read_media_file 返回带 MIME 的媒体或资源内容,read_multiple_files 可批量读取。
  • 写入与差异编辑write_file 创建或覆盖文件;edit_file 支持多处替换和 dry run,并返回类似 Git diff 的预览。
  • 目录与搜索:列目录及大小、生成 JSON 目录树、按 glob 递归搜索、创建目录和读取元数据。
  • 移动与重命名move_file 移动文件或目录,目标已存在时失败;成功后源路径消失,属于破坏性动作。
  • 静态目录授权:启动命令可传入一个或多个 allowed directories,所有支持的文件操作都应限制在这些目录内。
  • 动态 Roots:支持 Roots 的 MCP 客户端可在初始化时提供 roots,并通过 roots/list_changed 运行时更新;客户端 roots 会整体替换服务端启动目录。
  • 工具注解:区分只读、幂等和破坏性工具,并声明 openWorldHint: false,便于客户端展示审批和风险提示。

适合人群

  • 学习 MCP server、Roots 协商、stdio 通信和 tool annotations 的开发者。
  • 需要让本地编码 Agent 在单个临时仓库或生成目录中读写文件的个人用户。
  • 能用 Docker、VM、独立 Unix 用户和受控挂载补足隔离的内部工具团队。
  • 不适合把多人主目录、SSH 配置、浏览器资料、云凭据目录或生产数据直接暴露给模型。

使用场景

安全的起点是为每个任务创建独立工作目录,只复制必要输入,输出写到单独子目录,并让 Git 或快照保留恢复点。代码审阅可使用只读 Docker bind mount;确需修改时,先在分支或一次性副本中运行 edit_file dry run,再由人确认差异。不要把 $HOME、仓库集合根目录或整个磁盘作为 allowed directory。

动态 Roots 适合支持该协议的客户端切换工作区,但必须理解“替换”语义:客户端一旦返回 roots,启动参数中的目录将被整体替换。若 server 没有命令行目录,而客户端不支持 Roots 或返回空列表,初始化会失败。这是拒绝无边界运行的正确行为,不应通过扩大到父目录来绕过。

路径检查仍要面对符号链接、junction、挂载点、大小写差异、路径规范化和检查后再使用的竞态。敏感部署应禁止用户在授权树内创建可指向外部的链接,使用只读或最小读写 bind mount,把 server 放在低权限容器或 VM 中,并让宿主文件权限成为最终边界。不要仅凭路径前缀字符串判断隔离有效。

价格与版本

服务器代码采用 MIT License,软件免费;运行成本来自 Node.js、容器或 VM、模型 token、存储、备份和审计。2026-07-21 仓库中的包清单版本是 0.6.3,依赖 MCP SDK ^1.29.0。生产配置应固定经过验证的 npm 精确版本或容器 digest,同时监控上游安全更新,而不是永久使用无版本的 npx 默认解析或 latest

方式软件费用权限边界建议
固定 npm 版本 + stdio免费进程用户权限与 allowed directories个人受控目录可用
Docker 只读挂载免费容器挂载为主边界,目录加 ro只读分析首选
Docker 读写挂载免费写入仅限映射目录,但仍有覆盖风险使用临时副本和备份
源码分支或 latest免费行为可能随上游变化仅评估,升级前回归

国内访问与使用体验

npm 与 GitHub 的访问速度取决于网络、镜像和时段;needsVPN: false 不代表所有上游始终稳定。运行本体使用本地 stdio,不需要把文件发给该 server 的云服务,但文件内容会进入 MCP 客户端和其所调用的模型。使用境外模型 API 时,数据边界由客户端和模型供应商决定,不能因为 server 在本地就称为“数据不出设备”。

Windows 需要注意盘符、UNC、junction、大小写和 cmd /c npx 配置;macOS/Linux 则应核对软链接、挂载和文件权限。大目录树、媒体文件和批量读取会消耗大量上下文或内存。应排除 .git、依赖目录、构建产物和密钥文件,并设置任务级大小限制。

优点

  • Linux Foundation 旗下 MCP 项目的官方参考实现,协议示例价值明确。
  • 工具覆盖读取、编辑、移动、搜索、目录树和媒体文件,接口职责清晰。
  • 同时支持命令行目录与动态 Roots,可随客户端工作区更新授权范围。
  • destructive、read-only、idempotent 注解帮助支持它们的客户端做风险提示。
  • npm、源码和 Docker 路径公开,便于固定、审计和自行隔离。

不足

  • 参考实现不等于生产级安全产品,没有多租户策略、审批流、配额、审计后台或数据防泄漏。
  • write_file 可直接覆盖,edit_filemove_file 有真实破坏性;注解不会自动阻止模型调用。
  • allowed directories 不是完整 OS 沙箱,符号链接、挂载、竞态和宿主权限仍需独立控制。
  • 动态 Roots 会替换启动目录,客户端错误配置可能意外扩大或改变范围。
  • 文件内容会进入 MCP host 和模型上下文,本地 server 本身不能保证隐私。
  • 无版本 npx 或浮动依赖会引入供应链与行为漂移风险。

替代品对比

工具更适合谁优势主要取舍
E2B希望在云端一次性沙箱运行代码的 Agent隔离环境、生命周期和执行 API托管服务且不是纯本地文件 MCP
Claude Code需要完整终端编码工作流的开发者文件、Shell、Git 与 Agent 体验整合权限面更大,不是独立参考 server
Gemini CLI偏好开源终端 Agent 与 Google 模型的用户项目理解、工具和 MCP host不是窄职责文件服务器
Cursor需要 IDE 内代码编辑和索引的团队编辑器体验和代码库上下文商业产品,隔离策略不同
Chrome DevTools MCP需要页面、网络和性能调试的前端 Agent真实 Chrome 调试证据浏览器与登录态风险远高于纯文件访问

常见问题 FAQ

Filesystem MCP Server 是生产级文件沙箱吗?

不是。它是参考实现,目录限制是应用层控制。生产使用还需要低权限身份、容器或 VM、最小挂载、备份、日志和高风险动作审批。

动态 Roots 与启动参数如何同时生效?

启动参数提供初始目录。支持 Roots 的客户端在初始化时返回 roots 后,会整体替换当前 allowed directories;后续 roots/list_changed 可再次更新,而不是与启动参数合并。

允许目录能防止符号链接越界吗?

实现包含路径验证,但敏感系统不能只依赖应用逻辑。链接、junction、挂载点和竞态都应由容器挂载、文件所有权和独立任务目录共同限制。

如何降低误删或覆盖风险?

只读任务使用 ro 挂载;写任务使用副本或 Git 分支,先运行 edit_file dry run,限制工具面,并在覆盖、移动和批量变更前要求人工确认。

为什么要固定版本?

浮动安装可能改变工具 schema、路径行为或依赖树。固定精确 npm 版本或镜像 digest,记录校验信息,并在隔离样本上回归后升级。

本地运行是否意味着文件不会离开电脑?

不一定。server 是本地进程,但 MCP host 通常会把工具结果发送给所选模型。应单独审查模型供应商、日志、遥测、保留政策和企业数据分类。

总结

Filesystem MCP Server 是理解 MCP 文件工具与动态 Roots 的优秀参考实现,也能服务于边界很小的个人开发任务。它不应被描述为天然安全的生产沙箱。把授权缩到一次性目录,优先只读挂载,隔离符号链接与宿主路径,固定版本并为覆盖、编辑和移动设置确认与恢复点,才能把便利性控制在可接受的风险范围内。

最后更新:2026年7月21日

同类工具推荐