LLM文件系统工具

一个为Claude Desktop和其他LLM客户端提供文件系统和命令执行工具的自定义模型上下文协议(MCP)服务器实现。

  • by ZbigniewTomanek
  • Python
  • 本地部署
  • 24 星标
  • 更新于
在 GitHub 查看 zbigniewtomanek/my-mcp-server

使用说明

MCP工具

一种自定义模型上下文协议(MCP)服务器实现,为Claude Desktop和其他LLM客户端提供文件系统和命令执行工具。

什么是模型上下文协议?

模型上下文协议(MCP)是一个开放协议,它规范了应用程序如何向大型语言模型(LLM)提供上下文。就像USB-C端口提供了一种将设备连接到各种外围设备的标准化方式一样,MCP提供了一个将AI模型连接到不同数据源和工具的标准化方法。

此项目使用几个有用的工具实现了一个FastMCP服务器,这些工具使Claude和其他LLM能够与您的本地文件系统交互并执行命令。它通过定义良好的工具接口以受控的方式扩展了LLM的本地系统访问功能。

MCP的主要优势

  • 标准化集成:MCP提供了越来越多的预构建集成列表,您的LLM可以直接插入其中
  • 供应商灵活性:在LLM提供商和供应商之间轻松切换(Claude、GPT-4o、Gemini等)
  • 安全:在基础设施中保护数据的最佳实践
  • 工具曝光:封装现有工具,并使其可供任何兼容MCP的LLM客户端访问

特性

MCP服务器提供以下文件系统和命令执行工具:

  • execute_shell_command:执行shell命令并获取stdout/stderr结果
  • show_file:使用可选的行范围规范查看文件内容
  • search_in_file:使用正则表达式在文件中搜索模式
  • edit_file:通过字符串替换和行操作对文件进行精确更改
  • write_file:向文件写入或附加内容

MCP架构

MCP遵循客户端-服务器架构:

  • 主机:启动连接的LLM应用程序(如Claude Desktop或IDE)
  • 客户:在主机应用程序内与服务器保持1:1连接
  • 服务器:向客户端提供上下文、工具和提示(此项目实现了一个服务器)

先决条件

  • Python 3.10或更高版本
  • MCP兼容客户端(Claude Desktop或支持MCP的任何其他客户端)

安装

  1. 安装uv
  2. 克隆此存储库或下载源代码
  3. 跑 uv run mcp install 安装MCP服务器
  4. 跑 which uv 要获得到的绝对路径 uv 可执行
  5. 在Claude Desktop中更新MCP服务器配置,以使用到的绝对路径 uv 可执行

我的MCP服务器配置如下:

{
  "globalShortcut": "",
  "mcpServers": {
    "zbigniew-mcp": {
      "command": "/Users/zbigniewtomanek/.local/bin/uv",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "--with",
        "marker-pdf",
        "mcp",
        "run",
        "/Users/zbigniewtomanek/PycharmProjects/my-mcp-tools/server.py"
      ]
    }
  }
}

用法

从克劳德桌面连接

  1. 打开克劳德桌面
  2. 使用标识符“zbignew MCP”连接到MCP服务器

备注:虽然此实现侧重于Claude Desktop,但MCP旨在与任何MCP兼容的工具或LLM客户端兼容,从而在实现和集成方面提供灵活性。

可用工具

execute_shell_command

使用参数列表安全执行shell命令:

execute_shell_command(["ls", "-la"])
execute_shell_command(["grep", "-r", "TODO", "./src"])
execute_shell_command(["python", "analysis.py", "--input", "data.csv"])
execute_shell_command(["uname", "-a"])

show_file

查看具有可选行范围规范的文件内容:

show_file("/path/to/file.txt")
show_file("/path/to/file.txt", num_lines=10)
show_file("/path/to/file.txt", start_line=5, num_lines=10)

search_in_file

使用正则表达式在文件中搜索模式:

search_in_file("/path/to/script.py", r"def\s+\w+\s*\(")
search_in_file("/path/to/code.py", r"#\s*TODO", case_sensitive=False)

edit_file

对文件进行精确更改:

# Replace text
edit_file("config.json", replacements={"\"debug\": false": "\"debug\": true"})

# Insert at line 5
edit_file("script.py", line_operations=[{"operation": "insert", "line": 5, "content": "# New comment"}])

# Delete lines 10-15
edit_file("file.txt", line_operations=[{"operation": "delete", "start_line": 10, "end_line": 15}])

# Replace line 20
edit_file("file.txt", line_operations=[{"operation": "replace", "line": 20, "content": "Updated content"}])

write_file

向文件写入或附加内容:

# Overwrite file
write_file("/path/to/file.txt", "New content")

# Append to file
write_file("/path/to/log.txt", "Log entry", mode="a")

fetch_page

将网页内容提取到PDF(需要安装chromium),然后使用本地LLM将其解析为markdown:

fetch_page("https://example.com")

传输机制

MCP支持多种传输方式,用于客户端和服务器之间的通信:

  • 标准输入/输出(stdio):使用标准输入/输出进行通信,非常适合本地流程
  • 服务器发送事件(SSE):通过HTTP POST请求实现服务器到客户端的流式传输,以进行客户端到服务器的通信

此实现使用通过文本输入/输出进行通信的本地MCP服务器。

使用您自己的工具进行扩展

您可以通过添加新的工具来轻松扩展此MCP服务器 @mcp.tool 装饰师。按照server.py中的模式创建向LLM客户端公开其他功能的新工具。

相关项目

安全考虑

MCP服务器允许Claude访问您的本地系统。请注意以下几点:

  • 服务器以用户身份执行shell命令
  • 它可以读取、写入和修改系统上的文件
  • 如果安全是一个问题,考虑限制对特定目录的访问