MCP Git Server - AI 驱动的 Git 仓库操作工具

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
3
{
"repo_path": "/Users/dev/my-project"
}

使用场景

  • 快速检查仓库当前状态
  • 确认是否有未提交的更改
  • 查看哪些文件被修改或添加

2. git_diff_unstaged

功能:显示工作目录中的未暂存更改

参数

  • repo_path (string, 必需) - Git 仓库的路径
  • context_lines (integer, 可选, 默认: 3) - 更改周围显示的上下文行数

返回值:未暂存修改的差异输出

示例

1
2
3
4
{
"repo_path": "/Users/dev/my-project",
"context_lines": 5
}

使用场景

  • 审查当前工作目录的修改
  • 在暂存前检查代码更改
  • 生成代码审查报告

3. git_diff_staged

功能:显示已暂存的、准备提交的更改

参数

  • repo_path (string, 必需) - Git 仓库的路径
  • context_lines (integer, 可选, 默认: 3) - 更改周围显示的上下文行数

返回值:已暂存更改的差异输出

示例

1
2
3
4
{
"repo_path": "/Users/dev/my-project",
"context_lines": 3
}

使用场景

  • 提交前审查已暂存的更改
  • 确认将要提交的内容
  • 生成提交前检查清单

4. git_diff

功能:比较当前状态与特定分支或提交

参数

  • repo_path (string, 必需) - Git 仓库的路径
  • target (string, 必需) - 要比较的分支名称或提交哈希
  • context_lines (integer, 可选, 默认: 3) - 更改周围显示的上下文行数

返回值:当前状态与目标的差异输出

示例

1
2
3
4
5
{
"repo_path": "/Users/dev/my-project",
"target": "main",
"context_lines": 5
}

使用场景

  • 比较功能分支与主分支的差异
  • 检查两个版本之间的变化
  • 生成变更摘要报告

5. git_commit

功能:使用提交消息记录仓库更改

参数

  • repo_path (string, 必需) - Git 仓库的路径
  • message (string, 必需) - 描述更改的提交消息

返回值:包含新提交哈希的确认消息

示例

1
2
3
4
{
"repo_path": "/Users/dev/my-project",
"message": "feat: add user authentication module"
}

使用场景

  • 自动化提交操作
  • 生成规范化的提交消息
  • 批量提交多个仓库的更改

6. git_add

功能:暂存文件内容以备下次提交

参数

  • repo_path (string, 必需) - Git 仓库的路径
  • files (array[string], 必需) - 要暂存的文件路径数组

返回值:成功暂存文件的确认信息

示例

1
2
3
4
{
"repo_path": "/Users/dev/my-project",
"files": ["src/auth.py", "tests/test_auth.py", "README.md"]
}

使用场景

  • 选择性暂存特定文件
  • 准备部分提交
  • 自动化文件暂存流程

7. git_reset

功能:取消暂存所有已暂存的更改

参数

  • repo_path (string, 必需) - Git 仓库的路径

返回值:所有更改已取消暂存的确认信息

示例

1
2
3
{
"repo_path": "/Users/dev/my-project"
}

使用场景

  • 重置暂存区
  • 在重新组织提交前清理
  • 撤销错误的暂存操作

8. git_log

功能:显示带有可选过滤的提交历史

参数

  • repo_path (string, 必需) - Git 仓库的路径
  • max_count (integer, 可选, 默认: 10) - 要检索的最大提交数
  • start_timestamp (string, 可选) - 过滤提交的开始日期(ISO 格式)
  • end_timestamp (string, 可选) - 过滤提交的结束日期(ISO 格式)

返回值:提交列表,包含哈希、作者、日期和消息

示例

1
2
3
4
5
6
{
"repo_path": "/Users/dev/my-project",
"max_count": 20,
"start_timestamp": "2025-10-01T00:00:00Z",
"end_timestamp": "2025-10-14T23:59:59Z"
}

使用场景

  • 分析项目历史
  • 生成变更日志
  • 追踪特定时间段的开发活动
  • 识别代码贡献者

9. git_create_branch

功能:在仓库中创建新分支

参数

  • repo_path (string, 必需) - Git 仓库的路径
  • branch_name (string, 必需) - 新分支的名称
  • base_branch (string, 可选) - 从哪个分支创建(默认为当前分支)

返回值:分支创建的确认信息

示例

1
2
3
4
5
{
"repo_path": "/Users/dev/my-project",
"branch_name": "feature/new-ui",
"base_branch": "develop"
}

使用场景

  • 自动创建功能分支
  • 按照命名约定批量创建分支
  • 基于特定分支开始新工作

10. git_checkout

功能:切换到不同的分支

参数

  • repo_path (string, 必需) - Git 仓库的路径
  • branch_name (string, 必需) - 要切换到的分支名称

返回值:成功切换分支的确认信息

示例

1
2
3
4
{
"repo_path": "/Users/dev/my-project",
"branch_name": "develop"
}

使用场景

  • 自动化分支切换
  • 在多个分支间快速导航
  • 执行跨分支操作流程

11. git_show

功能:显示特定提交的内容

参数

  • repo_path (string, 必需) - Git 仓库的路径
  • revision (string, 必需) - 要显示的提交哈希或引用

返回值:详细的提交信息,包括差异

示例

1
2
3
4
{
"repo_path": "/Users/dev/my-project",
"revision": "a3f2c1d"
}

使用场景

  • 检查特定提交的详细内容
  • 分析历史更改
  • 生成提交审查报告

12. git_branch

功能:列出仓库中的所有分支

参数

  • repo_path (string, 必需) - Git 仓库的路径

返回值:所有分支的列表,当前分支会被高亮显示

示例

1
2
3
{
"repo_path": "/Users/dev/my-project"
}

使用场景

  • 查看所有可用分支
  • 确认当前所在分支
  • 分支管理和清理

配置方式

Claude Desktop 配置

claude_desktop_config.json 中添加:

1
2
3
4
5
6
7
8
{
"mcpServers": {
"git": {
"command": "uvx",
"args": ["mcp-server-git", "--repository", "/path/to/your/git/repo"]
}
}
}

多仓库配置

1
2
3
4
5
6
7
8
9
10
11
12
{
"mcpServers": {
"git-project-a": {
"command": "uvx",
"args": ["mcp-server-git", "--repository", "/Users/dev/project-a"]
},
"git-project-b": {
"command": "uvx",
"args": ["mcp-server-git", "--repository", "/Users/dev/project-b"]
}
}
}

Docker 部署

1
2
3
4
5
# 构建镜像
docker build -t mcp-git-server .

# 运行服务器(挂载仓库目录)
docker run -v /path/to/repo:/repo mcp-git-server --repository /repo

本地开发运行

1
2
3
4
5
6
# 使用 uv(推荐)
uvx mcp-server-git --repository /path/to/repo

# 使用 pip 安装
pip install mcp-server-git
mcp-server-git --repository /path/to/repo

调试配置

1
2
# 使用 MCP Inspector 调试
npx @modelcontextprotocol/inspector uvx mcp-server-git --repository /path/to/repo

使用场景

1. 智能代码审查

自动化分析代码更改,生成审查报告。

示例流程

  1. 使用 git_diff_staged 获取待提交的更改
  2. AI 分析代码质量、潜在问题和最佳实践
  3. 使用 git_log 检查提交历史中的模式
  4. 生成详细的审查报告和改进建议

2. 自动化提交管理

智能生成符合规范的提交消息。

示例流程

  1. git_status 检查仓库状态
  2. git_diff_unstaged 分析修改内容
  3. AI 生成符合 Conventional Commits 规范的消息
  4. git_add 暂存文件
  5. git_commit 提交更改

3. 分支策略管理

自动化分支创建和管理流程。

示例流程

  1. git_branch 检查现有分支
  2. 根据命名规范使用 git_create_branch 创建新分支
  3. git_checkout 切换到新分支
  4. 执行开发任务
  5. 自动合并和清理分支

4. 历史分析与报告

生成项目开发活动报告。

示例流程

  1. 使用 git_log 获取指定时间范围的提交
  2. 分析提交频率、贡献者和更改模式
  3. 使用 git_show 深入检查关键提交
  4. 生成可视化报告和统计数据

5. 变更追踪与文档

自动维护变更日志和文档。

示例流程

  1. git_log 获取新提交
  2. 按类型分类(功能、修复、文档等)
  3. 使用 git_show 获取详细更改
  4. 自动更新 CHANGELOG.md

6. 多仓库同步管理

批量管理多个相关仓库。

示例流程

  1. 配置多个 Git 服务器实例
  2. 并行检查所有仓库的 git_status
  3. 识别需要同步的更改
  4. 自动化提交和同步流程

技术架构

工作原理

1
2
3
AI 请求 → MCP Git Server → GitPython 库 → Git 命令 → 仓库操作

AI 响应 ← 格式化结果 ← 解析输出 ← 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
3
4
5
6
7
8
9
10
11
// 使用绝对路径
{
"command": "uvx",
"args": ["mcp-server-git", "--repository", "/Users/dev/my-project"]
}

// 避免使用相对路径
// 错误示例
{
"args": ["mcp-server-git", "--repository", "../my-project"]
}

2. 提交消息规范

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 遵循 Conventional Commits 规范
good_messages = [
"feat: add user authentication",
"fix: resolve login timeout issue",
"docs: update API documentation",
"refactor: simplify payment logic"
]

# 避免的消息格式
bad_messages = [
"update",
"fixes",
"WIP",
"changes"
]

3. 差异分析配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 代码审查:使用更多上下文
{
"context_lines": 5
}

// 快速检查:使用默认上下文
{
"context_lines": 3
}

// 精确定位:使用最少上下文
{
"context_lines": 1
}

4. 日志查询优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 最近活动查询
{
"max_count": 10
}

// 详细历史分析
{
"max_count": 100,
"start_timestamp": "2025-09-01T00:00:00Z",
"end_timestamp": "2025-10-14T23:59:59Z"
}

// 性能考虑:避免无限制查询
// 始终设置 max_count

5. 分支命名约定

1
2
3
4
5
6
7
8
9
10
11
# 推荐的分支命名
feature/user-auth
bugfix/login-timeout
hotfix/critical-security-issue
release/v1.2.0

# 避免的命名
test
temp
my-branch
branch1

6. 安全考虑

1
2
3
4
5
6
7
8
9
// 仅授予必要的仓库访问权限
{
"mcpServers": {
"git-public": {
"args": ["mcp-server-git", "--repository", "/path/to/public-repo"]
}
// 不要配置私有或敏感仓库,除非必要
}
}

常见问题

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
2
3
4
5
6
7
8
9
# 使用 MCP Inspector
npx @modelcontextprotocol/inspector uvx mcp-server-git --repository /path/to/repo

# 检查 Git 仓库状态
cd /path/to/repo
git status

# 验证 GitPython 安装
python -c "import git; print(git.__version__)"

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 实现

安全考虑

访问控制

  • 本地操作:服务器仅操作指定的本地仓库
  • 文件系统权限:遵循操作系统的文件访问权限
  • 无网络请求:不进行外部网络连接
  • 不可逆操作:提交操作是永久性的,请谨慎使用

最佳安全实践

  1. 最小权限原则:只配置必要的仓库访问
  2. 定期备份:在自动化操作前备份重要仓库
  3. 审查自动提交:验证 AI 生成的提交消息和更改
  4. 敏感数据:避免在公开的配置中暴露仓库路径

路线图与未来功能

计划中的功能

  • 远程操作支持:push、pull、fetch 等
  • 合并操作:自动化合并和冲突解决
  • 标签管理:创建和管理 Git 标签
  • 子模块支持:操作包含子模块的仓库
  • 增强的过滤:更强大的日志查询和过滤
  • 性能优化:大型仓库的性能改进

总结

MCP Git Server 是构建 AI 驱动的 Git 工作流的理想工具。它将强大的 Git 功能与 MCP 协议完美结合,为开发者提供了自动化版本控制的新方式。

推荐指数: ⭐⭐⭐⭐⭐ (4.5/5)

适合你的情况

  • ✅ 需要自动化 Git 操作
  • ✅ 构建 AI 驱动的代码审查工具
  • ✅ 自动化提交和分支管理
  • ✅ 生成开发活动报告

不适合的情况

  • ❌ 需要可视化 Git 界面
  • ❌ 需要远程仓库操作(当前版本)
  • ❌ 需要高级合并和冲突解决

相关资源


更新时间: 2025-10-14
数据来源: GitHub, 质量评分: 4.5/5.0

© 2026 Generative AI Discovery All Rights Reserved.
Theme by hiero