OpenAICloudflare Developer Platform2026/07/13 0:00

Agents, Workers - Agents can respond to MCP elicitation requests

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

AgentsがMCPのエリシテーション要求に応答可能に

Key Points

  • formとurlモード対応
  • onStartでハンドラ登録
  • 広告モードは永続化される

Summary

AgentsがModel Context Protocol (MCP) サーバーからのelicitation(ユーザー入力要求)に応答できるようになりました。formモードは構造化された非機密データの取得、urlモードはユーザー同意後に外部フロー(サードパーティ認可や支払い)を開く用途です。

Key Points

  • addMcpServerで登録したMCPサーバーに対してエリシテーションを処理可能。formurlの各モードに対してハンドラを登録する。
  • onStart()でmcp.configureElicitationHandlers({ form: ..., url: ... })を呼び、各ハンドラはPromise<ElicitResult>を返してUIでユーザー応答を解決する実装にする。
  • エージェントはハンドラを登録したモードのみを広告するため、未登録の場合はサーバーのフォールバックが使われる。
  • SDKは各MCPサーバー登録の広告モードをDurable Objectのハイバネーション後も保持し、コールバック関数はonStart()実行時に再接続される。
  • 実装例とブラウザ転送パターンはmcp-clientおよびmcp-elicitationサンプルを参照すること。

Action items for engineers

  • onStart内でハンドラを登録して、UIで受け取ったユーザー操作(submit/open/decline/cancel)をaccept/decline/cancelとして返す処理を実装する。
  • urlモードではユーザー同意後にブラウザでURLを開くフローを実装する。
  • 既存のDurable ObjectエージェントはonStart()でハンドラ再接続を行えば状態復帰できることを確認する。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

Agents、Workers — Agents が MCP のエリシテーション要求に応答可能に

Changelog — Cloudflare の新しい更新と改善

公開日: 2026-07-13

概要

Agents が Model Context Protocol (MCP) サーバーへ addMcpServer で接続している場合、サーバーからの「elicitation ↗」要求を処理できるようになりました。

  • エリシテーションは、MCP サーバーがツール呼び出しを処理中にユーザー入力を要求するための仕組みです。
  • form モードは構造化された非機密データを収集します。
  • url モードは、サードパーティの認可や支払いなどのアウトオブバンドフローを開く前に同意を求めます。

シーケンス(概要)

  • Server -> Agent: elicitation/create
  • Agent -> User: サーバー情報・理由・入力またはURLを表示
  • User -> Agent: 提出(Submit)、開く(Open)、拒否(Decline)、またはキャンセル(Cancel)
  • Agent -> Browser: 同意後に URL を開く(URL モード)
  • Agent -> Server: acceptdecline、または cancel
  • Server ->> Agent: 任意の URL 完了通知

ハンドラーの登録

サポートする各モードについて、onStart() 内でハンドラーを登録してください。接続は、設定されたハンドラーがあるモードのみを広告(advertise)します。ハンドラーが無い Agent はエリシテーション機能を広告しないため、サーバーはフォールバックを使用できます。

SDK は MCP サーバー登録ごとに広告されたモードを保存するので、Durable Object のハイバネーションをまたいで保持されます。コールバック関数はメモリ上に残り、onStart() が再実行されると再アタッチされます。

JavaScript 例

import { Agent } from "agents";

export class MyAgent extends Agent {
  onStart() {
    this.mcp.configureElicitationHandlers({
      form: (request, serverId) => this.forwardToUser(request, serverId),
      url: (request, serverId) => this.forwardToUser(request, serverId),
    });
  }

  forwardToUser(request, serverId) {
    // UI にリクエストを表示し、ユーザーの応答後に解決するように実装します。
    throw new Error(`Implement elicitation for ${serverId}: ${request.params.message}`);
  }
}

TypeScript 例

import { Agent } from "agents";
import type { ElicitRequest, ElicitResult } from "agents/mcp";

export class MyAgent extends Agent<Env> {
  onStart() {
    this.mcp.configureElicitationHandlers({
      form: (request, serverId) => this.forwardToUser(request, serverId),
      url: (request, serverId) => this.forwardToUser(request, serverId),
    });
  }

  private forwardToUser(request: ElicitRequest, serverId: string): Promise<ElicitResult> {
    // UI にリクエストを表示し、ユーザーの応答後に Promise を解決する実装を行ってください。
    throw new Error(`Implement elicitation for ${serverId}: ${request.params.message}`);
  }
}

実装の詳細と参考

  • 実装の詳細およびブラウザへの転送パターンについては「MCP client elicitation ↗」を参照してください。
  • mcp-client ↗mcp-elicitation ↗ のサンプルは、サーバー側とクライアント側の双方(両方の側面)を実装しています。

アップグレード

このリリースにアップデートするには、以下のいずれかのコマンドを使用してください:

  • npm i agents@latest
  • yarn add agents@latest
  • pnpm add agents@latest
  • bun add agents@latest

その他

  • 接続時に広告されるモードは、configureElicitationHandlers に登録したハンドラーに基づきます。
  • Durable Object のハイバネーション後も設定は保持され、コールバックは onStart() 実行時に再アタッチされます。

参照: Cloudflare ドキュメント、API リファレンス、該当サンプルプロジェクト(mcp-clientmcp-elicitation)。

© 2026 Cloudflare, Inc. プライバシーポリシー | 利用規約 | セキュリティ問題の報告 | 商標情報