SCB-MCP

mcp
Security Audit
Warn
Health Warn
  • No license — Repository has no license file
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 7 GitHub stars
Code Warn
  • network request — Outbound network request in dist/api-client.js
  • process.env — Environment variable access in dist/http-server.js
Permissions Pass
  • Permissions — No dangerous permissions requested
Purpose
This server connects LLMs and AI chatbots to Statistics Sweden's (SCB) public API, allowing them to query and retrieve official demographic, economic, and social data.

Security Assessment
Overall risk: Low. The tool does not execute shell commands, contains no hardcoded secrets, and does not request dangerous system permissions. As expected for its purpose, it makes outbound network requests to fetch public statistical data. It does access environment variables, which is a standard and safe method for handling configuration settings like server ports. The accessed data is entirely public and nonsensitive.

Quality Assessment
The project is actively maintained, with its most recent code push occurring today. It features a highly detailed and bilingual README, suggesting strong developer engagement. However, there are notable warnings regarding maturity. The repository completely lacks a license file, which creates legal ambiguity and restricts formal enterprise adoption. Additionally, it has very low community visibility (only 7 GitHub stars), meaning the codebase has not been broadly vetted by a large audience.

Verdict
Use with caution — the code is functionally safe and actively updated, but the lack of a license makes it unsuitable for strict commercial use without further clarification from the author.
SUMMARY

Connect LLMs or AI-chatbots to let them query and interact with official data and statistics from SCB (Sweden Statistics)

README.md
MCP SERVER

MCP Registry
MCP Protocol

📊 SCB MCP Server

SCB MCP är server som LLM:s och AI-chatbotar kan använda för att söka, hitta och hämta officiell data och statistik från Statistikbyrån (SCB). Det omfattar 1 200+ statistiktabeller med data om befolkning & demografi, ekonomi & finans, miljö, arbetsmarknad, utbildning och transport. Perfekt för att bygga interaktiva instrumentpaneler, forskningsverktyg och utbildningsapplikationer.


Översikt

🇬🇧 Overview

The SCB MCP server provides seamless integration with Statistics Sweden's PxWebAPI 2.0, enabling LLM:s to access:

  • Population & Demographics: Regional data, migrations, births, deaths (312+ regions)
  • Economy & Finance: GDP, taxes, business statistics, national accounts
  • Environment: Greenhouse gas emissions, water/waste management, sustainability metrics
  • Labor Market: Employment, unemployment, occupational data, skills matching
  • Education: Student statistics, course enrollments, skills development

Data ranges from 1950s to present (monthly/quarterly updates). Real-time population statistics updated to November 2025.

SCB MCP-servern ger sömlös integrering med Statistikbyråns (SCB) PxWebAPI 2.0, vilket gör det möjligt för LLM:s att tillgå:
  • Befolkning & demografi: Regionaldata, migrationer, födslar, dödsfall (312+ regioner)
  • Ekonomi & finans: BNP, skatter, företagsstatistik, nationalräkenskaper
  • Miljö: Växthusgaser, vatten/avfallshantering, hållbarhetsvärdena
  • Arbetsmarknad: Sysselsättning, arbetslöshet, yrkesdata, kompetensmatchning
  • Utbildning: Studentstatistik, kursanmälningar, kompetensutveckling

🇬🇧 Key features (English)
Feature Description
Comprehensive Access 1,200+ tables, 312+ regions, 75+ years of historical data
Smart Querying Natural language search, region code resolution ("Lerum" → 1441), TOP() & wildcard support
Fuzzy Matching "Goteborg" matches "Göteborg", "Malmo" matches "Malmö"
Developer-Friendly Full documentation, clear errors with suggestions, selection validation, metadata in responses
Production-Ready Rate limiting (30 req/10s), consistent behavior, proper data types, language support (SV/EN)
Swedish by Default All tools use Swedish (sv) as default for best search results
Real-Time Data Monthly/quarterly updates, population data to November 2025

Huvudfunktioner

Funktion Beskrivning
Omfattande åtkomst 1 200+ tabeller, 312+ regioner, 75+ års historiska data
Smart sökning Naturspråkig sökning, regionkodupplösning ("Lerum" → 1441), TOP() & wildcard-stöd
Fuzzy matching "Goteborg" matchar "Göteborg", "Malmo" matchar "Malmö"
Utvecklarvänlig Fullständig dokumentation, tydliga felmeddelanden, valideringsmöjligheter, metadata i svaren
Produktionsklar Rate limiting (30 req/10s), konsekvent beteende, rätt datatyper, språkstöd (SV/EN)
Svenska som standard Alla verktyg använder svenska (sv) som default för bästa sökresultat
Aktuell data Månatliga/kvartalsvisa uppdateringar, befolkningsdata till november 2025

🚀 Installation

Servern körs lokalt via stdio. Klona, bygg och peka din MCP-klient mot dist/index.js.

git clone https://github.com/isakskogstad/SCB-MCP.git
cd SCB-MCP
npm install
npm run build

Claude Code (CLI)

claude mcp add scb -- node /absolut/sökväg/till/SCB-MCP/dist/index.js

Claude Desktop / Codex / Gemini / Cursor (stdio)

Lägg till i klientens MCP-konfiguration (t.ex. ~/Library/Application Support/Claude/claude_desktop_config.json för Claude Desktop):

{
  "mcpServers": {
    "scb": {
      "command": "node",
      "args": ["/absolut/sökväg/till/SCB-MCP/dist/index.js"]
    }
  }
}
🇬🇧 Installation (English)

The server runs locally over stdio. Clone, build, and point your MCP client to dist/index.js.

git clone https://github.com/isakskogstad/SCB-MCP.git
cd SCB-MCP
npm install
npm run build

Claude Code (CLI)

claude mcp add scb -- node /absolute/path/to/SCB-MCP/dist/index.js

Claude Desktop / Codex / Gemini / Cursor (stdio)

{
  "mcpServers": {
    "scb": {
      "command": "node",
      "args": ["/absolute/path/to/SCB-MCP/dist/index.js"]
    }
  }
}

Användarguide

1. Sök efter statistiktabeller

# Hitta befolkningsrelaterade tabeller
results = scb.search_tables(query="befolkning statistik", limit=10)

# Filtrera efter kategori
results = scb.search_tables(query="miljö", category="environment", limit=5)
🇬🇧 Usage guide (English)

1. Search for statistical tables

results = scb.search_tables(query="population", limit=10)
results = scb.search_tables(query="environment", category="environment", limit=5)

2. Hitta regionkoder

# Lerum kommun
region = scb.find_region_code(query="Lerum")
# Returnerar: code="1441", name="Lerum"

# Större regioner
region = scb.find_region_code(query="Stockholm")
# Returnerar: code="01" (län), code="0180" (kommun)

# Fuzzy matching - fungerar utan svenska tecken
region = scb.find_region_code(query="Goteborg")
# Returnerar: code="1480", name="Göteborg"
🇬🇧 Resolve region codes (English)
region = scb.find_region_code(query="Lerum")
region = scb.find_region_code(query="Stockholm")

# Fuzzy matching - works without Swedish characters
region = scb.find_region_code(query="Goteborg")
# Returns: code="1480", name="Göteborg"

3. Hämta data

# Medelålder i Lerum 2024
data = scb.get_table_data(
    tableId="TAB637",
    selection={
        "Region": ["1441"],
        "Kon": ["1+2"],
        "Tid": ["2024"],
        "ContentsCode": ["BE0101G9"]
    }
)
# Resultat: Medelålder i Lerum 2024: 40.1 år
🇬🇧 Fetch data (English)
data = scb.get_table_data(
    tableId="TAB637",
    selection={
        "Region": ["1441"],
        "Kon": ["1+2"],
        "Tid": ["2024"],
        "ContentsCode": ["BE0101G9"]
    }
)

Best practices

Problem Lösning
Stor datamängd? Använd alltid preview_data() först för att testa
För mycket data? Använd "TOP(5)" istället för "*" för tidsperioder
Felaktiga koder? Anropa get_table_variables() först — koder varierar mellan tabeller
Osäker på enheter? Kontrollera variabeletikett för enheter (kt, ton, procent osv.)
🇬🇧 Best practices (English)
Issue Solution
Large dataset? Always use preview_data() first to test
Too much data? Use "TOP(5)" instead of "*" for time periods
Wrong codes? Call get_table_variables() first — codes vary between tables
Unsure about units? Check variable label for units (kt, tonnes, percent, etc.)

Praktiska exempel

Ex: Befolkningstrend Lerum vs Stockholm

# Jämför två regioner över tid
data = scb.get_table_data(
    tableId="TAB637",
    selection={
        "Region": ["1441", "0180"],  # Lerum och Stockholm
        "Kon": ["1+2"],
        "Tid": ["TOP(5)"],
        "ContentsCode": ["BE0101G9"]
    }
)
# Stockholm: 41.0 år (2024), Lerum: 40.1 år (2024)
# Trend: Stockholm åldras snabbare
🇬🇧 Example 1: Population trends (English)
data = scb.get_table_data(
    tableId="TAB637",
    selection={
        "Region": ["1441", "0180"],  # Lerum and Stockholm
        "Kon": ["1+2"],
        "Tid": ["TOP(5)"],
        "ContentsCode": ["BE0101G9"]
    }
)
# Stockholm: 41.0 years (2024), Lerum: 40.1 years (2024)

Resurser


Av: Isak Skogstad

Reviews (0)

No results found