Skip to main content
Glama
SidneyBissoli

ILO Statistics (ILOSTAT) MCP Server

ILO-Arbeitsstatistiken (ILOSTAT) — MCP-Server

MCP CI Version Tools Resources Prompts npm MCP Registry ilo-mcp-server MCP server License: MIT Status

🇧🇷 Leia em Português

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/mcp

Claude 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

ilo_search_indicators

Stichwortsuche über ~1.210 Dataflows (paginiert nach offset)

lokaler Katalog (kein Upstream-Aufruf)

ilo_get_indicator_metadata

Dimensionen, Codelists, Datenstand und Standardauswahl eines Dataflows

gecachte Struktur (Cache-Miss → Upstream)

ilo_list_dimension_values

gültige Codes einer Dimension (paginiert nach offset)

gecachte Codelist (Cache-Miss → Upstream)

ilo_get_data

Beobachtungen gefiltert nach Dimension und Zeitraum

1 Live-REST-Aufruf pro Abfrage

Typischer Ablauf: ilo_search_indicatorsilo_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

ilostat://guide

Tool-Workflow, stabile Code-Konventionen (REF_AREA ISO3 + X-Aggregate, SEX, AGE, FREQ, Dataflow-ID-Suffixe), Grenzen, Berichtsregeln

ilostat://reference/key-dataflows

verifizierte Dataflow-IDs nach Thema (Arbeitslosigkeit, Beschäftigung, Erwerbsbeteiligung, Löhne, Arbeitsstunden, Informalität, NEET, SDG 8, Produktivität)

ilostat://reference/provenance

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

ilo_country_labour_profile

country, start_period, end_period

Arbeitsmarktprofil eines Landes (Arbeitslosigkeit, Erwerbsbeteiligung, Beschäftigungsquote, Informalität, NEET, Verdienste, Arbeitsstunden)

ilo_compare_countries

countries, indicator, start_period, end_period

Vergleichstabelle über Länder/Aggregate in einem Datenaufruf, mit Kennzeichnung von modellierten Schätzungen gegenüber gemeldeten Daten

ilo_indicator_trend

indicator, country, start_period, end_period

Zeitreihe eines Indikators mit erstem/letztem Wert, Höchst-/Tiefstpunkt und OBS_STATUS-Brüchen

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_AREA ist in ilo_get_data erforderlich, 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_vintage ist das letzte Aktualisierungsdatum des Dataflows, wie von der ILO veröffentlicht (LAST_UPDATE-Annotation, auf ISO normalisiert).

  • retrieved_at ist 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_at wird in der Provenance von ilo_search_indicators angegeben, 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

  • derivedtrue nur bei echter Transformation (Aggregation, serverseitig berechnete Rate, Interpolation, Harmonisierung), immer mit einem derivation_note; Einheitenumrechnung und Rundung zählen nicht. Dieser Server transformiert keine Werte, daher ist derived immer false.

  • notices — gibt die Werte von OBS_STATUS (der SDMX-Status-/Haftungsausschluss-Kanal, z. B. „Break in series") wortwörtlich und mit Zählungen wieder. Technische Attribute pro Beobachtung (DECIMALS usw.) 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 den Accept-Language: *-Header, den Nodes fetch (undici) standardmäßig sendet; daher setzt jeder Upstream-Aufruf Accept-Language: en explizit (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 inhaltlichevals/results/2026-08-07-e2e.md.

Endpunkte

Route

Zweck

/

Landingpage (Dienstidentität + Kontakt — öffentlich)

/health

Liveness-Check

/status

Version, Anzahl und Namen der Tools/Ressourcen/Prompts, Provenance-Vertragsversion, aktuelles Deployment (speist die README-Badges)

/metrics

aggregierte Nutzung (nur MCP-Endpunkt; keine IP-Adressen, keine Anfrageinhalte)

/mcp

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.

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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