# MQTT上のA2A

MQTT上のA2Aは、[Agent-to-Agent (A2A) プロトコル](https://a2a-protocol.org/latest/)をMQTTに適用するブローカーに依存しないトランスポートプロファイルです。標準化されたトピック規約、MQTT v5プロパティのマッピング、およびディスカバリ動作を定義しており、異なるフレームワークで構築されたAIエージェントが、相互にポイントツーポイントの統合を必要とせずにMQTTブローカーを介して登録、発見、協調できるようにします。

EMQXは、**A2Aレジストリ**という組み込み機能を通じてMQTT上のA2Aを実装しています。これは、ディスカバリトピックにパブリッシュされたエージェントカードをインデックス化し、エージェントの生存状況を追跡し、運用者向けの管理インターフェースを提供します。

::: warning 多くのリスナーマウントポイントとは非互換
A2Aレジストリは、[マウントポイント](../../../guides/configuration/listener.md#mountpoint)が設定されたリスナー経由で接続されたエージェントには対応していません。唯一の例外は、`acme/`のようにトピックレベルがちょうど1つのマウントポイントで、EMQXはこれを`$a2a`トピックのネームスペースプレフィックスとして解析します。その他のマウントポイントでは、マウントされたトピックが`$a2a/v1/`規約と一致しなくなり、エージェントカードはインデックス化、検証、生存状態の注釈なしに通常の保持メッセージとして保存されます。クライアントへのエラー報告はありません。
:::

## なぜMQTTでA2Aなのか

標準のA2AプロトコルはトランスポートにHTTPを使用します。これはクラウド環境では有効ですが、分散環境やIoT、エッジコンピューティングのようにエージェントが制約のあるデバイス上で動作したり、NATの背後にあったり、持続的なHTTP接続が困難な環境では制限となります。

MQTTはこれらの制約に直接対応しています：

- **軽量かつ効率的**：最小限のプロトコルオーバーヘッドで、低帯域幅かつ信頼性の低いネットワークに適しています。
- **ブローカー経由のルーティング**：エージェント同士が互いのアドレスを知る必要がなく、ブローカーがルーティングを担当します。
- **保持メッセージによるディスカバリ**：エージェントはエージェントカードを保持メッセージとしてパブリッシュし、専用のレジストリサービスなしに即座にサブスクライバーに提供されます。
- **ネイティブなプレゼンス検出**：MQTTのLast Will and Testament (LWT)により、エージェントが予期せず切断された際に自動的にオフラインを通知します。
- **集中認証**：EMQXの既存の認証および認可がすべてのエージェントトラフィックに一貫して適用されます。

## 主な機能

- 標準化された`$a2a/v1/discovery/`トピック上の保持メッセージによるエージェント登録とディスカバリ
- エージェントカードの表示、登録、管理を対話的に行うダッシュボードUI
- `emqx ctl a2a-registry`コマンドによるCLI管理
- 登録時にA2Aエージェントカードスキーマの検証をオプションで強制
- ブローカー管理の生存監視：EMQXはエージェント接続状態を反映する`a2a-status` MQTTユーザープロパティを付与
- MQTT v5のリクエスト／リプライ：エージェント間のタスク委譲のための標準化された`Response Topic`および`Correlation Data`規約

## 詳細情報

- [MQTT上のA2Aの仕組み](./architecture.md)：コンポーネント、トピックモデル、相互作用パターン
- [エージェントの管理](./manage-agents.md)：レジストリの有効化、エージェント登録、ダッシュボード、CLI、MQTTインターフェースの使用方法
- [MQTT上のA2A仕様](https://www.emqx.com/mqtt-for-ai/a2a-over-mqtt/specification/0.1/basic/mqtt_transport.html)：完全な規範的トランスポートプロファイル
