RH
RouterHub AI API 中转站导航与平台推荐
博客

Codex 0.153.0 与 Claude Code 新版都在强化 MCP:中转 API 接入前先核对什么

OpenAI Codex 0.153.0 与 Claude Code 2.1.259 同期强化了 MCP 连接、OAuth、托管服务器和权限控制。

muchacha 2026-09-03 02:30:44

正文

如果你最近升级了 Codex 或 Claude Code,可能会遇到一个看似简单、实际很容易出错的问题:模型 API 能调用,不代表 MCP 工具就能正常工作;MCP 服务器能连接,也不代表它的授权、权限和中转渠道已经配置正确。

截至 2026 年 9 月 3 日,OpenAI Codex 发布了 0.153.0,Anthropic Claude Code 发布了 2.1.259。两个项目都在继续补强 MCP 相关能力,但方向并不完全相同:Codex 强调不同客户端共享 MCP 配置、Streamable HTTP 与 OAuth 连接;Claude Code 则增加了组织级托管 MCP 服务器,并继续完善无人值守运行、OAuth 作用域与权限边界。

这对使用 API Key、中转 API 或自建兼容入口的开发者意味着:以后排查“工具调用失败”,不能只看 base_url 和 model。至少要把模型接口、MCP 传输、OAuth 授权、工具审批、网络出口和成本归因分开核对。

先说结论:API 中转和 MCP 中转不是同一件事

很多配置教程会把所有地址都叫“API 地址”,但 AI 编程代理通常同时存在两条链路:

编程代理 ──模型请求──> OpenAI / Anthropic 兼容 API 或中转渠道
编程代理 ──工具请求──> MCP Server(本地 stdio 或远程 HTTP)

第一条链路负责模型推理,通常涉及:

  • base_url 或供应商 endpoint;
  • API Key、模型 ID、Responses API 或 Messages API 兼容性;
  • 输入、输出、缓存 token 和上下文限制;
  • 429、5xx、超时、流式响应和渠道侧倍率。

第二条链路负责工具与数据源,通常涉及:

  • stdio、Streamable HTTP 或旧版 HTTP+SSE;
  • OAuth 发现、回调地址、scope 和 access token;
  • 工具是否需要用户审批;
  • 服务器的 Origin 校验、网络出口和本地监听地址;
  • 工具结果长度、重试和失败后的任务行为。

因此,把模型请求换成中转 API,并不会自动让远程 MCP 服务器也走同一个渠道。同样,MCP 服务器返回 401,也不一定是模型 API Key 错了。

今日变化:两个编程代理正在把 MCP 配置做得更“平台化”

Codex 0.153.0:客户端共享配置,但 API Key 会话仍有边界

OpenAI 的 Codex 文档说明,Codex 将 MCP 配置放在 ~/.codex/config.toml,也可以在受信任的项目中使用 .codex/config.toml。ChatGPT 桌面应用、Codex CLI 和 IDE 扩展可以共享这套 Codex 主机配置,配置一次后可以在不同客户端之间使用。

Codex 文档列出的 MCP 连接能力包括:

  • 本地 stdio 服务器;
  • 远程 Streamable HTTP 服务器;
  • Bearer Token;
  • OAuth,包括 Client ID Metadata Documents(CIMD)和 Dynamic Client Registration(DCR);
  • 对受信任的一方服务器使用 ChatGPT 会话认证。

但同一份文档也明确区分了会话类型:Codex 的实验性 context management 功能只对符合条件的 ChatGPT 订阅和 Codex 后端会话开放,API-key 会话、自定义 provider 和临时结构化线程不在支持范围内。这意味着,使用第三方兼容 API 或中转渠道时,不能因为客户端界面出现了某个能力,就假定该能力可以完整复用。

0.153.0 的发布说明还提到:MCP 工具审批记忆会限定在所选 app account;同时,Codex 增加或修复了与 MCP 事件流、工具审批和会话恢复有关的行为。对于长时间运行的编码任务,这些变化会影响“重新启动后是否还需要重新授权”和“同一个工具批准是否会误用于另一个账号”。

Claude Code 2.1.259:组织可以下发远程 MCP,但不是任意命令执行

Anthropic 的 Claude Code v2.1.259 发布说明新增了 managedMcpServers 管理设置。组织可以向每位用户提供 HTTP/SSE MCP 服务器,配置形状与 .mcp.json 类似;如果条目要求运行本地 command,则会被跳过。

这条变化的实际含义是:团队可以集中分发远程工具入口,但它不是把任意本地脚本推送给所有开发者执行。对使用者而言,仍然需要确认:

  1. 服务器是远程 HTTP/SSE,还是本地 stdio;
  2. OAuth 登录由谁发起、凭证保存在哪里;
  3. 工具是否默认需要批准;
  4. 团队策略是否会覆盖项目级配置;
  5. MCP 服务器的错误是否会被误判为模型或中转故障。

该版本还增加了 --permission-prompts none,适合无人值守的 headless 主机:原本会弹出提示的操作会自动拒绝,但当前权限模式仍然负责其他决策。这个参数适合自动化环境,却不应被理解为“关闭安全控制”。在 CI、远程开发机或代理服务器上,自动拒绝和自动允许是两种完全不同的策略。

MCP 规范已经改变了传输检查方式

MCP 规范的传输文档把标准连接方式分为 stdio 与 Streamable HTTP,并说明 Streamable HTTP 取代了 2024-11-05 版本中的 HTTP+SSE 传输。

对现有项目来说,这不等于旧服务器会立即失效。规范仍然提供了向后兼容说明,但客户端和服务器需要确认各自支持的版本与能力。远程 MCP 的关键检查项包括:

  • 是否使用单一 MCP endpoint,同时支持 POST 与 GET;
  • 是否使用 text/event-stream 推送服务端消息;
  • 客户端是否处理 JSON 返回与 SSE 返回两种情况;
  • 是否支持多连接、重连、恢复与重复投递;
  • 是否发送并校验 MCP-Protocol-Version;
  • 服务器是否校验 Origin,避免 DNS rebinding;
  • 本地服务是否只绑定 127.0.0.1,而不是暴露到 0.0.0.0;
  • 远程连接是否真正启用了认证。

如果你的中转渠道只承诺“支持 OpenAI 兼容接口”,这并不能证明它支持 MCP 的 Streamable HTTP,也不能证明它会正确转发 SSE、OAuth 元数据或工具调用结果。两者是不同的协议兼容问题。

OAuth 失败时,先别急着换中转站

MCP 授权规范要求受保护的 MCP 服务器使用 OAuth 相关元数据完成授权服务器发现。规范涉及 OAuth 2.1、Protected Resource Metadata、Authorization Server Metadata,以及可选的 Dynamic Client Registration。

实际排查可以按以下顺序进行:

1. 看错误发生在哪一层

错误表现 更可能的原因 第一检查点
模型请求直接 401 模型 API Key、渠道认证或 endpoint 错误 API Key、base_url、模型 ID
MCP 登录页打不开 OAuth discovery、网络出口或服务器地址问题 .well-known 元数据、DNS、代理
登录后 redirect URI mismatch 回调端口与注册信息不一致 callback URL、固定端口
MCP 连接成功但工具列表为空 服务器断开、初始化失败或版本不兼容 初始化日志、协议版本、服务器日志
工具调用返回权限错误 scope、资源权限或工具审批不足 OAuth scope、工具授权、账号权限
模型能回答但不会调用工具 工具未加载、被策略过滤或上下文不完整 /mcp、工具列表、权限模式

2. 确认 OAuth scope 是否过宽或过窄

Claude Code 文档提供了 oauth.scopes 配置,可以固定授权流程中请求的 scope。scope 过窄,工具可能在登录成功后仍然无法执行;scope 过宽,则会扩大第三方 MCP 服务器能够代表用户访问的资源范围。

建议把 scope 写进配置审查清单,而不是只让用户“重新登录一次”。如果服务器文档给出的 scope 与客户端实际请求不一致,还要检查 MCP 服务器返回的 WWW-Authenticate、Protected Resource Metadata 和授权服务器元数据。

3. 远程环境固定回调端口

在 SSH、容器或没有图形界面的机器上,OAuth 浏览器流程经常失败。Claude Code 支持 --no-browser,也支持通过 --callback-port 固定回调端口,以匹配已经预注册的 redirect URI。

这类问题与 API 中转没有直接关系。除非中转渠道明确提供了完整的 MCP OAuth 代理能力,否则不要把“换一个模型 API 地址”当作 OAuth 修复方案。

给模型配置中转 API 时,应该怎样避免误判

如果只是要让 Codex、Claude Code 或其他编程代理使用某个模型渠道,可以分四层验证。

第一层:确认协议和模型标识

不要只看渠道首页写着“支持 Claude”或“支持 Codex”。至少记录:

  • 实际请求协议是 Responses、Chat Completions 还是 Messages;
  • 使用的模型 ID 是官方 ID、渠道别名还是自定义映射;
  • 是否支持流式输出、工具调用、并行工具和结构化输出;
  • 是否保留停止原因、usage、缓存 token 和错误码;
  • 长上下文、推理字段、附件或代码执行是否有额外限制。

如果这些字段无法核对,最稳妥的结论只能是“接口可能可用”,而不是“完整兼容某个编程代理”。

第二层:单独验证流式和工具调用

很多中转接口能返回普通文本,却在 SSE 或工具调用阶段出错。建议用最小测试任务依次验证:

  1. 普通短文本;
  2. 流式文本;
  3. 一个无副作用的工具调用;
  4. 工具返回后继续生成;
  5. 长上下文下的第二轮工具调用;
  6. 客户端取消、超时和重试。

每一项都要记录时间、模型 ID、endpoint、HTTP 状态、响应头、usage 和完整错误体。一次成功只能证明这次请求成功,不能推出渠道长期稳定。

第三层:确认 MCP 走哪条网络路径

模型 endpoint 和 MCP endpoint 可能有不同的 DNS、代理、证书和出网策略。企业或团队环境至少要画出这张图:

Codex / Claude Code
  ├─ 模型 API:直连或中转 endpoint
  ├─ MCP OAuth:授权服务器与回调地址
  ├─ MCP Server:远程 HTTPS 或本地 stdio
  └─ 遥测/日志:OpenTelemetry 或本地日志出口

如果所有请求都经过同一个 HTTP 代理,要确认代理是否会缓冲 SSE、改写 Authorization 头、阻断长连接或改变 Origin。若只有模型请求经过中转,而 MCP 走本地或另一条远程链路,故障归因必须分开。

第四层:把成本归因到一次 Agent 任务

一次编码任务通常不是一次模型请求,而是多轮上下文、工具发现、工具执行、重试和回退的组合。只按 API Key 统计,很难回答“为什么这次任务比上次贵”。

Codex 的配置文档说明,它可以选择性启用 OpenTelemetry 日志导出,记录 API 请求、SSE/事件、提示词、工具审批和工具结果等运行信息;文档还列出了模型、会话、状态、耗时、错误和 token 等事件字段。LiteLLM 在 2026 年 9 月 1 日发布的 v1.99.1 则特别修复了 OpenTelemetry v2 span 中缓存 token 计数的输出,使缓存创建和缓存读取 token 能与成本信息一起记录。

这两个信号共同说明:如果你在做模型路由或中转渠道比较,至少要保留以下字段:

  • Agent 任务 ID;
  • 客户端与版本;
  • 模型 ID 与渠道;
  • 输入、输出、缓存写入、缓存读取 token;
  • MCP 服务器、工具名和工具耗时;
  • 重试、回退、取消和最终结果;
  • API 状态码、MCP 状态码和授权失败原因。

没有这些维度,所谓“更便宜”可能只是缓存、工具调用或失败重试没有被算进去。

中转渠道选择清单:把“支持模型”拆成可验证条目

核对项 不能只看什么 应该留下什么证据
模型可用性 首页的模型列表 实际模型 ID、请求时间、返回 usage
API 兼容 “OpenAI 兼容”标签 具体 endpoint、流式与工具测试
账号认证 能否创建 Key Key 的权限范围、过期与撤销方式
价格 单个倍率或宣传单价 输入/输出/缓存、分组、最低充值和结算规则
稳定性 一次成功请求 多次测试的状态码、延迟和错误分类
MCP 能力 “支持 Agent” MCP endpoint、OAuth、SSE/HTTP 和工具调用说明
隐私边界 “安全”“直连”等描述 数据保存、日志、上游来源和公开条款
故障处理 “有备用线路” fallback 触发条件、模型映射、重试与回滚方式

其中最容易被忽略的是模型 API 与 MCP 能力的分离。一个渠道可以很好地转发模型文本请求,但完全不负责 MCP;另一个渠道可能提供远程 MCP 入口,却不支持你使用的模型协议。选择时必须以实际链路为单位核验。

什么时候应该换渠道,什么时候应该修配置

可以用下面的判断边界减少无效迁移:

优先修配置

  • 模型请求普通文本正常,只有 MCP OAuth 失败;
  • redirect URI 与预注册端口不一致;
  • MCP 服务器被绑定到错误网卡;
  • scope 缺少工具所需权限;
  • 代理缓冲或改写了 SSE;
  • Claude Code、Codex 或 MCP 服务器版本不匹配。

可以评估替代渠道

  • 模型 ID 在渠道侧没有稳定映射;
  • Responses/Messages 或工具调用字段被截断;
  • 流式请求经常中断,且在同一模型、同一 endpoint 下可重复;
  • usage 中长期缺少缓存或输出 token,无法做成本核算;
  • 渠道没有清晰的倍率、限额、模型来源或故障说明;
  • 需要的区域、模型或 API 能力在当前渠道确实不可用。

更换渠道前,建议先保留一份最小可复现记录:客户端版本、模型 ID、请求类型、MCP 服务器、时间、错误码和是否使用代理。这样才能区分上游故障、客户端回归、MCP 配置错误和渠道兼容性问题。

一份可以直接执行的上线前清单

  • 单独记录模型 API endpoint 与 MCP endpoint;
  • 确认模型 ID 是官方标识还是渠道别名;
  • 用普通请求、流式请求和工具调用分别测试;
  • 确认 Responses、Messages 或 Chat Completions 的实际兼容范围;
  • 确认 MCP 使用 stdio、Streamable HTTP 还是旧版 HTTP+SSE;
  • 检查 MCP endpoint 是否支持 POST、GET、SSE 和重连;
  • 检查 Origin、localhost 绑定和 HTTPS;
  • 记录 OAuth discovery、callback port 和 scope;
  • 检查工具审批、组织级配置和无人值守模式;
  • 把模型 token、MCP 工具耗时、重试和回退关联到 Agent 任务;
  • 保存渠道价格、倍率、限额和验证日期;
  • 为模型渠道故障准备可验证的替代方案,而不是只准备一个备用域名。

结语:先画清链路,再谈“兼容”与“降本”

Codex 0.153.0、Claude Code 2.1.259 和 MCP 规范的变化,都在把 AI 编程代理从“一个能发请求的命令行工具”推向更复杂的工具协作环境。环境越复杂,越不能用一个 base_url 概括所有问题。

对于个人开发者,最重要的是把模型 API、中转渠道和 MCP 登录分别验证;对于团队,最重要的是把权限、网络出口、工具审批和用量归因写成可复用的检查表。只有先知道每个请求经过哪条链路,才能判断是该换模型、换渠道、改 OAuth,还是修复 MCP 传输兼容性。

需要比较可用模型和中转渠道时,可以从 RouterHub 的平台目录开始,按模型覆盖、价格说明、限制条件和实际核验信息逐项筛选,而不要只按“支持 Agent”或“兼容 OpenAI”几个字做决定。

参考来源

  1. OpenAI Codex 0.153.0 发布说明:https://github.com/openai/codex/releases/tag/rust-v0.153.0
  2. OpenAI Codex MCP 文档:https://developers.openai.com/codex/mcp/
  3. OpenAI Codex 高级配置与 OpenTelemetry 文档:https://developers.openai.com/codex/config-advanced/
  4. Anthropic Claude Code v2.1.259 发布说明:https://github.com/anthropics/claude-code/releases/tag/v2.1.259
  5. Anthropic Claude Code MCP 文档:https://code.claude.com/docs/en/mcp
  6. Model Context Protocol 授权规范:https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization
  7. Model Context Protocol 传输规范:https://modelcontextprotocol.io/specification/2025-06-18/basic/transports
  8. LiteLLM v1.99.1 发布说明:https://github.com/BerriAI/litellm/releases/tag/v1.99.1

资料核验时间:2026 年 9 月 3 日。版本、协议和渠道能力会变化;文中涉及中转渠道的价格、倍率、限额与模型可用性,应以实际访问时的公开页面和请求结果为准。

相关阅读