mcpField
A
agents-sdk

agents-sdk

github.com/cloudflareエージェントワークフロー3.2k108.8k 回インストール今日更新
リポジトリ

agents-sdk について

Cloudflare Workers上で永続的なエージェントを構築するフレームワークです。チャット、バックグラウンド処理、クライアント連携アプリの開発者向けに、状態管理、スケジューリング、ワークフロー、RPC、MCPを提供し、最新ドキュメントの参照も案内します。

主な機能

  1. 01SQLiteベースの永続状態
  2. 02呼び出し可能なRPCとストリーミング
  3. 03スケジュールタスクとワークフロー
  4. 04キュー、リトライ、永続実行
  5. 05チャットエージェントとReactフック
  6. 06MCPクライアントとサーバーのサポート

活用シーン

  1. 01状態を保持するチャットエージェントの構築
  2. 02永続的なバックグラウンドタスクのスケジュール
  3. 03エージェントアプリとクライアントの接続
  4. 04MCPサーバーへの接続または構築

MCP 対応

SDKはエージェントからMCPサーバーへ接続でき、`createMcpHandler`を使ったMCPサーバー構築にも対応します。トランスポートとセキュリティの設定も扱います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cloudflare/skills --skill agents-sdk

インストール後、Claude Code で/agents-sdkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
browse-the-web.md
callable.md
client-sdk.md
codemode.md
configuration.md
durable-execution.md
email.md
human-in-the-loop.md
mcp.md
observability.md
queue-retries.md
routing.md
server-driven-messages.md
state-scheduling.md
streaming-chat.md
think.md
voice.md
webhooks-push.md
workflows.md

詳細

Cloudflare Agents SDK

Agents SDK に関する知識が古くなっている可能性があります。Agents SDK のタスクでは、事前学習よりも情報の取得を優先してください。

情報の取得元

Cloudflare のドキュメント:https://developers.cloudflare.com/agents/index.md

トピックドキュメント URL用途
はじめにクイックスタート最初のエージェント、プロジェクトのセットアップ
既存プロジェクトへの追加既存プロジェクトへの追加既存の Workers アプリへのインストール
設定設定wrangler.jsonc、バインディング、アセット、デプロイ
Agent クラスAgents APIエージェントのライフサイクル、パターン、注意点
状態状態の保存と同期setState、validateStateChange、永続化
ルーティングルーティングURL パターン、routeAgentRequest
呼び出し可能なメソッド呼び出し可能なメソッド@callable、RPC、ストリーミング、タイムアウト
スケジュールタスクのスケジュールschedule()、scheduleEvery()、cron
ワークフローワークフローの実行AgentWorkflow、永続的な複数ステップのタスク
HTTP/WebSocketWebSocketライフサイクルフック、休止
チャットエージェントチャットエージェントAIChatAgent、ストリーミング、ツール、永続化
クライアント SDKクライアント SDKuseAgent、AgentClient、状態、RPC、HTTP
クライアントツールクライアントツールクライアント側のツール、autoContinueAfterToolResult
サーバー主導のメッセージ自律的な応答saveMessages、waitUntilStable、サーバー起点のターン
再開可能なストリーミングチャットエージェント切断後のストリーム復旧
メールメールメールのルーティング、安全な返信リゾルバー
MCP クライアントMCP クライアントMCP サーバーへの接続
MCP サーバーMCP サーバーcreateMcpHandler を使った MCP サーバーの構築
MCP トランスポートMCP トランスポートStreamable HTTP、SSE、RPC トランスポートのオプション
MCP サーバーの保護MCP の保護OAuth、プロキシ MCP、セキュリティ強化
Human-in-the-loopHuman-in-the-loopワークフローの承認、情報の引き出し、タイムアウト処理
永続的な実行永続的な実行runFiber()、stash()、DO の退避後も実行を継続
キューキュー組み込みの FIFO キュー、queue()
再試行再試行this.retry()、バックオフ/ジッター
オブザーバビリティオブザーバビリティdiagnostics-channel イベント
プッシュ通知プッシュ通知エージェントからの Web Push + VAPID
WebhookWebhook外部 Webhook の受信
クロスドメイン認証クロスドメイン認証WebSocket 認証、トークン、CORS
読み取り専用接続読み取り専用shouldConnectionBeReadonly
音声音声実験的な STT/TTS、withVoice
Web の閲覧ブラウザツール実験的な CDP ブラウザー自動化
ThinkThink実験的な高レベルのチャットエージェントクラス
移行AI SDK v5、AI SDK v6@cloudflare/ai-chat のアップグレード

機能

Agents SDK では、次の機能を利用できます。

  • 永続化された状態 — SQLite による状態管理。setState を介してクライアントに自動同期されます
  • 呼び出し可能な RPC — WebSocket 経由で呼び出される @callable() メソッド
  • スケジュール設定 — 1 回限り、繰り返し(scheduleEvery)、cron タスク
  • ワークフロー — AgentWorkflow による、複数ステップの耐久性のあるバックグラウンド処理
  • 耐久性のある実行 — DO のエビクション後も継続する作業のための runFiber() / stash()
  • キュー — queue() による、再試行機能を備えた組み込みの FIFO キュー
  • 再試行 — 指数バックオフとジッターを使う this.retry()
  • MCP 統合 — MCP サーバーへの接続、または createMcpHandler を使った独自の MCP サーバーの構築
  • メール処理 — 安全なルーティングによるメールの受信と返信
  • ストリーミングチャット — 再開可能なストリーム、メッセージの永続化、ツールを備えた AIChatAgent
  • サーバー駆動メッセージ — エージェントのプロアクティブなターンのための saveMessages、waitUntilStable
  • React フック — クライアントアプリ向けの useAgent、useAgentChat
  • 可観測性 — 状態、RPC、スケジュール、ライフサイクルの diagnostics_channel イベント
  • プッシュ通知 — エージェントからの Web Push + VAPID 配信
  • Webhook — 外部 Webhook の受信と検証
  • 音声(実験的)— @cloudflare/voice による STT/TTS
  • ブラウザツール(実験的)— agents/browser による CDP を利用したブラウジング
  • Think(実験的)— @cloudflare/think による、より高レベルなチャットエージェント

まず、インストールを確認する

npm ls agents  # Should show agents package

インストールされていない場合:

npm install agents

チャットエージェントの場合:

npm install agents @cloudflare/ai-chat ai @ai-sdk/react

Wrangler の設定

{
  "compatibility_flags": ["nodejs_compat"],
  "durable_objects": {
    "bindings": [{ "name": "MyAgent", "class_name": "MyAgent" }]
  },
  "migrations": [{ "tag": "v1", "new_sqlite_classes": ["MyAgent"] }]
}

注意事項:

  • tsconfig で experimentalDecorators を有効にしないでください(@callable が動作しなくなります)
  • 古いマイグレーションは編集せず、常に新しいタグを追加してください
  • 各エージェントクラスには、それぞれ専用の DO バインディングとマイグレーションエントリが必要です
  • Workers AI では "ai": { "binding": "AI" } を追加してください

エージェントクラス

import { Agent, routeAgentRequest, callable } from "agents";

type State = { count: number };

export class Counter extends Agent<Env, State> {
  initialState = { count: 0 };

  validateStateChange(nextState: State, source: Connection | "server") {
    if (nextState.count < 0) throw new Error("Count cannot be negative");
  }

  onStateUpdate(state: State, source: Connection | "server") {
    console.log("State updated:", state);
  }

  @callable()
  increment() {
    this.setState({ count: this.state.count + 1 });
    return this.state.count;
  }
}

export default {
  fetch: (req, env) => routeAgentRequest(req, env) ?? new Response("Not found", { status: 404 })
};

ルーティング

リクエストは /agents/{agent-name}/{instance-name} にルーティングされます。

クラスURL
Counter/agents/counter/user-123
ChatRoom/agents/chat-room/lobby

クライアント:useAgent({ agent: "Counter", name: "user-123" })

カスタムルーティング:getAgentByName(env.MyAgent, "instance-id") を使用し、その後 agent.fetch(request) を呼び出します。

コア API

タスクAPI
状態を読み取るthis.state.count
状態を書き込むthis.setState({ count: 1 })
SQL クエリthis.sql`SELECT * FROM users WHERE id = ${id}`
スケジュール設定(遅延)await this.schedule(60, "task", payload)
スケジュール設定(cron)await this.schedule("0 * * * *", "task", payload)
スケジュール設定(間隔)await this.scheduleEvery(30, "poll")
RPC メソッド@callable() myMethod() { ... }
ストリーミング RPC@callable({ streaming: true }) stream(res) { ... }
ワークフローを開始するawait this.runWorkflow("ProcessingWorkflow", params)
耐久性のあるファイバーawait this.runFiber("name", async (ctx) => { ... })
作業をキューに追加するthis.queue("handler", payload)
バックオフを伴う再試行await this.retry(fn, { maxAttempts: 5 })
クライアントにブロードキャストするthis.broadcast(message)
接続を取得するthis.getConnections(tag?)

React クライアント

クライアントの選択方法と現在の接続例については、client-sdk.md をお読みください。チャット UI とツールについては、streaming-chat.md もお読みください。

参考資料

コア
チャットとストリーミング
バックグラウンド処理
インテグレーション
実験的機能

コメント