mcpField
B
Building a Remote MCP Server on Cloudflare (Without Auth)

Building a Remote MCP Server on Cloudflare (Without Auth)

ローカル
github.com/jingwei950開発ツール077 週間前に更新

Building a Remote MCP Server on Cloudflare (Without Auth) について

Cloudflareのこのサンプルは、認証なしのリモートMCPサーバーをWorkersにデプロイするためのひな型です。開発者はTypeScriptでツールを追加し、デプロイしたエンドポイントにMCPクライアントを接続できます。

主な機能

  1. 01Cloudflare WorkersへのMCPサーバーのデプロイ
  2. 02提供テンプレートからのプロジェクト作成
  3. 03TypeScriptでのカスタムツール追加
  4. 04本番用とローカル用シークレットの設定

活用シーン

  1. 01認証なしのリモートMCPエンドポイントの構築
  2. 02Cloudflare Workersでのカスタムツールの試作

MCP 対応

リモートMCPクライアント向けのMCPサーバーエンドポイントを作成します。Cloudflare AI Playgroundとmcp-remoteプロキシを使った接続方法を説明しています。

設定

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

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

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

パッケージ
npmwrangler

ツール

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

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

詳細

Cloudflare でリモート MCP サーバーを構築する(認証なし)

この例では、認証不要のリモート MCP サーバーを Cloudflare Workers にデプロイできます。

はじめに:

Workers にデプロイ

これにより、次のような URL に MCP サーバーがデプロイされます:remote-mcp-server-authless.<your-account>.workers.dev/sse

または、以下のコマンドラインを使って、ローカルマシン上にリモート MCP サーバーを作成できます:

npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-authless

独自の Cloudflare Worker へのデプロイ

ワンクリックデプロイボタンを使う代わりに、このリポジトリをクローンして、Cloudflare アカウントに手動でデプロイできます。

  1. リポジトリをクローンします:
    git clone <repository-url>
    cd <repository-directory>
    
  2. 依存関係をインストールします:
    npm install
    
  3. Cloudflare にログインします:
    npx wrangler login
    
  4. デプロイします:
    npx wrangler deploy
    
    このコマンドで Worker がビルドされ、デプロイされます。Wrangler から、Worker のデプロイ先 URL(例:my-mcp-server.<your-account>.workers.dev/sse)が通知されます。

シークレット(API キー)の管理

カスタムツールで API キーなどのシークレットが必要な場合は、安全に設定する必要があります。

本番環境のシークレット(Cloudflare Dashboard/Wrangler)

デプロイ済みの Worker では、Cloudflare のシークレット管理機能を使用します:

  1. Wrangler を使用する場合:

    npx wrangler secret put YOUR_SECRET_NAME
    

    Wrangler からシークレット値の入力を求められます。この値は暗号化されて安全に保存され、Worker のコードのみがアクセスできます。

  2. Cloudflare Dashboard を使用する場合: Cloudflare ダッシュボードで Worker を開き、Settings -> Variables -> Environment Variables -> Add Variable に移動します。安全に保存するには、必ず「Encrypt」をクリックしてください。

ローカル開発用シークレット(.dev.vars)

npx wrangler dev を使ったローカルテストでは、プロジェクトディレクトリのルートに .dev.vars という名前のファイルを作成します。このファイルを Git にコミットしないでください。 次のように、このファイルにシークレットを追加します:

# .dev.vars - For local development only!
YOUR_SECRET_NAME="your_secret_value_here"
ANOTHER_SECRET="another_value"
コードでのシークレットへのアクセス

src/index.ts などの TypeScript ファイルでは、fetch ハンドラーに渡される env オブジェクト経由でシークレットにアクセスできます。また、初期化時に env オブジェクトを渡す場合は、init() メソッド内でもアクセスできます:

// Example in src/index.ts
export default {
  async fetch(
    request: Request,
    env: Env,
    ctx: ExecutionContext
  ): Promise<Response> {
    // Access secrets like this:
    const apiKey = env.YOUR_SECRET_NAME;
    // ... rest of your code
  },
};

// Example structure if you need env in init()
class MyMCPImplementation {
  server: MCP;
  env: Env; // Store env if needed

  constructor(env: Env) {
    this.env = env;
    this.server = new MCP();
    this.init();
  }

  init() {
    // Access secrets here:
    const apiKey = this.env.YOUR_SECRET_NAME;

    // Define tools using the secrets if necessary
    this.server.tool(/* ... */);
  }
  // ... rest of the class
}

export default {
  async fetch(
    request: Request,
    env: Env,
    ctx: ExecutionContext
  ): Promise<Response> {
    const mcpImplementation = new MyMCPImplementation(env);
    return mcpImplementation.server.handle(request);
  },
};

// Define the Env interface (if not already defined)
interface Env {
  YOUR_SECRET_NAME: string;
  ANOTHER_SECRET: string;
  // Add other secrets/bindings here
}

通常は src/index.ts にある Env インターフェースで、シークレットの型を定義することを忘れないでください。

MCP サーバーのカスタマイズ

MCP サーバーに独自のツールを追加するには、src/index.ts の init() メソッド内で this.server.tool(...) を使って各ツールを定義します。

Cloudflare AI Playground に接続する

リモート MCP クライアントである Cloudflare AI Playground から、MCP サーバーに接続できます:

  1. https://playground.ai.cloudflare.com/ にアクセスします
  2. デプロイした MCP サーバーの URL(remote-mcp-server-authless.<your-account>.workers.dev/sse)を入力します
  3. これで、Playground から MCP ツールを直接使用できます!

Claude Desktop を MCP サーバーに接続する

mcp-remote プロキシを使うと、ローカルの MCP クライアントからリモート MCP サーバーに接続することもできます。

Claude Desktop から MCP サーバーに接続するには、Anthropic のクイックスタートに従い、Claude Desktop で Settings > Developer > Edit Config に移動します。

次の設定を追加します:

{
  "mcpServers": {
    "calculator": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8787/sse" // or remote-mcp-server-authless.your-account.workers.dev/sse
      ]
    }
  }
}

Claude を再起動すると、ツールが利用可能になります。

コメント

MCP は初めてですか?

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

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