关于 GIT MCP Server
GIT MCP Server 通过 MCP 向 AI 助手和大模型 Agent 提供 Git 仓库数据与操作,涵盖仓库、分支、工作区、远程端及高级 Git 任务,并以结构化资源呈现历史和文件变更。
主要功能
- 01初始化、克隆和检查仓库
- 02创建、切换、合并和删除分支
- 03暂存、提交和比较变更
- 04获取、拉取和推送远程更新
- 05管理标签、暂存区、拣选和变基
- 06读取仓库资源与提交历史
适用场景
- 01让 AI Agent 检查仓库状态和历史
- 02通过 MCP 工具修改分支和提交
- 03查看文件内容、差异和行归属
- 04管理远程更新和高级 Git 操作
MCP 相关
该 MCP 服务将 Git 操作作为工具、仓库信息作为资源提供。MCP 客户端可通过这些接口操作,而无需直接访问文件系统或命令行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
GIT MCP 服务
一个用于与 Git 仓库交互并提供工具的模型上下文协议(MCP)服务。该服务允许 AI 助手和大模型 Agent 通过标准化接口管理仓库、分支、提交和文件,无需直接访问文件系统或命令行。它将 Git 操作作为 MCP 资源和工具公开,同时保持适当的安全边界。
目录
概述
核心功能:
- 仓库管理:初始化、克隆仓库并检查仓库状态
- 分支操作:创建、列出、检出、删除和合并分支
- 工作目录:暂存文件、提交更改、创建差异
- 远程操作:添加远程仓库、获取、拉取、推送
- 高级 Git 命令:管理标签、贮藏更改、拣选提交、变基
架构与组件
核心系统架构:
点击展开 Mermaid 图
flowchart TB
subgraph API["API Layer"]
direction LR
MCP["MCP Protocol"]
Val["Validation"]
MCP --> Val
end
subgraph Core["Core Services"]
direction LR
GitService["Git Service"]
ErrorService["Error Service"]
GitService <--> ErrorService
end
subgraph Resources["Resource Layer"]
direction LR
Repo["Repository Resources"]
Diff["Diff Resources"]
File["File Resources"]
History["History Resources"]
Repo <--> Diff
Repo <--> File
Repo <--> History
end
subgraph Tools["Tool Layer"]
direction LR
RepoTools["Repository Tools"]
BranchTools["Branch Tools"]
WorkdirTools["Working Directory Tools"]
RemoteTools["Remote Tools"]
AdvancedTools["Advanced Tools"]
RepoTools <--> BranchTools
BranchTools <--> WorkdirTools
WorkdirTools <--> RemoteTools
RemoteTools <--> AdvancedTools
end
Val --> GitService
GitService --> Resources
GitService --> Tools
classDef layer fill:#2d3748,stroke:#4299e1,stroke-width:3px,rx:5,color:#fff
classDef component fill:#1a202c,stroke:#a0aec0,stroke-width:2px,rx:3,color:#fff
classDef api fill:#3182ce,stroke:#90cdf4,stroke-width:2px,rx:3,color:#fff
classDef core fill:#319795,stroke:#81e6d9,stroke-width:2px,rx:3,color:#fff
classDef resource fill:#2f855a,stroke:#9ae6b4,stroke-width:2px,rx:3,color:#fff
classDef tool fill:#805ad5,stroke:#d6bcfa,stroke-width:2px,rx:3,color:#fff
class API,Core,Resources,Tools layer
class MCP,Val api
class GitService,ErrorService core
class Repo,Diff,File,History resource
class RepoTools,BranchTools,WorkdirTools,RemoteTools,AdvancedTools tool
核心组件:
- MCP 服务:使用模型上下文协议 SDK 创建一个公开资源和工具的服务
- Git 服务:基于 simple-git 的抽象层,为 Git 操作提供简洁的接口
- 资源:通过 MCP 资源和一致的 URI 模板公开 Git 数据
- 工具:通过 MCP 工具公开 Git 操作,并提供定义明确的架构
- 错误处理:标准化的错误处理与报告
功能
资源访问
通过 MCP 资源公开 Git 仓库信息:
- 仓库信息:访问 Git 仓库的基本信息,包括当前分支、状态和引用详情
- 仓库分支:列出仓库中的所有分支,并标示当前分支
- 仓库远程仓库:列出所有已配置的远程仓库及其 URL
- 仓库标签:列出仓库中的所有标签及其引用
- 文件内容:访问指定 Git 引用下特定文件的内容
- 目录列表:查看指定路径和引用下的文件及目录列表
- 差异:获取不同引用、未暂存更改或已暂存更改之间的差异
- 提交历史:查看详细的提交日志,包括作者、日期和消息信息
- 文件归属:逐行查看归属信息,了解最近修改每行内容的提交
- 提交详情:访问特定提交的详细信息,包括差异更改
Git 操作
通过 MCP 工具执行 Git 命令:
- 仓库操作:初始化仓库、从远程仓库克隆、检查仓库状态
- 分支操作:创建分支、列出分支、切换分支、删除分支、合并分支
- 工作目录操作:暂存文件、取消暂存文件、提交更改、创建差异
- 远程操作:添加远程仓库、列出远程仓库、获取、拉取、推送
- 高级操作:管理标签、暂存更改、挑选提交、变基分支、重置、清理
安装
先决条件
- Node.js 16 或更高版本
- 已安装 Git,且可通过 PATH 使用
从 NPM 安装
npm install -g git-mcp-server
从源代码安装
git clone https://github.com/cyanheads/git-mcp-server.git
cd git-mcp-server
npm install
npm run build
使用方法
运行服务
git-mcp-server
服务通过 stdin/stdout 使用 Model Context Protocol 通信,因此兼容任何 MCP 客户端。
与 Claude 集成
添加到 Claude 配置文件中:
{
"mcpServers": {
"git": {
"command": "git-mcp-server",
"args": [],
"env": {},
"disabled": false
}
}
}
与其他 MCP 客户端集成
使用 MCP 检查器测试服务:
npx @modelcontextprotocol/inspector git-mcp-server
项目结构
代码库采用模块化结构:
git-mcp-server/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server implementation
│ ├── resources/ # Resource implementations
│ │ ├── descriptors.ts # Resource URI templates
│ │ ├── diff.ts # Diff-related resources
│ │ ├── file.ts # File-related resources
│ │ ├── history.ts # History-related resources
│ │ ├── index.ts # Resource registration
│ │ └── repository.ts # Repository resources
│ ├── services/ # Service implementations
│ │ ├── error-service.ts # Error handling
│ │ └── git-service.ts # Git operations abstraction
│ ├── tools/ # Tool implementations
│ │ ├── advanced.ts # Advanced Git operations
│ │ ├── branch.ts # Branch operations
│ │ ├── index.ts # Tool registration
│ │ ├── remote.ts # Remote operations
│ │ ├── repository.ts # Repository operations
│ │ └── workdir.ts # Working directory operations
│ ├── types/ # Type definitions
│ │ └── git.ts # Git-related types
│ └── utils/ # Utility functions
│ └── validation.ts # Input validation
└── scripts/ # Development scripts
工具
Git MCP Server 提供了一套全面的 Git 操作工具:
仓库操作
| 工具 | 描述 |
|---|---|
git_init | 在指定路径初始化新的 Git 仓库,并提供裸仓库选项。 |
git_clone | 将远程 URL 上的 Git 仓库克隆到本地路径,并提供分支和深度选项。 |
git_status | 获取 Git 仓库的当前状态,包括工作目录和暂存区的更改。 |
分支操作
| 工具 | 描述 |
|---|---|
git_branch_list | 列出仓库中的所有分支,并提供包含远程分支的选项。 |
git_branch_create | 创建新分支,并提供指定起点和自动切换分支的选项。 |
git_checkout | 切换到某个分支、标签或提交,并提供在切换时创建新分支的选项。 |
git_branch_delete | 删除分支,并提供强制删除未合并分支的选项。 |
git_merge | 将一个分支合并到当前分支,并支持自定义提交消息和合并策略。 |
工作目录操作
| 工具 | 描述 |
|---|---|
git_add | 将文件暂存以供提交,支持指定单个文件或整个目录。 |
git_reset | 将文件从暂存区取消暂存,可选择指定文件或取消暂存所有已暂存的更改。 |
git_commit | 提交已暂存的更改,并可自定义提交消息、作者信息和修订选项。 |
git_diff_unstaged | 获取工作目录中所有未暂存更改的差异,也可指定文件。 |
git_diff_staged | 获取索引中所有已暂存更改的差异,也可指定文件。 |
git_reset_commit | 将仓库重置到指定引用,可选择硬重置、软重置或混合模式。 |
git_clean | 从工作树中移除未跟踪文件,可选择清理目录或强制清理。 |
远程操作
| 工具 | 描述 |
|---|---|
git_remote_add | 添加新的远程仓库,并指定名称和 URL。 |
git_remote_list | 列出所有已配置的远程仓库及其 URL。 |
git_fetch | 从远程仓库获取更新,可指定分支。 |
git_pull | 从远程仓库拉取更改,可选择变基策略。 |
git_push | 将本地更改推送到远程仓库,可选择强制推送和跟踪上游分支。 |
高级操作
| 工具 | 描述 |
|---|---|
git_tag_create | 创建新标签,可选择创建带注释的标签并添加消息。 |
git_tag_list | 列出仓库中的所有标签及其引用。 |
git_stash_create | 暂存工作目录中的更改,可选择包含未跟踪文件并添加说明。 |
git_stash_list | 列出仓库中的所有暂存项及其说明。 |
git_stash_apply | 应用暂存的更改,但不将其从暂存列表中移除。 |
git_stash_pop | 应用暂存的更改,并将其从暂存列表中移除。 |
git_cherry_pick | 将指定提交中的更改应用到当前分支。 |
git_rebase | 将当前分支变基到另一个分支,并可选择交互模式选项。 |
git_log | 获取提交历史记录,可自定义输出格式和深度。 |
git_show | 显示指定提交的详细信息,包括差异更改。 |
资源
Git MCP Server 通过标准 MCP 资源公开 Git 数据:
仓库资源
| 资源 | 描述 |
|---|---|
git://repo/{repoPath}/info | Git 仓库的基本信息,包括当前分支、状态和引用详情 |
git://repo/{repoPath}/branches | 仓库中所有分支的列表,并标明当前分支 |
git://repo/{repoPath}/remotes | 所有已配置远程仓库及其 URL 的列表 |
git://repo/{repoPath}/tags | 仓库中所有标签及其引用的列表 |
git://repo/{repoPath}/file/{filePath}?ref={ref} | 返回指定 Git 引用下特定文件的内容 |
git://repo/{repoPath}/ls/{dirPath}?ref={ref} | 返回指定路径和引用下的文件及目录列表 |
git://repo/{repoPath}/diff/{fromRef}/{toRef}?path={path} | 返回两个 Git 引用(提交、分支、标签)之间的差异 |
git://repo/{repoPath}/diff-unstaged?path={path} | 返回工作目录中所有未暂存更改的差异 |
git://repo/{repoPath}/diff-staged?path={path} | 返回索引中所有已暂存更改的差异 |
git://repo/{repoPath}/log?maxCount={maxCount}&file={file} | 返回提交历史日志,包含作者、日期和消息详情 |
git://repo/{repoPath}/blame/{filePath} | 返回逐行归属信息,显示每行最后由哪个提交修改 |
git://repo/{repoPath}/commit/{commitHash} | 返回特定提交的详细信息,包括差异更改 |
开发
构建和测试
# Build the project
npm run build
# Watch for changes
npm run watch
# Test with MCP inspector
npm run inspector
# Clean build artifacts
npm run clean
# Rebuild completely
npm run rebuild
许可证
Apache License 2.0 - 详情请参阅 LICENSE。
使用 Model Context Protocol 构建
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。