mcpField
R
Remote MCP Server on Cloudflare

Remote MCP Server on Cloudflare

ローカル
github.com/hemanthクラウド・インフラ174 週間前に更新

Remote MCP Server on Cloudflare について

Cloudflare Workers 上で OAuth ログイン付きのリモート MCP サーバーを構築・デプロイするサンプルです。接続テスト用のツールとスタンドアロンクライアントも含まれています。

主な機能

  1. 01OAuth ログインフロー
  2. 02SSE トランスポート
  3. 03Cloudflare Workers へのデプロイ
  4. 04add と xkcd のサンプルツール
  5. 05スタンドアロンクライアント例

活用シーン

  1. 01OAuth 保護付きリモート MCP サーバーの試作
  2. 02MCP Inspector でのツールテスト
  3. 03Claude Desktop からローカルまたはデプロイ済みサーバーへの接続

MCP 対応

SSE 経由で MCP クライアントにツールを提供し、OAuth ログインに対応します。MCP Inspector と Claude Desktop の接続例も含まれています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"remote-mcp-server-hemanth": {
"command": "npx",
"args": [
"-y",
"mcp-remote"
]
}
}
}
起動コマンドnpx -y mcp-remote

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmcp-remote

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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 にリダイレクトされたら、定義されているツールを一覧表示して呼び出せます!
上記の設定をした MCP Inspector
ツール呼び出し後の 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 はツールの呼び出しを求めるはずです。

ハンマーアイコンをクリックすると利用可能なツールの一覧が表示されます
Claude は MCP の add ツールを呼び出し、「計算機をなくしてしまい、指も使い切ってしまいました。math ツールを使って 23 と 19 を足してもらえますか?」というプロンプトに回答します

Cloudflare にデプロイする

  1. npx wrangler@latest kv namespace create remote-mcp-server-oauth-kv
  2. 手順に従って、kv 名前空間 ID を wrangler.jsonc に追加します
  3. 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 です。

前提条件
  1. サーバーの実行:MCP サーバーがローカル(npm run dev または npx nx dev remote-mcp-server)で実行中か、デプロイ済みであることを確認します。
  2. クライアントの認証情報:クライアントは OAuth 2.0 のクライアント認証情報を使用して認証します。
    • ローカル開発では、サンプルクライアント(src/run-client.ts)にテスト用の認証情報(test-client / test-secret)があらかじめ設定されています。サーバー側で特定のクライアント登録が実装されていない場合、これらの認証情報はデフォルトの OAuth プロバイダー設定で使用されます。
    • OAuth サーバーに特定のクライアント登録システムがある場合は、クライアントを登録してクライアント ID とシークレットを取得する必要があります。
クライアントの例を実行する
  1. 環境変数を設定する(任意): クライアントスクリプト 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"
    
  2. スクリプトを実行する: プロジェクトのルートから次のコマンドを実行します。

    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 と代替テキストを取得します。使用方法は次のとおりです。

  1. 上記の説明に従って、MCP Inspector または Claude Desktop を使って MCP サーバーに接続します。
  2. xkcd ツールを呼び出します。

MCP Inspector を使う場合の例:

  • MCP Inspector で、利用可能なツールの一覧から xkcd ツールを選択します。
  • 「Invoke」をクリックして、ランダムな xkcd コミックを取得します。

Claude Desktop を使う場合の例:

  • Claude Desktop を開き、MCP サーバーに接続されていることを確認します。
  • 「xkcd ツールを使ってランダムな xkcd コミックを取得して」のようなプロンプトを使用します。

応答には、ランダムな xkcd コミックの画像 URL と代替テキストが含まれます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。