ILO Statistics (ILOSTAT) MCP Server
ILO-Arbeitsstatistiken (ILOSTAT) — MCP-Server
Ein öffentlicher, gehosteter, Provenance-first-MCP-Server für die Statistiken der Internationalen Arbeitsorganisation (ILO) — die ILOSTAT-Datenbank — keine Installation, kein Konto, kein API-Schlüssel. Richten Sie Ihren MCP-Client auf den gehosteten Endpunkt und fragen Sie nach Arbeitslosigkeit, Beschäftigung, Löhnen, Arbeitszeit und anderen Arbeitsindikatoren nach Land, Jahr, Geschlecht und Alter. Er läuft auf Cloudflare Workers über Streamable HTTP und spricht mit der offiziellen ILOSTAT-SDMX-REST-API.
Jede Antwort enthält einen Provenance-Block (Quell-URL, Datenstand, tatsächlicher Abrufzeitstempel, Lizenz, ILO-Zitierung) — exakte Zahlen mit Prüfpfad, keine aus Trainingsdaten erratenen Zahlen.
Verwendung (gehostet — keine Einrichtung)
Richten Sie einen beliebigen MCP-Client auf den Streamable-HTTP-Endpunkt:
https://ilo.sidneybissoli.com/mcpClaude Desktop / Claude Code und andere Clients mit nativer Remote-Unterstützung:
{
"mcpServers": {
"ilostat": {
"url": "https://ilo.sidneybissoli.com/mcp"
}
}
}Für Clients, die MCP-Server als Befehl starten, verwenden Sie die
mcp-remote-Brücke:
{
"mcpServers": {
"ilostat": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://ilo.sidneybissoli.com/mcp"]
}
}
}Der Hostname ilo-mcp-server.sidneybissoli.workers.dev wird ebenfalls als sekundärer Endpunkt bereitgestellt.
Related MCP server: world-bank-economic-mcp
Lokal ausführen (stdio)
Möchten Sie Abfragen nicht über einen Drittanbieter-Host leiten? Der gleiche Server läuft auch als lokaler stdio-Prozess, der direkt mit der offiziellen ILOSTAT-API spricht — gleiche 4 Tools, Ressourcen und Prompts, gleiche Grenzen, gleicher Provenance-Block, kein Cloudflare im Spiel.
Keine Installation erforderlich — das Paket ist auf npm (ilo-mcp-server, Node ≥ 20):
{
"mcpServers": {
"ilostat": {
"command": "npx",
"args": ["-y", "ilo-mcp-server"]
}
}
}Oder aus dem Quellcode:
git clone https://github.com/SidneyBissoli/ilo-mcp-server
cd ilo-mcp-server
npm install
npm run build
node dist/cli.js # serves MCP over stdio (Ctrl+C to stop)(weisen Sie den Client dann auf node /path/to/ilo-mcp-server/dist/cli.js).
Unterschiede zum gehosteten Server, alle bedingt durch das Fehlen von Cloudflare-Bindings: Der SDMX-Cache
lebt im Prozessspeicher (Strukturen und Codelists werden innerhalb einer Sitzung wiederverwendet, nicht über
Sitzungen hinweg); der Suchkatalog wird bei der ersten Suche vom offiziellen Endpunkt heruntergeladen
(sein tatsächliches retrieved_at wird in der Provenance angegeben); keine Nutzungsmetriken, kein Rate-Limit, keine Authentifizierung. Logs
gehen an stderr — stdout transportiert nur den JSON-RPC-Stream. Das Dockerfile des Repositories baut
diese Laufzeit (vom Glama-Registry verwendet).
Tools
Tool | Beschreibung | Quelle |
| Stichwortsuche über ~1.210 Dataflows (paginiert nach | lokaler Katalog (kein Upstream-Aufruf) |
| Dimensionen, Codelists, Datenstand und Standardauswahl eines Dataflows | gecachte Struktur (Cache-Miss → Upstream) |
| gültige Codes einer Dimension (paginiert nach | gecachte Codelist (Cache-Miss → Upstream) |
| Beobachtungen gefiltert nach Dimension und Zeitraum | 1 Live-REST-Aufruf pro Abfrage |
Typischer Ablauf: ilo_search_indicators → ilo_get_indicator_metadata / ilo_list_dimension_values,
um gültige Filtercodes zu ermitteln → ilo_get_data mit Länder- und Zeitraumfiltern.
Jede Antwort trägt den Provenance-Block v1.0
(@sbissoli/mcp-provenance, Modi
concise/detailed über den provenance_mode-Parameter) auf drei Kanälen:
structuredContent, namespace-basiertes _meta (com.sidneybissoli.ilostat/*) und eine Text-Fußzeile.
Ressourcen und Prompts
Drei Ressourcen (statisch, text/markdown, kein Upstream-Aufruf), die ein Client vor dem Aufruf von Tools
an den Kontext anhängen kann — sie sparen die 2–3 Ermittlungsaufrufe, die die meisten Sitzungen für
„welcher Dataflow, welche Codes" aufwenden:
URI | Inhalt |
| Tool-Workflow, stabile Code-Konventionen ( |
| verifizierte Dataflow-IDs nach Thema (Arbeitslosigkeit, Beschäftigung, Erwerbsbeteiligung, Löhne, Arbeitsstunden, Informalität, NEET, SDG 8, Produktivität) |
| Bedeutung jedes Provenance-Felds und wie die ILO zitiert wird |
Drei Prompts — vorgefertigte Workflows, die die Tools verketten und mit den Zitierregeln enden (Argumente sind Strings; Zeitraum-Argumente optional):
Prompt | Argumente | Ergebnis |
|
| Arbeitsmarktprofil eines Landes (Arbeitslosigkeit, Erwerbsbeteiligung, Beschäftigungsquote, Informalität, NEET, Verdienste, Arbeitsstunden) |
|
| Vergleichstabelle über Länder/Aggregate in einem Datenaufruf, mit Kennzeichnung von modellierten Schätzungen gegenüber gemeldeten Daten |
|
| Zeitreihe eines Indikators mit erstem/letztem Wert, Höchst-/Tiefstpunkt und |
Jede in den Ressourcen und Prompts genannte Dataflow-ID wird von der Testsuite gegen den Katalog-Seed geprüft, sodass die Dokumentation nicht auf eine ID verweisen kann, die die Suche nicht finden würde.
Verhalten und Grenzen
REF_AREAist inilo_get_dataerforderlich, bis zu 30 Gebiete pro Aufruf. Das ILO-Gateway läuft bei uneingeschränkten Abfragen in einen Timeout (HTTP 504), daher sendet der Server niemals eine solche; für breite Panels teilen Sie die Gebiete in Chargen auf und/oder paginieren Sie nach Zeitraum (start_period/end_period). Die Fehlermeldung erklärt wie.Ein Live-REST-Aufruf pro Datenabfrage. Daten werden niemals gecacht — jedes
ilo_get_data-Ergebnis wird zur Anfragezeit von ILOSTAT abgerufen. Dataflow-Strukturen (TTL 24 h) und Codelists (TTL 7 Tage, über Dataflows hinweg geteilt) werden gecacht.data_vintageist das letzte Aktualisierungsdatum des Dataflows, wie von der ILO veröffentlicht (LAST_UPDATE-Annotation, auf ISO normalisiert).retrieved_atist immer der tatsächliche Zeitpunkt der Extraktion von ILOSTAT, der zusammen mit jedem gecachten Wert bewahrt wird — niemals die Build- oder Antwortzeit. Gecachte Antworten geben dies an (served_from_cache: true).Der Indikatorkatalog ist eine lokale Momentaufnahme (~1.210 Dataflows), die regelmäßig aktualisiert wird; sein eigenes
retrieved_atwird in der Provenance vonilo_search_indicatorsangegeben, sodass sein Alter immer sichtbar ist.Jeder Upstream-Aufruf enthält einen identifizierbaren User-Agent (Dienst-URL + Kontakt), damit ILO-Administratoren den Betreiber erreichen können.
Sprache: Englisch; Zeitzone: UTC (ILO-Daten werden auf Englisch veröffentlicht).
Provenance-Felder
derived—truenur bei echter Transformation (Aggregation, serverseitig berechnete Rate, Interpolation, Harmonisierung), immer mit einemderivation_note; Einheitenumrechnung und Rundung zählen nicht. Dieser Server transformiert keine Werte, daher istderivedimmerfalse.notices— gibt die Werte vonOBS_STATUS(der SDMX-Status-/Haftungsausschluss-Kanal, z. B. „Break in series") wortwörtlich und mit Zählungen wieder. Technische Attribute pro Beobachtung (DECIMALSusw.) bleiben in den Zeilen (rows[].attributes).
Datenlizenz und Namensnennung
ILOSTAT-Daten und -Metadaten: CC BY 4.0 (seit 03.05.2023; Lizenz geprüft am 04.08.2026).
ILO-Namensnennung in jeder Antwort (
citation-Feld):International Labour Organization, ILOSTAT, https://ilostat.ilo.org/data/, accessed <date>.Das ILO-Logo wird nicht verwendet. Dieser Dienst wird nicht von der ILO unterstützt.
Self-Hosting / Entwicklung
Alles unten Genannte wird nur benötigt, um eine eigene Instanz zu betreiben — es ist nicht erforderlich, um den öffentlichen Server zu nutzen.
npm install
npm run typecheck && npm test # 96 offline tests (parsers, key, tools, output contract, resources/prompts, in-memory catalogue, eval fixtures)
npm run dev # http://localhost:8787/mcp (Worker)
npm run build && npm start # stdio runtime (dist/cli.js)
# Catalogue seed (D1) — required before first use:
node scripts/seed-catalog.mjs # downloads via curl and generates scripts/seed-catalog.sql
npx wrangler d1 execute ilostat-catalog --local --file=scripts/seed-catalog.sql
npx wrangler d1 execute ilostat-catalog --remote --file=scripts/seed-catalog.sql
npm run deploy
node scripts/smoke-mcp.mjs # smoke test against production (initialize → 4 tools → errors)
npm run manifest:lhm # regenerate tools/resources/prompts in lhm.plugin.json from the real server
# (the seed also writes tests/fixtures/catalog-ids.txt — the versioned id list the tests check resources/prompts against)Bindings (siehe wrangler.jsonc): KV SDMX_CACHE, D1 CATALOG_DB, Durable Object USAGE
(SQLite-gestützte Nutzungszähler), CF_VERSION_METADATA. Optionale Bearer-Authentifizierung
(wrangler secret put API_KEY); Token-Bucket-Rate-Limit pro IP.
Hinweise für Betreiber:
ILOSTAT gibt JSON nur zurück, wenn über den
Accept-Header ausgehandelt (application/vnd.sdmx.{structure,data}+json);?format=wird ignoriert und gibt XML zurück.Das ILO-Gateway antwortet mit HTTP 500 (
languageTag1) auf denAccept-Language: *-Header, den Nodesfetch(undici) standardmäßig sendet; daher setzt jeder Upstream-AufrufAccept-Language: enexplizit (Cloudflares Laufzeit sendet keinen solchen Header, sodass der Worker nie betroffen war). Es erwartet außerdem einen identifizierbaren User-Agent.Katalog-Aktualisierung ist manuell (kein Cron): vierteljährlich oder sofort, wenn ein Dataflow, der upstream existiert, nicht in der Suche erscheint. Vorgehen: die drei Seed-Befehle oben. Datenabfragen sind immer live, sodass nur der Suchkatalog altern kann — und sein Alter wird in der Provenance offengelegt.
Evals
@sbissoli/mcp-evals: 24 Fixtures in
evals/fixtures/queries.ts, offline validiert in npm test. Der Lauf mit einem echten Modell
(npm run eval) verwendet die Anthropic-API und benötigt ANTHROPIC_API_KEY (ohne diesen bricht er mit
Hinweisen ab). Lauf vom 07.08.2026: Top-1 100 % (24/24) — evals/results/.
End-to-End: 10 komplexe Fragen mit einer einzelnen verifizierbaren Antwort in evals/e2e/evaluation.xml,
Antworten manuell gegen die Produktion validiert (evals/e2e/validacao-respostas.md). Lauf vom
07.08.2026 (Sonnet): 9/10 exakte Zeichenkette; 10/10 inhaltlich — evals/results/2026-08-07-e2e.md.
Endpunkte
Route | Zweck |
| Landingpage (Dienstidentität + Kontakt — öffentlich) |
| Liveness-Check |
| Version, Anzahl und Namen der Tools/Ressourcen/Prompts, Provenance-Vertragsversion, aktuelles Deployment (speist die README-Badges) |
| aggregierte Nutzung (nur MCP-Endpunkt; keine IP-Adressen, keine Anfrageinhalte) |
| MCP Streamable HTTP |
Sicherheit
Snyk Agent Scan (2026-08-07): bestanden — Bericht in
security/.
Lizenz
Quellcode: MIT. Daten: ILOSTAT, CC BY 4.0 (siehe „Datenlizenz und Quellenangabe“ oben).
Datenschutz
Datenschutzerklärung des gehosteten Dienstes: PRIVACY.md.
Kontakt
Sidney da S. P. Bissoli — sbissoli76@gmail.com. Dieser Dienst wird nicht von der ILO befürwortet.
Maintenance
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for official statistics from Statistics Finland (Tilastokeskus) — the StatFin database, exposed through the PxWeb API. Search 3000+ tables, inspect their dimensions, and pull data as JSON-stat2.474MIT
- FlicenseNot gradedqualityBmaintenanceProvides macro-economic data from World Bank, IMF, FRED, OECD, and RBI through a unified get_indicator interface.1
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that provides tools to query Eurostat APIs for European statistics data.10MIT
- AlicenseNot gradedqualityAmaintenanceSearch and query the Eurostat catalogue — EU economy, demography, trade, health, and NUTS regional data via MCP with 5 tools and 1 resource.1,1715Apache 2.0
Related MCP Connectors
ILOSTAT (International Labour Organization statistics) MCP — global labour
DBnomics MCP — meta-aggregator over 80+ stats providers
Statistics Netherlands (CBS / StatLine) OData MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SidneyBissoli/ilo-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server