ibge-br-mcp

ibge-br-mcp

This server provides access to IBGE's public APIs, enabling AI assistants to query geographic, demographic, and statistical data from Brazil.

Category
Visit Server

README

ibge-br-mcp

npm version npm downloads Tests Coverage License: MIT smithery badge

MCP Server for IBGE (Brazilian Institute of Geography and Statistics) APIs. πŸ‡§πŸ‡· Leia em PortuguΓͺs

This server implements the Model Context Protocol (MCP) to provide access to IBGE's public APIs, enabling AI assistants to query geographic, demographic, and statistical data from Brazil.

Features

  • 23 specialized tools covering all major IBGE data domains
  • 227 automated tests with 97%+ core coverage
  • Automatic caching with configurable TTL for optimal performance
  • Retry mechanism with exponential backoff for network resilience
  • Comprehensive validation for all input parameters
  • Standardized error handling with helpful suggestions
  • Full TypeScript support with strict typing

Available Tools

Localities & Geography

Tool Description
ibge_estados List Brazilian states with region filtering
ibge_municipios List municipalities by state or search by name
ibge_localidade Get details of a locality by IBGE code
ibge_geocodigo Decode IBGE codes or search codes by name
ibge_vizinhos Find neighboring municipalities

Statistical Data (SIDRA)

Tool Description
ibge_sidra Query SIDRA tables (Census, PNAD, GDP, etc.)
ibge_sidra_tabelas List and search available SIDRA tables
ibge_sidra_metadados Get table metadata (variables, periods, levels)
ibge_pesquisas List IBGE research surveys and their tables

Economic & Social Indicators

Tool Description
ibge_indicadores Economic and social indicators (GDP, IPCA, unemployment)
ibge_censo Census data (1970-2022) with 16 themes
ibge_comparar Compare indicators across localities with rankings

Municipal Data (Cidades@)

Tool Description
ibge_cidades Municipal indicators (population, HDI, GDP per capita, etc.)

International Data

Tool Description
ibge_paises Country data following UN M49 methodology

Demographics

Tool Description
ibge_populacao Real-time Brazilian population projection
ibge_nomes Name frequency and rankings in Brazil

Classifications

Tool Description
ibge_cnae CNAE (National Classification of Economic Activities)

Maps & Geographic Meshes

Tool Description
ibge_malhas Geographic meshes (GeoJSON, TopoJSON, SVG)
ibge_malhas_tema Thematic meshes (biomes, Legal Amazon, semi-arid)

External Data (BCB & Health)

Tool Description
bcb Central Bank data (SELIC, IPCA, exchange rates)
datasaude Health indicators via IBGE/DataSUS

News & Calendar

Tool Description
ibge_noticias IBGE news and press releases
ibge_calendario IBGE release and collection calendar

Installation

Prerequisites

  • Node.js 18.x or higher
  • npm or yarn

From npm (recommended)

npm install -g ibge-br-mcp

From source

# Clone the repository
git clone https://github.com/SidneyBissoli/ibge-br-mcp.git
cd ibge-br-mcp

# Install dependencies
npm install

# Build the project
npm run build

Configuration

Claude Desktop

Add to your Claude Desktop configuration file (claude_desktop_config.json):

{
  "mcpServers": {
    "ibge-br-mcp": {
      "command": "npx",
      "args": ["ibge-br-mcp"]
    }
  }
}

Or if installed from source:

{
  "mcpServers": {
    "ibge-br-mcp": {
      "command": "node",
      "args": ["/path/to/ibge-br-mcp/dist/index.js"]
    }
  }
}

Claude Code

{
  "mcpServers": {
    "ibge-br-mcp": {
      "command": "npx",
      "args": ["ibge-br-mcp"]
    }
  }
}

Tool Usage Examples

ibge_estados

List all Brazilian states.

# List all states
ibge_estados

# States in Northeast region
ibge_estados(regiao="NE")

# States sorted by abbreviation
ibge_estados(ordenar="sigla")

ibge_municipios

List Brazilian municipalities.

# Municipalities of SΓ£o Paulo state
ibge_municipios(uf="SP")

# Search municipalities by name
ibge_municipios(busca="Campinas")

# Municipalities in MG containing "Belo"
ibge_municipios(uf="MG", busca="Belo")

ibge_cidades

Query municipal indicators (similar to Cidades@ portal).

# Panorama of SΓ£o Paulo
ibge_cidades(tipo="panorama", municipio="3550308")

# Population history
ibge_cidades(tipo="historico", municipio="3550308", indicador="populacao")

# List available research
ibge_cidades(tipo="pesquisas")

Available indicators: populacao, area, densidade, pib_per_capita, idh, escolarizacao, mortalidade, salario_medio, receitas, despesas

ibge_paises

Query international country data.

# List all countries
ibge_paises(tipo="listar")

# Brazil details
ibge_paises(tipo="detalhes", pais="BR")

# Search countries
ibge_paises(tipo="buscar", busca="Argentina")

# Countries in Americas
ibge_paises(tipo="listar", regiao="americas")

Regions: americas, europa, africa, asia, oceania

ibge_sidra

Query SIDRA tables (IBGE's Automatic Recovery System).

# Brazil population in 2023
ibge_sidra(tabela="6579", periodos="2023")

# Population by state
ibge_sidra(tabela="6579", nivel_territorial="3", periodos="2023")

# Census 2022 for SΓ£o Paulo municipality
ibge_sidra(tabela="9514", nivel_territorial="6", localidades="3550308")

Common tables:

Code Description
6579 Population estimates (annual)
9514 Census 2022 population
4714 Unemployment rate (PNAD)
6706 GDP at current prices

Territorial levels:

Code Level
1 Brazil
2 Region (North, Northeast, etc.)
3 State (UF)
6 Municipality
7 Metropolitan Region
106 Health Region
127 Legal Amazon
128 Semi-arid

ibge_censo

Query Census data (1970-2022).

# Population Census 2022
ibge_censo(ano="2022", tema="populacao")

# Historical population series
ibge_censo(ano="todos", tema="populacao")

# Literacy by state in 2010
ibge_censo(ano="2010", tema="alfabetizacao", nivel_territorial="3")

Available themes: populacao, alfabetizacao, domicilios, idade_sexo, religiao, cor_raca, rendimento, migracao, educacao, trabalho

ibge_indicadores

Query economic and social indicators.

# GDP
ibge_indicadores(indicador="pib")

# IPCA last 12 months
ibge_indicadores(indicador="ipca", periodos="last 12")

# Unemployment by state
ibge_indicadores(indicador="desemprego", nivel_territorial="3")

# List all indicators
ibge_indicadores(indicador="listar")

Available indicators:

Category Indicators
Economic pib, pib_variacao, pib_per_capita, industria, comercio, servicos
Prices ipca, ipca_acumulado, inpc
Labor desemprego, ocupacao, rendimento, informalidade
Population populacao, densidade
Agriculture agricultura, pecuaria

ibge_nomes

Query name frequency and rankings.

# Frequency of "Maria"
ibge_nomes(tipo="frequencia", nomes="Maria")

# Compare names
ibge_nomes(tipo="frequencia", nomes="JoΓ£o,JosΓ©,Pedro")

# Ranking of names in 2000s
ibge_nomes(tipo="ranking", decada=2000)

# Female names ranking
ibge_nomes(tipo="ranking", sexo="F")

ibge_malhas

Get geographic meshes (maps).

# Brazil with states
ibge_malhas(localidade="BR", resolucao="2")

# SΓ£o Paulo with municipalities
ibge_malhas(localidade="SP", resolucao="5")

# Specific municipality
ibge_malhas(localidade="3550308")

# SVG format
ibge_malhas(localidade="BR", formato="svg")

Resolution levels:

Value Internal Divisions
0 No divisions (outline only)
2 States
5 Municipalities

bcb

Query Central Bank of Brazil data.

# SELIC last 12 months
bcb(indicador="selic", ultimos=12)

# IPCA for 2023
bcb(indicador="ipca", dataInicio="01/01/2023", dataFim="31/12/2023")

# Dollar exchange rate last 30 days
bcb(indicador="dolar_venda", ultimos=30)

Available indicators: selic, cdi, tr, ipca, ipca_acum, igpm, inpc, dolar_compra, dolar_venda, euro, desemprego

datasaude

Query health indicators via IBGE/DataSUS.

# Infant mortality in Brazil
datasaude(indicador="mortalidade_infantil")

# Life expectancy by state
datasaude(indicador="esperanca_vida", nivel_territorial="3")

# List indicators
datasaude(indicador="listar")

Available indicators: mortalidade_infantil, esperanca_vida, nascidos_vivos, obitos, fecundidade, saneamento_agua, saneamento_esgoto, plano_saude

APIs Used

IBGE APIs

  • Localities: servicodados.ibge.gov.br/api/v1/localidades
  • Names: servicodados.ibge.gov.br/api/v2/censos/nomes
  • Aggregates/SIDRA: servicodados.ibge.gov.br/api/v3/agregados
  • SIDRA API: apisidra.ibge.gov.br/values
  • Meshes: servicodados.ibge.gov.br/api/v3/malhas
  • News: servicodados.ibge.gov.br/api/v3/noticias
  • Population: servicodados.ibge.gov.br/api/v1/projecoes/populacao
  • CNAE: servicodados.ibge.gov.br/api/v2/cnae
  • Calendar: servicodados.ibge.gov.br/api/v3/calendario
  • Countries: servicodados.ibge.gov.br/api/v1/paises
  • Research: servicodados.ibge.gov.br/api/v1/pesquisas

External APIs

  • Central Bank (BCB): api.bcb.gov.br/dados/serie/bcdata.sgs - Interest rates, exchange rates, inflation

Development

# Build
npm run build

# Watch mode
npm run watch

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Lint
npm run lint

# Format
npm run format

# Test with MCP inspector
npm run inspector

Project Structure

ibge-br-mcp/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.ts              # Main MCP server
β”‚   β”œβ”€β”€ types.ts              # TypeScript types
β”‚   β”œβ”€β”€ config.ts             # Configuration and constants
β”‚   β”œβ”€β”€ cache.ts              # Request caching system
β”‚   β”œβ”€β”€ retry.ts              # Retry with exponential backoff
β”‚   β”œβ”€β”€ errors.ts             # Standardized error handling
β”‚   β”œβ”€β”€ validation.ts         # Input validation helpers
β”‚   β”œβ”€β”€ metrics.ts            # Metrics and logging
β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   └── formatters.ts     # Formatting utilities
β”‚   └── tools/
β”‚       β”œβ”€β”€ index.ts          # Tool exports
β”‚       β”œβ”€β”€ estados.ts        # ibge_estados
β”‚       β”œβ”€β”€ municipios.ts     # ibge_municipios
β”‚       β”œβ”€β”€ localidade.ts     # ibge_localidade
β”‚       β”œβ”€β”€ geocodigo.ts      # ibge_geocodigo
β”‚       β”œβ”€β”€ censo.ts          # ibge_censo
β”‚       β”œβ”€β”€ populacao.ts      # ibge_populacao
β”‚       β”œβ”€β”€ sidra.ts          # ibge_sidra
β”‚       β”œβ”€β”€ sidra-tabelas.ts  # ibge_sidra_tabelas
β”‚       β”œβ”€β”€ sidra-metadados.ts# ibge_sidra_metadados
β”‚       β”œβ”€β”€ indicadores.ts    # ibge_indicadores
β”‚       β”œβ”€β”€ cnae.ts           # ibge_cnae
β”‚       β”œβ”€β”€ calendario.ts     # ibge_calendario
β”‚       β”œβ”€β”€ comparar.ts       # ibge_comparar
β”‚       β”œβ”€β”€ malhas.ts         # ibge_malhas
β”‚       β”œβ”€β”€ malhas-tema.ts    # ibge_malhas_tema
β”‚       β”œβ”€β”€ vizinhos.ts       # ibge_vizinhos
β”‚       β”œβ”€β”€ bcb.ts            # bcb
β”‚       β”œβ”€β”€ datasaude.ts      # datasaude
β”‚       β”œβ”€β”€ pesquisas.ts      # ibge_pesquisas
β”‚       β”œβ”€β”€ nomes.ts          # ibge_nomes
β”‚       β”œβ”€β”€ noticias.ts       # ibge_noticias
β”‚       β”œβ”€β”€ paises.ts         # ibge_paises
β”‚       └── cidades.ts        # ibge_cidades
β”œβ”€β”€ tests/                    # Test files
β”œβ”€β”€ dist/                     # Compiled files
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ vitest.config.ts
└── README.md

Testing

The project includes a comprehensive test suite with 227 tests covering:

  • Validation functions
  • Retry mechanism
  • Formatting utilities
  • Error handling
  • Cache operations
  • Integration tests with mocks
npm test

Quality Assurance

This project maintains high code quality standards:

  • 227 automated tests covering validation, caching, retry logic, formatting, and integrations
  • 97%+ test coverage on core modules (cache, validation, errors, types)
  • ESLint for code linting with zero warnings
  • Prettier for consistent code formatting
  • TypeScript strict mode for type safety
  • Automated CI/CD via GitHub Actions

Run tests locally:

# Run all tests
npm test

# Run tests with coverage
npm run test:coverage

# Run linter
npm run lint

License

MIT

Author

Sidney Bissoli

References

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured