Mcp Git Commit Generator について
Git ワークツリーを調べ、ステージ済みの変更から Conventional Commit のプロンプトを作成する MCP サーバーです。コミット作成やファイル編集を行わずに、コミット文案やリポジトリの状態を確認したい場合に適しています。
主な機能
- 01ステージ済み変更から Conventional Commit のプロンプトを作成
- 02ブランチとファイルの状態を報告
- 03リポジトリまたはワークツリー内のパスを指定
- 04stdio、Streamable HTTP、レガシー SSE に対応
活用シーン
- 01ステージ済み変更をもとにコミット文を準備
- 02ステージ済み、未ステージ、未追跡のファイルを確認
MCP 対応
MCP クライアントに `generate_commit_message` と `check_git_status` ツールを提供し、stdio、Streamable HTTP、レガシー SSE で接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
2掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| commit_type | any | いいえ | |
| repo_path | any | いいえ | |
| scope | any | いいえ |
詳細
MCP Git Commit Generator
Model Context Protocol(MCP)を通じて、ステージングされた Git の変更から Conventional Commit メッセージを生成します。
MCP との互換性
このリリースでは公式の Python MCP SDK v2 を使用し、MCP 2026-07-28 仕様を対象としています。
この SDK は、どちらのプロトコル世代にも対応できます。
- 新しいクライアントでは、2026-07-28 の
server/discoverフローを使用します。 - 古いクライアントでも、従来の
initializeハンドシェイクを引き続き使用できます。 stdioはデフォルトのローカルトランスポートです。streamable-httpは推奨されるネットワークトランスポートです。デフォルトのエンドポイントは/mcpです。sseは従来の統合でのみ引き続き利用できます。
このサーバーでは、ツールがサーバーからクライアントへのバックチャネルを必要としないため、Streamable HTTP をステートレスな JSON として設定しています。
機能
- ステージングされた変更のみから Conventional Commit プロンプトを生成します。
- ステージング済み、未ステージング、未追跡のファイルを調べます。
- リポジトリのルート、または Git ワークツリー内のパスを受け付けます。
- ステージングされた差分のプレビューを最大 1500 文字に制限します。
- リポジトリ内のテキストを信頼できないモデル入力として扱います。
- モデルのプロンプトに含める前に、
commit_typeとscopeを検証します。 - シェル、外部 diff、ページャー、対話型プロンプトを使わずに Git を実行します。
- Git コマンドに 15 秒のタイムアウトを設定します。
- stdio、Streamable HTTP、従来の SSE に対応します。
- 公開済みコンテナーを非 root ユーザーとして実行します。
- 新しい MCP 2026-07-28 と従来の MCP の動作をテストします。
要件
- Python 3.14 以降。
- Git。
- MCP 対応クライアント。
- オプション:Docker。
- オプション:MCP Inspector v2 用の Node.js 22.19 以降。
インストール
uvx
uvx mcp-git-commit-generator
PyPI
pip install mcp-git-commit-generator
Docker
サーバーに調査させるリポジトリのみをマウントしてください。ツールはコミットの作成やファイルの編集を行わないため、読み取り専用のマウントで十分です。
docker run -i --rm \
--read-only \
--cap-drop=ALL \
--security-opt=no-new-privileges:true \
--mount type=bind,src="$PWD",dst="$PWD",readonly \
ghcr.io/theoklitosbam7/mcp-git-commit-generator:latest
ツール
generate_commit_message
ステージングされた変更から、Conventional Commit メッセージ用の厳密なプロンプトを作成します。
パラメーター:
repo_path:任意のリポジトリパスです。ワークツリー内のパスも受け付けます。commit_type:任意の Conventional Commit タイプです。feat、fix、docs、style、refactor、perf、build、ci、test、chore、またはrevertを指定できます。scope:任意の 1~50 文字のスコープです。英字、数字、.、_、/、-を含めることができます。
check_git_status
現在のブランチと、ステージング済み、未ステージング、未追跡のファイルを報告します。
パラメーター:
repo_path:任意のリポジトリパスです。ワークツリー内のパスも受け付けます。
クライアントの設定
stdio で uvx を使用
一般的な MCP クライアントの形式:
{
"mcpServers": {
"mcp-git-commit-generator": {
"command": "uvx",
"args": ["mcp-git-commit-generator"]
}
}
}
VS Code では、トップレベルの servers オブジェクトを使用します。
{
"servers": {
"mcp-git-commit-generator": {
"command": "uvx",
"args": ["mcp-git-commit-generator"]
}
}
}
Streamable HTTP
ローカルサーバーを起動します。
uv run mcp-git-commit-generator \
--transport streamable-http \
--host 127.0.0.1 \
--port 3001
クライアントを次に接続します。
http://127.0.0.1:3001/mcp
HTTP モードにはアプリケーション認証がありません。このため、デフォルトのバインドアドレスはループバックです。リモートアクセスが必要な場合は、認証付き TLS リバースプロキシの背後にサーバーを配置し、ネットワークアクセスを制限してください。
従来の SSE
古いクライアントでも、引き続き SSE を使用できます。
uv run mcp-git-commit-generator \
--transport sse \
--host 127.0.0.1 \
--port 3001
新しい統合では stdio または Streamable HTTP を使用してください。
開発
ロックされた環境をインストールします。
uv sync --all-groups
チェックを実行します。
uv run python -m compileall -q src tests
uv run pytest
uv run pip-audit --local
uv build
MCP Inspector v2
リポジトリのルートで、1つ目のターミナルから MCP サーバーを起動します。
uv run mcp-git-commit-generator \
--transport streamable-http \
--host 127.0.0.1 \
--port 3001
別のターミナルで、ローカルサーバーを設定して Inspector を起動します。
cd inspector
npm ci
npm run dev:inspector -- \
--transport http \
--server-url http://127.0.0.1:3001/mcp \
--protocol-era modern
ターミナルに表示された Inspector の URL を開きます。通常は http://127.0.0.1:6274 です。ローカルサーバーの接続スイッチがオフの場合は、オンにしてください。Inspector ではトランスポートを http と呼びますが、Python サーバーでは streamable-http と呼びます。
/mcp URL はプロトコルのエンドポイントであり、ウェブインターフェースではありません。Inspector を使用するために、ブラウザーで直接開かないでください。
VS Code でデバッグするには、プロジェクトの .venv Python インタープリターを選択し、inspector で npm ci を実行して Inspector の依存関係をインストールし、Debug in Inspector (Chrome) または Debug in Inspector (Edge) を実行します。これらの構成では両方のプロセスが起動し、ポート 5173 で Inspector が開きます。
CI とサプライチェーンの管理
このリポジトリでは、以下の管理策を使用しています。
- GitHub Actions は完全なコミット SHA に固定されています。
- Python のテストは Linux、macOS、Windows で実行されます。
- Python の依存関係は
uv.lockでロックされ、pip-auditで監査されます。 - Inspector の依存関係は
package-lock.jsonでロックされ、npm auditでチェックされます。 - プルリクエストでは、重大度の高い依存関係の変更に対して GitHub dependency review を使用します。
- Dependabot は uv、npm、GitHub Actions、Docker の依存関係をチェックします。
- コンテナーのビルドでは、来歴情報と SBOM が生成されます。
- PyPI への公開には、GitHub OIDC の信頼された公開とパッケージのアテステーションを使用します。
セキュリティモデル
リポジトリ名、パス、ファイルの内容、差分は、すべて攻撃者が制御できる入力です。サーバーはリポジトリのコンテキストを JSON としてシリアル化し、下流のモデルに対して、それらの値を変更に関する証拠としてのみ使用するよう指示します。ステージングされた差分に隠された指示を、信頼できる指示として扱うことはありません。
Git は shell=False の動作で、引数リストとして実行されます。サーバーは、ツール操作で外部差分、対話型プロンプト、ページャーを無効にします。また、コマンドのタイムアウトも適用します。
Docker では、ホームディレクトリ全体をマウントするのではなく、範囲を絞った読み取り専用のリポジトリマウントを使用してください。
リリース
pyproject.tomlのversionを更新します。- すべてのチェックを実行し、両方のロックファイルを更新します。
v3.0.0など、対応するタグを作成します。- タグをプッシュします。
タグをプッシュすると、Python パッケージとコンテナーイメージがビルドされ、公開されます。PyPI では信頼された公開を使用します。
ライセンス
MIT © 2025-2026 Theoklitos Bampouris
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。