使用说明
Git MCP服务器
用于本地Git操作的模型上下文协议(MCP)服务器,具有安全性和验证性。
特性
- 🔒 安全:路径遍历保护和输入验证
- ✅ 已验证:对所有输入进行运行时Zod验证
- ⏱️ 超时保护:可配置的超时可防止无限期阻塞
- 🛠️ 完成:支持15个Git操作
- 📝 经过充分测试:全面的集成测试套件
可用工具
git_clone:克隆Git存储库git_status:获取存储库的状态git_diff:获取存储库的差异(支持暂存文件)git_list_branches:列出本地和远程分支git_checkout:在分支之间切换并更新文件git_list_files:列出存储库中的文件git_read_file:读取文件内容(具有路径遍历保护)git_add:将文件添加到暂存区git_reset:将当前HEAD重置为指定状态(支持软、混合、硬)git_pull:从远程拉取更改(使用重基)git_commit:将更改提交到存储库git_push:将更改推送到远程(自动执行pull --rebase第一)git_log:获取存储库的提交日志git_create_branch:创建一个新分支(可选地从特定起点开始)git_merge:将分支合并到当前分支中(支持--no-ff)
设置
-
安装依赖项:
npm install -
构建:
npm run build -
跑:
npm run start
配置示例
克劳德桌面
{
"mcpServers": {
"git-mcp-server": {
"command": "node",
"args": ["/absolute/path/to/git-context-mcp/dist/index.js"]
}
}
}
Cline/Windsurf
{
"mcpServers": {
"git-mcp-server": {
"command": "npx",
"args": ["-y", "git-mcp-server"]
}
}
}
使用示例
克隆存储库
{
"tool": "git_clone",
"arguments": {
"repoUrl": "https://github.com/user/repo.git",
"localPath": "/path/to/local/repo"
}
}
读取文件
{
"tool": "git_read_file",
"arguments": {
"repoPath": "/path/to/repo",
"filePath": "src/index.ts"
}
}
创建并签出分支机构
{
"tool": "git_create_branch",
"arguments": {
"repoPath": "/path/to/repo",
"branch": "feature/new-feature",
"checkout": true
}
}
安全
- 路径横向保护:验证文件路径以防止访问存储库外部
- 输入验证:在处理之前,所有输入都使用Zod模式进行验证
- 错误处理:在整个堆栈中正确保留错误上下文
- 超时保护:操作具有可配置的超时(默认为30秒,克隆为60秒)
测试
运行集成测试套件以验证所有Git工具是否正常工作:
npx tsx test_script.ts
该脚本创建临时本地存储库,练习所有15个工具和错误处理场景,并自动清理。
故障排除
错误:“路径不存在”
确保存储库路径存在并且可访问。
错误:“文件路径必须在存储库中”
请求的文件路径在存储库边界之外。这是一种防止目录遍历攻击的安全功能。
超时错误
默认情况下,操作有30秒的超时时间(克隆为60秒)。对于非常大的存储库或速度较慢的网络,操作可能会超时。这是一种防止无限期堵塞的安全功能。
错误:“Git pull--rebase失败”
重基已自动中止,以将存储库还原到干净状态。检查是否存在未提交的更改或冲突。
发展
运行测试
npx tsx test_script.ts
建筑
npm run build
观察变化
npm run watch
先决条件
- Node.js 18+
- Git
许可证
麻省理工学院
