# @cyanheads/eurostat-mcp-server 中文文档

规范地址：https://npmcn.com/package/%40cyanheads/eurostat-mcp-server/

版本：0\.11\.3
npm 元数据更新时间：2026-11-08T19:38:02.155Z
中文译文更新时间：2026-11-11T10:00:25.382Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cyanheads/eurostat-mcp-server
原文对照：https://npmcn.com/package/%40cyanheads/eurostat-mcp-server/?lang=original
项目主页：https://github.com/cyanheads/eurostat-mcp-server#readme
源码仓库：https://github.com/cyanheads/eurostat-mcp-server

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.1 MB，183 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24\.0\.0
- 运行依赖：4 个
- 首次发布：2026-05-23T18:11:55.314Z
- 最新版本发布：2026-11-08T19:38:02.020Z
- 近 30 天下载量：2297（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：36（近 12 个月 36 个）

## 中文简介

通过MCP搜索和查询欧统局的目录——欧盟经济、人口、贸易、卫生和NUTS区域数据。 (原始内容存档于2012-10-12). STIO or Streamable HTTP.

## 安装

```sh
npm install @cyanheads/eurostat-mcp-server
```

也可以使用：`pnpm add @cyanheads/eurostat-mcp-server`、`yarn add @cyanheads/eurostat-mcp-server`、`bun add @cyanheads/eurostat-mcp-server`

## README

# @ cyanheads/ eurostat- mcp- 服务器

**通过MCP搜索和查询欧统局的目录——欧盟经济、人口、贸易、卫生和NUTS区域数据。 (原始内容存档于2012-10-12). STIO or Streamable HTTP.**

6个工具(最多9个有数据框)

[![Version](https://img.shields.io/badge/Version-0.11.3-blue.svg?style=flat-square)](https://npmcn.com/package/%40cyanheads/eurostat-mcp-server/CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](https://npmcn.com/package/%40cyanheads/eurostat-mcp-server/LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/eurostat-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-%5E2.4.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/eurostat-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/eurostat-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-%5E7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.4.4-blueviolet.svg?style=flat-square)](https://bun.sh/)

[![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/cyanheads/eurostat-mcp-server/releases/latest/download/eurostat-mcp-server.mcpb) [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=eurostat-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvZXVyb3N0YXQtbWNwLXNlcnZlciJdfQ==) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22eurostat-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Feurostat-mcp-server%22%5D%7D)

[![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)

**公共主机服务器 :** [https://eurostat.caseyjhand.com/mcp 页面存档备份,存于互联网档案馆](https://eurostat.caseyjhand.com/mcp)

* * *

## 概览

欧统局提供的欧盟统计数据:经济、人口、贸易、卫生和NUTS区域数据,包括详细的Comext贸易和PRODCOM工业生产。 搜索或浏览目录,检查一个数据集的维度,然后查询一个切片或批量下载整件事.

### 工具

三个 `eurostat_dataframe_*` 工具需要数据框架画布,数据框架是默认的,然后关闭 `CANVAS_PROVIDER_TYPE=none`· ; `eurostat_dataframe_drop` 需求 `EUROSTAT_DATAFRAME_DROP_ENABLED=true`。 。 。 .

| 工具 | 说明 |
| :-- | :-- |
| `eurostat_search_datasets` | 按关键词搜索欧统局目录——返回代码、说明、期间覆盖范围和主题面包屑 |
| `eurostat_browse_themes` | 导航欧统局主题等级结构——列出根主题或钻入分主题和数据集 |
| `eurostat_get_dataset_info` | 获取数据集元数据: 有样本值、 时间范围、 观察计数和最后更新日期的维度 |
| `eurostat_get_dimension_values` | 列出一个数据集维度的所有有效代码,页码,包括代码/标签单词过滤器、代码前缀过滤器和NUTS结构过滤器 `geo` |
| `eurostat_query_dataset` | 获取带有维度过滤器、 NUTS 地理级别和时程控制的解码观测的边框预览 |
| `eurostat_download_dataset` | 通过SDMX散装端点下载一个完整的数据集,并在数据框上分出一行 |
| `eurostat_dataframe_describe` | 列出数据框帆布上排列的表格,包括行数和列类型 |
| `eurostat_dataframe_query` | 运行一个仅读取的 SQL SELECT 跨级表格 |
| `eurostat_dataframe_drop` | 从一个数据框架帆布中删除一个已分级的表格,将其其他表格留在原地(可选入) |

### 资源

| 资源 | 说明 |
| :-- | :-- |
| `eurostat://dataset/{dataset_code}` | 由URI提供的数据集元数据(dimensions,时间范围,观测计数,最后更新) |
| `skill://eurostat-guide/SKILL.md` | 统计比较门、标识出处和SQL分析工作流程 |

同一元数据可通过 `eurostat_get_dataset_info` 仅供工具客户端使用.

### 代理技能

[欧洲统计指南](https://npmcn.com/package/%40cyanheads/eurostat-mcp-server/skills/eurostat-guide/SKILL.md) 涵盖国家和区域的比较、汇总、数据缺失解释以及SQL在分阶段观测之后加入。 它装有插件、npm、Docker和MCPB安装,并在MCP上安装 `skill://eurostat-guide/SKILL.md`; 支持 SQL 的例子包含在技能下 `references/` 目录.

## 能力参考

### `eurostat_search_datasets` 工具

-   `query` 各个数据集的标签、主题面包屑和代码的字词均按不敏感大小写排列,而忽略了相距(`Rev.2` 发现 `Rev. 2`) (中文(简体) ). 匹配按单词的出处排序:包含查询的标签为从一个单词开头的短语,然后是包含每个单词的标签或代码,然后是仅包含主题面包屑,每组按内容表顺序排列. 当没有数据集持有每个单词时,会再次搜索一个最多有10个不同单词的查询,每个缺失单词也匹配它开始一个词的英语标签中其中一个数据集的维度值(`pharmacist` 发现 `Pharmacists`, (中文(简体) ), `med_spec=PHARM`) (中文(简体) ). `limit` 是一个正整数(默认为 20),用通知夹住到 100。 路过一页 `nextCursor` 恢复为 `cursor`; 光标调用忽略 `limit`
-   成果 `code`, (中文(简体) ), `label`, (中文(简体) ), `type` (单位:千美元)`dataset` 编号 : `table`),覆盖期, `obsCount`, (中文(简体) ), `lastUpdated`,以及 `themePath`,与 `totalMatches` 每个页面。 通过维度值标签找到一行 `matchedValues` (单位:千美元)`dimension`, (中文(简体) ), `code`, (中文(简体) ), `label`; 代码是过滤器 `eurostat_query_dataset` 答复中包含: `notice`失败 `no_match` (将删除后发现匹配的单词命名,或者在无数据的情况下,将匹配无数据集的单词命名,检查前32个不同的单词;它还注明了尺寸值标签没有被搜索的时候,因为其索引没有加载,或者查询有10个以上的单词), `invalid_cursor`,或可重试 `upstream_fault` 当没有装入目录,欧统局的目录无法到达时
-   如果无法装入 Comext 数据流列表,则结果随附 `comextListMissing` (单位:千美元) `notice`; 无法刷新的目录 `catalogueLoadedAt`

* * *

### `eurostat_browse_themes` 工具

-   奥米 `theme_code` 用于顶级主题文件夹; 为其近代子通过文件夹代码。 代码首先解决,然后对案件不敏感。 Comext的藏书放在下面 `ext_go_detail` (详细贸易情况 `ext_go`和 `prom` (PRODCOM, 于 `icts`(中文(简体) )
-   项目携带 `code`, (中文(简体) ), `label`, (中文(简体) ), `type` (单位:千美元)`folder` 编号 : `dataset` 编号 : `table`),以及 `hasChildren`,带有 `parentPath` 面包屑和 `otherPlacements` 对于在多个分支中存档的文件夹; 失败 `not_found` 对于一个未知代码, `not_a_folder` 用于数据集或表格代码,或可重试 `upstream_fault` 当没有装入目录,欧统局的目录无法到达时
-   如果无法装入Comext数据流列表, `ext_go` 财务报告和审定财务报表 `icts` 携带 `comextListMissing` (单位:千美元) `notice`; 无法刷新的目录 `catalogueLoadedAt`

* * *

### `eurostat_get_dataset_info` 工具

-   一个 `dataset_code`; 以 `valuesCount` 不超过10个 `sampleValues`附加时 `timeRange`, (中文(简体) ), `obsCount`, (中文(简体) ), `lastUpdated`和无害环境管理 `metadataUrl`
-   失败作为 `not_found` 用于未知数据集,或 `upstream_fault` 当欧统局返回一个结构时,服务器无法读取( 当端点倒下时可重试)

* * *

### `eurostat_get_dimension_values` 工具

-   `dataset_code` 加号 `dimension`,准确先解决,然后对案件不敏感(`TIME_PERIOD` 别名 `time`; 返回的值代码和标签保持不变。 对于 `geo`, (中文(简体) ), `geo_level` 选择 NUTS 级别(`aggregate`, (中文(简体) ), `country` 默认, `nuts1`, (中文(简体) ), `nuts2`, (中文(简体) ), `nuts3`) (中文(简体) ). `filter` 保留其代码和标签包含每个给定单词的值,忽略大小写和重音(`palma frankfurt` 发现 `DE_EDDF_ES_LEPA`(三); `code_prefix` 保留其代码始于文字的值,忽略大小写( q)`geo_level` `nuts2` 与 `DE` 列出德国NUTS 2区域。 两者在呼叫前适用,并计入 `matchCount`
-   `limit` 默认为25个,并带有通知夹到1000个。 页面包含许多值, 结尾更少, 有 `totalCount` 完整列表; 包含更多的页面 `truncated`, (中文(简体) ), `nextCursor` (通过回作为 `cursor`页:1 `notice`继续保留有效计数,忽略新的 `limit`; 较旧的光标大于 1 000 , 并随披露而正常化为 1 000 。 失败作为 `not_found`, (中文(简体) ), `no_results`, (中文(简体) ), `conflicting_params`, (中文(简体) ), `invalid_cursor`, (中文(简体) ), `upstream_fault` (在终点倒下时可重复),或 `canvas_not_found`
-   `canvas_id` 将维度的完整列表作为 `code` 编号 : `label` 表格 (单位:千美元)`canvasId` 编号 : `tableName` 编号 : `stagedRowCount`随便 `filter`, (中文(简体) ), `code_prefix` 或者说 `limit` 说,它通过一个加入来标记下载的代码列;它从不启动自己的画布. A 类 `geo` 表格添加一个 `level` 列(无 NUTS 级别代码的 NULL),并且,不 `geo_level`,将每个级别、总量和区域与所包含国家重叠:过滤器 `level` 加入或聚合之前

* * *

### `eurostat_query_dataset` 工具

-   `dataset_code` 加号 `filters` (单位:千美元)`{dimension_code: [values]}`, (中文(简体) ), `geo_level`,则 `since_period` 编号 : `until_period` (单位:千美元)`2020`, (中文(简体) ), `2020-Q1`, (中文(简体) ), `2020-01`下至 `YYYY-Wnn` 财务报告和审定财务报表 `YYYY-Dnnn`)或(或) `last_n_periods`· ; `preview_limit` 是一个正整数(默认为25),在通知后被夹到500; `lang` 实值 `EN`, (中文(简体) ), `FR`,或 `DE`
-   欧统局代码中没有 `+` 或者说 `.`: 过滤值持有 `+` 被拆分为单独的值,读作 OR(`["DE+FR"]` 实值 `["DE", "FR"]`(掌声) `.` 保留一个与无匹配的值。 在选定期间无单元格的有效值不贡献行,以及 `emptyValues` 说吧
-   `stage: true` 在可用帆布上分阶段进行整个匹配,无论大小; 重复使用 `canvas_id` 或者省略它来创建一个。 没有它,自动启动开始 超过5 000个观测. `truncated` 仍然说明这一门槛值; `tableName` 确定一个分阶段的结果。 Canvas 故障部署显示,没有明确的集结请求是不存在的
-   `last_n_periods` 计数数据集时间位置,其中可以包括没有人间单元格的期间。 整个比赛(截至最新24次,略去一个计数)的通知名称缺口,并通知一个更大的N(一个频率的准确名称),或 a `since_period`– 说吧 –`until_period` 区域以单元格结束于切片的最近周期,只有在每段时间与该周期相接时
-   欧统局只保留全部内期 `since_period`– 说吧 –`until_period`每个频率。 通知中列出了约束期和包含该期限的约束期。 一天的范围外出为 `time=<date>`,因为欧统局忽略了一天的界限
-   每个观测每个维度都带有代码/标签对,一个无效 `value`, (中文(简体) ), `status` (OBS FLAG),以及 `confStatus` (CONF STATUS) (中文(简体) ); `obsCount`, (中文(简体) ), `missingObsCount`, (中文(简体) ), `absentCellCount` (在每一频段内,从第一个频段到最近一个频段都缺少对应的序列;这些序列不是观测,从不进行) `timeRange` 覆盖整个比赛。 通知名称的周期超过这个期限. `truncated` 超过5 000项观察, `unmatchedValues` 名称过滤值不匹配,以及 `emptyValues` 名称值数据集有,但此匹配没有单元格( under `geo_level`,该级别的所有代码均无)
-   失败作为 `not_found`, (中文(简体) ), `no_results` (将未匹配的值命名为其维度的有效代码,或当值超过 25 时进行值搜索,无值的时段,为什么选定范围没有时段,或 `geo_level` 欧统局的答复只字不提, `invalid_dimension` (将每个不是维度的过滤键命名,数据集的维度按密钥顺序排列), `invalid_period`, (中文(简体) ), `conflicting_params`,不可重试 `async_response` 对于一个太大的查询 服务, `retry_deadline_exceeded` 当统计API未在请求期限内完成查询时, `canvas_not_found`,或可重试 `upstream_fault` 当统计 API 下降时

* * *

### `eurostat_download_dataset` 工具

-   `dataset_code` 加上同样的 `filters` 地图和 `since_period` 编号 : `until_period` (无) `last_n_periods`: TSV 保持一列每段时间, 除非一个范围缩小它); `preview_limit` 是一个正整数( 默认 25), 并附加通知后夹入到 500
-   完全内在的规则及其通知也在这里适用。 当天和下一天的一天范围请求,之后一天的栏被删除,然后再计算或放映
-   每个非空白的 TSV 单元格为一行。 无效行 `obs_value` 没有旗帜、状态或文字(未标记) `:`)不是一个观察:这是系列缺少的时期,是系列没有观测到的(混合频率片段的粘贴)频率的时期,或者是任何被下载行有观察的周期之前或之后的一段时间,其中通知名称
-   `filters` 遵循查询工具的规则:一个值持有 `+` 被拆分为单独的值(OR),和一个持有 `.` 以 `invalid_dimension` 由于欧统局的代码中没有包含任何代码, 在选定期间没有观测值的有效值不添加行,以及 `emptyValues` 名称( 当 `budgetExceeded` 事实)
-   回返 `rowCount` (以 `totalCount`, (中文(简体) ), `missingCount`, (中文(简体) ), `absentCellCount` (未加标记的行在序列所带频率的期间,在该频率从第一个周期到最近一个周期内,并在任何下载的行中进行观察), `periodRange` (由有数值、旗帜、状态或文字的行所组成),和 `bytesRead` 整个下载; 失败 `not_found`, (中文(简体) ), `invalid_dimension`, (中文(简体) ), `invalid_period`, (中文(简体) ), `filter_arity`,不可重试 `async_queued` 或者说 `extraction_too_big`, (中文(简体) ), `no_results`, (中文(简体) ), `upstream_fault` (在SDMX终点下降时可重复), `retry_deadline_exceeded` 当转移超过时 `EUROSTAT_BULK_TIMEOUT_MS` 或过滤后下载结构读取超过请求最后期限,或 `canvas_not_found`
-   这个 `EUROSTAT_BULK_MAX_BYTES` 预算( 默认 50 MiB 解码) 在允许的前缀中保留完整的行并返回 `budgetExceeded: true`。对于一个完整的标题和可用的行,预算太小,因为 `byte_budget_exceeded`,并设置了限制和缩小指导. `bytesRead` 已接受的已解码字节数, 不超过预算数; 已丢弃不完整的后行数 .

* * *

### `eurostat_dataframe_describe` 工具

-   `canvas_id` ; 列出每个表格的 `name`, (中文(简体) ), `rowCount`键入的列,以及 `expiresAt` (滑动) `CANVAS_TTL_MS`,默认为 24h;失败为 `canvas_not_found` 或者说 `canvas_disabled`
-   列取决于中转工具 : `eurostat_query_dataset` 写代码和代码 `_label` 每个维, `eurostat_download_dataset` 仅加码 `time` (双方共享 `obs_*` 财务报告和审定财务报表 `conf_status*` 措施),以及 `eurostat_get_dimension_values` 写入 `code` 财务报告和审定财务报表 `label` (单位:千美元) `level` 页:1 `geo`(中文(简体) )

* * *

### `eurostat_dataframe_query` 工具

-   一个只读 `SELECT` 每个调用; 链式语句、 其他动词和读取文件或外部数据的函数被拒绝
-   回返 `columns`, (中文(简体) ), `rows`, (中文(简体) ), `rowCount`布尔 `truncated`。帆布提供的每行都完好无损地返回,最多不超过 `CANVAS_DEFAULT_ROW_LIMIT` (违约10,000)。 单元格渲染为无损失的JSON,包括嵌入和引出字符串;64位整数以字符串形式来. 失败作为 `missing_table`, (中文(简体) ), `canvas_not_found`,或 `canvas_disabled`
-   一个剪接集 `truncated: true` 并增加一个通知。 页: 1 `ORDER BY` (需要解开口), `LIMIT` 财务报告和审定财务报表 `OFFSET`; 按实际 `rowCount`。重新启动一个最初未排序的结果,排序为相抵零。 波动 SQL 和变化或过期的表格不能提供稳定的呼号

* * *

### `eurostat_dataframe_drop` 工具

-   `canvas_id` 加号 `table_name`,与 `eurostat_dataframe_describe` 列表; 删除一个表格,并保留画布和其他表格。 仅在 `EUROSTAT_DATAFRAME_DROP_ENABLED=true` 设置在画布旁边
-   回返 `canvasId`, (中文(简体) ), `tableName`, (中文(简体) ), `dropped`,以及 `expiresAt`· ; `dropped` 实值 `false`,带有 `notice`所以重复一滴就安全了 失败作为 `canvas_not_found`, (中文(简体) ), `identifier_reserved`,或 `canvas_disabled`

* * *

### `eurostat://dataset/{dataset_code}` 资源

-   有效载荷与 `eurostat_get_dataset_info`,返回为 `application/json`; 失败的读取方式相同 `reason` 和复原提示 `retryable` 在停产时
-   `dataset_code` 来自 `eurostat_search_datasets` 或者说 `eurostat_browse_themes`

## 特征

建造在 [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): stdio和可流式的 HTTP 传输器,可插接式(`none` 编号 : `jwt` 编号 : `oauth`),可互换存储(`in-memory`, (中文(简体) ), `filesystem`, (中文(简体) ), `Supabase`, (中文(简体) ), `Cloudflare KV/R2/D1`),结构化记录,可选择的OpenTeleometry tracking.

欧统局:

-   切片的统计API(JSON-stat 2.0),整个数据集的SDMX 2.1 TSV批量端点,大约为字节的一半,目录TOC被缓存了12个小时
-   Comext 主机的游戏 `DS-*` 通过同样的工具收集资料(由CN8、HS、SITC、BEC和CPA以及PRODCOM进行的详细贸易)。 过滤每个请求, `freq` 由于贸易流动是年度系列和月系列的混合 `TOTAL`, (中文(简体) ), `EU27_2020`,以及 `EXT_EU27_2020` 与其成员进行合并时的双重计算。 PRODCOM 文本值到达 `valueText` 编号 : `obs_value_text`
-   NUTS的地平层过滤(`aggregate` 编号 : `country` 编号 : `nuts1` 编号 : `nuts2` 编号 : `nuts3`),并将 OBS FLAG和CONF STATUS解码为单独的字段
-   太大的到服务器的回复作为不可重审的回复回来 `async_response`, (中文(简体) ), `extraction_too_big`,或 `async_queued` 指定要过滤的维度的错误
-   查询方式 `stage: true`,超过5000个观测结果的匹配,或任何批量下载都作为SQL表进行(`canvasId` 编号 : `tableName` 编号 : `stagedRowCount`)在 DuckDB 数据帧画布上,默认为上. 这个 `.mcpb` 将本地 DuckDB 绑定并运行 `CANVAS_PROVIDER_TYPE=none`,所以SQL分析器需要npm,Docker,或者从源安装

方便代理输出 :

-   已打入错误合同:每一次宣布的失败都带有 `reason` (单位:千美元) `recovery.hint` 命名下一个要调用的工具
-   下一步提示 : `eurostat_search_datasets` 财务报告和审定财务报表 `eurostat_browse_themes` 返回 a `nextStep` 指着后续电话
-   未知保留未知:计算和时限 欧统局不报告(`obsCount`, (中文(简体) ), `timeRange.start` 编号 : `end`, (中文(简体) ), `lastUpdated`) 被省略而不是去除零
-   有效克瑞回声: `appliedFilters` 打开 `eurostat_query_dataset` 财务报告和审定财务报表 `appliedQuery` (用SDMX表示) `url`继续 `eurostat_download_dataset`外加一个 `notice` 当预览省略行

## 开始

连接到主机实例 :

```sh
claude mcp add --transport http eurostat-mcp-server https://eurostat.caseyjhand.com/mcp
```

或者在当地运行它:

```sh
claude mcp add eurostat-mcp-server -- npx -y @cyanheads/eurostat-mcp-server
```

对于其他客户端,请将此添加到 MCP 配置文件中 :

```json
{
  "mcpServers": {
    "eurostat-mcp-server": {
      "command": "npx",
      "args": ["-y", "@cyanheads/eurostat-mcp-server"]
    }
  }
}
```

不需要 API 密钥 。 对于 Docker 或源构建,请参见 [运行服务器](https://npmcn.com/package/%40cyanheads/eurostat-mcp-server/#readme-running-the-server)。 。 。 .

## 配置

| 变量 | 说明 | 默认 |
| :-- | :-- | :-- |
| `EUROSTAT_BASE_URL` | 欧统局API基础URL. | `https://ec.europa.eu/eurostat/api/dissemination` |
| `EUROSTAT_COMEXT_BASE_URL` | 通信传播主机,服务于 `DS-*` 数据集代码(详细贸易和PRODCOM). | `https://ec.europa.eu/eurostat/api/comext/dissemination` |
| `EUROSTAT_REQUEST_TIMEOUT_MS` | 一项请求的备抵总额,包括复试、退后和身体读取,以毫秒计. | `30000` |
| `EUROSTAT_METADATA_TIMEOUT_MS` | 用于一个数据集的SDMX数据流结构的总允许量,包括复刻、倒接和正文读取,以毫秒计. | `120000` (2分钟) |
| `EUROSTAT_TOC_CACHE_TTL_MS` | 目录 TOC 缓存寿命,以ms为单位. | `43200000` (12小时) |
| `EUROSTAT_BULK_TIMEOUT_MS` | 一次批量转移的总允许量,包括请求重试、回放和流出,以及每一次建立尺寸值指数的下载,以毫秒计. | `120000` (2分钟) |
| `EUROSTAT_BULK_MAX_BYTES` | 一个批量下载的字节预算. | `52428800` (50个米B) |
| `CANVAS_PROVIDER_TYPE` | 数据框架画布后端; `none` 禁用画布及其工具。 这个 `.mcpb` 捆绑集 `none`。 。 。 . | `duckdb` |
| `CANVAS_TTL_MS` | 滑动的一生 舞台画布,以ms为单位. | `86400000` (24小时) |
| `CANVAS_DEFAULT_ROW_LIMIT` | 最大完成一行 `eurostat_dataframe_query` 报告前返回 `truncated`。 。 。 . | `10000` |
| `EUROSTAT_CLAMP_LIMITS` | 粘接正整数预览/搜索/分解限制为500/100/1000,并附有通知. `false` 恢复拒绝超额输入的策略;零,负数,分数和非数字输入总是被拒绝. 每个夹口日志一次并递增 `eurostat.limit_clamps`,用工具标出标签. | `true` |
| `EUROSTAT_DATAFRAME_DROP_ENABLED` | `true` 列表 `eurostat_dataframe_drop`; 无效果 `CANVAS_PROVIDER_TYPE=none`。 。 。 . | `false` |
| `MCP_TRANSPORT_TYPE` | 运输: `stdio` 或者说 `http`。 。 。 . | `stdio` |
| `MCP_HTTP_PORT` | HTTP 服务器端口. | `3010` |
| `MCP_SESSION_MODE` | HTTP 会话模式 : `stateless`, (中文(简体) ), `stateful`,或 `auto`。服务器宣布 `stateless`; 一组值将覆盖它. | `stateless` |
| `MCP_AUTH_MODE` | 认证 : `none`, (中文(简体) ), `jwt`,或 `oauth`。 。 。 . | `none` |
| `MCP_LOG_LEVEL` | 日志级别 (`debug`, (中文(简体) ), `info`, (中文(简体) ), `warning`, (中文(简体) ), `error`(见A/C.5/49/70,附件)。 Docker 图像集 `info`。 。 。 . | `debug` |
| `LOGS_DIR` | 日志文件目录(只有Node.js). | `<project-root>/logs` |
| `LOG_TOOL_FAILURE_PAYLOADS` | 记录每个工具调用失败的参数和结果,按密钥名称编辑并封顶 `LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES` (默认) `16384`) (中文(简体) ). 自由形式值内部的秘密不编辑 . | `false` |
| `STORAGE_PROVIDER_TYPE` | 存储后端 : `in-memory`, (中文(简体) ), `filesystem`, (中文(简体) ), `supabase`, (中文(简体) ), `cloudflare-kv/r2/d1`。 。 。 . | `in-memory` |
| `OTEL_ENABLED` | 启用 [打开几何](https://github.com/cyanheads/mcp-ts-core/tree/main/docs/telemetry)。 。 。 . | `false` |

见 [`.env.example`](https://npmcn.com/package/%40cyanheads/eurostat-mcp-server/.env.example) 用于完整可选覆盖列表.

## 运行服务器

### 地方发展

要求数 [Bun v 1.4.4 (单位:千美元)](https://bun.sh/) 或更高(或Node.js v24+).

```sh
git clone https://github.com/cyanheads/eurostat-mcp-server.git
cd eurostat-mcp-server && bun install
cp .env.example .env # optional; every setting has a default
```

-   **构建和运行制作版本**数字 :
    
    ```sh
    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:http
    # or
    bun run start:stdio
    ```
    
-   **运行检查和测试**数字 :
    
    ```sh
    bun run devcheck  # Lints, formats, type-checks, and more
    bun run test      # Runs the test suite
    bun run lint:mcp  # Validates MCP definitions against spec
    ```
    

### 夹克

```sh
docker run --rm -p 3010:3010 ghcr.io/cyanheads/eurostat-mcp-server:latest
```

图像默认为 HTTP 传输、 无国籍会话模式和日志到 `/var/log/eurostat-mcp-server`。用于 stdio, 使用 `docker run -i --rm -e MCP_TRANSPORT_TYPE=stdio ghcr.io/cyanheads/eurostat-mcp-server:latest`。通过 `docker build -t eurostat-mcp-server .`; OpenTeleometry 端点依赖性默认安装——用 `--build-arg OTEL_ENABLED=false` 以略去它们.

## 项目结构

| 目录 | 目的 |
| :-- | :-- |
| `src/index.ts` | `createApp()` 入站点——注册工具与资源,inits服务,打开画布上的数据框工具和自旗上放出的工具. |
| `src/mcp-server/tools` | 工具定义`*.tool.ts`) (中文(简体) ). 6个发现和数据工具,外加3个被画布标出的数据框工具,其中1个是选入. |
| `src/mcp-server/resources` | 资源定义。 数据集元数据资源. |
| `src/services/eurostat-catalogue` | 目录服务——获取并解析了欧统局TOC,将Comext数据流列表合并入其中,并构建维度值指数搜索回落到(元数据库代码,代码列表标签),并带有TTL所绑入的内嵌缓存. |
| `src/services/eurostat-data` | API统计服务——SDMX元数据解析每集缓存,JSON-stat 2.0解码,ASync-Resign检测,画布行源. |
| `src/services/eurostat-bulk` | SDMX 2.1 TSV批量服务——流出下载,字节预算,SOAP断层映射,画布行源. |
| `src/services/eurostat-codelists.ts` | OBS FLAG和CONF STATUS代码列表,测量栏名均由艺人编写,并有文本值解码器. |
| `src/services/eurostat-hosts.ts` | 哪个主机服务于数据集代码 : `DS-*` 给Comext主机, 其他一切给主机. |
| `src/services/canvas-accessor.ts` | 可选 DataCanvas 的访问器和获得的帮助画布-触摸工具共享 . |
| `src/services/shared-load.ts` | 让我们同时呼叫者等待一个共享下载,所以一个呼叫者的取消只释放那个呼叫者. |
| `src/config` | 服务器特定环境变量与Zod解析并验证. |
| `skills/` | 已出版Eurotat-guide和SQL参考文献,服务于MCP之上并包含在安装包中. |
| `tests/` | 单位和综合测试,反映 `src/` 结构. |

## 发展指南

见 [`CLAUDE.md`](https://npmcn.com/package/%40cyanheads/eurostat-mcp-server/CLAUDE.md) 发展准则和建筑规则。 简本:

-   搬运工投掷,框架渔获量——否 `try/catch` 在工具逻辑中
-   使用 `ctx.log` 用于伐木, `ctx.state` 用于存储
-   登记册中的新工具和资源 `createApp()` 数组在 `src/index.ts`
-   环绕外部 API 调用: 验证 生 → 规范到域类型 → 返回输出计划; 永远不要编织缺失的字段

## 捐款

问题值得欢迎。 提交前进行检查和测试:

```sh
bun run devcheck
bun run test
```

## 许可证

这个项目根据Apache 2.0许可证获得许可. 见 [自由主义](https://npmcn.com/package/%40cyanheads/eurostat-mcp-server/LICENSE) 详细文件.

## 常见问题

### @cyanheads/eurostat-mcp-server 是什么？

通过MCP搜索和查询欧统局的目录——欧盟经济、人口、贸易、卫生和NUTS区域数据。 \(原始内容存档于2012-10-12\)\. STIO or Streamable HTTP\.

### 如何安装 @cyanheads/eurostat-mcp-server？

在项目目录运行 npm install @cyanheads/eurostat-mcp-server，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 eurostat-mcp-server，可以用 npx eurostat-mcp-server 直接运行。

### @cyanheads/eurostat-mcp-server 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @cyanheads/eurostat-mcp-server 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @cyanheads/eurostat-mcp-server 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @cyanheads/eurostat-mcp-server 可以商用吗？

@cyanheads/eurostat-mcp-server 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @cyanheads/eurostat-mcp-server 的下载量有多少？

根据 npm 官方下载统计，@cyanheads/eurostat-mcp-server 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,297 次，日均约 77 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @cyanheads/eurostat-mcp-server 还在维护吗？

最新版本 0\.11\.3 发布于 2026/11/09（2 天前）；至今共发布 36 个版本，其中过去 12 个月发布了 36 个；首次发布于 2026/05/24。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

