git-mcp-server
Local Git MCP server exposing 29 tools that let AI clients manage repositories, commits, branches, remotes, and advanced git operations via natural language.
README
git-mcp-server
本地 Git MCP 服务器:将 git 操作封装为 29 个 MCP 工具,供 AI 客户端直接调用。让 AI 像人一样读写仓库——查看状态、暂存提交、查询历史、管理分支与远程,全程无需离开对话。
快速开始
前置条件
- Python ≥3.13
- uv
- 系统已安装 git
方式一:配置到 opencode(opencode.json)
{
"mcp": {
"git": {
"type": "local",
"command": ["uvx", "--from", "git+https://github.com/JessPig/git-mcp-server", "git-mcp-server"],
"enabled": true
}
}
}
方式二:在对话中让 opencode 自动安装
添加 git MCP 服务器,用 uvx --from git+https://github.com/JessPig/git-mcp-server git-mcp-server 启动
安装后即可在对话中说「查看仓库状态」「提交所有更改」「创建新分支」——AI 会直接调用对应工具完成。
配置
| 环境变量 | 说明 |
|---|---|
GIT_MCP_ALLOWED_DIRS |
os.pathsep 分隔的允许目录列表(如 /home/user/repos;/home/user/projects)。未设置时默认限制在服务器启动目录(隐式沙箱)。 |
GIT_MCP_ALLOW_FORCE_PUSH |
是否允许强制推送(默认 false 禁用,设为 true 启用;启用后 force 仍需 confirmed) |
工具一览
共 29 个工具,分 6 大分组:
仓库管理
| 工具 | 说明 |
|---|---|
git_init |
初始化仓库(可指定初始分支、裸仓库) |
git_clone |
克隆远程仓库到本地(支持浅克隆、指定分支) |
git_status |
查看工作区状态(可隐藏未跟踪文件) |
git_clean |
删除/预览未跟踪文件(需确认) |
git_config |
读取 git 配置(指定 key 或全量列出) |
暂存与提交
| 工具 | 说明 |
|---|---|
git_add |
暂存文件(全量/更新/指定文件) |
git_commit |
创建提交(支持 amend、no-verify) |
git_diff |
查看差异(工作区/暂存区/提交间对比,支持 stat) |
历史查询
| 工具 | 说明 |
|---|---|
git_log |
查看提交历史(支持作者/日期/消息过滤) |
git_show |
查看提交的元数据与补丁 |
git_blame |
逐行追溯文件修改归属(可限定行范围) |
git_reflog |
查看引用日志 |
git_grep |
在跟踪文件中搜索模式 |
分支操作
| 工具 | 说明 |
|---|---|
git_branch |
列出/创建/删除分支(delete 需确认) |
git_checkout |
切换分支、标签或提交(可先创建新分支) |
git_merge |
合并分支到当前分支(冲突返回详情) |
git_rebase |
变基或管理进行中的 rebase |
git_cherry_pick |
将指定提交应用到当前分支 |
远程操作
| 工具 | 说明 |
|---|---|
git_remote |
管理远程仓库(list/add/remove/rename) |
git_fetch |
从远程拉取引用 |
git_pull |
拉取并合并(支持 rebase) |
git_push |
推送到远程(force/tags,拒绝时返回详情) |
高级操作
| 工具 | 说明 |
|---|---|
git_tag |
列出/创建/删除标签(annotated 标签需 message) |
git_stash |
管理stash(list/push/pop/drop) |
git_reset |
重置到指定提交(soft/mixed/hard,需确认) |
git_revert |
反向提交(不改变历史) |
git_worktree |
管理并行工作树(list/add/remove) |
git_bisect |
二分查找引入 bug 的提交 |
git_submodule |
管理子模块(status/add/update) |
核心特性
- 完整的 git 工作流覆盖:从 init/clone 到 bisect/submodule,29 个工具涵盖日常开发全场景
- 官方 MCP SDK:基于
mcp包标准stdio传输,兼容任意支持 MCP 的客户端;工具契约由 Pydantic schema 定义 - 可自纠的错误反馈:失败时返回
is_error结果及具体信息,调用方 LLM 可据此自行修正 - 只读/破坏性标注:工具标注
readOnlyHint/destructiveHint,客户端可据此给予不同级别的安全提示 - 四层安全防线:路径白名单、防 flag 注入、ref 预校验、破坏性操作显式确认(详见下方)
安全模型
| 防线 | 机制 |
|---|---|
| 路径白名单 | 仓库路径经 resolve() + relative_to() 校验,限定在 GIT_MCP_ALLOWED_DIRS 内,防 ../ 逃逸 |
| 防 flag 注入 | ref / branch / target 等参数拒绝以 - 开头 |
| ref 预校验 | rev_parse 预先确认 ref 真实存在 |
| 破坏性确认 | git_reset、git_clean、git_branch delete 等 12 个工具要求显式 confirmed=True;git_reset/git_checkout(force)支持 preview 先行查看将丢弃的变更 |
只读 vs 破坏性工具分类
- 只读(8 个):
git_statusgit_diffgit_loggit_showgit_blamegit_refloggit_grepgit_config - 破坏性(12 个):
git_resetgit_cleangit_revertgit_mergegit_rebasegit_cherry_pickgit_pushgit_branchgit_checkoutgit_stashgit_taggit_worktree
工作原理
AI 客户端 (opencode / Claude Desktop / ...)
│
│ stdio (MCP 协议)
▼
git-mcp-server
│
├─ list_tools → 29 个工具名 + Pydantic schema + 只读/破坏性标注
│
└─ call_tool → 路径边界校验 → ref/确认校验 → GitPython 执行 → 文本返回
服务器启动时读取 GIT_MCP_ALLOWED_DIRS,随后通过 stdio 与客户端通信。所有 git 操作经 GitPython 执行,按 6 个模块组织(tools_repo / tools_stage / tools_history / tools_branch / tools_remote / tools_advanced)。
许可
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。