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 32KV 名前空間の設定
KV 名前空間を作成します:
wrangler kv:namespace create "OAUTH_KV"Wrangler ファイルを KV ID で更新します。
デプロイとテスト
MCP サーバーをデプロイして、workers.dev ドメインで利用可能にします。
wrangler deploy
Inspector を使用してリモートサーバーをテストします:
npx @modelcontextprotocol/inspector@latesthttps://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) 接続の維持
This server cannot be deployed
Maintenance
Related MCP Connectors
Cloudflare Workers MCP server: ai-guardrails
Cloudflare Workers MCP server: ai-gateway
Cloudflare Workers MCP server: ai-model-router
Cloudflare Workers MCP server: blog
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA 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.-
- FlicenseNot gradedqualityDmaintenanceDeployable MCP server with Google OAuth for remote connections, enabling authenticated tool access via Cloudflare Workers.-
- FlicenseNot gradedqualityCmaintenanceRemote MCP server with built-in OAuth authentication via Cloudflare Access, enabling secure tool access and user identity-based restrictions.-
- FlicenseNot gradedqualityCmaintenanceA remote MCP server with built-in OAuth authentication via Cloudflare Access, providing tools like add and generateImage with user-based access control.-