pranaxis-mcp-gateway について
pranaxis-mcp-gatewayは、複数のエージェント間でリソースを消費するMCP呼び出しを調整するstdioプロキシです。読み取りは通過させ、同じリソースバージョンへの競合呼び出しを拒否し、説明付きの判定と証明書を返します。
主な機能
- 01共有リソースを消費する呼び出しの仲裁
- 02読み取り呼び出しの通過
- 03サーバーごとの宣言的ルール
- 04判定と証明書の記録
- 05ソフトウェアまたは物理検証器
活用シーン
- 01複数エージェントによる同一バージョンの重複消費を防止
- 02サーバー別ルールによる書き込みの調整
- 03JSONLログで判定を確認
MCP 対応
MCPクライアントとサーバーの間にstdioプロキシとして配置されます。設定済みの消費ルールに一致する呼び出しを仲裁し、一致しない呼び出しは通過させます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Pranaxis MCP Gateway
MCP ツール呼び出しの一貫性判定。 あらゆる MCP クライアント(Claude Code、 Cursor、Codex、カスタムエージェント)とあらゆる MCP サーバーの間に配置する、透過的な stdio プロキシです。読み取りはそのまま通過します。共有リソースを消費する呼び出し(実行の開始、注文の支払い、指定した sha のファイルへの書き込み、行の更新)は、まず調停されます。別のエージェントがすでにそのリソースのバージョンを保持している場合、呼び出しはツールに届かず、エージェントには証明書付きのわかりやすいエラーが返されます。
マルチエージェントシステムにおける更新の消失、つまり、それぞれ独自のポリシーの下で動作する2つのエージェントが同じものを二重に消費してしまう問題を解決します。
agent ──stdio──▶ pranaxis-mcp ──stdio──▶ your MCP server ──▶ tool
│
└── verdict (software, or the Pranaxis chip)
インストール
pip install pranaxis-mcp-gateway # or: uvx pranaxis-mcp-gateway
使い方
サーバーを子コマンドとして指定し、サーバーの代わりにゲートウェイを MCP クライアントに登録します。エージェントごとにゲートウェイを1つ用意し、それぞれに独自の --agent-id を指定します。同じマシン上のすべてのゲートウェイでバージョン状態を共有します。Claude Code と AMD Ross Vivado サーバーの例:
claude mcp add vivado-mcp --scope project --transport stdio --env VIVADO_PATH=/path/to/vivado -- \
pranaxis-mcp --agent-id agent-a --rules vivado-ross -- vivado-mcp-server --stdio-bridge
GitHub MCP server:
pranaxis-mcp --agent-id agent-a --rules github-official -- npx -y @modelcontextprotocol/server-github
拒否された呼び出しは、次のようなメッセージとともに isError: true を返します。
DENIED by the Pranaxis consistency verifier.
Resource 'owner/repo/main/README.md' version abc123 is being consumed by another agent
(holder: agent-a; their request: agent-a-3f2c...). Certificate: ...
Your call did NOT reach the tool. Do not retry the same write; read the current state and work from it.
ツールの説明には、書き込みが調停されることをエージェントが認識できるよう注記が追加されます。テストでは、エージェント(異なる2つのモデル)は拒否後にむやみに再試行せず、状態を読み取って別のアクションを選択しました。
ルール:何が消費にあたるか
ルールはデータであり、MCP サーバーごとに1つの JSON ファイル(src/pranaxis_gateway/rules/)を用意します。各ルールではツールを指定し、正規表現で引数を照合し(名前付きグループはフィールドになります)、テンプレートからリソース名を生成し、任意で引数からバージョンを取得します(例:GitHub の以前の blob sha)。release ルールでは、どの応答によってリソースが完了したとみなされるかを指定します。完了したリソースは、保持者が次の呼び出しを行って結果を取得するか、猶予期間が経過するまで(--grace、既定値は600秒)、保持者のもとに残ります。誰かが結果を読む前に、他の人がその結果を消去することはありません。
同梱ルール:vivado-ross(AMD Ross Vivado MCP サーバー)、github-official、postgres-generic。どのルールにも一致しない呼び出しはそのまま通過し、passthrough として記録されます。他のサーバー向けルールの提供も歓迎します。
検証器
--verifier stub(既定):ソフトウェアのリファレンス実装です。保持者は状態ファイルを通じて共有されます。判定には物理測定が含まれません。--verifier fam --fam-endpoint host:port:Pranaxis の物理検証器です。AMD Zynq UltraScale+ / Kria デバイス上のリングオシレーターブロックが調停を測定し、シーブ、周波数、許容誤差、タイミングを含む証明書を返します。このハードウェアは別製品(https://pranaxis.eu)であり、このリポジトリにはゲートウェイと、ゲートウェイが使用する HTTP コントラクトのみが含まれます。
証明書
すべての判定は ross_demo_YYYYMMDD.jsonl(--log-file で名前を変更可能)に追記されます。記録される内容は、エージェント、リソース、バージョン、判定、理由、競合するリクエスト、証明書 ID、物理検証時の測定データ、プロキシのレイテンシーです。読み取り専用の呼び出しは passthrough として記録されます。
テスト
python tests/test_two_agents.py --verifier stub # two agents, Vivado-like server: P1..P4
python tests/test_rules_generic.py # GitHub and SQL rule files
ステータスとロードマップ
0.3:ローカルモード(エージェントごとに1つのプロキシ、stdio)、宣言型ルール、保持者の解放/猶予期間、jsonl ログ。ZUBoard 1CG 上で物理検証器を使った測定(事前登録した実行10回中10回)と、AMD Ross 上で実際のエージェント2つを使った測定を実施済み。 次の予定:セントラルモード(すべてのエージェント向けの単一ネットワークゲートウェイ、監査 API)、Kria K26 上の組み込みモード。
知的財産とライセンス
コード:Apache-2.0。調停手順と物理デバイスはスペインの特許出願 P202631184 および P202631345(ライセンシー:Arignatxa S.L.)の対象です。ソフトウェア検証器を使ったこのゲートウェイの使用は無料です。物理検証器のビットストリームはこのリポジトリに含まれません。「Pranaxis」は商標出願(M4406608)です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。