数据分析

对通过 MCP 服务器获取的数据进行分页、筛选、聚合、合并和导出,无需发起新的 API 调用。

目标:用 execute 获取一次数据,然后在服务器端处理完整结果,而不是重新获取或把全部数据加载进对话。

通常你只需要用自然语言告诉客户端(比如“只保留柏林的,导出一个 CSV”);这些工具由客户端自行选用。 本页说明它们各自的作用,方便你知道该怎么提要求。

缓存是如何工作的

  1. execute 会把完整结果存在服务器上,并返回前 10 条结果、total 和一个 cache_key。如果还有 更多条目,响应中还会带 next_offset
  2. 下面的每个工具都使用这个 cache_key。它们都不会重新调用数据源,也都不消耗用量。
  3. 缓存结果和你的 execute 调用历史会保留 7 天。之后,cache_key 会返回 No data found for this cache_key. It may have expired — re-run execute().

分页浏览结果

get_page(cache_key, offset, limit) 返回从 offset 开始的条目,并带有 next_offsethas_more。 一页最多包含 50 条;如果 limit 更大,会返回 50 条以及提示从 next_offset 继续获取。

筛选与排序

query_cache(cache_key, conditions, sort_by, sort_order, limit, offset) 返回匹配的条目及其 total

{
  "cache_key": "<cache_key>",
  "conditions": [
    {"field": "location", "op": "contains", "value": "Berlin"},
    {"field": "follower_count", "op": ">", "value": 1000}
  ],
  "sort_by": "follower_count",
  "sort_order": "desc",
  "limit": 10
}

聚合

加上 aggregate 可以得到一个数字,而不是一批条目:

{"cache_key": "<cache_key>", "aggregate": {"field": "follower_count", "op": "avg"}}

合并多个结果

merge_data(cache_keys, dedupe_by) 把 2 到 20 个缓存结果(总共最多 10 万行)合并成一个新的 cache_key,本页的每个工具都可以直接使用它。

导出文件

export_data(cache_key, output_format, list_unpack) 返回一个 file_url、行数 total、文件大小和一份 预览。

查找之前的结果

search_requests(source, category, endpoint, query, since, until, limit, offset) 按时间从新到旧列出你 之前的 execute 调用,包含参数、条目数、时间和 cache_keyquery 会匹配参数中的文本;sinceuntil 接受 ISO 8601 格式的时间。用它代替重新获取同样的数据。

故障排查

消息 解决方法
No data found for this cache_key. It may have expired — re-run execute(). 结果已超过 7 天,或 key 不正确。请重新获取。
No items matched the given conditions (N items in cache). Check condition fields and values. 字段名或取值与条目不匹配。先用 get_page 看一条具体的条目。
Invalid operator: … / Invalid aggregate: … 请使用上面列出的运算符或函数之一。
Unsupported format '…'. Use: json, csv, jsonl, xlsx 请选择一个受支持的 output_format
cache_keys must contain at least 2 different cache_key values / Too many cache_keys / Too many rows to merge 合并的结果数量应在 2 到 20 个之间,总行数不超过 10 万行。