Git MCP Server について
Git MCP Server は、AI エージェント向けに 28 個の Git 操作を提供する MCP サーバーです。STDIO と Streamable HTTP の両方に対応し、mcp-ts-template をベースに構築されています。監査や認証、ディレクトリ制限が必要な環境に向いています。
主な機能
- 01リポジトリ、コミット、ブランチ、リモートを扱う 28 個のツール
- 02STDIO と Streamable HTTP のトランスポート対応
- 03セッションごとの作業ディレクトリリソース
- 04破壊的操作に対する明示的な確認フラグ
- 05GPG/SSH によるコミット署名と GIT_BASE_DIR によるパス制限
活用シーン
- 01AI エージェントによる日常的なコミット、ブランチ操作、マージ
- 02log、show、blame による変更履歴の分析
- 031 つのセッションでの複数リポジトリの切り替え
MCP 対応
MCP サーバーとして、28 個の Git ツール、作業ディレクトリのリソース、Git Wrap-up プロンプトを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @cyanheads/git-mcp-serverMCP_LOG_LEVELSets the minimum log level for output (e.g., 'debug', 'info', 'warn').GIT_BASE_DIROptional absolute path to restrict all git operations to a specific directory tree. Provides security sandboxing for multi-tenant or shared environments.MCP_HTTP_HOSTThe hostname for the HTTP server.MCP_HTTP_PORTThe port to run the HTTP server on.MCP_HTTP_ENDPOINT_PATHThe endpoint path for the MCP server.MCP_AUTH_MODEシークレットAuthentication mode to use: 'none', 'jwt', or 'oauth'.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
28掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | いいえ | Git リポジトリのパス。デフォルトは git_set_working_dir で設定されたセッション作業ディレクトリです。 |
| paths | array | いいえ | ステージングするファイルまたはディレクトリのパスの配列(リポジトリのルートからの相対パス)。["."] を指定するとすべての変更をステージングします。all または update が true の場合は省略できます。 |
| update | boolean | いいえ | 変更済みおよび削除済みのファイルのみをステージングします(未追跡ファイルは除外)。 |
| all | boolean | いいえ | すべての項目を含めます(操作によって異なります)。 |
| force | boolean | いいえ | 通常は無視されるファイルの追加を許可します。 |
詳細
@cyanheads/git-mcp-server
AI エージェント向けの Git MCP サーバーです。STDIO と Streamable HTTP に対応しています。
ツール
7 つのカテゴリに分類された 28 個の Git 操作です。
| カテゴリ | ツール | 説明 |
|---|---|---|
| リポジトリ管理 | git_init, git_clone, git_status, git_clean | リポジトリの初期化、リモートからのクローン、状態の確認、未追跡ファイルのクリーンアップ |
| ステージングとコミット | git_add, git_commit, git_diff | 変更のステージング、コミットの作成、変更の比較 |
| 履歴と調査 | git_log, git_show, git_blame, git_reflog | コミット履歴の表示、オブジェクトの調査、作成者の追跡、参照ログの表示 |
| 分析 | git_changelog_analyze | LLM による変更履歴分析に必要な Git の情報と指示を収集 |
| ブランチとマージ | git_branch, git_checkout, git_merge, git_rebase, git_cherry_pick | ブランチの管理、コンテキストの切り替え、変更の統合、特定のコミットの適用 |
| リモート操作 | git_remote, git_fetch, git_pull, git_push | リモートの設定、更新の取得、リポジトリの同期、変更の公開 |
| 高度なワークフロー | git_tag, git_stash, git_reset, git_worktree, git_set_working_dir, git_clear_working_dir, git_wrapup_instructions | リリースへのタグ付け(一覧表示/作成/削除/検証)、変更の一時退避、状態のリセット、ワークツリーの管理、セッションディレクトリの設定/解除 |
リソース
| リソース | URI | 説明 |
|---|---|---|
| Git 作業ディレクトリ | git://working-directory | git_set_working_dir で設定された、現在のセッションの作業ディレクトリです。 |
プロンプト
| プロンプト | 説明 | パラメーター |
|---|---|---|
| Git の仕上げ | Git セッションを完了するためのワークフロープロトコルです。変更の確認、記録、コミット、タグ付けを行います。 | changelogPath, createTag。 |
はじめに
ランタイム
Bun と Node.js の両方で動作します。ランタイムは自動検出されます。
| ランタイム | コマンド | 最小バージョン |
|---|---|---|
| Node.js | npx @cyanheads/git-mcp-server@latest | >= 20.0.0 |
| Bun | bunx @cyanheads/git-mcp-server@latest | >= 1.2.0 |
MCP クライアントの設定
以下を MCP クライアントの設定(例:cline_mcp_settings.json)に追加してください。環境変数を、ご利用の環境に合わせて更新してください。特に Git のユーザー情報の項目を確認してください。
{
"mcpServers": {
"git-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["@cyanheads/git-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"GIT_BASE_DIR": "~/Developer/",
"LOGS_DIR": "~/Developer/logs/git-mcp-server/",
"GIT_USERNAME": "cyanheads",
"GIT_EMAIL": "[email protected]",
"GIT_SIGN_COMMITS": "true"
}
}
}
}
Bun ユーザーの場合は、"command": "npx" を "command": "bunx" に置き換えてください。
Streamable HTTP の場合は、MCP_TRANSPORT_TYPE=http と MCP_HTTP_PORT=3015 を設定してください。
特長
mcp-ts-template を基盤に構築されています。
| 特長 | 詳細 |
|---|---|
| 宣言的なツール | 機能を単一の自己完結型ファイルで定義できます。フレームワークが登録、検証、実行を処理します。 |
| エラー処理 | 一貫性のある構造化エラーレスポンスを実現する、統合された McpError システムです。 |
| 認証 | none、jwt、oauth モードをサポートしています。 |
| プラグ可能なストレージ | ビジネスロジックを変更せずに、バックエンド(in-memory、filesystem、Supabase、Cloudflare KV/R2)を切り替えられます。 |
| 可観測性 | 構造化ログ(Pino)と、トレースおよびメトリクス用のオプションの自動計装 OpenTelemetry を備えています。 |
| 依存性注入 | 疎結合でテスト可能なアーキテクチャを実現するため、tsyringe を使用しています。 |
| ランタイム間の互換性 | Bun または Node.js を自動検出し、適切なプロセス起動方法を使用します。 |
| プロバイダーアーキテクチャ | プラグ可能な Git プロバイダーシステムです。現在は CLI に対応しています。今後、エッジデプロイメント向けに isomorphic-git を予定しています。 |
| 作業ディレクトリ管理 | マルチリポジトリのワークフロー向けに、セッション固有のディレクトリコンテキストを提供します。 |
| 設定可能な Git ID | 環境変数で作成者/コミッター情報を上書きでき、設定がない場合はグローバルな Git 設定にフォールバックします。 |
| コミット署名 | コミット、マージ、リベース、チェリーピック、タグに対する GPG/SSH 署名(デフォルトで有効)に対応しています。失敗時は警告なしで未署名にフォールバックし、レスポンスに signed/signingWarning フィールドを含めます。 |
| 安全性 | 破壊的な操作(git clean、git reset --hard)には明示的な確認フラグが必要です。 |
セキュリティ
- ディレクトリトラバーサルを防ぐため、すべてのファイルパスを検証してサニタイズします。
- オプションの
GIT_BASE_DIRを使用すると、マルチテナントのサンドボックス化のために、操作対象を特定のディレクトリツリーに制限できます。 - Git コマンドでは、プロセス起動を通じて検証済みの引数を使用し、シェルによる文字列展開を行いません。
- 認証を必要とするデプロイメント向けに、JWT と OAuth をサポートしています。
- DI 管理の
RateLimiterサービスによるレート制限をオプションで利用できます。 - 監査のため、すべての操作をリクエストコンテキストとともにログに記録します。
設定
すべての設定は起動時に src/config/index.ts で検証されます。主な環境変数は次のとおりです。
| 変数 | 説明 | デフォルト |
|---|---|---|
MCP_TRANSPORT_TYPE | トランスポート:stdio または http。 | stdio |
MCP_SESSION_MODE | HTTP セッションモード:stateless、stateful、または auto。 | auto |
MCP_RESPONSE_FORMAT | レスポンス形式:json(LLM に最適化)、markdown(人が読みやすい形式)、または auto。 | json |
MCP_RESPONSE_VERBOSITY | 詳細度:minimal、standard、または full。 | standard |
MCP_HTTP_PORT | HTTP サーバーのポート。 | 3015 |
MCP_HTTP_HOST | HTTP サーバーのホスト名。 | 127.0.0.1 |
MCP_HTTP_ENDPOINT_PATH | MCP リクエストのエンドポイントパス。 | /mcp |
MCP_AUTH_MODE | 認証モード:none、jwt、または oauth。 | none |
STORAGE_PROVIDER_TYPE | ストレージバックエンド:in-memory、filesystem、supabase、cloudflare-kv、r2。 | in-memory |
OTEL_ENABLED | OpenTelemetry を有効にします。 | false |
MCP_LOG_LEVEL | 最小ログレベル:debug、info、warn、error。 | info |
GIT_SIGN_COMMITS | コミット、マージ、リベース、チェリーピック、タグへの GPG/SSH 署名。失敗した場合は署名なしにフォールバックします(レスポンスの signed/signingWarning を参照)。 | true |
GIT_AUTHOR_NAME | Git の作成者名。別名:GIT_USERNAME、GIT_USER。グローバルな git 設定が使用されます。 | (none) |
GIT_AUTHOR_EMAIL | Git の作成者メールアドレス。別名:GIT_EMAIL、GIT_USER_EMAIL。グローバルな git 設定が使用されます。 | (none) |
GIT_BASE_DIR | すべての git 操作を特定のディレクトリツリー内に制限するための絶対パス。 | (none) |
GIT_WRAPUP_INSTRUCTIONS_PATH | ワークフローの手順を記載したカスタム Markdown ファイルのパス。 | (none) |
MCP_AUTH_SECRET_KEY | jwt 認証で必須です。32 文字以上のシークレットキーを指定します。 | (none) |
OAUTH_ISSUER_URL | oauth 認証で必須です。OIDC プロバイダーの URL。 | (none) |
サーバーの実行
パッケージマネージャー経由(インストール不要)
npx @cyanheads/git-mcp-server@latest
環境変数または MCP クライアントの設定から構成します。
ローカル開発
# Build and run
npm run rebuild
npm run start:stdio # or start:http
# Dev mode with hot reload
npm run dev:stdio # or dev:http
# Checks and tests
npm run devcheck # lint, format, typecheck
npm test
Cloudflare Workers
npm run build:worker # Build the worker bundle
npm run deploy:dev # Run locally with Wrangler
npm run deploy:prod # Deploy to Cloudflare
プロジェクト構成
| ディレクトリ | 用途 |
|---|---|
src/mcp-server/tools | ツールの定義(*.tool.ts)。Git の機能はここにあります。 |
src/mcp-server/resources | リソースの定義(*.resource.ts)。Git コンテキストのデータソースです。 |
src/mcp-server/transports | 認証を含む HTTP および STDIO トランスポートの実装です。 |
src/storage | StorageService の抽象化とプロバイダーの実装です。 |
src/services | Git サービスプロバイダー(CLI ベースの Git 操作)です。 |
src/container | DI コンテナーの登録とトークンです。 |
src/utils | ロギング、エラー処理、パフォーマンス、セキュリティのユーティリティです。 |
src/config | 環境変数の解析と検証(Zod)です。 |
tests/ | src/ の構成を反映した単体テストと統合テストです。 |
レスポンス形式
MCP_RESPONSE_FORMAT と MCP_RESPONSE_VERBOSITY で出力形式と詳細度を設定します。
JSON 形式(デフォルト、LLM 向けに最適化):
{
"success": true,
"branch": "main",
"staged": ["src/index.ts", "README.md"],
"unstaged": ["package.json"],
"untracked": []
}
Markdown 形式(人間が読みやすい形式):
# Git Status: main
## Staged (2)
- src/index.ts
- README.md
## Unstaged (1)
- package.json
クライアントに表示される内容にかかわらず、LLM は responseFormatter を通じて、完全な構造化データ(すべてのファイル一覧、メタデータ、タイムスタンプ)を常に受け取ります。詳細度によって含まれる情報の量が決まります。minimal(主要なフィールドのみ)、standard(バランスの取れた詳細度)、または full(すべての情報)を指定できます。
開発ガイド
アーキテクチャ、ツール開発のパターン、コントリビューションのルールについては、AGENTS.md を参照してください。
テスト
テストには、Vitest と互換性のある Bun のテストランナーを使用します。
bun test # Run all tests
bun test --coverage # With coverage
bun run devcheck # Lint, format, typecheck, audit
ロードマップ
このサーバーは、Git 操作にプロバイダーベースのアーキテクチャを採用しています。
- CLI プロバイダー(現在)— ネイティブの Git CLI による 28 種類のツールを完全にカバーします。ローカルへの Git のインストールが必要です。
- Isomorphic git プロバイダー(予定)— エッジ環境へのデプロイ(Cloudflare Workers、Vercel Edge、Deno Deploy)向けの純粋な JS 実装です。isomorphic-git を使用します。
- GitHub API プロバイダー(可能性あり)— ローカルリポジトリを必要とせず、GitHub REST/GraphQL API を介してクラウドネイティブな操作を行います。
コントリビュート
イシューやプルリクエストを歓迎します。提出前にチェックを実行してください。
npm run devcheck
npm test
ライセンス
Apache 2.0 です。LICENSE を参照してください。
mcp-ts-template を使用して構築
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。