关于 codex 无法调用 mcp 的问题

自从 codex 升级过后,无论是桌面端还是 cli 或者是 vs code,都没法调用配置好的 mcp 工具,但是同样的工具在 claude 是正常使用的,因为这个问题 每日每夜尝试去解决去修复,最后换来的都是 当前可调用工具里没有 mcp__server__tool 这种形式的 MCP tool...
关于 codex 无法调用 mcp 的问题
关于 codex 无法调用 mcp 的问题

自从 codex 升级过后,无论是桌面端还是 cli 或者是 vs code,都没法调用配置好的 mcp 工具,但是同样的工具在 claude 是正常使用的,因为这个问题 每日每夜尝试去解决去修复,最后换来的都是

当前可调用工具里没有 mcp__server__tool 这种形式的 MCP tool 命名空间。

image

实在没办法了,最后迫不得已尝试到一个可行的方案:

在AGENTS.md文件添加规则:

## MCP 调用兜底策略
1. 当用户要求使用 MCP,或项目任务明显需要已配置 MCP server 时,优先检查当前会话是否存在原生 MCP tool 命名空间,例如 `mcp__server__tool`。

2. 若原生 MCP tools 未注入、`list_mcp_resources` 为空,或只能看到 resources 而没有 tools,不要据此判定 MCP 不可用;很多 MCP server 只暴露 tools。

3. 对 `stdio` 类型的 MCP server,必须尝试使用 stdio JSON-RPC 兜底直连:从 `codex mcp get/list` 或 `~/.codex/config.toml` 读取 `command`/`args`,以一行一个 JSON-RPC 消息的 NDJSON 方式写入 stdin。

4. stdio JSON-RPC 调用顺序为:先发送 `initialize`,再发送 `notifications/initialized`,然后调用 `tools/list` 或 `tools/call`。

5. 不要默认使用 `Content-Length` 帧格式,除非该 MCP server 明确要求。

6. 进行 MCP 抓包、浏览器调试、JS 逆向等任务时,如果 Codex 原生 MCP tools 不可见,应优先用上述 stdio JSON-RPC 方法验证 `tools/list`,并在验证通过后通过 `tools/call` 调用对应工具;只有 stdio 直连也失败时,才说明 MCP 当前不可调用,并给出真实错误输出。

运行效果:

image

image

大佬们如果有更好的方法 或者已经有解决方案,希望能够分享分享 或者一起交流,感谢!

5 个帖子 - 2 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文