ONS数据查询服务

一个为英国国家统计局(ONS)提供的无认证数据查询服务,可直接获取官方统计数据如通胀、GDP等。

  • by dwain-barnes
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 dwain-barnes/uk-ons-mcp-server

使用说明

英国ONS MCP服务器

A. 模型上下文协议(MCP)服务器 英国国家统计局(ONS) CMD API (https://api.beta.ons.gov.uk/v1). 直接从您的MCP兼容助手查询英国政府官方统计数据——通货膨胀、GDP、福祉、贸易、死亡人数等。不需要API密钥。


特性

  • 直接ONS访问 --无身份验证,无令牌
  • 浏览和搜索 已发布的完整数据集目录
  • 维度发现 --查询前检查数据集的维度和有效选项代码
  • 真实观察 --提取按地理、时间和任何其他维度过滤的数据点
  • 最新数据快捷方式 自动填充合理的默认值
  • TypeScript,原生 fetch,零运行时间依赖 超越MCP SDK和Zod
  • 输入验证 以及可操作的、自我纠正的错误消息

需求

  • Node.js>=18.17 (使用全球 fetch 和 AbortSignal.timeout)

推荐的代理工作流程

ONS观测端点需要以下值 每 数据集的维度,并允许 恰好一个 通配符 *预期流程为:

  1. search_datasets --按关键字查找数据集id(例如。 "inflation" -> cpih01).
  2. get_dataset_dimensions --了解所需的尺寸,并查看示例选项代码。
  3. get_observation --请求数据,为每个维度赋予一个值,并使用 * 对于你想改变的那个。

get_latest_data 是一个方便的包装器:它会自动填充 time="*" 和 geography="K02000001" (英国)和任何单一选项维度。如果数据集需要更多选项,它将返回可用选项,以便您可以切换到 get_observation.


可用工具

工具 目的
list_datasets 所有数据集的分页列表(limit 1-1000, offset).
search_datasets 通过id/标题/描述/关键字进行关键字搜索。
get_dataset 按id列出一个数据集的完整元数据
get_dataset_dimensions 数据集最新版本的维度,包括选项计数和样本。 打电话之前 get_observation.
get_dimension_options 浏览一个维度的有效选项代码的完整列表。
get_observation 检索观察结果。每个维度都需要一个值;一个可能是 *.
get_latest_data 自动填充的最新观察结果 time="*" / geography=UK 默认值。

资源

URI 描述
ons://popular_datasets 经过整理、实时验证的常见数据集ID列表。
ons://api_info API基础URL、身份验证模型和推荐的工作流程。

示例

查询CPIH(英国通胀)作为英国范围内的时间序列:

// 1) discover dimensions
get_dataset_dimensions { "dataset_id": "cpih01" }
// -> dimensions: aggregate (122 options, e.g. CP00 "Overall Index"), geography, time

// 2) fetch the Overall Index across all time periods for the UK
get_observation {
  "dataset_id": "cpih01",
  "dimensions": { "time": "*", "geography": "K02000001", "aggregate": "CP00" }
}

省略必需的维度会返回一个有用的错误,列出缺少的内容和要使用的示例代码,因此代理可以在不猜测的情况下重试。


安装与配置

选项A-npx(已发布包)

无安装步骤;客户端按需运行它。

克劳德桌面版 (claude_desktop_config.json)或 Claude 代码 (.mcp.json):

{
  "mcpServers": {
    "uk-ons": {
      "command": "npx",
      "args": ["-y", "uk_ons_mcp_server"]
    }
  }
}

选项B——本地构建(从源代码)

git clone https://github.com/dwain-barnes/uk-ons-mcp-server.git
cd uk-ons-mcp-server
npm install
npm run build

然后将您的客户端指向构建的入口点(使用绝对路径):

{
  "mcpServers": {
    "uk-ons": {
      "command": "node",
      "args": ["/absolute/path/to/uk_ons_mcp_server/dist/index.js"]
    }
  }
}

在Windows上,使用完整路径,例如 C:\\Users\\you\\uk_ons_mcp_server\\dist\\index.js.

Claude Code也可以从CLI添加它:

claude mcp add uk-ons -- node /absolute/path/to/uk_ons_mcp_server/dist/index.js

发展

npm install
npm run build     # compile TypeScript to dist/
npm start         # run the built server on stdio
npm run dev       # tsc --watch
npm run clean     # remove dist/
npm test          # build, then run the end-to-end smoke test against the live API

烟雾测试(test/smoke.mjs)使用MCP SDK客户端在stdio上生成构建的服务器,并端到端检查所有七个工具和一个资源。


安全说明

  • 只读。 每个工具只执行 GET 针对公共国家统计局API的请求;没有任何内容被写入或修改。
  • 没有身份验证或秘密。 ONS CMD API是开放和无钥匙的,因此没有令牌可存储或泄漏。
  • 输入验证。 数据集ID、版本、版本和维度名称根据严格的字符集进行验证([A-Za-z0-9._-],最多100个字符),在发出请求之前,每个路径/查询值都经过URL编码。维度值也可以是单个通配符 *.
  • 有限的反应。 观察结果有上限(用 truncated 标志和总计数),以避免淹没模型的上下文。

许可证

麻省理工学院——见 LICENSE.


免责声明 这个项目是 非官方的 并且没有得到英国国家统计局的认可。数据使用仍受ONS条款和开放政府许可证的约束。