Git MCP协议服务器添加福利群:解决AI开发者的「MCP实战痛点」一个提供与 Git 仓库交互工具的 MCP(模型上下文协议)服务器。通过 MCP 标准,使 LLMs 和 AI 代理能够执行 Git 操作,如克隆、提交、推送、拉取、分支、差异、日志、状态等。
基于 cyanheads/mcp-ts-template,该服务器遵循模块化架构:
开发者注意:此仓库包含一个 .clinerules 文件,作为开发者的速查表,为您的 LLM 编码代理提供代码库模式、文件位置和代码片段的快速参考。
为您的 AI 代理和开发工具提供无缝的 Git 集成!
Git MCP 服务器充当桥梁,允许理解模型上下文协议(MCP)的应用程序(MCP 客户端)——如高级 AI 助手(LLMs)、IDE 扩展或自定义脚本——直接且安全地与本地 Git 仓库交互。
您的工具可以利用此服务器,而不是复杂的脚本或手动 CLI:
基于强大的 mcp-ts-template,该服务器通过 MCP 标准提供了一种标准化、安全且高效的方式来暴露 Git 功能。它通过使用 Node.js 的 child_process 模块安全地执行系统上安装的标准 git 命令行工具来实现这一点,确保兼容性并充分利用 Git 的全部功能。
利用 mcp-ts-template 提供的强大工具:
McpError)和自动日志记录。dotenv)。zod 进行模式验证和自定义清理逻辑(对路径至关重要)。child_process 安全地执行标准 git 命令行工具与 Git 交互,确保完全兼容性和访问 Git 的功能。git clean 和 git reset --hard)进行显式确认。GIT_SIGN_COMMITS 环境变量和服务器端 Git 配置控制。包括一个可选工具参数,以便在签名失败时回退到未签名的提交。npm install @cyanheads/git-mcp-server
git clone https://github.com/cyanheads/git-mcp-server.git
cd git-mcp-server

npm install
这将 TypeScript 代码编译为 JavaScript 到npm run build(或 `npm run rebuild`)
dist/ 目录,并使入口点可执行。使用环境变量配置服务器。在项目根目录中创建 .env 文件(从 .env.example 复制)或在环境中设置它们。
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_TRANSPORT_TYPE |
传输机制:stdio 或 http。 |
stdio |
MCP_HTTP_PORT |
HTTP 服务器的端口(如果 MCP_TRANSPORT_TYPE=http)。如果端口忙,则重试下一个端口。 |
3010 |
MCP_HTTP_HOST |
HTTP 服务器的主机地址(如果 MCP_TRANSPORT_TYPE=http)。 |
127.0.0.1 |
MCP_ALLOWED_ORIGINS |
允许的 CORS 来源的逗号分隔列表(如果 MCP_TRANSPORT_TYPE=http)。 |
(无) |
MCP_LOG_LEVEL |
日志记录级别(debug, info, notice, warning, error, crit, alert, emerg)。继承自模板。 |
info |
GIT_SIGN_COMMITS |
设置为 "true" 以启用 git_commit 工具提交的签名尝试。需要服务器端 Git/密钥设置(见下文)。 |
false |
MCP_AUTH_SECRET_KEY |
用于签名/验证身份验证令牌的密钥(如果将来启用了身份验证,则为必需)。 | '' |
添加到您的 MCP 客户端设置(例如,cline_mcp_settings.json):
{
"mcpServers": {
"git-mcp-server": {
// 使用描述性名称
"command": "node", // 使用 node 运行脚本
"args": ["/path/to/your/git-mcp-server/dist/index.js"], // 构建入口点的绝对路径
"env": {
// "MCP_TRANSPORT_TYPE": "http", // 可选:如果使用 http
// "MCP_HTTP_PORT": "3010", // 可选:如果使用 http 且非默认端口
// "GIT_SIGN_COMMITS": "true" // 可选:如果服务器配置了,则启用提交签名尝试
},
"disabled": false,
"autoApprove": [] // 如果需要,配置自动批准规则
}
}
}

注意:您可以查看 mcp.json 以获取包含 Git MCP 服务器的示例 MCP 客户端配置文件。
代码库在 src/ 目录中遵循模块化结构:
src/ ├── index.ts # 入口点:初始化和启动服务器 ├── config/ # 配置加载(环境变量,包信息) │ └── index.ts ├── mcp-server/ # 核心 MCP 服务器逻辑和能力注册 │ ├── server.ts # 服务器设置,能力注册 │ ├── transports/ # 传输处理(stdio, http) │ ├── resources/ # MCP 资源实现(当前无) │ └── tools/ # MCP 工具实现(按工具子目录) ├── types-global/ # 共享的 TypeScript 类型定义 └── utils/ # 通用工具函数(日志记录器,错误处理程序等)
有关详细文件树,请运行 npm run tree 或查看 docs/tree.md。
Git MCP 服务器提供了一套用于与 Git 仓库交互的工具,可通过模型上下文协议调用。
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
git_add |
暂存指定的文件或模式。 | path?, files? |
git_branch |
管理分支(列出、创建、删除、重命名、显示当前)。 | path?, mode, branchName?, newBranchName?, startPoint?, force?, all?, remote? |
git_checkout |
切换分支或恢复工作树文件。 | path?, branchOrPath, newBranch?, force? |
git_cherry_pick |
应用现有提交引入的更改。 | path?, commitRef, mainline?, strategy?, noCommit?, signoff? |
git_clean |
删除未跟踪的文件。需要 force: true。 |
path?, force, dryRun?, directories?, ignored? |
git_clear_working_dir |
清除会话特定的工作目录。 | (无) |
git_clone |
将仓库克隆到指定的绝对路径。 | repositoryUrl, targetPath, branch?, depth?, quiet? |
git_commit |
提交暂存的更改。支持作者覆盖,签名控制。 | path?, message, author?, allowEmpty?, amend?, forceUnsignedOnFailure? |
git_diff |
显示提交、工作树等之间的更改。 | path?, commit1?, commit2?, staged?, file?, includeUntracked? |
git_fetch |
从其他仓库下载对象和引用。 | path?, remote?, prune?, tags?, all? |
git_init |
在指定的绝对路径初始化一个新的 Git 仓库。初始分支默认为 'main'。 | path, initialBranch?, bare?, quiet? |
git_log |
显示提交日志。 | path?, maxCount?, author?, since?, until?, branchOrFile? |
git_merge |
将指定分支合并到当前分支。 | path?, branch, commitMessage?, noFf?, squash?, abort? |
git_pull |
从另一个仓库或本地分支获取并集成。 | path?, remote?, branch?, rebase?, ffOnly? |
git_push |
使用本地引用更新远程引用。 | path?, remote?, branch?, remoteBranch?, force?, forceWithLease?, setUpstream?, tags?, delete? |
git_rebase |
在另一个基础提示上重新应用提交。 | path?, mode?, upstream?, branch?, interactive?, strategy?, strategyOption?, onto? |
git_remote |
管理远程仓库(列出、添加、删除、显示)。 | path?, mode, name?, url? |
git_reset |
将当前 HEAD 重置为指定状态。支持软、混合、硬模式。谨慎使用 'hard'。 | path?, mode?, commit? |
git_set_working_dir |
设置默认工作目录。如果不存在,可以选择初始化仓库。需要绝对路径。 | path, validateGitRepo?, initializeIfNotPresent? |
git_show |
显示 Git 对象(提交、标签等)的信息。 | path?, ref, filePath? |
git_stash |
管理暂存的更改(列出、应用、弹出、删除、保存)。 | path?, mode, stashRef?, message? |
git_status |
获取仓库状态(分支、暂存、修改、未跟踪文件)。 | path? |
git_tag |
管理标签(列出、创建带注释/轻量级、删除)。 | path?, mode, tagName?, message?, commitRef?, annotate? |
git_worktree |
管理 Git 工作树(列出、添加、删除、移动、修剪)。 | path?, mode, worktreePath?, commitish?, newBranch?, force?, detach?, newPath?, verbose?, dryRun?, expire? |
git_wrapup_instructions |
提供标准的 Git 收尾工作流。 | acknowledgement, updateAgentMetaFiles? |
注意:大多数工具的 path 参数默认为通过 git_set_working_dir 设置的会话工作目录。
此版本(v2.0.14)未实现 MCP 资源。
此版本专注于基于最新 mcp-ts-template 和 MCP SDK v1.12.0 重构的 Git 工具实现。在此次重大更新期间,之前可用的资源能力已被暂时移除。
如果您需要 MCP 资源访问(例如,通过服务器直接读取文件内容),请使用稳定的 v1.2.4 版本。
未来的开发可能会在后续版本中重新引入资源能力。
注意:此版本(v2.0.0)专注于基于最新 MCP SDK 重构和更新核心 Git 工具。此版本未实现 MCP 资源能力。对于资源访问,请使用 v1.2.4。
# 构建项目(将 TS 编译为 JS 到 dist/ 并使可执行)
npm run build
# 使用 MCP 检查器工具本地测试服务器(stdio 传输)
npm run inspector
# 使用 MCP 检查器工具本地测试服务器(http 传输)
npm run inspector:http
# 清理构建工件(运行 scripts/clean.ts)
npm run clean
# 生成文件树表示以用于文档(运行 scripts/tree.ts)
npm run tree
# 清理构建工件然后重新构建项目
npm run rebuild
# 使用 stdio 启动服务器(默认)
npm start
# 或显式:
npm run start:stdio
# 使用 HTTP 传输启动服务器
npm run start:http

此项目根据 Apache 许可证 2.0 授权 - 详情请参阅 LICENSE 文件。