mcpField
G
Git MCP

Git MCP

Local
github.com/selfagencyVersion Control0Updated 2w ago

About Git MCP

Git MCP exposes Git operations to coding agents and other MCP clients. Its tools cover everyday workflows, advanced history operations, repository analytics, and pull requests, with confirmation controls for destructive actions.

Key features

  1. 01Git workflows across 18 tools
  2. 02Safety confirmations for destructive actions
  3. 03GPG and SSH commit signing
  4. 04Git LFS and Git Flow support
  5. 05Repository analytics and pull requests
  6. 06Read-only status, log, branch, and diff resources

Use cases

  1. 01Inspect and manage repository changes
  2. 02Recover from or rewrite commit history
  3. 03Create and manage worktrees
  4. 04Review repository activity and handle pull requests

MCP support

Provides MCP tools for Git operations and read-only resources for repository status, logs, branches, and diffs. It supports configuration with MCP clients including GitHub Copilot, Claude Code, Cursor, and OpenAI Codex.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"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>"
}
}
}
}
Run commandnpx -y @selfagency/git-mcp
Environment variables to set
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_KEYSecretDefault 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.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@selfagency/git-mcp0.4.2

Tools

12

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
repo_pathstringNoAbsolute path to the local Git repository. If omitted, falls back to the server default set via the GIT_REPO_PATH environment variable or --repo-path CLI argument.
actionenumNostatus | diff | diff_main
modeenumNounstaged | staged | refs
from_refstringNo
to_refstringNo
filteredbooleanNo
base_branchstringNo
response_formatenumNoOutput format for the response.markdown | json

Details

From the project README

git-mcp

CI codecov NPM Version

A Git MCP server that doesn't suck

Exposes the full Git workflow to any MCP-compatible AI agent — inspect, write, branch, remote, stash, rebase, LFS, git-flow, documentation lookup, and more. Designed to be safe by default, composable, and fast. Powered by simple-git.

Built for coding agents in tools like GitHub Copilot, Claude Code, Cursor, and OpenAI Codex, while remaining compatible with any MCP client that can call tools and resources.


Features

  • 18 tools with 80+ actions covering everyday Git workflows, advanced recovery, history rewriting, repository analytics, forge pull requests, and external VCS awareness
  • Safety-first — destructive operations require explicit confirmation; force push and hook bypass are opt-in via server config
  • GPG/SSH signing for commits and tags, with server-level auto-sign support
  • Git LFS — track patterns, manage objects, install hooks, migrate history
  • Git Flow — drives the git-flow-next CLI, so the finish state machine, conflict recovery, and worktree lifecycle stay correct as the CLI evolves. Preset init, overview, config CRUD, generalized topic actions, and classic feature/release/hotfix/support aliases
  • Documentation lookup — search git-scm.com and fetch man pages directly from the LLM
  • MCP Resources — URI-addressable read-only views of status, log, branches, and diff
  • Bundled agent skill — skills/git-mcp-workflow/ documents MCP-first Git workflows, recovery, worktrees, releases, and advanced operations for AI agents and coding agents; installable via skills-npm and skill.sh
  • External VCS awareness — git_but_check / git_jj_check detect GitButler and Jujutsu and guide agents to prefer their native CLIs/MCP (with but teardown guidance) over git-mcp tools when appropriate
  • History rewrite — git_rewrite: reword, squash, rewrite-messages, and backup/restore for safe commit-history rewriting
  • Repository analytics — git_analytics: contributors, churn, activity, summary, and file-stats computed from local git history
  • Pull requests — git_pr: create/list/merge PRs/MRs on GitHub, GitLab, Forgejo, Gitea, and Bitbucket via provider CLI or REST API
  • Tangled & Entire awareness — git_tangled_check / git_entire_check detect Tangled hosting and Entire session/context management
  • Multi-repo — pass repo_path per-call or configure a server-level default
  • Worktrees — git_worktree: plain git worktree by path, or branch-addressed worktrees via git flow worktree with path templates and provenance-aware cleanup
  • Cross-platform — macOS, Linux, Windows (Git for Windows), all covered by CI

Quick Start

npx (no install)
npx @selfagency/git-mcp --repo-path /path/to/your/repo
Install globally
npm install -g @selfagency/git-mcp
git-mcp --repo-path /path/to/your/repo
Claude Desktop

Add to ~/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)

Add to .vscode/mcp.json in your project:

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

Configuration

All configuration is via environment variables. Pass them in your MCP client config:

VariableDefaultDescription
GIT_REPO_PATH—Default repository path (also: --repo-path CLI arg)
GIT_ALLOW_NO_VERIFYfalseAllow --no-verify on commit/push (bypasses hooks)
GIT_ALLOW_FORCE_PUSHfalseAllow --force on push
GIT_ALLOW_FLOW_HOOKSfalseAllow git_flow hooks and filters to execute
GIT_AUTO_SIGN_COMMITSfalseAutomatically sign every commit
GIT_AUTO_SIGN_TAGSfalseAutomatically sign every tag
GIT_SIGNING_KEY—Default GPG key ID or SSH key path
GIT_SIGNING_FORMAT—Signing format: openpgp, ssh, or x509
GIT_ALLOW_BUTfalseEnable GitButler awareness (git_but_check)
GIT_ALLOW_JJfalseEnable Jujutsu awareness (git_jj_check)
GIT_ALLOW_TANGLEDfalseEnable Tangled awareness (git_tangled_check)
GIT_ALLOW_ENTIREfalseEnable Entire awareness (git_entire_check)
BUT_BINARYbutOverride the but executable path
JJ_BINARYjjOverride the jj executable path
ENTIRE_BINARYentireOverride the entire executable path
GITHUB_TOKEN—GitHub token for git_pr REST fallback
GITLAB_TOKEN—GitLab token for git_pr REST fallback
FORGEJO_TOKEN—Forgejo/Gitea token for git_pr REST fallback
BITBUCKET_TOKEN—Bitbucket token for git_pr REST fallback
GIT_FORGE_PROVIDER—Explicit forge provider for self-hosted instances

Tool Reference

Tools are grouped by domain. Each root tool takes an action parameter that selects the operation. Where an action is marked as default, omitting action will use it.

Context (git_context)
ActionDescription
summary(default) Full repo snapshot: branch, upstream, pending changes, in-progress operations
searchSearch commit history and working tree content
get_configRead a Git config value
set_configWrite a Git config value
aliasesList all configured git aliases
Status (git_status)
ActionDescription
status(default) Working tree and branch status
diffUnstaged, staged, or ref-to-ref diff
diff_mainChanges from branch divergence point vs main (or configurable base branch)
History (git_history)
ActionDescription
log(default) Commit log with filtering, pagination, revision ranges, and pathspecs
showInspect a single commit
blameLine-by-line attribution for a file
reflogFull reflog — the recovery ledger
lgCompact graph log (--oneline --graph --decorate --all)
whoContributor shortlog (supports optional file_path)
Commits (git_commits)
ActionDescription
addStage files or hunks
restoreDiscard working tree changes
unstageRemove files from the staging area
commitCreate a commit with message, signing, and author flags
amendAmend the last commit without editing the message
wipStage all changes and commit with message WIP
revertCreate a revert commit for a given ref
undoSoft-reset the last commit (reset --soft HEAD~1)
resetReset HEAD with configurable mode (soft/mixed/hard)
nukeHard-reset the last commit — requires confirm=true
Branches (git_branches)
ActionDescription
list(default) Local and remote branch listing
createCreate a branch
deleteDelete a branch
renameRename a branch
checkoutSwitch to a branch or ref
set_upstreamSet or update tracking upstream
recentRecent branches sorted by committer date
Remotes (git_remotes)
ActionDescription
list(default) List configured remotes
manageAdd, remove, or rename a remote
fetchFetch from a remote
pullPull (fetch + merge/rebase)
pushPush to a remote; force_with_lease supported
Workspace (git_workspace)
ActionDescription
stashStash and pop/apply/drop/list/show stash entries
stash_allStash tracked and untracked changes in one operation
rebaseStart, continue, abort, or skip a rebase
cherry_pickApply one or more commits; supports continue/abort/skip
mergeMerge branches with full flag control
bisectBinary search for a regression (start, good, bad, reset, log)
tagCreate, list, delete, or push tags; supports GPG/SSH signing
worktreeAdd, list, remove, lock, unlock, prune, or repair linked worktrees
submoduleAdd, update, sync, init, deinit, and list submodules
Git Flow (git_flow)

Drives the git-flow-next CLI, which must be installed and on PATH (brew install git-flow-next, or the releases page). Set GIT_FLOW_BINARY to override the path. When the binary is missing, the tool returns an install hint rather than failing opaquely.

OperationDescription
initInitialize a repository with git-flow branch conventions
overviewShow the current flow state and active branches
configRead or write git-flow configuration values
topicGeneralized topic branch action (start, finish, publish, track)
controlResume or abort an in-progress finish or update

Flags are scoped to the target verb: worktree and worktree_path apply to start and checkout, while keep_worktree and force_worktree apply to finish and delete. A mismatch raises instead of being silently dropped. See the tool reference for the full parameter list.

Worktree (git_worktree)

Two backends. Path-addressed actions drive plain git worktree and need nothing but git; branch-addressed flow_* actions drive git flow worktree, which addresses worktrees by branch name, computes paths from the gitflow.worktreePath template, and tags provenance so cleanup can tell a git-flow-created worktree (removed) from a hand-made one (detached, uncommitted work preserved).

ActionDescription
add, list, remove, lock, unlock, prune, repairPlain git worktree, identified by path
flow_path, flow_add, flow_remove, flow_listgit flow worktree, identified by branch

See the tool reference.

LFS (git_lfs)
ActionDescription
trackAdd a tracking pattern to .gitattributes
untrackRemove a tracking pattern
ls-filesList tracked LFS files
statusShow LFS status
pullPull LFS objects
pushPush LFS objects
installInstall LFS hooks in the repository
migrate-importMigrate existing history to LFS
migrate-exportMigrate LFS history back to plain objects
Documentation (git_docs)
ActionDescription
searchSearch git-scm.com for documentation
manFetch and return a Git man page
History Rewrite (git_rewrite)
ActionDescription
rewordChange one commit's message (HEAD amends in place; arbitrary via filter-branch)
squashCombine the last N commits into one (requires confirm=true)
rewrite-messagesRewrite messages across a range via a SHA→message map (requires confirm=true)
backupCreate a rewrite-backup/<name> branch before rewriting
restoreHard-reset to a backup branch (requires confirm=true)
Analytics (git_analytics)
ActionDescription
contributorsPer-author commits, +/- lines, first/last activity
churnFile hotspots (most commits / most lines changed)
activityCommit frequency per day
summaryBranch/tag counts, total commits, top contributors, oldest/newest commit
file-statsFile-type breakdown, largest files, recently modified
Pull Requests (git_pr)
ActionDescription
createCreate a PR/MR on the detected forge (GitHub, GitLab, Forgejo, Gitea, Bitbucket)
listList PRs/MRs (state filter)
mergeMerge a PR/MR (method: merge/squash/rebase)

Uses the provider CLI (gh/glab/tea) when installed locally, otherwise the REST API with a *_TOKEN env var. Provider auto-detected from the origin remote; self-hosted instances use GIT_FORGE_PROVIDER.

External VCS Awareness
ToolDescription
git_but_checkDetect GitButler but CLI; prefer but mcp/but, run but teardown before git-mcp tools
git_jj_checkDetect Jujutsu jj CLI and .jj/ management; prefer jj CLI for jj-managed repos
git_tangled_checkDetect Tangled hosting; git transport works, PRs via web UI
git_entire_checkDetect Entire CLI and .entire/ management; use entire for session/context queries
Health Check (git_ping)

Returns server status. Useful for confirming the server is reachable.


MCP Resources

URI-addressable read-only snapshots (subscribe-capable):

Resource URIContent
git+repo://status/{repo_path}Working tree status (JSON)
git+repo://log/{repo_path}Recent commit log (JSON)
git+repo://branches/{repo_path}Branch list (JSON)
git+repo://diff/{repo_path}Unstaged + staged diff (JSON)

Bundled Agent Skill

git-mcp ships a bundled agent skill at skills/git-mcp-workflow/ that teaches any skills-npm-compatible agent to use the MCP tool surface instead of running raw git CLI commands. The skill covers:

  • Why LLMs must not use the Git CLI (quoting hazards, silent failures)
  • Inspect-before-mutate workflow rules
  • Safety order for undo and recovery operations
  • Full registered tool surface with action reference
  • Workflow playbooks: feature branch, rebase, recovery, worktree, backport, release tagging, Git Flow, merge
  • Git concept explanations anchored to MCP tools
Installing the skill

If your agent supports skills-npm:

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

Or add to your project's package.json so it runs automatically:

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

Then add to .gitignore:

skills/npm-*

Safety

  • All mutating tools have destructiveHint: true in their MCP annotations
  • git_commits action=reset mode=hard requires confirm=true
  • git_commits action=nuke requires confirm=true
  • Force push (--force) is disabled unless GIT_ALLOW_FORCE_PUSH=true; force_with_lease is always available
  • Hook bypass (--no-verify) is disabled unless GIT_ALLOW_NO_VERIFY=true
  • git_flow hook and filter execution is disabled unless GIT_ALLOW_FLOW_HOOKS=true
  • Paths are validated against the repository root — traversal attempts are rejected
  • Credentials and tokens are never included in responses

Development

# 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

License

MIT © Daniel Sieradski

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.