Git操作协议服务器

一个提供Git操作的标准工具,允许AI助手和其他MCP客户端以编程方式与Git仓库交互的模型上下文协议服务器。

  • by TeraSurror
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 TeraSurror/git-mcp-server

使用说明

Git MCP 服务器

一个模型上下文协议(MCP)服务器,通过标准化工具提供Git操作。该服务器允许AI助手和其他MCP客户端以编程方式与Git仓库进行交互。

这个项目的作用

这个MCP服务器将四种主要的Git操作作为MCP工具提供:

  • git_add 将文件添加到 Git 阶段区,支持特定文件、所有文件、交互模式和补丁模式
  • git_commit - 创建带有自定义消息的提交,支持暂存所有文件,并具备修正功能
  • git_push 向可配置的远程仓库推送提交,支持指定远程、分支、强制推送和上游追踪
  • git_status 获取Git仓库的当前状态,以查看哪些文件可以添加

所有工具均支持:

  • 通过指定一个来与任何Git仓库协同工作 repository_path
  • 全面的错误处理和超时保护
  • 包含命令输出和状态的详细响应信息

先决条件

安装

  1. 克隆此存储库:
git clone <repository-url>
cd git-mcp-server
  1. 使用uv安装依赖(推荐):
uv sync

或者使用 pip:

pip install -e .

运行服务器

开发模式

直接运行服务器:

python main.py

服务器将在 http://0.0.0.0:5001 默认情况下。

生产模式

若要用于生产环境,您可以使用像gunicorn这样的WSGI服务器来运行它:

uv run gunicorn main:mcp.app -b 0.0.0.0:5001

添加到Cursor IDE

要在Cursor中使用此MCP服务器,您需要在Cursor设置中进行配置:

  1. 打开光标设置(Cmd/Ctrl + ,)
  2. 导航至“功能”→“模型上下文协议”
  3. 添加一个新的MCP服务器配置:
{
  "mcpServers": {
    "git-mcp-server": {
      "command": "python",
      "args": ["/absolute/path/to/your/git-mcp-server/main.py"],
      "env": {}
    }
  }
}

替换 /absolute/path/to/your/git-mcp-server/main.py 包含您实际的绝对路径 main.py 文件。

HTTP传输的替代配置

如果你希望将服务器作为独立的HTTP服务运行:

{
  "mcpServers": {
    "git-mcp-server": {
      "command": "uv",
      "args": ["run", "python", "/absolute/path/to/your/git-mcp-server/main.py"],
      "env": {}
    }
  }
}
  1. 重启光标以加载新的MCP服务器
  2. Git工具现在应该可以在您的Cursor聊天界面中使用了

使用示例

一旦在Cursor中配置好,您就可以在聊天中使用Git工具:

  • 将所有修改过的文件添加到暂存区
  • 提交暂存的更改,信息为“修复用户认证中的错误”
  • 将当前分支推送到origin
  • “显示这个仓库的git状态”

API参考

git_add

将文件添加到Git暂存区。

参数:

  • files (可选)以空格分隔的文件路径列表
  • all_files (布尔值):添加所有已修改的文件(默认:否)
  • interactive (bool): 交互模式(默认:False)
  • patch 布尔值:补丁模式(默认:否)
  • repository_path (可选):Git仓库的路径

git_commit

创建一个Git提交。

参数:

  • message 提交信息(必填)
  • all_files (布尔值):提交前将所有文件暂存(默认:否)
  • amend (bool): 修改上一次提交(默认:False)
  • repository_path Git仓库的路径

git_push

将提交推送到远程仓库。

参数:

  • remote 远程名称(默认:“origin”)
  • branch 分支名称(默认为当前分支)
  • force (bool): 强制推送(默认:False)
  • set_upstream 布尔值:设置上游追踪(默认:否)
  • repository_path git仓库的路径

git状态

获取Git仓库状态。

参数:

  • repository_path git仓库的路径

安全考虑因素

  • 服务器以运行它的用户相同的权限执行Git命令
  • 小心 force 推送操作
  • 服务器验证仓库路径并在执行命令前检查Git仓库
  • 所有命令均设有超时保护(根据操作不同,时间为10-120秒)

贡献

  1. 克隆仓库
  2. 创建一个功能分支
  3. 做出你的更改
  4. 彻底测试
  5. 提交拉取请求

许可证

请在此添加您的许可信息