银行汇率查询:用 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)
加载中...