Agent2AgentProtocol_MCP_servers について
Agent2AgentProtocol_MCP_serversは、航空会社エージェントとMCP対応のWeb・データベースサーバーを使った旅行予約のPythonシミュレーションです。予約エージェントが構造化メッセージで複数社の料金を集め、モックデータを使って価格順に並べます。
主な機能
- 01航空会社と予約エージェントのシミュレーション
- 02Web・データベースサーバーのモデル化
- 03構造化されたエージェントメッセージの交換
- 04サービス料金の収集と並べ替え
- 05サーバー停止時のエラー処理
活用シーン
- 01複数航空会社の航空券価格の比較
- 02提供可能なホテル料金の検索
- 03Pythonでのモジュール型エージェント通信の練習
MCP 対応
サービス料金のリクエストに応答するMCPサーバーをシミュレートします。エージェント間の旅行予約フローの一部として動作します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ユーザーがフライト、ホテル、レンタカーを予約したいと考えている旅行予約システムを構築します。 このプロジェクトでは、MCP サーバー(Web サーバーとデータベースサーバー)を介して航空会社と接続する旅行エージェントをシミュレートします。 メッセージを使ってやり取りし、価格を比較して、お客様に最適な選択肢を見つけます。
この例では、データクラス、列挙型、サーバー、エージェントなどのさまざまな要素が、Python でうまく連携する方法を紹介します。
🔥 関連する手順
- 共通のデータ構造を定義する 列挙型(ServiceType、MCPType、AgentStatus)を作成し、サービス名とステータスを標準化します。
データクラスの AgentMessage を使うと、エージェントは送信者、受信者、タイムスタンプなどの構造化された情報を簡単に送信できます。
- MCP サーバーを設定する MCPServer はバックエンドサーバーとして機能します。
サーバーの種類(Web または Database)に応じて、価格取得などのさまざまなリクエストへの応答方法を決定します。
サーバーがオフラインの場合は、エラーを返します。
- エージェントカードを作成する AgentCard は、航空会社またはサービスプロバイダーを表します。
各エージェントには、次のものがあります。
Web サーバー
データベースサーバー
対応するサービス(フライト、ホテルなど)
独自の認証トークン
エージェントはメッセージを生成し、他のエージェントからの応答を検証できます。
- 航空会社のエージェントを接続する AirlineAgent はエージェントカードを航空会社の業務に接続します。
予約エージェントからのリクエストが適切な場所に渡されるようにします。
- 予約エージェントを設定する BookingAgent は旅行検索エンジンとして機能します。
複数の航空会社に問い合わせて、フライトやホテルの最安値を見つけます。
- 最適な選択肢を見つける find_best_option() メソッドを使って、次の処理を行います。
予約エージェントが航空会社に問い合わせる
価格を収集する
最も安いプランを選ぶ
結果をお客様に表示する
🛠️ 使用例 メインプログラムでは、次の処理を行います。
価格が異なる 2 社の航空会社(Emirates と Air India)を作成します。
両社に接続する予約エージェント(TravelMaster)を 1 つ作成します。
ユーザーがフライトを検索すると、次の処理が行われます。
TravelMaster が価格確認リクエストを送信します。
応答を収集します。
最安値のフライトを表示します。
👉 出力例:
yaml Copy Edit 最適なフライトの選択肢:
- AirIndia:250 USD
- Emirates:300 USD (Air India はホテルを提供していないため、ホテルの選択肢は空です。)
📝 まとめ
| 要素 | 役割 |
|---|---|
| ServiceType、MCPType、AgentStatus | 標準用語を定義する |
| AgentMessage | 通信を構造化する |
| MCPServer | バックエンドサービスを処理する |
| AgentCard | サービスプロバイダーを表す |
| AirlineAgent | 航空会社をエージェントに接続する |
| BookingAgent | 最適な旅行の選択肢を見つける |
このシステムは、非常にシンプルでわかりやすい形で、現実の予約ポータルのミニチュアのように動作します。
🏁 まとめ このプロジェクトでは、次のようなクリーンなコーディング原則を使って、Python で現実世界のエージェント間通信をシミュレートする方法を紹介します。 ✅ モジュール化されたクラス ✅ メッセージに使うデータクラス ✅ ステータス管理に使う列挙型 ✅ 簡単なエージェント間通信 ✅ スマートなサーバー処理
シンプルな設計ですが、後から本格的なアプリケーションへ拡張するうえで非常に有用です(リアルタイム予約や決済システムなどを追加できます)。
🌟 この設計のメリット 関心の分離:各クラスが独自の責務(サーバー、エージェント、予約)を処理します。
拡張性:航空会社、ホテル、レンタカーサービスを簡単に追加できます。
エラー処理:サーバーが利用できない場合、エラーメッセージを返します。
構造化された通信:メッセージの受け渡しが明確で一貫しています。
モックデータ:実際の API がなくても簡単にテストできます。
実践的な学習:実際の Web サービスの通信フローを模倣します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。