mcpField
A
agents-sdk

agents-sdk

github.com/midudevエージェントワークフロー7.0k62 回インストール1 週間前に更新
リポジトリ

agents-sdk について

`agents` パッケージでエージェントやチャットアプリを構築する開発者向けの Cloudflare Agents SDK ガイドです。API の利用法に加え、実装前に最新の Cloudflare ドキュメントを参照する方針を示します。

主な機能

  1. 01SQLite による状態の永続化
  2. 02WebSocket 経由の呼び出し可能な RPC
  3. 03スケジューリングと耐久性のあるワークフロー
  4. 04キューとリトライ処理
  5. 05ストリーミングチャットと React hooks
  6. 06MCP クライアントとサーバーの統合

活用シーン

  1. 01Workers 上でのステートフルなエージェント構築
  2. 02ストリーミングチャットアプリの作成
  3. 03スケジュールタスクや複数段階の処理
  4. 04エージェントと MCP サーバーの接続

MCP 対応

MCP サーバーへの接続と、`createMcpHandler` による MCP サーバーの構築を扱い、トランスポートとセキュリティの指針も含みます。

インストール

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

$npx skills add https://github.com/midudev/autoskills --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 もお読みください。

参考資料

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

コメント