mcpbeat Sign in

Eurostat MCP Server

answering

Eurostat MCP Server is answering right now. Last checked 10 min ago. 706 installs a week from npm. It exposes 8 tools. Last commit 3 Nov 2026.

Search and query the Eurostat catalogue — EU economy, demography, trade, and NUTS regional data.

Installs per day peak 257 · avg 64 · -20% w/w
a month agotoday
Uptime history 91 days of history · worst day 90%
91 days agonow
100.0%
Uptime 24h
91 of 91 checks
8
Tools
read from the server
576 ms
Response time
average over 24h
706
Installs / week
npm and PyPI

What changed 64

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 22 August 2026. No other catalogue keeps this.

3 Nov 2 tools changed the parameters they ask for eurostat_download_dataset, eurostat_search_datasets
3 Nov a tool changed version
3 Nov a tool description was rewritten eurostat_download_dataset
31 Oct 2 tools changed the parameters they ask for eurostat_download_dataset, eurostat_query_dataset
31 Oct a tool changed version
26 Oct 4 tools changed the parameters they ask for eurostat_browse_themes, eurostat_download_dataset, eurostat_get_dimension_values and 1 more
26 Oct 3 tool descriptions were rewritten eurostat_dataframe_query, eurostat_get_dimension_values, eurostat_query_dataset
26 Oct a tool changed version
23 Oct 3 tools changed the parameters they ask for eurostat_download_dataset, eurostat_query_dataset, eurostat_search_datasets
23 Oct 2 tool descriptions were rewritten eurostat_dataframe_query, eurostat_download_dataset
and 44 more, back to 22 August 2026

What the code does

We read the source, 4 d ago · tools taken from the live server · rules 995398eba69f

Capabilities

What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.

                    ? `search all ${formatCount(staged.stagedRowCount)} values, staged as table "${staged.tableName}" on canvas "${staged.canvasId}", with eurostat_dataframe_query (e.g. SELECT code, label FROM ${staged.tableName} WHERE label ILIKE '%term%').`

Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.

This code can reach further than it looks

We found places where it runs commands, builds paths or queries from values it is given. None of that is a flaw by itself — it becomes one when the code changes, and code changes quietly between releases. We re-read it on every one.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 10 min ago.

run in your terminal
claude mcp add eurostat-mcp-server --transport http https://eurostat.caseyjhand.com/mcp
Settings → Connectors → Add custom connector, then paste this address
https://eurostat.caseyjhand.com/mcp
~/.codex/config.toml
[mcp_servers.eurostat-mcp-server]
url = "https://eurostat.caseyjhand.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "eurostat-mcp-server": {
      "url": "https://eurostat.caseyjhand.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "eurostat-mcp-server": {
      "type": "http",
      "url": "https://eurostat.caseyjhand.com/mcp"
    }
  }
}

Available tools 8

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

eurostat
eurostat_browse_themes
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 structured discovery when you know the domain but not the dataset code, or to drill down from a broad topic to a specific dataset. Pair with eurostat_search_datasets for keyword-based discovery. The tree is the dissemination table of contents plus the Comext host's DS-* collections: detailed trade under ext_go_detail (inside ext_go, "International trade in goods") and PRODCOM under prom (inside icts, "Industry, trade and services"). A collection on neither, such as the legacy PRODCOM DS-056120, is not disseminated and appears nowhere in the tree.
eurostat_dataframe_describe
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_dataset response that reported a staged table. Three tools stage tables, and they write different columns, so read the columns reported here rather than assuming. The two observation stagers keep every column flat: eurostat_query_dataset gives each dimension a code column named after the dimension (e.g. "geo") plus a label companion (e.g. "geo_label"); eurostat_download_dataset gives code columns only — the bulk endpoint carries no labels — plus a "time" column. Both write the same five measure columns — obs_value, obs_flag, obs_flag_label, conf_status, conf_status_label — carrying the same codes for the same observation, so their tables join on dimension codes and time and compare like with like. A table staged from a DS-* dataset (Comext detailed trade, PRODCOM) adds obs_value_text, holding a value Eurostat published as text, such as a PRODCOM quantity unit. eurostat_get_dimension_values, given a canvas_id, stages one dimension's value list as two columns, code and label, which labels a download's code column through a join (e.g. d.geo = g.code).
eurostat_dataframe_query
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 SELECT runs: statement chaining, non-SELECT verbs, and functions reading files or external data are rejected. Columns are flat: dimension codes, obs_value, obs_flag / obs_flag_label, and conf_status / conf_status_label. Tables eurostat_query_dataset staged also carry dimension _label companions; DS-* tables also carry obs_value_text for published text values. Join observation tables on dimension codes and time. A staged dimension value list has code and label columns; join it to an observation dimension code to add labels. Returns every complete row the canvas supplies, bounded only by the canvas row limit; nested cells render as lossless JSON. A row-limit cut sets truncated and adds a notice: page the same deterministic SELECT over unchanged tables with a total ORDER BY and LIMIT/OFFSET, advancing by actual rowCount. Restart an unordered first page sorted at offset zero; tied keys need tie-breakers. Volatile SQL and changing or expired tables cannot provide stable paging.
eurostat_download_dataset
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 body eurostat_query_dataset reads, so it reaches datasets that would otherwise time out, and it is expanded here into one row per non-blank TSV cell, including the unflagged ":" cells that mark a period a series lacks or a period of a frequency it has no observation of. Filters take the same dimension-code map eurostat_query_dataset uses and are applied server-side by Eurostat; call eurostat_get_dataset_info first for the dimension codes and eurostat_get_dimension_values for their values. Narrow with since_period/until_period rather than asking for the most recent N periods — the TSV layout keeps a column for every period whichever is requested, so a period range is what actually shrinks the response. Transfers are bounded by a decoded-byte budget enforced while streaming: complete rows within the allowed prefix are retained with budgetExceeded set; a budget too small for a usable row fails as byte_budget_exceeded with narrowing guidance. Only preview_limit rows come back inline. When a table is staged, call eurostat_dataframe_describe first to confirm its columns, then eurostat_dataframe_query; without a canvas, rows past the preview are not retained.
eurostat_get_dataset_info
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_download_dataset builds its positional filter key from this dimension list, so a filter naming a dimension absent here is rejected outright. Returns up to 10 sample values per dimension for orientation; use eurostat_get_dimension_values to list the full set for large dimensions. A DS-* code (detailed trade and PRODCOM, in any case) is read from the Comext dissemination host, which reports no period coverage or observation count, so timeRange and obsCount come back unreported; the first call on a large Comext collection downloads its full structure (23 MB for DS-045409) and takes longer, and repeat calls within the hour reuse it.
eurostat_get_dimension_values
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, then case-insensitively; TIME_PERIOD aliases time. For geo, use geo_level to select the NUTS hierarchy (country, nuts1, nuts2, nuts3). To find codes in a long list, pass filter: words its code or label contains. Pages default to 25 values, maximum 1,000; pass nextCursor back as cursor for the next page with the same dataset, dimension, geo level and filter. Canonical and alias dimension spellings resume the same list. Pass canvas_id on the first call to also stage every value as a two-column code/label table, regardless of filter or limit. Inspect that table with eurostat_dataframe_describe, then search or join it with eurostat_dataframe_query.
eurostat_query_dataset
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 confidentiality marker (e.g., "C" = confidential, which is usually why a value is null). preview_limit controls only that prefix; filters and period controls reduce the matched result itself. Call eurostat_get_dataset_info first to discover valid dimension codes and values. Apply filters to keep the result set manageable — large unfiltered queries may trigger an async response error. Use filters.geo for specific country/region codes, or geo_level for NUTS hierarchy filtering (mutually exclusive). Use last_n_periods for the N most recent dataset time positions without knowing the end date; a notice names selected periods with no populated cells for the slice. Set stage=true to stage the whole match at any size on a canvas-enabled deployment; matches above 5,000 observations stage automatically. Call eurostat_dataframe_describe first, then eurostat_dataframe_query. When the target is a whole dataset rather than a slice, eurostat_download_dataset reads the SDMX bulk endpoint instead and is the cheaper route.
eurostat_search_datasets
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_download_dataset for the whole of one. Results are limited to datasets and predefined tables — folders are excluded. The catalogue joins two sources: the dissemination table of contents, and the Comext host's dataflow list, which adds the DS-* collections — detailed trade by CN8, HS, SITC, BEC and CPA, and PRODCOM — filed under "International trade in goods - detailed data (Comext)" and "Statistics on the production of manufactured goods (PRODCOM)". Comext entries report a last-update date but no period coverage or observation count. A collection on neither list, such as the legacy PRODCOM DS-056120, is not disseminated and cannot be reached through this server.

Endpoints

URLTransportStateLatencyChecked
https://eurostat.caseyjhand.com/mcp streamable-http answering 581 ms 10 min ago

Alternatives to Eurostat MCP Server

same job, measured the same way
US Census Bureau Data
by taru0208

Query US Census Bureau data: demographics, economics, and housing statistics.

answering
Icebox MCP
by mrfentmen

Query the Icebox Diamonds & Watches catalog: search diamond jewelry and watches.

138 installs/wk local only
Peakdesign MCP
by mrfentmen

Query the Peak Design catalog: search bags and camera gear, newest arrivals.

103 installs/wk local only
Earth Search
by pipeworx-io

Sentinel and Landsat imagery catalogue from Element 84's Earth Search over the AWS Open Data…

253 installs/wk 47 tools answering
Softwear Prints
by softwear-prints

Search the Softwear Prints catalogue of workwear, teamwear and promotional items.

4 tools answering
The Company Atlas
by indotender

Global customs trade data and company registry. Search shipments, and look up legal entities.

answering
ContexteTech
by contexte-tech

Search and load AI datasets, prompts and few-shot contexts from the ContexteTech catalogue.

241 installs/wk 6 tools answering
WASM Arcade
by wasmarcade

Search the WASM Arcade game catalogue and return game links and availability.

answering

Eurostat MCP Server — questions

Answers built from our own checks of this server.

What can Eurostat MCP Server do?
It exposes 8 tools, read directly from the server on our last check. Among them: eurostat_browse_themes, eurostat_dataframe_describe, eurostat_dataframe_query, eurostat_download_dataset, eurostat_get_dataset_info, eurostat_get_dimension_values and 2 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Eurostat MCP Server working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 576 ms. The bar chart above shows every period we have measured.
How do I connect Eurostat MCP Server?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Eurostat MCP Server need an API key?
No. Eurostat MCP Server completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 8 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Eurostat MCP Server?
It answers our handshake in 576 ms on average, which is faster than 19% of all working MCP servers we measure. That is on the slow side — worth knowing if the tool sits inside an interactive loop. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use Eurostat MCP Server?
The npm package @cyanheads/eurostat-mcp-server was installed 706 times in the last week. Week over week that is -20%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Eurostat MCP Server open source?
The code is open source: it is published under the Apache-2.0 licence, written in TypeScript, 9 stars on GitHub and 9 open issues. The licence covers the code in the repository, not the hosted service at eurostat.caseyjhand.com, which runs on its operator's own terms.