发布 2026-10-14 · 更新 2026-10-25
为什么 Agent 工作流里 MCP 比 REST 调用更好
REST 调用只能用一次。MCP 服务器会告诉 Agent 有什么、参数是什么、返回什么 —— 于是它能自己规划,而不用你把每个端点教一遍。什么时候用哪个。
问题
第一篇教程展示了两条路:脚本里的 REST 调用,和 MCP 服务器。两条都能用。那为什么还要选?
差别不在能力,在「谁知道有什么存在」。
REST 调用,是一份你要随身带的契约
写一个 REST 调用时,端点的知识活在你的代码里 —— 或者在你给 Agent 的提示里。
r = httpx.get("https://api.ashareapi.com/v1/kline",
params={"code": "sh600519", "period": "day", "count": 250})
这没问题,多数人也是从这开始的。但注意 Agent 知道什么:就一个 URL,而且只是因为你说过。 你问它另一个字段,它要么猜,要么反过来问你。
REST 调用的扩展性,等于「你记得教几件事」。
MCP 服务器,是一份 Agent 自己能读的契约
用 MCP 服务器,Agent 会拿到一份「有什么」的描述:
{
"mcpServers": {
"ashareapi": {
"type": "http",
"url": "https://api.ashareapi.com/mcp"
}
}
}
Claude Code 要带 type;Cursor 用同一个对象、去掉 type;Codex 用 TOML。
然后 Agent 可以:
| 它能 | 因为 |
|---|---|
| 发现有哪些工具 | 服务器列出了它们 |
| 读每个工具的参数 | 每个工具声明了自己的 schema |
| 知道返回长什么样 | schema 是写明的,不是猜的 |
| 规划一个多步问题 | 它能在选之前先看见有哪些零件 |
这就是差别:Agent 不再猜「有什么可能」,而是从「实际有什么」里挑。
为什么这对交易工作流重要
一个交易问题很少只是一次调用。「这几只票里谁上周成交量最高,当时板块在发生什么?」—— 这是一个计划,不是一次查询。
| 方式 | Agent 会怎么做 |
|---|---|
| REST,逐个端点教 | 只调你列过的,列完就停 |
| MCP,工具可发现 | 挑问题需要的工具,串起来 |
第一种方式的失败是静默的:Agent 不会说「我只知道一个端点」。它用手头有的东西回答 —— 这就是薄数据集如何变成一个自信的错误答案。
什么时候 REST 仍然是对的选择
MCP 不总是更好。用普通 REST 调用,当:
- 它就是一个固定请求,按计划跑 —— 不需要规划
- 你在一个系统内部,那里本来就知道端点
- 客户端不支持 MCP —— 脚本调用就是完整方案
规则:当 Agent 应该自己决定用哪些工具时,用 MCP。当你已经决定了,用 REST。
验证那条规矩仍然成立
无论选哪条路,定义页那条检查都成立:数字必须来自一次你能重跑的调用。
MCP 让工具变得可发现。它不让工具变得正确。你仍然需要:
- 调用里写明窗口
- 字段名精确
- 同一个请求产生同一条序列
发现不等于验证。 它们是两个不同的步骤,而第二步是你的事。
试一下
# 同一条序列,任何时候 —— 请求完全决定了结果。
curl "https://api.ashareapi.com/v1/kline?code=sh600519&period=day&count=250"
然后把一个支持 MCP 的客户端指向服务器,问一个需要两步的问题。看它是去选工具,还是反过来问你该调什么。
下一步
- 把 Agent 接上数据 → 第一篇教程
- 验证一条规则,而不骗自己 → 之后的三个检查