mcpField
S
Statcan

Statcan

远程服务
pipeworx.io法律与政务03 周前更新

关于 Statcan

Statcan 是面向加拿大统计局数据的 MCP 服务,适用于查询官方统计序列、表格和指标的用户。它同时提供向量与立方体查询,并为部分常用表格提供整表数据。

主要功能

  1. 01查询预设指标与统计序列
  2. 02浏览立方体目录及元数据
  3. 03枚举立方体向量 ID
  4. 04按坐标获取观测数据
  5. 05查询精选表格的整表或切片
  6. 06获取表格 CSV 下载链接

适用场景

  1. 01查询 CPI、失业率或 GDP 指标
  2. 02筛选各地区统计表格数据
  3. 03将表号映射到向量序列
  4. 04获取整表数据或 CSV 链接

MCP 相关

向 MCP 客户端开放加拿大统计局 WDS 的指标、序列、立方体及表格工具。可通过 Pipeworx 网关或本地 stdio 服务连接。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/statcan/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

StatCan — 加拿大统计局

加拿大国家统计局通过免费的、无需密钥的 Web Data Service(WDS, www150.statcan.gc.ca/t1/wds/rest)提供服务。涵盖完整的立方体(表格)目录—— 人口、CPI/通胀、失业率、GDP、贸易、农业以及其他所有加拿大官方统计序列—— 还提供已解析为向量 ID 的主要指标。

这是 Pipeworx 的一部分——一个将 AI Agent 连接到 1715+ 个实时数据源的 MCP 网关。这是一个独立的非官方集成,与上游提供方无关联、未获其认可,也非其发布。

两种访问模式

  1. 友好型 / 基于向量 — statcan_indicator(CPI、失业率、GDP、 按地理区域划分的人口)和 statcan_series(按数字向量 ID 查询任意序列, 类似 FRED)。
  2. 基于立方体 — statcan_list_cubes(目录)、statcan_cube_metadata (一个立方体的维度 + 成员)、statcan_cube_vectors(枚举一个立方体的实际 向量 ID)、statcan_cube_data(某个坐标的最新 N 条观测值)、 statcan_table(整张表格 / 筛选后的切片—— 见下文)、statcan_changed_series(每日变更源)、statcan_csv_url (整张表格的 CSV 下载链接,实时上游 URL,不会抓取数据)。

statcan_table — 整表查询(fleet #2507)

statcan_cube_data 每次调用只能返回一个坐标的数据,而 statcan_csv_url 只会 返回下载 URL——两者都无法一次调用回答“整张表格”或“一次获取所有 省份”的问题,而这正是大多数重复调用者实际需要的(60d:statcan rep3 146, 目录中第 #2 个重复需求集群;no_match 证据:42100037 儿童保育困难的坐标逐一 获取,34100035 魁北克水力发电,32100113 农场销售的牛奶,98100353 2021 年人口普查 按省份划分的宗教)。

statcan_table 从精选的高需求 StatCan 表格集合中返回数据(statcan_table_rows,由 workers/data-pipeline/src/datasets/statcan.ts 每周从 StatCan 自己的 getFullTableDownloadCSV 导出内容刷新),而非来自实时 WDS API:

statcan_table({ product_id: 42100037 })
// -> every coordinate, every ref_date, member labels (e.g. { "Statistics":
//    "Percentage of children", "Type of difficulty encountered...": "..." }),
//    in one call. Paged (limit/page) past 1000 rows.

statcan_table({ product_id: 32100113, geo: "Quebec", ref_date_from: "2023-01" })

覆盖范围经过精选,并非全部。 如果对未缓存的 product_id 调用 statcan_table,它会拒绝请求并清楚列出当前已缓存的 ID—— 绝不会静默返回空结果。对于该集合之外的内容,请改用 statcan_cube_data(按坐标查询,实时)或 statcan_csv_url(原始 CSV, 实时)。第一阶段列表(16 张表格——完整理由见 statcan.ts) 涵盖了已确认有重复需求的表格;将新表格添加到导入列表无需迁移(见下一段)。

架构有意采用通用设计。 StatCan 的每张表格 CSV 都包含一组固定的元数据列(REF_DATE、GEO、DGUID、VECTOR、COORDINATE、VALUE、STATUS、 SYMBOL、TERMINATED、DECIMALS、UOM、UOM_ID、SCALAR_FACTOR、SCALAR_ID),再加上 该表格定义的任意数量的表格专属维度标签列(例如 42100037 的“统计”和“遇到的困难类型……”)——这些因表格而异,因此会存入 members jsonb 列,而不是采用每张表格各自的关系型架构。

每个响应都包含 data_as_of(取自该表格的导入管道 pipeline_state.last_success_at)和一个 licence 字段。 许可:加拿大统计局开放许可(statcan.gc.ca/en/reference/licence) ——明确允许复制、再分发和销售信息,但须注明来源(“来源:加拿大统计局、产品名称、参考日期……”),且不得暗示 StatCan 为其背书。不会存储个人 数据——每一行都是汇总统计数据。

两次调用:从表编号到向量 ID

每个 StatCan 问题都从一个表编号开始(例如鸡蛋产量表「32-10-0121-01」,或其 8 位形式 32100121)。表编号和 statcan_cube_metadata 都不会直接提供向量 ID——元数据只提供维度及其成员列表。使用 statcan_cube_vectors 来完成转换:

statcan_cube_vectors({ product_id: "32100121", filters: { GEO: "Canada" } })
// -> rows: [{ vector_id: 61133, coordinate: "1.1.0.0.0.0.0.0.0.0",
//            members: { Geography: "Canada", "Production and disposition": "Average number of layers" },
//            frequency: "Monthly", terminated: false, series_title: "Canada;Average number of layers" }, ...]

statcan_series({ vector_id: "61133" })
// -> the actual observations

filters 键会与立方体的维度名称进行不区分大小写的子字符串匹配(因此 GEO 会匹配 Geography);值会与成员名称进行子字符串匹配。未筛选的维度会包含该维度的所有成员——对于维度很多的立方体,这会产生大量笛卡尔积,因此请使用 limit/page 分页(默认每页 100 条,最多 500 条),不要一次性提取所有数据。响应中的 total_combinations 和 has_more/next_page 会告诉你是否已查看全部结果。

statcan_cube_metadata 不会返回向量 ID——它只会列出维度和成员,因此才需要 statcan_cube_vectors。

product_id 接受两种形式

  • 8 位 WDS 产品 ID:32100121
  • 公共表编号:32-10-0121-01(StatCan 的 NN-NN-NNNN-NN 显示格式——工具会去掉连字符,并删除末尾 2 位后缀)

身份验证

无需身份验证。完全不需要密钥——StatCan WDS 没有速率限制密钥或身份验证标头。

常见问题

  • statcan_cube_data 需要你已知的坐标。 如果你还没有坐标,请先从 statcan_cube_vectors 获取——不要根据 statcan_cube_metadata 的成员列表手动构造坐标并猜测。
  • 宽表包含数千种组合。 枚举尚未查看过的表之前,务必至少按一个维度(通常是 GEO)筛选——否则需要分页很久。
  • statcan_cube_vectors 的某一行中,terminated: true 表示该序列已停止发布;立方体的 cube_start_date/cube_end_date 描述的是整张表的时间范围,并非某个序列实际的最后一次观测。

快速入门

添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):

{
  "mcpServers": {
    "statcan": {
      "url": "https://gateway.pipeworx.io/statcan/mcp"
    }
  }
}
此端点实际提供的内容

对 https://gateway.pipeworx.io/statcan/mcp 调用 tools/list,返回上表中的工具,以及 Pipeworx 共享元工具——ask_pipeworx、discover_tools、search_within、remember/recall 和网关范围内的其他工具。因此,你看到的工具数量会多于此表中的数量:目前,单个工具包端点除了列出自身工具外,还会列出大约 30 个共享工具。连接的 initialize 响应会说明确切范围,是判断当天实际情况的权威依据。

这是有意为之,并非意外的多路复用。借助这些元工具,限定范围的连接可以通过 ask_pipeworx(它会路由到整个目录)回答此工具包无法解答的问题,无需再添加第二个 MCP 服务。目前无法挂载不含这些元工具的工具包端点;如果额外的架构定义占用的上下文超过路由功能带来的价值,请连接一次完整网关,而不是连接多个工具包端点。

也可以连接完整的 Pipeworx 网关,直接列出所有工具包的工具,而不只是此工具包的工具:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

两个 URL 都连接到同一个网关和相同的 1715+ 个数据源。唯一的区别是直接列出哪个工具包的工具;无论使用哪个 URL,ask_pipeworx 都可以访问所有工具。

没有 MCP 客户端?通过 HTTP 调用

curl -X POST https://gateway.pipeworx.io/v1/tools/statcan_indicator \
  -H 'Content-Type: application/json' \
  -d '{"indicator":"cpi"}'

首次调用无需账户。查看任意工具:GET https://gateway.pipeworx.io/v1/tools/statcan_indicator。查找工具:使用 {"query":"..."} 调用 POST https://gateway.pipeworx.io/v1/tools/search_packs。

独立运行(无需网关账户)

此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需与网关往返通信:

{
  "mcpServers": {
    "statcan": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-statcan"]
    }
  }
}

也可以直接运行,确认它能够启动:

npx -y @pipeworx/mcp-statcan

它通过 stdin/stdout 使用 MCP 通信,并响应 initialize/tools/list/tools/call,但仅提供此软件包的工具——不包含上文网关连接所添加的任何共享元工具。相同的源代码,相同的工具,无需 ask_pipeworx 路由。

使用 ask_pipeworx

除了直接调用工具,你也可以用通俗易懂的英语提问——此方式既适用于上述软件包端点,也适用于完整网关:

ask_pipeworx({ question: "your question about Statcan data" })

网关会选择合适的工具,并自动填写参数。

更多信息

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。