
如何把使用 OAuth 2.1 的 MCP 服务器接入 Kortix 连接器【免费下载链接】agentpressThe open-source AI Management System项目地址: https://gitcode.com/GitHub_Trending/ag/agentpress如果你的 MCP 服务器通过 OAuth 2.1授权码 PKCE做鉴权本文说明如何在 Kortix 中把它声明为一个provider: mcp的连接器完成授权并验证连接可用。整个过程不需要在服务器提供方手工创建 OAuth 应用——只要服务器支持动态客户端注册RFC 7591Kortix 会自动注册自己作为客户端。前提是你已经拥有一个 Kortix 项目且可以在项目中维护kortix.yaml。Kortix 的 OAuth 2.1 发现链接入之前先弄清楚 Kortix 探测服务器的顺序文档中定义的完整流程如下未认证的探测请求返回401并带WWW-Authenticate: Bearer resource_metadata…Kortix 到该 URL或/.well-known/oauth-protected-resource读取受保护资源元数据RFC 9728Kortix 读取该资源声明的第一个授权服务器的授权服务器元数据RFC 8414 或 OpenID Connect discovery。如果授权服务器声明了registration_endpointKortix 会按 RFC 7591 把自己注册为 OAuth 客户端界面只剩一个Connect按钮——你不需要创建任何应用也不需要复制 client ID 或 secret。随后 Kortix 运行 Authorization Code PKCES256并通过resource参数RFC 8707把令牌绑定到该服务器。另外两点安全行为Kortix 把每个连接绑定到签发它的授权服务器。当回调携带iss参数RFC 9207时若与记录的 issuer 不匹配Kortix 在兑换前就拒绝该 codeKortix 维护 MCP 会话按需执行initialize和notifications/initialized之后的调用携带Mcp-Session-Id。不回会话的服务器永远看不到握手。来源connectors.mdx。从仪表盘接入主路径这是文档给出的最短操作路径适合交互式接入打开项目进入Connectors页选择目标应用连接器选择连接范围Project表示共享的项目连接User表示由发起操作的成员持有进入该连接器选择Add credential再选择OAuth 2.0标签页如果服务器支持动态客户端注册点击Connect完成授权码流程即可Kortix 会把连接好的账号存为一条 connection。从 CLI 接入仪表盘只是入口之一。同样的流程可以完全在终端里跑完便于脚本化或从 agent 会话中发起1. 在kortix.yaml中声明连接器。mcp提供方必须提供urltransport支持http默认或sse见 manifest 参考connectors: - slug: read-ai name: Read AI provider: mcp url: https://api.read.ai/mcp auth: type: bearermanifest 来自默认分支连接器在 change request 合并后生效本地改动可以用kortix ship推送lint、提交、推分支一次完成也可以对kortix connectors add等命令加--apply直接改云端项目见 CLI 文档。2. 运行授权命令。kortix connectors authorize slug端到端完成 OAuth 2.1发现授权元数据、在服务器支持 RFC 7591 时注册客户端、打印待批准的 URLkortix connectors authorize read-ai --json命令创建 connection、跑完发现链、注册客户端如支持返回形如下面的 JSON文档示例{ connection_id: 7b1a16b2-..., registered: true, scopes: [openid, offline_access, mcp:execute, meeting:read], authorization_url: https://authn.read.ai/oauth2/auth?response_typecode..., expires_at: 2026-08-19T14:48:26.345Z }把authorization_url交给实际使用者由其在浏览器中批准。3. 检查授权状态kortix connectors authorize read-ai --status命令在状态为error时以非零码退出这既是验证方式也是脚本里的失败判定。常用参数--scope a b收窄本次请求的 scope--client-id id/--client-secret s服务器不支持动态客户端注册时使用填你在该提供方自建应用的凭证--device改用 OAuth 2.0 设备流RFC 8628打印 code 和 URL 后轮询直到批准、拒绝或过期--success-redirect url/--error-redirect url自定义授权成功或失败后的跳转。SDK 提供等价的四个方法discoverConnectionOAuth2Resource、registerConnectionOAuth2Client、startConnectionOAuth2Authorization、getConnectionOAuth2Status。服务器需要预注册客户端时发现链覆盖不了两种情况需要手工补信息服务器公布了端点但没有registration_endpointKortix 会预填 authorization URL、token URL 和 scopes你只需输入自己创建的应用的 client ID服务器完全没有元数据所有字段手工填写。如果授权服务器要求提前登记回调地址登记这一个Kortix 云端https://api.kortix.com/v1/connectors/oauth2/callback自托管部署给实例一个稳定的公网 URL自托管时回调 URL 从KORTIX_URL你的 API 公网 origin派生。授权服务器按字节比较redirect_uri所以这个值必须稳定。用零配置 quick tunnel 启动的自托管实例每次cloudflared重启都会得到一个新的https://random.trycloudflare.com主机名支持动态客户端注册的服务器能自行恢复下次授权用新 URL 重新注册客户端但需要预注册 OAuth 应用的服务器不行——你必须在每次重启后更新它允许的 redirect URI。正确做法是配置命名隧道设置CLOUDFLARE_TUNNEL_TOKEN和CLOUDFLARE_TUNNEL_HOSTNAME或把KORTIX_URL指到自己的域名然后一次性登记https://your-kortix-host/v1/connectors/oauth2/callback其中your-kortix-host替换为你的 Kortix 公网主机名其余路径固定。验证与排查授权完成后Kortix 会自动重新拉取连接器的工具目录连接器无需手动 sync 就脱离error状态调用被拒时会话内连接器调用返回{ ok: false, status: denied, reason, hint }kortix connectors ls中未授权的应用显示为needs_auth对应的reason是connector_not_connectedHTTP 403含义是“连接器已声明但本会话没有可用连接”。其他常见reason及含义见 connectors.mdx 的拒调表connector_not_assigned403agent 的connectors:授权未包含它、connector_disabled403、connector_not_found404、action_not_found404会话级绑定需要指定具体 connection 时用connector_bindings键为连接器 slug值为匹配授权策略的活跃 connection_id可用GET /projects/{projectId}/sessions/{sessionId}/scope读取当前生效绑定PUT同一路径可替换对下一次工具调用生效无需重启会话。接入完成后的常规使用把连接器 slug 加进 agent 的connectors字段记得connectors_required必须是connectors的子集会话内用kortix connectors ls和kortix connectors call slug action json-args发起调用。限制与边界该 OAuth 2.1 流程适用于mcp提供方的远程 MCP 服务器HTTP 或 SSEpipedream提供方的托管 OAuth 走的是另一条流channel 安装或原生 OAuth2 grant不在本文范围内设备流是 OAuth 2.0 device flowRFC 8628与主路径的发现/注册链并存按 CLI 文档中的--device单独使用Kortix 侧的连接器策略policy.default_mode、sensitive: true等属于连接器治理与授权接入是两个独立步骤接入成功后按需配置即可。【免费下载链接】agentpressThe open-source AI Management System项目地址: https://gitcode.com/GitHub_Trending/ag/agentpress创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考