MCP Cross-Model Delegation について
MCP Cross-Model Delegationは、複数の言語モデル間で範囲を限定したテキストタスクを振り分けるPythonフレームワークとベンチマークCLIです。呼び出し側の制約を適用し、抽出した引用を入力コンテキストと照合します。未検証の改善はうたわず、測定に基づいて評価します。
主な機能
- 01GeminiまたはAnthropicへのテキストタスク委任
- 02プライバシー・コスト・遅延制約によるルーティング
- 03入力コンテキストとの引用照合
- 04決定論的なオフラインベンチマーク
- 05ルーティング判断と理由の確認
活用シーン
- 01プライバシーや遅延の制限に応じたプロバイダー選択
- 02抽出した内容の出典コンテキストとの照合
- 03ベンチマークによる委任設定の比較
- 04APIキーなしでのオフラインルーティング検証
MCP 対応
ストリーミング可能なHTTP MCPサーバーとして動作し、タスク委任、構造化された調査結果の抽出、ローカルでの引用照合ツールを提供します。ルーティングはポリシーとプロバイダー制約に従います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e GEMINI_API_KEY -e ANTHROPIC_API_KEY ghcr.io/jostophe-021/mcp-cross-model-delegation:1.0.0GEMINI_API_KEYシークレットOptional Gemini API key; configure at least one provider at runtime.ANTHROPIC_API_KEYシークレットOptional Anthropic API key; configure at least one provider at runtime.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/jostophe-021/mcp-cross-model-delegation:1.0.0Streamable HTTPツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP クロスモデル委譲
English | Français
異種言語モデル間で、範囲を限定した作業を測定、比較、ルーティング、検証するための、オープンで再現可能かつセキュリティを重視したフレームワークです。
1つの Python コアが、MCP サーバーとベンチマーク CLI を支えます:測定 → 比較 → ルーティング → 検証 → 改善。V1 は Gemini、Anthropic、オフラインテスト用の決定論的なフェイクプロバイダーに対応しています。ルーティングは明示的に行われ、引用の根拠はローカルで検証されます。また、品質、コスト、レイテンシの改善は、測定なしに主張しません。
flowchart LR
A["TASK + CONTEXT"] --> B["Caller constraints"]
B --> C["Router"]
H["Benchmark history"] -. "weighted policy" .-> C
C --> D["Gemini or Anthropic"]
D --> E["Result"]
E --> F["Local quote check<br/>for extraction"]
E --> G["Optional benchmark evaluation"]
F --> G
今できること
- 1つのインターフェースを通じて、範囲を限定したテキスト作業を Gemini または Anthropic に委譲できます。
- プロバイダーを選択する前に、プライバシー、機能、コスト、レイテンシの制約を適用し、ルーティングの理由を確認できます。
- 抽出した引用を、提供されたコンテキストと照合して検証できます。
- API キーなしで決定論的なオフラインベンチマークを実行するか、実際のプロバイダー間の実験を任意で行えます。
ここが違います
同じループで測定、ルーティング、実行、根拠の検証、結果の評価を行います。デフォルトのポリシーは手動です。rules と benchmark_weighted を使うには、明示的なオプトインが必要です。過去のスコアは、将来の品質やレイテンシを保証しません。アーキテクチャ、方法論、ユースケースをご覧ください。
5分で試す
Python 3.12 または 3.13 と uv に対応しています。Gemini API キーと Anthropic API キーはそれぞれ独立しており、どちらか一方、または両方を設定できます。Claude のサブスクリプションでは、Anthropic API クレジットは提供されません。
git clone https://github.com/Jostophe-021/mcp-cross-model-delegation.git
cd mcp-cross-model-delegation
uv sync --locked --extra all --extra test
uv run crossmodel doctor
uv run crossmodel providers
uv run crossmodel bench run benchmarks/datasets/basic.jsonl
上記のベンチマークでは FakeProvider を使うため、API キーは不要です。ソフトウェアの検証のみであり、LLM の性能結果ではありません。4つのオフライン例をご覧ください。
実際のプロバイダーを試す
実際のプロバイダーを呼び出す場合に限り、GEMINI_API_KEY または ANTHROPIC_API_KEY を設定してください。**ライブ API の利用には、プロバイダーの料金が発生する場合があります。**まずは合成テキストまたは再配布可能なテキストを使い、ライブベンチマークの前に予定されている呼び出し回数を確認してください。
このリポジトリから、必要なアダプターだけを uv sync --locked --extra gemini または uv sync --locked --extra anthropic でインストールします。ベースパッケージでは、オフラインベンチマークにどちらのプロバイダー SDK も必要ありません。PyPI への公開は別途リリース手順が必要です。PyPI のリリースが検証されるまでは、リポジトリからインストールしてください。
ご自身の環境で GEMINI_API_KEY および/または ANTHROPIC_API_KEY を設定してください。.env.example に記載されているのは名前のみです。.env をコミットしたり、コマンド、issue、チャットにキーを貼り付けたりしないでください。Anthropic を手動選択時のデフォルトにする場合は、DEFAULT_PROVIDER=anthropic を設定します。crossmodel serve を実行すると、ストリーミング可能な HTTP MCP が http://127.0.0.1:8000/mcp で公開されます。サーバーにはパブリッククライアント認証がないため、MCP_HOST=0.0.0.0 は拒否されます。
MCP ツール
| ツール | 目的 |
|---|---|
delegate_task | 任意の CONTEXT、プロバイダー、ポリシー、制約を指定して、範囲を限定した TASK を委任します。 |
extract_findings | 構造化された調査結果を抽出し、その後、CONTEXT 内で引用箇所をローカルに特定します。 |
gemini_delegate_task, gemini_extract_findings | Gemini と手動ルーティングを使用する V0.1 互換エイリアスです。 |
汎用ツールのデフォルトポリシーは policy="manual" です。provider は DEFAULT_PROVIDER に従い、次に Gemini が設定されていれば Gemini、そうでなければ設定済みの最初のプロバイダーになります。policy="rules" または policy="benchmark_weighted" を選択して有効にしてください。MCP で重み付けルーティングを行うには、サーバーオペレーターがベンチマークで生成されたローカルまたは公開の history.json を CROSSMODEL_HISTORY_PATH に設定します。呼び出し側がファイルパスを選ぶことはできません。制約には、allowed_providers、privacy_mode、approved_providers、max_cost、max_latency、require_structured_output、require_evidence、fallback_allowed、明示的な allow_unknown_cost が含まれます。厳密なコストまたはレイテンシの上限を設定すると、値が不明な場合は拒否されます。privacy_mode="local_only" は、含まれている両方の外部プロバイダーを NO_ELIGIBLE_PROVIDER で拒否します。
ツールが受け付けるのは、呼び出し側が指定したテキストのみです。ファイル、メール、Drive、アプリの読み取り、コードの実行、他のサービスでの操作は行いません。マシンの外部に送信してよい情報は、呼び出し側が判断します。TASK と CONTEXT は別々の JSON フィールドとして保持されます。CONTEXT 内の指示は信頼できないものとして扱われます。これは緩和策であり、セキュリティを保証するものではありません。制限の詳細については、セキュリティモデルを参照してください。
ルートを説明する
crossmodel route explain --policy rules --constraints '{"privacy_mode":"external_allowed"}'
crossmodel route explain --provider gemini --policy manual
crossmodel route explain --policy benchmark_weighted --history results/<run-id>/history.json
API 呼び出しは行いません。適格なプロバイダーと拒否されたプロバイダー、理由コード、フォールバックチェーン、スコアの構成要素を出力します。スコア付けされるのは、共通の指標として測定された値のみです。不足している値は null のままです。
ベンチマーク
デフォルトの実行では FakeProvider のみが使われ、有料 API は一切呼び出されません。テスト対象はソフトウェアの動作であり、LLM の研究仮説ではありません。
crossmodel bench run benchmarks/datasets/basic.jsonl
crossmodel bench report results/<run-id>
crossmodel bench generate /tmp/long.jsonl --size medium --seed 42
各実行では、manifest.json、results.jsonl、summary.json、history.json が書き込まれます。デフォルトでは、結果に TASK、CONTEXT、応答は含まれません。使用した正確なコンテキストの SHA-256 は含まれます。データセットには、小規模で手動監査済みの合成タスクが含まれます。内容は、算術、抽出、エビデンス、プロンプトインジェクション、エラー検出、長文コンテキストです。生成された長文コンテキストには、文字数、シード、ジェネレーターのバージョンが記録され、測定されるまでは tokens: null となります。
実際の実験では、--live --provider gemini --orchestrator anthropic(または設定済みのプロバイダー)を使用してください。CLI は実行前に、プロバイダー、条件、タスク数、反復回数、予定されている API 呼び出し数を表示します。条件の順序をランダム化して繰り返すには、--repetitions N --shuffle --seed 42 を使用します。同時実行数は 1 です。別途、日付付きの料金情報源を指定しない場合、コストは unavailable となります。価格はハードコードされていません。--save-responses は生の回答と調査結果を書き込むため、再配布可能なデータでのみ使用してください。4 つの条件は orchestrator_only、fixed_delegation、structured_delegation、routed_delegation です。V1 では各条件につき 1 回のモデル呼び出しを測定し、2 回目のオーケストレーターによる統合呼び出しは実装していません。ベンチマーク形式と方法論を参照してください。
開発とビルド
uv sync --locked --extra all --extra test
uv run pytest -q
uv run ruff check gateway.py server.py contracts.py routing.py execution.py evidence.py cli.py providers benchmarks tests
uv build
docker build -t mcp-cross-model-delegation:1.0.0 .
Docker イメージに API キーは含まれていません。Linux では、docker run --rm --network host --env-file .env mcp-cross-model-delegation:1.0.0 を実行すると、MCP リスナーはホストのループバック上に維持されます。Docker Desktop のホストネットワークの動作は環境によって異なるため、ローカルで Python を使うほうが簡単です。リリースワークフローは、OCI メタデータと SPDX SBOM を含む ghcr.io/jostophe-021/mcp-cross-model-delegation:1.0.0 を公開します。オプションの OpenAI Secure MCP Tunnel を使うと、受信ポートを開かずに互換性のあるリモートクライアントを接続できます。このリポジトリには、トンネル識別子も認証情報も含まれていません。
MCP レジストリ
バージョン 1.0.0 は、公式 MCP レジストリの公開者によって io.github.Jostophe-021/mcp-cross-model-delegation として承認されました。宣言されているパッケージは、公開されている GHCR イメージです。レジストリは引き続きプレビューサービスです。ディスカバリーを利用する前に、現在の掲載内容をご確認ください。
研究
このプロジェクトは、委譲が役立つ場合と役立たない場合、そして委譲によって生じるトレードオフを検証するために設計されています。方法論、研究ロードマップ、合成データセットとベンチマーク形式、結果スキーマ、最初のライブ実験ガイドから始めてください。機密性のない生データ、概要、制限事項のみを公開し、CITATION.cffを使用してバージョンを引用してください。
独自のバージョンを構築する
Fork → Provider / Policy / Evaluator / Dataset → Your derivative project
↘ Optional upstream contribution
拡張ガイドでは、V1 のインターフェースと現時点での制限を説明しています。貢献ガイドでは、フォークをアップストリームに追随させる方法を説明しています。
フォークと派生プロジェクト
フォークや改変は明示的に歓迎されています。GitHub では、アップストリームとの関係を表示したままにしたい場合、Fork を使用してください。独立した派生プロジェクトも、適用されるライセンスおよび帰属表示の要件に従う限り、Apache-2.0 の下で許可されています。汎用的な改善はアップストリームへの貢献として歓迎されますが、フォークは自由に独自の方向へ進められます。適用される LICENSE と NOTICE を保持し、変更点を明示したうえで、該当する場合は元のプロジェクトを引用してください。
関連する取り組みとサポート
汎用的なクロスモデル委譲は、このプロジェクトより前から存在しています。関連する取り組みのページでは、既存のブリッジ、マルチプロバイダーシステム、ルーティング、評価ツールを紹介しています。使い方や研究に関する質問は、SUPPORT.mdとディスカッションをご覧ください。脆弱性は非公開の報告窓口から報告してください。
これは該当しません
- マルチモデル委譲が常に役立つ、あるいは特定のプロバイダーがあらゆる場合に優れている、という主張ではありません。
- 自律型エージェントプラットフォームでも、それ単体で本番環境のセキュリティ境界となるものでも、プロンプトインジェクションを防ぐ保証でもありません。
- OpenAI、Anthropic、Google の公式製品ではありません。
独自のテレメトリーは有効になっていません。把握されていないトークン使用量、コスト、品質は、引き続き不明です。研究ロードマップ、変更履歴、貢献ガイド、ディスカッション、引用メタデータをご覧ください。コードは Apache-2.0 の下で公開されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。