GAC を MCP サーバーとして使用する

May 17, 2026 · View on GitHub

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Русский | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano

GAC は Model Context Protocol (MCP) サーバーとして実行でき、AI エージェントやエディターがシェルコマンドの代わりに構造化されたツール呼び出しを通じてコミットを生成できるようにします。

目次

MCP とは?

Model Context Protocol は、AI アプリケーションが構造化されたインターフェースを通じて外部ツールを呼び出すことを可能にするオープンスタンダードです。GAC を MCP サーバーとして実行することで、MCP 互換のクライアントはシェルコマンドを直接実行することなく、リポジトリの状態を検査し、AI 駆動のコミットを作成できます。

メリット

  • 構造化された対話: エージェントはシェル出力を解析する代わりに、検証済みパラメータを持つ型付きツールを呼び出します
  • 2 ツールワークフロー: gac_status で検査、gac_commit で実行 -- エージェント推論に自然にフィット
  • 完全な GAC 機能: AI コミットメッセージ、グループ化されたコミット、シークレットスキャン、プッシュ -- すべて MCP 経由で利用可能
  • ゼロ設定: サーバーは既存の GAC 設定を使用します(~/.gac.env、プロバイダー設定など)

セットアップ

MCP サーバーは uvx gac serve で起動し、stdio(標準 MCP トランスポート)で通信します。

Claude Code

プロジェクトの .mcp.json またはグローバルの ~/.claude/claude_code_config.json に追加:

{
  "mcpServers": {
    "gac": {
      "command": "uvx",
      "args": ["gac", "serve"]
    }
  }
}

または GAC がグローバルにインストールされている場合:

{
  "mcpServers": {
    "gac": {
      "command": "gac",
      "args": ["serve"]
    }
  }
}

Cursor

Cursor の MCP 設定(.cursor/mcp.json)に追加:

{
  "mcpServers": {
    "gac": {
      "command": "uvx",
      "args": ["gac", "serve"]
    }
  }
}

その他の MCP クライアント

MCP 互換のクライアントであれば GAC を使用できます。サーバーのエントリポイントは以下の通りです:

command: uvx
args: ["gac", "serve"]
transport: stdio

利用可能なツール

サーバーは 2 つのツールを公開しています:

gac_status

リポジトリの状態を検査します。コミット前にこれを使用して、何がコミットされるかを把握します。

パラメータ:

パラメータデフォルト説明
format"summary" | "detailed" | "json""summary"出力形式
include_diffboolfalse完全な diff 内容を含める
include_statsbooltrue行変更の統計情報を含める
include_historyint0含める最近のコミット数
staged_onlyboolfalseステージされた変更のみを表示
include_untrackedbooltrue未追跡ファイルを含める
max_diff_linesint500diff 出力サイズの上限(0 = 無制限)

返却値: ブランチ名、ファイル状態(ステージ済み/未ステージ/未追跡/コンフリクト)、オプションの diff 内容、オプションの統計情報、オプションのコミット履歴。

gac_commit

AI 駆動のコミットメッセージを生成し、オプションでコミットを実行します。

パラメータ:

パラメータデフォルト説明
stage_allboolfalseコミット前にすべての変更をステージ(git add -A
fileslist[str][]ステージする特定のファイル
dry_runboolfalse実行せずにプレビュー
message_onlyboolfalseコミットせずにメッセージのみ生成
pushboolfalseコミット後にリモートにプッシュ
groupboolfalse変更を複数の論理的なコミットに分割
one_linerboolfalse単一行のコミットメッセージ
scopestring | nullnullConventional commit のスコープ(未指定時は自動検出)
hintstring""より良いメッセージのための追加コンテキスト
modelstring | nullnullAI モデルを上書き(provider:model_name
languagestring | nullnullコミットメッセージの言語を上書き
skip_secret_scanboolfalseセキュリティスキャンをスキップ
no_verifyboolfalsepre-commit フックをスキップ
auto_confirmboolfalse確認プロンプトをスキップ(エージェントに必須)

返却値: 成功ステータス、生成されたコミットメッセージ、コミットハッシュ(コミットした場合)、変更されたファイルのリスト、および警告。

ワークフロー

基本的なコミット

1. gac_status()                              → 変更内容を確認
2. gac_commit(stage_all=true, auto_confirm=true)  → ステージ、メッセージ生成、コミット

コミット前のプレビュー

1. gac_status(include_diff=true, include_stats=true)  → 変更を詳細にレビュー
2. gac_commit(stage_all=true, dry_run=true)            → コミットメッセージをプレビュー
3. gac_commit(stage_all=true, auto_confirm=true)       → コミットを実行

グループ化されたコミット

1. gac_status()                                           → すべての変更を確認
2. gac_commit(stage_all=true, group=true, dry_run=true)   → 論理的なグループ分けをプレビュー
3. gac_commit(stage_all=true, group=true, auto_confirm=true)  → グループ化されたコミットを実行

コンテキスト付きコミット

1. gac_status(include_history=5)  → スタイル参考のために最近のコミットを確認
2. gac_commit(
     stage_all=true,
     hint="Fixes login timeout bug from issue #42",
     scope="auth",
     auto_confirm=true
   )

設定

MCP サーバーは既存の GAC 設定を使用します。以下の設定以外に追加のセットアップは不要です:

  1. プロバイダーとモデル: uvx gac init または uvx gac model を実行して AI プロバイダーを設定
  2. API キー: ~/.gac.env に保存(uvx gac init 時に設定)
  3. オプション設定: すべての GAC 環境変数が適用されます(GAC_LANGUAGEGAC_VERBOSE など)

すべての設定オプションについてはメインドキュメントを参照してください。

トラブルシューティング

"No model configured"

MCP サーバーを使用する前に、uvx gac init を実行して AI プロバイダーとモデルを設定してください。

"No staged changes found"

ファイルを手動でステージ(git add)するか、gac_commit 呼び出しで stage_all=true を使用してください。

サーバーが起動しない

GAC がインストールされていてアクセス可能であることを確認してください:

uvx gac --version

uvx を使用している場合は、uv がインストールされて PATH に含まれていることを確認してください。

エージェントがサーバーを見つけられない

MCP 設定ファイルがクライアントの正しい場所にあり、command パスがシェル環境からアクセス可能であることを確認してください。

Rich 出力の破損

MCP サーバーは stdio プロトコルの破損を防ぐために、すべての Rich コンソール出力を自動的に stderr にリダイレクトします。文字化けした出力が表示される場合は、MCP 使用時に uvx gac serveuvx gac を直接ではなく)を実行していることを確認してください。

関連項目