使用说明
GIT MCP服务器
一个模型上下文协议(MCP)服务器,提供与Git存储库交互的工具。该服务器允许AI助手和LLM代理通过标准化的界面管理存储库、分支、提交和文件,而不需要直接的文件系统或命令行访问。它将Git操作作为MCP资源和工具公开,同时保持适当的安全边界。
目录
概述
关键能力:
- 库管理:初始化、克隆和检查存储库状态
- 转移操作:创建、列出、签出、删除和合并分支
- 工作目录:暂存文件、提交更改、创建差异
- 远程操作:添加遥控器、取、拉、推
- 高级Git命令:管理标签、存储更改、樱桃采摘、重设底座
架构和组件
核心系统架构:
Click to expand Mermaid diagram
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服务:简单git之上的抽象层,为git操作提供干净的接口
- 资源:通过具有一致URI模板的MCP资源公开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进行通信,使其与任何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 |
将Git存储库从远程URL克隆到具有分支和深度选项的本地路径。 |
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服务器通过标准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许可证2.0-请参阅 许可证 了解详情。
Built with the Model Context Protocol