DEV Community

Cover image for Apidog A2Aデバッガーでエージェント間(A2A)プロトコルをデバッグする方法
Akira
Akira

Posted on • Originally published at apidog.com

Apidog A2Aデバッガーでエージェント間(A2A)プロトコルをデバッグする方法

他のAIエージェントと対話するAIエージェントを構築していると、すぐに「エージェント間で実際に何が送受信されているのか」を確認しづらい問題にぶつかります。コンソールログは断片的で、ブラウザのネットワークタブでは構造化フィールドを追いにくく、専用テストスクリプトは仕様変更ですぐ古くなります。ApidogのA2Aデバッガーを使うと、Agent2Agent(A2A)プロトコルのエージェントカードURLを貼り付け、接続し、メッセージを送信し、応答を3つのビューで確認できます。

今すぐApidogを試す

このガイドでは、A2Aデバッガーでできること、最初のエージェントへの接続手順、リクエストとレスポンスの確認方法、そしてApidogの既存のMCPサーバーテストツールとの使い分けを実装目線で説明します。A2AとMCPの全体像を先に確認したい場合は、ApidogのMCPとA2Aに関する詳細な記事も参考になります。

A2Aとは何か(要約)

A2A(Agent2Agent)は、エージェント間通信のためのオープンプロトコルです。主に次の内容を定義します。

  • エージェントが自身の能力をエージェントカードとして公開する方法
  • 別のエージェントがそのカードを使って接続する方法
  • メッセージやファイル添付を交換する方法
  • タスクのステータスを報告する方法

HTTPがWeb上の通信の共通レイヤーであるように、A2Aはエージェント間トラフィックの共通レイヤーとして機能します。たとえば、データパイプライン内のLangGraphエージェントが、別チームのCrewAIエージェントに内部実装を知らずにリクエストを送る、といった構成を実現できます。

MCP(Model Context Protocol)は、単一のエージェントにツールやリソースへのアクセスを提供するためのプロトコルです。一方、A2Aはエージェント同士の通信に焦点を当てます。違いを詳しく確認したい場合は、MCPとA2Aの違いの解説を参照してください。

A2Aデバッガーでできること

A2AデバッガーApidog内で利用できる、A2Aエンドポイント用のビジュアルデバッグ環境です。本番ワークフローに組み込む前に、接続、認証、メッセージ送信、応答構造を確認できます。

主な機能は次のとおりです。

  • エージェントカード接続

    URLを貼り付けて「接続」をクリックすると、エージェント名、説明、機能、宣言されたスキル、プロトコルバージョンを確認できます。カード形式が不正な場合は接続エラーとして検出できます。

  • メッセージ送信

    プレーンテキストを送信し、必要に応じてファイル添付やカスタムメタデータを追加できます。

  • 3つの応答ビュー

    プレビュー、コンテンツ、生データの3種類で同じ応答を確認できます。

  • 認証設定

    ベアラートークン、基本認証、カスタムヘッダー経由のAPIキーをUIから設定できます。

  • カスタムヘッダー

    ゲートウェイ認証、テナントID、トレースID、ビジネスパラメータなどをHTTPヘッダーとして追加できます。

  • セッション履歴

    送信したメッセージと応答がセッション内に残るため、同じ接続で複数のケースを比較できます。

curlコマンドを手書きする必要はありません。ApidogがJSON-RPCエンベロープ、SSEストリーミング(エージェントがサポートしている場合)、応答の解析を処理します。

A2Aデバッガー画面

ステップ1:最初のA2Aエージェントに接続する

デバッガーを開く前に、次の3つを準備します。

  1. 最新のApidogクライアント

    A2Aデバッガーを使うには、対応バージョンのApidogが必要です。未インストールの場合は、Apidogをダウンロードしてください。

  2. エージェントカードのURL

    A2A準拠エージェントの標準的なエントリポイントです。ローカル開発では、たとえば次のようなURLになります。

   http://localhost:3000/.well-known/agent.json
Enter fullscreen mode Exit fullscreen mode
  1. 認証情報(必要な場合) ベアラートークン、APIキー、基本認証情報などを用意します。

接続手順は次のとおりです。

  1. Apidogを開く
  2. A2Aデバッガーページに移動する
  3. 上部の入力欄にエージェントカードURLを貼り付ける
  4. 必要に応じて認証情報やヘッダーを設定する
  5. 接続をクリックする

有効なエージェントカードが返ると、ステータスが接続済みになり、パネルに次のようなメタデータが表示されます。

  • エージェント名
  • 説明
  • 機能
  • 宣言されたスキル
  • プロトコルバージョン

接続に失敗した場合は、次を確認してください。

  • URLが正しいか
  • エージェントプロセスが起動しているか
  • ブラウザでURLにアクセスするとJSONが返るか
  • エージェントカードに必須フィールドがあるか
  • GitHubのA2Aプロトコル仕様とカード構造が一致しているか
  • ディスカバリーエンドポイントで認証が必要な場合、Apidog側に資格情報を設定しているか

ステップ2:テストメッセージを送信する

接続できたら、メッセージタブを開きます。チャットUIと同じ感覚でプロンプトを入力します。

例:

共有ナレッジベースにある最新の3つの顧客フィードバックを要約し、サポートチーム向けに1段落の返信を作成してください。
Enter fullscreen mode Exit fullscreen mode

送信前に、必要に応じて次を追加します。

ファイル添付

クリップアイコンからファイルを選択します。デバッガーはエージェントが宣言している入力タイプを確認し、サポートされていないファイルタイプを事前に拒否します。これにより、不要な415エラーの往復を減らせます。

カスタムメタデータ

メッセージごとのコンテキストをキーと値で追加できます。

例:

priority: high
tenant: acme-corp
locale: ja-JP
Enter fullscreen mode Exit fullscreen mode

これらはA2Aリクエストエンベロープに含まれ、エージェント側のハンドラーが読み取れる場合に利用されます。

準備できたら、送信をクリックします。Apidogは入力内容をA2Aメッセージ構造にラップし、エージェントへ送信して応答を待ちます。

A2Aメッセージ送信画面

ステップ3:3つのビューで応答を確認する

A2Aの応答は、プレーンテキスト、構造化JSON、ファイル参照、またはそれらの組み合わせで返ることがあります。Apidogでは、同じペイロードを3つのビューで確認できます。

プレビュー

構造化フィールドをツリー形式で表示します。次のようなネストされた情報を追うときに便利です。

  • タスクID
  • ステータス
  • 成果物
  • 履歴
  • エラー詳細

コンテンツ

人間が読む本文を表示します。エージェントがテキストを返した場合、実際にユーザーへ表示する内容に近いビューです。

生データ

完全なJSON-RPCペイロードを表示します。仕様準拠の確認、バグレポート、フィールド名やエスケープ文字の確認に使います。

デバッグ時は、まず生データを確認するのがおすすめです。たとえば次のように切り分けられます。

  • プレビューは正しいがコンテンツが空

    → エージェントがApidogでレンダリング可能だが、テキストとして平坦化できない型のアーティファクトを返している可能性があります。

  • 生データにerror.messageがある

    → エージェント側がリクエストを拒否しています。エラーコードとメッセージを確認します。

  • 応答構造は正しいが内容が期待と違う

    → トランスポートではなく、プロンプト、モデル、エージェントロジック側の問題として切り分けられます。

セッション履歴は左側のパネルに表示されます。古い文脈が次のテストに影響しないようにしたい場合は、クリアをクリックして履歴をリセットします。

認証:3つの一般的なパターン

本番環境のA2Aエンドポイントは、多くの場合、認証の背後にあります。Apidogでは、よく使われる3つのパターンをUIから設定できます。

ベアラートークン

ホスト型エージェントでよく使われる形式です。認証パネルでベアラートークンを選択し、トークンを貼り付けます。

Apidogは各リクエストに次のヘッダーを追加します。

Authorization: Bearer sk-agent-7f3e9a...
Enter fullscreen mode Exit fullscreen mode

基本認証

ユーザー名とパスワードで保護された内部システムやレガシーシステムで使われます。基本認証を選択し、ユーザー名とパスワードを入力すると、ApidogがBase64エンコード済みのAuthorization: Basic ...ヘッダーを生成します。

カスタムヘッダー経由のAPIキー

エージェントが非標準のヘッダー名を期待する場合は、ヘッダーセクションに手動で追加します。

例:

X-Agent-Key: your-api-key
X-Tenant-Id: acme-corp
X-Request-Id: debug-001
Enter fullscreen mode Exit fullscreen mode

CSRFトークン、テナントID、リクエスト署名など、ゲートウェイ固有のヘッダーも同じ方法で追加できます。

エージェント資格情報の管理については、Apidog AIエージェント資格情報ガイドで、ローテーション、スコープ、コミットしてはいけない情報について説明しています。

カスタムヘッダーとメタデータ:どちらをいつ使うか

A2Aリクエストには、追加データを置ける場所が2つあります。どちらもキーと値を扱えますが、属するレイヤーが異なります。

チャネル 場所 用途
カスタムヘッダー HTTPリクエストヘッダー ゲートウェイ認証、可観測性(X-Request-Id)、機能フラグ
メタデータ A2Aメッセージペイロード エージェントが読むメッセージごとのコンテキスト(優先度、テナント、ロケール)

判断基準はシンプルです。

  • リバースプロキシ、APIゲートウェイ、監視基盤が使う値

    ヘッダーに置く

  • エージェントのタスクハンドラーが使う値

    メタデータに置く

この2つを混同すると、「ヘッダーに入れたのにエージェントが読めない」「メタデータに入れたのにゲートウェイが認識しない」といった問題が起きます。

ApidogにおけるA2AデバッガーとMCPサーバーテストの比較

ApidogはA2AデバッガーとMCPテストフローの両方を提供しています。ただし、対象とするプロトコルとテスト内容は異なります。

ツール プロトコル テスト項目 使用する状況
A2Aデバッガー Agent2Agent 接続性、メッセージ交換、タスクステータス エージェントが他のエージェントを呼び出すマルチエージェントシステムを構築する場合
MCPサーバーテスト Model Context Protocol ツール呼び出し、リソースアクセス、プロンプトテンプレート エージェントにツールやリソースを公開するMCPサーバーを構築する場合

どちらを使うべきか迷った場合は、MCPとA2Aのガイドを確認してください。

短くまとめると、次のようになります。

  • MCP:エージェントが外部システム、ツール、リソースへアクセスするためのプロトコル
  • A2A:エージェントが他のエージェントと通信するためのプロトコル

MCP側のワークフローについては、MCPサーバーテストプレイブックで、Apidogにおける手動および自動テストの流れを説明しています。現実のエージェントシステムでは、A2Aによるエージェント間連携と、MCPによるツールアクセスを組み合わせるケースが多くなります。

一般的なデバッグパターン:タスクの往復を切り分ける

「エージェントが期待通りに応答しない」ときは、次のループで確認します。

  1. A2Aデバッガーを開く
  2. エージェントカードURLで接続する
  3. エージェントカードに期待するスキルが表示されているか確認する
  4. そのスキルをトリガーする最小限のメッセージを送る
  5. 最初はファイルやメタデータを付けず、プレーンテキストだけで試す
  6. 応答の生データを確認する
  7. 期待するフィールドが欠落している場合は、エージェントコード側を確認する
  8. 応答構造は正しいが内容が違う場合は、プロンプトやモデル出力を確認する

この流れにより、問題を次のどちらかに分離できます。

  • 通信、認証、A2Aエンベロープの問題
  • エージェントのロジック、プロンプト、モデル応答の問題

これは、APIを呼び出すAIエージェントをテストする方法で説明している「非難する前に分離する」デバッグループと同じ考え方です。まず通信を確認し、その後でロジックをデバッグします。

AIワークフローにおける位置付け

マルチエージェントシステムでは、エージェント同士の通信を通常のAPIトラフィックと同じように観測、検証、デバッグできる必要があります。AIエージェントは新しいAPIコンシューマーであるという記事では、エージェントトラフィックを第一級のAPI利用者として扱う理由を説明しています。

また、AIエージェント向けAPIの設計では、APIの利用者が人間の開発者ではなくLLM駆動型エージェントになる場合に、API契約やエラーメッセージ設計をどう変えるべきかを解説しています。

A2Aデバッガーは、ApidogのMCPクライアントビジュアルデバッガーと同じく、SDK内部に隠れがちなエージェント通信を可視化するためのツールです。

エージェントを接続し、送受信されるデータを確認し、本番環境に到達する前にバグを修正できます。

Apidogは無料でダウンロードでき、A2Aデバッガーは標準クライアントに含まれています。別途ライセンスやプランは不要です。

よくある質問

A2Aデバッガーは無料ですか?

はい。標準のApidogクライアントにバンドルされています。Apidogをダウンロードし、対応バージョンを使用していれば、A2Aデバッガーがサイドパネルに表示されます。

あらゆるフレームワークで書かれたエージェントに対応していますか?

有効なA2Aエージェントカードを公開しているエージェントであれば利用できます。A2Aはフレームワークに依存しないため、LangGraph、CrewAI、AutoGen、カスタムのPythonまたはGoエージェントでも、A2A仕様に準拠していれば動作します。

セッションを保存して後で再生できますか?

セッションはデバッガーを開いている間は保持されます。長期保存したい場合は、生データの出力をコピーしてテスト成果物として保存してください。完全なセッションエクスポートはロードマップにあります。

ストリーミング応答はどのように処理されますか?

エージェントがA2A仕様に基づくSSEストリーミングをサポートしている場合、デバッガーはチャンクが到着するたびに読み取り、プレビューとコンテンツをリアルタイムで更新します。ストリームが閉じると、生データに組み立てられた応答が表示されます。

メタデータフィールドとヘッダーセクションの違いは何ですか?

ヘッダーはHTTPレイヤー、メタデータはA2Aメッセージレイヤーです。ヘッダーはゲートウェイやリバースプロキシに届き、メタデータはエージェントのタスクハンドラーに届きます。判断に迷った場合は、前述の比較表を参照してください。

Apidogはエージェントの応答をApidogのサーバーにログ記録しますか?

いいえ。Apidogはローカルクライアントとして動作します。お使いのマシンとエージェント間のトラフィックは、Apidogのインフラストラクチャを通過しません。

A2Aデバッガーで、異なるネットワーク上のホスト型エージェントをテストできますか?

はい。ネットワークパスが開いていれば可能です。デバッガーは通常のHTTPクライアントと同じようにアウトバウンドHTTPSリクエストを送信します。エージェントがVPNの背後にある場合は、そのVPNに接続してからテストしてください。

バグ報告や機能リクエストはどこに送ればよいですか?

Apidogに関するフィードバックは、Apidogのフィードバックチャネルに送ってください。A2A仕様そのものに関するリクエストは、A2AプロトコルのGitHubリポジトリに提出してください。

今すぐ試す

まず、アクセスできる最もシンプルなA2Aエージェントを用意します。まだエージェントがない場合は、A2Aリファレンス実装に含まれるサンプルサーバーをローカルで実行できます。

最小の確認手順は次のとおりです。

  1. サンプルまたは既存のA2Aエージェントを起動する
  2. エージェントカードURLを確認する
  3. ApidogのA2AデバッガーにURLを貼り付ける
  4. 接続をクリックする
  5. helloのような短いメッセージを送る
  6. プレビュー、コンテンツ、生データの3つのビューを確認する

これが最小限のエンドツーエンドループです。ここから、実際のプロンプト、ファイル添付、メタデータ、マルチエージェントワークフローへ段階的に広げていけます。

A2AデバッガーをApidogのAPIおよびMCP機能と組み合わせることで、HTTP、MCP、A2Aというエージェントシステムの主要な通信レイヤーを1つのインターフェースで確認できます。

Top comments (0)