Codex 接入实时行情 MCP:从配置、鉴权到字段踩坑

目录

  • [一、AI 写的量化代码,行情接口全是编的](#一、AI 写的量化代码,行情接口全是编的 "#%E4%B8%80ai-%E5%86%99%E7%9A%84%E9%87%8F%E5%8C%96%E4%BB%A3%E7%A0%81%E8%A1%8C%E6%83%85%E6%8E%A5%E5%8F%A3%E5%85%A8%E6%98%AF%E7%BC%96%E7%9A%84")
  • [二、MCP:给 Codex 装上真实的工具目录](#二、MCP:给 Codex 装上真实的工具目录 "#%E4%BA%8Cmcp%E7%BB%99-codex-%E8%A3%85%E4%B8%8A%E7%9C%9F%E5%AE%9E%E7%9A%84%E5%B7%A5%E5%85%B7%E7%9B%AE%E5%BD%95")
  • 三、配置四步走:从零到跑通第一个查询
  • 四、三个验证示例
  • 五、踩坑实录
  • [六、13 个 MCP 工具速查](#六、13 个 MCP 工具速查 "#%E5%85%AD13-%E4%B8%AA-mcp-%E5%B7%A5%E5%85%B7%E9%80%9F%E6%9F%A5")
  • [七、进阶:让 AI 写一个双均线策略](#七、进阶:让 AI 写一个双均线策略 "#%E4%B8%83%E8%BF%9B%E9%98%B6%E8%AE%A9-ai-%E5%86%99%E4%B8%80%E4%B8%AA%E5%8F%8C%E5%9D%87%E7%BA%BF%E7%AD%96%E7%95%A5")
  • [八、配置前 vs 配置后](#八、配置前 vs 配置后 "#%E5%85%AB%E9%85%8D%E7%BD%AE%E5%89%8D-vs-%E9%85%8D%E7%BD%AE%E5%90%8E")

一、AI 写的量化代码,行情接口全是编的

上周二下午 4 点,我在 Codex 里输入了这样一句话:

"写一个 A 股双均线策略,用贵州茅台 600519 的日线数据,5 日均线上穿 20 日均线买入,下穿卖出。"

Codex 秒回了 120 行 Python。逻辑非常漂亮:均线计算、交叉判断、仓位管理,甚至贴心地加了止损。

然后我点了 Run。

vbnet 复制代码
ModuleNotFoundError: No module named 'stock_data_api'

翻到代码第三行:

python 复制代码
from stock_data_api import get_kline_data

这个 stock_data_api 模块根本不存在。AI 编了一个。

我花了接下来的 40 分钟做一件事:手动替换所有行情调用。把 get_kline_data("600519", "daily") 替换成真实的 HTTP 请求,补上鉴权 Header,处理返回 JSON 的嵌套路径。

Codex 写量化策略最大的痛点:AI 逻辑能力够了,但它不知道真实的行情 API 长什么样。 默认工具集里只有文件读写、shell 执行这些基础能力,没有行情查询工具。所以它只能编一个函数名,期待你自己实现。

这个问题在 Codex 支持 MCP 之后有了一个确定的解法------不是让 AI 变得更聪明,而是给它装上一个真实的工具目录。


二、MCP:给 Codex 装上真实的工具目录

MCP 的全称是 Model Context Protocol,可以理解为 Codex 的"插件协议"。通过配置一个 MCP Server,你可以在 Codex 的工具列表里增加外部能力------比如行情查询、K 线拉取、估值计算。

不用 MCP 时,Codex 的工具箱大概长这样:

diff 复制代码
- read_file
- write_file
- execute_command
- search_code

接入行情 MCP 后,工具箱变成:

diff 复制代码
- read_file
- write_file
- execute_command
- search_code
+ get_ticker           ← 查实时行情
+ get_kline            ← 拉 K 线
+ get_kline_latest     ← 最近一根 K 线
+ get_order_book       ← 盘口深度
+ get_recent_trades    ← 成交明细
+ get_market_metrics   ← 估值指标
+ get_capital_flow     ← 资金流向
+ get_available_symbols ← 品种列表
+ get_intraday         ← 分时数据
+ get_kline_intervals  ← 可用 K 线周期
+ get_stock_info       ← 品种基本信息
+ get_trade_days       ← 交易日历
+ get_trading_sessions ← 交易时段

这些工具不是 AI 编的,是 MCP Server 暴露的真实端点。AI 调用 get_ticker 时,背后走的是 https://api.tickdb.ai/v1/market/ticker。AI 不需要知道 URL、不需要知道鉴权方式------它只看到工具名和参数,MCP 中间层帮它完成实际的 HTTP 调用。

这就是核心区别:AI 从"编接口"变成了"调工具"。


三、配置四步走:从零到跑通第一个查询

以下步骤基于 codex-cli 0.131.0-alpha.9 实测。版本不同时字段名可能有差异,以 codex mcp add --help 输出为准。

第一步:确认 Codex CLI 已安装

bash 复制代码
codex --version
# 输出版本号即表示已安装

第二步:添加 MCP Server

bash 复制代码
codex mcp add tickdb --url https://mcp.tickdb.ai/

执行成功后,Codex 会在 ~/.codex/config.toml 中写入 MCP Server 条目。

确认配置文件中包含以下三项(不要直接 cat 整个文件,密钥会暴露):

bash 复制代码
grep -E "\[mcp_servers.tickdb\]|url|http_headers" ~/.codex/config.toml

期望看到:

ini 复制代码
[mcp_servers.tickdb]
url = "https://mcp.tickdb.ai/"
http_headers = { "X-TickDB-Key" = "***" }

第三步:配置 API Key

打开 ~/.codex/config.toml,确认 MCP 段格式如下:

toml 复制代码
[mcp_servers.tickdb]
url = "https://mcp.tickdb.ai/"
http_headers = { "X-TickDB-Key" = "你的API_KEY" }

两个高频配置错误

正确 错误 后果
文件路径:~/.codex/config.toml ~/.codex/mcp.json(Claude Code 的路径) 配了不生效
Header 字段名:X-TickDB-Key Authorization: Bearer 鉴权失败,返回 1001
配置键名:http_headers headers(旧版或文档差异) 不同版本字段名可能不同,以当前版本 --help 为准

关于 config.toml vs mcp.json :Codex 的 MCP 配置存储在 ~/.codex/config.toml 中,不是 .codex/mcp.json。这是 Codex 与 Claude Code(使用 .mcp.json)的关键差异。照 Claude Code 的教程配 Codex,会卡在第一步。

第四步:验证工具已加载

在 Codex 对话中输入:

复制代码
请列出你当前可用的所有 MCP 工具

如果配置成功,Codex 会列出以 get_ 开头的 13 个工具。看到这个列表,说明 AI 已经"知道"这些工具的存在了。


四、三个验证示例

配置完成后,用三个最小化示例确认每个工具都能正常返回数据。

示例 1:查实时行情

在 Codex 中输入:

复制代码
用 get_ticker 查询贵州茅台 600519.SH 和腾讯控股 700.HK 的实时行情

期望返回 :两个品种的 last_pricevolume_24hhigh_24hlow_24htimestamp

实测发现get_ticker 同时查询多个品种时可能触发 3001 限流。如果遇到限流,拆成单品种逐个查询,间隔 1 秒以上。这个坑在第五节细说。

示例 2:拉 K 线

在 Codex 中输入:

sql 复制代码
用 get_kline 拉取腾讯控股 700.HK 的日线数据,最近 10 根,interval 用 1d

期望返回 :10 根 K 线的数组,每根含 timeopenhighlowclosevolume

字段提醒 :K 线用 close,ticker 用 last_price,两个接口不可混用。

示例 3:估值对比

在 Codex 中输入:

复制代码
用 get_market_metrics 查询 AAPL.US 和 600519.SH 的估值指标,对比 PE 和 PB

期望返回 :两个品种的 pe_ttm_ratiopb_ratio 等字段。

字段提醒 :字段名是 pe_ttm_ratio 不是 pe_ttm,是 pb_ratio 不是 pb


五、踩坑实录

以下是我在配置和验证过程中实测遇到的问题。每个都能让新手卡住一段时间。

现象 原因 正确处理
限流 3001 get_ticker 查多个品种报 Rate limit TickDB 对 ticker 端点有频率限制 拆成单品种查询,间隔 ≥ 1 秒;或改用 WebSocket 订阅
K 线字段错用 在 K 线返回里取 last_price 报 KeyError K 线用 close,ticker 用 last_price 不同接口字段名不同,对照速查表使用
时间单位不一致 recent_tradestimestamp 是秒,K 线的 time 是毫秒 不同接口返回的时间字段粒度不同 使用前确认单位,不要假设所有 timestamp 都是毫秒
配置文件路径错误 配了 mcp.json 不生效 Codex 用 config.toml 不是 mcp.json 确认路径为 ~/.codex/config.toml
Header 键名写错 鉴权失败 1001 必须用 X-TickDB-Key,不是 Authorization: Bearer 对照第三步配置示例
港股代码前导零 0700.HK 个别情况下可能查不到 标准格式为 700.HK,部分接口可能容错但不建议依赖 统一使用 700.HK 无前导零格式

六、13 个 MCP 工具速查

以下为 codex-cli 0.131.0-alpha.9 环境中实测可用的 13 个工具。工具名和参数以当前版本为准。

工具名 功能 关键参数
get_ticker 实时行情快照 symbols(逗号分隔)
get_kline 历史 K 线 symbol, interval(1m/5m/15m/30m/1h/4h/1d/1w), limit
get_kline_latest 最近一根 K 线 symbols
get_intraday 分时数据 symbol
get_order_book 盘口深度 symbol
get_recent_trades 成交明细 symbol, limit
get_market_metrics 估值指标(PE/PB) symbols
get_capital_flow 资金流向 symbol
get_available_symbols 品种列表 market(CN/HK/US/GLOBAL), type
get_stock_info 品种基本信息 symbol
get_trade_days 交易日历 market, start_date, end_date
get_trading_sessions 交易时段 market
get_kline_intervals 可用 K 线周期

七、进阶:让 AI 写一个双均线策略

三个示例跑通后,可以回到最初的需求------让 Codex 写出能真正运行的双均线策略。

在 Codex 中输入:

diff 复制代码
写一个 A 股双均线策略:
- 品种:600519.SH(贵州茅台)
- 日线数据,5 日均线上穿 20 日均线金叉买入,死叉卖出
- 用 get_kline 拉取最近 120 个交易日的日线
- 初始资金 10 万,每次满仓进出
- 输出最终收益率和最大回撤
- 注意:get_kline 返回的收盘价字段是 close 不是 last_price
- 注意:get_kline 的 time 是毫秒级,get_recent_trades 的 timestamp 是秒级,处理时区分单位

Codex 应该能做到

  1. 调用 get_kline(symbol="600519.SH", interval="1d", limit=120) 拉数据
  2. 用 pandas 计算 5 日和 20 日均线
  3. 判断金叉死叉,生成交易信号
  4. 输出收益率曲线和回撤

验证清单(逐项确认):

  • 均线计算是否正确(df['close'].rolling(5).mean()
  • 字段名是否用了 close 而非 last_price
  • 时间戳单位是否处理正确
  • 是否处理了空数据或限流重试

八、配置前 vs 配置后

配置 MCP 之前

问题 具体表现
AI 虚构 API 生成 from stock_data_api import get_kline_data 等不存在的模块
无真实行情 策略脚本用随机数模拟价格走势
重复劳动 每次让 AI 写策略,都要手动替换行情调用代码
无法验证 不确定 AI 写的交易逻辑在真实数据上是否成立

配置 MCP 之后

变化 效果
AI 自动发现 13 个行情工具 不再编造函数名,直接调用 get_kline
真实数据驱动 策略跑在贵州茅台的真实日线上
一次配置,跨会话共享 所有 Codex 会话共用同一 MCP 配置
跨市场覆盖 同一套工具查 A 股、港股、美股、加密

MCP 在这里提供的是一个工具目录------它让 Codex 知道"行情数据可以这样获取",并且这个获取方式是真实可执行的,不是文档里的示例 URL。接入后 AI 从"我能写策略但数据你自己搞定"变成了"我能写策略,数据也可以直接调"。


你在用 Codex 写量化代码时,AI 编过什么离谱的接口?配置 MCP 时卡在哪一步?评论区聊。


📡 行情数据由 TickDB.ai 提供

  • MCP 端点:https://mcp.tickdb.ai
  • 文档:https://docs.tickdb.ai

排错清单

问题 检查项
配置不生效 确认路径为 ~/.codex/config.toml(非 mcp.json
鉴权失败 1001 确认 Header 名为 X-TickDB-Key(非 Authorization: Bearer
工具未加载 在 Codex 中执行"列出当前可用的所有 MCP 工具"确认 13 个可见
限流 3001 多品种查询拆成单次请求,间隔 ≥ 1 秒
K 线字段报 KeyError close 而非 last_price
时间戳对不上 K 线 time 毫秒级,成交明细 timestamp 秒级,分别处理

修订对照表

问题 修改前 修改后
API Key 暴露 让读者 cat config.toml 改为 grep 脱敏命令
配置字段 headers + type = "http" http_headers(以 Codex 0.131 实测为准)
13 个工具名 get_depth/get_calc_index/search_symbols 等不存在工具 替换为实测工具名
踩坑表 3 个坑 新增"限流 3001""时间单位不一致"共 6 个坑
0700.HK 表述 "格式错误" "建议无前导零,不依赖兼容行为"
时间戳表述 "所有时间字段均为毫秒 UTC" "不同接口粒度不同,使用前确认"
文末自检/验证提示 含营销 checklist + "贴给我"导流语 删除,改为排错清单 + 自主验证引导
域名露出 4 处 精简为 MCP 端点 + 文档各一次

文章已按 Codex 审核意见完成大修。是否 A) 继续下一篇 B) 进一步审查修正 C) 提取沸点文案

相关推荐
凌风1145 小时前
java个人学习笔记001-原生java集成rabbitMQ的使用
后端
plainGeekDev5 小时前
Android架构面试题:MVP/MVVM/MVI都分不清,架构师跟你没关系
面试·架构
Xidaoapi5 小时前
Python从零构建AI Agent:让大模型学会思考和行动
后端
oo哦哦5 小时前
深度解析:星链引擎全域智能营销矩阵系统的技术架构与实践
大数据·矩阵·架构
极品小學生7 小时前
拆解大模型时代的“流量交通枢纽”:API 中转站架构与核心原理
ai·架构·ai编程
YOU OU7 小时前
SpringBoot 配置文件
java·spring boot·后端
AI观望者7 小时前
源码级拆解 Hermes Agent:记忆系统、上下文压缩与 MCP 集成的工程实现
人工智能·架构
上海云盾第一敬业销售7 小时前
DDoS防护架构解析与实战经验
架构·ddos
上海云盾-小余7 小时前
业务层 CC 攻击精准研判:行为识别与轻量化拦截方案
运维·服务器·安全·架构