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 服务器时,其流程大致如下:
- Claude.ai 从你的服务器获取
/.well-known/oauth-protected-resource - 该端点必须返回符合 RFC 9728 的元数据,并指向你的授权服务器
- Claude.ai 与该授权服务器协商获取 OAuth 2.1 令牌
- 后续请求会携带 Bearer JWT,你的服务器必须通过 JWKS 验证该令牌
大多数 MCP 服务器实现——无论你是用 Go、Python、TypeScript 编写的,还是使用现成的服务器——都没有实现上述任何功能。它们专注于 MCP 协议本身,而非认证基础设施。而且,将 RFC 9728 和 JWKS 验证直接硬编码进每一个你部署的服务器中,本身就是一种错误的抽象方式。
你真正需要的是一个边车代理(sidecar proxy),它可以统一处理认证逻辑,而不管其后端运行的是什么服务。
mcp-gate 的功能
mcp-gate 是一个无状态的 Go 二进制程序,部署在 Claude.ai 与你的 MCP 服务器之间:
它完成以下三件事:
-
提供
/.well-known/oauth-protected-resource端点——返回符合 RFC 9728 的元数据,引导 Claude.ai 连接到你的授权服务器 - 对每个请求中的 Bearer JWT 进行验证——从你的授权服务器获取并缓存 JWKS,验证签名(RS256)、过期时间、签发者、受众以及作用域声明
- 反向代理到上游 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 免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。
