Git MCP 服务器
MCP(模型上下文协议)服务器,提供与 Git 存储库交互的工具。使 LLM 和 AI 代理能够通过 MCP 标准执行 Git 操作,例如克隆、提交、推送、拉取、分支、差异、日志、状态等。
该服务器基于cyanheads/mcp-ts-template构建,遵循模块化架构:
开发人员注意事项:此存储库包含一个.clinerules文件,该文件可作为您的 LLM 编码代理的开发人员备忘单,并提供代码库模式、文件位置和代码片段的快速参考。
目录
Related MCP server: GitHub MCP Server
概述
通过无缝 Git 集成增强您的 AI 代理和开发工具!
Git MCP 服务器充当桥梁,允许理解模型上下文协议 (MCP) 的应用程序(MCP 客户端) - 如高级 AI 助手 (LLM)、IDE 扩展或自定义脚本 - 直接安全地与本地 Git 存储库进行交互。
您的工具可以利用此服务器来执行以下操作,而无需使用复杂的脚本或手动 CLI:
自动化 Git 工作流程:克隆存储库、创建分支、暂存更改、提交工作、推送更新以及以编程方式管理标签。
获得存储库洞察:无需离开主机应用程序即可检查状态、查看日志、差异更改和检查 Git 对象。
将 Git 集成到 AI 驱动的开发中:使 LLM 能够将版本控制作为其编码或重构任务的一部分进行管理。
该服务器基于强大的mcp-ts-template构建,提供了一种通过 MCP 标准公开 Git 功能的标准化、安全且高效的方式。它通过使用 Node.js 的child_process模块安全地执行系统上安装的标准git命令行工具来实现这一点,从而确保兼容性并充分利用 Git 的全部功能。
特征
核心实用程序(来自模板)
利用mcp-ts-template提供的强大实用程序:
日志记录:结构化、可配置的日志记录(文件轮换、控制台、MCP 通知),并带有敏感数据编辑。
错误处理:集中错误处理、标准化错误类型(
McpError)和自动日志记录。配置:环境变量加载(
dotenv)。输入验证/清理:使用
zod进行模式验证和自定义清理逻辑(对于路径至关重要)。请求上下文:通过唯一的请求 ID 来跟踪和关联操作。
类型安全:由 TypeScript 和 Zod 模式强制执行的强类型。
HTTP 传输选项:内置 Express 服务器,支持 SSE、会话管理和 CORS。
Git 操作
直接 Git CLI 执行:通过 Node.js
child_process安全地执行标准git命令行工具与 Git 交互,确保完全兼容并可访问 Git 的功能。全面的命令覆盖:将各种 Git 命令作为 MCP 工具公开(参见工具部分)。
存储库交互:支持状态检查、分支、暂存、提交、获取、拉取、推送、差异、日志记录、重置、标记等。
工作目录管理:允许设置和清除特定于会话的工作目录,以便在多个 Git 操作中保持上下文持久性。
安全功能:包括检查并要求对潜在破坏性操作(如
git clean和git reset --hard进行明确确认。提交签名:支持使用 GPG 或 SSH 签名已验证的提交,通过
GIT_SIGN_COMMITS环境变量和服务器端 Git 配置进行控制。包含一个可选工具参数,用于在签名失败时回退到未签名的提交。
安装
先决条件
通过 npm 安装
全局安装包:
npm install @cyanheads/git-mcp-server
从源安装
克隆存储库:
git clone https://github.com/cyanheads/git-mcp-server.git cd git-mcp-server安装依赖项:
npm install构建项目:
npm run build (or `npm run rebuild`)这会将
dist/目录中的 TypeScript 代码编译为 JavaScript,并使入口点可执行。
配置
环境变量
使用环境变量配置服务器。在项目根目录下创建一个.env文件(从.env.example复制),或者在你的环境中设置它们。
多变的 | 描述 | 默认 |
| 传输机制:
或
。 |
|
| HTTP 服务器的端口(如果
)。如果端口繁忙,则重试下一个端口。 |
|
| HTTP 服务器的主机地址(如果
)。 |
|
| 以逗号分隔的 CORS 允许来源列表(如果
)。 | (没有任何) |
| 日志级别(
、
、
、
、
、
、
、
)。继承自模板。 |
|
| 设置为
即可启用对
工具所作提交的签名尝试。需要服务器端 Git/key 设置(见下文)。 |
|
| 用于签署/验证身份验证令牌的密钥(如果将来启用身份验证则需要)。 |
|
MCP 客户端设置
添加到您的 MCP 客户端设置(例如, cline_mcp_settings.json ):
项目结构
代码库遵循src/目录中的模块化结构:
有关详细的文件树,请运行npm run tree或查看docs/tree.md 。
工具
Git MCP 服务器提供了一套用于与 Git 存储库交互的工具,可通过模型上下文协议调用。
工具名称 | 描述 | 关键论点 |
| 暂存指定的文件或模式。 |
、
|
| 管理分支(列出、创建、删除、重命名、显示当前)。 |
、
、
、
、
、
、
、
|
| 切换分支或恢复工作树文件。 |
、
、
|
| 应用现有提交引入的更改。 |
、
、
、
、
|
| 删除未跟踪的文件。 需要 。 |
、
、
、
|
| 清除会话特定的工作目录。 | (没有任何) |
| 将存储库克隆到指定的绝对路径。 |
、
、
、
、
|
| 提交阶段性变更。支持作者覆盖和签名控制。 |
、
、
、
、
、
|
| 显示提交、工作树等之间的变化。 |
、
?、
、
|
| 从其他存储库下载对象和引用。 |
、
、
、
、
|
| 在指定的绝对路径下初始化一个新的 Git 仓库。初始分支默认为“main”。 |
、
、
|
| 显示提交日志。 |
、
、
、
、
、
|
| 将指定分支合并到当前分支。 |
、
、
、
、
、
|
| 从另一个存储库或本地分支获取并集成。 |
、
、
、
、
|
| 使用本地引用更新远程引用。 |
、
、
、
?、
、
、
、
|
| 在另一个基本提示之上重新应用提交。 |
、
、
、
、
、
、
、
|
| 管理远程存储库(列出、添加、删除、显示)。 |
、
、
、
|
| 将当前 HEAD 重置为指定状态。支持软、混合、硬三种模式。 请谨慎使用“hard” 。 |
、
、
|
| 设置默认工作目录。如果不存在,可以选择初始化 repo。需要绝对路径。 |
、
、
|
| 显示有关 Git 对象(提交、标签等)的信息。 |
,
,
|
| 管理存储的更改(列出、应用、弹出、删除、保存)。 |
、
、
|
| 获取存储库状态(分支、暂存、修改、未跟踪的文件)。 |
|
| 管理标签(列表、创建注释/轻量级、删除)。 |
、
、
、
、
|
| 管理 Git 工作树(列出、添加、删除、移动、修剪)。 |
、
、
、
、
、
、
|
注意:如果通过
资源
此版本(v2.0.12)中未实现 MCP 资源。
此版本重点关注基于最新mcp-ts-template和 MCP SDK v1.12.0 重构的 Git 工具实现。此前可用的资源功能在本次重大更新中被暂时移除。
如果您需要 MCP 资源访问(例如,直接通过服务器读取文件内容),请使用稳定的**v1.2.4 版本**。
未来的开发可能会在后续版本中重新引入资源功能。
**注意:**此版本 (v2.0.0) 重点基于最新的 MCP SDK 重构和更新了核心 Git 工具。MCP 资源功能尚未在此版本中实现。如需访问资源,请使用v1.2.4 版本。
发展
构建和测试
执照
该项目根据 Apache License 2.0 获得许可 - 有关详细信息,请参阅LICENSE文件。