关于 MCP Tools
MCP Tools 是一个基于 FastMCP 实现的自定义 MCP 服务,为 Claude Desktop 等 LLM 客户端提供本地文件系统读写和命令执行工具。它面向希望以可控方式让模型访问本机文件的用户。
主要功能
- 01执行 shell 命令并返回 stdout/stderr
- 02按行范围查看文件内容
- 03使用正则表达式搜索文件
- 04通过字符串替换或行操作编辑文件
- 05写入或追加文件内容
适用场景
- 01让模型读取并搜索本地代码文件
- 02通过 Claude Desktop 运行本地脚本并查看输出
- 03对配置文件进行定点修改
MCP 相关
该项目是 MCP 服务端,将文件查看、搜索、编辑、写入和命令执行功能以工具形式暴露给 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 工具
一个自定义的模型上下文协议(MCP)服务实现,为 Claude Desktop 和其他大模型客户端提供文件系统和命令执行工具。
什么是模型上下文协议?
模型上下文协议(MCP)是一种开放协议,用于标准化应用程序向大语言模型(LLM)提供上下文的方式。就像 USB-C 接口提供了连接设备与各种外围设备的标准方式一样,MCP 提供了连接 AI 模型与不同数据源和工具的标准方式。
本项目实现了一个 FastMCP 服务,其中包含多种实用工具,使 Claude 和其他大模型能够与本地文件系统交互并执行命令。它通过定义明确的工具接口,以受控的方式为大模型提供本地系统访问能力,扩展其功能。
MCP 的主要优势
- 标准化集成:MCP 提供不断增长的预构建集成列表,大模型可以直接接入
- 供应商灵活性:轻松切换大模型提供商和供应商(Claude、GPT-4o、Gemini 等)
- 安全性:遵循最佳实践,在基础设施内保护数据
- 工具开放:封装现有工具,并使其可供任何兼容 MCP 的大模型客户端使用
功能
MCP 服务提供以下文件系统和命令执行工具:
- execute_shell_command:执行 Shell 命令并获取 stdout/stderr 结果
- show_file:查看文件内容,可选指定行范围
- search_in_file:使用正则表达式在文件中搜索模式
- edit_file:通过字符串替换和行操作对文件进行精确修改
- write_file:写入内容或向文件追加内容
MCP 架构
MCP 采用客户端-服务架构:
- 主机:发起连接的 LLM 应用程序(如 Claude Desktop 或 IDE)
- 客户端:在主机应用程序内与服务保持一对一连接
- 服务:向客户端提供上下文、工具和提示词(本项目实现了一个服务)
先决条件
- Python 3.10 或更高版本
- 兼容 MCP 的客户端(Claude Desktop,或任何其他支持 MCP 的客户端)
安装
- 安装 uv
- 克隆此仓库或下载源代码
- 运行
uv run mcp install以安装 MCP 服务 - 运行
which uv获取uv可执行文件的绝对路径 - 在 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"
]
}
}
}
用法
从 Claude Desktop 连接
- 打开 Claude Desktop
- 使用标识符 "zbigniew-mcp" 连接到 MCP 服务
注意:虽然此实现侧重于 Claude Desktop,但 MCP 的设计目标是兼容任何兼容 MCP 的工具或大模型客户端,为实现和集成提供灵活性。
可用工具
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),然后使用本地大模型将其解析为 Markdown:
fetch_page("https://example.com")
传输机制
MCP 支持多种客户端与服务之间的通信传输方式:
- 标准输入/输出(stdio):使用标准输入/输出进行通信,非常适合本地进程
- 服务器发送事件(SSE):通过 HTTP POST 请求实现服务器到客户端的流式传输,并用于客户端到服务器的通信
此实现使用本地 MCP 服务,通过文本输入/输出进行通信。
使用自定义工具扩展
你可以通过添加带有 @mcp.tool 装饰器的新工具,轻松扩展此 MCP 服务。按照 server.py 中的模式创建新工具,为 LLM 客户端提供更多功能。
相关项目
- langchain-mcp-adapters:通过 LangChain 使用 MCP
- MCP-Bridge:将 MCP 工具映射为 OpenAI 的格式
安全注意事项
此 MCP 服务允许 Claude 访问你的本地系统。请注意以下事项:
- 此服务会以你的用户身份执行 shell 命令
- 它可以读取、写入和修改系统上的文件
- 如果你担心安全问题,可以考虑将访问权限限制在特定目录
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。