Skip to main content
Glama
rodolfostoicus

mcp-access-oauth

Model Context Protocol (MCP) サーバー + Access OAuth

これは、Access OAuth を組み込んだリモート MCP 接続をサポートする Model Context Protocol (MCP) サーバーです。

ご自身の Cloudflare アカウントにデプロイし、Access for SaaS OIDC アプリを作成すると、すぐに使えるリモート MCP サーバーが完成します。ユーザーは、接続された Access Identity Provider でサインインして、MCP サーバーに接続できるようになります。

MCP サーバー(Cloudflare Workers を利用)は、以下の役割を担います:

  • MCP クライアントに対する OAuth サーバー として機能

  • 実際の OAuth サーバー(この場合は Access)に対する OAuth クライアント として機能

はじめに

リポジトリをクローンして依存関係をインストールします:npm install

本番環境向け

新しい Access for SaaS OIDC アプリ を作成します:

  • 認証コールバック URL には、https://mcp-access-oauth.<your-subdomain>.workers.dev/callback と、ローカル開発用に http://localhost:8788/callback を指定します。

  • クライアント ID とクライアントシークレットを控えておきます。

  • Wrangler を使用してシークレットを設定します。

wrangler secret put ACCESS_CLIENT_ID
wrangler secret put ACCESS_CLIENT_SECRET
wrangler secret put ACCESS_TOKEN_URL
wrangler secret put ACCESS_AUTHORIZATION_URL
wrangler secret put ACCESS_JWKS_URL
wrangler secret put COOKIE_ENCRYPTION_KEY # add any random string here e.g. openssl rand -hex 32

KV 名前空間の設定

  • KV 名前空間を作成します: wrangler kv:namespace create "OAUTH_KV"

  • Wrangler ファイルを KV ID で更新します。

デプロイとテスト

MCP サーバーをデプロイして、workers.dev ドメインで利用可能にします。 wrangler deploy

Inspector を使用してリモートサーバーをテストします:

npx @modelcontextprotocol/inspector@latest

https://mcp-access-oauth.<your-subdomain>.workers.dev/mcp を入力して接続します。認証フローを完了すると、ツールが動作していることを確認できます:

リモート MCP サーバーがデプロイされました!

アクセス制御

この MCP サーバーは認証に Access を使用しています。認証されたすべての Access ユーザーは、"add" などの基本ツールにアクセスできます。

"generateImage" ツールは、ALLOWED_USERNAMES 設定にリストされた特定の Access ユーザーのみが使用できます:

// Add user emails for image generation access
const ALLOWED_EMAILS = new Set(["employee1@mycompany.com", "teammate1@mycompany.com"]);

Claude Desktop からリモート MCP サーバーにアクセスする

Claude Desktop を開き、Settings -> Developer -> Edit Config に移動します。これにより、Claude がアクセスできる MCP サーバーを制御する設定ファイルが開きます。

内容を以下の設定に置き換えます。Claude Desktop を再起動すると、OAuth ログインページがブラウザで開きます。認証フローを完了して、Claude に MCP サーバーへのアクセスを許可します。アクセスを許可すると、ツールが使用可能になります。

{
  "mcpServers": {
    "math": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp-access-oauth.<your-subdomain>.workers.dev/mcp"
      ]
    }
  }
}

ツール(🔨 の下)がインターフェースに表示されたら、Claude にそれらを使用するよう依頼できます。例:「math ツールを使って 23 と 19 を足してもらえますか?」Claude がツールを呼び出し、MCP サーバーが生成した結果を表示します。

ローカル開発向け

MCP サーバーを繰り返しテストしたい場合は、ローカル開発環境で行うことができます。

  • ホームページ URL には http://localhost:8788 を指定します。

  • 認証コールバック URL には http://localhost:8788/callback を指定します。

  • クライアント ID を控え、クライアントシークレットを生成します。

  • プロジェクトルートに .dev.vars ファイルを作成し、以下を記述します:

ACCESS_CLIENT_ID=<your client id>
ACCESS_CLIENT_SECRET=<your client secret>
ACCESS_TOKEN_URL=<your Access for SaaS token url>
ACCESS_AUTHORIZATION_URL=<your Access for SaaS authorization url>
ACCESS_JWKS_URL=<your Access for SaaS JWKS url>
COOKIE_ENCRYPTION_KEY=COOKIE_ENCRYPTION_KEY

開発とテスト

サーバーをローカルで実行し、http://localhost:8788 で利用可能にします。 wrangler dev

ローカルサーバーをテストするには、Inspector に http://localhost:8788/mcp を入力して接続します。プロンプトに従うと、「ツール一覧」を表示できます。

Claude およびその他の MCP クライアントの使用

Claude を使用してリモート MCP サーバーに接続する際、エラーメッセージが表示される場合があります。これは、Claude Desktop がまだリモート MCP サーバーを完全にはサポートしていないためです。MCP サーバーが接続されているかどうかを確認するには、Claude インターフェースの右下にある 🔨 アイコンにカーソルを合わせます。ツールが利用可能になっているはずです。

Cursor およびその他の MCP クライアントの使用

Cursor を MCP サーバーに接続するには、Type で「Command」を選択し、Command フィールドにコマンドと引数を1つにまとめて入力します(例:npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/mcp)。

Cursor は HTTP+SSE サーバーをサポートしていますが、認証はサポートしていないため、mcp-remote を使用する必要があることに注意してください(また、HTTP サーバーではなく STDIO サーバーを使用します)。

Windsurf などの他の MCP クライアントに MCP サーバーを接続するには、クライアントの設定ファイルを開き、Claude のセットアップで使用したものと同じ JSON を追加して、MCP クライアントを再起動します。

Related MCP server: cloudflare-mcp-google-auth

仕組み

OAuth プロバイダー

OAuth プロバイダーライブラリは、Cloudflare Workers 向けの完全な OAuth 2.1 サーバー実装として機能します。トークンの発行、検証、管理など、OAuth フローの複雑な処理を担当します。このプロジェクトでは、以下の2つの役割を果たします:

  • サーバーに接続する MCP クライアントの認証

  • Access の OAuth サービスへの接続管理

  • KV ストレージでのトークンと認証状態の安全な保存

Durable MCP

Durable MCP は、Cloudflare の Durable Objects を使用して基本の MCP 機能を拡張し、以下を提供します:

  • MCP サーバーの永続的な状態管理

  • リクエスト間での認証コンテキストの安全な保存

  • this.props を介した認証済みユーザー情報へのアクセス

  • ユーザー ID に基づく条件付きツール利用のサポート

MCP Remote

MCP Remote ライブラリは、Inspector などの MCP クライアントから呼び出し可能なツールをサーバーが公開できるようにします。以下の機能を提供します:

  • クライアントとサーバー間の通信プロトコルの定義

  • ツールを構造化して定義する方法の提供

  • リクエストとレスポンスのシリアル化および逆シリアル化の処理

  • クライアントとサーバー間の Server-Sent Events (SSE) 接続の維持

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    A Cloudflare Workers-based MCP server that enables secure remote connections using built-in OAuth authentication via Cloudflare Access. It provides identity-based access control for MCP tools and supports persistent state management through Durable Objects and SSE.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server with built-in OAuth authentication via Cloudflare Access, enabling secure tool access and user identity-based restrictions.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    A remote MCP server with built-in OAuth authentication via Cloudflare Access, providing tools like add and generateImage with user-based access control.
    -