新規投稿のお知らせを受信されたい方は、サブスクリプションをご登録ください:

エージェントのパズルを組み合わせる:MCP、認証および承認、Durable Objectsの無料利用枠

2025-04-07

9分で読了
この投稿はEnglish繁體中文FrançaisDeutsch한국어Español (Latinoamérica)Nederlands简体中文でも表示されます。

Cloudflareがエージェントの未来に関して強気であることは周知の事実です。AIが私たちに寄り添うコパイロットであるだけでなく、実際にタスク全体をAIに委ね始められる未来に期待しています。

開発者によるエージェントの構築を容易にするAgents SDKを最初に発表してからまだそれほど経っていませんが、エージェンティックな未来を実現するには、この目標に向けて継続的に結果を出す必要があります。本日は、エージェンティックな開発を加速するため、以下のようないくつかの発表を行います:

  • 新しいAgents SDKの機能:トランスポートと認証が組み込まれたリモートMCPクライアントを構築し、AIエージェントが外部サービスに接続できるようにします。

  • MCP用BYO AuthプロバイダーStytchAuth0WorkOSと統合し、リモートMCPサーバーに認証と認可を追加します。

  • McpAgentのハイバネーションステートフルなリモートMCPサーバーを非アクティブ時に自動的にスリープ状態にし、必要な場合を起動します。これにより長時間セッションの接続を維持しつつ、アイドル状態の時間については支払わなくて済むようになります。

  • Durable Objectsの無料枠利用Durable Objectsはエージェント構築の重要コンポーネントだと当社は考えており、当社のAgents SDKを使用するならDurable Objectsへのアクセスが必要です。Durable Objectsはこれまで有料プランの一部としてのみアクセス可能でしたが、今回、無料枠に含めることができて嬉しく思います。

  • Workflows GA本番環境で利用可能で長時間実行されるマルチステップのエージェントアクションを出荷できるようにします。

  • AutoRAGわずか数クリックで、コンテキスト認識型AIをアプリケーションに組み込むことができます。

  • objects.cloudflare.comエージェント関連を網羅した新しいランディングページです。

Agent SDKの新しいMCP機能

AIエージェントはMCP(モデルコンテキストプロトコル)を介して外部サービスに接続し、対話することができるようになりました。Agents SDKを更新し、お客様がAIエージェントにリモートMCPクライアントを組み込めるようにしました。認証フロー、ツール検出、接続管理といったすべてのコンポーネントがビルトインされています。

これにより、以下ができるエージェントの作成が可能になります:

  1. エンドユーザーにサードパーティサービス(MCPサーバー)へのアクセスを許可するようプロンプトする。

  2. エンドユーザーに代わって、それらの外部サービスのツールを使用する。

  3. Workflows、スケジュールされたタスク、またはエージェントの任意の部分からMCPサーバーを呼び出す。

  4. 複数のMCPサーバーに接続し、サードパーティサービスが提供する新しいツールや機能を自動的に発見する。

MCP(モデルコンテキストプロトコル)はAnthropicが最初に導入し、OpenAI、Cursor、Copilotといったプロバイダーが採用して、AIエージェントが外部サービスとやり取りする標準的な方法に早くもなりつつあります。

最近発表したように、当社はCloudflare上でのリモートMCPサーバー構築をサポートしており、 MCPのリモート側(トランスポートと認証/許可)を自動的に処理するMcpAgentクラスをAgents SDKに追加しました。今回、MCPクライアントとして機能するエージェントにも同じ機能を拡張できることを嬉しく思います。

実際にその様子をご覧になりたいですか?下のボタンを使って、リモートMCPサーバーへの接続に使える完全リモートMCPクライアントをデプロイしてください。

Cloudflareへデプロイ

AIエージェントは、トランスポートと認証を含むリモートMCPクライアントとして機能可能に

AIエージェントが組み込まれたナレッジにないツール、データ、機能にアクセスするには、外部サービスに接続する必要があります。つまり、AIエージェントはリモートMCPクライアントとして機能して、それらのツールや機能をホストしているリモートMCPサーバーに接続できるようにする必要があります。

お客様のAIエージェントがMCP経由で外部サービスを呼び出すのに必要なすべてのツールを提供するために、新しいクラスであるMCPClientManagerをAgents SDKに追加しました。MCPCClientManagerクラスは以下を自動的に処理します:

  • トランスポート: SSEとHTTPでリモートMCPサーバーに接続する。Streamable HTTPのサポートも近日予定。

  • 接続管理:クライアントはすべての接続の状態を追跡し、接続が失われた場合は自動的に再接続する。

  • 機能検出:MCPサーバーが提供するすべての機能、ツール、リソース、プロンプトを自動的に検出する。

  • リアルタイム更新:サーバーのツール、リソース、またはプロンプトが変更されると、クライアントは自動的に通知を受け取り、内部の状態を更新する。

  • 名前空間の設定:複数のMCPサーバーに接続する場合、競合を回避するために、すべてのツールとリソースの名前空間を自動的に設定する。

MCPクライアントの組み込み認証チェックにより、エージェントがツールにアクセスすることを許可

完全なOAuth認証フローをAgents SDKに直接統合したため、お客様は認証フローを一から構築する必要はなく、AIエージェントは任意のリモートMCPサーバーにセキュアに接続し、認証できます。

これにより、お客様はユーザーにセキュアなログイン方法を提供でき、明示的にアクセス許可を与えることによって、エージェントがお客様に代わって自動的に以下を行えるようになります:

  • OAuth 2.1プロトコルをサポートする。

  • ユーザーをサービスのログインページにリダイレクトする。

  • チャレンジコードを生成し、認証コードをアクセストークンと交換する。

  • アクセストークンを使用して、MCPサーバーに認証済みリクエストを行う。

以下は、クライアントマネージャーを初期化し、サーバーを追加し、認証コールバックを処理することによってMCPサーバーにセキュアに接続できるエージェントの例です:

async onStart(): Promise<void> {
  // initialize MCPClientManager which manages multiple MCP clients with optional auth
  this.mcp = new MCPClientManager("my-agent", "1.0.0", {
    baseCallbackUri: `${serverHost}/agents/${agentNamespace}/${this.name}/callback`,
    storage: this.ctx.storage,
  });
}

async addMcpServer(url: string): Promise<string> {
  // Add one MCP client to our MCPClientManager
  const { id, authUrl } = await this.mcp.connect(url);
  // Return authUrl to redirect the user to if the user is unauthorized
  return authUrl
}

async onRequest(req: Request): Promise<void> {
  // handle the auth callback after being finishing the MCP server auth flow
  if (this.mcp.isCallbackRequest(req)) {
    await this.mcp.handleCallbackRequest(req);
    return new Response("Authorized")
  }
  
  // ...
}

複数のMCPサーバーに接続し、その機能を検出する

Agents SDKを使用して、MCPクライアントを複数のMCPサーバーに同時に接続できます。これは、エージェントが異なるサービスプロバイダーが提供するツールやリソースにアクセスしてやり取りできるようにしたい場合に特に有用です。

MCPCClientManagerクラスは、mcpConnectionsオブジェクトを介して複数のMCPサーバーへの接続を維持します。mcpConnectionsオブジェクトは、一意のサーバー名をそれぞれのMCPClientConnectionインスタンスにマップする辞書です。

connect()を使って新しいサーバー接続を登録すると、マネージャーは以下を行います:

  1. サーバー固有の認証で新しい接続インスタンスを作成する。

  2. 接続を初期化し、サーバー機能通知に登録します。

async onStart(): Promise<void> {
  // Connect to an image generation MCP server
  await this.mcp.connect("https://image-gen.example.com/mcp/sse");
  
  // Connect to a code analysis MCP server
  await this.mcp.connect("https://code-analysis.example.org/sse");
  
  // Now we can access tools with proper namespacing
  const allTools = this.mcp.listTools();
  console.log(`Total tools available: ${allTools.length}`);
}

各接続は独自の認証コンテキストを管理し、1つのAIエージェントが複数のサーバーに対して同時に認証できるようにします。さらに、MCPClientManagerは自動的に名前空間設定を処理し、異なるサーバーにある同一の名前を持つツール間の衝突を防止します。

例えば、「画像MCPサーバー」と「コードMCPサーバー」の両方に「分析」という名前のツールがあっても、両者は名前の競合なく別々に呼び出し可能です。

Stytch、Auth0、WorkOSを使って、MCPサーバーに認証・認可を導入

MCPはユーザーがアプリケーションとやり取りする新たな方法となり、エントリーポイントをダッシュボードやAPIに依存することもなくなります。ユーザーに代わって動作するAIエージェントがサービスにアクセスするようになります。ユーザーとエージェントがサービスにセキュアに接続できるようにするには、既存の認証・認可システムを拡張し、MCPサーバーのログインフロー、権限スコープ、同意フォーム、アクセス施行を実装してエージェントのインタラクションをサポートする必要があります。

当社はStytchAuth0WorkOSとの統合を追加して、MCPサーバーを構築する人が誰でもMCPサーバーの認証・認可を簡単に設定できるようにします。

MCPサーバーのStytch、Auth0、WorkOSとの統合によって、次のことが可能になります:

  • ユーザーがメール、ソーシャルログイン、SSO(シングルサインオン)、MFA(多要素認証)を介してMCPサーバーに対して認証できるようにする。

  • MCPツールに直接マッピングするスコープと権限を定義する。

  • 要求された許可に対応する同意ページをユーザーに提示する。

許可を適用し、エージェントが許可されたツールのみを呼び出せるようにします。

まずは、以下の例でやってみましょう。「Cloudflareへデプロイ」ボタンで、お客様のCloudflareアカウントにデモMCPサーバーをデプロイしてください。これらのデモには、事前設定された認証エンドポイント、同意フロー、ニーズに合わせて調整可能な許可モデルが含まれています。デモMCPサーバーをデプロイしたら、ブラウザベースのリモートMCPクライアントであるWorkers AI Playgroundを使用して、エンドツーエンドのユーザーフローをテストできます。

Stytch

Stytchを使用してユーザーがメール、Googleログイン、またはエンタープライズSSOでサインインし、AIエージェントがユーザーに代わって会社のOKRを表示・管理できるようにするリモートMCPサーバーの利用を開始しましょう。Stytchは、組織内でのユーザーの役割とアクセス権限に基づいて、AIエージェントのスコープ制限を行います。MCPクライアントを認可する際、各ユーザーには、自身の役割に基づいて付与できるようエージェントが要求しているアクセス権限の概要を記した同意ページが表示されます。

Cloudflareへデプロイ

より消費者向けのユースケースの場合は、認証とMCPクライアントの認可にStytchを使用するTo Doアプリ用のリモートMCPサーバーをデプロイします。ユーザーはメールでサインインして、アカウントに連携するTo Doリストにすぐアクセスし、AIアシスタントにアクセスを許可してタスク管理をサポートさせることができます。

Cloudflareへデプロイ

Stytchを使用すると、ユースケースを問わず、アプリケーションをOAuth 2.0 IDプロバイダーに簡単に変換でき、リモートMCPサーバーをRelying Partyにすることで、アプリからIDと権限を引き継ぐことが容易になります。StytchがリモートMCPサーバーへのセキュアな認証を実現する仕組みの詳細については、ブログ記事をご覧ください。

「AIエージェントの可能性を実現する上での課題の1つは、AIエージェントが他のプラットフォームからデータにセキュアかつ確実にアクセスできるようにすることです。Stytch Connected Appsはこうしたエージェントのユースケースのために構築されたもので、お客様のアプリをOAuth 2.0 IDプロバイダーにしてリモートMCPサーバーへのセキュアなアクセスを簡単に実現できます。Cloudflare WorkersとStytch Connected Appsを組み合わせることにより、開発者を阻むバリアを取り除き、AIの概念実証からデプロイされたセキュアな実装へ迅速に移行できるようにします。」— Julianna Lamb氏、Stytch共同創業者兼CTO

Auth0

Auth0を使用してメール、ソーシャルログイン、またはエンタープライズSSOを通じてユーザーを認証し、AIエージェントを通じてTo Doリストや個人データとやり取りするリモートMCPサーバーの利用を開始しましょう。MCPサーバーは、ユーザーに代わってAPIエンドポイントにセキュアに接続し、ユーザーから同意を得た後、エージェントがどのリソースにアクセスできるかを厳密に表示します。この実装では、アクセストークンは長時間のインタラクション中に自動的に更新されます。

セットアップするには、まず保護されたAPIエンドポイントをデプロイします:

Cloudflareへデプロイ

次に、Auth0による認証を行い、AIエージェントをAPIエンドポイントにセキュアに接続するMCPサーバーをデプロイします。

Cloudflareへデプロイ

「Cloudflareは、AI Gateway、Vectorize、Workers AIなどのツールで、AI製品を構築する開発者を支援し続けています。最近リモートMCPサーバーが追加されたことは、Cloudflare WorkersとDurable ObjectsがサーバーレスAIを展開するための先進的プラットフォームであることを示しています。Auth0がこうした最先端のワークロードの認証・認可ニーズの解決に役立つことを、当社は大変誇りに思っています。」— Sandrino Di Mattia氏、Auth0製品アーキテクチャ担当シニアディレクター

WorkOS

WorkOSのAuthKitを使用してユーザーを認証し、AIエージェントに付与される権限を管理するリモートMCPサーバーの利用を開始しましょう。この例では、MCPサーバーはユーザーの役割とアクセス権に基づいてツールを動的に公開します。認証されたすべてのユーザーが追加ツールにアクセスできますが、WorkOSでimage_generationの権限が割り当てられたユーザーのみが、AIエージェントの画像生成ツールへのアクセスを許可できます。これは、MCPサーバーが、認証されたユーザーの役割と権限に基づいて、AIエージェントに条件付きで機能を公開できることを示す典型的な例です。

Cloudflareへデプロイ

「MCPはAIエージェント統合の標準になりつつありますが、認証と認可はエンタープライズによる導入にまだ大きなギャップがあります。WorkOS Connectによって、あらゆるアプリケーションがOAuth 2.0認証サーバーになることができ、エージェントとMCPクライアントは詳細な権限承認とリソースアクセスのためのトークンをセキュアに取得することができます。Cloudflare Workersを使えば、開発者はOAuthとエンタープライズグレードのアクセス制御機能を備えたリモートMCPサーバーを迅速にデプロイできます。WorkOSとCloudflareを組み合わせることで、セキュアでエンタープライズ対応のエージェントインフラストラクチャを簡単に出荷できます。」— Michael Grinich氏、WorkOS CEO

ハイバネート可能なWebSockets:AIエージェントを不使用時はスリープさせる

本日より、McpAgentのクラスに新たな改善が見られます。WebSockets Hiberlation APIのサポートで、MCPサーバーがリクエストを受信していない時にはスリープ状態になり、必要な時に即座に起動することを可能にします。つまり、支払いはエージェントが実際に動作している時のコンピュート料だけで済むということです。

最近McpAgentクラスを導入しました。これにより、開発者はDurable Objectsを使用してCloudflare上にリモートMCPサーバーを構築し、すべてのクライアントセッションでステートフルな接続を維持することができます。最初からステートフルになるようにMcpAgentを構築していますので、開発者はコンテキスト、ユーザーの好み、会話履歴を記憶できるサーバーを構築できます。しかし、クライアントとの接続を維持するということは、使用していない時でも、セッションが長時間アクティブなままとなる可能性があることを意味します。

MCPエージェントはデフォルトでハイバネーション対応

ハイバネーションを利用するためにコードを変更する必要はありません。最新のSDKアップデートにより、すべてのMcpAgentインスタンスに自動的にハイバネーションサポートが含まれるようになりました。これにより、ステートフルなMCPサーバーは非アクティブな間はスリープし、必要な時に状態を保持した形で起動することができます。

仕組み

Server-Sent Eventsエンドポイント、 /sseでリクエストが来ると、Worker はセッションに使用する適切なDurable ObjectへのWebSocket接続を初期化し、SSEストリームをクライアントに返します。すべての応答フローがこの流れになります。

実装では、Durable Objects内のWebSocket Hibernation APIを使います。非アクティブな時間が発生した場合は、WebSocket 接続が開いたままにして、Durable Objectをメモリから削除することができます。WebSocketがその後メッセージを受け取ると、ランタイムはDurable Objectを再作成し、そのメッセージを適切なハンドラに届けます。

Durable Objectsを無料枠で利用

CloudflareでAIエージェントを構築しやすいように、Durable Objectsを無料枠で提供し、コミットメントゼロで始められるようにしています。Agents SDKを使用すると、Durable Objectsを使うCloudflareにAIエージェントをデプロイできます。

Durable Objectsはコンピュートと永続ストレージを提供し、Workersと組み合わせることで、ステートフルなサーバーレスアプリケーションを実現します。各Durable Objectは、クライアントのリアルタイムのインタラクションを処理し、LLMなどの外部サービスにリクエストを行い、ゼロ遅延のSQLiteストレージでの状態永続化によってエージェント「メモリ」を作成するためのステートフルなコーディネーターです。つまり、AIエージェントに必要な全タスクを調整するのです。Durable Objectsは、数百万のエージェントまで簡単に拡張できます。各エージェントは、やり取りしているユーザーの近くで作成され、高速なパフォーマンスを実現します。すべてCloudflareが管理します。

Durable Objectsのゼロ遅延SQLiteストレージは、2024年9月のBirthday Weekでパブリックベータ版が紹介されました。以来、私たちはDurable Objectsの既存のキーバリューストレージと比較して欠けている機能の充実と堅牢性に焦点を当ててきました。SQLiteストレージを一般公開できることを嬉しく思います。GA版はDurable Objectごとに10GBのSQLiteデータベースがあり、当社ではすべての新しいDurable ObjectクラスにSQLiteストレージを推奨します。Durable Objectsの無料利用枠でアクセス可能なのは、SQLiteストレージにのみです。

Cloudflareの無料枠で、実際のアプリケーションを構築することができます。Freeプランでは、すべてのWorkerリクエストがDurable Objectを呼び出せます。従量制課金の場合、Durable Objectsにはコンピュートとストレージの使用量が発生し、以下の無料利用制限が設けられています。

 

Workers 無料

Workers 有料

コンピュート:リクエスト

100,000件 / 日

100万件 / 月を含む

+ $0.15 / 百万

コンピュート:時間

13,000GB-秒 / 日

400,000GB-秒 / 月を含む

+ $12.50 / 百万GB-秒

ストレージ:読み取り行数

500万 / 日

250億 / 月を含む

+ $0.001 / 100万

ストレージ:書き込み行数

100,000件 / 日

5,000万 / 月を含む

+ $1.00 / 百万

ストレージ: SQL保存データ

5GB(合計)

5GB / 月を含む

+ $0.20 / GB-月

agents.cloudflare.comで情報提供

膨大な情報量であることは承知していますが、心配は無用です。エージェントはまったく初めてという方も、Cloudflareがエージェント構築をどう支援しているかについて詳しく知りたいという方も、利用開始を支援するために新しいサイト( agents.cloudflare.com )を本日立ち上げましたのでご利用ください。

何を構築されているかお聞かせください!

Cloudflareは企業ネットワーク全体を保護し、お客様がインターネット規模のアプリケーションを効率的に構築し、あらゆるWebサイトやインターネットアプリケーションを高速化し、DDoS攻撃を退けハッカーの侵入を防ぎゼロトラスト導入を推進できるようお手伝いしています。

ご使用のデバイスから1.1.1.1 にアクセスし、インターネットを高速化し安全性を高めるCloudflareの無料アプリをご利用ください。

より良いインターネットの構築支援という当社の使命について、詳しくはこちらをご覧ください。新たなキャリアの方向性を模索中の方は、当社の求人情報をご覧ください。
Developer WeekAIエージェント開発者モデルコンテキストプロトコル、MCP

Xでフォロー

Rita Kozlov|@ritakozlov_
Dina Kozlov|@dinasaur_404
Vy Ton|@vaiton13
Cloudflare|@cloudflare

関連ブログ投稿