银行汇率查询:用 MCP 在 AI 客户端里对话式查汇率
约 10 分钟 进阶银行汇率查询MCPAI客户端Cherry Studio
# 银行汇率查询:用 MCP 在 AI 客户端里对话式查汇率
接口:银行汇率查询(apiCode=105)· 集成能力:MCP(接口级,覆盖全部 4 个接入点)· 免费接口(L0 基础版 100 次/天、1 QPS)· 适用人群:AI 客户端用户、MCP 开发者 · 阅读时间:约 5 分钟 · 最后实测核对:2026-09-18
## 核心要点
- 银行汇率查询提供接口级 MCP 服务,一个配置覆盖 4 个接入点,地址是 `http://www.showapi.com.cn/mcp/105/{your_appKey}`。
- 实测 `tools/list` 返回 4 个工具,名称就是接入点中文名:外汇牌价币种列表、汇率查询、汇率转换、查询历史汇率。
- 握手顺序是 initialize → notifications/initialized → tools/list;响应是 `data:{...}` 的 SSE 帧,不能整体 `JSON.parse`。
## 不写代码也能查牌价
在支持 MCP 的 AI 客户端里配好服务,之后直接问「现在美元兑人民币多少」「帮我把 100 英镑换成欧元」「拉一下 8 月美元的历史牌价」,客户端会自己挑对应的工具去调。适合两类人:想快速看数据的非开发同事,以及正在给 AI 助手补数据能力的开发者。
## 配置方式
在客户端的 MCP 设置里新增一个服务,粘贴这段 JSON,把 `{your_appKey}` 换成真实的 AppKey:
```json
{
"mcpServers": {
"showapi-mcp-105": {
"url": "http://www.showapi.com.cn/mcp/105/{your_appKey}"
}
}
}
```
保存并启用后,客户端会向该地址做一次 MCP 握手并拉取工具列表。这个服务是接口级的,4 个接入点一次全部暴露,不需要为每个接入点单独配置。
## 实测握手过程
2026-09-18 用 JSON-RPC 直接对该端点做了一次完整握手,返回如下。
`initialize` 的响应头里带 `Mcp-Session-Id`:
```http
HTTP/1.1 200 OK
Content-Type: application/json
Mcp-Session-Id: aqyazg9jKCsHAU34
Access-Control-Allow-Origin: *
```
响应体:
```json
{
"jsonrpc": "2.0",
"result": {
"protocolVersion": "2024-11-05",
"instructions": "Hello, MCP!",
"serverInfo": { "name": "lua-resty-mcp", "version": "2.0" }
},
"id": 1
}
```
拿到 Session Id 之后要先发一条 `notifications/initialized` 通知,再请求 `tools/list`。实测跳过这条通知直接请求 `tools/list`,服务端返回 `-32601 Method not found`;补上通知后同一个请求正常返回工具列表。
`tools/list` 返回的 4 个工具:
| 工具名 | 说明 | 入参 |
|--------|------|------|
| 外汇牌价币种列表 | 返回支持的货币清单 | 无业务参数 |
| 汇率查询 | 常见货币汇率 | `code` 货币缩写 |
| 汇率转换 | 金额换算 | `fromCode`、`toCode`、`money` |
| 查询历史汇率 | 历史牌价 | `code`、`name`、`month`、`startDate`、`endDate` |
工具的 `inputSchema` 里每个都带一个 `content-type` 属性,对应接口文档的 Header 参数,且没有 `required` 数组——必填规则不在 schema 里,要靠工具描述文字判断。
## tools/call 的返回结构
调用「汇率查询」工具并传 `code=USD`,2026-09-18 实测返回:
```json
{
"jsonrpc": "2.0",
"result": {
"content": [
{
"type": "text",
"text": "{\"showapi_res_code\":0,\"showapi_res_body\":{\"list\":[{\"day\":\"2026-09-18\",\"hui_in\":\"669.61\",\"chao_in\":\"669.61\",\"hui_out\":\"672.42\",\"chao_out\":\"672.42\",\"zhesuan\":\"675.21\",\"name\":\"美元\",\"code\":\"USD\",\"time\":\"09:16:23\"}],\"listSize\":1,\"ret_code\":0}}\n\n- 以下是返回参数说明\n - 参数名称:listSize, 参数类型: Number, ..."
}
]
},
"id": 3
}
```
`content[0].text` 是一整段文本,里面包含两截:前半截是接口原始的 JSON 信封,后半截是逐字段的参数说明。要把它当结构化数据用,得先截出第一段再解析。如果只是给 AI 客户端读,这段文本本身就是为模型准备的上下文。
一个可参考的细节:这段参数说明里的示例值来自文档而不是本次返回,例如 `listSize` 的示例写的是 `26`,而本次实际返回是 1 条;`hui_in` 的示例值是欧元的历史数据。做字段说明展示时不要把它当成实时数据。
## 从浏览器脚本里调用会被拦下
2026-09-18 实测:在 https 页面的脚本上下文里 `fetch` 这个 MCP 地址会直接失败,原因是 MCP 地址是 http 协议,浏览器按混合内容处理并阻止了请求。服务端本身返回了 `Access-Control-Allow-Origin: *`。
所以这个 MCP 端点适合在客户端应用、后端服务或命令行里调用,不适合从浏览器页面直接发起。
## AppKey 放在 URL 里
MCP 地址把 AppKey 拼在路径中,只在自己信任的客户端或私有环境里配置,不要把带 AppKey 的配置提交到公开仓库或分享给他人。需要轮换时在控制台重新生成即可。
## FAQ
**Q1:MCP 和直接调接口有什么区别?**
MCP 把四个接入点封装成 AI 客户端可调用的工具,用自然语言触发;底层调用的仍是 105-30 / 31 / 34 / 35。直接调接口更适合你自己写业务逻辑的场景。
**Q2:支持哪些客户端?**
文档示例提到 Cherry Studio、ChatBox 等支持 MCP 的客户端。只要客户端支持标准 MCP 协议,按上面的 JSON 配置即可。
**Q3:为什么工具名是中文?**
工具名直接使用接入点名称,例如「汇率查询」「汇率转换」。调用 `tools/call` 时 `params.name` 传的是中文字符串,注意请求体编码要用 UTF-8。
**Q4:`tools/list` 报 Method not found 是什么原因?**
实测是因为漏了 `notifications/initialized`。握手顺序为 initialize → notifications/initialized → tools/list,并把 initialize 响应头里的 `Mcp-Session-Id` 回传到后续每个请求。
**Q5:调用结果里的参数说明能当实时数据用吗?**
不能。参数说明里的示例值来自文档,不是本次返回的数据。要读实时数据,解析 `content[0].text` 前半截的 JSON 信封。
## 下一步阅读
- [银行汇率查询 OpenAPI 文档:导入 Postman 与 Swagger UI](https://www.showapi.com/guides/exchange-rate-openapi-105):另一条把接口接进已有工具链的路径。
- [银行汇率查询:5 分钟从注册跑到第一次调用](https://www.showapi.com/guides/exchange-rate-quickstart-105):直接调接口的入门步骤。
- [银行汇率查询:汇率转换只需 3 个必填参数](https://www.showapi.com/guides/exchange-rate-convert-guide-105):MCP 里「汇率转换」工具对应的参数说明。
- **本系列共 13 篇**:查看[银行汇率查询指南总目录](https://www.showapi.com/guides/exchange-rate-guides-105)





