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
📊 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.
- 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)
| 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 |
Características principales
| Función | Descripción |
|---|---|
| Acceso integral | Más de 1200 tablas, más de 312 regiones, más de 75 años de datos históricos |
| Búsqueda inteligente | Bú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 desarrolladores | Documentación completa, errores claros con sugerencias, validación de selección, metadatos en las respuestas |
| Listo para producción | Limitación de velocidad (30 solicitudes/10 s), comportamiento consistente, tipos de datos correctos, soporte de idiomas (SV/EN) |
| Sueco por defecto | Todas las herramientas usan sueco (sv) como predeterminado para obtener los mejores resultados de búsqueda |
| Datos en tiempo real | Actualizaciones 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
| Problema | Solució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)
| 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.) |
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
- Base de datos de SCB: https://www.scb.se/
- Documentación de la API: https://www.scb.se/en/services/open-data-api/pxwebapi/
- Explorador de datos: https://pxweb.scb.se/pxweb/en/
Por: Isak Skogstad