Git について
Git は、LLM による Git リポジトリの操作と自動化を支援する MCP サーバーです。状態や履歴の確認に加え、ステージング、コミット、ブランチ管理のツールを提供します。
主な機能
- 01状態とステージ済み・未ステージ差分の確認
- 02ブランチやコミットの比較
- 03変更のステージング、コミット、リセット
- 04コミット履歴とリビジョン内容の表示
- 05ブランチの作成、一覧表示、切り替え
活用シーン
- 01コミット前の作業ツリー変更の確認
- 02指定リビジョンのファイルやディレクトリの確認
- 03MCP クライアント経由でのステージングとコミット
MCP 対応
stdio 経由で MCP クライアントに型付きの Git リポジトリツールを提供します。--repository でアクセス先を設定するか、各ツール呼び出しで repo_path を指定します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
12掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| repo_path | string | はい |
詳細
mcp-server-git:Git MCP サーバー
概要
Git リポジトリとのやり取りと自動化を行うための Model Context Protocol サーバーです。このサーバーは、LLM を介して Git リポジトリの読み取り、検索、操作を行うツールを提供します。
ソース:https://github.com/modelcontextprotocol/servers/tree/main/src/git
MCP Python SDK 2.x(mcp>=2.3,<3)が必要です。このサーバーは SDK の高水準な MCPServer を基盤として構築されています。各ツールは型付きの Python 関数で、SDK が関数シグネチャから入力スキーマを生成します。
mcp-server-git は現在、初期開発段階です。サーバーの開発と改善を続ける中で、機能や利用可能なツールは変更、拡張される場合があります。
ツール
-
git_status- 作業ツリーの状態を表示します
- 入力:
repo_path(string):Git リポジトリへのパス
- 戻り値:作業ディレクトリの現在の状態をテキストで出力します
-
git_diff_unstaged- まだステージングされていない作業ディレクトリの変更を表示します
- 入力:
repo_path(string):Git リポジトリへのパスcontext_lines(number、任意):表示するコンテキスト行数(デフォルト:3)
- 戻り値:ステージングされていない変更の差分出力
-
git_diff_staged- コミット用にステージングされた変更を表示します
- 入力:
repo_path(string):Git リポジトリへのパスcontext_lines(number、任意):表示するコンテキスト行数(デフォルト:3)
- 戻り値:ステージングされた変更の差分出力
-
git_diff- ブランチまたはコミット間の差分を表示します
- 入力:
repo_path(string):Git リポジトリへのパスtarget(string):比較対象のブランチまたはコミットcontext_lines(number、任意):表示するコンテキスト行数(デフォルト:3)
- 戻り値:現在の状態と比較対象との差分出力
-
git_commit- リポジトリに変更を記録します
- 入力:
repo_path(string):Git リポジトリへのパスmessage(string):コミットメッセージ
- 戻り値:新しいコミットハッシュを含む確認メッセージ。ステージングされた変更がない場合は、
--allow-emptyを指定しないgit commitと同様にエラーになります。ただし、マージ進行中(MERGE_HEADが存在する場合)は例外で、Git は空のコミットも許可します。マージ進行中にコミットするとマージが完了します。そのコミットはHEADとすべてのMERGE_HEADコミットを親に持ち、マージ状態は解除されます
-
git_add- ファイルの内容をステージングエリアに追加します
- 入力:
repo_path(string):Git リポジトリへのパスfiles(string[]):ステージングするファイルパスの空でない配列。["."]を指定するとすべてのファイルがステージングされます
- 戻り値:ステージングされたファイルの確認メッセージ。呼び出し後もインデックスに変更がない場合は、何もステージングされなかったことを示すメッセージ
-
git_reset- ステージングされた変更をすべてステージング解除します
- 入力:
repo_path(string):Git リポジトリへのパス
- 戻り値:リセット操作の確認メッセージ
-
git_log- 日付による絞り込みを指定して、コミットログを表示します
- 入力:
repo_path(string):Git リポジトリへのパスmax_count(number、任意):表示するコミットの最大数(デフォルト:10)start_timestamp(string、任意):コミットを絞り込む開始タイムスタンプ。ISO 8601 形式(例:'2024-01-15T14:30:25')、相対日付(例:'2 weeks ago'、'yesterday')、または絶対日付(例:'2024-01-15'、'Jan 15 2024')を指定できますend_timestamp(string、任意):コミットを絞り込む終了タイムスタンプ。ISO 8601 形式(例:'2024-01-15T14:30:25')、相対日付(例:'2 weeks ago'、'yesterday')、または絶対日付(例:'2024-01-15'、'Jan 15 2024')を指定できます
- 戻り値:ハッシュ、作成者、日付、メッセージを含むコミットエントリーの配列
-
git_create_branch- 新しいブランチを作成します
- 入力:
repo_path(string):Git リポジトリへのパスbranch_name(string):新しいブランチの名前base_branch(string、任意):作成元のブランチ(デフォルトは現在のブランチ)
- 戻り値:ブランチ作成の確認
-
git_checkout
- ブランチを切り替えます
- 入力:
repo_path(string):Git リポジトリへのパスbranch_name(string):チェックアウトするブランチの名前
- 戻り値:ブランチ切り替えの確認。
branch_nameがブランチではない場合(sha、タグ、その他のリビジョン)は、HEAD is now detached at <short sha>
git_show
- コミットの内容、または指定したリビジョンにおけるファイルやディレクトリの内容を表示します
- 入力:
repo_path(string):Git リポジトリへのパスrevision(string):表示するリビジョン(コミットハッシュ、ブランチ名、タグ)またはオブジェクト指定(HEAD:path/to/file)
- 戻り値:指定したコミットの内容、ファイルの内容、またはディレクトリ一覧
git_branch
- Git ブランチを一覧表示します
- 入力:
repo_path(string):Git リポジトリへのパス。branch_type(string):ローカルブランチ('local')、リモートブランチ('remote')、またはすべてのブランチ('all')のいずれを一覧表示するか。contains(string、任意):ブランチに含まれている必要があるコミット sha。コミット sha が指定されていない場合、このパラメーターには何も渡さないでくださいnot_contains(string、任意):ブランチに含まれていてはならないコミット sha。コミット sha が指定されていない場合、このパラメーターには何も渡さないでください
- 戻り値:ブランチの一覧
プロトコルのバージョン
このサーバーは、標準入出力を介してModel Context Protocolの両方の世代に対応しており、設定は不要です。2026-07-28 クライアント(server/discover で検出され、セッションなし)と、2025-11-25 クライアント(initialize ハンドシェイク)に対応しています。クライアントの最初のリクエストによって、どちらを使用するかが決まります。ツールはどちらの世代でも同じように動作します。
Rootsは2026-07-28で非推奨となっており、このサーバーはどちらの世代でもクライアントにRootsを要求しません。リポジトリへのアクセスには、--repositoryのみを使用するか、--repositoryが指定されていない場合は各ツール呼び出しのrepo_pathを使用します。pingなど、2026-07-28の仕様で削除されたメソッドに応答するのは、2025-11-25の接続のみです。
エラー
- 失敗したツールは、テキストが
Error executing tool <name>: <message>のisError: trueを含む結果を返すため、モデルはエラーを読み取り、呼び出しを修正できます。これには、Gitのエラー(不明なリビジョン、コマンドの失敗)、リポジトリではない、または--repositoryの外部にあるrepo_path、フラグインジェクション対策、およびツールの入力スキーマに一致しない引数が含まれます。 - 不明なツール名は、仕様で両方の世代に求められているとおり、プロトコルエラーのJSON-RPC
-32602(Unknown tool: <name>)になります。2.0.0より前のバージョンでは、isErrorの結果でした。
インストール
uvを使用する(推奨)
uvを使用する場合、特別なインストールは不要です。uvxを使用して、mcp-server-gitを直接実行します。
PIPを使用する
または、pipを使用してmcp-server-gitをインストールできます。
pip install mcp-server-git
インストール後、スクリプトとして次のように実行できます。
python -m mcp_server_git
設定
--repository(-r)には、Gitワーキングツリー内の任意のパスを指定できます。起動時、サーバーはgit rev-parse --show-toplevelと同様に、親ディレクトリをたどってリポジトリのルートを特定します。そのため、共有設定をリポジトリ内の任意のサブディレクトリから起動する場合も、--repository .を使用できます。リポジトリ内のパスを指定すれば、指定したサブディレクトリの配下だけでなく、そのリポジトリ内のどこからでもツールを呼び出せます。存在しないパス、またはGitリポジトリ内にないパスは、起動時に1行のエラーとしてログに記録されます。
Claude Desktop での使用方法
これを claude_desktop_config.json に追加します。
uvx を使用する場合
"mcpServers": {
"git": {
"command": "uvx",
"args": ["mcp-server-git", "--repository", "path/to/git/repo"]
}
}
docker を使用する場合
- 注:
/Users/usernameを、このツールからアクセス可能にしたいパスに置き換えてください。
"mcpServers": {
"git": {
"command": "docker",
"args": ["run", "--rm", "-i", "--mount", "type=bind,src=/Users/username,dst=/Users/username", "mcp/git"]
}
}
pip でインストールする場合
"mcpServers": {
"git": {
"command": "python",
"args": ["-m", "mcp_server_git", "--repository", "path/to/git/repo"]
}
}
VS Code での使用方法
すばやくインストールするには、以下のワンクリックインストールボタンのいずれかを使用してください……
手動でインストールする場合は、次のいずれかの方法で MCP サーバーを設定できます。
方法 1:ユーザー設定(推奨)
ユーザーレベルの MCP 設定ファイルに設定を追加します。コマンドパレット(Ctrl + Shift + P)を開き、MCP: Open User Configuration を実行します。ユーザーの mcp.json ファイルが開くので、そこにサーバー設定を追加できます。
方法 2:ワークスペース設定
代わりに、ワークスペース内の .vscode/mcp.json というファイルに設定を追加できます。これにより、設定を他のユーザーと共有できます。
VS Code での MCP 設定の詳細については、VS Code の公式 MCP ドキュメントをご覧ください。
{
"servers": {
"git": {
"command": "uvx",
"args": ["mcp-server-git"]
}
}
}
Docker でインストールする場合:
{
"mcp": {
"servers": {
"git": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--mount", "type=bind,src=${workspaceFolder},dst=/workspace",
"mcp/git"
]
}
}
}
}
Zed での使用方法
Zed の settings.json に追加します。
uvx を使用する場合
"context_servers": [
"mcp-server-git": {
"command": {
"path": "uvx",
"args": ["mcp-server-git"]
}
}
],
pip でインストールする場合
"context_servers": {
"mcp-server-git": {
"command": {
"path": "python",
"args": ["-m", "mcp_server_git"]
}
}
},
Zencoder での使用方法
- Zencoder メニュー(...)を開きます。
- ドロップダウンメニューから
Agent Toolsを選択します。 Add Custom MCPをクリックします。- 名前(例:git)と以下のサーバー設定を追加し、必ず
Installボタンをクリックしてください。
uvx を使用する場合
{
"command": "uvx",
"args": ["mcp-server-git", "--repository", "path/to/git/repo"]
}
デバッグ
MCP インスペクターを使用して、サーバーをデバッグできます。uvx でインストールした場合:
npx @modelcontextprotocol/inspector uvx mcp-server-git
特定のディレクトリにパッケージをインストールした場合、またはパッケージを開発している場合:
cd path/to/servers/src/git
npx @modelcontextprotocol/inspector uv run mcp-server-git
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log を実行すると、サーバーのログが表示され、問題のデバッグに役立つ場合があります。
開発
テストとカバレッジ
テストスイートは、MCP の ClientSession を介してプロセス内で serve() を実行します(tests/conftest.py を参照)。また、tests/test_eras.py は Client を 2026-07-28 クライアントおよび 2025-11-25 クライアントとして実行します。src/git から次を実行します。
uv run --frozen pytest # the tests
uv run --frozen pytest --cov --cov-report=term-missing --cov-report=json
2つ目のコマンドでは、src/mcp_server_git のブランチカバレッジも計測し、ファイルごとに表示するとともに coverage.json に書き込みます(git の対象外です)。すべてのファイルで、行カバレッジとブランチカバレッジをそれぞれ 90% 以上に保つ必要があります。到達できないコードには、この基準を下げる代わりに # pragma: no cover # <reason> を付けます。
クライアントで変更を試す
クライアントで変更を試す方法は2つあります。
-
MCP インスペクターを実行して変更をテストします。実行方法についてはデバッグを参照してください。
-
Claude デスクトップアプリを使ってテストします。次の内容を
claude_desktop_config.jsonに追加します。
Docker
{
"mcpServers": {
"git": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
"--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
"--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
"mcp/git"
]
}
}
}
UVX
{
"mcpServers": {
"git": {
"command": "uv",
"args": [
"--directory",
"/<path to mcp-servers>/mcp-servers/src/git",
"run",
"mcp-server-git"
]
}
}
}
ビルド
Docker のビルド:
cd src/git
docker build -t mcp/git .
ライセンス
この MCP サーバーは MIT License のもとでライセンスされています。これは、MIT License の利用規約に従うことを条件に、ソフトウェアを自由に使用、変更、配布できることを意味します。詳細については、プロジェクトリポジトリの LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。