GIT MCP Server について
GIT MCP Server は、MCP を通じて AI アシスタントや LLM エージェントに Git リポジトリの情報と操作を提供します。リポジトリ、ブランチ、作業ツリー、リモート、各種高度な操作に対応し、履歴やファイル変更をリソースとして参照できます。
主な機能
- 01リポジトリの初期化、クローン、状態確認
- 02ブランチの作成、切替、マージ、削除
- 03変更のステージング、コミット、差分確認
- 04リモートのフェッチ、プル、プッシュ
- 05タグ、スタッシュ、チェリーピック、リベースの管理
- 06リポジトリリソースとコミット履歴の参照
活用シーン
- 01AI エージェントによるリポジトリ状態と履歴の確認
- 02MCP ツールを使ったブランチやコミットの変更
- 03ファイル内容、差分、行単位の変更者の確認
- 04リモート更新と高度な Git 操作の管理
MCP 対応
Git 操作をツールとして、リポジトリ情報をリソースとして MCP クライアントに提供します。ファイルシステムやコマンドラインへ直接アクセスせずに操作できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GIT MCP サーバー
Git リポジトリを操作するためのツールを提供する Model Context Protocol(MCP)サーバーです。このサーバーを使うと、AI アシスタントや LLM エージェントは、ファイルシステムやコマンドラインへの直接アクセスを必要とせず、標準化されたインターフェースを通じてリポジトリ、ブランチ、コミット、ファイルを管理できます。適切なセキュリティ境界を維持しながら、Git 操作を MCP リソースおよびツールとして公開します。
目次
概要
主な機能:
- リポジトリ管理:リポジトリの初期化、クローン、状態の確認
- ブランチ操作:ブランチの作成、一覧表示、チェックアウト、削除、マージ
- 作業ディレクトリ:ファイルのステージング、変更のコミット、差分の作成
- リモート操作:リモートの追加、フェッチ、プル、プッシュ
- 高度な Git コマンド:タグの管理、変更のスタッシュ、チェリーピック、リベース
アーキテクチャとコンポーネント
システムのコアアーキテクチャ:
クリックして Mermaid ダイアグラムを展開
flowchart TB
subgraph API["API Layer"]
direction LR
MCP["MCP Protocol"]
Val["Validation"]
MCP --> Val
end
subgraph Core["Core Services"]
direction LR
GitService["Git Service"]
ErrorService["Error Service"]
GitService <--> ErrorService
end
subgraph Resources["Resource Layer"]
direction LR
Repo["Repository Resources"]
Diff["Diff Resources"]
File["File Resources"]
History["History Resources"]
Repo <--> Diff
Repo <--> File
Repo <--> History
end
subgraph Tools["Tool Layer"]
direction LR
RepoTools["Repository Tools"]
BranchTools["Branch Tools"]
WorkdirTools["Working Directory Tools"]
RemoteTools["Remote Tools"]
AdvancedTools["Advanced Tools"]
RepoTools <--> BranchTools
BranchTools <--> WorkdirTools
WorkdirTools <--> RemoteTools
RemoteTools <--> AdvancedTools
end
Val --> GitService
GitService --> Resources
GitService --> Tools
classDef layer fill:#2d3748,stroke:#4299e1,stroke-width:3px,rx:5,color:#fff
classDef component fill:#1a202c,stroke:#a0aec0,stroke-width:2px,rx:3,color:#fff
classDef api fill:#3182ce,stroke:#90cdf4,stroke-width:2px,rx:3,color:#fff
classDef core fill:#319795,stroke:#81e6d9,stroke-width:2px,rx:3,color:#fff
classDef resource fill:#2f855a,stroke:#9ae6b4,stroke-width:2px,rx:3,color:#fff
classDef tool fill:#805ad5,stroke:#d6bcfa,stroke-width:2px,rx:3,color:#fff
class API,Core,Resources,Tools layer
class MCP,Val api
class GitService,ErrorService core
class Repo,Diff,File,History resource
class RepoTools,BranchTools,WorkdirTools,RemoteTools,AdvancedTools tool
コアコンポーネント:
- MCP サーバー:Model Context Protocol SDK を使用して、リソースとツールを公開するサーバーを作成します
- Git サービス:simple-git の抽象化レイヤーとして、Git 操作用の使いやすいインターフェースを提供します
- リソース:一貫した URI テンプレートを使用して、Git データを MCP リソースとして公開します
- ツール:明確に定義されたスキーマを使用して、Git 操作を MCP ツールとして公開します
- エラー処理:標準化されたエラー処理と報告
機能
リソースへのアクセス
MCP リソースを通じて Git リポジトリ情報を公開します。
- リポジトリ情報:現在のブランチ、ステータス、参照の詳細など、Git リポジトリの基本情報にアクセスします
- リポジトリのブランチ:現在のブランチを示す印を付けて、リポジトリ内のすべてのブランチを一覧表示します
- リポジトリのリモート:設定済みのすべてのリモートリポジトリとその URL を一覧表示します
- リポジトリのタグ:リポジトリ内のすべてのタグとその参照を一覧表示します
- ファイルの内容:指定した Git 参照における特定のファイルの内容にアクセスします
- ディレクトリ一覧:特定のパスと参照にあるファイルおよびディレクトリの一覧を表示します
- 差分:参照間、ステージングされていない変更、またはステージング済みの変更の差分を取得します
- コミット履歴:作成者、日付、メッセージ情報を含む詳細なコミットログを表示します
- ファイルの Blame:各行を最後に変更したコミットを示す、行ごとの帰属情報を確認します
- コミットの詳細:差分の変更内容など、特定のコミットの詳細情報にアクセスします
Git 操作
MCP ツールを通じて Git コマンドを実行します。
- リポジトリ操作:リポジトリの初期化、リモートからのクローン、リポジトリのステータス確認
- ブランチ操作:ブランチの作成、一覧表示、チェックアウト、削除、マージ
- 作業ディレクトリ操作:ファイルのステージング、ステージング解除、変更のコミット、差分の作成
- リモート操作:リモートの追加、一覧表示、フェッチ、プル、プッシュ
- 高度な操作:タグの管理、変更のスタッシュ、コミットのチェリーピック、ブランチのリベース、リセット、クリーン
インストール
前提条件
- Node.js 16 以降
- Git がインストールされ、PATH から利用できること
NPM からインストール
npm install -g git-mcp-server
ソースからインストール
git clone https://github.com/cyanheads/git-mcp-server.git
cd git-mcp-server
npm install
npm run build
使用方法
サーバーの実行
git-mcp-server
サーバーは Model Context Protocol を使用して stdin/stdout 経由で通信するため、あらゆる MCP クライアントと互換性があります。
Claude との統合
Claude の設定ファイルに追加します。
{
"mcpServers": {
"git": {
"command": "git-mcp-server",
"args": [],
"env": {},
"disabled": false
}
}
}
その他の MCP クライアントとの統合
MCP インスペクターを使用してサーバーをテストします。
npx @modelcontextprotocol/inspector git-mcp-server
プロジェクト構成
コードベースはモジュール構成になっています。
git-mcp-server/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server implementation
│ ├── resources/ # Resource implementations
│ │ ├── descriptors.ts # Resource URI templates
│ │ ├── diff.ts # Diff-related resources
│ │ ├── file.ts # File-related resources
│ │ ├── history.ts # History-related resources
│ │ ├── index.ts # Resource registration
│ │ └── repository.ts # Repository resources
│ ├── services/ # Service implementations
│ │ ├── error-service.ts # Error handling
│ │ └── git-service.ts # Git operations abstraction
│ ├── tools/ # Tool implementations
│ │ ├── advanced.ts # Advanced Git operations
│ │ ├── branch.ts # Branch operations
│ │ ├── index.ts # Tool registration
│ │ ├── remote.ts # Remote operations
│ │ ├── repository.ts # Repository operations
│ │ └── workdir.ts # Working directory operations
│ ├── types/ # Type definitions
│ │ └── git.ts # Git-related types
│ └── utils/ # Utility functions
│ └── validation.ts # Input validation
└── scripts/ # Development scripts
ツール
Git MCP Server は、Git 操作用の包括的なツール群を提供します。
リポジトリ操作
| Tool | Description |
|---|---|
git_init | ベアリポジトリのオプションを指定して、指定したパスに新しい Git リポジトリを初期化します。 |
git_clone | ブランチと深度のオプションを指定して、リモート URL からローカルパスに Git リポジトリをクローンします。 |
git_status | 作業ディレクトリとステージング領域の変更を含む、Git リポジトリの現在のステータスを取得します。 |
ブランチ操作
| Tool | Description |
|---|---|
git_branch_list | リモートブランチを含めるオプションを指定して、リポジトリ内のすべてのブランチを一覧表示します。 |
git_branch_create | 開始地点の指定や自動チェックアウトのオプションを指定して、新しいブランチを作成します。 |
git_checkout | チェックアウト時に新しいブランチを作成するオプションを指定して、ブランチ、タグ、またはコミットをチェックアウトします。 |
git_branch_delete | マージされていないブランチを強制削除するオプションを指定して、ブランチを削除します。 |
git_merge | コミットメッセージとマージ戦略をカスタマイズして、ブランチを現在のブランチにマージします。 |
作業ディレクトリの操作
| ツール | 説明 |
|---|---|
git_add | 個別のファイルまたはディレクトリ全体を対象に、ファイルをコミット用にステージングします。 |
git_reset | 特定のファイルまたはステージング済みの変更すべてを対象に、ファイルをステージングエリアから取り消します。 |
git_commit | カスタマイズ可能なコミットメッセージ、作成者情報、修正オプションを指定して、ステージング済みの変更をコミットします。 |
git_diff_unstaged | 特定のファイルを指定するオプションを使って、作業ディレクトリ内のステージングされていない変更をすべて差分表示します。 |
git_diff_staged | 特定のファイルを指定するオプションを使って、インデックス内のステージング済みの変更をすべて差分表示します。 |
git_reset_commit | ハード、ソフト、またはミックスモードのオプションを使って、リポジトリを特定の参照先にリセットします。 |
git_clean | ディレクトリ指定や強制クリーンのオプションを使って、作業ツリーから追跡対象外のファイルを削除します。 |
リモート操作
| ツール | 説明 |
|---|---|
git_remote_add | 名前と URL を指定して、新しいリモートリポジトリを追加します。 |
git_remote_list | 設定済みのリモートリポジトリとその URL をすべて一覧表示します。 |
git_fetch | 特定のブランチを指定するオプションを使って、リモートリポジトリから更新を取得します。 |
git_pull | リベース戦略のオプションを使って、リモートリポジトリから変更を取り込みます。 |
git_push | 強制プッシュやアップストリーム追跡のオプションを使って、ローカルの変更をリモートリポジトリにプッシュします。 |
高度な操作
| ツール | 説明 |
|---|---|
git_tag_create | メッセージ付きの注釈付きタグを作成するオプションを使って、新しいタグを作成します。 |
git_tag_list | リポジトリ内のすべてのタグとその参照先を一覧表示します。 |
git_stash_create | 追跡対象外のファイルや説明を指定するオプションを使って、作業ディレクトリの変更をスタッシュします。 |
git_stash_list | リポジトリ内のすべてのスタッシュとその説明を一覧表示します。 |
git_stash_apply | スタッシュ一覧から削除せずに、スタッシュした変更を適用します。 |
git_stash_pop | スタッシュした変更を適用し、スタッシュ一覧から削除します。 |
git_cherry_pick | 特定のコミットの変更を現在のブランチに適用します。 |
git_rebase | インタラクティブモードのオプションを使って、現在のブランチを別のブランチにリベースします。 |
git_log | 出力形式と深さをカスタマイズして、コミット履歴を取得します。 |
git_show | 差分を含む、特定のコミットに関する詳細情報を表示します。 |
リソース
Git MCP Server は、標準の MCP リソースを通じて Git データを公開します。
リポジトリリソース
| リソース | 説明 |
|---|---|
git://repo/{repoPath}/info | 現在のブランチ、ステータス、参照情報など、Git リポジトリの基本情報 |
git://repo/{repoPath}/branches | 現在のブランチを示す情報付きの、リポジトリ内のすべてのブランチの一覧 |
git://repo/{repoPath}/remotes | URL を含む、設定済みリモートリポジトリの一覧 |
git://repo/{repoPath}/tags | 参照情報を含む、リポジトリ内のすべてのタグの一覧 |
git://repo/{repoPath}/file/{filePath}?ref={ref} | 指定された Git 参照における特定のファイルの内容を返します |
git://repo/{repoPath}/ls/{dirPath}?ref={ref} | 指定されたパスと参照にあるファイルおよびディレクトリの一覧を返します |
git://repo/{repoPath}/diff/{fromRef}/{toRef}?path={path} | 2 つの Git 参照(コミット、ブランチ、タグ)間の差分を返します |
git://repo/{repoPath}/diff-unstaged?path={path} | 作業ディレクトリ内のステージングされていないすべての変更の差分を返します |
git://repo/{repoPath}/diff-staged?path={path} | インデックス内のステージング済みのすべての変更の差分を返します |
git://repo/{repoPath}/log?maxCount={maxCount}&file={file} | 作者、日付、メッセージの詳細を含むコミット履歴ログを返します |
git://repo/{repoPath}/blame/{filePath} | 各行を最後に変更したコミットを示す、行ごとの帰属情報を返します |
git://repo/{repoPath}/commit/{commitHash} | 差分を含む、特定のコミットの詳細情報を返します |
開発
ビルドとテスト
# Build the project
npm run build
# Watch for changes
npm run watch
# Test with MCP inspector
npm run inspector
# Clean build artifacts
npm run clean
# Rebuild completely
npm run rebuild
ライセンス
Apache License 2.0 — 詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。