Skip to main content
Glama
mcp-access-oauth

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) 连接

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.
    -