Cloudflare WorkersでリモートMCPを実装する際のDurable Objectの注意点
タグ:
Cloudflare WorkersでMCPサーバーを実装する際、Durable Objectsのクラス名と設定ファイルの定義を一致させないとデプロイエラーが発生する問題とその解決方法を解説します。
目次
この記事では、Cloudflare WorkersでModel Context Protocol(MCP)サーバーを実装する際に遭遇した Durable Objects の扱い方に関する問題について紹介します。 MCP サーバー構築ではじめて Durable Objects を触る場合にハマりがちなケースだと思いますので、参考になればと思います。
問題の背景
MCPサーバーを Cloudflare にデプロイしようとした時に次のエラーが発生しました。
✘ [ERROR] Your Worker depends on the following Durable Objects, which are not exported in your entrypoint file: StripeDocsMCP.
このエラーは、コード内で参照しているStripeDocsMCP
というDurable Objectがエントリーポイントファイル(src/index.ts)から正しくエクスポートされていないことを意味しています。単純なミスのように思えますが、MCP実装においては意外とはまりやすいポイントです。
問題の解決方法
解決方法はシンプルで、 wrangler.jsonc
または wrangler.toml
で定義した Durable Object の名前と、exportするクラス名を一致させるだけです。
[durable_objects]
bindings = [
{ name = "StripeDocsMCP", class_name = "StripeDocsMCP" }
]
もしこのような定義をしている場合は、class_name
に設定した値と同じクラスでMCPサーバーの実装を行いましょう。
export class StripeDocsMCP extends McpAgent {
// クラスの実装部分
}
ここで異なる値を設定すると、デプロイ時に問題が発生します。
おわりに
Durable Objectsの仕様上、定義とクラス名の一致は必須の様子です。が、 MCPサーバー開発から Cloudflare に入門した場合など、 Durable Objects をこれまで使ったことがないケースでは、「これわかりやすいクラス名にしたいな」のようなモチベーションでクラス名を変更してしまうこともありがちです。解決策はとてもシンプルなものですので、これを機に Durable Objectsにも入門してみましょう。