# @selfagency/git-mcp

A Git MCP server that doesn't suck

- **Type:** MCP server
- **Trust:** 85/100 (A), scored on the package rubric
- **Verification:** verified (build provenance)
- **Version:** 0.4.2
- **Author:** Daniel Sieradski
- **License:** MIT
- **npm:** @selfagency/git-mcp
- **Source:** https://github.com/selfagency/git-mcp
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

85/100 (A), scored on the package rubric
- Publisher verified: no
- Build provenance: verified attestation
- npm trusted publishing (OIDC): yes
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** warnings
- **Scanned:** 2026-10-16T05:48:24.390Z
- **Version scanned:** 0.4.2
- **CVEs:** none found by OSV at scan time

## Tools

27 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `git_docs` — Search and browse official Git documentation from git-scm.com. Use action="search" to find relevant commands and concepts by keyword. Use action="man" to fetch 
- `git_analytics` — Read-only repository analytics computed from local git history. Use action=contributors|churn|activity|summary|file-stats.
- `git_but_check` — Detects whether the GitButler `but` CLI is available and returns guidance on whether to prefer `but mcp` / `but` commands over git-mcp tools. When `but` is pres
- `git_jj_check` — Detect whether the Jujutsu `jj` CLI is available and whether the repository is jj-managed (has a .jj/ directory). When jj-managed, agents should prefer the `jj`
- `git_tangled_check` — Detect whether the repository origin remote points at a Tangled host (tangled.org or a self-hosted knot). Tangled is a decentralized Git host on the AT Protocol
- `git_entire_check` — Detect whether the Entire CLI is available and whether the repository is Entire-managed (has a .entire/ directory). When managed, agents should use the `entire`
- `git_pr` — Create, list, or merge pull requests / merge requests on the detected forge provider (GitHub, GitLab, Forgejo, Gitea, Bitbucket). Uses the provider CLI (gh/glab
- `git_flow` — Drives the git-flow-next CLI. The CLI owns the workflow semantics — the finish state machine, conflict recovery, and worktree lifecycle — so it must be installe
- `git_status` — Status and diff tool. Use action=status|diff|diff_main to inspect working tree and branch deltas.
- `git_history` — History tool. Use action=log|show|reflog|blame|lg|who to inspect commits, refs, and contributors.
- `git_commits` — Commit-area tool. Use action=add|restore|commit|reset|revert|undo|nuke|wip|unstage|amend.
- `git_branches` — Branch tool. Use action=list|create|delete|rename|checkout|set_upstream|recent for branch workflows.
- `git_remotes` — Remote tool. Use action=list|manage|fetch|pull|push for network/transport operations.
- `git_workspace` — Workspace tool for stash/rebase/cherry-pick/merge/bisect/tag/worktree/submodule actions plus stash_all shortcut.
- `git_context` — Context/config tool. Use action=summary|search|get_config|set_config|aliases for repo context operations.
- `git_lfs` — Manage Git Large File Storage (LFS). Supports tracking/untracking file patterns, listing LFS-tracked files and status, pulling/pushing LFS objects, installing L
- `git_rewrite` — Rewrite commit history. Use action=reword|squash|rewrite-messages|backup|restore. History rewriting changes commit hashes and requires force-push; create a back
- `git_workflow` — Run named multi-step Git workflows with resumable lifecycle controls. Use action=start|status|continue|abort|list with workflow families such as snapshot, repla
- `git_stash` — Stash, list, apply, pop, or drop stashes.
- `git_rebase` — Rebase: start, continue, abort, or skip.
- `git_cherry_pick` — Cherry-pick: start, continue, or abort.
- `git_merge` — Merge: start, continue, or abort.
- `git_bisect` — Bisect: start, good, bad, skip, run, or reset.
- `git_tag` — Tag: list, create, or delete.
- `git_worktree` — Worktrees, two ways. Path-addressed (add, remove, lock, unlock, prune, repair) drives plain git worktree and needs nothing but git. Branch-addressed (flow_add, 
- `git_submodule` — Submodule: add, list, update, sync, or set_branch.
- `git_ping` — Returns a simple response to verify the server is running.

## Install

**Verdict: install** — No blocking findings and no open coverage gaps — safe to install as configured.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"git\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@selfagency/git-mcp\"\n      ],\n      \"env\": {\n        \"GIT_SIGNING_KEY\": \"<YOUR_GIT_SIGNING_KEY>\"\n      }\n    }\n  }\n}"
```
**Credentials it will ask for** (names only — Forge never holds a value):
- `GIT_SIGNING_KEY` — Git Signing Key (optional)
Placeholders only. Forge never holds, brokers, or transmits a credential value — replace each <YOUR_NAME> in your own config file. Do not send a value back to Forge; no Forge endpoint accepts one.
- This entry needs 1 credential (0 required). The generated config carries placeholders, so it will fail in the editor rather than at runtime if they are left unset.

## Blast radius

Moderate blast radius — holds an api key; runs on your machine.
- Floor 23, ceiling 23 (tier: moderate)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/%40selfagency%2Fgit-mcp
- Install plan: https://forgeregistry.com/api/v1/packages/%40selfagency%2Fgit-mcp/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/%40selfagency%2Fgit-mcp
- HTML page: https://forgeregistry.com/registry/%40selfagency%2Fgit-mcp
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
