MCP(Model Context Protocol)はAIアシスタントを外部ツールやデータに接続するためのオープン標準で、CloudflareはそのリモートサーバーをWorkers上でホストする基盤を提供します。この記事では、MCPの正しい定義から、Wrangler CLIでリモートMCPサーバーをCloudflareへデプロイする手順、OAuth認証の追加、複数のMCPサーバーを組織で集中管理する「MCPサーバーポータル」(Cloudflare One)まで、公式ドキュメントとCloudflare公式ブログを一次ソースに整理します。ClaudeやCursorといったクライアントから接続する方法も扱います。
まとめ:CloudflareはリモートMCPサーバーの実行・保護基盤
- MCP=Model Context Protocol。Anthropicが2024年11月に公開したオープン標準で、AI(LLM)と外部ツール・データを橋渡しする。「Webサーバーの一種」ではない。
- Cloudflareの役割:MCPサーバーをWorkers(サーバーレス/エッジ)で実行し、世界中から低遅延で使えるリモートMCPサーバーとして公開できる。
- 構築:
npm create cloudflareのテンプレートでプロジェクトを作り、wranglerでデプロイ。エンドポイントは/mcpの1本(Streamable HTTP)。 - 認証:
workers-oauth-providerでOAuthを付与し、無認証(authless)と使い分ける。 - 組織運用:MCPサーバーポータル(Cloudflare One / Zero Trust)で複数サーバーを1エンドポイントに集約し、アクセス制御・ログ・DLPを一括適用(Open Beta)。
MCP(Model Context Protocol)とは何か
MCPはModel Context Protocolの略で、Anthropicが2024年11月に公開したオープン標準です。ChatGPTやClaudeのようなAIモデルが、ファイル・データベース・SaaS・社内APIといった外部リソースを、決められた共通の作法で呼び出せるようにする「AI向けの接続規格」です。USB-Cのように、モデルとツールの接続方法を1つに統一する役割を担います。ApacheやNginxのようなWebサーバーソフトでも、独自のWebサーバーアーキテクチャでもありません。ここを取り違えると設計を丸ごと誤るため、まず定義を正します。
MCPサーバーとMCPクライアントの役割分担
MCPは「サーバー」と「クライアント」の2者で構成されます。MCPサーバーは、AIに使わせたい機能を「ツール(tool)」「リソース(resource)」「プロンプト(prompt)」として公開する側です。たとえばGitHub操作、社内DB参照、天気取得などを1つのMCPサーバーが提供します。MCPクライアントは、そのツールを呼び出すAIアプリ側で、Claude Desktop、Cursor、VS Code、CloudflareのWorkers AI Playgroundなどが該当します。Cloudflareで作るのは前者の「MCPサーバー」であり、ユーザーはお気に入りのクライアントからそれに接続して使います。
ローカル(stdio)とリモート(Streamable HTTP)の違い
MCPサーバーには2つの接続形態があります。ローカルサーバーは利用者のPC内でプロセスとして動き、標準入出力(stdio)でクライアントと通信します。導入は各自の端末で完結する一方、配布・更新・共有には向きません。リモートサーバーはHTTPでネットワーク越しに接続し、現在はStreamable HTTPトランスポートを用いて /mcp の単一エンドポイントで双方向にやり取りします。URLを配れば誰でも接続でき、更新も一箇所で済むため、チームや不特定多数へ配布する用途に適します。Cloudflareが担うのはこのリモート型です。トランスポートの詳細はStreamable HTTPトランスポートの解説記事で補足します。
CloudflareでMCPサーバーを動かす理由
Cloudflareは元来CDN・DDoS防御・WAF・DNSを提供する企業で、サーバーレス実行環境「Cloudflare Workers」を持ちます。リモートMCPサーバーをWorkersに載せる利点は、世界中のエッジで実行されるため利用者の最寄り拠点で応答でき、AIツールの遅延を抑えられる点にあります。サーバー台数を事前に見積もる必要がなくアクセス増に自動で追随し、無料枠から始められるためコスト面のハードルも低めです。状態を持つMCPサーバーはDurable Objectsでセッションを保持でき、agents SDKの McpAgent クラスを使うと接続・ツール定義・認証を組み込んだ形で実装できます。Workersそのものの基礎はCloudflare Workersの解説記事を参照してください。
Wrangler CLIでリモートMCPサーバーをデプロイする手順
CloudflareへのリモートMCPサーバー構築は、公式テンプレートとWrangler CLIで進めるのが最短です。ここでは認証なし(authless)の最小構成を作り、デプロイし、クライアントから接続するまでを追います。
テンプレートからプロジェクトを作成する
Node.js環境で、Cloudflare公式のリモートMCPテンプレートからプロジェクトを生成します。
npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-authless
生成物には、ツールを定義するエントリーポイント、Wranglerの設定ファイル wrangler.jsonc(または wrangler.toml)、依存を管理する package.json が含まれます。公開したいツールはコード内で this.server.tool(...) のように定義します。テンプレート名や構成は更新されることがあるため、最新は公式ドキュメントで確認してください。
ログインしてWorkersへデプロイする
プロジェクトのディレクトリでCloudflareにログインし、デプロイします。
npx wrangler login
npm run deploy
デプロイが完了すると、サーバーは https://my-mcp-server.<アカウント名>.workers.dev/mcp の形式で公開されます。ローカルでの動作確認は npx wrangler dev で行え(既定では http://localhost:8788/mcp に立ち上がります)、本番へ載せる前にエッジ相当の挙動をテストできます。なお現行のリモート接続はStreamable HTTPの /mcp が主で、後方互換として /sse エンドポイントを併せて公開する構成もあります。
MCPクライアントから接続して確認する
公開したエンドポイントは、リモートMCPに対応するクライアントから接続します。手軽なのはCloudflareのWorkers AI Playground(リモートMCPクライアント)で、接続先に上記の /mcp URLを入力するとツール一覧が表示されます。MCP inspectorや、Claudeデスクトップアプリ・Cursorといった対応クライアントからも同じURLで接続できます。定義したツールがクライアント側に現れ、自然言語の指示から呼び出せれば疎通確認は完了です。Python中心で構築したい場合は、FastMCPのようなフレームワークでサーバーを書く選択肢もあります。
認証を追加する:workers-oauth-provider
社内データや課金APIを扱うMCPサーバーは、無認証のまま公開してはいけません。Cloudflareは workers-oauth-provider というTypeScriptライブラリを提供しており、Workerのコードをラップする形でMCPサーバーのエンドポイントにOAuth認可を追加できます。GitHubやGoogleなど外部のOAuthプロバイダーを認可サーバーとして繋ぎ込むこともでき、「誰がどのツールを使えるか」をトークンで制御します。まずauthlessで疎通を確認し、公開範囲を広げる段階でOAuthを導入する、という順序が実務的です。認可の要否は扱うデータの機密度で判断し、外部公開するサーバーは原則として認証を前提に設計してください。
MCPサーバーポータル(Cloudflare One)で組織のMCP接続を集中管理する
MCPの利用が組織に広がると、部署ごとに乱立したMCPサーバーを誰がどう使っているか把握できなくなります。これに対する仕組みが、Cloudflare One(Zero Trust)の「MCPサーバーポータル」です(記事時点でOpen Beta)。複数のMCPサーバーを1つのHTTPエンドポイントに集約し、無認証のサーバーも、サードパーティ/独自のOAuthで保護されたサーバーもまとめて束ねられます。
ポータルの設定場所と接続方法
設定はZero Trustダッシュボードの「Access > AI Controls」から行います。作成したポータルには、利用者がWorkers AI Playground・MCP inspectorなどの対応クライアントの接続先にポータルのURL(https://<subdomain>.<domain>/mcp)を入力して接続します。個々のサーバーURLを配る代わりに、ポータル1本を配れば済むのが利点です。「mcp gateway」「cloudflare mcp gateway」と呼ばれる、複数MCPサーバーを束ねる集約ゲートウェイ的な用途は、このポータルが担います(LLMのコスト・レート制御を行う「AI Gateway」や、社内通信を制御するSecure Web Gatewayとは別機能です)。
集中ログ・アクセス制御・DLPで守る
ポータルの本質は利便性より統制です。人間ユーザー向けと同じAccessポリシーをAI接続にも適用でき、誰がどのポータルにログインしたかを集中的にログとして残せます。さらにDLP(データ損失防止)ガードレールで、特定のデータが特定のMCPサーバーへ渡るのを止めるルールを作れます。MCPは外部ツールへの実行権限をAIに与える性質上、統制なしの拡大はリスクになります。組織導入ではまずポータルで入口を1本化し、ポリシーとログを効かせる設計が現実的です。
Cloudflare公式のMCPサーバーを使う
自作せずとも、CloudflareはCloudflare自身を操作するためのMCPサーバー群を公式に公開しています(github.com/cloudflare/mcp-server-cloudflare)。ドキュメント検索、Workersのバインディング操作、Radar、ブラウザレンダリングなど、製品ごとに分かれたサーバーが用意され、対応クライアントから接続すればAIにCloudflareの管理・調査を任せられます。「既存サービスをAIから操作する」というMCPの典型例で、GitHubが公式提供するGitHub Remote MCP Serverと同じ発想です。自作の前に、目的のサービスに公式MCPサーバーが無いかを先に確認すると早道です。
Cloudflareでホストすべきケース・避けるべきケース
「とりあえずWorkersに載せる」が常に正解ではありません。判断軸は、そのMCPサーバーを誰と共有するかです。
Cloudflareのリモートホストが向くケース:チームや社外へURLで配布したい、複数のクライアント(Claude・Cursor・自社アプリ)から同じツールを使わせたい、グローバルに低遅延で提供したい、認証やアクセス制御を効かせたい——こうした「共有・公開」が絡む用途です。
避ける/ローカルで十分なケース:自分のPC内のファイルやローカルDBだけを触るツール、機密度が高くネットワークに出したくない処理、試作段階で自分しか使わないもの。これらはstdioのローカルMCPサーバーの方が簡単で安全です。リモート化は「共有する必要が出てから」で遅くありません。まずローカルで作り、配布要件が生じた時点でWorkersへ移す進め方が、無用な認証・運用コストを避けられます。
よくある質問
MCPとは何の略ですか?
Model Context Protocol(モデル・コンテキスト・プロトコル)の略です。Anthropicが2024年11月に公開した、AIと外部ツール・データを接続するためのオープン標準を指します。Webサーバーの製品名やアーキテクチャの名称ではありません。
Cloudflare MCPサーバーは無料で使えますか?
Cloudflare Workersには無料枠があり、小規模なMCPサーバーの実験や個人利用は無料の範囲で始められます。リクエスト数やCPU時間、Durable Objectsなどが一定量を超えると有料プラン(Workers Paid)が必要になります。最新の無料枠と料金は公式の料金ページで確認してください。
cloudflare mcp server portalとは何ですか?
Cloudflare One(Zero Trust)が提供する、複数のMCPサーバーを1つのエンドポイントに集約する機能です。アクセス制御・集中ログ・DLPを一括で適用でき、組織のAI接続を統制する目的で使います。Zero Trustダッシュボードの「Access > AI Controls」から設定します(記事時点でOpen Beta)。
リモートMCPとローカルMCPはどう違いますか?
ローカルは利用者のPC内で標準入出力(stdio)を通じて動き、配布や共有には不向きです。リモートはHTTP(Streamable HTTP)でネットワーク越しに接続し、URLを配れば複数人・複数クライアントで共有できます。CloudflareのWorkersで作るのはリモート型です。
ClaudeやCursorからCloudflareのMCPサーバーに接続できますか?
できます。デプロイ後の /mcp エンドポイントのURLを、リモートMCPに対応するクライアント(Workers AI Playground、MCP inspector、Claudeデスクトップアプリ、Cursorなど)の接続先に登録すれば、定義したツールを自然言語から呼び出せます。