
Eurostat Mcp Server
Wraps the Eurostat Statistics and TOC APIs to make 8,933 EU datasets searchable and queryable through MCP. You get five tools: keyword search across the catalogue, theme tree navigation, dataset metadata inspection, dimension value enumeration, and filtered data queries with NUTS geo-level support. The query tool decodes JSON-stat 2.0 responses into labeled observations and catches Eurostat's async-response warnings before they silently fail. Useful when you need programmatic access to EU economy, demography, trade, or regional statistics without manually navigating the web interface or writing your own API client. Ships with a public hosted instance at eurostat.caseyjhand.com and runs locally via stdio or HTTP.
- GitHub stars
- 9
- tools
- 8
- transport
- STDIO, HTTP
- env vars
- 20
- last updated
- Nov 8, 2026
Install
From registry metadata$ npx add-mcp https://eurostat.caseyjhand.com/mcp --name eurostatRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http eurostat https://eurostat.caseyjhand.com/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 8 toolsVerified live against the running server on Nov 6, 2026.
eurostat_search_datasetsSearch the Eurostat catalogue by keyword. Returns matching datasets with codes, descriptions, period coverage, and theme breadcrumbs. Use this to discover dataset codes before calling eurostat_get_dataset_info, then eurostat_query_dataset for a slice of a dataset or eurostat_d...3 params
Search the Eurostat catalogue by keyword. Returns matching datasets with codes, descriptions, period coverage, and theme breadcrumbs. Use this to discover dataset codes before calling eurostat_get_dataset_info, then eurostat_query_dataset for a slice of a dataset or eurostat_d...
cursorstringlimitnumberquery*stringeurostat_browse_themesNavigate the Eurostat theme tree. Without theme_code returns the top-level theme folders (Economy, Population, Transport, etc.) — the practical starting points. With a theme_code returns its immediate children: subtheme folders and datasets in that branch. Use this for structu...1 params
Navigate the Eurostat theme tree. Without theme_code returns the top-level theme folders (Economy, Population, Transport, etc.) — the practical starting points. With a theme_code returns its immediate children: subtheme folders and datasets in that branch. Use this for structu...
theme_codestringeurostat_get_dataset_infoFetch metadata for a Eurostat dataset: dimensions with valid values, time range, observation count, and last-update date. Call this before eurostat_query_dataset or eurostat_download_dataset to discover what dimension codes are valid (unit, na_item, geo, etc.); eurostat_downlo...1 params
Fetch metadata for a Eurostat dataset: dimensions with valid values, time range, observation count, and last-update date. Call this before eurostat_query_dataset or eurostat_download_dataset to discover what dimension codes are valid (unit, na_item, geo, etc.); eurostat_downlo...
dataset_code*stringeurostat_get_dimension_valuesList the valid values for a dimension in a Eurostat dataset, preserving value codes and labels exactly. Use this when eurostat_get_dataset_info returns more values than its sample, or to confirm exact filter codes before querying. Dimension identifiers match exactly first, the...7 params
List the valid values for a dimension in a Eurostat dataset, preserving value codes and labels exactly. Use this when eurostat_get_dataset_info returns more values than its sample, or to confirm exact filter codes before querying. Dimension identifiers match exactly first, the...
canvas_idstringcursorstringdataset_code*stringdimension*stringfilterstringgeo_levelstringaggregate · country · nuts1 · nuts2 · nuts3limitnumbereurostat_query_datasetFetch statistical data from a Eurostat dataset with dimension filters. Returns a deterministic inline prefix of decoded observations with dimension codes and labels, numeric values, an OBS_FLAG status (e.g., "p" = provisional, "e" = estimated) and a separate CONF_STATUS confid...10 params
Fetch statistical data from a Eurostat dataset with dimension filters. Returns a deterministic inline prefix of decoded observations with dimension codes and labels, numeric values, an OBS_FLAG status (e.g., "p" = provisional, "e" = estimated) and a separate CONF_STATUS confid...
canvas_idstringdataset_code*stringfiltersobjectgeo_levelstringaggregate · country · nuts1 · nuts2 · nuts3langstringEN · FR · DEdefault: ENlast_n_periodsnumberpreview_limitnumbersince_periodstringstagebooleanuntil_periodstringeurostat_download_datasetDownload a Eurostat dataset in bulk through the SDMX 2.1 TSV endpoint and stage it as a SQL table on the dataframe canvas — the route to a whole dataset, where eurostat_query_dataset is the route to a slice of one. The TSV wire format is roughly half the bytes of the JSON-stat...6 params
Download a Eurostat dataset in bulk through the SDMX 2.1 TSV endpoint and stage it as a SQL table on the dataframe canvas — the route to a whole dataset, where eurostat_query_dataset is the route to a slice of one. The TSV wire format is roughly half the bytes of the JSON-stat...
canvas_idstringdataset_code*stringfiltersobjectpreview_limitnumbersince_periodstringuntil_periodstringeurostat_dataframe_describeList the tables staged on a Eurostat dataframe canvas, with their row counts and column names and types. Call this before eurostat_dataframe_query to learn the table and column names to write SQL against. The canvas_id comes from a eurostat_query_dataset or eurostat_download_d...1 params
List the tables staged on a Eurostat dataframe canvas, with their row counts and column names and types. Call this before eurostat_dataframe_query to learn the table and column names to write SQL against. The canvas_id comes from a eurostat_query_dataset or eurostat_download_d...
canvas_id*stringeurostat_dataframe_queryRun a read-only SQL SELECT against tables staged on a Eurostat dataframe canvas, reaching observations beyond an inline preview and aggregating or joining tables without re-fetching Eurostat. Call eurostat_dataframe_describe first for table and column names. Only a single SELE...2 params
Run a read-only SQL SELECT against tables staged on a Eurostat dataframe canvas, reaching observations beyond an inline preview and aggregating or joining tables without re-fetching Eurostat. Call eurostat_dataframe_describe first for table and column names. Only a single SELE...
canvas_id*stringsql*stringSponsors
Configuration
EUROSTAT_CLAMP_LIMITSdefault: trueClamp positive integer preview/search/dimension limits to 500/100/1000 with a notice. False restores schemas rejecting over-cap inputs.
MCP_LOG_LEVELdefault: infoSets the minimum log level for output (e.g., 'debug', 'info', 'warn').
EUROSTAT_BASE_URLdefault: https://ec.europa.eu/eurostat/api/disseminationEurostat API base URL. Override when using a mirror or proxy.
EUROSTAT_COMEXT_BASE_URLdefault: https://ec.europa.eu/eurostat/api/comext/disseminationBase 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_MSdefault: 30000Total allowance for one Eurostat request across retries, backoff and body consumption, in milliseconds.
EUROSTAT_METADATA_TIMEOUT_MSdefault: 120000Total allowance for one dataset's SDMX dataflow structure across retries, backoff and body consumption, in milliseconds. Defaults to 120000; separate from EUROSTAT_REQUEST_TIMEOUT_MS for large structures.
EUROSTAT_TOC_CACHE_TTL_MSdefault: 43200000How long a fetched catalogue TOC stays usable before the next catalogue call refreshes it, in milliseconds. Defaults to 12 hours.
EUROSTAT_BULK_TIMEOUT_MSdefault: 120000Total allowance for one eurostat_download_dataset transfer across request retries, backoff and streaming body consumption, and for each download that builds the dimension value index, in milliseconds. Defaults to 120000.
EUROSTAT_BULK_MAX_BYTESdefault: 52428800Byte 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_TYPEdefault: duckdbDataframe canvas backend. The default, 'duckdb', lists eurostat_dataframe_describe and eurostat_dataframe_query, stages query matches with stage=true or above 5,000 observations, and retains bulk downloads beyond their previews. Set to 'none' to disable the canvas and those tools
CANVAS_TEMP_PATHParent 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_MSdefault: 86400000Sliding lifetime of a staged dataframe canvas in milliseconds; every call against it extends the window. Defaults to 24 hours.
CANVAS_DEFAULT_ROW_LIMITdefault: 10000Maximum complete rows a single eurostat_dataframe_query returns before reporting truncated.
EUROSTAT_DATAFRAME_DROP_ENABLEDdefault: falseSet 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. Has no effect with CANVAS_PROVIDER_TYPE=n
MCP_TRANSPORT_TYPEdefault: httpSelects the HTTP transport.
MCP_HTTP_HOSTdefault: 127.0.0.1The hostname for the HTTP server.
MCP_HTTP_PORTdefault: 3010The port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHdefault: /mcpThe endpoint path for the MCP server.
MCP_PUBLIC_URLPublic origin override for deployments behind a TLS-terminating reverse proxy (e.g. https://mcp.example.com).
MCP_AUTH_MODEdefault: noneAuthentication mode to use: 'none', 'jwt', or 'oauth'.
Readme
@cyanheads/eurostat-mcp-server
Search and query the Eurostat catalogue — EU economy, demography, trade, health, and NUTS regional data via MCP. STDIO or Streamable HTTP.
Details
- Repository
- github.com/cyanheads/eurostat-mcp-server
- Categories
- Search & Web Crawling, Data & Analytics
- Package
@cyanheads/eurostat-mcp-server- Transport
- STDIO, HTTP
- Registry
- MCP registry, active
- Resources
- 1
- Tools verified
- Nov 6, 2026
More from cyanheads
- Open Meteo Mcp Server13
- Pubchem Mcp Server13
- Gutenberg Mcp Server6
- Libofcongress Mcp Server6
- Orcid Mcp Server6
- Protein Mcp Server6
- Wikipedia Mcp Server6
- Cdc Health Mcp Server5
- Usaspending Mcp Server5
- Openstreetmap Mcp Server9
- Biorxiv Mcp Server4
- Brapi Mcp Server4
- Courtlistener Mcp Server4
- Crossref Mcp Server4
- Internet Archive Mcp Server4
- Met Museum Mcp Server4
- Noaa Spaceweather Mcp Server4
- Openfda Mcp Server4
- Openlibrary Mcp Server4
- Un Comtrade Mcp Server4
- Aviation Weather Mcp Server3
- Devops Status Mcp Server3
- Earthquake Mcp Server3
- Eia Energy Mcp Server3