Cloudflareは2026年7月13日、Agents SDKのMCPクライアントがelicitation要求を処理できるようになったと発表した。MCPサーバーはツール処理中に追加のユーザー入力や、外部Webフローを開く同意を要求できる。

form modeは構造化された非機密情報の入力、URL modeは第三者認可や支払いなど、Agentやモデルから隔離すべき外部操作に使う。実装を誤ると、秘密情報の収集や悪意あるURLへの誘導につながる。

何が変わったか

addMcpServerで接続したMCPサーバーに対し、this.mcp.configureElicitationHandlers()でformとURLのhandlerを登録できる。handlerを登録したmodeだけが接続能力として通知され、Durable Objectの休止後も登録情報が維持され、onStart()でcallbackを再接続する。

変更前後の差

項目従来Elicitation対応後
追加入力ツール失敗または独自実装MCP標準要求を処理
構造化入力個別UIform mode
外部認可独自リンクURL modeと明示同意
応答成功・失敗中心accept、decline、cancel
再接続独自管理登録modeを保持しhandler再接続

誰に影響するか

MCP経由で予約、承認、設定変更、認可、支払い、追加質問を行うAgent、ブラウザーとDurable ObjectをWebSocketで接続するアプリ、MCPサーバーを第三者から受け入れるプラットフォームに影響する。

期限

強制移行期限はない。利用するにはagents@latestへ更新し、対応handlerを実装する。handlerなしのAgentはelicitation能力を通知しないため、既存接続を壊さず段階導入できる。

必要な対応

form modeではパスワード、APIキー、アクセストークン、支払い資格情報を要求しない。URL modeではサーバー名、要求理由、ホスト、完全URLを表示し、利用者が同意するまで開かない。URLをモデルの会話本文やtool resultへ混ぜず、ブラウザーの隔離された経路で扱う。

実装・移行手順

  1. agents@latestへ更新し、互換性テストを行う。
  2. 対応するform・URL modeだけhandlerを登録する。
  3. MCP要求を接続中の利用者UIへ転送する。
  4. formのrequestedSchemaを検証し、非機密項目だけを表示する。
  5. URLのscheme、host、長さ、許可ポリシーを検証する。
  6. サーバー名、理由、完全URLを表示して明示同意を得る。
  7. acceptdeclinecancelを区別して返す。
  8. タイムアウト時にpending要求を解放する。
  9. Durable Object再起動後にhandlerが再接続されることを試験する。
  10. 要求元、mode、結果、時間を監査ログへ残す。

失敗しやすい点

  • form modeで秘密情報を入力させる
  • URLを自動prefetchして外部へアクセスする
  • ホスト名を省略して利用者へ表示する
  • acceptを外部処理完了とみなす
  • declineとcancelを同じ結果にする
  • handlerがないmodeを能力として通知する
  • タイムアウト処理をせずPromiseを残す
  • hibernation後のcallback再接続を試験しない

リスク

悪意あるMCPサーバーは、正規サービスに似たURLや過剰な入力フォームを送る可能性がある。モデルが要求理由を自然な文章で補強すると、利用者が誤って同意しやすい。UIはモデルの説明ではなく、実際のサーバーIDとURLを信頼境界として表示する。

評価方法

  • elicitation要求の完了・拒否・取消率
  • タイムアウト件数
  • schema不一致の遮断率
  • 禁止フィールド検知件数
  • 非HTTPS・不許可ホストの遮断率
  • 同意前URLアクセス件数が0であること
  • hibernation後の復旧成功率
  • 要求からユーザー応答までの時間

ロールバック

handler登録をFeature Flagで無効にすると、Agentはelicitation能力を通知しなくなり、MCPサーバー側のfallbackへ戻せる。SDK更新自体に問題がある場合は直前の固定versionへ戻す。pending要求はcancelとして解放し、外部処理を自動継続しない。

編集部分析

ElicitationはAgentを一方向の自動処理から、利用者の同意を挟む業務フローへ進める重要な機能である。同時に、フィッシングや秘密情報収集の新しい入口になる。安全性はMCPサーバーを信頼することではなく、modeごとに入力可能な情報と表示方法を制限することで確保する必要がある。

実務チェックリスト

  • [ ] Agents SDKを固定versionで更新した
  • [ ] 必要なmodeだけhandlerを登録した
  • [ ] formで秘密情報を禁止した
  • [ ] URLのschemeとhostを検証した
  • [ ] サーバー名・理由・完全URLを表示した
  • [ ] 明示同意前にURLへアクセスしない
  • [ ] accept・decline・cancelを区別した
  • [ ] タイムアウトとhibernation復旧を試験した
  • [ ] 監査ログと緊急無効化を実装した

一次情報