mcpField
G
Git MCP

Git MCP

本地服务
github.com/selfagency版本控制02 周前更新

关于 Git MCP

Git MCP 向编码 Agent 和其他 MCP 客户端提供 Git 操作。其工具涵盖日常工作流、进阶历史操作、仓库分析和拉取请求,并为破坏性操作设置确认机制。

主要功能

  1. 0118 个工具覆盖 Git 工作流
  2. 02破坏性操作需确认
  3. 03GPG 和 SSH 提交签名
  4. 04支持 Git LFS 和 Git Flow
  5. 05仓库分析与拉取请求
  6. 06状态、日志、分支和差异只读资源

适用场景

  1. 01检查并管理仓库变更
  2. 02恢复或重写提交历史
  3. 03创建和管理 worktree
  4. 04查看仓库活动并处理拉取请求

MCP 相关

提供 Git 操作 MCP 工具,以及仓库状态、日志、分支和差异的只读资源。可配置给 GitHub Copilot、Claude Code、Cursor 和 OpenAI Codex 等 MCP 客户端使用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"git-mcp-selfagency": {
"command": "npx",
"args": [
"-y",
"@selfagency/git-mcp"
],
"env": {
"GIT_REPO_PATH": "<GIT_REPO_PATH>",
"GIT_ALLOW_NO_VERIFY": "<GIT_ALLOW_NO_VERIFY>",
"GIT_ALLOW_FORCE_PUSH": "<GIT_ALLOW_FORCE_PUSH>",
"GIT_ALLOW_FLOW_HOOKS": "<GIT_ALLOW_FLOW_HOOKS>",
"GIT_SIGNING_KEY": "<GIT_SIGNING_KEY>",
"GIT_SIGNING_FORMAT": "<GIT_SIGNING_FORMAT>",
"GIT_AUTO_SIGN_COMMITS": "<GIT_AUTO_SIGN_COMMITS>",
"GIT_AUTO_SIGN_TAGS": "<GIT_AUTO_SIGN_TAGS>"
}
}
}
}
启动命令npx -y @selfagency/git-mcp
需要配置的环境变量
GIT_REPO_PATHDefault repository path for all tool requests. Can also be set via the --repo / --repo-path CLI argument. If omitted, each tool call must supply repo_path explicitly.
GIT_ALLOW_NO_VERIFYSet to 'true' to expose a no_verify parameter on commit and push tools, passing --no-verify to Git and bypassing pre-commit / pre-push hooks.
GIT_ALLOW_FORCE_PUSHSet to 'true' to expose a force parameter on push tools. Remote branch protection rules (GitHub/GitLab) are still enforced server-side regardless.
GIT_ALLOW_FLOW_HOOKSSet to 'true' to allow git_flow to execute git-flow-next-compatible hook and filter programs discovered from git config or repository hook locations.
GIT_SIGNING_KEY密钥Default signing key: a GPG key ID, an SSH public key path, or empty to use git's configured user.signingkey. Used when GIT_AUTO_SIGN_COMMITS or GIT_AUTO_SIGN_TAGS is enabled.
GIT_SIGNING_FORMATSigning format for commits and tags. Accepted values: openpgp, ssh, x509.
GIT_AUTO_SIGN_COMMITSSet to 'true' to automatically sign all commits produced by this server.
GIT_AUTO_SIGN_TAGSSet to 'true' to automatically sign all tags produced by this server.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@selfagency/git-mcp0.4.2

工具

12

收录的工具列表 · 更新于 2 周前

参数类型必填说明
repo_pathstring否本地 Git 仓库的绝对路径。如果省略,则回退到通过 GIT_REPO_PATH 环境变量或 --repo-path CLI 参数设置的服务器默认值。
actionenum否status | diff | diff_main
modeenum否unstaged | staged | refs
from_refstring否
to_refstring否
filteredboolean否
base_branchstring否
response_formatenum否响应的输出格式。markdown | json

详细介绍

git-mcp

CI codecov NPM Version

一个好用的 Git MCP 服务

向任何兼容 MCP 的 AI Agent 提供完整的 Git 工作流——检查、写入、分支、远程仓库、暂存、变基、LFS、git-flow、文档查询等。默认安全、可组合且快速。由 simple-git 驱动。

专为 GitHub Copilot、Claude Code、Cursor 和 OpenAI Codex 等工具中的编码 Agent 打造,同时兼容任何能够调用工具和资源的 MCP 客户端。


功能

  • 18 个工具,包含 80 多项操作,涵盖日常 Git 工作流、高级恢复、历史重写、仓库分析、代码托管平台拉取请求以及对外部版本控制系统的识别
  • 安全优先——破坏性操作需要明确确认;强制推送和绕过钩子需在服务器配置中显式启用
  • 支持提交和标签的 GPG/SSH 签名,并支持服务器级自动签名
  • Git LFS——跟踪模式、管理对象、安装钩子、迁移历史
  • Git Flow——驱动 git-flow-next CLI,确保随着 CLI 的演进,完成状态机、冲突恢复和工作树生命周期依然正确。支持预设初始化、概览、配置增删改查、通用主题操作,以及经典的 feature/release/hotfix/support 别名
  • 文档查询——搜索 git-scm.com,并直接从大模型获取 man 手册页
  • MCP 资源——可通过 URI 访问状态、日志、分支和差异的只读视图
  • 内置 Agent 技能——skills/git-mcp-workflow/ 为 AI Agent 和编码 Agent 介绍 MCP 优先的 Git 工作流、恢复、工作树、发布及高级操作;可通过 skills-npm 和 skill.sh 安装
  • 识别外部版本控制系统——git_but_check / git_jj_check 可检测 GitButler 和 Jujutsu,并在适当时引导 Agent 优先使用它们的原生 CLI/MCP(并提供 but teardown 指引),而非 git-mcp 工具
  • 历史重写——git_rewrite:用于安全重写提交历史的重述、压缩、重写消息和备份/恢复功能
  • 仓库分析——git_analytics:根据本地 Git 历史计算贡献者、代码变动量、活动、摘要和文件统计信息
  • 拉取请求——git_pr:通过提供商 CLI 或 REST API,在 GitHub、GitLab、Forgejo、Gitea 和 Bitbucket 上创建、列出和合并 PR/MR
  • Tangled 与 Entire 识别——git_tangled_check / git_entire_check 可检测 Tangled 托管服务以及 Entire 会话/上下文管理
  • 多仓库——可在每次调用时传入 repo_path,或配置服务器级默认值
  • 工作树——git_worktree:可按路径使用普通的 git worktree,或通过 git flow worktree 使用按分支寻址的工作树,支持路径模板和感知来源的清理
  • 跨平台——macOS、Linux、Windows(Git for Windows)均由 CI 覆盖

快速开始

npx(无需安装)
npx @selfagency/git-mcp --repo-path /path/to/your/repo
全局安装
npm install -g @selfagency/git-mcp
git-mcp --repo-path /path/to/your/repo
Claude Desktop

添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "git": {
      "command": "npx",
      "args": ["-y", "@selfagency/git-mcp", "--repo-path", "/path/to/your/repo"]
    }
  }
}
VS Code(Copilot)

添加到项目中的 .vscode/mcp.json:

{
  "servers": {
    "git": {
      "command": "npx",
      "args": ["-y", "@selfagency/git-mcp", "--repo-path", "${workspaceFolder}"]
    }
  }
}

配置

所有配置均通过环境变量进行。请在 MCP 客户端配置中传入这些变量:

变量默认值描述
GIT_REPO_PATH—默认仓库路径(也可使用 --repo-path CLI 参数)
GIT_ALLOW_NO_VERIFYfalse允许在提交/推送时使用 --no-verify(绕过钩子)
GIT_ALLOW_FORCE_PUSHfalse允许推送时使用 --force
GIT_ALLOW_FLOW_HOOKSfalse允许执行 git_flow 钩子和筛选器
GIT_AUTO_SIGN_COMMITSfalse自动签署每次提交
GIT_AUTO_SIGN_TAGSfalse自动签署每个标签
GIT_SIGNING_KEY—默认 GPG 密钥 ID 或 SSH 密钥路径
GIT_SIGNING_FORMAT—签署格式:openpgp、ssh 或 x509
GIT_ALLOW_BUTfalse启用 GitButler 感知(git_but_check)
GIT_ALLOW_JJfalse启用 Jujutsu 感知(git_jj_check)
GIT_ALLOW_TANGLEDfalse启用 Tangled 感知(git_tangled_check)
GIT_ALLOW_ENTIREfalse启用 Entire 感知(git_entire_check)
BUT_BINARYbut覆盖 but 可执行文件路径
JJ_BINARYjj覆盖 jj 可执行文件路径
ENTIRE_BINARYentire覆盖 entire 可执行文件路径
GITHUB_TOKEN—git_pr REST 回退所用的 GitHub 令牌
GITLAB_TOKEN—git_pr REST 回退所用的 GitLab 令牌
FORGEJO_TOKEN—git_pr REST 回退所用的 Forgejo/Gitea 令牌
BITBUCKET_TOKEN—git_pr REST 回退所用的 Bitbucket 令牌
GIT_FORGE_PROVIDER—为可自托管实例指定的 Forge 提供商

工具参考

工具按领域分组。每个根工具都接受一个 action 参数,用于选择操作。标记为默认的操作在省略 action 时会被使用。

上下文(git_context)
操作描述
summary(默认) 仓库完整快照:分支、上游、待处理更改和正在进行的操作
search搜索提交历史和工作树内容
get_config读取 Git 配置值
set_config写入 Git 配置值
aliases列出所有已配置的 Git 别名
状态(git_status)
操作描述
status(默认) 工作树和分支状态
diff未暂存、已暂存或引用之间的差异
diff_main分支相对 main(或可配置的基准分支)的分叉点以来的更改
历史记录(git_history)
操作描述
log(默认) 提交日志,支持筛选、分页、修订范围和路径规格
show查看单个提交
blame逐行显示文件的归属信息
reflog完整的引用日志——恢复记录
lg紧凑的图形日志(--oneline --graph --decorate --all)
who贡献者简要日志(支持可选的 file_path)
提交(git_commits)
操作描述
add暂存文件或代码块
restore丢弃工作区更改
unstage从暂存区移除文件
commit创建提交,支持消息、签名和作者标志
amend修改上一次提交,但不编辑提交消息
wip暂存所有更改,并以消息 WIP 创建提交
revert为指定引用创建还原提交
undo软重置上一次提交(reset --soft HEAD~1)
reset重置 HEAD,可配置模式(soft/mixed/hard)
nuke硬重置上一次提交——需要 confirm=true
分支(git_branches)
操作描述
list(默认) 列出本地和远程分支
create创建分支
delete删除分支
rename重命名分支
checkout切换到分支或引用
set_upstream设置或更新跟踪上游
recent按提交者日期排序的近期分支
远程仓库(git_remotes)
操作描述
list(默认) 列出已配置的远程仓库
manage添加、移除或重命名远程仓库
fetch从远程仓库获取
pull拉取(获取 + 合并/变基)
push推送到远程仓库;支持 force_with_lease
工作区(git_workspace)
操作描述
stash暂存并弹出/应用/丢弃/列出/显示储藏条目
stash_all一次操作中暂存已跟踪和未跟踪的更改
rebase开始、继续、中止或跳过变基
cherry_pick应用一个或多个提交;支持继续/中止/跳过
merge合并分支,支持完整的标志控制
bisect二分查找回归问题(start、good、bad、reset、log)
tag创建、列出、删除或推送标签;支持 GPG/SSH 签名
worktree添加、列出、移除、锁定、解锁、清理或修复关联工作树
submodule添加、更新、同步、初始化、取消初始化和列出子模块
Git Flow(git_flow)

驱动 git-flow-next CLI,必须先安装并确保在 PATH 中 (brew install git-flow-next,或访问发布页面)。 设置 GIT_FLOW_BINARY 可覆盖路径。如果找不到二进制文件,工具会提示安装方法,而不会含糊地失败。

操作描述
init使用 git-flow 分支约定初始化仓库
overview显示当前工作流状态和活跃分支
config读取或写入 git-flow 配置值
topic通用主题分支操作(start、finish、publish、track)
control恢复或中止正在进行的 finish 或 update

标志的适用范围限定于目标动词:worktree 和 worktree_path 适用于 start 和 checkout, 而 keep_worktree 和 force_worktree 适用于 finish 和 delete。如果不匹配,会引发错误, 而不是被静默丢弃。完整参数列表请参见工具参考。

Worktree(git_worktree)

有两种后端。按路径指定的操作驱动原生 git worktree,只需要 git; 按分支指定的 flow_* 操作驱动 git flow worktree,按分支名称定位工作树, 根据 gitflow.worktreePath 模板计算路径,并标记来源,以便清理时区分由 git-flow 创建的工作树(会被移除) 和手动创建的工作树(会分离,未提交的工作保留)。

操作描述
add、list、remove、lock、unlock、prune、repair原生 git worktree,按路径识别
flow_path、flow_add、flow_remove、flow_listgit flow worktree,按分支识别

请参见工具参考。

LFS(git_lfs)
操作描述
track将跟踪模式添加到 .gitattributes
untrack移除跟踪模式
ls-files列出受 LFS 跟踪的文件
status显示 LFS 状态
pull拉取 LFS 对象
push推送 LFS 对象
install在仓库中安装 LFS 钩子
migrate-import将现有历史记录迁移到 LFS
migrate-export将 LFS 历史记录迁回普通对象
文档(git_docs)
操作描述
search搜索 git-scm.com 上的文档
man获取并返回 Git 手册页
历史重写(git_rewrite)
操作描述
reword更改一条提交消息(HEAD 会就地 amend;任意提交通过 filter-branch 修改)
squash将最近 N 条提交合并为一条(需要 confirm=true)
rewrite-messages通过 SHA→消息映射表重写某个范围内的消息(需要 confirm=true)
backup重写前创建 rewrite-backup/<name> 分支
restore硬重置到备份分支(需要 confirm=true)
分析(git_analytics)
ActionDescription
contributors每位作者的提交数、增减行数、首次/最近活动时间
churn文件热点(提交最多/变更行数最多的文件)
activity每日提交频率
summary分支/标签数量、提交总数、贡献最多者、最早/最新提交
file-stats文件类型分布、最大文件、最近修改的文件
拉取请求(git_pr)
ActionDescription
create在检测到的托管平台(GitHub、GitLab、Forgejo、Gitea、Bitbucket)上创建 PR/MR
list列出 PR/MR(按状态筛选)
merge合并 PR/MR(方式:merge/squash/rebase)

如果本机已安装提供方 CLI(gh/glab/tea),则使用该 CLI;否则使用带有 *_TOKEN 环境变量的 REST API。根据 origin 远程自动检测提供方;可自托管实例使用 GIT_FORGE_PROVIDER。

外部 VCS 感知
ToolDescription
git_but_check检测 GitButler but CLI;优先使用 but mcp/but,并在 git-mcp 工具前运行 but teardown
git_jj_check检测 Jujutsu jj CLI 和 .jj/ 管理;对于由 jj 管理的仓库,优先使用 jj CLI
git_tangled_check检测 Tangled 托管;git 传输可用,PR 通过 Web UI 操作
git_entire_check检测 Entire CLI 和 .entire/ 管理;使用 entire 查询会话/上下文
健康检查(git_ping)

返回服务状态。可用于确认服务可访问。


MCP 资源

可通过 URI 寻址的只读快照(支持订阅):

Resource URIContent
git+repo://status/{repo_path}工作树状态(JSON)
git+repo://log/{repo_path}最近提交日志(JSON)
git+repo://branches/{repo_path}分支列表(JSON)
git+repo://diff/{repo_path}未暂存和已暂存的差异(JSON)

捆绑的 Agent 技能

git-mcp 在 skills/git-mcp-workflow/ 中附带一项 Agent 技能,可指导任何兼容 skills-npm 的 Agent 使用 MCP 工具界面,而不是运行原始 git CLI 命令。该技能涵盖:

  • LLM 不应使用 Git CLI 的原因(引号处理隐患、静默失败)
  • 先检查再修改的工作流规则
  • 撤销和恢复操作的安全顺序
  • 完整的已注册工具界面及操作参考
  • 工作流指南:功能分支、变基、恢复、工作树、回移、发布打标签、Git Flow、合并
  • 以 MCP 工具为基础讲解 Git 概念
安装技能

如果你的 Agent 支持 skills-npm:

npm install @selfagency/git-mcp   # or pnpm/yarn
npx skills-npm

或者添加到项目的 package.json,使其自动运行:

{
  "scripts": {
    "prepare": "skills-npm"
  }
}

然后添加到 .gitignore:

skills/npm-*

安全

  • 所有会修改数据的工具都在其 MCP 注解中设置了 destructiveHint: true
  • git_commits action=reset mode=hard 需要设置 confirm=true
  • git_commits action=nuke 需要设置 confirm=true
  • 除非设置了 GIT_ALLOW_FORCE_PUSH=true,否则禁用强制推送(--force);force_with_lease 始终可用
  • 除非设置了 GIT_ALLOW_NO_VERIFY=true,否则禁用跳过钩子(--no-verify)
  • 除非设置了 GIT_ALLOW_FLOW_HOOKS=true,否则禁用 git_flow 钩子和过滤器执行
  • 路径会根据仓库根目录进行验证,并拒绝目录遍历尝试
  • 响应中绝不会包含凭据和令牌

开发

# Clone and install
git clone https://github.com/selfagency/git-mcp.git
cd git-mcp
pnpm install

# Run in development mode (hot reload)
pnpm dev

# Build
pnpm build

# Run tests
pnpm test

# Type check
pnpm typecheck

# Lint
pnpm lint

# Docs (dev server)
pnpm docs:dev

# Docs (build)
pnpm docs:build

许可证

MIT © Daniel Sieradski

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。