MCP Git Server - AI 驱动的 Git 仓库操作工具
官方实现 | Stars: 2000 | Python | MIT License
概述
MCP Git Server 是 Anthropic 官方提供的 Model Context Protocol 实现,专为 Git 版本控制系统设计。它通过一组强大的工具,使 AI 助手能够智能地读取、分析和操作 Git 仓库,实现自动化的代码审查、提交管理、分支操作等功能。
该服务器提供了 12 个核心工具,覆盖 Git 的主要操作场景,从基础的状态查询到高级的历史分析,让 AI 能够像开发者一样与 Git 仓库交互。特别适合需要自动化 Git 工作流、智能代码分析和版本控制管理的场景。
核心特性
- ✅ Anthropic 官方实现,与 MCP 协议深度集成
- 🛠️ 12 个核心 Git 工具,覆盖完整工作流
- 🎯 智能差异分析,支持可配置的上下文行数
- 📊 灵活的历史查询,支持时间范围过滤
- 🌿 完整的分支管理,创建、切换、列举分支
- 🔌 多平台兼容(Claude Desktop、VS Code、Zed、Zencoder)
- 🚀 简单配置,通过命令行参数指定仓库路径
- 🔒 本地操作,安全可控的仓库访问
工具列表
1. git_status
功能:显示 Git 仓库的工作树状态
参数:
repo_path(string, 必需) - Git 仓库的路径
返回值:仓库状态文本,包括修改、暂存和未跟踪的文件
示例:
1 | { |
使用场景:
- 快速检查仓库当前状态
- 确认是否有未提交的更改
- 查看哪些文件被修改或添加
2. git_diff_unstaged
功能:显示工作目录中的未暂存更改
参数:
repo_path(string, 必需) - Git 仓库的路径context_lines(integer, 可选, 默认: 3) - 更改周围显示的上下文行数
返回值:未暂存修改的差异输出
示例:
1 | { |
使用场景:
- 审查当前工作目录的修改
- 在暂存前检查代码更改
- 生成代码审查报告
3. git_diff_staged
功能:显示已暂存的、准备提交的更改
参数:
repo_path(string, 必需) - Git 仓库的路径context_lines(integer, 可选, 默认: 3) - 更改周围显示的上下文行数
返回值:已暂存更改的差异输出
示例:
1 | { |
使用场景:
- 提交前审查已暂存的更改
- 确认将要提交的内容
- 生成提交前检查清单
4. git_diff
功能:比较当前状态与特定分支或提交
参数:
repo_path(string, 必需) - Git 仓库的路径target(string, 必需) - 要比较的分支名称或提交哈希context_lines(integer, 可选, 默认: 3) - 更改周围显示的上下文行数
返回值:当前状态与目标的差异输出
示例:
1 | { |
使用场景:
- 比较功能分支与主分支的差异
- 检查两个版本之间的变化
- 生成变更摘要报告
5. git_commit
功能:使用提交消息记录仓库更改
参数:
repo_path(string, 必需) - Git 仓库的路径message(string, 必需) - 描述更改的提交消息
返回值:包含新提交哈希的确认消息
示例:
1 | { |
使用场景:
- 自动化提交操作
- 生成规范化的提交消息
- 批量提交多个仓库的更改
6. git_add
功能:暂存文件内容以备下次提交
参数:
repo_path(string, 必需) - Git 仓库的路径files(array[string], 必需) - 要暂存的文件路径数组
返回值:成功暂存文件的确认信息
示例:
1 | { |
使用场景:
- 选择性暂存特定文件
- 准备部分提交
- 自动化文件暂存流程
7. git_reset
功能:取消暂存所有已暂存的更改
参数:
repo_path(string, 必需) - Git 仓库的路径
返回值:所有更改已取消暂存的确认信息
示例:
1 | { |
使用场景:
- 重置暂存区
- 在重新组织提交前清理
- 撤销错误的暂存操作
8. git_log
功能:显示带有可选过滤的提交历史
参数:
repo_path(string, 必需) - Git 仓库的路径max_count(integer, 可选, 默认: 10) - 要检索的最大提交数start_timestamp(string, 可选) - 过滤提交的开始日期(ISO 格式)end_timestamp(string, 可选) - 过滤提交的结束日期(ISO 格式)
返回值:提交列表,包含哈希、作者、日期和消息
示例:
1 | { |
使用场景:
- 分析项目历史
- 生成变更日志
- 追踪特定时间段的开发活动
- 识别代码贡献者
9. git_create_branch
功能:在仓库中创建新分支
参数:
repo_path(string, 必需) - Git 仓库的路径branch_name(string, 必需) - 新分支的名称base_branch(string, 可选) - 从哪个分支创建(默认为当前分支)
返回值:分支创建的确认信息
示例:
1 | { |
使用场景:
- 自动创建功能分支
- 按照命名约定批量创建分支
- 基于特定分支开始新工作
10. git_checkout
功能:切换到不同的分支
参数:
repo_path(string, 必需) - Git 仓库的路径branch_name(string, 必需) - 要切换到的分支名称
返回值:成功切换分支的确认信息
示例:
1 | { |
使用场景:
- 自动化分支切换
- 在多个分支间快速导航
- 执行跨分支操作流程
11. git_show
功能:显示特定提交的内容
参数:
repo_path(string, 必需) - Git 仓库的路径revision(string, 必需) - 要显示的提交哈希或引用
返回值:详细的提交信息,包括差异
示例:
1 | { |
使用场景:
- 检查特定提交的详细内容
- 分析历史更改
- 生成提交审查报告
12. git_branch
功能:列出仓库中的所有分支
参数:
repo_path(string, 必需) - Git 仓库的路径
返回值:所有分支的列表,当前分支会被高亮显示
示例:
1 | { |
使用场景:
- 查看所有可用分支
- 确认当前所在分支
- 分支管理和清理
配置方式
Claude Desktop 配置
在 claude_desktop_config.json 中添加:
1 | { |
多仓库配置
1 | { |
Docker 部署
1 | # 构建镜像 |
本地开发运行
1 | # 使用 uv(推荐) |
调试配置
1 | # 使用 MCP Inspector 调试 |
使用场景
1. 智能代码审查
自动化分析代码更改,生成审查报告。
示例流程:
- 使用
git_diff_staged获取待提交的更改 - AI 分析代码质量、潜在问题和最佳实践
- 使用
git_log检查提交历史中的模式 - 生成详细的审查报告和改进建议
2. 自动化提交管理
智能生成符合规范的提交消息。
示例流程:
git_status检查仓库状态git_diff_unstaged分析修改内容- AI 生成符合 Conventional Commits 规范的消息
git_add暂存文件git_commit提交更改
3. 分支策略管理
自动化分支创建和管理流程。
示例流程:
git_branch检查现有分支- 根据命名规范使用
git_create_branch创建新分支 git_checkout切换到新分支- 执行开发任务
- 自动合并和清理分支
4. 历史分析与报告
生成项目开发活动报告。
示例流程:
- 使用
git_log获取指定时间范围的提交 - 分析提交频率、贡献者和更改模式
- 使用
git_show深入检查关键提交 - 生成可视化报告和统计数据
5. 变更追踪与文档
自动维护变更日志和文档。
示例流程:
git_log获取新提交- 按类型分类(功能、修复、文档等)
- 使用
git_show获取详细更改 - 自动更新 CHANGELOG.md
6. 多仓库同步管理
批量管理多个相关仓库。
示例流程:
- 配置多个 Git 服务器实例
- 并行检查所有仓库的
git_status - 识别需要同步的更改
- 自动化提交和同步流程
技术架构
工作原理
1 | AI 请求 → MCP Git Server → GitPython 库 → Git 命令 → 仓库操作 |
核心依赖
- MCP SDK: Model Context Protocol 实现
- GitPython: Python Git 库,用于 Git 操作
- Python 3.10+: 运行时环境
支持的平台
| 平台 | 支持状态 | 配置方式 |
|---|---|---|
| Claude Desktop | ✅ 完全支持 | JSON 配置文件 |
| VS Code | ✅ 完全支持 | 扩展配置 |
| Zed | ✅ 完全支持 | 编辑器配置 |
| Zencoder | ✅ 完全支持 | 编辑器配置 |
与其他 Git 工具对比
| 特性 | MCP Git Server | GitHub Copilot | GitLens |
|---|---|---|---|
| AI 驱动 | ✅ 完全集成 | ✅ 部分支持 | ❌ 无 |
| 跨编辑器 | ✅ 多平台 | ⚠️ VS Code 为主 | ⚠️ VS Code 专用 |
| 自动化能力 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 本地操作 | ✅ 完全本地 | ⚠️ 需要联网 | ✅ 本地 |
| 开源 | ✅ MIT | ❌ 专有 | ⚠️ 部分开源 |
| 适用场景 | 自动化、AI 集成 | 代码补全 | 可视化历史 |
最佳实践
1. 仓库路径配置
1 | // 使用绝对路径 |
2. 提交消息规范
1 | # 遵循 Conventional Commits 规范 |
3. 差异分析配置
1 | // 代码审查:使用更多上下文 |
4. 日志查询优化
1 | // 最近活动查询 |
5. 分支命名约定
1 | # 推荐的分支命名 |
6. 安全考虑
1 | // 仅授予必要的仓库访问权限 |
常见问题
Q: 服务器是否支持远程操作(push/pull/fetch)?
目前版本主要关注本地仓库操作。远程操作支持正在开发中。可以通过本地 Git 客户端完成远程同步,然后使用 MCP Git Server 进行本地操作。
Q: 如何处理大型仓库?
对于大型仓库,建议:
- 使用
max_count限制git_log的输出 - 使用时间范围过滤减少查询数据量
- 考虑使用
context_lines减少差异输出的大小
Q: 支持哪些 Git 版本?
MCP Git Server 兼容 Git 2.0 及以上版本。建议使用 Git 2.30 或更新版本以获得最佳体验。
Q: 是否支持 Git LFS?
基本的 Git LFS 仓库操作受支持,但 LFS 特定功能可能有限。大文件的差异比较可能较慢。
Q: 如何调试工具问题?
1 | # 使用 MCP Inspector |
Q: 性能如何?
- git_status: <100ms(典型仓库)
- git_diff: 100-500ms(取决于更改大小)
- git_log: 50-200ms(10-100 条提交)
- git_commit: 100-300ms
性能主要取决于仓库大小和操作复杂度。
Q: 是否可以同时操作多个仓库?
可以。配置多个 Git 服务器实例,每个实例指向不同的仓库路径。AI 可以并行或顺序操作它们。
评分详情
| 维度 | 评分 | 说明 |
|---|---|---|
| 功能性 | 4.5/5.0 | 覆盖主要 Git 操作,缺少远程操作支持 |
| 文档质量 | 4.3/5.0 | 文档清晰但可以更详细 |
| 社区活跃度 | 4.7/5.0 | Anthropic 官方维护,社区活跃 |
| 维护状态 | 4.6/5.0 | 定期更新,响应及时 |
| 代码质量 | 4.5/5.0 | 代码规范,使用成熟库 |
| 综合评分 | 4.5/5.0 | 优秀的 Git 操作 MCP 实现 |
安全考虑
访问控制
- 本地操作:服务器仅操作指定的本地仓库
- 文件系统权限:遵循操作系统的文件访问权限
- 无网络请求:不进行外部网络连接
- 不可逆操作:提交操作是永久性的,请谨慎使用
最佳安全实践
- 最小权限原则:只配置必要的仓库访问
- 定期备份:在自动化操作前备份重要仓库
- 审查自动提交:验证 AI 生成的提交消息和更改
- 敏感数据:避免在公开的配置中暴露仓库路径
路线图与未来功能
计划中的功能
- 远程操作支持:push、pull、fetch 等
- 合并操作:自动化合并和冲突解决
- 标签管理:创建和管理 Git 标签
- 子模块支持:操作包含子模块的仓库
- 增强的过滤:更强大的日志查询和过滤
- 性能优化:大型仓库的性能改进
总结
MCP Git Server 是构建 AI 驱动的 Git 工作流的理想工具。它将强大的 Git 功能与 MCP 协议完美结合,为开发者提供了自动化版本控制的新方式。
推荐指数: ⭐⭐⭐⭐⭐ (4.5/5)
适合你的情况:
- ✅ 需要自动化 Git 操作
- ✅ 构建 AI 驱动的代码审查工具
- ✅ 自动化提交和分支管理
- ✅ 生成开发活动报告
不适合的情况:
- ❌ 需要可视化 Git 界面
- ❌ 需要远程仓库操作(当前版本)
- ❌ 需要高级合并和冲突解决
相关资源
- GitHub: https://github.com/modelcontextprotocol/servers
- MCP 协议: https://modelcontextprotocol.io/
- GitPython 文档: https://gitpython.readthedocs.io/
- Conventional Commits: https://www.conventionalcommits.org/
更新时间: 2025-10-14
数据来源: GitHub, 质量评分: 4.5/5.0