开放数据查询服务器

一个用于访问和查询CBS开放数据API的Model Context Protocol服务器,支持AI助手直接获取和过滤统计数据。

  • by Tdh25
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Tdh25/cbs-open-data_mcp

使用说明

CBS开放数据MCP服务器

一个 模型上下文协议(MCP) 服务器为 CBS开放数据OData API.

它允许人工智能助手(GitHub Copilot,Claude Desktop等)直接检索,过滤和探索CBS统计数据。

可用工具

工具 描述
query_datasets 使用OData过滤按标题或描述搜索数据集
get_dataset_info 获取特定数据集的元数据。
get_dimensions 获取数据集的尺寸及其标签值。
get_dimension_values 获取特定维度的所有值。
get_measure_codes 获取测量定义(可用的测量列)
get_observations 通过自动分页和标签分辨率捕捉所有观察结果。
query_observations 对观测的高级 OData 查询
get_catalogs 获取所有可用的CBS目录
get_metadata 将 EDM 元数据架构获取为 XML

要求

  • Python 3.10 或更高版本
  • 紫外线 (推荐)或pip

安装

UV(推荐)

git clone https://github.com/TdH25/cbs-open-data-mcp.git
cd cbs-open-data-mcp
uv sync

Met pip

git clone https://github.com/TdH25/cbs-open-data-mcp.git
cd cbs-open-data-mcp
pip install httpx "mcp>=0.9.1"

配置 MCP 服务器

VS代码(GitHub副本)

添加以下内容 .vscode/mcp.json 在您的工作区(或使用随附的文件):

{
  "servers": {
    "cbs-open-data": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "run",
        "--no-project",
        "--isolated",
        "--link-mode=copy",
        "--with", "mcp",
        "--with", "httpx",
        "python",
        "-m", "src.cbs_open_data_mcp_server"
      ]
    }
  }
}

克劳德桌面

添加以下内容 claude_desktop_config.json:

{
  "mcpServers": {
    "cbs-open-data": {
      "command": "uv",
      "args": [
        "run",
        "--directory", "/pad/naar/cbs-open-data-mcp",
        "python",
        "-m", "src.cbs_open_data_mcp_server"
      ]
    }
  }
}

或者先安装软件包(pip install . 的 uv sync然后直接使用附带的命令:

{
  "mcpServers": {
    "cbs-open-data": {
      "command": "cbs-open-data-mcp"
    }
  }
}

在聊天中使用

安装后,您可以立即使用它:在Copilot Chat或Claude中询问有关CBS统计的问题。人工智能可以自行选择正确的工具和方法,这要归功于随附的副驾驶员指令。

示例提示 :

  • “CBS拥有哪些天然气消费数据集?”
  • “从03759ned(最近一年,总计)中获取每个省份的居民,并将其显示为表格。
  • “在图表中显示过去5年每个行业的二氧化碳排放量。
  • “在新的笔记本电脑中获取80030ned数据集,并使用plotly在堆叠区域图中绘制每个能源载体的年总电力产量。

已知的限制

  • SSL 验证已禁用 CBS API 在标准 CA 捆绑中遇到证书问题。 verify=False 是默认设置的。
  • Trage API — CBS OData API 响应缓慢;超时为60秒,重试3次。
  • resolve_labels 标签分辨率创建N+2个额外的API调用(N=维度数)。对于大型数据集,这可能是明显的。

测试

uv run python -m unittest tests.test_cbs_open_data_client -v

相关项目

mcp-cbs-数字-开放数据 由 David Stotijn 开发 — 使用 Go 编写的 CBS Open Data API 的 MCP 服务器。该项目是以Python独立开发的,包括自动分页,标签分辨率和测量定义支持。

许可证

MIT - 见 许可证.