文件工具MCP服务器

一个为LLM提供文件和目录工具的MCP服务器,内置支持遵循.gitignore模式。

  • by BumpyClock
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 bumpyclock/file-tools-mcp

使用说明

文件工具MCP服务器

MCP(模型上下文协议)服务器,为LLM提供文件和目录工具,内置支持尊重 .gitignore 模式。

特性

工具

  • 工程结构:生成目录结构的树视图,同时尊重 .gitignore 模式
  • 读取多个文件:以清晰的内容分隔在单个请求中读取多个文件

资源

  • project://info:全面的项目信息(类型、依赖关系、脚本、git状态)
  • git://status:详细的git存储库状态,包括文件更改和最近的提交
  • 部门endencies://list:按包管理器列出所有项目依赖关系
  • config://list:查找并列出项目中的所有配置文件
  • files://recent:显示最近修改的20个文件
  • context://full:完整的项目上下文,包含目录结构和50KB以下的所有文本文件

附加功能

  • 优雅地处理循环符号链接和权限错误
  • 支持深度限制和隐藏文件可见性选项
  • 清除错误消息,并提供路径问题的有用上下文

安装

适用于克劳德桌面

  1. 将服务器安装到Claude Desktop:

    uv run mcp install main.py --name "File Tools"
    
  2. 重新启动克劳德桌面

为了发展

  1. 克隆存储库
  2. 安装依赖项:
    uv sync
    

用法

开发模式(带检查员)

uv run mcp dev main.py

这将打开MCP检查器进行调试和测试。

单独模式

uv run python main.py

在stdio模式下运行服务器,等待MCP客户端连接。

测试

uv run python test_client.py

运行测试客户端以验证服务器功能。

可用工具

工程结构

生成目录结构的树视图,同时尊重 .gitignore 模式。

参数:

  • path (str,可选):要分析的目录路径(默认:当前工作目录)
  • max_depth (int,可选):要遍历的最大深度(默认值:无表示无限制)
  • show_hidden (bool,可选):包含隐藏文件和目录(默认值:False)

例子:

# Get structure of current directory
result = await session.call_tool("project_structure", {})

# Get structure with depth limit
result = await session.call_tool("project_structure", {
    "path": "/path/to/project",
    "max_depth": 3
})

# Include hidden files
result = await session.call_tool("project_structure", {
    "show_hidden": True
})

读取多个文件

读取多个文件并在单个响应中返回其内容。

参数:

  • paths (list[str],必填):要读取的文件路径列表

特征:

  • 文件之间的清晰分隔,标题显示路径和大小
  • 对丢失或无法访问的文件进行优雅的错误处理
  • 高效地在一个请求中读取多个文件

例子:

# Read multiple files
result = await session.call_tool("read_multiple_files", {
    "paths": [
        "src/main.py",
        "config.json",
        "README.md"
    ]
})

可用资源

project://info

在一个请求中提供全面的项目信息:

  • 项目类型检测(Node.js、Python、Rust等)
  • 包元数据(名称、版本、描述)
  • 可用脚本/命令
  • 依赖性计数
  • Git状态摘要
  • 最近的提交

git://status

详细的git存储库状态:

  • 当前分行和跟踪信息
  • 带遥控器的前进/后退状态
  • 暂存、修改和未跟踪的文件
  • 最后10次提交

部门endencies://list

列出所有项目依赖关系:

  • 支持npm、yarn、pnpm、pip、诗歌、uv
  • 显示生产和开发依赖关系
  • 处理多种包管理器格式

config://list

查找所有配置文件:

  • 环境文件(.env)
  • 语言配置(tsconfig.json、pyproject.toml)
  • Linter和formatter
  • CI/CD配置
  • 编辑器设置

files://recent

显示最近修改的文件:

  • 20个最近修改的文件
  • 文件修改时间戳
  • 文件大小
  • 排除常见的忽略模式

context://full

在一个请求中完成项目上下文:

  • 完整目录结构
  • 50KB以下所有文本文件的内容
  • 尊重他人
  • 自动跳过二进制文件
  • 提供包含/跳过的文件摘要
  • 非常适合让LLMs全面了解项目

配置

根路径

使用MCP检查器或其他MCP客户端时,您可能需要配置根路径,以允许服务器访问您的项目目录。这是一种防止未经授权的文件访问的安全功能。

在MCP检查器中:

  1. 点击服务器配置
  2. 为要访问的目录添加根路径
  3. 例子: /home/user/projects/my-project

如果没有配置正确的根路径,即使对于存在的文件,也可能会看到“找不到文件”错误。

安全考虑

部署此服务器时:

  • 仅在本地部署时绑定到localhost(127.0.0.1)
  • 如果暴露在网络中,请使用适当的身份验证
  • 考虑路径遍历风险——服务器允许读取任何可访问的目录
  • 配置根路径以限制对特定目录的文件访问

许可证

麻省理工学院