Skip to content
FunCoding

Search

Search docs, Skills and MCP

MCP OAuth 与 Callback

选择预注册 client、CIMD 或 DCR,并正确区分 callback URL 和本地监听端口。

This page has not been translated into English yet. The original Chinese version is shown below.

OAuth 登录失败时,先区分服务器注册方式、回调地址、监听端口和 issuer 验证。它与 Codex 自身的 ChatGPT 登录是不同流程。

预注册客户端

codex mcp add example --url https://mcp.example.com --oauth-client-id my-client

示例需替换为实际 URL 和 client ID。将 codex mcp add 显示的完整 callback 注册到提供方,不能仅复制文档里的通用地址。

服务器声明 authorization_response_iss_parameter_supported=true 且提供 metadata issuer 时,新预注册 client 可用稳定 callback。未声明 issuer 支持时需要服务器特定 callback ID,该 ID 由 MCP URL(含 path/query)派生。

已有 client_id 却没有保存 callback 的配置,继续使用带 callback ID 的地址。不匹配的显式 callback 可能回退到全局/default 加服务器 ID,且不会改写保存的值。

URL 与监听端口

顶层 mcp_oauth_callback_url 设置 callback 路径或远程 ingress;mcp_oauth_callback_port 设置本地全局监听端口,单服务器 oauth.callback_port 可以覆盖。

URL 中写端口不会自动设置 listener。直接 loopback 回调可用不带端口的 http://127.0.0.1,让登录时插入实际端口;显式固定端口时需同时配置 URL 与 listener。localhost、IPv6、HTTPS 和已有端口 URL 不使用该自动替换。经代理的外部端口可以与本地 listener 不同。

注册方式

服务器支持 CIMD、token endpoint 允许 none、callback 使用受支持 loopback 时,Codex 可自动选 CIMD;否则在可用时使用 DCR。已有 client ID 优先,跳过自动注册。

单次登录可指定:

codex mcp login <server-name> --oauth-client-registration cimd
codex mcp login <server-name> --oauth-client-registration dcr

默认 auto,选择只作用于当前登录,不保存到 config.toml。自定义 callback 主机、路径或 query 需要 DCR 或预注册 client。

验证失败

返回的 iss 不匹配总会拒绝;服务器声明 issuer 支持却缺少 iss 也会拒绝。这些情况不会交换 code 或尝试另一个 callback。畸形 URL、声明支持但 metadata 无 issuer 同样硬失败。

服务器声明 scopes_supported 时优先使用其 scopes,否则回退 config.toml 配置。插件 OAuth 使用 camelCase 字段,但遵循相同 callback 选择规则。