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にも入門してみましょう。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark