MCP Fusion/Integrations and federation/A2Aブリッジ
A2Aブリッジ
MCP Fusion コネクタを Agent2Agent サービスとして公開します。レジストリから Agent Card をコンパイルし、メッセージとタスクの JSON-RPC メソッドを処理して、HTTP 経由で結果をストリーミングします。
MCP はツールの境界です。A2A はエージェントの境界です。MCP Fusion の A2A パッケージを使うと、ツールを書き直さずにコネクタを Agent2Agent ネットワークへ参加させられます。レジストリが機能の情報源であり続け、ブリッジはエージェント向けのタスクプロトコルを公開します。
Agent Card のコンパイル
import { compileAgentCard, A2AHandler } from '@mcpfusion/a2a';
const card = compileAgentCard(
{
name: 'billing-agent',
version: '1.0.0',
url: 'http://localhost:3001',
},
registry.getBuilders(),
promptRegistry,
resourceRegistry,
);コンパイラーは、ビルダー名とアクションメタデータからスキルを導出します。カードは /.well-known/agent-card.json で提供され、従来のパスは /.well-known/agent.json です。A2A JSON-RPC リクエストは /a2a を使用し、パッケージはプロトコル 1.0.0 として自身を識別します。
オプションの bridge 設定は、別のブリッジ経由でカードへ到達する方法を表します。2 つ目の機能一覧を手動で管理しないでください。MCP を提供するものと同じビルダーからコンパイルすれば、カードは実際のレジストリと一致します。
JSON-RPC ハンドラー
ハンドラーは 2 つの責務を持つ executor を使用します。
const executor = {
execute: async (toolName: string, args: Record<string, unknown>) =>
registry.routeCall(context, toolName, args),
hasToolName: (name: string) => registry.has(name),
};
const handler = new A2AHandler(executor);
const response = await handler.handleRequest(jsonRpcRequest);サポートされるメソッドには、message/send、message/stream、tasks/get、tasks/cancel、tasks/list、tasks/resubscribe、プッシュ通知設定の作成、取得、一覧表示、削除、agent/getAuthenticatedExtendedCard が含まれます。ブリッジは JSON-RPC を検証し、ツール実行エラーを A2A エラーコードへマッピングし、MCP ツール名を executor の境界の内側に保持します。
タスクのライフサイクル
TaskManager はハンドラーが使用するタスク状態を管理します。運用メソッドは次のとおりです。
createTask(contextId, message?)updateStatus(taskId, status)addArtifact(taskId, artifact)getTask(taskId)listTasks(request)cancelTask(taskId)
タスク TTL と最大タスク数を設定します。これはプロセス内のマネージャーです。ライフサイクルに合ったプロセスモデルの背後でブリッジを使用するか、A2A 境界に永続的なタスク状態を置いてください。
ストリーミングトランスポート
StreamableHttpTransport は A2AHandler とオプションのストリーミング executor をラップします。message/stream はパッケージの formatSSEEvent、formatSSEErrorEvent、パーサーヘルパーを使ってサーバー送信イベントを発行します。A2A タスク層がストリームのライフサイクルを管理する間、MCP サーバー自体はステートレスのままにできます。
エラーモデル
ブリッジは、無効な JSON-RPC、サポートされない操作、存在しないタスク、キャンセルできないタスク、サポートされないプッシュ通知、無効なエージェントレスポンス、コンテンツタイプに対する型付きエラーを公開します。A2A エラーコード表、拡張ヘッダー X-A2A-Extensions、SSE ヘッダー、プロトコル定数もエクスポートするため、統合側で提供される値と同じ値を使ってテストできます。
セキュリティ境界
A2A ブリッジは MCP 認証の代わりにはなりません。executor の前段に JWT、API キー、ゲートウェイ認可のいずれかを置き、Agent Card にはデプロイで公開を許可するツールだけを反映させます。このブリッジが Swarm の背後にある場合、委任トークンと名前空間分離は A2A 実行前に行われます。公開する場合は、タスクメッセージを解析する前に HTTP ルートを認証してください。
MCP と A2A の併用
1 つのコネクタで次を公開できます。
| Consumer | Surface |
|---|---|
| Claude, Cursor, any MCP client | MCP ツール、リソース、プロンプト |
| Another agent platform | Agent Card と A2A タスク |
| Vinkius Cloud | コネクタトークン、ガバナンス、コンソール制御 |
ビジネスロジックは同じハンドラーと Presenters に残ります。変わるのはエッジのプロトコルアダプターです。
次のステップ
- Federated handoff with Swarm: セッションを別のエージェントへルーティング
- Authentication: 両方のプロトコル境界を保護
- Introspection: カードをレジストリと一致させる
