Git MCP サーバー
Gitリポジトリと連携するためのツールを提供するMCP(Model Context Protocol)サーバー。LLMとAIエージェントがMCP標準を介して、クローン、コミット、プッシュ、プル、ブランチ、差分、ログ、ステータスなどのGit操作を実行できるようにします。
cyanheads/mcp-ts-template
上に構築されたこのサーバーは、モジュラー アーキテクチャに従います。
開発者向けメモ: このリポジトリには、コードベース パターン、ファイルの場所、およびコード スニペットのクイック リファレンスを含む、LLM コーディング エージェントの開発者向けチート シートとして機能する.clinerulesファイルが含まれています。
目次
概要
シームレスな Git 統合により、AI エージェントと開発ツールを強化します。
Git MCP サーバーはブリッジとして機能し、モデル コンテキスト プロトコル (MCP) を理解するアプリケーション (MCP クライアント) (高度な AI アシスタント (LLM)、IDE 拡張機能、カスタム スクリプトなど) がローカル Git リポジトリと直接安全にやり取りできるようにします。
複雑なスクリプトや手動の CLI の代わりに、ツールはこのサーバーを活用して次のことを行うことができます。
- Git ワークフローを自動化: リポジトリのクローン作成、ブランチの作成、変更のステージング、作業のコミット、更新のプッシュ、タグの管理をプログラムで実行します。
- リポジトリの洞察を得る: ホスト アプリケーションを離れずに、ステータスを確認し、ログを表示し、変更を比較し、Git オブジェクトを検査します。
- Git を AI 駆動型開発に統合: LLM がコーディングまたはリファクタリング タスクの一環としてバージョン管理を管理できるようにします。
堅牢なmcp-ts-template
をベースに構築されたこのサーバーは、MCP標準を介してGit機能を公開するための、標準化された安全かつ効率的な方法を提供します。Node.jsのchild_process
モジュールを使用して、システムにインストールされている標準のgit
コマンドラインツールを安全に実行することでこれを実現し、互換性を確保しながらGitのパワーを最大限に活用します。
特徴
コアユーティリティ(テンプレートから)
mcp-ts-template
によって提供される堅牢なユーティリティを活用します。
- ログ記録: 機密データの編集を伴う構造化された構成可能なログ記録 (ファイルのローテーション、コンソール、MCP 通知)。
- エラー処理: 集中化されたエラー処理、標準化されたエラー タイプ (
McpError
)、および自動ログ記録。 - 設定: 環境変数の読み込み (
dotenv
)。 - 入力検証/サニタイズ: スキーマ検証とカスタム サニタイズ ロジック (パスに重要) に
zod
使用します。 - リクエスト コンテキスト: 一意のリクエスト ID による操作の追跡と相関。
- 型の安全性: TypeScript と Zod スキーマによって強制される強力な型付け。
- HTTP トランスポート オプション: SSE、セッション管理、CORS サポートを備えた組み込み Express サーバー。
Git操作
- 直接 Git CLI 実行: Node.js
child_process
を介して標準のgit
コマンドライン ツールを安全に実行することで Git と対話し���完全な互換性と Git の機能へのアクセスを確保します。 - 包括的なコマンド カバレッジ: 幅広い Git コマンドを MCP ツールとして公開します (ツールセクションを参照)。
- リポジトリインタラクション: ステータスのチェック、ブランチ、ステージング、コミット、フェッチ、プル、プッシュ、比較、ログ記録、リセット、タグ付けなどをサポートします。
- 作業ディレクトリ管理: 複数の Git 操作にわたってコンテキストを永続化するために、セッション固有の作業ディレクトリを設定およびクリアできます。
- 安全機能:
git clean
やgit reset --hard
などの潜在的に破壊的な操作に対するチェックが含まれ、明示的な確認が必要です。 - コミット署名:検証済みコミットのGPGまたはSSH署名をサポートします。GIT_SIGN_COMMITS環境変数とサーバー側のGit設定によって制御されます。署名失敗時に未署名コミットにフォールバックするためのオプションツールパラメータも
GIT_SIGN_COMMITS
れています。
インストール
前提条件
- Node.js (>=18.0.0)
- npm (Node.js に付属)
- Gitがインストールされ、システム PATH にアクセスできます。
npm経由でインストール
- パッケージをグローバルにインストールします。
ソースからインストール
- リポジトリをクローンします。
- 依存関係をインストールします:
- プロジェクトをビルドします。これにより、TypeScript コードが
dist/
ディレクトリ内の JavaScript にコンパイルされ、エントリ ポイントが実行可能になります。
構成
環境変数
環境変数を使用してサーバーを設定します。プロジェクトルートに.env
ファイルを作成するか( .env.example
からコピー)、環境変数を環境に設定します。
変数 | 説明 | デフォルト |
---|---|---|
MCP_TRANSPORT_TYPE | トランスポート メカニズム: stdio またはhttp 。 | stdio |
MCP_HTTP_PORT | HTTPサーバーのポート( MCP_TRANSPORT_TYPE=http の場合)。ビジー状態の場合は次のポートを再試行します。 | 3010 |
MCP_HTTP_HOST | HTTP サーバーのホスト アドレス ( MCP_TRANSPORT_TYPE=http の場合)。 | 127.0.0.1 |
MCP_ALLOWED_ORIGINS | CORS に許可されるオリジンのコンマ区切りリスト ( MCP_TRANSPORT_TYPE=http の場合)。 | (なし) |
MCP_LOG_LEVEL | ログレベル( debug 、 info 、 notice 、 warning 、 error 、 crit 、 alert 、 emerg )。テンプレートから継承されます。 | info |
GIT_SIGN_COMMITS | git_commit ツールによるコミットの署名を有効にするには、 "true" に設定します。サーバー側の Git/キー設定が必要です(下記参照)。 | false |
MCP_AUTH_SECRET_KEY | 認証トークンの署名/検証用の秘密キー (将来認証が有効になった場合に必要)。 | '' |
MCPクライアント設定
MCP クライアント設定に追加します (例: cline_mcp_settings.json
):
プロジェクト構造
コードベースは、 src/
ディレクトリ内でモジュール構造に従います。
詳細なファイル ツリーについては、 npm run tree
を実行するか、 docs/tree.mdを参照してください。
ツール
Git MCP サーバーは、モデル コンテキスト プロトコルを介して呼び出すことができる、Git リポジトリと対話するためのツール スイートを提供します。
ツール名 | 説明 | 主な議論 |
---|---|---|
git_add | 指定されたファイルまたはパターンをステージングします。 | path? 、 files? |
git_branch | ブランチを管理します (一覧表示、作成、削除、名前変更、現在の表示)。 | path? 、 mode 、 branchName? 、 newBranchName? 、 startPoint? 、 force? 、 all? 、 remote? |
git_checkout | ブランチを切り替えたり、作業ツリー ファイルを復元したりします。 | path? 、 branchOrPath 、 newBranch? 、 force? |
git_cherry_pick | 既存のコミットによって導入された変更を適用します。 | path? 、 commitRef 、 mainline? 、 strategy? 、 noCommit? 、 signoff? |
git_clean | 追跡されていないファイルを削除します。force force: true が必要です。 | path? 、 force 、 dryRun? 、 directories? 、 ignored? |
git_clear_working_dir | セッション固有の作業ディレクトリをクリアします。 | (なし) |
git_clone | 指定された絶対パスにリポジトリのクローンを作成します。 | repositoryUrl 、 targetPath 、 branch? 、 depth? 、 quiet? |
git_commit | ステージングされた変更をコミットします。作成者によるオーバーライド、署名制御をサポートします。 | path? 、 message 、 author? 、 allowEmpty? 、 amend? 、 forceUnsignedOnFailure? |
git_diff | コミット、作業ツリーなどの間の変更を表示します。 | path? 、 commit1? commit2? staged? 、 file? |
git_fetch | 他のリポジトリからオブジェクトと参照をダウンロードします。 | path? 、 remote? 、 prune? 、 tags? 、 all? |
git_init | 指定された絶対パスに新しい Git リポジトリを初期化します。初期ブランチのデフォルトは「main」です。 | path 、 initialBranch? 、 bare? 、 quiet? |
git_log | コミット ログを表示します。 | path? 、 maxCount? 、 author? 、 since? 、 until? 、 branchOrFile? |
git_merge | 指定されたブランチを現在のブランチにマージします。 | path? 、 branch 、 commitMessage? 、 noFf? 、 squash? 、 abort? |
git_pull | 別のリポジトリまたはローカル ブランチから取得して統合します。 | path? 、 remote? 、 branch? 、 rebase? 、 ffOnly? |
git_push | ローカル参照を使用してリモート参照を更新します。 | path? 、 remote? 、 branch? 、 remoteBranch? 、 force? 、 forceWithLease? 、 setUpstream? 、 tags? 、 delete? |
git_rebase | 別のベースチップの上にコミットを再適用します。 | path? 、 mode? 、 upstream? 、 branch? 、 interactive? 、 strategy? 、 strategyOption? 、 onto? |
git_remote | リモート リポジトリを管理します (一覧表示、追加、削除、表示)。 | path? 、 mode 、 name? 、 url? |
git_reset | 現在のHEADを指定された状態にリセットします。ソフト、ミックス、ハードモードをサポートします。 「hard」は注意して使用してください。 | path? 、 mode? 、 commit? |
git_set_working_dir | デフォルトの作業ディレクトリを設定します。リポジトリが存在しない場合は、必要に応じて初期化できます。絶対パスが必要です。 | path 、 validateGitRepo? 、 initializeIfNotPresent? |
git_show | Git オブジェクト (コミット、タグなど) に関する情報を表示します。 | path? 、 ref 、 filePath? |
git_stash | 保存された変更を管理します (リスト、適用、ポップ、ドロップ、保存)。 | path? 、 mode 、 stashRef? message? |
git_status | リポジトリのステータス (ブランチ、ステージング済み、変更済み、追跡されていないファイル) を取得します。 | path? |
git_tag | タグを管理します (リスト、注釈付き/軽量の作成、削除)。 | path? 、 mode 、 tagName? 、 message? 、 commitRef? 、 annotate? |
git_worktree | Git ワークツリーを管理します (リスト、追加、削除、移動、プルーニング)。 | path? 、 mode 、 worktreePath? 、 commitish? 、 newBranch? 、 force? 、 detach? 、 newPath? 、 verbose? 、 dryRun? 、 expire? |
注: git_set_working_dir
で設定されている場合、ほとんどのツールのpath
パラメータはデフォルトでセッションの作業ディレクトリに設定されます。
リソース
MCP リソースはこのバージョン (v2.0.12) では実装されていません。
このバージョンでは、最新のmcp-ts-template
とMCP SDK v1.12.0に基づいてリファクタリングされたGitツール実装に重点を置いています。これまで利用可能だったリソース機能は、今回のメジャーアップデート中に一時的に削除されました。
MCP リソース アクセスが必要な場合 (たとえば、サーバー経由でファイル コンテンツを直接読み取る場合) は、安定版の**v1.2.4 リリース**を使用してください。
将来の開発により、後続のリリースでリソース機能が再導入される可能性があります。
**注:**このバージョン (v2.0.0) は、最新の MCP SDK に基づいてコア Git ツールのリファクタリングとアップデートに重点を置いています。MCP リソース機能はこのバージョンでは実装されていません。リソースへのアクセスには、 v1.2.4 をご利用ください。
発達
ビルドとテスト
ライセンス
このプロジェクトは、Apache License 2.0 に基づいてライセンスされています。詳細については、 LICENSEファイルを参照してください。
You must be authenticated.
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
大規模言語モデルが堅牢な API を介して Git リポジトリと対話できるようにし、リポジトリの初期化、クローン作成、ファイルのステージング、コミット、ブランチ管理などの操作をサポートするモデル コンテキスト プロトコル サーバー。
Related Resources
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server for Git repository interaction and automation. This server provides tools to read, search, and manipulate Git repositories via Large Language Models.Last updated -1252,147PythonMIT License
- AsecurityFlicenseAqualityA Model Context Protocol server that enables AI models to interact with GitHub's API, allowing for repository creation and management with descriptions, topics, and website URLs through natural language commands.Last updated -1JavaScript
- AsecurityAlicenseAqualityA Model Context Protocol server that enables interaction with GitLab accounts to manage repositories, merge requests, code reviews, and CI/CD pipelines through natural language.Last updated -412TypeScriptMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that helps large language models process code repositories by providing file tree generation, code merging, and code analysis capabilities.Last updated -314JavaScriptMIT License