Git操作协议服务器

Git MCP Server是一个为本地Git操作提供安全和验证的模型上下文协议服务器,支持15种Git操作,包括克隆、提交、推送等。

  • by CarloMeazza
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 CarloMeazza/git-context-mcp

使用说明

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)

设置

  1. 安装依赖项:

    npm install
    
  2. 构建:

    npm run build
    
  3. 跑:

    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

许可证

麻省理工学院