操作指南

如何将你的银行连接到 Codex CLI

5 分钟 read
Direct answer: 在 ~/.codex/config.toml 中添加一个 [mcp_servers.bankbridge] 表,配置 url = "https://bankbridge.money/api/mcp" 和 bearer_token_env_var = "BANKBRIDGE_API_KEY",然后在文件顶层设置 experimental_use_rmcp_client = true,再导出你的 bbk_ 密钥并重启 Codex。在会话中运行 /mcp,即可确认 BankBridge 的全部 11 个工具已加载。

Codex 的 MCP 有点不一样

如果你之前给 Claude Desktop 或 Cursor 加过 MCP 服务器,那都是在编辑 JSON。Codex CLI 不用 JSON。它的配置放在 ~/.codex/config.toml,MCP 服务器写在 [mcp_servers.<name>] 表里,一个服务器一个表。

还有第二个小坑。Codex 支持两种 MCP 服务器:本地 stdio 服务器(它作为子进程启动,需要你给 command 和 args),以及通过网络连接的远程 streamable-HTTP 服务器(需要你给 url)。BankBridge 属于远程那种,是一个托管服务器,你只要指向它即可。而远程服务器目前藏在一个功能开关后面。漏掉这个开关,Codex 会加载零个工具,连一句警告都不会给你。

OpenAI 的文档说了机制,但缺少完整可用的示例,这大概就是你到这里来的原因。整套配置一共四行 TOML 加一个环境变量。

获取 BankBridge API 密钥

BankBridge 是一个托管的 MCP 服务器,让 agent 只读访问你实时的银行数据。在 bankbridge.money 用邮箱注册(magic link,不需要密码),然后在仪表板里连接一家银行。

链接流程在银行提供的安全 UI 中运行。你选择自己的银行,在那边登录,并批准只读访问。BankBridge 保存的是加密后的 access token,而不是你的银行密码,你的财务数据也不会缓存在我们的服务器上。Codex 提的每个问题都会现场拉取数据来回答。

连接好银行之后,创建一个 API 密钥。它以 bbk_ 开头,只会显示一次,所以要马上复制。价格是每连接一家银行 $5/mo,可随时取消。

config.toml 配置项

打开 ~/.codex/config.toml。文件不存在就自己创建一个。加入以下内容:

experimental_use_rmcp_client = true
[mcp_servers.bankbridge]
url = "https://bankbridge.money/api/mcp"
bearer_token_env_var = "BANKBRIDGE_API_KEY"

有三点值得注意。第一,experimental_use_rmcp_client = true 是顶层设置。它必须出现在任何 [section] 标题之前。TOML 会把每个键分配给它所在的表,所以如果这个开关跑到 [mcp_servers.bankbridge] 里面,Codex 会把它当作某个奇怪的服务器选项,你的远程服务器就永远加载不进来。

第二,url 指向 BankBridge 托管的端点。没有东西要安装,不需要 npx 包装脚本,也不需要盯着一个本地进程。

第三,bearer_token_env_var 指定的是一个环境变量名,而不是直接放密钥。Codex 会从你的 shell 中读取真正的密钥,这样这个经常被人推到公开 dotfiles 仓库里的文件就不会带上密钥。

在 shell 中导出密钥

一行搞定:

export BANKBRIDGE_API_KEY="bbk_your_key_here"

在你打算启动 Codex 的终端里运行它,并把它加到 ~/.zshrc 或 ~/.bashrc,这样新开的 shell 也能拿到。把密钥放在环境变量里也让轮换密钥变得毫不费力:换掉 export 那一行,TOML 完全不用动。如果需要的话,我们有一篇关于轮换密钥的短指南。

确认 11 个工具已加载

用 codex 开启一个新会话。在 TUI 里输入 /mcp。Codex 会列出每个已配置的服务器以及它暴露的工具。较新的版本还带了一个 codex mcp list 子命令,不用进会话就能在 shell 里跑。

你要找的是 bankbridge,带 11 个工具:list_accounts、get_account、list_transactions、search_transactions、get_spending_summary、get_recurring_charges、get_monthly_cashflow、get_merchant_history、list_categories、list_holdings 和 list_investment_transactions。

接下来问它一个真实问题:

我这周花了多少钱?

Codex 应该会调用 get_spending_summary 或 list_transactions,并用你真实账户里的数字回答。没有同步步骤,也没有快照;每个答案都是在你提问那一刻实时拉取的。

如果 Codex 加载了零个工具

失败方式是无声的,比崩溃还烦人。按顺序排查以下几点。

开关缺失或位置错了。这就是十次里有九次的原因。experimental_use_rmcp_client = true 应放在 config.toml 的最顶部,位于所有 [section] 之前。在服务器块里面它什么也不做。

密钥不在 Codex 的环境里。Codex 在启动时解析 bearer_token_env_var,所以你在另一个终端标签页里 export 的、或者只加到 .zshrc 但从未 source 过的密钥,它都看不到。启动前在同一个 shell 里跑一下 echo $BANKBRIDGE_API_KEY 确认。

你贴的是 JSON。从 Claude Desktop 或 Cursor 文档里复制的片段是解析不了的 TOML。如果 Codex 抱怨配置文件,或者干脆无声忽略,就找找有没有多余的花括号和冒号。

Codex 版本太旧。Streamable-HTTP MCP 支持比较新。用 npm install -g @openai/codex 升级(如果用 Homebrew 装的就 brew upgrade codex),然后再试一次。

接通之后该问什么

一些能干净地映射到工具上的起点:

我有哪些循环扣款,按月费用排序?
上个月我在哪些商家花得最多?
对比一下我 6 月的收入和支出。

一切在设计上都是只读的。没有工具用于转账、缴账单或下单交易,所以一个好奇 agent 的破坏半径正好是零美元。而且这把密钥不是 Codex 专用的:同一个 bbk_ 密钥可以用在 Claude Code、Gemini CLI、Cursor 以及我们文档里的其他 MCP 宿主中,连接第二个 agent 大约需要三十秒。

FAQ

Codex CLI 在哪里查找 MCP 服务器配置?

在 ~/.codex/config.toml 中。每个服务器对应一个 [mcp_servers.<name>] 表。本地 stdio 服务器使用 command 和 args 键;像 BankBridge 这样的远程 streamable-HTTP 服务器使用 url,以及用于身份验证的 bearer_token_env_var。文件默认不存在,需要你自己创建。

为什么我添加了服务器后 Codex 显示零个 MCP 工具?

几乎总是因为 experimental_use_rmcp_client = true 缺失或位置错了。它必须放在 config.toml 的顶层,在任何 [section] 标题之前。远程 HTTP MCP 服务器被这个开关屏蔽了,没有它 Codex 会直接跳过,不给任何错误提示。

Codex 通过 BankBridge 的访问是只读的吗?

是的。全部 11 个工具都是读取数据:余额、交易、支出汇总、循环扣款、现金流、商家历史、分类和投资持仓。没有任何工具用于转账、付款或交易,所以通过 BankBridge 连接的 agent 无法动你的钱。

在 Codex CLI 中使用 BankBridge 要多少钱?

每连接一家银行 $5/mo,不限使用它的 agent 数量。同一个 bbk_ 密钥可在 Codex CLI、Claude Code、Gemini CLI、Cursor 以及其他所有 MCP 宿主中通用。可从仪表板随时取消,取消后立即停止计费。

这对 Codex Cloud 也适用吗?

本指南覆盖的是本地 Codex CLI,它读取 ~/.codex/config.toml。OpenAI 云端托管的 Codex(GitHub 连接的那个)在自己的设置里按环境配置 MCP 服务器。BankBridge 在那里同样可用;端点和 bearer 密钥完全相同。

能不能不把 API 密钥写进 config.toml?

这里默认就是这么做的。bearer_token_env_var 告诉 Codex 从环境变量读取密钥,所以 config.toml 里永远不会有明文密钥。在 shell 配置文件里导出 BANKBRIDGE_API_KEY,轮换密钥时只需修改导出的值即可。