首页
学习
活动
专区
圈层
工具
发布
MCP广场 >详情页
Git MCP协议服务器2026-06-16353分享添加福利群:解决AI开发者的「MCP实战痛点」
一种模型上下文协议服务器,使大型语言模型能够通过强大的API与Git仓库进行交互,支持仓库初始化、克隆、文件暂存、提交和分支管理等操作。
By cyanheads
2026-06-16353
github
详情内容

Git MCP 服务器

TypeScript 模型上下文协议 版本 许可证 状态 GitHub

一个提供与 Git 仓库交互工具的 MCP(模型上下文协议)服务器。通过 MCP 标准,使 LLMs 和 AI 代理能够执行 Git 操作,如克隆、提交、推送、拉取、分支、差异、日志、状态等。

基于 cyanheads/mcp-ts-template,该服务器遵循模块化架构:

开发者注意:此仓库包含一个 .clinerules 文件,作为开发者的速查表,为您的 LLM 编码代理提供代码库模式、文件位置和代码片段的快速参考。

目录

| 概述 | 功能 | 安装 |

| 配置 | 项目结构 |

| 工具 | 资源 | 开发 | 许可证 |

概述

为您的 AI 代理和开发工具提供无缝的 Git 集成!

Git MCP 服务器充当桥梁,允许理解模型上下文协议(MCP)的应用程序(MCP 客户端)——如高级 AI 助手(LLMs)、IDE 扩展或自定义脚本——直接且安全地与本地 Git 仓库交互。

您的工具可以利用此服务器,而不是复杂的脚本或手动 CLI:

  • 自动化 Git 工作流:克隆仓库、创建分支、暂存更改、提交工作、推送更新以及以编程方式管理标签。
  • 获取仓库洞察:检查状态、查看日志、差异更改并检查 Git 对象,而无需离开主机应用程序。
  • 将 Git 集成到 AI 驱动的开发中:使 LLMs 能够管理版本控制作为其编码或重构任务的一部分。

基于强大的 mcp-ts-template,该服务器通过 MCP 标准提供了一种标准化、安全且高效的方式来暴露 Git 功能。它通过使用 Node.js 的 child_process 模块安全地执行系统上安装的标准 git 命令行工具来实现这一点,确保兼容性并充分利用 Git 的全部功能。

功能

核心工具(来自模板)

利用 mcp-ts-template 提供的强大工具:

  • 日志记录:结构化、可配置的日志记录(文件轮换、控制台、MCP 通知)和敏感数据脱敏。
  • 错误处理:集中式错误处理、标准化错误类型(McpError)和自动日志记录。
  • 配置:环境变量加载(dotenv)。
  • 输入验证/清理:使用 zod 进行模式验证和自定义清理逻辑(对路径至关重要)。
  • 请求上下文:通过唯一请求 ID 跟踪和关联操作。
  • 类型安全:由 TypeScript 和 Zod 模式强制执行的强类型。
  • HTTP 传输选项:内置 Express 服务器,支持 SSE、会话管理和 CORS。

Git 操作

  • 直接 Git CLI 执行:通过 Node.js child_process 安全地执行标准 git 命令行工具与 Git 交互,确保完全兼容性和访问 Git 的功能。
  • 全面的命令覆盖:将广泛的 Git 命令暴露为 MCP 工具(参见 工具 部分)。
  • 仓库交互:支持状态检查、分支、暂存、提交、获取、拉取、推送、差异、日志、重置、标签等。
  • 工作目录管理:允许设置和清除会话特定的工作目录,以在多个 Git 操作之间保持上下文持久性。
  • 安全功能:包括检查并要求对潜在破坏性操作(如 git cleangit reset --hard)进行显式确认。
  • 提交签名:支持 GPG 或 SSH 签名以验证提交,通过 GIT_SIGN_COMMITS 环境变量和服务器端 Git 配置控制。包括一个可选工具参数,以便在签名失败时回退到未签名的提交。

安装

先决条件

通过 npm 安装

  1. 全局安装包:
    npm install @cyanheads/git-mcp-server
    

从源代码安装

  1. 克隆仓库:
    git clone https://github.com/cyanheads/git-mcp-server.git
    cd git-mcp-server
    
  2. 安装依赖:
    npm install
    
  3. 构建项目:
    npm run build(或 `npm run rebuild`)
    
    这将 TypeScript 代码编译为 JavaScript 到 dist/ 目录,并使入口点可执行。

配置

环境变量

使用环境变量配置服务器。在项目根目录中创建 .env 文件(从 .env.example 复制)或在环境中设置它们。

变量 描述 默认值
MCP_TRANSPORT_TYPE 传输机制:stdiohttp stdio
MCP_HTTP_PORT HTTP 服务器的端口(如果 MCP_TRANSPORT_TYPE=http)。如果端口忙,则重试下一个端口。 3010
MCP_HTTP_HOST HTTP 服务器的主机地址(如果 MCP_TRANSPORT_TYPE=http)。 127.0.0.1
MCP_ALLOWED_ORIGINS 允许的 CORS 来源的逗号分隔列表(如果 MCP_TRANSPORT_TYPE=http)。 (无)
MCP_LOG_LEVEL 日志记录级别(debug, info, notice, warning, error, crit, alert, emerg)。继承自模板。 info
GIT_SIGN_COMMITS 设置为 "true" 以启用 git_commit 工具提交的签名尝试。需要服务器端 Git/密钥设置(见下文)。 false
MCP_AUTH_SECRET_KEY 用于签名/验证身份验证令牌的密钥(如果将来启用了身份验证,则为必需)。 ''

MCP 客户端设置

添加到您的 MCP 客户端设置(例如,cline_mcp_settings.json):

{
  "mcpServers": {
    "git-mcp-server": {
      // 使用描述性名称
      "command": "node", // 使用 node 运行脚本
      "args": ["/path/to/your/git-mcp-server/dist/index.js"], // 构建入口点的绝对路径
      "env": {
        // "MCP_TRANSPORT_TYPE": "http", // 可选:如果使用 http
        // "MCP_HTTP_PORT": "3010",     // 可选:如果使用 http 且非默认端口
        // "GIT_SIGN_COMMITS": "true"   // 可选:如果服务器配置了,则启用提交签名尝试
      },
      "disabled": false,
      "autoApprove": [] // 如果需要,配置自动批准规则
    }
  }
}

注意:您可以查看 mcp.json 以获取包含 Git MCP 服务器的示例 MCP 客户端配置文件。

项目结构

代码库在 src/ 目录中遵循模块化结构:

src/
├── index.ts           # 入口点:初始化和启动服务器
├── config/            # 配置加载(环境变量,包信息)
│   └── index.ts
├── mcp-server/        # 核心 MCP 服务器逻辑和能力注册
│   ├── server.ts      # 服务器设置,能力注册
│   ├── transports/    # 传输处理(stdio, http)
│   ├── resources/     # MCP 资源实现(当前无)
│   └── tools/         # MCP 工具实现(按工具子目录)
├── types-global/      # 共享的 TypeScript 类型定义
└── utils/             # 通用工具函数(日志记录器,错误处理程序等)

有关详细文件树,请运行 npm run tree 或查看 docs/tree.md

工具

Git MCP 服务器提供了一套用于与 Git 仓库交互的工具,可通过模型上下文协议调用。

工具名称 描述 关键参数
git_add 暂存指定的文件或模式。 path?, files?
git_branch 管理分支(列出、创建、删除、重命名、显示当前)。 path?, mode, branchName?, newBranchName?, startPoint?, force?, all?, remote?
git_checkout 切换分支或恢复工作树文件。 path?, branchOrPath, newBranch?, force?
git_cherry_pick 应用现有提交引入的更改。 path?, commitRef, mainline?, strategy?, noCommit?, signoff?
git_clean 删除未跟踪的文件。需要 force: true path?, force, dryRun?, directories?, ignored?
git_clear_working_dir 清除会话特定的工作目录。 (无)
git_clone 将仓库克隆到指定的绝对路径。 repositoryUrl, targetPath, branch?, depth?, quiet?
git_commit 提交暂存的更改。支持作者覆盖,签名控制。 path?, message, author?, allowEmpty?, amend?, forceUnsignedOnFailure?
git_diff 显示提交、工作树等之间的更改。 path?, commit1?, commit2?, staged?, file?, includeUntracked?
git_fetch 从其他仓库下载对象和引用。 path?, remote?, prune?, tags?, all?
git_init 在指定的绝对路径初始化一个新的 Git 仓库。初始分支默认为 'main'。 path, initialBranch?, bare?, quiet?
git_log 显示提交日志。 path?, maxCount?, author?, since?, until?, branchOrFile?
git_merge 将指定分支合并到当前分支。 path?, branch, commitMessage?, noFf?, squash?, abort?
git_pull 从另一个仓库或本地分支获取并集成。 path?, remote?, branch?, rebase?, ffOnly?
git_push 使用本地引用更新远程引用。 path?, remote?, branch?, remoteBranch?, force?, forceWithLease?, setUpstream?, tags?, delete?
git_rebase 在另一个基础提示上重新应用提交。 path?, mode?, upstream?, branch?, interactive?, strategy?, strategyOption?, onto?
git_remote 管理远程仓库(列出、添加、删除、显示)。 path?, mode, name?, url?
git_reset 将当前 HEAD 重置为指定状态。支持软、混合、硬模式。谨慎使用 'hard' path?, mode?, commit?
git_set_working_dir 设置默认工作目录。如果不存在,可以选择初始化仓库。需要绝对路径。 path, validateGitRepo?, initializeIfNotPresent?
git_show 显示 Git 对象(提交、标签等)的信息。 path?, ref, filePath?
git_stash 管理暂存的更改(列出、应用、弹出、删除、保存)。 path?, mode, stashRef?, message?
git_status 获取仓库状态(分支、暂存、修改、未跟踪文件)。 path?
git_tag 管理标签(列出、创建带注释/轻量级、删除)。 path?, mode, tagName?, message?, commitRef?, annotate?
git_worktree 管理 Git 工作树(列出、添加、删除、移动、修剪)。 path?, mode, worktreePath?, commitish?, newBranch?, force?, detach?, newPath?, verbose?, dryRun?, expire?
git_wrapup_instructions 提供标准的 Git 收尾工作流。 acknowledgement, updateAgentMetaFiles?

注意:大多数工具的 path 参数默认为通过 git_set_working_dir 设置的会话工作目录。

资源

此版本(v2.0.14)未实现 MCP 资源。

此版本专注于基于最新 mcp-ts-template 和 MCP SDK v1.12.0 重构的 Git 工具实现。在此次重大更新期间,之前可用的资源能力已被暂时移除。

如果您需要 MCP 资源访问(例如,通过服务器直接读取文件内容),请使用稳定的 v1.2.4 版本

未来的开发可能会在后续版本中重新引入资源能力。

注意:此版本(v2.0.0)专注于基于最新 MCP SDK 重构和更新核心 Git 工具。此版本未实现 MCP 资源能力。对于资源访问,请使用 v1.2.4

开发

构建和测试

# 构建项目(将 TS 编译为 JS 到 dist/ 并使可执行)
npm run build

# 使用 MCP 检查器工具本地测试服务器(stdio 传输)
npm run inspector

# 使用 MCP 检查器工具本地测试服务器(http 传输)
npm run inspector:http

# 清理构建工件(运行 scripts/clean.ts)
npm run clean

# 生成文件树表示以用于文档(运行 scripts/tree.ts)
npm run tree

# 清理构建工件然后重新构建项目
npm run rebuild

# 使用 stdio 启动服务器(默认)
npm start
# 或显式:
npm run start:stdio

# 使用 HTTP 传输启动服务器
npm run start:http

许可证

此项目根据 Apache 许可证 2.0 授权 - 详情请参阅 LICENSE 文件。


使用 模型上下文协议 构建
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档