Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Search ILOSTAT labour indicators, query and compare series, build country profiles, run SQL.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
ILOSTAT_CATALOG_REFRESH_HOURS, ILOSTAT_MAX_ROWS, ILOSTAT_PREVIEW_CHARS, ILOSTAT_CACHE_TTL_SECONDS, ILOSTAT_DATASET_TTL_SECONDS, ILOSTAT_DATAFRAME_DROP_ENABLED, CANVAS_PROVIDER_TYPE, MCP_LOG_LEVELYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://ilostat.caseyjhand.com/mcpOpen Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"ilostat": {
"command": "npx",
"args": [
"-y",
"@cyanheads/ilostat-mcp-server"
],
"env": {
"ILOSTAT_CATALOG_REFRESH_HOURS": "your-value",
"ILOSTAT_MAX_ROWS": "your-value",
"ILOSTAT_PREVIEW_CHARS": "your-value",
"ILOSTAT_CACHE_TTL_SECONDS": "your-value",
"ILOSTAT_DATASET_TTL_SECONDS": "your-value",
"ILOSTAT_DATAFRAME_DROP_ENABLED": "your-value",
"CANVAS_PROVIDER_TYPE": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http ilostat https://ilostat.caseyjhand.com/mcpclaude mcp add ilostat --env ILOSTAT_CATALOG_REFRESH_HOURS=your-value --env ILOSTAT_MAX_ROWS=your-value --env ILOSTAT_PREVIEW_CHARS=your-value --env ILOSTAT_CACHE_TTL_SECONDS=your-value --env ILOSTAT_DATASET_TTL_SECONDS=your-value --env ILOSTAT_DATAFRAME_DROP_ENABLED=your-value --env CANVAS_PROVIDER_TYPE=your-value --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/ilostat-mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"ilostat": {
"url": "https://ilostat.caseyjhand.com/mcp"
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"ilostat": {
"command": "npx",
"args": [
"-y",
"@cyanheads/ilostat-mcp-server"
],
"env": {
"ILOSTAT_CATALOG_REFRESH_HOURS": "your-value",
"ILOSTAT_MAX_ROWS": "your-value",
"ILOSTAT_PREVIEW_CHARS": "your-value",
"ILOSTAT_CACHE_TTL_SECONDS": "your-value",
"ILOSTAT_DATASET_TTL_SECONDS": "your-value",
"ILOSTAT_DATAFRAME_DROP_ENABLED": "your-value",
"CANVAS_PROVIDER_TYPE": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"ilostat": {
"type": "http",
"url": "https://ilostat.caseyjhand.com/mcp"
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"ilostat": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/ilostat-mcp-server"
],
"env": {
"ILOSTAT_CATALOG_REFRESH_HOURS": "your-value",
"ILOSTAT_MAX_ROWS": "your-value",
"ILOSTAT_PREVIEW_CHARS": "your-value",
"ILOSTAT_CACHE_TTL_SECONDS": "your-value",
"ILOSTAT_DATASET_TTL_SECONDS": "your-value",
"ILOSTAT_DATAFRAME_DROP_ENABLED": "your-value",
"CANVAS_PROVIDER_TYPE": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://ilostat.caseyjhand.com/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
ILOSTAT_CATALOG_REFRESH_HOURS envILOSTAT_MAX_ROWS envILOSTAT_PREVIEW_CHARS envILOSTAT_CACHE_TTL_SECONDS envILOSTAT_DATASET_TTL_SECONDS envILOSTAT_DATAFRAME_DROP_ENABLED envCANVAS_PROVIDER_TYPE envMCP_LOG_LEVEL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Tool names and descriptions exactly as the server reported them on Nov 7, 2026. The maker wrote them, not us; we show them as plain text.
ilostat_search_indicatorsSearch 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
ilostat_describe_indicatorExplain 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
ilostat_query_indicatorFetch 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 st
ilostat_get_country_profileBuild 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 i
ilostat_compare_geographiesCompare 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 peri
ilostat_list_referenceDecode 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 m
ilostat_dataframe_queryRun 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: wr
ilostat_dataframe_describeDescribe 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 multipli
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account cyanheads, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 255 ms (HTTP 200)
No sign-in needed
Read 8 tool descriptions and found no hidden instructions to the AI
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.3.0) reached the registry 10 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
@cyanheads/ilostat-mcp-server Search ILOSTAT labour indicators, query and compare series, build country profiles, run SQL via MCP. STDIO or Streamable HTTP. 9 Tools • 1 Skill
Public Hosted Server: https://ilostat.caseyjhand.com/mcp
Labour statistics from ILOSTAT, the International Labour Organization's database. Find an indicator, pull observations for countries, regions, and income groups, compare areas, and build a labour-market profile, with every value marked as reported, modelled, or projected. No API key required.
| Tool | Description |
|---|---|
ilostat_search_indicators | Search the indicator catalog by plain-language terms and filters; each hit lists a dataset ID per available frequency |
ilostat_describe_indicator | Explain one dataset: definition, unit and multiplier, breakdown codes in use, covered areas, and how its values are classed |
ilostat_query_indicator | Fetch observations for up to 3 datasets per call, filtered by area or area group, sex, breakdown codes, source, and period |
ilostat_get_country_profile | Headline labour-market figures for one area: latest reported value and latest ILO modelled estimate, side by side |
ilostat_compare_geographies | Rank areas on one slice of one dataset at a common or latest period, with optional change over N years |
ilostat_list_reference | Decode ILOSTAT's code vocabulary: areas, area groups, databases, subjects, sexes, breakdowns, sources, status flags, notes |
ilostat_dataframe_describe | Describe a staged df_ dataframe by name, or list them all (off under HTTP with auth none), with provenance, coverage, basis counts, and column schema |
ilostat_dataframe_query | Run one read-only SQL SELECT over staged dataframes, optionally storing the result as a new one |
ilostat_dataframe_drop | Drop a staged dataframe before its TTL |
ilostat_dataframe_drop is off unless ILOSTAT_DATAFRAME_DROP_ENABLED=true, and CANVAS_PROVIDER_TYPE=none turns off all three dataframe tools.
| Skill | Description |
|---|---|
ilostat-guide | Gates for answering labour-market questions with these tools: choosing reported or ILO modelled data, finding a population group as a breakdown code, one classification version per sum, rates that do not add, source changes and breaks in trends, and SQL over staged dataframes |
Ships in skills/ for plugin installs, the npm package, the Docker image, and the .mcpb bundle, and is served over MCP as skill://ilostat-guide/SKILL.md.
ilostat_search_indicators toolquery (every term must match a word or word prefix; a term no catalog word starts with matches by its stem, so informality finds informal and disabled finds disability; female, women, male, and men match every indicator broken down by sex, and the notice names the sex filter for ilostat_query_indicator; case, accents, and labour/labor folded) plus frequency, database, subject, breakdown, measure, and aggregates_only filters; omit query to browse by filterslimit is applied as 50, with a notice), continued with next_cursor; each hit is one indicator with a dataset_id per frequency, coverage years, n_ref_area, last_update, and has_aggregates, and facets count the whole match setdatabase, subject, breakdown, or measure code fails as unknown_filter_codeilostat_describe_indicator tooldataset_id (UNE_DEAP_SEX_AGE_RT_A) or a bare indicator code, which describes every frequency; an unknown code returns found: false with guidanceunit and its multiplier, frequency variants, breakdowns (sex codes, plus classif1 / classif2 codes with totals marked is_total), default_slice, covered ref_areas, basis_rule, and the first 20 related_datasets with related_totalstructure_status is unavailable and breakdowns, unit, and areas are absent rather than the call failingilostat_query_indicator tooldataset_ids; the first 3 distinct datasets are queried and the rest come back as remaining_dataset_ids for another call. Filter by ref_areas (up to 300) and/or an area_group, sex, classif1, classif2, sources, and period: one exact time, a time_from / time_to year window, latest_only, or bothlatest_only keeps each series' own latest period; a request whose full history is too large to read in one call falls back to the latest period per area and dataset, and applied_filters.latest_mode and the notice say sosource_selection is best by default, all, or secondary; rows carry source, obs_status, notes, and basis, decoded in legend, and applied_filters echoes every parameter sentdf_ dataframe; a request over ILOSTAT_MAX_ROWS fails as request_too_broad (unfiltered) or result_too_large (filtered)ilostat_get_country_profile toolref_area with annual data, an ISO3 country (KEN) or an X-coded aggregate (X01 World, regions, income groups), and sex (SEX_T by default, SEX_M, or SEX_F)reported value for that slice and, separately, its latest non-projected modelled estimatereported_missing; aggregates carry modelled values onlyilostat_compare_geographies tooldataset_id and one slice (sex, classif1, classif2, defaulting to the dataset's totals); areas from ref_areas (up to 300), an area_group, or both, and at least one is requiredperiod puts every area at one period; without it, each area gets its latest value within lookback_years (default 10), projections excluded unless include_projections; change_years (1–30) adds each value's change over that spansource_changed, basis_changed, and break_in_series flags; the notice counts the changes that are not like-for-likerank, value, period, basis, and source; areas without a value land in missing with a reason, and comparability reports mixed_periods, basis_counts, and distinct_sourcesilostat_list_reference tooltopic: ref_areas, area_groups, databases, subjects, sexes, classifications, classification_types, sources, obs_status, notes, or frequenciesfilter or up to 100 exact codes (misses in not_found; exact area_groups lookups list member countries); ref_area narrows sources, and classification_type narrows classificationslimit is applied as 500, with a notice), continued with next_cursorilostat_dataframe_describe tooldf_XXXXX_XXXXX, or omit name to list every staged dataframe, newest first (listing is off under HTTP with auth none; use the exact name)source_tool and its query_params, datasets, coverage, basis_counts, attribution, created_at / expires_at, row_count, and the column_schema to write SQL againstunit: unit_measure, unit_type, unit_type_label, unit_multiplier, and unit_multiplier_label; values are never rescaledilostat_dataframe_query toolSELECT (joins, aggregates, window functions, CTEs) over df_ tables, up to 20,000 characters; writes, DDL, multi-statement SQL, file references and file-reading functions, engine-setting reads, and system catalogs are rejectedrow_limit caps the rows materialized (default 1,000; capped at 10,000 per call, with row_count_capped flagging a hit) and preview the rows returned inline, which also stop at ILOSTAT_PREVIEW_CHARS; applied_limits echoes the values applied, and BIGINT values arrive as stringsregister_as stores the full result as a new dataframe with a fresh TTL; a result over 1,000,000 rows fails as register_as_too_large, and evicted names any older dataframes dropped to make roomilostat_dataframe_drop toolname before its TTL; idempotent, with dropped: false when nothing matchedILOSTAT_DATAFRAME_DROP_ENABLED=true and dataframes are on; it is the only destructive toolBuilt on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
ILOSTAT-specific:
ILOSTAT_CATALOG_REFRESH_HOURS; every code a tool takes is validated against them before a request goes upstreamupstream_busy carrying retryAfter. Data responses of up to 5,000 rows are cached for ILOSTAT_CACHE_TTL_SECONDSOnly the beginning is shown; read the rest in the repo