Cloudflare Remote MCP Server について
リモート MCP のデプロイを試す開発者向けの Cloudflare Workers 用サンプル実装です。Durable Objects で状態を持つリクエストを処理し、HTTP Streamable トランスポートでツール、リソース、プロンプトを示します。
主な機能
- 01HTTP Streamable トランスポート
- 02Durable Objects によるリクエスト処理
- 03エコー・時刻・数値のサンプルツール
- 04静的なサンプルリソース
- 05組み込みの対話プロンプト
- 06CORS 対応
活用シーン
- 01Cloudflare Workers でリモート MCP エンドポイントをデプロイ
- 02状態を持つ MCP リクエスト処理の確認
- 03ツール・リソース・プロンプトの操作テスト
- 04HTTP 経由で MCP クライアントを接続
MCP 対応
HTTP Streamable MCP エンドポイントを通じて、サンプルツール、リソース、プロンプトを公開します。クライアントは HTTP POST で JSON-RPC リクエストを送り、Server-Sent Events を受信します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Cloudflare リモート MCP サーバー
Cloudflare Workers と Durable Objects 上で動作する Model Context Protocol(MCP)サーバーの実装です。
機能
- リモート MCP サーバー:インターネット経由でアクセスできる、HTTP Streamable トランスポートベースの MCP サーバー
- Durable Objects:Cloudflare Durable Objects を使用したステートフルなリクエスト処理
- サンプルツール:MCP プロトコル用のデモツール
- サンプルリソース:MCP 経由でアクセスできる静的データリソース
- サンプルプロンプト:AI との対話用に事前に用意されたプロンプト
- CORS サポート:Cross-Origin Resource Sharing により、ウェブに対応
アーキテクチャ
┌─────────────────┐ HTTP POST + SSE ┌──────────────────┐
│ MCP Client │ ◄──────────────► │ Cloudflare │
│ (AI/Claude) │ │ Worker │
└─────────────────┘ └─────────┬────────┘
│
▼
┌──────────────────┐
│ MCPServerObject │
│ (Durable Object) │
│ │
│ • MCP Protocol │
│ • HTTP Processing│
│ • Request State │
└──────────────────┘
利用可能な機能
ツール
- echo:入力テキストをそのまま返します
- get_time:現在のタイムスタンプを取得します
- random_number:min と max の間の乱数を生成します
リソース
- cloudflare://worker-info:Cloudflare Worker に関する情報
- cloudflare://sample-data:テスト用のサンプル JSON データ
プロンプト
- explain_code:コードを説明するプロンプトを生成します
- debug_help:デバッグを支援するプロンプトを生成します
デプロイ
-
依存関係をインストールします:
npm install -
Cloudflare にデプロイします:
npm run deploy -
デプロイした URL で MCP サーバーにアクセスします
開発
-
ローカル開発を開始します:
npm run dev -
サーバーをテストします:
# Get server info curl http://localhost:8787/ # Test MCP endpoint with a simple request curl -X POST http://localhost:8787/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
使用方法
HTTP API
GET /- サーバー情報と機能POST /mcp- MCP HTTP Streamable エンドポイント
MCP 接続
MCP クライアントを HTTP エンドポイントに接続します:
- ローカル:
http://localhost:8787/mcp - 本番環境:
https://your-worker.your-subdomain.workers.dev/mcp
プロトコルの詳細
サーバーはHTTP Streamable トランスポートを使用します:
- リクエスト:本文に JSON-RPC メッセージを含む HTTP POST
- レスポンス:
text/event-streamコンテンツタイプの Server-Sent Events(SSE)ストリーム - 形式:各レスポンスは
data: {JSON}\n\nとして送信されます
MCP メッセージの例
ツール一覧
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'
ツールの呼び出し
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "echo",
"arguments": {
"text": "Hello, MCP!"
}
}
}'
リソース一覧
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "resources/list"
}'
設定
サーバーの設定は wrangler.jsonc にあります:
- Durable Objects:
MCPServerObjectがステートフルな MCP リクエスト処理を担当します - 互換性日付:Cloudflare Workers の最新機能を利用できるよう、現在の日付に設定されています
開発メモ
- MCP プロトコルの実装に
@modelcontextprotocol/sdkを使用します - 状態管理のため、HTTP リクエストは Durable Objects によって処理されます
- レスポンスは Server-Sent Events(SSE)を使用してストリーミングされます
- ウェブクライアントとの互換性のため、CORS が有効になっています
- エラー処理には JSON-RPC エラーレスポンスが含まれます
- 厳密モードを有効にした TypeScript を使用します
トランスポートプロトコル
この実装では WebSocket ではなく、HTTP Streamable トランスポートを使用します:
- プロキシやファイアウォールとの互換性が高くなります
- 標準的な HTTP のセマンティクスを使用します
- リアルタイムのレスポンスに Server-Sent Events をサポートします
- ステートレスなクラウド環境により適しています
ライセンス
これは、教育目的のサンプル実装です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。