mcp-access-oauth
模型上下文协议 (MCP) 服务器 + Access OAuth
这是一个模型上下文协议 (MCP) 服务器,支持远程 MCP 连接,并内置了 Access OAuth。
你可以将其部署到自己的 Cloudflare 账户中,创建自己的 Access for SaaS OIDC 应用后,就能获得一个功能完整的远程 MCP 服务器,并在此基础上进行开发。用户可以通过你连接的 Access 身份提供商登录,从而连接到你的 MCP 服务器。
该 MCP 服务器(由 Cloudflare Workers 提供支持):
作为 OAuth 服务器 服务于你的 MCP 客户端
作为 OAuth 客户端 服务于你的真实 OAuth 服务器(此处为 Access)
快速开始
克隆仓库并安装依赖: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 服务器生成的结果。
本地开发
如果你想迭代并测试 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 服务器)。
你可以将 MCP 服务器连接到其他 MCP 客户端(如 Windsurf),方法是打开客户端的配置文件,添加与 Claude 设置相同的 JSON,然后重启 MCP 客户端。
Related MCP server: cloudflare-mcp-google-auth
工作原理
OAuth 提供者
OAuth 提供者库为 Cloudflare Workers 提供了完整的 OAuth 2.1 服务器实现。它处理 OAuth 流程的复杂性,包括令牌的颁发、验证和管理。在本项目中,它扮演双重角色:
对连接到服务器的 MCP 客户端进行身份验证
管理与 Access 的 OAuth 服务的连接
在 KV 存储中安全地存储令牌和身份验证状态
Durable MCP
Durable MCP 通过 Cloudflare 的 Durable Objects 扩展了基础 MCP 功能,提供:
MCP 服务器的持久状态管理
请求之间身份验证上下文的安全存储
通过
this.props访问已认证用户信息支持基于用户身份的条件工具可用性
MCP Remote
MCP Remote 库使你的服务器能够暴露工具,供 Inspector 等 MCP 客户端调用。它:
定义客户端与服务器之间的通信协议
提供定义工具的结构化方式
处理请求和响应的序列化与反序列化
维护客户端与服务器之间的服务器发送事件 (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.-