About statfin-mcp
statfin-mcp provides MCP access to Statistics Finland’s StatFin tables through PxWeb. It supports table discovery, metadata inspection, and filtered JSON-stat2 data retrieval without an API key.
Key features
- 01Search StatFin tables by keyword
- 02Inspect table dimensions and value codes
- 03Fetch filtered JSON-stat2 data
- 04Browse subject areas
Use cases
- 01Find tables for a statistical topic
- 02Check available filters before querying
- 03Retrieve recent figures for selected regions
MCP support
Exposes StatFin table search, metadata, subject browsing, and data retrieval as tools for MCP clients.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
4Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| emne | string | No | Optional: restrict to a subject id (from list_emner), e.g. 'vaerak' |
| limit | integer | No | Max hits (default 10) |
| query | string | Yes | Search term, e.g. 'population', 'unemployment', 'consumer price index', 'building' |
Details
From the project README@nor-data/statfin-mcp
MCP 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. No API key required.
Part of the nor-data family of Nordic open-data MCP
servers. Built on the same pattern as the SSB (Norway) server — StatFin and SSB both
speak PxWeb, so the tools mirror each other.
Tools
| Tool | What it does |
|---|---|
sok_tabell | Keyword search across all StatFin tables. PxWeb has no server-side search, so this matches a bundled index (built from the full table tree) locally and returns the most relevant tables with their tabell_id. |
hent_tabell | Metadata for a table: title + dimensions (variables) with their valid value codes and labels. Read this first to learn which filter codes exist. |
hent_data | Fetch actual values as JSON-stat2, filtered by a flat {variabelkode: [verdier]} map. Supports special selections like {filter:'top', values:['1']} for the latest period. |
list_emner | List the ~140 StatFin subject areas (e.g. vaerak = Population structure). Scope a search or browse when a keyword misses. |
All tools accept an optional lang (en default, fi, sv). Variable codes
are language-independent; only titles/labels are localised.
Example agent flow
sok_tabell({ query: "population by region" })→tabell_id: "vaerak/statfin_vaerak_pxt_11ra.px"hent_tabell({ tabell_id })→ sees variablesAlue(area),Vuosi(year),Tiedot(info)hent_data({ tabell_id, filtre: { Alue: ["SSS"], Vuosi: { filter: "top", values: ["1"] } } })→ latest national figures as JSON-stat2
Install
// Claude Desktop / Claude Code MCP config
{
"mcpServers": {
"statfin": {
"command": "npx",
"args": ["-y", "@nor-data/statfin-mcp"]
}
}
}
Develop
npm install
npm run build-index # crawl the StatFin tree → data/tables-index.json (~1–2 min)
npm run dev # run from source via tsx
npm run build # compile to dist/
The search index is bundled in the package (data/tables-index.json). Re-run
npm run build-index to refresh it (nightly is plenty — StatFin updates tables,
not the tree, frequently).
Notes & limits
- PxWeb allows 30 calls / 10 s and rejects queries over ~100 000 cells
(HTTP 403) — keep
hent_dataselections small (few regions × few years). - A few subjects (
vtp,kivih,sekn,akay) return HTTP 400 server-side and are skipped during indexing; this is a StatFin quirk, not a bug here. The index records them underskipped. - Data licensed under CC BY 4.0 by Statistics Finland.
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.