Cloudflare MCP 用 mcp.cloudflare.com/mcp,不要把 Code Mode 写成 Codex 配置
CLI:codex mcp add cloudflare --url https://mcp.cloudflare.com/mcp,再 mcp login cloudflare。这是 Cloudflare 自己的 Code Mode MCP,不是 features.code_mode。文档服务器是另一台。
官方 Codex 排错页把连不上的 Cloudflare MCP 指到这条远程 Streamable HTTP:
codex mcp add cloudflare --url https://mcp.cloudflare.com/mcp
codex mcp login cloudflare
codex mcp list
[mcp_servers.cloudflare]
url = "https://mcp.cloudflare.com/mcp"
enabled = true
已经用 cloudflare@cloudflare 插件装过时,codex mcp list 里可能已经有 cloudflare,不必再手加一台同名服务器。插件没登记成功时,才走上面的 mcp add。
这台服务器覆盖整份 Cloudflare API(两千多个端点),但暴露给模型的是 search / execute 两个工具:模型写一小段 JavaScript,在隔离 Worker 里执行。Cloudflare 把这套叫 Code Mode。它不是 Codex 的 features.code_mode,不要把这个词写进 config.toml。
文档过时就另加文档服务器,不要把所有产品 MCP 一次 required = true:
codex mcp add cloudflare-docs --url https://docs.mcp.cloudflare.com/mcp
无头 / CI 才用 Cloudflare API token。Codex 走 bearer_token_env_var,键是变量名,不要把 token 写进 http_headers,也不要和已经 login 的 OAuth 混用。
不要做这些:
- 不要抄 Cursor / Claude 的
mcpServersJSON,也不要抄--transport http。 - 不要把历史
/sse配成 SSE 传输。Cloudflare 写明/sse只是同一套 Streamable HTTP 的别名;Codex 用/mcp。 - 不要把 Bindings / Builds / Observability / Radar 十几台一次性挂全局。插件默认只带主
cloudflare。 - 不要给它
required = true挂全局。账号写入不是每条会话的硬依赖。 - 认证失败就
codex mcp logout cloudflare再mcp login,或按官方排错先 remove 再 add。不要用mcp-remote包一层。
网页 Cloud 不读 ~/.codex/config.toml。改完新开会话。用 codex mcp get cloudflare 看传输是 streamable_http。