Search and query 8,933 Eurostat datasets β EU economy, demography, trade, and NUTS regional data.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Search and query the Eurostat catalogue β EU economy, demography, trade, health, and NUTS regional data via MCP. STDIO or Streamable HTTP.
Public Hosted Server: https://eurostat.caseyjhand.com/mcp
6 tools for discovering and querying Eurostat statistical datasets, plus 2 more when the optional dataframe canvas is enabled:
| Tool | Description |
|---|---|
eurostat_search_datasets | Search the Eurostat catalogue by keyword β returns codes, descriptions, period coverage, and theme breadcrumbs |
eurostat_browse_themes | Navigate the Eurostat theme hierarchy β list root themes or drill into subthemes and datasets |
eurostat_get_dataset_info | Fetch metadata for a dataset: dimensions with sample values, time range, observation count, and last-update date |
eurostat_get_dimension_values | List all valid codes for a specific dimension (e.g., all geo codes, all unit codes); supports NUTS hierarchy filtering |
eurostat_query_dataset | Fetch a deterministic preview of decoded statistical observations with dimension filters, NUTS geo-level, and time-range controls |
eurostat_download_dataset | Download a whole dataset through the SDMX 2.1 TSV bulk endpoint and stage every observation on the dataframe canvas |
eurostat_dataframe_describe | List the tables staged on a dataframe canvas with their row counts and column types β canvas only |
eurostat_dataframe_query | Run a read-only SQL SELECT across staged tables β canvas only |
eurostat_search_datasetsSearch the Eurostat dataset catalogue by keyword.
totalMatches and page slots count unique query targetslimit (1β100, default 20) sets the page size, totalMatches reports the full count, and passing the returned nextCursor back as cursor pages through every match over a stable order. Cursors are bound to their originating query and catalogue snapshot β reusing one with a different query, or after the catalogue refreshes, returns invalid_cursor instead of a silently shifted pagenextStep hint on each result points at the next tool to callEUROSTAT_TOC_CACHE_TTL_MS), then refreshed on the next calleurostat_browse_themes for structured domain exploration when keywords are uncleareurostat_browse_themesNavigate the Eurostat theme tree.
theme_code: returns the top-level themes (Economy and finance, Population, Transport, etc.)theme_code: returns immediate children β subtheme folders and datasets in that branchnextStep hint suited to the level (drill into folders or inspect a dataset)otherPlacements names those so the ambiguity is visibleeurostat_get_dataset_infoFetch metadata for a Eurostat dataset before querying it.
time β is described from the full dataset-available value set rather than from a populated observation sliceeurostat_get_dimension_values for the full listeurostat_get_dimension_valuesList all valid values for a specific dataset dimension.
unit, na_item, geo, time, etc.) from the same SDMX content constraint used by dataset metadatageo dimension, supports NUTS hierarchy filtering: aggregate (EU/EA totals), country (the default when omitted), nuts1, nuts2, and nuts3. The response reports the effective level; an empty level is no_results, not a claim that the dataset is missing. Pairing geo_level with any other dimension is rejected rather than ignoredeurostat_query_dataset return nothing without error; verify codes here firsteurostat_query_datasetFetch statistical data from a Eurostat dataset.
{dimension_code: [value1, value2, ...]}aggregate, country, nuts1, nuts2, nuts3) β mutually exclusive with a non-empty geo entry in filters; an empty array is treated as no filter and droppedsince_period/until_period (e.g., "2020", "2023-Q1") or last_n_periods for the N most recentpreview_limit controls the deterministic inline prefix (default 50, max 500). It does not change the match, totals, period coverage, or staged rows; filters and period controls reduce the match itself. There is deliberately no cursor or offsetOBS_FLAG status (p = provisional, e = estimated, etc.) and a separate CONF_STATUS confidentiality marker (C = confidential, usually the reason a value is null)obsCount, missingObsCount, and timeRange always describe the full match. truncated is independent of preview_limit and is true only when the match crosses the 5,000-observation staging thresholdcanvasId / tableName / stagedRowCount; matches at or below 5,000 are never staged. The rows stream into the table one at a time from the response body already in memory, so nothing extra is fetched and the match is never materialized as an array. Call eurostat_dataframe_describe before eurostat_dataframe_query. Without a canvas those fields and tool guidance are absent, and narrowing the query is the way to the restcanvas_id from an earlier response to stage several results side by side and join across themeurostat_download_dataset reads the SDMX bulk endpoint instead, at roughly half the byteseurostat_download_datasetDownload a whole dataset through the SDMX 2.1 TSV bulk endpoint (/sdmx/2.1/data/{dataset}?format=TSV).
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/eurostat-mcp-server-2)<a href="https://allmcps.com/mcp/eurostat-mcp-server-2"><img src="https://allmcps.com/api/badge/eurostat-mcp-server-2?style=directory" alt="Eurostat MCP Server on AllMCPs" /></a>