通过 MCP 让 Claude 和 ChatGPT 获取实时金价
借助 MetalAPI MCP 服务器,让 Claude、ChatGPT、Cursor 和 VS Code 获取实时黄金及金属价格:OAuth 与 API 密钥两种接入方式、可用工具、安全设计和配额说明。
为什么助手需要价格工具
在没有任何工具的情况下向聊天助手询问今天的金价,您会得到三种回答之一:拒绝回答、训练数据里的某个数字,或者一个语气笃定却毫无依据的猜测。这些都没有用。语言模型学习的是一份文本快照,它的截止时间比您与它对话的时间早好几个月,而只要市场开盘,黄金、白银和原油价格每隔几秒就会变动。
常见的变通办法是自己查好价格,再粘贴到对话里。这对单个问题有效,但很快就会捉襟见肘。您得记住复制的是什么单位(金衡盎司还是克?)、什么货币,以及数字是什么时候获取的。一旦追问上个月的价格区间,或者要求换算成土耳其里拉,您又得回到浏览器里去查。
Model Context Protocol(MCP)省去了这一步。助手获得一小组可以自行调用的工具,每个回答都基于一次全新的 API 响应,其中带有自己的时间戳、基础货币和单位。本文介绍如何将 Claude、ChatGPT、Claude Code、Cursor 和 VS Code 连接到 MetalAPI MCP 服务器、连接后助手能做什么,以及有哪些安全保障。
| 方面 | 手动粘贴数字 | 调用 MCP 工具 |
|---|---|---|
| 时效性 | 取决于您复制的内容和复制的时间 | 您的套餐所允许的最新价格,在提问时实时获取 |
| 单位与货币 | 容易混淆金衡盎司、克和不同货币 | 明确的 base 和 unit 参数,并在响应中原样返回 |
| 时间戳 | 通常在复制过程中丢失 | 每个响应都包含 timestamp 和 date |
| 追问 | 又一次手动查询 | 助手调用另一个工具 |
| 历史与换算 | 另开一个网站或电子表格 | 时间序列、OHLC、涨跌和换算工具 |
MCP 是什么
MCP 是一个开放协议,由 Anthropic 于 2024 年推出,现已得到众多 AI 应用的支持,它规范了助手与外部工具和数据交互的方式。MCP 服务器发布一份工具列表。每个工具都有名称、通俗易懂的说明、描述参数的 JSON Schema,以及“只读”等可选注解。MCP 客户端(Claude、ChatGPT、Cursor、VS Code 等)读取这份列表,由模型判断何时需要某个工具,再将调用发送到服务器,并把结果交还给模型。
模型本身既看不到您的凭据,也不会直接访问 API。它生成一个结构化请求,例如“使用 symbols: XAU 和 base: EUR 调用 get_latest_prices”,由客户端执行,模型再根据返回的 JSON 撰写回答。
MetalAPI 的服务器位于 https://metalapi.com/mcp。它使用 Streamable HTTP,即 MCP 规范中定义的远程传输方式,并且是无状态的:每次调用都是一个独立的 HTTPS 请求,返回 JSON 响应,因此无需维持长连接会话。该服务器已收录于官方 MCP Registry,名称为 com.metalapi/metalapi。如果在浏览器中打开该 URL,您会被重定向到 AI 与 MCP 概览页面。
使用 OAuth 登录或使用 API 密钥
对服务器的每次调用都需要身份验证。有两种方式,选择哪一种取决于客户端:
- OAuth 2.1(登录):适用于带有连接器界面的应用,例如 Claude 和 ChatGPT。客户端会自行发现授权服务器:未经身份验证的调用会收到
401响应,其中的WWW-Authenticate响应头指向服务器的受保护资源元数据。随后客户端通过动态客户端注册完成注册,并打开 MetalAPI 登录页面。该流程使用 PKCE,因此应用中无需内置客户端密钥。您只需登录(或创建免费账户)并批准连接。 - API 密钥:适用于允许设置 HTTP 请求头的开发者工具,例如 Claude Code、Cursor 和 VS Code。以
Authorization: Bearer mk_live_…的形式发送与 REST API 相同的密钥即可。
两种方式对应同一个账户、套餐和配额。工具列表只有一处不同:create_api_key 仅在 OAuth 连接中提供。复制到配置文件中的密钥绝不应该能够再创建新的密钥,因此基于密钥的连接只能看到 12 个工具,而不是 13 个。
OAuth 连接会列在控制台的 Settings → Connected apps 中,您可以随时断开其中任何一个。API 密钥可以在 API keys 中轮换或吊销。请像对待源代码中的密钥一样对待 MCP 配置文件中的密钥。
连接 Claude 和 ChatGPT
在 claude.ai 和 Claude Desktop 中使用 Claude:
- 打开 Settings → Connectors,选择 Add custom connector。
- 将其命名为 MetalAPI,并输入
https://metalapi.com/mcp。 - 点击 Connect,登录 MetalAPI(或创建免费账户),然后点击 Allow。
在 ChatGPT 中,打开 Settings → Apps & Connectors,以开发者模式创建一个连接器,URL 填写 https://metalapi.com/mcp,身份验证选择 OAuth。ChatGPT 会打开 MetalAPI 登录页面;批准连接后,即可在对话中使用这些工具。能否添加自定义连接器取决于您的 ChatGPT 套餐,在工作区中还取决于管理员的设置。
这两个应用的菜单名称会不时调整。MCP 设置指南会持续更新每个客户端的最新步骤。
在第一次对话中,最好点明数据来源(“使用 MetalAPI,查一下……”),让助手调用工具而不是依赖记忆。此后,只要问题涉及价格,大多数助手都会自行选择该工具。
连接 Claude Code、Cursor 和 VS Code
编程助手通常使用 API 密钥。在控制台中创建一个密钥(Free 套餐就足以起步),并为每个工具使用单独的密钥,这样吊销其中一个时不会影响其他工具。
在 Claude Code 中,从终端添加服务器:
claude mcp add --transport http metalapi https://metalapi.com/mcp \
--header "Authorization: Bearer YOUR_API_KEY"如果不想保存密钥,可以不带 --header 添加服务器,然后在 Claude Code 中运行 /mcp,改为通过 OAuth 登录。
在 Cursor 中,将服务器添加到 ~/.cursor/mcp.json,或项目中的 .cursor/mcp.json:
{
"mcpServers": {
"metalapi": {
"url": "https://metalapi.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}在 VS Code(GitHub Copilot) 中,将以下内容保存为 .vscode/mcp.json。inputs 区块会让 VS Code 询问一次密钥并安全地存储,因此密钥永远不会出现在文件中:
{
"inputs": [
{ "type": "promptString", "id": "metalapi-key", "description": "MetalAPI API key", "password": true }
],
"servers": {
"metalapi": {
"type": "http",
"url": "https://metalapi.com/mcp",
"headers": { "Authorization": "Bearer ${input:metalapi-key}" }
}
}
}其他支持通过 Streamable HTTP 连接远程 MCP 服务器的客户端(例如 Windsurf)也遵循相同的模式:服务器 URL,加上 Bearer 请求头或 OAuth 登录。
对话是什么样子的
连接之后,您只需用自然语言提问,助手会自行选择工具及其参数。以下是几个典型的提问及其对应的调用:
| 您的提问 | 工具 | 参数 |
|---|---|---|
| 现在黄金以欧元计价每克多少钱? | get_latest_prices | symbols: XAU、base: EUR、unit: gram |
| 过去两周白银走势如何? | get_timeseries 或 get_fluctuation | symbols: XAG、start_date、end_date |
| 把 2.5 金衡盎司铂金换算成土耳其里拉。 | convert | from: XPT、to: TRY、amount: 2.5 |
| 今天黄金的开盘价、最高价、最低价和收盘价是多少? | get_ohlc | symbols: XAU |
| 18K 金以英镑计价每克多少钱? | get_carat_prices | base: GBP(付费套餐) |
| 我用的是哪个套餐?还剩多少配额? | get_account | 无 |
价格工具返回紧凑的 JSON。为了兼容旧版集成,REST API 的 rates 区块会将每个品种列出两次:一次是价格,一次是它的倒数。MCP 服务器只保留价格,以品种代码为键放在 prices 下。这样大约能节省一半的 token,也消除了最常见的数据误读原因。使用 symbols: XAU,XAG、base: EUR 和 unit: gram 调用 get_latest_prices,会返回类似下面的结果:
{
"success": true,
"timestamp": 1792834892,
"date": "2026-10-24",
"base": "EUR",
"unit": "gram",
"rate_limit": {
"limit": 10000,
"remaining": 9874,
"reset": 1793491200,
"used": 126,
"plan": "Standard",
"reset_date": "2026-11-01T00:00:00.000Z"
},
"prices": {
"XAU": 110.4064149,
"XAG": 1.489616277
}
}本文中的数字仅作示意。实际回答将使用您的套餐所允许的最新价格。
由于每个响应都带有 timestamp、base 和 unit,一个好的回答会说明“某个时间点黄金约为每克 €110”,而不只是“€110”。如果回答中缺少这些背景信息,可以让助手补充。
助手还可以串联多次调用。如果让它比较今天与一个月前的金银比,助手可以分别获取两种金属在两个日期的价格,再自行计算比值。如果要求生成图表,能够运行代码的客户端可以把 get_timeseries 的结果绘制成图表。
13 个工具
服务器提供 13 个工具。其中 7 个返回市场数据,每次调用与 REST 调用完全一样,计为您套餐每月额度中的 1 次请求。其余工具均免费。
| 工具 | 功能 | 配额 |
|---|---|---|
get_latest_prices | 金属、能源、货币和加密货币的最新价格,支持任意基础货币和质量单位 | 1 次请求 |
get_historical_prices | 过去某一天的收盘价 | 1 次请求 |
convert | 按最新价格或过去某日的价格,在两个品种之间换算金额 | 1 次请求 |
get_timeseries | 两个日期之间的每日收盘价(Free 套餐每次调用最多 30 天,付费套餐最多 365 天) | 1 次请求 |
get_fluctuation | 两个日期之间的起止价格,以及绝对涨跌额和涨跌幅 | 1 次请求 |
get_ohlc | 某一天的开盘价、最高价、最低价和收盘价 | 1 次请求 |
get_carat_prices | 按 K 数划分的金价,例如 22K 或 18K(付费套餐) | 1 次请求 |
list_symbols | 所有品种代码及其名称、类别和单位 | 免费 |
get_account | 您的套餐、每月额度、用量和重置日期 | 免费 |
list_plans | 所有套餐及其限额、月付和年付价格 | 免费 |
list_api_keys | 您当前有效的 API 密钥(已脱敏) | 免费 |
create_api_key | 为您自己的应用创建密钥;仅限 OAuth 连接;需先确认 | 免费 |
get_upgrade_link | 生成 Stripe 结账链接,已订阅用户则生成账单管理门户链接;需先确认 | 免费 |
客户端连接时,服务器还会发送简短的说明:品种代码的含义、未指定单位时金属价格按金衡盎司计价,以及数据工具会消耗配额。客户端会把这些说明传给模型,因此表现良好的助手只会请求它需要的品种。品种越少,回答越简短,消耗的 token 也越少。
安全:默认只读,不涉及付款
将助手连接到账户,自然会引出一个问题:它能修改什么?我们的设计让答案非常简单。
- 13 个工具中有 11 个是只读的。 它们带有 MCP 的
readOnlyHint注解,只能读取价格、您的套餐、用量和脱敏后的密钥信息。 - 两个写入类工具会先征求确认。
create_api_key和get_upgrade_link被标记为会产生变更的操作,因此 MCP 客户端会在运行前征求您的确认。 - 服务器绝不会产生任何扣费。
get_upgrade_link会为您指定的套餐创建 Stripe 结账会话(如果您已订阅,则生成账单管理门户链接),并返回 URL。由您自己打开链接、核对价格并付款,助手无法完成付款。 - 新密钥只显示一次。 通过
create_api_key创建的密钥与在控制台中创建时一样,只会完整返回一次,我们只存储其哈希值。 - 访问范围有限。 该连接只能访问 MetalAPI:价格、您的套餐、用量和 API 密钥。服务器绝不会看到您的对话、文件或其他连接器。
- 与 API 流量一样记录日志。 市场数据调用会以
/mcp/加工具名的形式出现在控制台的请求日志中,与您的 REST 请求并列显示。
对于任何 MCP 服务器,都值得保持一个好习惯:认真阅读客户端显示的确认提示,而不是条件反射地点批准,并移除不再使用的连接器。
配额、时效性与套餐
MCP 调用与 REST API 共用同一份额度。无论返回多少个品种,一次数据工具调用只计 1 次请求,而 list_symbols 和账户工具不消耗任何额度。每分钟速率限制同样适用,Free 套餐为每分钟 10 次请求。
价格的时效性取决于您的套餐。在 Free 套餐中,助手看到的是每日价格;付费套餐的更新频率从每 30 分钟到每 5 秒不等:
| 套餐 | 每月价格 | 每月请求数 | 更新间隔 |
|---|---|---|---|
| Free | 0 美元 | 100 | 每日 |
| Lite | 4.99 美元 | 1,000 | 30 分钟 |
| Standard | 11.99 美元 | 10,000 | 10 分钟 |
| Advanced | 24.99 美元 | 50,000 | 1 分钟 |
| Pro | 49.99 美元 | 100,000 | 1 分钟 |
| Ultra | 99.99 美元 | 500,000 | 15 秒 |
| Business | 149.99 美元 | 500,000 | 15 秒 |
| Enterprise | 299.99 美元 | 1,500,000 | 5 秒 |
每月 100 次请求足以应付对话中偶尔的提问。如果您用助手做需要拉取大量数据序列的分析,或者把它接入按计划运行的智能体,不妨时常让它调用 get_account:它会报告已用请求数、剩余请求数以及额度重置时间。每月额度用完后,在下月 1 日(UTC)之前,数据工具会返回超出配额的错误并附带升级链接,账户工具则仍可正常使用。完整对比请参见定价页面。
上手只需几分钟:注册免费账户,按照 MCP 设置指南配置您的客户端,然后提出第一个问题。AI 与 MCP 页面汇总了设置方法,API 文档则介绍了每个工具背后的 REST 端点。