Remote MCP Server on Cloudflare について
Cloudflare Workers 上で OAuth ログイン付きのリモート MCP サーバーを構築・デプロイするサンプルです。接続テスト用のツールとスタンドアロンクライアントも含まれています。
主な機能
- 01OAuth ログインフロー
- 02SSE トランスポート
- 03Cloudflare Workers へのデプロイ
- 04add と xkcd のサンプルツール
- 05スタンドアロンクライアント例
活用シーン
- 01OAuth 保護付きリモート MCP サーバーの試作
- 02MCP Inspector でのツールテスト
- 03Claude Desktop からローカルまたはデプロイ済みサーバーへの接続
MCP 対応
SSE 経由で MCP クライアントにツールを提供し、OAuth ログインに対応します。MCP Inspector と Claude Desktop の接続例も含まれています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Cloudflare 上のリモート MCP サーバー
OAuth ログインを備えたリモート MCP サーバーを Cloudflare Workers 上で動かしてみましょう!
ローカルで開発する
# clone the repository
git clone [email protected]:hemanth/remote-mcp-server.git
# install dependencies
cd remote-mcp-server
npm install
# run locally
npm run dev
ブラウザーで http://localhost:8787/ を開けます。
MCP Inspector をサーバーに接続する
新しい MCP API を試すには、MCP Inspector を使用できます。
npx @modelcontextprotocol/inspector@latestで起動します- Inspector 内で、Transport Type を
SSEに切り替え、接続する MCP サーバーの URL としてhttp://localhost:8787/sseを入力し、「Connect」をクリックします - (モックの)ユーザー名/パスワードのログイン画面に移動します。ログインするには、任意のメールアドレスとパスワードを入力します
- MCP Inspector にリダイレクトされたら、定義されているツールを一覧表示して呼び出せます!
Claude Desktop をローカルの MCP サーバーに接続する
MCP Inspector も便利ですが、Claude に接続してみましょう!Anthropic のクイックスタートに従い、Claude Desktop で Settings > Developer > Edit Config を開いて設定ファイルを確認します。
テキストエディターでファイルを開き、次の設定に置き換えます。
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8787/sse"
]
}
}
}
これによりローカルプロキシが起動し、Claude が HTTP 経由で MCP サーバーと通信できるようになります。
Claude を開くとブラウザーウィンドウが開き、ログインできるはずです。右下に利用可能なツールが表示されます。適切なプロンプトを入力すると、Claude はツールの呼び出しを求めるはずです。
Cloudflare にデプロイする
npx wrangler@latest kv namespace create remote-mcp-server-oauth-kv- 手順に従って、kv 名前空間 ID を
wrangler.jsoncに追加します npm run deploy
デプロイしたリモート MCP サーバーをリモート MCP クライアントから呼び出す
上記の「ローカルで開発する」と同じように、MCP Inspector を起動します。
npx @modelcontextprotocol/inspector@latest
次に、Inspector で Worker の workers.dev URL(例:worker-name.account-name.workers.dev/sse)を、接続する MCP サーバーの URL として入力し、「Connect」をクリックします。
これで、リモート MCP クライアントから MCP サーバーに接続できました。
スタンドアロン MCP クライアントの例を使用する
このプロジェクトには、MCP サーバーにプログラムから接続してツールを呼び出す方法を示す、スタンドアロン MCP クライアントの例が含まれています。テストや統合、MCP サーバーと連携するカスタムアプリケーションの構築に役立ちます。
クライアントコードは src/client/mcp-client.ts にあり、実行するサンプルスクリプトは src/run-client.ts です。
前提条件
- サーバーの実行:MCP サーバーがローカル(
npm run devまたはnpx nx dev remote-mcp-server)で実行中か、デプロイ済みであることを確認します。 - クライアントの認証情報:クライアントは OAuth 2.0 のクライアント認証情報を使用して認証します。
- ローカル開発では、サンプルクライアント(
src/run-client.ts)にテスト用の認証情報(test-client/test-secret)があらかじめ設定されています。サーバー側で特定のクライアント登録が実装されていない場合、これらの認証情報はデフォルトの OAuth プロバイダー設定で使用されます。 - OAuth サーバーに特定のクライアント登録システムがある場合は、クライアントを登録してクライアント ID とシークレットを取得する必要があります。
- ローカル開発では、サンプルクライアント(
クライアントの例を実行する
-
環境変数を設定する(任意): クライアントスクリプト
src/run-client.tsは、環境変数で設定できます。MCP_SERVER_URL:MCP サーバーのベース URL(例:http://localhost:8787またはデプロイ済みのワーカー URL)。デフォルトはhttp://localhost:8787です。MCP_CLIENT_ID:OAuth クライアント ID。デフォルトはtest-clientです。MCP_CLIENT_SECRET:OAuth クライアントシークレット。デフォルトはtest-secretです。
シェルで次のように設定できます。
export MCP_SERVER_URL="http://your-server-url" export MCP_CLIENT_ID="your-client-id" export MCP_CLIENT_SECRET="your-client-secret" -
スクリプトを実行する: プロジェクトのルートから次のコマンドを実行します。
npm run run:clientこれにより、
ts-nodeを使ってsrc/run-client.tsが実行されます。スクリプトはサーバーへの接続、認証、サンプルのaddツールの呼び出しを試みます。注:クライアントの初期バージョンでは、実際の SDK クライアントのインスタンス化(
new McpClient(...))とツールの呼び出し(client.callTool(...))について、src/client/mcp-client.ts内にプレースホルダー実装が含まれています。ツール呼び出しを成功させるには、@modelcontextprotocol/sdkが提供する API が確定した後、これらの部分を更新する必要がある場合があります。サーバーの OAuth/tokenエンドポイントが稼働していれば、認証部分(getAccessToken)は動作するはずです。
Claude Desktop をリモート MCP サーバーに接続する
Claude の設定ファイルを、workers.dev URL(例:worker-name.account-name.workers.dev/sse)を指すように更新し、Claude を再起動します。
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"https://worker-name.account-name.workers.dev/sse"
]
}
}
}
デバッグ
問題が発生した場合は、Claude を再起動するか、次のコマンドを使ってコマンドラインから MCP サーバーに直接接続すると解決することがあります。
npx mcp-remote@latest http://localhost:8787/sse
まれに、~/.mcp-auth に追加されたファイルを削除すると解決することがあります。
rm -rf ~/.mcp-auth
xkcd ツールの使用
xkcd ツールは、ランダムな xkcd コミックの画像 URL と代替テキストを取得します。使用方法は次のとおりです。
- 上記の説明に従って、MCP Inspector または Claude Desktop を使って MCP サーバーに接続します。
xkcdツールを呼び出します。
MCP Inspector を使う場合の例:
- MCP Inspector で、利用可能なツールの一覧から
xkcdツールを選択します。 - 「Invoke」をクリックして、ランダムな xkcd コミックを取得します。
Claude Desktop を使う場合の例:
- Claude Desktop を開き、MCP サーバーに接続されていることを確認します。
- 「xkcd ツールを使ってランダムな xkcd コミックを取得して」のようなプロンプトを使用します。
応答には、ランダムな xkcd コミックの画像 URL と代替テキストが含まれます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。