git-mcp-rs
使用说明内容(Markdown格式)
项目简介
- git-mcp-rs 是一个用 Rust 实现的 MCP 服务器,设计目标是为 LLM 客户端提供实时、结构化的 GitHub 数据上下文。通过一组明确的工具接口,LLM 可以查询仓库标签、变更日志、README、文件结构、文件内容以及代码搜索结果等信息。
主要功能点
- JSON-RPC 请求处理:支持 MCP 标准的初始化、工具列表与工具调用等请求。
- 工具集合:包括 get_tags、get_changelog、get_readme、get_file_tree、get_file_content、search_repository 等工具,覆盖常用的仓库信息获取需求。
- GitHub 数据获取:通过 Git 引擎的远程标签查询、以及 GitHub API 获取 README、变更日志、文件树、文件内容和代码搜索结果。
- 认证与安全:可通过环境变量 GITHUB_TOKEN 提供对 GitHub API 的认证支持,提升限速与访问能力。
- STDIO 通信:基于标准输入输出的 JSON-RPC 交互,适合作为本地或管道化的 MCP 服务端。
安装步骤
- 安装 Rust 开发环境
- 克隆仓库或获取编译后的二进制
- 编译运行(示例为发布版本):cargo build --release
- 启动可执行文件;若需要访问 GitHub 受限数据,可设置环境变量 GITHUB_TOKEN
- 与客户端建立连接:向服务器的标准输入发送符合 MCP 的 JSON-RPC 请求,服务器通过标准输出返回响应
服务器配置
- 注意:MCP 客户端连接本服务器的方式为通过命令行启动后的 STDIN/STDOUT 通道进行 JSON-RPC 交互。
- 配置要点(给客户端使用时的参考说明,非代码块描述):
- server name: 需要用于标识的服务器名称,例如 rust-git-mcp
- command: 指向可执行的命令,如可执行文件的路径(例如仓库编译生成的 binary)
- args: 启动参数,若当前实现不依赖额外参数则留为空
- 说明:客户端启动后,通过 JSON-RPC 发送 initialize、tools/list、tools/call 等请求,服务器按 MCP 约定返回相应的结果与错误信息
基本使用方法
- 启动服务器后,保持服务器进程运行
- 通过标准输入发送 JSON-RPC 请求,例如:发送 initialize 请求以获取服务能力;随后发送 tools/list 获取可用工具;再使用 tools/call 执行具体工具。
- 常见工作流程:
- 请求初始化,服务器返回协议版本、能力和服务器信息
- 请求工具列表,客户端看到包含 get_tags、get_changelog、get_readme、get_file_tree、get_file_content、search_repository 等工具
- 调用任一工具时,需要提供工具名及参数(如 url、path、branch、start_tag、end_tag、query 等)
- 读取工具返回的 content/结果信息,进行后续的上下文拼接与处理
- 备注:该实现通过 git ls-remote 获取远程标签并按语义化版本排序,必要时可通过 GitHub API 获取更多元数据;如需获取受限数据,可设置 GITHUB_TOKEN 以提升 API 限额与权限。