Multi-Component System with A2A and MCP Server Integration について
React フロントエンド、FastAPI API、プロキシ、A2A サーバー、MCP サーバーを組み合わせた実験向けのエージェントシステムです。A2A 連携に加え、MCP のツール、リソース、プロンプトと SSE 更新を備えています。
主な機能
- 01React/TypeScript のレスポンシブダッシュボード
- 02FastAPI バックエンドと Node.js プロキシ
- 03A2A のタスクとメッセージに対応
- 04MCP のツール、リソース、プロンプト
- 05SSE によるリアルタイム更新
活用シーン
- 01エージェント間のタスクとメッセージを実験
- 02MCP クライアント経由でツールやリソースを利用
- 03API メソッドとシステム状態を確認
MCP 対応
統合された MCP サーバーは、プロキシ経由でクライアントにツール、リソース、プロンプトを提供し、SSE 更新にも対応します。フロントエンドには MCP クライアント実装も含まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
A2A および MCP サーバー統合を備えたマルチコンポーネントシステム
このプロジェクトは、最新のウェブテクノロジーを使用して構築された、拡張性の高いマルチコンポーネントシステムです。
アーキテクチャの概要
このシステムは、連携して動作する複数の疎結合コンポーネントで構成されています。
- フロントエンド:Vite で構築された、Material-UI を使用する React/TypeScript アプリケーション
- バックエンド API:API エンドポイントを提供する Python/FastAPI サービス
- プロキシサーバー:適切なサービスにリクエストをルーティングする Node.js プロキシ
- A2A サーバー:Google A2A プロトコルに準拠したエージェント間サーバーの実装
- MCP サーバー:ツール、リソース、プロンプトを提供する Anthropic Model Context Protocol サーバー
コンポーネント
フロントエンド
- TypeScript を使用したモダンな React アプリケーション
- コンポーネントのスタイリングに Material-UI を使用
- Zustand による状態管理
- レスポンシブなダッシュボード UI
- A2A プロトコルと MCP プロトコルの両方に対応するクライアント実装
バックエンド API
- FastAPI(Python)バックエンド
- ヘルスチェックエンドポイント
/api/docに Redoc による API ドキュメントを提供/api/api/v1/methodsに API メソッドの一覧を提供
プロキシサーバー
- Node.js ベースのリバースプロキシ
- リクエストを適切なサービスにルーティングします。
- フロントエンドのリクエスト → Vite 開発サーバー
- API リクエスト → FastAPI バックエンド
- A2A リクエスト → A2A サーバー
- MCP/SSE リクエスト → MCP サーバー
- リアルタイム通信のための WebSocket サポート
A2A サーバー
- Google A2A プロトコルの実装
- エージェント間の通信を可能にします
- タスク管理およびメッセージング機能を提供します
- 直接リクエストとストリーミング更新の両方をサポートします
MCP サーバー(Python)
- Anthropic Model Context Protocol の Python/FastAPI 実装
- エージェント向けにツール、リソース、プロンプトを提供します
- リアルタイム更新のための Server-Sent Events(SSE)をサポートします
- 2 つのパス構造(
/endpointと/sse/endpoint)
サーバー統合
A2A サーバーの統合
A2A サーバーは、プロキシサーバーを介してメインアプリケーションと統合されています。次のエンドポイントへのリクエストは A2A サーバーにルーティングされます。
/.well-known/agent.json:エージェントの情報と機能/tasks:JSON-RPC リクエスト用のタスク管理エンドポイント/agent-card/*:このパスへのすべてのリクエスト(すべての HTTP メソッド)を A2A サーバーにルーティングします
実装と使用方法の詳細については、A2A サーバーのドキュメントを参照してください。
MCP サーバーの統合
MCP(Anthropic Model Context Protocol)サーバーは、プロキシサーバーを介してメインアプリケーションと統合されています。次のエンドポイントへのリクエストは MCP サーバーにルーティングされます。
/sse/*:すべての SSE エンドポイント(ステータス、ツール、リソース、プロンプト)/sse:SSE イベントストリームエンドポイント
MCP サーバーは次を提供します。
- ツール API:アクションの実行に呼び出せる関数
- リソース API:ダウンロード可能な静的ファイルとデータ
- プロンプト API:LLM プロンプトを生成するためのテンプレート
- Server-Sent Events(SSE):リアルタイム更新とストリーミング
詳細については、MCP サーバーのドキュメントとMCP クライアントのドキュメントを参照してください。
開発
前提条件
- Node.js 20+
- Python 3.11+
- npm または yarn
アプリケーションの実行
アプリケーションは複数のサービスに分かれており、それぞれが独自のプロセスで実行されます。
-
API バックエンド:
cd api pip install -r requirements.txt python main.py -
フロントエンド開発サーバー:
cd frontend npm install npm run dev -
プロキシサーバー:
node proxy-server.js -
A2A サーバー:
cd a2a-server node simple-server.js # JavaScript implementation # or for TypeScript implementation (if compiled) # node dist/main.js -
MCP サーバー:
cd mcp-server pip install -r requirements.txt python mcp_server.py
テストの実行
A2A サーバーの統合テストを利用できます。
cd tests
node run-tests.js # Runs all A2A server tests
API エンドポイント
バックエンド API
GET /health:ヘルスチェックエンドポイントGET /api/v1/methods:利用可能な API メソッドの一覧GET /api/doc:API ドキュメント(Redoc)
A2A サーバー
GET /.well-known/agent.json:エージェントカード情報POST /tasks:タスク操作用の JSON-RPC エンドポイント:tasks/send:エージェントにメッセージを送信しますtasks/sendSubscribe:ストリーミング更新とともにメッセージを送信しますtasks/get:ID でタスク情報を取得しますtasks/cancel:実行中のタスクをキャンセルします
MCP サーバー
GET /statusまたはGET /sse/status:サーバーのステータスと利用可能なリソースGET /toolsまたはGET /sse/tools:利用可能なツールの一覧POST /tools/{name}またはPOST /sse/tools/{name}:ツールを実行しますGET /resourcesまたはGET /sse/resources:利用可能なリソースの一覧GET /resources/{name}またはGET /sse/resources/{name}:指定したリソースを取得しますGET /promptsまたはGET /sse/prompts:利用可能なプロンプトテンプレートの一覧POST /prompts/{name}またはPOST /sse/prompts/{name}:プロンプトを生成しますGET /sse:リアルタイム更新用の Server-Sent Events(SSE)接続
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。