mcpField
M
mcp-broker

mcp-broker

ローカル
github.com開発ツール52 日前に更新

mcp-broker について

mcp-brokerは、複数のMCPサーバーを使う開発者向けのローカル基盤です。単一の簡素な接続口を設け、上流サーバーの起動、再利用、プロファイル、ルーティング、終了処理を管理します。

主な機能

  1. 01単一のローカルMCP接続口
  2. 02上流サーバーのオンデマンド起動と再利用
  3. 03プロファイル別のツール公開と上限
  4. 04名前空間付き検索・説明・ルーティング
  5. 05変更系ツールへのアクセス制限
  6. 06上流のライフサイクルとセッション終了処理

活用シーン

  1. 01コーディングセッションに読み込むツールの削減
  2. 02複数クライアントでのローカルサーバー共有
  3. 03クライアント別の上流アクセス設定
  4. 04状態確認とセッション専用プロセスの解放

MCP 対応

stdioシムとローカルブローカーデーモンを通じて、MCPクライアントに簡素なMCPサーバーの窓口を提供します。クライアントはブローカー経由で上流ツールを検索、説明、呼び出しできます。

設定

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

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

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

パッケージ
pypimcp-broker2.1.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mcp-broker

mcp-broker のルーティング基盤を表すブランドヘッダー

mcp-broker は、MCP クライアント向けのローカル Model Context Protocol プロセスブローカーです。

MCP 向けの PgBouncer のようなものです。多数の上流 MCP サーバーの前に、安定したローカルエンドポイントを 1 つ設けます。ブローカーは、上流の起動、再利用、クリーンアップ、プロファイルの公開、ステータス、安全なツールルーティングを管理します。

基本的な考え方はシンプルです。ユーザーがタスクを依頼する前に、すべてのエージェントセッションですべての上流ツール定義を読み込む必要はありません。

開発の背景

多数の MCP サーバーを使う AI コーディングセッションでは、次のような問題が繰り返し発生します。

  • すべてのクライアント設定に、同じ MCP サーバーの一覧が重複して記載されます
  • セッションを開始するたびに、上流プロセスが重複して起動することがあります
  • OAuth、ブラウザーの状態、ローカルファイル、データベースハンドルがツール間に分散します
  • タスクを始める前に、生のツール一覧がコンテキストを消費します
  • ホスト型コネクターのキャッシュによって、ローカル MCP ツールが重複することがあります
  • クライアントセッション終了後も、孤立した MCP プロセスが残ります

mcp-broker は、こうした上流サーバーの前に小さなブローカーファサードを配置します。ホスト型ワークフロービルダーではなく、MCP クライアントを小さく、予測可能に保ち、単一の設定契約で管理するためのローカルインフラストラクチャです。

Client profile
        |
        | one local MCP entry
        v
  mcp-broker-client
        |
        | Unix socket
        v
  mcp-broker-daemon
        |
        | profile gates, namespace routing, status, cleanup
        v
  upstream MCP servers

クライアントには、ブローカーの小さなツールセットが表示されます。

broker_search_tools
broker_describe_tool
broker_call_tool
broker_status
broker_close_session

上流の MCP は引き続き利用できます。タスクで必要になったときに、ブローカーを介して検出し、呼び出します。

コンテキスト削減の測定結果

2026-05-24、測定対象の Codex 設定では、多数の MCP およびホスト型アプリの生のツール定義が、1 つのブローカーファサードと、整理された codex_apps キャッシュに置き換わりました。

対象変更前変更後削減率
Codex に直接登録された MCP サーバー数11190.91%
MCP ツール定義数414499.03%
ホスト型 codex_apps ツール定義数1953980.00%
常時読み込まれるツール定義の合計数6094392.94%
シリアライズされたツールペイロードの合計バイト数1,026,171185,87781.89%
o200k_base によるツールトークンの合計数276,98945,28183.65%

92.94% は、ツール定義数の削減率です。83.65% は、tiktoken の o200k_base で測定した、正規化されたシリアライズ済みツールペイロードのトークン削減率です。

測定の根拠と注意事項については、docs/context-reduction-measurement.md を参照してください。

機能

  • Unix ソケット経由で、ローカルブローカーデーモンを 1 つ実行します。
  • MCP クライアントに、軽量な stdio クライアントシムを 1 つ公開します。
  • 必要に応じて上流の MCP サーバーを起動します。
  • 設定に応じて、セッション間で共有する上流サーバーを再利用します。
  • 状態を共有すべきでない場合は、セッションごとに上流サーバーを分離します。
  • 上流ツールを安定した名前空間にマッピングします。
  • 検索、説明、呼び出し、ステータス、および呼び出し元セッションに紐づくセッション終了のための簡潔なツールを公開します。
  • プロファイルレベルのツール予算と公開ゲートを適用します。
  • プロファイルの許可リストで認可されない限り、状態を変更する上流ツールの公開をブロックします。
  • ランタイム状態を、リポジトリ外の $HOME/mcp/mcp-broker に保存します。
  • ドライラン、バックアップ、ロールバック機能を備えた MCP クライアント設定エントリを生成します。
  • macOS 向けの LaunchAgent のインストールおよびアンインストール手順を提供します。
  • Linux の systemd ユーザーサービスについて、生成、インストール、アンロード、削除の手順を提供します。
  • Windows PowerShell のスケジュールされたタスクについて、生成、インストール、削除の手順を提供します。
  • Makefile ターゲットを通じて、単体テスト、ジャーニーテスト、ライブテスト、E2E テストを実行できます。

主な特長:

  • プロファイル単位の公開:すべてのツールをデフォルトで公開するのではなく、各 MCP クライアントに、設定された上流サーバーのビューを提供します。
  • 状態変更ツールのゲート:許可リストでアクセスが認可されるまで、状態を変更する上流ツールは非表示のままです。
  • ライフサイクル管理:共有およびセッション単位の上流サーバーを、ブローカーが起動、監視、停止、回収します。
  • クライアント間の同等性チェック:生成されたプロファイルは、設定を適用する前に、同じ簡潔なブローカーファサードを通じて検証できます。

このツールの対象ユーザー

次のような方に mcp-broker をお勧めします。

  • Codex、Claude Code、AGY CLI、その他の MCP クライアントを使用している
  • すべてのセッションで使うには MCP ツールが多すぎる
  • プロセスの重複起動を避け、共有のローカル MCP サーバーを使用したい
  • OAuth の状態、ブラウザーの状態、ソケット、ログ、クリーンアップを一元管理したい
  • どこでも同じツールリストを使うのではなく、クライアントごとのプロファイルが必要
  • 生の上流ツール一覧の代わりに、シンプルなブローカーファサードを使いたい

このリポジトリは、エンタープライズ向けの MCP コントロールプレーンではありません。開発者エージェントのワークフロー向けのローカルデスクトップインフラストラクチャです。

現在の状況

実装済み:

  • config/broker.example.yaml から作成される config/broker.private.yaml からの YAML 設定読み込み。
  • ランタイム、クライアント、プロファイル、上流サーバー、ポリシーブロックの厳密な YAML 契約検証。
  • config/broker.schema.json による公開 JSON Schema 検証。
  • runtime.root からのランタイムパスの導出。
  • 設定された上流プレフィックスからのツール名前空間マッピング。
  • ローカル上流サーバーのサブプロセスのライフサイクル管理とプロセスグループのクリーンアップ。
  • Unix ソケット経由のブローカーデーモン。
  • Codex、Claude、AGY など、設定された MCP クライアントプロファイル向けの MCP クライアントシムとレンダラー。
  • MCP の許可サーバーポリシーを含む、AGY プロファイルの .gemini/config/mcp_config.json へのレンダリング。
  • クライアント設定のドライランレンダリング、適用時のバックアップ、ロールバック。
  • ドライランをデフォルトとする LaunchAgent のレンダリングおよびインストールスクリプト。
  • 検索、説明、呼び出し、ステータス、呼び出し元に紐づくセッション終了のためのコンパクトなブローカーファサード。
  • YAML スモークプローブによるプロファイル検証。
  • コンパクトなクライアントプロファイル間の探索結果の同等性チェック。
  • Makefile ターゲットによる公開用およびメンテナー用の品質ゲート。
  • ホスト環境での実行はデフォルトで無効のまま、P3.8 E2E 証明までの共有ランタイムガードレール契約。

接続状況:

  • Codex はブローカー経由で接続されています。
  • Claude は、プロファイル検証と /mcp の手動承認後、ブローカー経由で接続されています。
  • AGY は .gemini/config/mcp_config.json をレンダリングすることで、ブローカー経由で接続されています。

公開リリースの状況:

  • このリポジトリは、公開しても安全な状態を維持できるよう設計されています。
  • 非公開の上流サーバー一覧、アカウントパス、OAuth の状態、シークレット、ソケット、ログ、生成されたクライアント設定は git の対象外です。
  • 安定版リリースのメタデータは make release-version-check で検証され、公開証明は docs/distribution.md で管理されます。
  • コンテナーに適した設定向けに Docker イメージを利用できます。Docker MCP Catalog への登録には、引き続き Docker による審査が必要です。
  • ローカルディレクトリでの審査向けに、MCPB メタデータが mcpb/manifest.json にあります。

公開向けのリリース作業については、ROADMAP.md をご覧ください。

アーキテクチャ

mcp-broker には、次の 3 つのランタイムレイヤーがあります。

レイヤー役割
クライアントシム各 MCP クライアントに 1 つの stdio MCP サーバーエントリを提供し、ブローカーソケット経由で JSON-RPC を転送します。
ブローカーデーモンプロファイルゲート、名前空間ルーティング、上流サーバーのライフサイクル、ステータス、ログ、クリーンアップを管理します。
上流 MCP サーバー共有またはセッションごとのプロセスポリシーに従い、設定された stdio、HTTP、ストリーミング可能な HTTP、または SSE コネクターとして実行されます。

設定ファイルが契約となります。プロファイルで公開する対象を決め、上流サーバーでトランスポートとライフサイクルの動作を定義し、スモークプローブで検証に使う安全な読み取り呼び出しを定義します。

比較

アプローチ最適な用途トレードオフ
生の MCP クライアント設定ツールが少ない小規模な構成。すべてのセッションでツールリスト全体が読み込まれ、各クライアントに設定が重複します。
シンプルな MCP プロキシ1 つのサーバーを 1 つのクライアントに転送する場合。上流サーバーのライフサイクル、プロファイルの予算、クライアント間のクリーンアップは管理しません。
ホスト型アプリコネクタークライアントプロバイダーが管理する SaaS ツール。ローカルの MCP 状態とクライアント間の同等性は、引き続きユーザーの管理対象外です。
mcp-broker複数の MCP クライアントで多数の上流 MCP サーバーを使うローカル開発者。インストールと監視が必要なローカルデーモンと設定契約が追加されます。

スクリーンショットまたは GIF

クイックスタートの流れは次のようになります。

mcp-broker quickstart terminal

make config-init
make config-validate
make broker-status
make codex-facade-smoke

MCP クライアントで /mcp を実行すると、mcp-broker のエントリが 1 つ表示されます。broker_status を使って、プロファイルから見えるアップストリームの状態を確認します。

クイックスタート

前提条件:

  • LaunchAgent を使用する場合は、launchctl が利用可能な macOS。
  • python3 として利用できる Python 3.10 以降。
  • make。
  • npm ベースのアップストリーム MCP サーバーを使う場合は、Node.js と npx。
  • このリポジトリのクローン。

パッケージのインストール:

pipx install mcp-broker
uv tool install mcp-broker
brew tap ${HOMEBREW_TAP_REF}
brew install mcp-broker

Homebrew では、Python パッケージと同じコンソールスクリプトがインストールされます。パッケージのインストールでは MCP クライアントの設定は書き込まれません。クライアントの接続設定は、明示的な Makefile の操作として行います。

Docker はコンテナに適した設定で使用します:

docker build -t mcp-broker:local .
docker run --rm -i mcp-broker:local

ローカルの stdio クライアントと MCPB 形式のインストールでは、パッケージが所有するライフサイクルを使用します:

mcp-broker stdio --init-if-missing

ローカルの venv を作成し、依存関係をインストールして、ランタイムのディレクトリ構成を確認します:

make setup

公開テンプレートからプライベート設定を作成します:

make config-init

config-init は必要に応じて保存先ディレクトリを作成し、公開テンプレートを初期状態としてコピーします。ローカルの MCP インベントリ、ユーザーパス、シークレットは取り込みません。

ローカルのアップストリームを設定するには、config/broker.private.yaml を編集します。シークレットの値は設定ファイルに含めないでください。環境変数名、または以下のディレクトリにあるファイルを使用します:

$HOME/mcp/mcp-broker/secrets/

品質ゲートを実行します:

make quality-gate

設定された YAML コントラクトを検証します:

make config-validate

ブローカーを起動します:

make broker-start

状態を確認します:

make broker-status

インストールの全手順については、docs/install.md を参照してください。 クローンから起動までの導入手順については、 docs/adoption-guide.md#clone-to-running-path を参照してください。 共有ランタイムの境界については、 docs/shared-runtime-guardrails.md を参照してください。 P3.8 E2E の実証では、テナント分離、認可拒否、クォータ拒否、セッションアフィニティ、 監査イベント、ロールバック、縮退モード、ローカルのみのルーティング、 共有可能なルーティングを対象としています。ホスト型実行は、パブリックな ローカルブローカーでは引き続きサポートされません。

ランタイムのディレクトリ構成

デフォルトのランタイムルート:

$HOME/mcp/mcp-broker/
|- backups/
|- logs/
|- renders/
|- run/
|- secrets/
|- sockets/
`- state/
   `- upstreams/

ランタイムファイルはリポジトリ内のファイルではありません。アップストリームの OAuth 状態、ブラウザー状態、シークレットファイル、ソケット、ログ、レンダリング済みクライアント設定、バックアップ、デーモンの状態は、ランタイムルート配下に置きます。

docs/runtime-layout.md を参照してください。

クライアントの接続設定

クライアント設定をバックアップします:

make config-backup CLIENT=codex

ドライランでレンダリングします:

make config-render CLIENT=codex CONFIG_RENDER_APPLY=0

レンダリングされたファイルを $HOME/mcp/mcp-broker/renders/ で確認してから適用します:

make config-render CLIENT=codex CONFIG_RENDER_APPLY=1

ロールバック:

make config-rollback CLIENT=codex

プロファイルのスモークテストに合格し、そのクライアントでブローカーを使用する場合は、その後に CLIENT=claude または CLIENT=agy を指定します。新しい JSON ベースの MCP クライアントの場合は、ひな形となるブロックを生成します:

make profile-snippet NEW_PROFILE=local-client NEW_CLIENT_FORMAT=mcp-settings-json

新しいプロファイルの手順全体については、docs/add-profile.md を参照してください。

コンパクトなブローカーファサード

コンパクトなファサードを使うと、チャット向けのプロファイルを簡潔に保てます:

ツール目的
broker_search_toolsクエリで設定済みのアップストリームツールを検索します。結果には、名前、説明、アップストリーム、目的、タグ、変更を伴う操作かどうかを示すフラグが含まれます。重い inputSchema は省略され、必要に応じて broker_describe_tool から取得されます。
broker_describe_tool1 つのアップストリームツールのスキーマとメタデータを返します。
broker_call_toolブローカールーティングを通じて、1 つのアップストリームツールを呼び出します。任意の projection({"paths": [...], "max_array_items": N})を受け付けます。これにより、クライアントに届く前にサーバー側でレスポンスを絞り込めます。
broker_statusツールを起動せずに、プロファイルから見えるアップストリームの状態、受動的な認証プローブ、最後に発生したエラーを表示します。
broker_close_session共有アップストリームや別のクライアントセッションを停止せずに、呼び出し元が所有するセッション単位のアップストリームプロセスを解放します。

Codex の /mcp に mcp-broker のエントリが 1 つだけ表示されるのは、意図した仕様です。アップストリームごとの可視性、状態、ソケットパスは broker_status から確認できます。

プロファイルと安全性

プロファイルによって、クライアントが参照して呼び出せるアップストリームが決まります。

対応する概念:

  • max_tools は、クライアントに膨大なツール一覧が表示されるのを防ぎます。
  • compact_tools_enabled を有効にすると、生のアップストリームツールの代わりにブローカーのファサードツールが公開されます。
  • broker_tool_name_style は、ドット付きのツール名を表示できないクライアント向けに、ブローカーのファサード名を調整します。
  • result_size_chars は、broker_call_tool に anthropic/maxResultSizeChars を指定します(上限は 500000)。これにより Claude Code で大きな結果をインライン表示できます。
  • result_budget_chars は、転送されるすべての tools/call の _meta に mcp-broker/result_budget_chars を設定し、アップストリームがクライアントに合わせて回答サイズを調整できるようにします。docs/add-profile.md を参照してください。
  • mcp_allowed_servers は、明示的なサーバー許可リストを必要とする MCP クライアント向けに、クライアント設定を生成します。
  • 変更を伴うアップストリームを公開するには、allow_mutating_upstreams が必要です。
  • shared モードでは、アカウント状態を共有しても問題ない場合に、アップストリームプロセスを再利用します。
  • per_session モードでは、クライアントセッションごとにアップストリームの状態を分離します。
  • per_call モードでは、ツール呼び出しまたはツール一覧操作ごとに新しい stdio プロセスを起動し、応答を返す前にそのプロセスを停止します。
  • disabled モードでは、アップストリームを公開せずに互換性レコードを保持します。

ステータスには、ツールの検出を含む、処理中の per_call 操作数が active_call_count として表示されます。成功、失敗、またはタイムアウト後のクリーンアップが完了すると、値はゼロに戻ります。このカウントは session_count とは別のもので、保存されたスレッドの数ではありません。ステータスの読み取りによってアップストリームが起動することはなく、プロファイルで非表示のアップストリームは引き続き非表示です。

OAuth、ブラウザーの状態、ファイルシステムのルート、データベースなどの保護対象には、明示的な設定と検証が必要です。公開用の例は無効のままにするか、プレースホルダーを使用します。

docs/security-review.md と docs/upstream-compatibility-matrix.md を参照してください。 安全性に関する詳細なチェックリストは、docs/safety.md を参照してください。

設定の契約

公開テンプレートは config/broker.example.yaml です。 対応する JSON Schema は config/broker.schema.json です。

対応するトップレベルのセクション:

schema_version: 1
runtime: {}
broker: {}
profiles: {}
clients: {}
upstreams: {}

ローダーは不明なキーを拒否します。{runtime.root}、{runtime.state_dir}、{runtime.secrets_dir} などの実行時プレースホルダーは、アップストリームのコマンド、引数、作業ディレクトリ、環境変数ファイルのパスに使用できます。

make config-validate は、まず選択された CONFIG_PATH を公開 JSON Schema と照合し、その後、実行時ローダーを実行して、ブローカーが使用するものと同じコードパスで意味上のルールを適用します。

プロファイルに公開される有効な各アップストリームには、安全なスモークプローブを定義してください:

smoke:
  query: read example graph
  tool: example-store.read_graph
  arguments: {}
  call: true

make profile-validation PROFILE=<profile> は、プロファイルから参照できる有効なアップストリームすべてについて、broker_status、broker_search_tools、broker_describe_tool、および設定された安全な broker_call_tool を通じて検証します。

Codex オペレーターの受け入れ確認

リポジトリが管理するテストでは、ローカルのクライアントシムを通じてブローカーの動作を検証します。最後の Codex 固有の確認は、遅延読み込みされる MCP ラッパーツールが利用できる アクティブな Codex セッション内で実行する必要があります。

YAML から現在の受け入れ確認手順を生成します:

make codex-deferred-acceptance

このターゲットは、設定された smoke プローブを読み取り、検索、説明、安全な呼び出しを行うための正確な mcp__mcp_broker__ ラッパー呼び出しを出力します。Codex の起動、外部 LLM セッションの呼び出しは行わず、 make quality-gate の一部でもありません。

docs/codex-deferred-tool-acceptance.md を参照してください。

LaunchAgent

書き込みを行わずに生成します:

make launchagent-install

適用して読み込みます:

make launchagent-install LAUNCHAGENT_APPLY=1
make launchagent-load
make broker-status

読み込みを解除するか、削除します:

make launchagent-unload
make launchagent-uninstall LAUNCHAGENT_APPLY=1

systemd

Linux のユーザーサービスのインストールでは、同じ実行時ルートと設定パスの契約を使用します:

make systemd-install
make systemd-install SYSTEMD_APPLY=1
make systemd-load

パッケージをインストールした場合は、サービスを適用する前に、インストールされたデーモンのパスを MCP_BROKER_DAEMON_COMMAND に設定してください。

Windows

Windows の起動には、同じランタイムルートと設定パスの契約を使用する PowerShell Scheduled Task コマンドを使います。

make windows-install
make windows-install WINDOWS_APPLY=1
make windows-load

次のコマンドで削除します。

make windows-unload
make windows-uninstall WINDOWS_APPLY=1

テストとリリースのゲート

すべてのテスト階層を実行します。

make test

公開品質ゲートを実行します。

make quality-gate

カバレッジゲートでは、Python ソースの行カバレッジと分岐カバレッジを使用します。

タグを準備するときは、リリースゲートを実行します。

make release-gate

release-gate は、パッケージ、スモーク、ミューテーションのチェックを実行します。ミューテーションでは、LOCAL_CPU_BUDGET と RELEASE_GATE_JOBS から算出したリリース用の子プロセス数を使用するため、ほかのリリース子プロセスの実行中に CPU の全予算を使い切ることはありません。ミューテーションは最後に公開ユニットテストとジャーニーテストを実行し、合計数、スコア、順位付けされた blocked_by_file 項目を含む var/quality/mutation_stats.json を書き込みます。macOS では、ローカルでの mutmut の fork エラーを避けるため、リリースゲートは Linux コンテナー内でミューテーションを実行します。E2E テストは引き続き make quality-gate に含まれます。

スモークテストとランタイムのクリーンアップチェックを実行します。

make config-validate
make broker-smoke
make broker-stop
make broker-reap
make doctor
make release-smoke

リリースまたはクライアント設定の適用前に、次の項目を実施してください。

  • make quality-gate
  • make config-validate
  • make broker-smoke
  • 対象とする各クライアントの設定をドライランでレンダリング
  • ロールバックテスト
  • make release-smoke
  • タグ付け前に make release-gate
  • ブローカーが所有する古いリソースがない状態で make doctor

docs/release-checklist.md を参照してください。

公開コマンド

これらのターゲットは、このリポジトリと宣言済みの Python および Node の前提条件を使用します。

ソースへのコントリビューションでは、PATH に gitleaks をインストールし、各チェックアウトで make hooks-install を実行してください。追跡対象の pre-commit フックは、ステージされたシークレットを秘匿化してスキャンした後、Make を通じてコミット対象の影響テストを実行します。スキャナーツールがない場合、ステージ範囲が空の場合、またはスキャンやテストが失敗した場合は、コミットがブロックされます。GITLEAKS と PYTHON で、スキャナーとメンテナー用インタープリターを指定します。インストールには Git のワークツリー固有の設定を使用し、移行が必要な不明な既存フックや一般的な core.worktree/bare 設定がある場合は処理を中止します。ホストされたワークフローは開始されません。

make setup
make config-init
make test
make test-unit
make test-journey
make test-live
make test-e2e
make test-cov
make precommit
make quality-gate
make release-gate
make config-validate
make broker-smoke
make broker-start
make broker-status
make broker-stop
make broker-reap
make doctor
make config-backup
make codex-app-policy
make config-render
make config-rollback
make tools-count
make facade-smoke
make codex-facade-smoke
make claude-facade-smoke
make agy-facade-smoke
make profile-validation
make codex-profile-validation
make claude-profile-validation
make agy-profile-validation
make discovery-parity
make codex-claude-discovery-parity
make codex-deferred-acceptance
make launchagent-install
make launchagent-load
make launchagent-unload
make launchagent-uninstall
make systemd-install
make systemd-load
make systemd-unload
make systemd-uninstall
make windows-install
make windows-load
make windows-unload
make windows-uninstall
make linux-container-smoke
make windows-powershell-smoke
make release-smoke
make mutation
make mutation-linux

make quality-gate はリポジトリ内で完結します。このリポジトリ外にある個人用スクリプトは呼び出しません。

make codex-deferred-acceptance はメンテナー専用です。Codex や外部の LLM セッションは呼び出しません。同じ YAML の smoke プローブを読み取り、有効な Codex セッション内で実行する正確な mcp__mcp_broker__ 遅延ラッパー呼び出しを出力します。docs/codex-deferred-tool-acceptance.md を参照してください。

プロジェクトツリー

mcp-broker/
|- .gitignore
|- Makefile
|- README.md
|- pyproject.toml
|- requirements.txt
|- config/
|  |- broker.example.yaml
|  |- broker.private.yaml        # local, ignored by git
|  `- broker.schema.json
|- docs/
|- registry/
|- scripts/
|  `- check_mutation_stats.py
|- src/
|  `- mcp_broker/
|- tests/
|  |- unit/
|  |- journey/
|  |- live/
|  |- e2e/
|  `- support/
`- var/                         # tracked skeleton; generated contents ignored

生成されたレポートは var/ 以下、特に var/coverage/、var/test-logs/、var/quality/ に保存されます。

ドキュメント

設計ルール

  • アップストリームの定義は中央設定に保持してください。
  • ランタイム状態は $HOME/mcp/mcp-broker の下に保持してください。
  • プライベートなアップストリーム一覧は、Git で無視される config/broker.private.yaml に保持してください。
  • 秘密の値を設定やソースコードに含めないでください。
  • ソースコード、テスト、ドキュメント、公開設定に個人用のパスをハードコードしないでください。
  • ビルド、テスト、ランタイム、設定の操作は Makefile を通じて実行してください。

コメント

MCP は初めてですか?

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

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