Codex MCP配置:通过单个config.toml生成图像和视频
将Codex CLI、IDE插件及ChatGPT桌面端连接至同一个MCP媒体服务器:config.toml配置、5个隐藏踩坑点、花费$0.70的Veo宣传视频演示。

用于Codex的MCP服务器是一个外部工具箱,OpenAI的编程智能体(Agent)可以同时从其全部三个前端进行调用:CLI、IDE插件以及ChatGPT桌面端应用中的Codex标签页。只需添加一段TOML配置,原本只能编辑代码的智能体便能立刻获得其底层模型所不具备的能力,包括图像和视频生成。Codex可以整天帮你重构代码并运行测试,但它背后的任何模型都无法直接交给你一个MP4文件。而一旦接入生成服务器,“为发布日志制作一段宣传视频”就变成了一条终端指令,并最终生成一个真实的文件。
如果你只是为了配置而来,以下是完整的设置步骤。首先在你的 BananaBanana profile(个人资料)中创建API密钥,然后将以下内容添加到 ~/.codex/config.toml 中:
[mcp_servers.bananabanana]
url = "https://bananabanana.pro/api/mcp"
bearer_token_env_var = "BB_API_KEY"
在你的环境变量中导出 BB_API_KEY=bb_live_YOUR_KEY 并重启Codex。大功告成:无需本地服务器进程,无需Google Cloud项目,也无需订阅。图像生成每张从预充值余额中扣除 $0.03 起,视频生成从 $0.10 起。下方展示的演示视频正是我在撰写本文时,使用有效的密钥通过该接口直接生成的。本文涉及的全部媒体生成费用共计 $1.03,详细清单已列在文章末尾。
为什么单个配置文件能搞定一切
大多数MCP客户端都会要求你为每个界面分别进行配置。而Codex则不然,这正是它极其人性化的地方。official Codex MCP docs 用一句话概括了这一点:“ChatGPT桌面端应用、Codex CLI和IDE插件共享此配置。”只需粘贴一次TOML配置块,相同的7个生成工具就会如影随形,从终端会话一路跟随你到VS Code,再到桌面端应用的Codex标签页中。

这彻底改变了服务器的定位。在 Cursor 或 VS Code 中,图像生成工具主要为你当前打开的代码仓库服务。而在Codex中,终端本身就变成了一个媒体控制台:你可以直接从纯Shell界面请求视频渲染,甚至不需要打开编辑器,随后在桌面端应用中查看渲染进度。对于一个整天泡在tmux里、把GUI应用当成稀客的人来说,这就是“在某个地方配置的插件”与“真正得心应手的常用命令”之间的区别。
当然,你也可以像往常一样,使用自己的Google API密钥在本地运行MCP服务器,将配额和账单绑定到自己的云账户上。这确实可行,但也需要花精力去维护。而云端接口已经运行在我们这边,与 BananaBanana web generator 处于同一条流水线上,你唯一需要的凭证就是一个可随时撤销的 bb_live_ 密钥。
如何将Codex连接到MCP服务器?
以下配置细节已根据截至2026年7月11日的Codex MCP官方文档进行了核对(OpenAI最近将文档从 developers.openai.com 迁移到了 learn.chatgpt.com,因此如果遇到重定向,请不要感到惊讶)。
第一步,register(注册)并打开 Profile → MCP API Keys。该密钥只会显示一次,并在我们这边以哈希加密的形式存储,因此请务必立即复制并保存。新账户注册即送 $0.20 的体验余额,足够在最便宜的模型上生成六张测试图片。
第二步,将本文开头给出的TOML配置块添加到 ~/.codex/config.toml 中(如果文件不存在则新建一个)。[mcp_servers.bananabanana] 表接收一个用于Streamable HTTP服务器的 url,以及一个用于身份验证的 bearer_token_env_var:Codex在启动时会读取指定的系统环境变量,并将其值作为 Authorization 请求头发送。密钥绝不会直接写入文件,这意味着你可以放心地在dotfiles代码库中分享此文件。我们的 MCP server page 页面也保存了这段代码,并附带了我们已验证的所有客户端的兼容性表:

第三步,导出环境变量并重启。在CLI中,一旦连接成功,输入 codex 将列出服务器提供的工具;你可以让它运行“在 bananabanana 上调用 list_models”,应该就能获取从 list_models 到 list_generations 共7个工具的实时价格。IDE插件和ChatGPT桌面端应用在下一次启动时会自动加载相同的配置,无需额外操作。
关于macOS桌面端应用的一个友情提醒:从Dock启动的GUI(图形界面)应用不会读取你的 .zshrc 文件,因此在终端里生效的 export 环境变量可能在ChatGPT中根本不存在。如果工具在CLI中能正常列出,但在桌面端应用中认证失败,几乎百分之百是这个原因。使用 launchctl setenv BB_API_KEY bb_live_… 命令可以解决此问题,不过感觉上像是个临时折中方案,因为它确实就是个临时折中方案。
ChatGPT自身的Connectors能否使用相同的密钥?
简短的回答是:目前还不行,这里有必要准确解释一下原因。ChatGPT拥有自己的一套Connectors系统(位于“设置 → Connectors”,在付费计划的开发者模式开关下),它将MCP服务器引入到常规对话中,而不是Codex中。这些Connectors是通过OAuth流程进行身份验证的。而我们的接口目前仅支持Bearer密钥。我们计划在后续支持OAuth 2.1,一旦该功能上线,常规的ChatGPT对话也将成为支持的客户端。在此之前,界线非常清晰:Codex的前端(CLI、IDE、桌面端中的Codex标签页)目前可以通过 config.toml 正常工作,而聊天侧的Connectors则不行。你可以通过 compatibility table 查看每个客户端的具体兼容状态和更新日期。
应用场景:不打开任何应用,制作产品宣传视频
本文围绕的典型场景是:新版本发布日,你的变更日志(Changelog)需要一段简短的宣传片,而你甚至不想离开终端。你可以直接让Codex生成一段产品风格的视频,它会撰写一段极具电影感的提示词(Prompt)并调用 generate_video。该工具在首次调用时绝不会直接扣费,而是先返回一个报价,随后智能体在确认具体金额后,会再次发起调用。以下是我在实际操作中的真实会话记录:
→ generate_video {"prompt": "Cinematic product promo shot: matte pearl-white
wireless earbuds in an open charging case on a slowly rotating dark
pedestal, dramatic rim lighting in violet and warm amber, soft haze,
slow dolly-in from a slightly low angle, shallow depth of field,
premium tech commercial style", "model": "veo-3.1-fast",
"duration": 8, "resolution": "720p"}
← {"status": "confirmation_required", "quoted_cost_usd": 0.70,
"message": "This video costs $0.70. Nothing has been charged."}
→ generate_video {..., "confirm_cost": 0.70}
← {"job_id": "cmrgrpxgf0002mk7fvfepg82j", "status": "processing",
"cost_charged_usd": 0.70, "balance_remaining_usd": 1553.37}
→ get_result {"job_id": "cmrgrpxgf0002mk7fvfepg82j", "wait_seconds": 30}
← {"status": "completed", "files": [{"url": "https://…/api/files/…"}]}
从确认扣费到最终生成720p视频文件,全程仅耗时2分15秒。以下就是那段由 Veo 3.1 Fast 渲染出的真实视频,一次成功,未经过任何重复生成:
提示词的结构遵循了我们 Veo 3.1 prompt guide(Veo 3.1提示词指南)中的经典模式:主体、动作、光影、镜头运动、镜头表现、风格。随后,Codex会从带签名的URL(24小时内有效;再次调用 get_result 可重新签发)中拉取文件并保存到你指定的文件夹中,甚至可以直接帮你为变更日志页面编写好 <video> 标签代码。
诚实地提醒一句:花费 $0.70 生成的是“无声版本”。若想为该片段配上原生音效,则需要花费 $1.00,而带声音的 Omni Flash 则按每秒 $0.10 计费——生成相同长度的片段即为 $0.80。对于在官网落地页上静音自动循环播放的视频来说,无声版本恰恰就是最完美的解决方案;如果是用于社交媒体传播,你可能更倾向于多花30美分来配上声音。
图像生成的工作原理类似,只是省略了金额确认这一步,因为单张图片的生成费用极低,所以会直接运行:带有提示词的 generate_image 会直接返回一个任务ID,接着 get_result 会交回图片文件以及一个可供Codex查看的行内小预览图。
值得在使用前了解的Codex脾气
这些经验是在测试上述配置时收集的,大致按照你可能踩坑的顺序排列。

1. CLI不会替你自动编写该配置。
虽然存在 codex mcp add 命令,但根据官方文档,它对于HTTP服务器并没有提供bearer-token(令牌)选项;该命令仅针对本地 stdio 服务器和 OAuth 登录(codex mcp login)。对于使用密钥认证的远程服务器,你需要手动编辑 ~/.codex/config.toml。虽然这只需花30秒的时间,但如果你期望能像 claude mcp add --header 那样用单行命令搞定,那Codex的表现可能会让你感到意外。
2. 它是TOML文件,且表格名是 mcp_servers。
使用蛇形命名法(Snake_case)、中括号,不要用JSON。从 Cursor 或 Claude 文档中复制的配置(诸如 mcpServers、花括号)将无法解析,而且该文件中的 TOML 语法错误往往是静默失败,而不会报错。如果服务器始终没有出现,请先在终端运行 codex 并仔细观察启动时的输出信息,再去排查其他原因。
3. 敏感配置项有一个正确的字段,以及一个极具诱惑力的错误字段。
使用 bearer_token_env_var 可以防止密钥直接暴露在配置文件中。而如果选择 http_headers 映射,它则会保存静态明文,这意味着你真实的 bb_live_ 密钥将以纯文本形式保存在这个极易被dotfiles同步工具公开上传的文件中。此外,虽然还有专门用于从环境变量中提取自定义头的 env_http_headers 选项,但我的原则是:涉及敏感信息一律用 bearer_token_env_var,决不将 http_headers 用于任何私密数据。
4. 工具的默认超时时间是 60 秒,这完全足够,但仅仅是因为其轮询机制的设计。
Codex 默认给予每次工具调用 tool_timeout_sec = 60 的时限。一个视频生成任务可能需要1到10分钟,这听起来似乎会有冲突。但实际上,generate_video 会在发起后瞬间返回一个任务ID,随后的 get_result 每次调用最多进行30秒的长轮询。因此,每一次单独的请求都能轻松保持在时限之内,智能体只需重复进行几次轮询即可。请不要自作聪明地把超时时间修改为 600 秒,你根本不需要它,而且一旦服务器真的卡死,智能体将会被白白阻塞十分钟。
5. 审批行为可以按服务器进行单独配置,涉及花钱的工具应当设置为 prompt。
根据文档,default_tools_approval_mode 字段支持 auto、prompt、writes 和 approve 值。对于一个包含多个付费工具的服务器,我建议保持询问确认开启,并对每次调用进行单独审批;如果你的配置支持对单个工具进行决策,那么免费工具(如 list_models、get_account、get_result)才是最适合加入白名单的。无论如何,视频生成在我们的服务端都有一道额外的安全锁:在没有显式发送 confirm_cost 确认费用的情况下,任何超出报价的请求都不会被扣费。
本文演示媒体花费了多少?
使用的是标准的单次生成价格,也就是 list_models 汇报给智能体的相同数值,没有任何内部员工折扣:
| 资产 | 模型 | 价格 |
|---|---|---|
| 通过MCP在有效密钥上生成的宣传视频演示 | Veo 3.1 Fast, 720p, 8 s, silent | $0.70 |
| 封面 + 2张插图 | Nano Banana Pro, 1K | $0.33 |
| 文档页面截图 | 浏览器截图,非生成 | $0.00 |
| 总计 | $1.03 |
该视频是一次直接渲染成功的,但我建议不要每次都抱有这种侥幸心理。产品展示类的镜头容错率较高,但任何涉及人手或清晰可读文本的内容难度极大,建议为此类生成预留好重新渲染的预算。
如果你已经是在其他客户端上运行该服务器,那么上述的TOML配置块将是你唯一需要的新内容:在任何地方都使用相同的密钥、相同的余额和相同的生成历史。如果是从零开始,我们的 Claude Code walkthrough(Claude Code实操指南)涵盖了另外四个使用场景,这些经验几乎可以一字不差地直接复用到Codex中。赶紧 Create a key 并让Codex渲染你的第一部作品吧!
FAQ
Codex是否支持带有 Bearer 身份验证的远程MCP服务器?
是的,原生支持。远程服务器是在 ~/.codex/config.toml 文件中配置的一个 [mcp_servers.<name>] 表,其中包含一个 url 字段,且 bearer_token_env_var 指定了环境变量的名称,Codex会将其值作为 Authorization 请求头发送。此结论已根据2026年7月11日的官方Codex MCP文档进行了核对。虽然同时也支持 OAuth(这是提供该服务的服务器的默认 auth 认证模式),但静态密钥配置除这两行外无需其他任何内容。
MCP配置真的能在 Codex CLI、IDE插件和 ChatGPT桌面端之间共享吗?
是的。Codex文档明确指出,ChatGPT桌面端应用、Codex CLI和IDE插件共享 config.toml 的配置。在实际操作中,唯一不会自动同步的是系统环境变量:你在终端中导出的变量对CLI可见,而从Dock启动的桌面端应用则需要在操作系统层面上设置该变量(在macOS上为 launchctl setenv),否则在相同的配置下会由于缺少变量而导致认证失败。
我能否使用 codex mcp add 代替手动编辑配置文件来添加服务器?
对于此类服务器是不行的。文档中对于基于HTTP的服务器并没有在 codex mcp add 命令中提供设置 bearer-token 的参数,因此配置通过密钥认证的远程接口意味着你必须亲自编辑 ~/.codex/config.toml。手动编辑的好处是结果更加直观,且易于进行版本控制。整个配置块只有三行,且密钥保留在环境变量中,而不会直接写入到文件中。
为什么我的 bb_live_ 密钥在 ChatGPT 的 Connectors 设置中不起作用?
因为这是两个完全不同的集成接口。ChatGPT对话中的Connectors(包括网页端和桌面端,在付费计划的开发者模式开关下)是通过 OAuth 来对MCP服务器进行认证的,而不是通过直接粘贴的API密钥,因此仅支持 Bearer 的接口目前无法完成该授权流程。而Codex的前端则是通过读取 config.toml 来使用密钥,因此能完美工作。一旦我们的 OAuth 2.1 支持发布,常规聊天侧的Connectors也将成为支持的途径,你可以在 client table(客户端表)中跟踪最新进度。
Codex能生成视频吗?费用是多少?
可以,但强制要求进行费用确认。generate_video 在首次调用时总是先返回一个美元报价,此时不产生任何扣费;智能体使用与报价相匹配的 confirm_cost 重新发起调用后,才会启动视频渲染。视频的价格根据质量和时长有所不同,例如4秒无声720p的 Veo 3.1 Lite 片段仅需 $0.10,本文中展示的8秒 Veo 3.1 Fast 演示需要 $0.70,而顶级的带有声音的4K Veo 3.1 渲染则需 $4.40;而带有声音的 Omni Flash 则按每秒 $0.10 计费(每段片段 $0.30–$1.00)。生成失败的任务将自动退款。