Statistics Finland (StatFin/PxWeb): search tables, read metadata, fetch JSON-stat2 data.
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.
| 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.
sok_tabell({ query: "population by region" })
→ tabell_id: "vaerak/statfin_vaerak_pxt_11ra.px"hent_tabell({ tabell_id }) → sees variables Alue (area), Vuosi (year), Tiedot (info)hent_data({ tabell_id, filtre: { Alue: ["SSS"], Vuosi: { filter: "top", values: ["1"] } } })
→ latest national figures as JSON-stat2// Claude Desktop / Claude Code MCP config
{
"mcpServers": {
"statfin": {
"command": "npx",
"args": ["-y", "@nor-data/statfin-mcp"]
}
}
}
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).
hent_data selections small (few regions × few years).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 under skipped.MIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @nor-data/statfin-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-3121n-statfin-mcp": {
"command": "npx",
"args": [
"-y",
"@nor-data/statfin-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@nor-data/statfin-mcpnpmio.github.3121n/statfin-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.