MCP Server with Cloudflare Workers について
`workers-mcp` を使って Cloudflare Workers 上に MCP サーバーを構築するためのガイドとサンプルです。メソッドや API 呼び出しのツール化、ローカルテスト、デプロイ、共有シークレット認証を扱います。
主な機能
- 01Worker ベースの MCP サーバー設定
- 02メソッドを MCP ツールとして公開
- 03外部 API への接続
- 04ローカルプロキシでのテスト
- 05Wrangler によるデプロイ
- 06共有シークレット認証
活用シーン
- 01AI アシスタントに API を公開
- 02Worker の MCP サーバーをローカルでテスト
- 03MCP サーバーを Cloudflare Workers にデプロイ
MCP 対応
`workers-mcp` で Cloudflare Workers を MCP に対応させ、Worker のメソッドをツールとして公開します。MCP クライアントはテスト時にはローカルプロキシ経由で、デプロイ後は Worker に接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Cloudflare Workers を使用した MCP サーバー
はじめに
Model Context Protocol(MCP)は、AI エージェントやアシスタントがサービスとやり取りできるようにするオープンスタンダードです。MCP サーバーをセットアップすると、AI アシスタントから API に直接アクセスできるようになります。
workers-mcp パッケージと組み合わせた Cloudflare Workers は、MCP サーバーを構築するための強力でスケーラブルなソリューションを提供します。
前提条件
開始する前に、以下を用意してください。
- Cloudflare アカウント
- Node.js のインストール
- Wrangler CLI のインストール(
npm install -g wrangler)
はじめに
ステップ 1:新しい Cloudflare Worker を作成する
まず、新しい Cloudflare Worker プロジェクトを初期化します。
npx create-cloudflare@latest my-mcp-worker
cd my-mcp-worker
次に、Cloudflare アカウントを認証します。
wrangler login
ステップ 2:Wrangler を設定する
wrangler.toml ファイルを更新し、正しいアカウント情報を設定します。
name = "my-mcp-worker"
main = "src/index.ts"
compatibility_date = "2025-03-03"
account_id = "your-account-id"
MCP ツールのインストール
MCP のサポートを有効にするには、workers-mcp パッケージをインストールします。
npm install workers-mcp
セットアップコマンドを実行して MCP を設定します。
npx workers-mcp setup
これにより、以下が実行されます。
- 必要な依存関係を追加する
- テスト用のローカルプロキシをセットアップする
- MCP に準拠するよう Worker を設定する
MCP サーバーコードの作成
src/index.ts を更新して MCP サーバーを定義します。
import { WorkerEntrypoint } from 'cloudflare:workers';
import { ProxyToSelf } from 'workers-mcp';
export default class MyWorker extends WorkerEntrypoint<Env> {
/**
* A friendly greeting from your MCP server.
* @param name {string} The name of the user.
* @return {string} A personalized greeting.
*/
sayHello(name: string) {
return `Hello from an MCP Worker, ${name}!`;
}
/**
* @ignore
*/
async fetch(request: Request): Promise<Response> {
return new ProxyToSelf(this).fetch(request);
}
}
主なコンポーネント:
- WorkerEntrypoint:受信リクエストとメソッドの公開を管理します。
- ProxyToSelf:MCP プロトコルへの準拠を確保します。
- sayHello メソッド:AI アシスタントが呼び出せる MCP 関数の例です。
API 呼び出しの追加
外部 API と連携することで、MCP サーバーを拡張できます。以下は、天気データを取得する例です。
export default class WeatherWorker extends WorkerEntrypoint<Env> {
/**
* Fetch weather data for a given location.
* @param location {string} The city or ZIP code.
* @return {object} Weather details.
*/
async getWeather(location: string) {
const response = await fetch(`https://api.weather.example/v1/${location}`);
const data = await response.json();
return {
temperature: data.temp,
conditions: data.conditions,
forecast: data.forecast
};
}
async fetch(request: Request): Promise<Response> {
return new ProxyToSelf(this).fetch(request);
}
}
MCP サーバーのデプロイ
Worker のセットアップが完了したら、Cloudflare にデプロイします。
npx wrangler deploy
デプロイ後、Worker が稼働し、AI アシスタントが MCP ツールを検出して使用できるようになります。
MCP サーバーを更新するには、以下のコマンドで再デプロイします。
npm run deploy
MCP サーバーのテスト
MCP のセットアップをローカルでテストするには、以下を実行します。
npx workers-mcp proxy
このコマンドは、MCP クライアント(Claude Desktop など)が接続できるように、ローカルプロキシを起動します。
セキュリティ
MCP サーバーを保護するには、Wrangler Secrets を使用します。
npx wrangler secret put MCP_SECRET
これにより、許可されていないアクセスを防止する共有シークレット認証の仕組みが追加されます。
まとめ
おめでとうございます!Cloudflare Workers を使用して MCP サーバーを構築し、デプロイできました。これで、機能を追加したり、新しいツールを AI アシスタントに公開したりできます。
詳しくは、Cloudflare MCP ドキュメントをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。