mcp-access-oauth
模型上下文协议(MCP)服务器 + Access OAuth
这是一个模型上下文协议(MCP)服务器,支持远程 MCP 连接,并内置了 Access OAuth 认证。
您可以将其部署到自己的 Cloudflare 账户中,创建自己的 Access for SaaS OIDC 应用后,就能获得一个功能完备的远程 MCP 服务器,供用户使用。用户只需通过您的 Access 身份提供商登录,即可连接到您的 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"使用 KV ID 更新 Wrangler 配置文件
部署与测试
部署 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,进入设置 -> 开发者 -> 编辑配置。该配置文件控制着 Claude 可以访问哪些 MCP 服务器。
将内容替换为以下配置。重启 Claude Desktop 后,浏览器窗口将打开并显示您的 OAuth 登录页面。完成认证流程后,Claude 即可访问您的 MCP 服务器。认证完成后,工具即可正常使用。
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp-access-oauth.<your-subdomain>.workers.dev/mcp"
]
}
}
}当工具(🔨 图标下)出现在界面中后,您就可以让 Claude 使用它们了。例如:"你能用数学工具计算 23 加 19 吗?"。Claude 将调用该工具并显示 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 服务器,请选择 类型:"命令",并在 命令 字段中组合命令和参数(例如 npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/mcp)。
请注意,虽然 Cursor 支持 HTTP+SSE 服务器,但不支持身份认证,因此您仍然需要使用 mcp-remote(并且要使用 STDIO 服务器,而不是 HTTP 服务器)。
您还可以通过打开客户端的配置文件,添加与 Claude 配置相同的 JSON 内容,然后重启 MCP 客户端,即可将 MCP 服务器连接到 Windsurf 等其他 MCP 客户端。
Related MCP server: cloudflare-mcp-google-auth
工作原理
OAuth 提供方
OAuth 提供方库为 Cloudflare Workers 提供了完整的 OAuth 2.1 服务器实现。它处理了 OAuth 流程中的所有复杂环节,包括令牌签发、验证和管理。在本项目中,它扮演着双重角色:
对连接到您服务器的 MCP 客户端进行身份认证
管理与 Access 的连接,处理 Access 的 OAuth 服务
安全存储
安全存储模块利用 Cloudflare 的 KV 存储和 Durable Objects,为 OAuth 流程提供可靠的状态管理:
为您的 MCP 服务器提供持久化状态管理
在请求之间安全存储认证上下文
通过
this.props提供已认证用户的信息访问支持根据用户身份条件性地开放工具权限
MCP 远程库
MCP 远程库使您的服务器能够向 MCP 客户端(如 Inspector)暴露工具。它:
定义了客户端与服务器之间的通信协议
提供了一种结构化的工具定义方式
处理请求和响应的序列化与反序列化
维护客户端与服务器之间的服务器发送事件(SSE)连接
Related MCP Connectors
Cloudflare Workers MCP server: ai-guardrails
Cloudflare Workers MCP server: ai-gateway
Cloudflare Workers MCP server: blog
Cloudflare Workers MCP server: ai-agent-scratchpad
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 gradedqualityDmaintenanceEnables remote MCP connections with OAuth login, running on Cloudflare Workers for secure tool access.-
- FlicenseNot gradedqualityCmaintenanceEnables running a remote MCP server on Cloudflare Workers with OAuth login, allowing tools to be accessed remotely.-