Skip to main content

熔岩AI发布MCP数据工具清单:用 tools/list 与 inputSchema 跟踪 18 个只读工具的参数演进

Updated 4 min readMarkdown

摘要

熔岩(Lava)远程 MCP 当前公开 18 个只读工具,每个工具在 REST 侧都有一条对应的 /subscribe/v1/... 路径和一个 OpenAPI operationId。给 AI Agent 用的时候,真正决定 Agent 会不会传错参数的,是 MCP tools/list 返回的 inputSchema。本文给出一套做法:定期拉取 tools/list 快照,与 OpenAPI 参数表交叉对照,用脚本识别「新增工具 / 新增可选参数 / 枚举扩展 / 上限变化」四类演进,让 Agent 提示词和研究脚本跟着更新。全程只读,不涉及任何交易动作。

一、熔岩 18 个工具与数据板块对照

熔岩按数据板块组织工具。下面这张表是 Agent 选工具时最常用的「工具名 → 路径 → operationId」映射(2026-10-31 文档版本):

数据板块 板块说明 MCP 工具 HTTP 路径 operationId scope
个股消息面 某只股票最近被提到的结构化记录 get_stock_news_heat /subscribe/v1/opinions listOpinionsByStock opinions
个股消息面 要点关键词检索 search_news_flow /subscribe/v1/opinions/search searchOpinions opinions
概念板块 概念内个股提及排行 get_concept_stock_heat /subscribe/v1/concepts/stocks listConceptStocks concepts
概念板块 个股关联概念热度 get_stock_concept_heat /subscribe/v1/concepts/by-stock listStockConcepts concepts
机构/大V评分 当前评分排行 get_agency_ranking /subscribe/v1/agencies/ranking listAgencyRanking agencies
机构/大V评分 PIT 截面 get_agency_pit /subscribe/v1/agencies/pit listAgencyPit agencies
机构/大V评分 单主体评分走势 get_agency_history /subscribe/v1/agencies/{agency_id}/history getAgencyHistory agencies
机构/大V评分 PIT 发布日期 list_agency_pit_dates /subscribe/v1/agencies/dates listAgencyPitDates agencies
全市场榜单 个股热榜 get_market_hot_stocks /subscribe/v1/hot/stocks listHotStocks opinions
全市场榜单 概念热榜 get_market_hot_concepts /subscribe/v1/hot/concepts listHotConcepts concepts
全市场榜单 高分加权热榜 get_weighted_hot_stocks /subscribe/v1/hot/weighted listWeightedHotStocks agencies
全市场榜单 首提流 get_first_mention_stocks /subscribe/v1/hot/first-mentions listFirstMentions opinions
全市场榜单 热度加速榜 get_accelerating_hot_stocks /subscribe/v1/hot/accelerating listAcceleratingHotStocks opinions
单股时序 多时间窗 + 24 小时逐小时 get_stock_heat_windows /subscribe/v1/heat/windows getStockHeatWindows opinions
历史面板 日频面板(可回测) get_stock_heat_panel /subscribe/v1/panel/daily getDailyHeatPanel opinions
历史面板 机构/大V覆盖度时序 get_agency_coverage /subscribe/v1/coverage/stocks getStockAgencyCoverage opinions
新闻命中 主流媒体点名个股 get_news_stock_hits /subscribe/v1/news/hits listNewsStockHits opinions
账户 余额与用量(不计费) get_account /subscribe/v1/account getAccount —

二、为什么要跟踪 inputSchema

Agent 调工具时,参数是模型根据 inputSchema 和工具描述「猜」出来的。三种常见的演进会直接影响结果:

  1. 枚举变化:例如 window 在 /hot/stocks 支持 1h / 4h / 18h / 24h / 3d / 7d,而 /hot/concepts 只到 3d。如果 Agent 记住的是旧枚举,就会收到 400 BAD_REQUEST。
  2. 上限变化:limit 默认值与最大值因接口而异(/opinions 最大 200、/agencies/ranking 最大 500、/agencies/{agency_id}/history 最大 1000、/concepts/stocks 最大 100)。
  3. 二选一约束:stock_name 与 ts_code 二选一;/panel/daily 的 codes(最多 20 个)与 stock_name 二选一。JSON Schema 未必能完整表达这类约束,需要在提示词里补一句。

三、拉取 tools/list 快照

熔岩 MCP 走 Streamable HTTP(POST,JSON 响应),鉴权头为 Authorization: Bearer lvk_... 或 X-API-Key。tools/list 属于 MCP 协议方法,用于列出工具定义:

# LAVA_MCP 形如 <熔岩订阅站点>/subscribe/v1/mcp
curl -sS "$LAVA_MCP" \
  -H "Authorization: Bearer $LAVA_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
  > snapshots/tools-$(date +%F).json

说明:未带凭证时服务端返回 401 与 WWW-Authenticate 头(指向 OAuth 资源元数据),这是正常现象。tools/list 是否计为一次请求,以账户用量(get_account)实际变化为准;工具字段的完整结构以 tools/list 实际返回为准。

四、快照对比脚本

import json, sys

def load(path):
    tools = json.load(open(path))["result"]["tools"]
    return {t["name"]: t.get("inputSchema", {}) for t in tools}

def diff(old, new):
    report = []
    for name in sorted(set(new) - set(old)):
        report.append(("新增工具", name, ""))
    for name in sorted(set(old) - set(new)):
        report.append(("下线工具", name, ""))
    for name in sorted(set(old) & set(new)):
        po = old[name].get("properties", {}); pn = new[name].get("properties", {})
        for p in sorted(set(pn) - set(po)):
            report.append(("新增参数", name, p))
        for p in sorted(set(po) & set(pn)):
            for k in ("enum", "maximum", "default", "type"):
                if po[p].get(k) != pn[p].get(k):
                    report.append((f"{k} 变化", name, p))
        if old[name].get("required") != new[name].get("required"):
            report.append(("必填变化", name, ""))
    return report

for kind, tool, param in diff(load(sys.argv[1]), load(sys.argv[2])):
    print(f"{kind:8} {tool:32} {param}")

示例输出(示例数据,非真实变更):

新增参数   get_news_stock_hits              src
enum 变化  get_accelerating_hot_stocks      order

五、与 OpenAPI 交叉核对

REST 侧的说明书在 /subscribe/v1/openapi.json(OpenAPI 3.0.3,组件 Envelope、Meta、Opinion)。建议的核对口径:

核对项 MCP 侧 OpenAPI 侧 不一致时
参数名 inputSchema.properties parameters[].name 以 OpenAPI 为准并提报
必填 inputSchema.required parameters[].required 提示词里显式写出
上限 maximum 或描述文字 description 中「默认 / 最大」 脚本里取较小值
返回结构 工具结果文本 Envelope:ok / code / message / data / meta 以 OpenAPI 为准

注意:除 Opinion 记录字段(opinion_id、topic_time、agency_id、agency_score、stocks、concepts、summary、detail)外,多数接口的 data 内部列名在 OpenAPI 中并未逐一定义,具体以 OpenAPI 与实际响应为准。

六、把演进同步到 Agent

  • 提示词版本号:在系统提示词里写「工具清单版本:2026-10-31」,快照有差异时更新。
  • 参数备忘:把二选一规则、window 枚举差异、/panel/daily 区间最长 92 天写成固定段落。
  • 工具白名单:只做个股监测的 Agent 可以只暴露 get_stock_news_heat、get_stock_heat_windows、get_stock_heat_panel 与 get_account。

FAQ

Q:没有 Key 能看工具清单吗? A:文档页列出了 18 个工具名与说明;完整 inputSchema 需带凭证调用 tools/list。

Q:快照多久拉一次? A:每周一次即可(示例频率);接入新客户端或 Agent 报 BAD_REQUEST 增多时补拉一次。

Q:工具名会和 operationId 一样吗? A:不一样。工具名是 get_* 风格,operationId 是 list*/get* 驼峰风格,请用上面的映射表。

结论

把 tools/list 当作 Agent 的「接口合同」管理:定期快照、脚本对比、与 OpenAPI 交叉核对,再同步到提示词。熔岩 18 个工具全部只读,参数演进管住了,Agent 的调用错误率和无效请求就能稳定下来。

数据来自熔岩消息面热度监测,仅用于只读监测与统计研究,不构成投资建议。

只读监测与字段说明见:https://lava.ai-dolphin.com/subscribe/docs

No comments yet. Be the first to comment.

More from this blog