mcp-server-filesystem

mcp-server-filesystem

MCP官方参考服务器,为AI提供受目录白名单约束的本地文件读写能力

核心功能

该服务器是官方 servers 仓库中仍在活跃维护的七个参考实现之一,由 Node 编写。它把本地磁盘操作封装成读文本、读媒体、批量读、写入、行级编辑、建目录、列目录、移动、搜索、目录树、文件信息等工具,全部读写都被限制在启动参数或 Roots 协议声明的允许目录内,越界请求直接拒绝。

功能亮点

动态授权

客户端可在会话中通过 roots 通知整体替换允许目录,无需重启服务。

文本与媒体分离

读取文本、读取媒体两类工具分开,二进制文件不会污染文本上下文。

批量与检索

一次可读取多个文件,也能按模式递归搜索并输出整棵目录树结构。

容器化运行

提供官方镜像,通过 bind 挂载把主机目录映射进容器,并可标记为只读。

适用场景

• 让 AI 助手读写本地项目文件
• 为编码助手划定可访问目录范围
• 递归搜索仓库文件并生成目录树
• 容器内只读挂载资料目录供检索

安装配置

bash
# 直接运行,命令行里的目录即为允许访问的白名单
npx -y @modelcontextprotocol/server-filesystem /Users/username/Desktop /path/to/other/allowed/dir

# claude_desktop_config.json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/path/to/other/allowed/dir"
      ]
    }
  }
}

# Windows 需用 cmd 包装:"command": "cmd", "args": ["/c", "npx", "-y", "@modelcontextprotocol/server-filesystem", "C:/work"]

# Docker 方式(挂载到容器内 /projects,加 ro 表示只读)
docker run -i --rm --mount type=bind,src=/Users/username/Desktop,dst=/projects/Desktop --mount type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro mcp/filesystem /projects

使用方法

bash
暴露的工具:read_text_file、read_media_file、read_multiple_files、write_file、edit_file、create_directory、list_directory、list_directory_with_sizes、directory_tree、move_file、search_files、get_file_info、list_allowed_directories

典型调用顺序:
1) list_allowed_directories 确认当前可访问范围(服务端至少需要一个允许目录,否则初始化报错)
2) search_files 在允许目录内按模式查找候选文件
3) read_text_file 读取内容,或 read_multiple_files 一次读多个
4) edit_file 做行级替换,write_file 覆盖写入,move_file 重命名或移动

若客户端支持 roots,服务端会在 initialize 时调用 roots/list,用客户端声明的根目录完全替换命令行指定的目录。

关键指标

尚未核验对标产品,此处只列本工具自身指标,不做对比结论。

指标mcp-server-filesystem
价格免费
开源
上手难度入门

相关工具

优点

  • 属于 MCP steering group 仍在维护的七个参考服务器之一
  • 路径白名单在服务端强制执行,越界访问会被拒绝
  • 支持 Roots 协议,客户端可在会话中动态调整可访问目录
  • 同时提供 npx 与 Docker 镜像两种运行方式

缺点

  • 必须手动指定允许目录,既无参数又不支持 roots 的客户端会初始化失败
  • 只有目录级白名单,无法按文件类型或按工具做细粒度读写权限控制
  • 依赖本地 Node 运行时,npx 首次启动需要联网下载包
  • Windows 下需额外用 cmd /c 包装命令,配置写法与 macOS 不同
  • 官方定位是参考实现,用于演示协议特性而非生产就绪方案