大语言模型本质上并非实时的行情数据库。当 AI Agent 在 Cursor 或 Claude Code 中通过 MCP 协议接入 A 股行情数据源时,“配置完成”绝不等于“数据可用”。正确配置只是通过了第一道关卡,工具可见是第二道关卡,而返回结果可核验才是第三道。这里的核心区别在于:配置层面的成功,与数据层面的可靠性,完全是两回事。
本文以一次可复核的 600519.SH 股票代码快照查询为例,给出密钥隔离、工具白名单、结构化返回检查这三项工程建议,构建从开发工具层到 MCP 工具层再到结果校验层的完整验证链路。简而言之,就是帮你确保 Agent 获取到的数据真正可用,而非一个空壳。
第一步:配置 TickDB MCP Server
Cursor 和 Claude Code 的配置入口不同,但核心逻辑一致——通过环境变量注入密钥。这是密钥隔离的第一条工程建议:真实的 API Key 绝不应硬编码到配置文件或版本库中。

在 Cursor 中,你需要在项目根目录创建 .cursor/mcp.json,内容如下:

{
"mcpServers": {
"tickdb": {
"url": "https://mcp.tickdb.ai/",
"headers": {
"X-TickDB-Key": "${env:TICKDB_KEY}"
}
}
}
}
而在 Claude Code 中,你需要先在终端设置环境变量,再添加远程 HTTP MCP server:

export TICKDB_KEY="YOUR_API_KEY"
claude mcp add --transport http tickdb https://mcp.tickdb.ai/
--header "X-TickDB-Key: ${TICKDB_KEY}"
当前配置基于 TickDB 官方托管的端点,Header 名称固定为 X-TickDB-Key。这里需要特别提醒:不同 MCP Server 的端点、鉴权 Header 和参数结构都不尽相同,不能直接套用同一套配置,务必逐个核验。
第二步:确认工具可见
配置完成后,下一步是确认 MCP Server 已正确加载。跳过这一步直接查询行情,一旦调用失败,你将很难区分问题出在配置、连接还是数据本身。
- Claude Code:在交互会话中执行
/mcp,检查tickdb的连接状态和工具数量。 - Cursor:在 MCP 设置或可用工具列表中检查 server 状态,确认
get_ticker可见。
看到 get_ticker 这个工具名,仅说明客户端已经读取到了它的描述信息,并不能保证某个具体股票代码一定能返回有效数据。这是工具白名单的第二条工程建议:不仅要确认工具存在,还要确认当前可用的工具集合是你预期的那几个。多余的工具和缺失的工具一样值得警惕。
| 现象 | 排查方向 |
|---|---|
| 没有看到 TickDB server | 检查配置位置、JSON 格式、端点和客户端日志 |
server 可见但没有 get_ticker | 核对当前 server 配置与官方工具清单 |
| 连接超时或拒绝 | 检查网络可达性、防火墙、端点和 Key |
| Claude Code 显示未连接 | 使用 /mcp 查看具体状态,不要把 Cursor 的排查方法直接套用过来 |
第三步:查询真实 A 股股票代码,核对返回契约
工具可见后,在对话中输入如下指令:
用
get_ticker查询600519.SH,type 使用stock。不要只复述价格,请同时返回code、data、symbol、type、last_price和timestamp,供我核对。
对应的 MCP 工具参数是 get_ticker(symbols="600519.SH", type="stock")。2026 年 6 月 15 日的本轮实测返回 code=0,data 非空,且可见 symbol、type、last_price 和 timestamp 等字段。动态价格不在本文公开范围内。
一次查询至少需要检查以下几个项目:
| 验证项 | 核对标准 |
|---|---|
code | 必须为 0,但不能只检查这一项就结束 |
data | 必须是非空数组 |
symbol | 与请求的 600519.SH 完全一致,不能有缺失、多余或重复 |
type | 与本次请求一致,为 stock |
last_price | 非空字符串,可解析为有限十进制数;缺失时绝不能默认成 0 |
timestamp | 必须是有效整数,且不能让 Python 的 bool 混入;具体语义按当前工具的文档确认 |
这就是第三条工程建议的核心——结构化返回检查:一旦发现异常就立即阻断,绝不把缺失的价格默认为 0,更不在 warning 后向下游提交数据。对于 AI Agent 场景来说,这一点尤其关键:Agent 的推理链路一旦消费了不完整数据,错误结论会被后续的推理步骤一步步放大。以下代码演示了这项检查逻辑:
from decimal import Decimal, InvalidOperation
def validate_ticker(response: dict, expected_symbol: str) -> dict:
if response.get("code") != 0:
raise ValueError(f"business error: {response.get('code')}")
data = response.get("data")
if not isinstance(data, list) or len(data) != 1:
raise ValueError("data must contain exactly one ticker item")
item = data[0]
if item.get("symbol") != expected_symbol:
raise ValueError("returned symbol does not match request")
if item.get("type") != "stock":
raise ValueError("unexpected asset type")
raw_price = item.get("last_price")
if not isinstance(raw_price, str) or not raw_price:
raise ValueError("last_price must be a non-empty string")
try:
price = Decimal(raw_price)
except InvalidOperation as exc:
raise ValueError("last_price is not a decimal string") from exc
if not price.is_finite():
raise ValueError("last_price must be finite")
timestamp = item.get("timestamp")
if isinstance(timestamp, bool) or not isinstance(timestamp, int) or timestamp <= 0:
raise ValueError("timestamp must be a positive integer")
return item

常见故障处理
| 现象 | 处理方向 |
|---|---|
返回 code: 1001 | Key 无效或过期,应检查或更换 Key,盲目重试没有意义 |
返回 code: 3001 | 触发了频率限制,按当前响应信息执行有上限的退避策略 |
data 为空 | 检查 symbol、type、Key、工具返回与当前文档,不要自行猜测原因 |
last_price 缺失或为空 | 阻断本次结果,绝不要默认成 0 |
| 工具调用失败或超时 | 检查客户端状态、网络、端点和 Key |
需要特别说明的是,这些错误码属于 TickDB 当前接口的语义,不能直接套用到其他 MCP Server 上。
什么时候用 MCP,什么时候不用
适合用 MCP 的场景很明确:AI Agent 的对话式查询、按需获取当前快照、在推理链路中调用行情工具。这些场景下,MCP 的优势非常明显。
但有些场景就不太适合:需要持续行情推送的,应该考虑 WebSocket;批量处理历史数据任务的,最好使用适合脚本化调用的接口;对延迟有严格要求的系统,需要单独验证链路的延迟、配额和稳定性。
说到底,MCP 是 AI 的工具调用入口,而不是行情订阅通道。一次 get_ticker 成功返回数据,并不能证明 REST 接口、WebSocket、全部 A 股标的、延迟或 SLA 都没有问题。
开发者检查清单
- Cursor 和 Claude Code 使用各自的配置入口,没有混写
- 真实 Key 通过环境变量注入,没有出现在配置截图或版本库中
- 客户端中能看到
get_ticker - 查询参数为
symbols="600519.SH"、type="stock" - 返回
code=0,且data非空 -
symbol和type与请求一致 -
last_price是可解析的有限字符串数值,没有使用float或默认值0 -
timestamp是正整数,且排除了bool - 异常结果会阻断,不会只打印 warning 后就继续执行
证据边界
最后,必须明确一下本文的证据边界。本轮实测只证明:在 2026 年 6 月 15 日,通过 TickDB MCP 的 get_ticker 查询 600519.SH 时,返回了可核对的结构化 ticker 快照。本文没有公开动态价格,也不对价格、延迟、SLA、套餐或覆盖总量作出任何承诺。Cursor 与 Claude Code 的配置不能互相复制;其他 MCP Server 的端点、Header、工具参数和返回结构也需要独立核验。本文只讨论行情工具的接入和工程校验,不构成任何投资建议。
标签:AI Agent / A 股行情数据 / MCP 工具校验 / 远程 MCP / 火山引擎
