Git操作服务器

一个提供22种Git操作的HTTP API服务器,支持VS Code Copilot的模型上下文协议(MCP)集成。

  • by arunangshu-podder
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 arunangshu-podder/mcp-git-server

使用说明

mcp git服务器

最小的MCP-风格的HTTP服务器,通过HTTP API和VS代码Copilot的模型上下文协议(MCP)运行常见的Git操作。

特性

  • 🔧 22 Git操作:克隆、状态、拉取、推送、提交、添加、签出、分支、日志、获取、合并、隐藏、重置、配置、还原,以及6个合并冲突解决工具
  • 🤖 MCP集成:与VS Code Copilot无缝协作
  • 🔐 自动令牌身份验证:自动注入GitHub和Azure DevOps令牌
  • 🌐 交叉平台的:macOS、Linux和Windows支持
  • 🚫 无凭证提示:禁用所有git凭据对话框
  • ⏱️ 可配置超时:处理慢速网络或大型存储库

快速开始

  1. 安装依赖项:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  1. 配置令牌(可选):
export GITHUB_TOKEN=ghp_your_github_token
export ADO_PAT=your_azure_devops_pat
  1. 运行服务器:
python run_server.py --host 127.0.0.1 --port 5000
  1. 测试服务器:
curl http://127.0.0.1:5000/api/health

可用工具

服务器提供 22位数操作 可通过MCP工具(用于Copilot)或HTTP端点(用于直接API调用)访问:

核心操作(15个工具)

# 工具 HTTP端点 说明
1 git_clone POST /api/clone 克隆存储库
2 git_status POST /api/status 获取存储库状态
3 git_pull POST /api/pull 从远程拉动(支架 --rebase)
4 git_push POST /api/push 推到远程
5 git_commit POST /api/commit 提交分阶段更改
6 git_add POST /api/add 提交阶段文件
7 git_checkout POST /api/checkout 切换或创建分支
8 git_branch POST /api/branch 获取当前分支名称
9 git_log POST /api/log 显示提交历史记录
10 git_fetch POST /api/fetch 从远程获取
11 git_merge POST /api/merge 合并分支
12 git_stash POST /api/stash 管理存储(保存、列出、应用、弹出、删除、清除、显示)
13 git_reset POST /api/reset 将HEAD重置为指定状态或取消暂存文件
14 git_config POST /api/config 获取、设置、取消设置或列出git配置
15 git_restore POST /api/restore 还原工作树文件或取消分级更改

合并冲突解决(6个工具)

# 工具 HTTP端点 说明
16 git_conflict_status POST /api/conflict_status 检查合并状态并列出冲突文件
17 git_show_conflicts POST /api/show_conflicts 显示带有冲突标记的冲突文件
18 git_diff_conflict POST /api/diff_conflict 显示冲突文件的差异
19 git_abort_merge POST /api/abort_merge 中止合并、重基或樱桃采摘
20 git_merge_continue POST /api/merge_continue 手动解析后完成合并
21 git_rebase_continue POST /api/rebase_continue 冲突解决后继续重设基础
22 git_rebase_abort POST /api/rebase_abort 中止正在进行的重设基础

📖 有关详细的参数、示例和用法,请参阅 API_REFERENCE.md

文档

示例用法

使用副印本(自然语言)

"Clone https://github.com/torvalds/linux.git to ~/projects"
"What's the status of my repo at ~/my-project?"
"Pull the latest changes with rebase"
"Commit all changes with message 'feat: add login'"
"Push to origin main"

使用HTTP API(直接)

# Check status
curl -X POST http://127.0.0.1:5000/api/status \
  -H "Content-Type: application/json" \
  -d '{"repo_path":"/path/to/repo"}'

# Pull with rebase
curl -X POST http://127.0.0.1:5000/api/pull \
  -H "Content-Type: application/json" \
  -d '{"repo_path":"/path/to/repo","rebase":true}'

# Merge branch
curl -X POST http://127.0.0.1:5000/api/merge \
  -H "Content-Type: application/json" \
  -d '{"repo_path":"/path/to/repo","branch":"feature-branch"}'

看 API_REFERENCE.md 获取完整的API文档。

配置

环境变量

变量 描述 默认值
GITHUB_TOKEN GitHub个人访问令牌 -
ADO_PAT Azure DevOps个人访问令牌 -
GIT_TIMEOUT 操作超时(秒) 30
GIT_PATH git可执行文件的路径 自动检测到
MCP_DEBUG 启用MCP调试日志记录 0
GIT_TOOLS_DEBUG 启用git工具调试日志记录 0

令牌认证

令牌在远程操作(pull、push、fetch)期间自动注入。在中配置 mcp.json 对于副驾驶:

{
  "mcpServers": {
    "git": {
      "command": "python",
      "args": ["-m", "mcp_git_server.mcp_server"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token",
        "ADO_PAT": "your_ado_pat",
        "GIT_TIMEOUT": "240"
      }
    }
  }
}

看 TOKEN_AUTH_GUIDE.md 有关详细的设置说明。

许可证

MIT许可证-有关详细信息,请参阅许可证文件。