mcpField
M
Mcp Git Commit Generator

Mcp Git Commit Generator

ローカル
github.com/theoklitosBam7バージョン管理94 週間前に更新

Mcp Git Commit Generator について

Git ワークツリーを調べ、ステージ済みの変更から Conventional Commit のプロンプトを作成する MCP サーバーです。コミット作成やファイル編集を行わずに、コミット文案やリポジトリの状態を確認したい場合に適しています。

主な機能

  1. 01ステージ済み変更から Conventional Commit のプロンプトを作成
  2. 02ブランチとファイルの状態を報告
  3. 03リポジトリまたはワークツリー内のパスを指定
  4. 04stdio、Streamable HTTP、レガシー SSE に対応

活用シーン

  1. 01ステージ済み変更をもとにコミット文を準備
  2. 02ステージ済み、未ステージ、未追跡のファイルを確認

MCP 対応

MCP クライアントに `generate_commit_message` と `check_git_status` ツールを提供し、stdio、Streamable HTTP、レガシー SSE で接続します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"git-commit-generator": {
"command": "uvx",
"args": [
"mcp-git-commit-generator"
]
}
}
}
起動コマンドuvx mcp-git-commit-generator

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-git-commit-generator

ツール

2

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
commit_typeanyいいえ
repo_pathanyいいえ
scopeanyいいえ

詳細

MCP Git Commit Generator

PyPI GitHub Release CI License

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 では、ホームディレクトリ全体をマウントするのではなく、範囲を絞った読み取り専用のリポジトリマウントを使用してください。

リリース

  1. pyproject.toml の version を更新します。
  2. すべてのチェックを実行し、両方のロックファイルを更新します。
  3. v3.0.0 など、対応するタグを作成します。
  4. タグをプッシュします。

タグをプッシュすると、Python パッケージとコンテナーイメージがビルドされ、公開されます。PyPI では信頼された公開を使用します。

ライセンス

MIT © 2025-2026 Theoklitos Bampouris

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。