ilostat-mcp-server
Server Details
Search ILOSTAT labour indicators, query and compare series, build country profiles, run SQL.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/ilostat-mcp-server
- GitHub Stars
- 1
- Server Listing
- ilostat-mcp-server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 8 tools
Each tool has a distinct role in a clear pipeline: search_indicators (discover) → describe_indicator (dataset metadata) → query_indicator/compare_geographies (values) → dataframe_describe/query (post-processing), with get_country_profile as a curated bundle and list_reference as the global code dictionary. The main friction points are describe_indicator vs list_reference (both enumerate codes) and query_indicator vs compare_geographies (both return values), but descriptions explicitly cross-reference each other and state the division of labor (dataset-specific vs ILOSTAT-wide, single-slice fetch vs multi-area comparison).
All names are snake_case with a uniform ilostat_ prefix, so scanning and grouping by prefix works perfectly. Minor deviation: most tools are verb_noun (describe_indicator, list_reference, query_indicator, search_indicators, get_country_profile, compare_geographies), but the two dataframe tools are noun_first (dataframe_describe, dataframe_query) rather than describe_dataframe/query_dataframe.
Eight tools sit comfortably in the ideal 3-15 range and each occupies a distinct stage of the discover → inspect → query → analyze workflow. Nothing feels redundant or missing at the structural level; even the metadata helpers (dataframe_describe) are required before the SQL tool works.
The surface covers the full lifecycle: catalog search, dataset documentation, reference/code lookup, filtered data retrieval, cross-geography comparison, a curated country profile, and SQL analysis over staged results with pagination and TTL handling. Gaps are minor — there is no way to list all datasets without a search term, no explicit dataframe/session cleanup or export tool, and no indicator-over-time trend comparison tool (only cross-area comparison), though query_indicator with a period range partly compensates.
Available Tools
8 toolsilostat_compare_geographiesCompare areas on an ILOSTAT datasetARead-onlyIdempotentInspect
Compare reference areas on one ILOSTAT dataset and one slice — a sex code plus breakdown codes, defaulting to the dataset's totals — giving each area's value at a common period or at its latest non-projected period, optional change over N years, and a rank, with each value's period, source, status, and basis (reported, modelled_estimate, or projection). A change carries the earlier value's source, basis, status, and notes, and flags whether the source or basis differs or the series breaks between the two values. Areas without a value are listed separately with the reason, and the response flags mixed periods and mixed bases rather than hiding them. Select areas by code list, by group (X01 for every country, an ILO region or subregion, or a World Bank income group), or both; X-coded aggregates require a dataset with aggregates.
Inputs: dataset_id (required), sex, sort, period, +7 more. Returns: cap, mode, rows, error, +15 more
ilostat_dataframe_describeDescribe staged ILOSTAT dataframesARead-onlyIdempotentInspect
Describe the df_ dataframes staged by ilostat_query_indicator and ilostat_compare_geographies or stored by ilostat_dataframe_query register_as: the tool and parameters that produced each, the datasets it holds (label, last update, and the unit with its measure, type, and multiplier — values stay in the published scale the multiplier names), coverage, basis counts, attribution, creation and expiry times, row count, and column schema. Pass name for one dataframe. Without it, every staged dataframe is listed, except on a deployment whose callers share one canvas, where listing is off and only the exact name works. Read the schema here before writing SQL for ilostat_dataframe_query.
Inputs: name. Returns: error, notice, dataframes
ilostat_dataframe_queryQuery staged ILOSTAT dataframesARead-onlyIdempotentInspect
Run a single-statement SELECT against the df_ dataframes staged by ilostat_query_indicator and ilostat_compare_geographies or stored by an earlier register_as. Inspect a dataframe with ilostat_dataframe_describe first; its column schema is what the SQL has to match. Read-only: writes, DDL, DROP, COPY, PRAGMA, ATTACH, file references, file-reading table functions, and functions that read engine settings or name a table from a string are rejected, and system catalogs (information_schema, pg_catalog, sqlite_master, duckdb_*) are denied. Breakdown versions overlap (AGE_YTHADULT_*, AGE_AGGREGATE_*, AGE_10YRBANDS_*, AGE_5YRBANDS_*; ECO_SECTOR_*, ECO_AGGREGATE_*, ECO_ISIC4_*, ECO_ISIC3_*), so filter to one version before summing. Optional register_as stores the result as a new dataframe with a fresh TTL.
Inputs: sql (required), preview, row_limit, register_as. Returns: cap, rows, error, shown, +9 more
ilostat_describe_indicatorDescribe an ILOSTAT datasetARead-onlyIdempotentInspect
Explain one ILOSTAT dataset before comparing numbers: its definition, unit and multiplier, frequency variants and coverage, the sex and breakdown codes in use across its frequencies (the total code of each breakdown marked), the reference areas it covers, whether it carries World/regional/income-group aggregates, and how its observations are classed as reported, modelled, or projected. Accepts a dataset ID (UNE_DEAP_SEX_AGE_RT_A) or a bare indicator code (UNE_DEAP_SEX_AGE_RT), which describes every frequency. An unknown code returns found: false with guidance.
Inputs: dataset_id (required). Returns: cap, unit, error, found, +22 more
ilostat_get_country_profileGet an ILOSTAT labour-market profileARead-onlyIdempotentInspect
Build a headline labour-market profile for one reference area: labour force participation, employment-to-population ratio, unemployment and youth unemployment rates, youth NEET rate, informal employment rate, employment level, labour income share, and working poverty rate. Each indicator shows its latest reported value (from a national or institutional source, with its source and notes) and, separately, its latest ILO modelled estimate that is not a projection, each with its dataset, period, and status — a missing reported value stays missing and is never filled from the model. Accepts a country (ISO3, e.g. KEN) or an X-coded aggregate (X01 World, regions, income groups), for which only modelled values exist.
Inputs: ref_area (required), sex. Returns: sex, error, notice, ref_area, +5 more
ilostat_list_referenceList ILOSTAT reference codesARead-onlyIdempotentInspect
Decode ILOSTAT's code vocabulary: reference areas (ISO3 countries and X-coded aggregates, with World Bank income group and ILO region), the groups that area_group accepts (X01 for every country, ILO regions and subregions, World Bank income groups; exact-code lookups list their member countries), databases, subjects, sex codes, breakdown codes for classif1/classif2 with their classification types, per-country data sources, observation status flags, note codes, and frequencies. Filter by text or look up exact codes; long topics page with a cursor. These are ILOSTAT-wide vocabularies; ilostat_describe_indicator lists the sex and breakdown codes one dataset actually uses.
Inputs: topic (required), codes, limit, cursor, +3 more. Returns: cap, error, shown, topic, +7 more
ilostat_query_indicatorQuery ILOSTAT observationsARead-onlyIdempotentInspect
Fetch observations for up to 3 ILOSTAT datasets per call, filtered by reference area or area group, sex, breakdown codes (classif1, classif2), source, and period; datasets past the first 3 come back as remaining_dataset_ids for another call. Rows keep their source, observation status, decoded notes, and a basis — reported, modelled_estimate, or projection — and the response echoes every filter applied, including the best-source default. Codes are checked against ILOSTAT's dictionaries before the request is sent: ilostat_list_reference lists valid codes and ilostat_describe_indicator lists the codes a dataset actually uses. A result larger than the inline preview is staged in full as a df_ dataframe for SQL through ilostat_dataframe_describe and ilostat_dataframe_query when this deployment enables dataframes. A request with no filters at all is refused when the dataset exceeds the row ceiling, and a filtered request that still exceeds it is refused with guidance to narrow it.
Inputs: dataset_ids (required), sex, time, sources, +8 more. Returns: cap, rows, error, shown, +10 more
ilostat_search_indicatorsSearch ILOSTAT indicatorsARead-onlyIdempotentInspect
Search ILOSTAT's catalog of labour-statistics indicators by plain-language terms and filters. Each hit is one indicator with its datasets — one per available frequency (annual, quarterly, monthly) — plus breakdowns, coverage years, number of reference areas, source database, and last update; pass a dataset ID to ilostat_describe_indicator for its units and breakdown codes, then to ilostat_query_indicator or ilostat_compare_geographies for values. Every search term must match a word or word prefix in the indicator's label, subject, database, breakdown names, code, or definition; a term that matches no word or word prefix anywhere in the catalog matches the words sharing its stem instead (informality finds informal, unionization finds union, disabled finds disability), and the notice names it. female, women, male, and men (or their plurals) also match every indicator broken down by sex, and the notice names the sex filter that selects those values in ilostat_query_indicator. British and American spellings (labour/labor) match alike. The measure filter lists every indicator of one measured quantity, as ilostat_describe_indicator's related indicators count them. Facet counts reflect all applied filters.
Inputs: limit, query, cursor, measure, +5 more. Returns: cap, hits, error, shown, +6 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Search and query the Eurostat catalogue — EU economy, demography, trade, and NUTS regional data.
Search and query 1,500+ OECD statistical datasets via SDMX. Keyless.
Labour market data from the ILO (ILOSTAT) by country, year, sex and age, with provenance.
ILOSTAT (International Labour Organization statistics) MCP — global labour market data via the…
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for accessing ILOSTAT (ILO statistical database) with tools to search indicators, retrieve metadata, list dimension values, and fetch data, with full provenance tracking.6140 npm2MIT
- AlicenseNot gradedqualityBmaintenanceEnables access to global labour statistics from ILOSTAT via the Pipeworx gateway.151 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables searching, exploring, and querying over 1,500 OECD statistical datasets via SDMX, covering national accounts, employment, trade, PISA, health, and more.204 npm4Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to access official statistical and economic indicator datasets from Eurostat, World Bank, OECD, IMF, WHO, and national statistical offices across 150+ countries through natural-language dataset discovery, inspection, time-series retrieval, SQL queries, CSV export, and account/watchlist management.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.