mcp csu
MCP服务器 捷克统计局 (CZSO/CZSO) DataStat API。让人工智能助手直接访问有关捷克共和国的700多个统计数据集,包括人口、经济、价格、工资、就业、工业、农业、贸易、旅游、环境等。
单个Python文件。无需克隆,只需 uvx mcp-csu.
特性
- 完整目录访问权限 --搜索、浏览和检查所有700多个数据集和1500多个预定义表
- 数据检索 --以CSV格式获取统计数据,使用完整上下文查询单个值
- AI优化输出 --元数据为人类可读文本,数据为CSV,行数自动截断
- 速率限制 --内置并发控制(3个并行请求)和最小请求间隔(150ms)
- 缓存 --目录列表在内存中缓存10分钟,以避免冗余请求
- 无身份验证 -DataStat API是公共的
先决条件
- 紫外线 (Python包运行器)
就是这样。Python和所有依赖项都由 uv.
配置
克劳德代码
添加 ~/.claude/settings.json:
{
"mcpServers": {
"csu": {
"command": "uvx",
"args": ["mcp-csu"]
}
}
}克劳德桌面
添加 claude_desktop_config.json:
{
"mcpServers": {
"csu": {
"command": "uvx",
"args": ["mcp-csu"]
}
}
}任何MCP客户端
服务器使用 标准 传输(默认)。启动命令:
uvx mcp-csu数据模型
DataStat数据库具有层次结构:
Dataset (sada) e.g. CEN0101H — "Míra inflace"
├── Dimensions (dimenze) e.g. CasR (years), Uz0 (territory)
│ └── Items (položky) e.g. "2024", "CZ"
├── Indicators (ukazatele) e.g. 6134J06 — "Průměrná roční míra inflace"
└── Selections (výběry) e.g. CEN0101HT01 — "Průměrná roční míra inflace"
└── CSV data pre-configured table ready to fetch数据集 包含原始多维数据。每个数据集都有 维度 (时间、地区、类别)和 指标 (测量的内容)。
选择 是预定义的视图——具有固定维度排列的数据集的特定切片。它们是获取数据的最简单方法。
工具
发现
search_datasets
在所有数据集中进行全文搜索。返回数据集代码、名称、时间段类型和区域级别。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | string | yes | 搜索关键字(推荐捷克语) |
search_datasets("inflace")
→ Found 3 dataset(s):
WCEN01 (v4) — Index spotřebitelských cen (indexy, míra inflace)
WCEN01M (v1) — Index spotřebitelských cen — měsíční data
CEN0101H (v1) — Míra inflacesearch_selections
在所有预定义的数据表中进行全文搜索。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | string | yes | 搜索关键字(推荐捷克语) |
search_selections("mzdy")
→ Found 30 selection(s):
MZDQ1T1 — Průměrný evidenční počet zaměstnanců a průměrné hrubé měsíční mzdy...
Period: Čtvrtletí | Territory: Stát | Dataset: MZDQ1list_datasets
所有数据集的分页列表。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
offset | int | 0 | 跳过前N个项目 |
limit | int | 30 | 每页最多100个项目 |
list_selections
所有预定义表的分页列表。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
offset | int | 0 | 跳过前N个项目 |
limit | int | 30 | 每页最多100个项目 |
探索
get_dataset
完整的数据集元数据:包含项目计数的维度、包含定义的指标、关键字、更新频率。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
dataset_code | string | yes | 数据集代码(例如。 CEN0101H) |
get_dataset("CEN0101H")
→ Dataset: CEN0101H (v1)
Name: Míra inflace
Keywords: míra inflace
Update frequency: MONTHLY
Dimensions (4):
CasM — Měsíce (720 items)
CasR — Roky (61 items)
CASRMX — Měsíce, roky (780 items)
Uz0 — Území (1 items)
Indicators (4):
6134J09 — Přírůstek průměrného ročního indexu spotřebitelských cen - měsíční
6134J06 — Průměrná roční míra inflace
...get_dataset_selections
列出特定数据集的预定义数据表。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
dataset_code | string | yes | 数据集代码 |
get_dataset_selections("CEN0101H")
→ Selections for CEN0101H (2):
CEN0101HT01 — Průměrná roční míra inflace
Period: Rok | Territory: Stát
CEN0101HT02 — Míra inflace - měsíční
Period: Měsíc | Territory: Státget_dimension_items
获取维度的所有可能值。支持层次级过滤和分页。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dimension_code | string | -- | 来自的维度代码 get_dataset() |
level | string | null | 按层次结构级别筛选(例如。 STAT, KRAJ, OKRES) |
offset | int | 0 | 跳过前N个项目 |
limit | int | 50 | 每页最多200个项目 |
get_dimension_items("UZ023H2U", level="KRAJ")
→ Dimension UZ023H2U — 14 item(s) at level KRAJ:
CZ010 — Hlavní město Praha (Capital City Prague) [KRAJ]
CZ020 — Středočeský kraj (Central Bohemian Region) [KRAJ]
CZ031 — Jihočeský kraj (South Bohemian Region) [KRAJ]
...get_indicator
指标定义和显示格式。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
indicator_code | string | yes | 指示器代码来自 get_dataset() |
数据检索
get_selection_data
主要数据访问工具。 从预定义的选择中获取CSV数据。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
selection_code | string | -- | 选择代码(例如。 CEN0101HT01) |
max_rows | int | 100 | 最大数据行数。0=无限制 |
get_selection_data("CEN0101HT01", max_rows=5)
→ "Ukazatel","Území","Roky","Hodnota"
"Průměrná roční míra inflace","Česko","2025","2.5"
"Průměrná roční míra inflace","Česko","2024","2.4"
"Průměrná roční míra inflace","Česko","2023","10.7"
"Průměrná roční míra inflace","Česko","2022","15.1"
"Průměrná roční míra inflace","Česko","2021","3.8"
[Showing 5 of 29 rows. Use max_rows=0 for all data or max_rows=10 to see more.]get_value
检索单个特定值。最精确的查询--返回一个带有完整上下文(指标名称、维度标签、发布日期)的数字。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dataset_code | string | -- | 数据集代码 |
indicator_code | string | -- | 指标代码 |
dimension_codes | list\[str\] | -- | 按顺序排列的维度代码 |
item_codes | list\[str\] | -- | 与尺寸匹配的项目代码 |
version | string | null | 数据集版本(如果省略,则为最新版本) |
get_value("RSO01", "3971b",
["CasR", "TYPPROSJED", "UZ023H2U"],
["2023", "501", "CZ"])
→ Value: 6 258
Indicator: Počet územních jednotek
Roky: 2023
Typ prostorové jednotky: Obec
ČR, kraje, okresy: Česko
Published: 2024-04-30T07:00:00Zcustom_query
对数据集执行任意数据查询。返回CSV。
这是一个高级工具——首选 get_selection_data() 当存在合适的预定义表时。自定义查询API对正确的维度放置和层次结构级别筛选敏感。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dataset_code | string | -- | 数据集代码 |
dataset_version | string | -- | 版本来自 get_dataset() |
columns | list\[dict\] | -- | 列维度(每个需要 kodDimenze) |
rows | list\[dict\] | -- | 行维度 |
table_filters | list\[dict\] | null | 筛选维度 |
max_rows | int | 100 | 最大CSV行数 |
get_dataset_metadata
数据集内容统计:记录计数、时间范围、发布和更新时间戳。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
dataset_code | string | yes | 数据集代码 |
version | string | yes | 版本来自 get_dataset() |
用法示例
获取捷克通货膨胀率
1. search_datasets("inflace")
→ CEN0101H — Míra inflace
2. get_dataset_selections("CEN0101H")
→ CEN0101HT01 — Průměrná roční míra inflace
3. get_selection_data("CEN0101HT01")
→ CSV with annual inflation rates from 1994 to present按地区查找平均工资
1. search_selections("mzdy kraje")
→ MZDQ1T2 — ... dle krajů a regionů soudržnosti
2. get_selection_data("MZDQ1T2", max_rows=20)
→ CSV with wages by region获取2023年布拉格的确切人口
1. search_datasets("obyvatelstvo")
→ OBY01 — Obyvatelstvo podle pohlaví a věku
2. get_dataset("OBY01")
→ see dimensions and indicators
3. get_dimension_items("", level="KRAJ")
→ find Prague code
4. get_value("OBY01", "",
["", ""],
["2023", "
"])
→ exact value捷克语词汇搜索
数据库是捷克语的。常用搜索词:
| 捷克语 | 英语 | 示例数据集 |
|---|---|---|
| 人口 | 人口 | OBY01, OBY02 |
| mzdy | 工资 | MZDQ1,MZD01 |
| ceny | 价格 | CEN01、CEN02 |
| 通货膨胀 | 通货膨胀 | CEN0101H |
| HDP | GDP | NUC06R,NUC06Q |
| 失业率 | 失业率 | ZAM04 |
| 工业 | 行业 | PRU01 |
| 建筑 | STA01 | |
| 教育 | 教育 | VZD01 |
| 健康 | 健康 | ZDR01 |
| 农业 | 农业 | ZEM01 |
| 交通 | 运输 | DOP01 |
| 旅游 | 旅游 | CRU01 |
| 环境 | ZPR01 | |
| 刑事犯罪 | ||
| volby | 选举 | VOL01 |
| 住房 | BYT01 | |
| 外贸 | 外贸 | VZO01 |
技术细节
建筑
使用单文件Python服务器 FastMCP stdio传输框架。通过PEP 723内联脚本元数据管理依赖关系-- uv run 将它们自动安装到隔离环境中。
上游API
服务器封装了两个DataStat REST API:
| API | 基本URL | 用途 |
|---|---|---|
| 目录 | https://data.csu.gov.cz/api/katalog/v1 | 数据集/选择/维度/指标元数据 |
| 数据 | https://data.csu.gov.cz/api/dotaz/v1 | 数据检索(CSV、JSON-STAT) |
API文件:
速率限制
DataStat API没有记录速率限制,但服务器应用保守的节流:
- 最大并发请求数: 3(信号量)
- 最小请求间隔: 150ms(全局)
- 请求超时: 60秒
缓存
目录列表(list_datasets, list_selections)以10分钟TTL缓存在内存中。这些端点在每次调用时返回完整的目录(700–1500项),因为API忽略了分页参数-缓存避免了重复的大型传输。
输出格式化
- 元数据工具 返回带有清晰标签的结构化文本
- 数据工具 返回CSV(最紧凑、LLM友好的表格格式)
- 截断:默认情况下,数据响应限制为100行,并显示总计数。可通过以下方式调节
max_rows参数 - 语言:所有API回复均为捷克语(
Accept-Language: cs)
依赖项
| 包装 | 版本 | 用途 |
|---|---|---|
mcp | >=1.0.0 | MCP服务器框架(FastMCP) |
httpx | >=0.27.0 | 异步HTTP客户端 |
两者均由自动安装 uv run.
许可证
麻省理工学院
