SCB MCP

Conecte LLMs ou chatbots de IA para permitir que consultem e interajam com dados e estatísticas oficiais do SCB (Estatísticas da Suécia)

Documentação

MCP SERVER

MCP Registry MCP Protocol

📊 Servidor SCB MCP

O SCB MCP é um servidor que LLMs e chatbots de IA podem usar para pesquisar, encontrar e recuperar dados e estatísticas oficiais do Statistics Sweden (SCB). Ele abrange mais de 1.200 tabelas estatísticas com dados sobre população e demografia, economia e finanças, meio ambiente, mercado de trabalho, educação e transporte. Perfeito para construir painéis interativos, ferramentas de pesquisa e aplicações educacionais.


Visão geral

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

O servidor SCB MCP oferece integração perfeita com a PxWebAPI 2.0 do Statistics Sweden (SCB), permitindo que LLMs acessem:
  • População e demografia: Dados regionais, migrações, nascimentos, óbitos (mais de 312 regiões)
  • Economia e finanças: PIB, impostos, estatísticas empresariais, contas nacionais
  • Meio ambiente: Gases de efeito estufa, gestão de água/resíduos, métricas de sustentabilidade
  • Mercado de trabalho: Emprego, desemprego, dados ocupacionais, correspondência de habilidades
  • Educação: Estatísticas de estudantes, matrículas em cursos, desenvolvimento de habilidades

Os dados abrangem desde a década de 1950 até o presente (atualizações mensais/trimestrais). Estatísticas populacionais em tempo real atualizadas até novembro 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

Principais recursos

RecursoDescrição
Acesso abrangenteMais de 1.200 tabelas, mais de 312 regiões, mais de 75 anos de dados históricos
Consulta inteligenteBusca em linguagem natural, resolução de códigos de região ("Lerum" → 1441), suporte a TOP() e curingas
Correspondência difusa"Goteborg" corresponde a "Göteborg", "Malmo" corresponde a "Malmö"
Amigável ao desenvolvedorDocumentação completa, erros claros com sugestões, validação de seleção, metadados nas respostas
Pronto para produçãoLimitação de taxa (30 req/10s), comportamento consistente, tipos de dados adequados, suporte a idiomas (SV/EN)
Sueco por padrãoTodas as ferramentas usam sueco (sv) como padrão para melhores resultados de busca
Dados em tempo realAtualizações mensais/trimestrais, dados populacionais até novembro de 2025

🚀 Instalação

O servidor é executado localmente via stdio. Clone, compile e aponte seu cliente MCP para 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)

Adicione à configuração MCP do cliente (ex.: ~/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"]
    }
  }
}

Guia de uso

1. Pesquisar tabelas estatí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ão

# 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. Recuperar dados

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

Melhores práticas

ProblemaSolução
Grande volume de dados?Use sempre preview_data() primeiro para testar
Dados demais?Use "TOP(5)" em vez de "*" para períodos de tempo
Códigos incorretos?Chame get_table_variables() primeiro — os códigos variam entre tabelas
Incerteza sobre unidades?Verifique o rótulo da variável para unidades (kt, toneladas, porcentagem, 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.)

Exemplos práticos

Ex: Tendência populacional 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