我找不到适用于 MCP 服务器的 OAuth 2.1 代理,所以我自己写了一个

发布日期:2026-03-27 10:01:34   浏览量 :2
发布日期:2026-03-27 10:01:34  
2

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

当我开始部署自定义 MCP 服务器以连接到 Claude.ai 时,很快就遇到了障碍。

Claude.ai 的自定义连接器流程要求你的 MCP 服务器在尝试认证之前,必须实现OAuth 2.1 受保护资源元数据——具体来说就是 RFC 9728。如果没有 RFC 9728 所要求的 /.well-known/oauth-protected-resource 端点?就会静默失败,没有任何错误提示。连接器根本无法工作。

我试图寻找一个现成的解决方案——某种可以部署在任意 MCP 服务器前端、处理规范合规性、验证 JWT 并且不干扰正常业务的东西。但这样的工具并不存在。于是我开发了它:mcp-gate

问题的本质究竟是什么

当 Claude.ai 连接到自定义 MCP 服务器时,其流程大致如下:

  1. Claude.ai 从你的服务器获取 /.well-known/oauth-protected-resource
  2. 该端点必须返回符合 RFC 9728 的元数据,并指向你的授权服务器
  3. Claude.ai 与该授权服务器协商获取 OAuth 2.1 令牌
  4. 后续请求会携带 Bearer JWT,你的服务器必须通过 JWKS 验证该令牌

大多数 MCP 服务器实现——无论你是用 Go、Python、TypeScript 编写的,还是使用现成的服务器——都没有实现上述任何功能。它们专注于 MCP 协议本身,而非认证基础设施。而且,将 RFC 9728 和 JWKS 验证直接硬编码进每一个你部署的服务器中,本身就是一种错误的抽象方式。

你真正需要的是一个边车代理(sidecar proxy),它可以统一处理认证逻辑,而不管其后端运行的是什么服务。

mcp-gate 的功能

mcp-gate 是一个无状态的 Go 二进制程序,部署在 Claude.ai 与你的 MCP 服务器之间:

mcp-gate 架构图

它完成以下三件事:

  1. 提供 /.well-known/oauth-protected-resource 端点——返回符合 RFC 9728 的元数据,引导 Claude.ai 连接到你的授权服务器
  2. 对每个请求中的 Bearer JWT 进行验证——从你的授权服务器获取并缓存 JWKS,验证签名(RS256)、过期时间、签发者、受众以及作用域声明
  3. 反向代理到上游 MCP 服务器——如果令牌有效,则转发请求;否则返回 401 错误

仅此而已。它对你 MCP 服务器的具体功能没有任何假设。它可以与任何符合 OIDC 规范的授权服务器配合使用:Authentik、Keycloak、Okta、Auth0,或者任何能通过 JWKS 端点签发 JWT 的系统。

快速上手

export LISTEN_ADDR=0.0.0.0:8080
export UPSTREAM_URL=http://your-mcp-server:8000
export RESOURCE_URI=https://mcp.yourdomain.com
export AUTHORIZATION_SERVER=https://auth.yourdomain.com/application/o/mcp/
export 

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部