Git MCP について
Git MCPは、コーディングエージェントやほかのMCPクライアントにGit操作を提供します。日常的なワークフローから高度な履歴操作、リポジトリ分析、プルリクエストまで扱い、破壊的な操作には確認を求めます。
主な機能
- 0118ツールによるGitワークフロー
- 02破壊的操作の確認
- 03GPGおよびSSHによるコミット署名
- 04Git LFSとGit Flowのサポート
- 05リポジトリ分析とプルリクエスト
- 06状態、ログ、ブランチ、差分の読み取り専用リソース
活用シーン
- 01リポジトリの変更確認と管理
- 02コミット履歴の復旧や書き換え
- 03worktreeの作成と管理
- 04リポジトリ活動の分析とプルリクエスト対応
MCP 対応
Git操作用のMCPツールと、リポジトリの状態、ログ、ブランチ、差分を示す読み取り専用リソースを提供します。GitHub Copilot、Claude Code、Cursor、OpenAI CodexなどのMCPクライアントに設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @selfagency/git-mcpGIT_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
12掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| repo_path | string | いいえ | ローカル Git リポジトリの絶対パスです。省略した場合は、GIT_REPO_PATH 環境変数または --repo-path CLI 引数で設定されたサーバーのデフォルト値が使用されます。 |
| action | enum | いいえ | status | diff | diff_main |
| mode | enum | いいえ | unstaged | staged | refs |
| from_ref | string | いいえ | |
| to_ref | string | いいえ | |
| filtered | boolean | いいえ | |
| base_branch | string | いいえ | |
| response_format | enum | いいえ | レスポンスの出力形式。markdown | json |
詳細
git-mcp
使い勝手のよい Git MCP サーバー
MCP 対応のあらゆる AI エージェントで、Git のワークフロー全体を利用できます。確認、書き込み、ブランチ操作、リモート操作、スタッシュ、リベース、LFS、git-flow、ドキュメント検索などに対応しています。デフォルトで安全に利用でき、組み合わせやすく、高速に動作するよう設計されています。simple-git を基盤としています。
GitHub Copilot、Claude Code、Cursor、OpenAI Codex などのツールを使うコーディングエージェント向けに開発されています。また、ツールやリソースを呼び出せるあらゆる MCP クライアントとの互換性も備えています。
特長
- 18 個のツールと 80 以上のアクションで、日常的な Git ワークフロー、高度な復旧、履歴の書き換え、リポジトリ分析、フォージのプルリクエスト、外部 VCS の認識に対応
- 安全性を最優先 — 破壊的な操作には明示的な確認が必要です。強制プッシュとフックのバイパスは、サーバー設定でオプトインできます
- コミットとタグの GPG/SSH 署名に対応し、サーバーレベルの自動署名もサポート
- Git LFS — パターンの追跡、オブジェクトの管理、フックのインストール、履歴の移行
- Git Flow — git-flow-next CLI を利用するため、CLI の進化に合わせて、完了時のステートマシン、競合からの復旧、ワークツリーのライフサイクルを正しく維持します。プリセットによる初期化、概要表示、設定の CRUD、汎用的なトピック操作、従来の feature/release/hotfix/support エイリアスに対応
- ドキュメント検索 — git-scm.com を検索し、LLM から man ページを直接取得
- MCP リソース — ステータス、ログ、ブランチ、差分を URI で指定できる読み取り専用ビュー
- エージェント用スキルを同梱 —
skills/git-mcp-workflow/には、MCP を優先する Git ワークフロー、復旧、ワークツリー、リリース、高度な操作について、AI エージェントとコーディングエージェント向けの説明があります。skills-npmと skill.sh からインストールできます - 外部 VCS の認識 —
git_but_check/git_jj_checkが GitButler と Jujutsu を検出し、適切な場合には git-mcp のツールよりも、それぞれのネイティブ CLI/MCP(but teardownの案内を含む)を優先するようエージェントを導きます - 履歴の書き換え —
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 クライアントの設定に渡してください。
| Variable | Default | Description |
|---|---|---|
GIT_REPO_PATH | — | デフォルトのリポジトリパス(--repo-path CLI 引数でも指定できます) |
GIT_ALLOW_NO_VERIFY | false | コミット/プッシュ時に --no-verify を許可します(フックをバイパスします) |
GIT_ALLOW_FORCE_PUSH | false | プッシュ時に --force を許可します |
GIT_ALLOW_FLOW_HOOKS | false | git_flow のフックとフィルターの実行を許可します |
GIT_AUTO_SIGN_COMMITS | false | すべてのコミットに自動的に署名します |
GIT_AUTO_SIGN_TAGS | false | すべてのタグに自動的に署名します |
GIT_SIGNING_KEY | — | デフォルトの GPG キー ID または SSH キーのパス |
GIT_SIGNING_FORMAT | — | 署名形式:openpgp、ssh、または x509 |
GIT_ALLOW_BUT | false | GitButler の認識機能を有効にします(git_but_check) |
GIT_ALLOW_JJ | false | Jujutsu の認識機能を有効にします(git_jj_check) |
GIT_ALLOW_TANGLED | false | Tangled の認識機能を有効にします(git_tangled_check) |
GIT_ALLOW_ENTIRE | false | Entire の認識機能を有効にします(git_entire_check) |
BUT_BINARY | but | but 実行ファイルのパスを上書きします |
JJ_BINARY | jj | jj 実行ファイルのパスを上書きします |
ENTIRE_BINARY | entire | 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 | — | セルフホスト型インスタンス用の明示的なフォージプロバイダー |
ツールリファレンス
ツールはドメイン別にグループ化されています。各ルートツールには、操作を選択する action パラメーターがあります。アクションにデフォルトの指定がある場合、action を省略するとそのアクションが使用されます。
コンテキスト(git_context)
| Action | Description |
|---|---|
summary | (デフォルト) リポジトリの全体的なスナップショット:ブランチ、上流、保留中の変更、進行中の操作 |
search | コミット履歴と作業ツリーの内容を検索します |
get_config | Git の設定値を読み取ります |
set_config | Git の設定値を書き込みます |
aliases | 設定済みのすべての Git エイリアスを一覧表示します |
ステータス(git_status)
| Action | Description |
|---|---|
status | (デフォルト) 作業ツリーとブランチのステータス |
diff | ステージされていない変更、ステージ済みの変更、または参照間の差分 |
diff_main | ブランチの分岐点から main(または設定可能なベースブランチ)までの変更 |
履歴(git_history)
| アクション | 説明 |
|---|---|
log | (default) フィルタリング、ページネーション、リビジョン範囲、パス指定に対応したコミットログ |
show | 単一のコミットを調べる |
blame | ファイルの行ごとの帰属を表示する |
reflog | 完全な reflog — 復旧用の記録 |
lg | コンパクトなグラフ形式のログ(--oneline --graph --decorate --all) |
who | コントリビューターの簡易ログ(オプションの file_path に対応) |
コミット(git_commits)
| アクション | 説明 |
|---|---|
add | ファイルまたはハンクをステージする |
restore | 作業ツリーの変更を破棄する |
unstage | ステージングエリアからファイルを削除する |
commit | メッセージ、署名、作成者のフラグを指定してコミットを作成する |
amend | メッセージを編集せずに直前のコミットを修正する |
wip | すべての変更をステージし、メッセージ WIP でコミットする |
revert | 指定した ref のリバートコミットを作成する |
undo | 直前のコミットをソフトリセットする(reset --soft HEAD~1) |
reset | 設定可能なモード(soft/mixed/hard)で HEAD をリセットする |
nuke | 直前のコミットをハードリセットする — confirm=true が必要 |
ブランチ(git_branches)
| アクション | 説明 |
|---|---|
list | (default) ローカルブランチとリモートブランチの一覧 |
create | ブランチを作成する |
delete | ブランチを削除する |
rename | ブランチ名を変更する |
checkout | ブランチまたは ref に切り替える |
set_upstream | 追跡先の upstream を設定または更新する |
recent | コミッターの日付順に並べた最近のブランチ |
リモート(git_remotes)
| アクション | 説明 |
|---|---|
list | (default) 設定済みリモートの一覧 |
manage | リモートを追加、削除、または名前変更する |
fetch | リモートからフェッチする |
pull | プルする(フェッチ + マージ/リベース) |
push | リモートにプッシュする。force_with_lease に対応 |
ワークスペース(git_workspace)
| アクション | 説明 |
|---|---|
stash | stash エントリを stash し、pop/apply/drop/list/show する |
stash_all | 追跡対象と未追跡の変更を1回の操作で stash する |
rebase | リベースを開始、続行、中止、またはスキップする |
cherry_pick | 1つ以上のコミットを適用する。続行/中止/スキップに対応 |
merge | すべてのフラグを指定してブランチをマージする |
bisect | 回帰を二分探索する(start、good、bad、reset、log) |
tag | タグを作成、一覧表示、削除、またはプッシュする。GPG/SSH 署名に対応 |
worktree | リンクされた 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)
バックエンドは2種類あります。パスを指定する操作は通常の 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_list | git 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 の man ページを取得して返します |
履歴の書き換え(git_rewrite)
| 操作 | 説明 |
|---|---|
reword | 1つのコミットメッセージを変更します(HEAD はその場で修正し、任意のコミットは filter-branch を使用します) |
squash | 直近の N 件のコミットを1つにまとめます(confirm=true が必要です) |
rewrite-messages | SHA→メッセージのマップを使って範囲内のメッセージを書き換えます(confirm=true が必要です) |
backup | 書き換え前に rewrite-backup/<name> ブランチを作成します |
restore | バックアップブランチにハードリセットします(confirm=true が必要です) |
アナリティクス(git_analytics)
| アクション | 説明 |
|---|---|
contributors | 作成者ごとのコミット数、変更行数(追加/削除)、最初と最後のアクティビティ |
churn | ファイルのホットスポット(コミット数最多/変更行数最多) |
activity | 日ごとのコミット頻度 |
summary | ブランチ/タグ数、コミット総数、主なコントリビューター、最古/最新のコミット |
file-stats | ファイル種別の内訳、最大のファイル、最近変更されたファイル |
プルリクエスト(git_pr)
| アクション | 説明 |
|---|---|
create | 検出されたホスティングサービス(GitHub、GitLab、Forgejo、Gitea、Bitbucket)で PR/MR を作成します |
list | PR/MR を一覧表示します(状態で絞り込み) |
merge | PR/MR をマージします(方式:merge/squash/rebase) |
ローカルにインストールされている場合はプロバイダーの CLI(gh/glab/tea)を使用し、そうでない場合は *_TOKEN 環境変数を使用して REST API を利用します。プロバイダーは origin リモートから自動検出されます。セルフホストインスタンスでは GIT_FORGE_PROVIDER を使用します。
外部 VCS の認識
| ツール | 説明 |
|---|---|
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 はウェブ UI 経由です |
git_entire_check | Entire CLI と .entire/ による管理を検出します。セッション/コンテキストの問い合わせには entire を使用します |
ヘルスチェック(git_ping)
サーバーの状態を返します。サーバーに接続できることの確認に役立ちます。
MCP リソース
URI で指定できる読み取り専用スナップショット(サブスクリプション対応):
| リソース URI | 内容 |
|---|---|
git+repo://status/{repo_path} | 作業ツリーの状態(JSON) |
git+repo://log/{repo_path} | 最近のコミットログ(JSON) |
git+repo://branches/{repo_path} | ブランチ一覧(JSON) |
git+repo://diff/{repo_path} | ステージング前とステージング済みの差分(JSON) |
同梱のエージェントスキル
git-mcp には skills/git-mcp-workflow/ にエージェントスキルが同梱されています。このスキルにより、skills-npm 互換のエージェントは、生の git CLI コマンドを実行する代わりに MCP ツールを利用できます。スキルの内容は次のとおりです。
- LLM が Git CLI を使用してはいけない理由(引用符の扱いに関する問題、失敗が通知されないこと)
- 変更前に調査するワークフローのルール
- 取り消しと復旧操作の安全な実行順序
- 登録済みツール一式とアクションのリファレンス
- ワークフローの手順書:機能ブランチ、リベース、復旧、ワークツリー、バックポート、リリースタグ付け、Git Flow、マージ
- MCP ツールに基づく Git の概念説明
スキルのインストール
エージェントが 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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。