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 syncMet 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 - 见 许可证.
