SCB MCP

Conecta LLMs o chatbots de IA para que consulten e interactúen con datos y estadísticas oficiales de SCB (Estadísticas de Suecia).

Documentación

MCP SERVER

MCP Registry MCP Protocol

📊 Servidor SCB MCP

SCB MCP es un servidor que los LLM y chatbots de IA pueden usar para buscar, encontrar y recuperar datos y estadísticas oficiales de Statistics Sweden (SCB). Incluye más de 1200 tablas estadísticas con datos sobre población y demografía, economía y finanzas, medio ambiente, mercado laboral, educación y transporte. Perfecto para crear paneles interactivos, herramientas de investigación y aplicaciones educativas.


Resumen

🇬🇧 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.

El servidor SCB MCP ofrece una integración perfecta con la PxWebAPI 2.0 de Statistics Sweden (SCB), lo que permite a los LLM acceder a:
  • Población y demografía: Datos regionales, migraciones, nacimientos, defunciones (más de 312 regiones)
  • Economía y finanzas: PIB, impuestos, estadísticas empresariales, cuentas nacionales
  • Medio ambiente: Gases de efecto invernadero, gestión de agua/residuos, métricas de sostenibilidad
  • Mercado laboral: Empleo, desempleo, datos ocupacionales, emparejamiento de habilidades
  • Educación: Estadísticas de estudiantes, inscripciones en cursos, desarrollo de habilidades

Los datos abarcan desde la década de 1950 hasta la actualidad (actualizaciones mensuales/trimestrales). Estadísticas de población en tiempo real actualizadas hasta noviembre de 2025.


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

Características principales

FunciónDescripción
Acceso integralMás de 1200 tablas, más de 312 regiones, más de 75 años de datos históricos
Búsqueda inteligenteBúsqueda en lenguaje natural, resolución de códigos de región ("Lerum" → 1441), soporte TOP() y comodines
Coincidencia difusa"Goteborg" coincide con "Göteborg", "Malmo" coincide con "Malmö"
Amigable para desarrolladoresDocumentación completa, errores claros con sugerencias, validación de selección, metadatos en las respuestas
Listo para producciónLimitación de velocidad (30 solicitudes/10 s), comportamiento consistente, tipos de datos correctos, soporte de idiomas (SV/EN)
Sueco por defectoTodas las herramientas usan sueco (sv) como predeterminado para obtener los mejores resultados de búsqueda
Datos en tiempo realActualizaciones mensuales/trimestrales, datos de población hasta noviembre de 2025

🚀 Instalación

El servidor se ejecuta localmente a través de stdio. Clona, compila y apunta tu cliente MCP a 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)

Agrega a la configuración MCP de tu cliente (p. ej., ~/Library/Application Support/Claude/claude_desktop_config.json para 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"]
    }
  }
}

Guía de uso

1. Buscar tablas estadísticas

# 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. Encontrar códigos de región

# 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. Obtener datos

# 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"]
    }
)

Mejores prácticas

ProblemaSolución
¿Conjunto de datos grande?Usa siempre preview_data() primero para probar
¿Demasiados datos?Usa "TOP(5)" en lugar de "*" para períodos de tiempo
¿Códigos incorrectos?Llama a get_table_variables() primero: los códigos varían entre tablas
¿No estás seguro de las unidades?Revisa la etiqueta de la variable para las unidades (kt, toneladas, porcentaje, etc.)
🇬🇧 Best practices (English)
IssueSolution
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.)

Ejemplos prácticos

Ej.: Tendencia de población Lerum vs Estocolmo

# 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)

Recursos


Por: Isak Skogstad