文件系统访问协议服务器

一个本地可定制的文件系统访问协议服务器,基于Anthropic的官方实现并扩展了额外功能。

  • by RijadAlisic
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 RijadAlisic/FilesystemMCP

使用说明

文件系统MCP

一个用于文件系统访问的本地、可定制的MCP(模型上下文协议)服务器——从官方的Anthropic实现中分叉出来,并扩展了额外的功能。

学分

该项目基于官方 @modelcontextprotocol/server-filesystem 包裹由 人类,根据原始存储库中的条款获得许可。原始代码库为通过MCP访问文件系统提供了一个安全、结构良好的基础。

为什么是这个叉子?

这个分叉的目标是用额外的工具和定制来扩展原始服务器,以供个人/本地使用,同时保持核心安全模型(允许的目录、路径验证)的完整性。

设置

1.安装依赖项

cd FilesystemMCP
npm install

2.建造

npm run build

3.配置Claude

在你的 claude_desktop_config.json,将文件系统服务器指向您的本地版本:

{
  "mcpServers": {
    "filesystem": {
      "command": "node",
      "args": [
        "/path/to/FilesystemMCP/dist/index.js",
        "/your/allowed/directory"
      ]
    }
  }
}

保存后重新启动Claude。

工具

文件管理

  • read_text_file / read_file --将文件内容读取为文本(支持 head/tail)
  • read_media_file --以base64格式读取图像或音频文件
  • read_multiple_files --在一次调用中读取多个文件
  • write_file — 创建 一个新文件。从不覆盖:如果 path 已存在,内容将自动保存为递增的文件名(name (1).ext, name (2).ext, ...),响应被标记为指向您的错误 copy_lines_between_files/move_lines_between_files/append_to_file 正确地将其合并。
  • copy_file --在服务器端复制文件
  • delete_file --永久删除文件
  • create_directory --递归创建目录
  • list_directory --列出目录内容
  • list_directory_with_sizes --列出文件大小和排序
  • directory_tree --递归JSON树视图
  • move_file --移动或重命名文件
  • search_files --基于Glob的递归文件搜索
  • get_file_info --文件元数据(大小、时间戳、权限)
  • file_stats --快速调整大小/行数/预览,无需完整阅读
  • list_allowed_directories --显示已配置的允许路径

目标编辑(更喜欢这些 write_file 对于现有文件)

  • edit_file --行范围替换(每次调用多次编辑),返回git风格的diff,支持 dryRun
  • replace_lines --直接替换已知的行范围(令牌效率比 edit_file 一旦你有了行号)
  • insert_lines --在给定行号后插入内容
  • delete_lines --删除行范围
  • append_to_file --附加到文件末尾(始终安全,从不触及现有内容)

重组而不重写

  • copy_lines --复制一个行范围,并将副本插入到 相同 档案;原件保存
  • move_lines --剪切一个线条范围并将其粘贴到 相同 档案;如果目标落在源范围内,则抛出
  • copy_lines_between_files --将一个文件中的行范围复制到 不同的 文件(如果丢失则创建);源未触及
  • move_lines_between_files --将一个文件中的行范围剪切成 不同的 档案;首先写入目标,只有成功后才会从源中删除块,因此失败的移动永远不会丢失数据

搜索

  • find_in_file --在一个文件中搜索短语(空白已标准化,因此换行短语仍然匹配);回报 startLine/endLine 用于链接到上述工具
  • find_in_files --同样,递归遍历目录,使用glob过滤

JavaScript感知助手

  • list_js_functions --列出具有行范围的函数/类定义
  • get_js_function / replace_js_function --按名称提取或替换命名函数(不需要知道行号)
  • get_js_imports / replace_js_imports / add_js_import --检查或修改导入块

推荐工作流程

要从头开始构建新文件或组合其他地方的内容,而无需重写大块: write_file (或 append_to_file 在现有文件上)放置原始内容,然后 find_in_file 要定位行号,则 copy_lines/move_lines/copy_lines_between_files/move_lines_between_files 重组。达到 edit_file/replace_lines 只适用于小的、有针对性的更改——永远不要重写整个文件。

许可证

请参阅 原始存储库 有关许可证的详细信息。