使用说明
Git MCP服务器🚀
本地人 模型上下文协议(MCP)服务器 它使AI编码代理能够以安全、自动化和非交互式的方式与Git存储库协同工作。
该项目的重点是 开发人员生产力:它使AI代理能够通过克隆存储库中的显式MCP工具执行常见的Git工作流 提交更改和打开pull请求。
🌟 概述
现代AI编码代理擅长编写和修改代码,但它们往往缺乏对版本控制工作流程的标准化、非交互式访问。
该项目通过将Git和GitHub操作作为显式MCP工具公开,使AI代理能够安全、可预测地在存储库上操作,而不依赖于终端提示或编辑器,从而弥合了这一差距。
🏗️ 建筑
- 在开发人员的计算机上本地运行
- 将Git功能作为MCP工具公开
- 通过子进程执行Git和GitHub CLI命令
- 依赖于现有的本地身份验证(SSH、gh-auth、凭据管理器)
🛠️ 可用工具
git_clone
将远程存储库克隆到本地目录中。
使用 git_diff
生成差异,AI代理可以使用这些差异来推理更改并编写有意义的提交消息。
git_提交
阶段更改并使用提供的消息创建提交。
git_push
将分支推送到远程存储库。
open_pr_to-base
使用GitHub CLI创建Pull请求(gh).
send_邮件
通过SMTP发送电子邮件通知。 此工具允许AI代理在工作准备就绪时通知人类审阅者(例如,在打开Pull Request后)。
配置(可选)
要启用电子邮件发送,请创建 .env 在项目根目录中创建文件,并提供所需的SMTP设置。
示例 .env 文件:
SMTP_HOST=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
FROM_EMAIL=
🔁 工作流示例
- 使用克隆存储库
git_clone. - 在本地修改代码。
- 使用检查更改
git_diff. - 根据差异和上下文编写提交消息。
- 使用提交更改
git_commit. - 使用以下命令推送分支
git_push. - 使用打开拉取请求
open_pr_to_base. - 可选择使用以下方式通知审阅者
send_email.
⚙️ 需求
- Python 3.9+
- Git
- GitHub命令行界面(
gh)公关创作 - 本地GitHub身份验证
- MCP兼容客户端(例如Claude Desktop)
▶️ 作为本地MCP服务器运行
安装Python依赖项:
pip install -r requirements.txt
设置:
- 将存储库克隆到任何本地目录
- 创建一个名为的文件
mcp.json在项目根中 - 复制以下内容
mcp.example.json - 替换
<PATH_TO_YOUR_LOCAL_CLONE>走你当地的路 - 在Claude Desktop中注册文件→ MCP → 添加本地MCP
🧾 错误代码参考
MCP服务器返回结构化错误代码,以允许AI代理和人类 以编程方式理解故障并优雅地恢复。
常见错误代码
| 代码 | 含义 | 典型工具 | 如何修复 |
|---|---|---|---|
invalid_input |
输入验证失败 | 任何工具 | 检查必填字段和约束 |
not_a_directory |
路径存在但不是目录 | git_clone | 提供目录路径 |
not_a_git_repo |
路径不是Git存储库 | Git_status/Git_diff/Git_commit/Git_push | 确保 .git 存在 |
dest_not_directory |
目标存在,但不是目录 | git_clone | 选择目录路径 |
dest_dir_not_empty |
目标目录不为空 | git_clone | 使用空目录 |
command_timeout |
命令超出允许的超时 | 任何git/gh命令 | 增加超时或检查网络 |
command_failed |
命令以非零状态退出 | 任何git/gh命令 | 检查stderr并遵循提示 |
gh_not_configured |
GitHub CLI未通过身份验证 | open_pr_to_base | 运行 gh auth login |
email_config_missing |
缺少SMTP配置 | send_email | 在中设置SMTP变量 .env |
email_send_failed |
SMTP发送失败 | send_email | 验证凭据和SMTP主机 |
branch_detect_failed |
无法检测到当前分支 | git_push/open_pr_to_base | 确保仓库有提交 |
on_base_branch |
尝试从基础分支 | open_PR_to_base | 切换到功能分支进行PR |
🧰 故障排除
1) git_push 失败(身份验证/权限)
症状:
error.code = command_failed- stderr提到身份验证、权限被拒绝或无法读取用户名。
修复:
- 首选SSH远程+SSH密钥,或提前配置凭据。
- 此服务器以非交互方式运行,因此不会打开登录提示。
2) open_pr_to_base 以“…之间没有提交”失败
症状:
- stderr包含:
No commits between <base> and <branch>
修复:
- 确保您在功能分支上提交了更改。
- 确保分支被推送:运行
git_push随着set_upstream=true第一次推。
3) send_email 失败,缺少SMTP_PORT/config
症状:
SMTP_PORT没有/EMAIL_CONFIG_MISSING
修复:
- 验证
.env已加载(正确路径)。 - 确保这些变量存在:SMTP_HOST、SMTP_PORT、SMTP_USERNAME、SMTP.PASSWORD、FROM_EMAIL
- 例子:
SMTP_PORT=587
🚧 未来改进
以下功能将进一步增强服务器:
git_pull具有冲突检测功能- 自动冲突解决协助
- 分支合并工具
- 重新构建工作流
- Pull请求的审阅者分配
- 提交消息过滤和执行
这些新增功能将使服务器更接近一个更完整的AI辅助Git工作流工具包。