Eurostat MCP Server
by cyanheadsio.github.cyanheads/eurostat-mcp-serverv0.9.0
Search and query the Eurostat catalogue — EU economy, demography, trade, and NUTS regional data.
context tax
queued
security
queued
cold start
queued
freshness
Active6d ago
Install Eurostat MCP server
Install in Claude Code
claude mcp add eurostat-cyanheads -- npx -y @cyanheads/eurostat-mcp-serverInstall in Cursor
{
"mcpServers": {
"eurostat-cyanheads": {
"command": "npx",
"args": [
"-y",
"@cyanheads/eurostat-mcp-server"
]
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).
Install in Claude Desktop
{
"mcpServers": {
"eurostat-cyanheads": {
"command": "npx",
"args": [
"-y",
"@cyanheads/eurostat-mcp-server"
]
}
}
}Settings → Developer → Edit Config (claude_desktop_config.json), then restart.
Install in VS Code
{
"servers": {
"eurostat-cyanheads": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/eurostat-mcp-server"
]
}
}
}Add to .vscode/mcp.json in your workspace.
Install in Windsurf
{
"mcpServers": {
"eurostat-cyanheads": {
"command": "npx",
"args": [
"-y",
"@cyanheads/eurostat-mcp-server"
]
}
}
}Add to ~/.codeium/windsurf/mcp_config.json.
Configuration
| Variable | Required | Secret | Description |
|---|---|---|---|
| MCP_LOG_LEVEL | — | — | Sets the minimum log level for output (e.g., 'debug', 'info', 'warn'). |
| EUROSTAT_BASE_URL | — | — | Eurostat API base URL. Override when using a mirror or proxy. |
| EUROSTAT_COMEXT_BASE_URL | — | — | Base URL of the Comext dissemination host, which serves every DS-* dataset code (detailed trade and PRODCOM). Override when using a mirror or proxy. |
| EUROSTAT_REQUEST_TIMEOUT_MS | — | — | HTTP request timeout in milliseconds for Eurostat API calls. |
| EUROSTAT_METADATA_TIMEOUT_MS | — | — | HTTP timeout for one dataset's SDMX dataflow structure, in milliseconds. Held separate from EUROSTAT_REQUEST_TIMEOUT_MS because the structure carries a label for every code the dataset uses: 23 MB, uncompressed, for DS-045409. Defaults to 2 minutes. |
| EUROSTAT_TOC_CACHE_TTL_MS | — | — | How long a fetched catalogue TOC stays usable before the next catalogue call refreshes it, in milliseconds. Defaults to 12 hours. |
| EUROSTAT_BULK_TIMEOUT_MS | — | — | HTTP timeout for one eurostat_download_dataset transfer, in milliseconds. Held separate from EUROSTAT_REQUEST_TIMEOUT_MS because a bulk body streams for minutes where a metadata call answers in seconds. Defaults to 2 minutes. |
| EUROSTAT_BULK_MAX_BYTES | — | — | Byte budget for one eurostat_download_dataset transfer, counted on the decoded TSV rather than on the wire. Eurostat sends the body chunked with no Content-Length, so the budget is enforced while streaming and the transfer is aborted when it is reached. Defaults to 50 MiB. |
| CANVAS_PROVIDER_TYPE | — | — | Set to 'duckdb' to enable the dataframe canvas, which lists the eurostat_dataframe_describe and eurostat_dataframe_query tools, lets eurostat_query_dataset stage a match larger than its 5,000-row inline cap as a SQL table, and lets eurostat_download_dataset retain a whole bulk download instead of only its inline preview. The DuckDB binding ships with the server, so this variable is the only switch. |
| CANVAS_TEMP_PATH | — | — | Parent directory for DuckDB canvas spill files: a private 'mcp-canvas-XXXXXX' directory is created inside it, so it must be writable by the server process. Defaults to the OS temp directory. |
| CANVAS_TTL_MS | — | — | Sliding lifetime of a staged dataframe canvas in milliseconds; every call against it extends the window. Defaults to 24 hours. |
| CANVAS_DEFAULT_ROW_LIMIT | — | — | Maximum rows a single eurostat_dataframe_query returns before the result is reported as truncated. |
| EUROSTAT_DATAFRAME_DROP_ENABLED | — | — | Set to 'true' to list eurostat_dataframe_drop, which removes one staged table from a dataframe canvas and leaves its other tables in place. Off by default because a drop cannot be undone; staged tables expire with their canvas either way. Takes effect only with CANVAS_PROVIDER_TYPE=duckdb. |
| MCP_TRANSPORT_TYPE | — | — | Selects the HTTP transport. |
| MCP_HTTP_HOST | — | — | The hostname for the HTTP server. |
| MCP_HTTP_PORT | — | — | The port to run the HTTP server on. |
| MCP_HTTP_ENDPOINT_PATH | — | — | The endpoint path for the MCP server. |
| MCP_PUBLIC_URL | — | — | Public origin override for deployments behind a TLS-terminating reverse proxy (e.g. https://mcp.example.com). |
| MCP_AUTH_MODE | — | — | Authentication mode to use: 'none', 'jwt', or 'oauth'. |
Remote endpoints
- streamable-http
https://eurostat.caseyjhand.com/mcp
Freshness
Active — last maintenance signal 6d ago. The newest of the signals below sets the band.
Last commit (default branch)
2026-10-04 · 6d ago · GitHub
Latest release
2026-10-04 · 6d ago · GitHub · v0.9.0
Package published
no data · npm/PyPI
Registry entry updated
2026-10-04 · 6d ago · official registry · v0.9.0
FAQ
›How do I install the Eurostat MCP server in Claude Code?
Run: claude mcp add eurostat-cyanheads -- npx -y @cyanheads/eurostat-mcp-server. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does Eurostat require an API key?
No required environment variables are declared in its published metadata.
›Can I use Eurostat as a remote (hosted) MCP server?
Yes — it offers both a hosted endpoint and a local stdio package.
›Is Eurostat in the official MCP registry?
Yes, as io.github.cyanheads/eurostat-mcp-server.