# IBGE Brasil MCP (remote · ibge.sidneybissoli.com)

MCP server for live, sourced Brazilian public data from the official IBGE APIs.

- Trust score: 69/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `ibge.sidneybissoli.com`: 69/100 (this document), [markdown](https://verifymcp.io/servers/sidneybissoli-ibge-br-mcp/ibge.md), [page](https://verifymcp.io/servers/sidneybissoli-ibge-br-mcp/ibge)
- npm · `ibge-br-mcp`: 75/100, [markdown](https://verifymcp.io/servers/sidneybissoli-ibge-br-mcp/ibge-br-mcp.md), [page](https://verifymcp.io/servers/sidneybissoli-ibge-br-mcp/ibge-br-mcp)

## Channel facts

- Endpoint: `https://ibge.sidneybissoli.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `3.0.2`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 73/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 8404 tokens (~311/item across 27 items; 22 tools + 5 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http sidneybissoli-ibge-br-mcp https://ibge.sidneybissoli.com/mcp
```

### Codex

```toml
[mcp_servers.sidneybissoli-ibge-br-mcp]
url = "https://ibge.sidneybissoli.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sidneybissoli-ibge-br-mcp": {
      "type": "remote",
      "url": "https://ibge.sidneybissoli.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sidneybissoli-ibge-br-mcp --url https://ibge.sidneybissoli.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  sidneybissoli-ibge-br-mcp:
    url: "https://ibge.sidneybissoli.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "sidneybissoli-ibge-br-mcp": {
      "type": "http",
      "url": "https://ibge.sidneybissoli.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 67, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 67, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 65, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 64)

First indexed and scored.

## MCP tools (22)

### `ibge_estados` (~199 tokens)

Lists all Brazilian states from IBGE.

Features:
\- Lists all 27 states (26 states + Federal District)
\- Filter by region (North, Northeast, Southeast, South, Central-West)
\- Sort by ID, name, or abbreviation

Examples:
\- List all states: (no parameters)
\- Northeast states: regiao="NE"
\- Sorted by abbreviation: ordenar="sigla"

Use a different tool when:
\- Municipalities of a state → ibge_municipios
\- Details/hierarchy of one locality by code → ibge_localidade

Behavior: read-only and idempotent — a live GET against the public IBGE Localidades API. Returns a Markdown table.

Input parameters:

- `ordenar` (string): Campo para ordenação dos resultados
- `regiao` (string): Filtrar por região: N (Norte), NE (Nordeste), SE (Sudeste), S (Sul), CO (Centro-Oeste)

Output parameters:

- `estados` (array): Lista de estados
- `total` (number): Total de estados retornados

### `ibge_municipios` (~255 tokens)

Lists Brazilian municipalities from IBGE.

Features:
\- List municipalities by state (using state abbreviation)
\- List all municipalities in Brazil (5,570 municipalities)
\- Search by municipality name
\- Returns 7-digit IBGE code

Examples:
\- São Paulo municipalities: uf="SP"
\- Search by name: busca="Campinas"
\- MG municipalities containing "Belo": uf="MG", busca="Belo"

Use a different tool when:
\- Resolve/decode a code at any level (region, state, district), not just municipalities → ibge_geocodigo
\- Full details/hierarchy of one locality by code → ibge_localidade
\- Neighboring municipalities → ibge_vizinhos

Behavior: read-only and idempotent — a live GET against the public IBGE Localidades API. Returns a Markdown table.

Input parameters:

- `busca` (string): Termo para buscar no nome do município
- `limite` (number): Número máximo de resultados (padrão: 100, máximo: 5570)
- `uf` (string): Estado por sigla (SP), nome (São Paulo) ou código IBGE (35). Se não informado, retorna todos os municípios do Brasil.

Output parameters:

- `busca` (string): Termo de busca aplicado ao nome do município
- `municipios` (array): Lista de municípios retornados (após filtro e limite)
- `total` (number): Total de municípios encontrados antes do limite
- `uf` (string): UF informada no filtro (como recebida na entrada)

### `ibge_localidade` (~249 tokens)

Returns details of a specific locality by IBGE code.

Features:
\- State information (2-digit code)
\- Municipality information (7-digit code)
\- District information (9-digit code)
\- Complete hierarchy (region, mesoregion, microregion)

Examples:
\- São Paulo state: codigo=35
\- São Paulo city: codigo=3550308
\- District: codigo=355030805

This tool returns the full record of ONE locality you already have the code for.
Use a different tool when:
\- You have a name and need the code → ibge_municipios (municipalities) or ibge_geocodigo (any level)
\- You want to decompose/understand a code's structure → ibge_geocodigo

Behavior: read-only and idempotent — a live GET against the public IBGE Localidades API. Returns a Markdown record.

Input parameters:

- `codigo` (number, required): Código IBGE da localidade (estado: 2 dígitos, município: 7 dígitos, distrito: 9 dígitos)
- `tipo` (string): Tipo da localidade. Se não informado, será inferido pelo tamanho do código.

Output parameters:

- `estado` (object): Estado da localidade (município ou distrito)
- `id` (number): Código IBGE da localidade
- `mesorregiao` (object): Mesorregião do município
- `microrregiao` (object): Microrregião do município
- `municipio` (object): Município ao qual o distrito pertence (apenas para distritos)
- `nome` (string): Nome da localidade
- `regiao` (object): Região do estado (apenas para estados)
- `regiaoImediata` (object): Região imediata do município
- `regiaoIntermediaria` (object): Região intermediária do município
- `sigla` (string): Sigla da UF (apenas para estados)
- `tipo` (string): Tipo da localidade retornada

### `ibge_populacao` (~190 tokens)

Returns real-time Brazilian population projection.

Features:
\- Current population estimate
\- Birth rate (average time between births)
\- Death rate (average time between deaths)
\- Daily population increment

Source: IBGE - Brazilian Population Projection

This tool ONLY returns Brazil's real-time national projection.

Use a different tool when:
\- Population of a specific municipality/state → ibge_cidades (panorama)
\- Census or historical population → ibge_censo
\- Comparing/ranking multiple localities → ibge_comparar
\- Population time series → ibge_indicadores
\- An arbitrary SIDRA table → ibge_sidra

Behavior: read-only and idempotent — a live GET against the public IBGE population-projection API. Returns Markdown plus a typed structuredContent payload.

Input parameters:

- `localidade` (string): Localidade para projeção populacional (atualmente apenas BR disponível)

Output parameters:

- `horario` (string): Data/hora da consulta
- `localidade` (string): Localidade da projeção
- `periodoMedio` (object): Indicadores do período médio
- `populacao` (number): População projetada (habitantes)

### `ibge_sidra` (~763 tokens)

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

SIDRA contains data from IBGE surveys like Census, PNAD, GDP, etc.

Common tables:
\- 6579: Population estimates (annual)
\- 9514: Census 2022 population
\- 200: Census population (1970-2010)
\- 4714: Unemployment rate (PNAD Contínua)
\- 6381: Average income (PNAD Contínua)
\- 6706: GDP at current prices
\- 5938: GDP per capita

Territorial levels:
\- 1: Brazil
\- 2: Region (North, Northeast, etc.)
\- 3: State (UF)
\- 6: Municipality
\- 7: Metropolitan Region

Examples:
\- Brazil population 2023: tabela="6579", periodos="2023"
\- Population by state: tabela="6579", nivel_territorial="3"
\- Census 2022 by municipality: tabela="9514", nivel_territorial="6", localidades="3550308"

ibge_sidra is the low-level engine. Prefer a friendlier wrapper when it fits:
\- Census themes (1970–2022) → ibge_censo
\- Economic/social time series → ibge_indicadores
\- Rank/compare 2–10 localities → ibge_comparar
\- One municipality's panel → ibge_cidades
Use ibge_sidra_tabelas and ibge_sidra_metadados to find a table code and its structure before querying.

Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown plus a typed structuredContent payload.

Input parameters:

- `campos` (string): Selecionar apenas algumas colunas por rótulo, separadas por vírgula (ex: 'Valor,Ano'). Reduz o volume da resposta. Omitir traz todas.
- `classificacoes` (string): Classificações no formato 'id[categorias]' (ex: '2[6794]' para sexo masculino)
- `formato` (string): Formato de saída: 'json' para dados brutos ou 'tabela' para formato legível
- `localidades` (string): Códigos das localidades separados por vírgula, ou 'all' para todas
- `nivel_territorial` (string): Nível territorial (código N): 1=Brasil, 2=Região, 3=UF, 6=Município, 7=Região Metropolitana, 8=Mesorregião, 9=Microrregião, 10=Distrito, 11=Subdistrito, 13=RM/RIDE, 14=RIDE, 15=Aglomeração Urbana, 17…
- `pagina` (integer): Página de resultados (100 registros por página)
- `periodos` (string): Períodos: 'last' para último, 'all' para todos, ou anos específicos (ex: 2020,2021,2022)
- `tabela` (string, required): Código da tabela SIDRA (ex: 6579 para estimativas de população, 9514 para censo 2022)
- `variaveis` (string): IDs das variáveis separados por vírgula, ou 'allxp' para todas

Output parameters:

- `colunas` (array): Rótulos das colunas, na ordem
- `nome` (string): Nome da tabela (quando conhecido)
- `paginacao` (object): Metadados de paginação para continuação
- `registros` (array): Registros da página atual: cada um mapeia rótulo da coluna -> valor
- `tabela` (string): Código da tabela SIDRA consultada
- `totalRegistros` (number): Total de registros de dados disponíveis (todas as páginas)

### `ibge_nomes` (~351 tokens)

Queries name frequency and rankings in Brazil (IBGE).

Features:
1\. **Name frequency** (tipo='frequencia'):
   \- Birth frequency by decade
   \- Multiple names separated by comma
   \- Filter by sex and locality

2\. **Name ranking** (tipo='ranking'):
   \- Most popular names
   \- Filter by decade, sex, and locality

Available decades: 1930-2010

Examples:
\- Frequency of "Maria": tipo="frequencia", nomes="Maria"
\- Compare names: tipo="frequencia", nomes="João,José,Pedro"
\- 2000s ranking: tipo="ranking", decada=2000
\- Female names: tipo="ranking", sexo="F"

Behavior: read-only and idempotent — a live GET against the public IBGE Nomes (Censo) API. Returns a Markdown table.

Input parameters:

- `decada` (number): Para tipo='ranking': Década do ranking (ex: 1990, 2000, 2010)
- `limite` (number): Para tipo='ranking': Número de nomes (padrão: 20)
- `localidade` (string): Código IBGE da localidade (UF: 2 dígitos, Município: 7 dígitos)
- `nomes` (string): Para tipo='frequencia': Nome ou nomes separados por vírgula
- `sexo` (string): Filtrar por sexo: M (masculino) ou F (feminino)
- `tipo` (string, required): Tipo de consulta: 'frequencia' para buscar nomes específicos ou 'ranking' para ver os mais populares

Output parameters:

- `frequencia` (array): Resultados de frequência (presente quando tipo='frequencia')
- `ranking` (object): Resultado do ranking (presente quando tipo='ranking')
- `tipo` (string): Tipo da consulta realizada

### `ibge_noticias` (~479 tokens)

Searches and lists already-published IBGE news articles and press releases.

Use this to find recent IBGE publications or announcements about a survey or topic — when an indicator was released, or news mentioning a term like "censo". Results are sorted newest-first; with no parameters it returns the 10 most recent items.

Parameters:
\- busca: free-text term to match (e.g. "PIB", "censo")
\- tipo: "release" (official publication of survey results) or "noticia" (general news); omit for both
\- de / ate: date range, format DD/MM/AAAA (e.g. de="01/01/2024", ate="31/12/2024")
\- destaque: true to return only featured items
\- quantidade: how many to return (default 10, max 100); pagina: page number to page through more

Each item returns: title, type (release/news), publication date, editoria (section), related products/surveys, a featured flag, a plain-text summary, and a link to the full article. The header reports the total count and current page.

Examples:
\- Latest 10 news: (no parameters)
\- Search census: busca="censo"
\- 2024 news: de="01/01/2024", ate="31/12/2024"
\- Releases only: tipo="release"

Use a different tool when:
\- Scheduled/upcoming release dates (not yet published) → ibge_calendario

Behavior: read-only and idempotent — a live GET against the public IBGE Notícias API. Returns a Markdown list.

Input parameters:

- `ate` (string): Data final no formato DD/MM/AAAA (ex: 31/12/2024)
- `busca` (string): Termo para buscar nas notícias
- `de` (string): Data inicial no formato DD/MM/AAAA (ex: 01/01/2024)
- `destaque` (boolean): Filtrar apenas notícias em destaque
- `pagina` (number): Número da página para paginação
- `quantidade` (number): Quantidade de notícias a retornar (padrão: 10, máximo: 100)
- `tipo` (string): Tipo de publicação: 'release' ou 'noticia'

Output parameters:

- `busca` (string): Termo de busca aplicado, se houver
- `noticias` (array): Lista de notícias retornadas
- `pagina` (number): Página atual
- `total` (number): Total de notícias encontradas na consulta
- `totalPaginas` (number): Número total de páginas

### `ibge_sidra_tabelas` (~288 tokens)

Lists and searches available SIDRA tables.

Features:
\- List all SIDRA tables (aggregates)
\- Search by table name
\- Filter by survey (Census, PNAD, GDP, etc.)
\- Shows code and name of each table

SIDRA contains data from various surveys:
\- Demographic Census
\- PNAD Contínua (employment, income)
\- National Accounts (GDP)
\- Industrial Survey
\- Agricultural Survey

Examples:
\- List tables: (no parameters)
\- Search population tables: busca="população"
\- Census tables: pesquisa="censo"

This is step 1 of the SIDRA workflow: find a table code → ibge_sidra_metadados (structure) → ibge_sidra (query).
For common data, a wrapper is usually easier: ibge_censo, ibge_indicadores, ibge_comparar, ibge_cidades.

Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns a Markdown table.

Input parameters:

- `busca` (string): Termo para buscar no nome das tabelas/agregados
- `limite` (number): Número máximo de resultados (padrão: 20)
- `pesquisa` (string): Filtrar por código ou nome da pesquisa (ex: 'censo', 'pnad', 'pib')

Output parameters:

- `busca` (string): Termo de busca aplicado, se houver
- `pesquisa` (string): Filtro de pesquisa aplicado, se houver
- `tabelas` (array): Lista de tabelas SIDRA retornadas
- `total` (number): Total de tabelas que correspondem aos critérios

### `ibge_sidra_metadados` (~227 tokens)

Returns metadata for a specific SIDRA table.

Features:
\- General info (name, survey, subject, periodicity)
\- Available territorial levels
\- Variable list with units
\- Classifications and categories
\- Available periods

Use this tool to understand table structure BEFORE querying data with ibge_sidra.

Examples:
\- Population table metadata: tabela="6579"
\- Census 2022 metadata: tabela="9514"
\- PNAD unemployment: tabela="4714"

Use this after finding a table code (ibge_sidra_tabelas) and before querying with ibge_sidra.

Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown.

Input parameters:

- `incluir_localidades` (boolean): Incluir níveis territoriais disponíveis (padrão: false)
- `incluir_periodos` (boolean): Incluir lista de períodos disponíveis (padrão: true)
- `tabela` (string, required): Código da tabela/agregado SIDRA (ex: '6579', '9514', '4714')

Output parameters:

- `assunto` (string): Assunto/tema da tabela
- `codigo` (string): Código da tabela/agregado SIDRA
- `niveisTerritoriais` (array): Níveis territoriais disponíveis para a tabela
- `nome` (string): Nome da tabela
- `periodicidade` (object): Periodicidade da pesquisa
- `periodos` (array): Períodos disponíveis para a tabela (quando incluir_periodos)
- `pesquisa` (string): Nome da pesquisa de origem
- `url` (string): URL da tabela no SIDRA
- `variaveis` (array): Variáveis da tabela, com unidades e classificações/categorias

### `ibge_malhas` (~454 tokens)

Gets geographic meshes (maps) from IBGE in GeoJSON, TopoJSON, or SVG format.

Features:
\- Meshes for Brazil, regions, states, municipalities
\- Different resolution levels (internal divisions)
\- Different quality levels
\- Formats: GeoJSON (data), TopoJSON (compact), SVG (image)

Locality types:
\- "BR" or "1" = Entire Brazil
\- State abbreviation (e.g., "SP", "RJ")
\- State code (e.g., "35" for SP)
\- Municipality code (7 digits)

Resolution (internal divisions):
\- 0 = Outline only
\- 2 = States
\- 5 = Municipalities

Examples:
\- Brazil with states: localidade="BR", resolucao="2"
\- São Paulo with municipalities: localidade="SP", resolucao="5"
\- SVG format: localidade="BR", formato="svg"

Use a different tool when:
\- Thematic meshes (biomes, Legal Amazon, semi-arid, metropolitan regions) → ibge_malhas_tema

Behavior: read-only and idempotent — a live GET against the public IBGE Malhas API. Returns the mesh in the requested format (GeoJSON, TopoJSON, or SVG).

Input parameters:

- `formato` (string): Formato de saída (padrão: geojson)
- `intrarregiao` (string): Código de região para filtrar (apenas quando localidade=BR)
- `localidade` (string, required): Código IBGE ou sigla da localidade (ex: 'BR', 'SP', '35', '3550308')
- `qualidade` (string): Qualidade do traçado: 1=mínima, 2=baixa, 3=intermediária, 4=máxima
- `resolucao` (string): Resolução/divisões internas: 0 = Sem divisões internas 1 = Macrorregiões (apenas para BR) 2 = Unidades da Federação 3 = Mesorregiões 4 = Microrregiões 5 = Municípios
- `tipo` (string): Tipo de divisão territorial

Output parameters:

- `formato` (string): Formato de saída solicitado (geojson, topojson ou svg)
- `intrarregiao` (string): Código de região usado para filtrar (apenas quando localidade=BR)
- `localidade` (string): Código IBGE ou sigla da localidade consultada
- `qualidade` (string): Qualidade do traçado solicitada
- `resolucao` (string): Resolução/divisões internas solicitada
- `tipo` (string): Tipo de divisão territorial, quando informado
- `url` (string): URL para download da malha completa

### `ibge_pesquisas` (~278 tokens)

Lists available IBGE surveys and their tables.

Features:
\- List all IBGE surveys (Census, PNAD, GDP, etc.)
\- Search by name or code
\- Show details and tables of a specific survey
\- Categorize surveys by theme

Main surveys:
\- **Census**: Demographic, Agricultural, MUNIC
\- **PNAD Contínua**: Employment, income, education
\- **National Accounts**: GDP, investments
\- **Economic Surveys**: Industry, Commerce, Services
\- **Price Indices**: IPCA, INPC

Examples:
\- List all: (no parameters)
\- Search population: busca="população"
\- PNAD details: detalhes="pnad"

This lists surveys, not data. To find table codes use ibge_sidra_tabelas; to query data use ibge_sidra (or a wrapper: ibge_censo, ibge_indicadores, ibge_comparar, ibge_cidades).

Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA/Pesquisas API. Returns a Markdown list.

Input parameters:

- `busca` (string): Termo para buscar no nome ou ID da pesquisa
- `detalhes` (string): Código da pesquisa para ver detalhes e tabelas disponíveis

Output parameters:

- `busca` (string): Termo de busca aplicado, se houver (modo lista)
- `modo` (string): Modo de consulta que originou este resultado: lista de pesquisas ou detalhes de uma
- `pesquisa` (object): Detalhes de uma pesquisa específica (modo detalhes)
- `pesquisas` (array): Lista de pesquisas (modo lista)
- `total` (number): Total de pesquisas encontradas (modo lista)

### `ibge_censo` (~611 tokens)

Queries IBGE Demographic Census data (1970-2022).

Simplified tool to access census data without knowing SIDRA table codes.

Available years: 1970, 1980, 1991, 2000, 2010, 2022

Available themes:
\- populacao: Resident population
\- alfabetizacao: Literacy rate
\- domicilios: Housing characteristics
\- idade_sexo: Age pyramid
\- religiao: Religion distribution
\- cor_raca: Race/color
\- rendimento: Monthly income
\- educacao: Education level
\- trabalho: Employment

Examples:
\- Population 2022: ano="2022", tema="populacao"
\- Historical series: ano="todos", tema="populacao"
\- Literacy 2010 by state: ano="2010", tema="alfabetizacao", nivel_territorial="3"
\- List tables: tema="listar"

Use a different tool when:
\- Current real-time Brazil population → ibge_populacao
\- One municipality's current panel (estimate, HDI, GDP) → ibge_cidades
\- Comparing/ranking localities → ibge_comparar
\- An arbitrary SIDRA table → ibge_sidra

Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown plus a typed structuredContent payload.

Input parameters:

- `ano` (string): Ano do censo (1970, 1980, 1991, 2000, 2010, 2022) ou 'todos' para série histórica
- `campos` (string): Selecionar apenas algumas colunas por rótulo, separadas por vírgula (ex: 'Valor,Ano'). Reduz o volume da resposta.
- `formato` (string): Formato de saída
- `localidades` (string): Códigos das localidades ou 'all'
- `nivel_territorial` (string): Nível territorial (código N): 1=Brasil, 2=Região, 3=UF, 6=Município
- `tema` (string): Tema dos dados: - populacao: População residente - alfabetizacao: Taxa de alfabetização - domicilios: Características dos domicílios - idade_sexo: Pirâmide etária - religiao: Distribuição por religiã…

Output parameters:

- `ano` (string): Ano(s) de referência
- `colunas` (array): Rótulos das colunas, na ordem
- `descricao` (string): Descrição da tabela
- `registros` (array): Registros: cada um mapeia rótulo da coluna -> valor
- `tabela` (string): Tabela SIDRA de origem
- `tema` (string): Tema do censo consultado
- `totalRegistros` (number): Total de registros de dados

### `ibge_indicadores` (~460 tokens)

Queries IBGE economic and social indicators.

Available indicators:

\**Economic:**
\- pib: GDP at current prices
\- pib_variacao: GDP variation (%)
\- pib_per_capita: GDP per capita
\- industria: Industrial production
\- comercio: Retail sales
\- servicos: Services volume

\**Prices:**
\- ipca: Monthly IPCA
\- ipca_acumulado: 12-month IPCA
\- inpc: Monthly INPC

\**Labor:**
\- desemprego: Unemployment rate
\- ocupacao: Employed people
\- rendimento: Average income
\- informalidade: Informality rate

\**Population:**
\- populacao: Population estimate
\- densidade: Population density

Examples:
\- GDP: indicador="pib"
\- IPCA last 12 months: indicador="ipca", periodos="last 12"
\- Unemployment by state: indicador="desemprego", nivel_territorial="3"
\- List indicators: indicador="listar"

Use a different tool when:
\- Comparing/ranking localities → ibge_comparar
\- Census themes → ibge_censo
\- One municipality's panel → ibge_cidades

Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown plus a typed structuredContent payload.

Input parameters:

- `campos` (string): Selecionar apenas algumas colunas por rótulo, separadas por vírgula (ex: 'Valor,Ano'). Reduz o volume da resposta.
- `categoria` (string): Filtrar por categoria de indicadores
- `formato` (string): Formato de saída
- `indicador` (string): Nome do indicador (ex: "pib", "ipca", "desemprego", "populacao"). Use "listar" para ver todos os indicadores disponíveis.
- `localidades` (string): Códigos das localidades ou 'all'
- `nivel_territorial` (string): Nível territorial (código N): 1=Brasil, 2=Região, 3=UF
- `periodos` (string): Períodos (ex: '2023', 'last', 'last 4')

Output parameters:

- `colunas` (array): Rótulos das colunas, na ordem
- `indicador` (string): Chave do indicador consultado
- `nome` (string): Nome do indicador
- `registros` (array): Registros: cada um mapeia rótulo da coluna -> valor
- `tabela` (string): Tabela SIDRA de origem
- `totalRegistros` (number): Total de registros de dados

### `ibge_cnae` (~364 tokens)

Queries CNAE (National Classification of Economic Activities) from IBGE.

CNAE is the official classification for economic activities in Brazil.

Hierarchical structure:
\- Section (letter A-U): 21 main categories
\- Division (2 digits): 87 divisions
\- Group (3 digits): 285 groups
\- Class (4-5 digits): 673 classes
\- Subclass (7 digits): 1,332 subclasses

Features:
\- Search by CNAE code
\- Search by activity description
\- List by hierarchical level
\- Show complete hierarchy

Examples:
\- Search software: busca="software"
\- Specific code: codigo="6201-5/01"
\- View section: codigo="J"
\- List divisions: nivel="divisoes"

Behavior: read-only and idempotent — a live GET against the public IBGE CNAE API. Returns Markdown.

Input parameters:

- `busca` (string): Termo para buscar na descrição das atividades (ex: 'software', 'restaurante', 'comércio')
- `codigo` (string): Código CNAE para buscar (seção, divisão, grupo, classe ou subclasse). Exemplos: - Seção: "A" (agricultura) - Divisão: "01" (agricultura e pecuária) - Grupo: "01.1" (produção de lavouras) - Classe: "0…
- `limite` (number): Número máximo de resultados (padrão: 20)
- `nivel` (string): Nível hierárquico para listar (padrão: mostra todos os níveis relevantes)

Output parameters:

- `busca` (object): Presente no modo de busca por termo
- `codigo` (object): Presente no modo de consulta por código
- `lista` (object): Presente no modo de listagem por nível
- `modo` (string): Modo de resposta que gerou os dados

### `ibge_geocodigo` (~359 tokens)

Decodes IBGE codes or searches codes by locality name.

Features:
\- Decode region, state, municipality, or district codes
\- Search IBGE code by name
\- Show complete geographic hierarchy
\- Return related codes

Code structure:
\- 1 digit: Region (1=North, 2=Northeast, 3=Southeast, 4=South, 5=Central-West)
\- 2 digits: State (11-53)
\- 7 digits: Municipality
\- 9 digits: District

Examples:
\- Decode municipality: codigo="3550308"
\- Decode state: codigo="35"
\- Search by name: nome="São Paulo"
\- Municipality in state: nome="Campinas", uf="SP"

This tool decodes a code's structure and resolves name→code at any level.
Use a different tool when:
\- You only need to list/search municipalities → ibge_municipios
\- You want the full detailed record of one locality → ibge_localidade

Behavior: read-only and idempotent — a live GET against the public IBGE Localidades API. Returns Markdown.

Input parameters:

- `codigo` (string): Código IBGE para decodificar. Formatos aceitos: - 1 dígito: Região (1-5) - 2 dígitos: UF (11-53) - 7 dígitos: Município - 9 dígitos: Distrito
- `nome` (string): Nome da localidade para encontrar o código IBGE (estado ou município)
- `uf` (string): Estado por sigla (SP), nome (São Paulo) ou código IBGE (35) para restringir a busca por nome de município

Output parameters:

- `codigo` (number): Código IBGE da localidade resolvida (ausente em resultados do tipo lista)
- `codigoSidra` (string): Código SIDRA de 6 dígitos do município (apenas tipo municipio)
- `estados` (array): Estados pertencentes à região (apenas tipo regiao)
- `hierarquia` (array): Hierarquia geográfica completa, da região ao município/distrito (tipo municipio/distrito)
- `matches` (array): Municípios encontrados na busca por nome (apenas tipo lista)
- `nome` (string): Nome da localidade resolvida
- `regiao` (string): Nome da região à qual a UF pertence (apenas tipo uf)
- `regiaoCodigo` (number): Código IBGE da região à qual a UF pertence (apenas tipo uf)
- `sigla` (string): Sigla da região ou UF, quando aplicável
- `tipo` (string): Tipo do resultado: localidade decodificada (regiao/uf/municipio/distrito) ou lista de municípios encontrados (lista)
- `total` (number): Quantidade de municípios encontrados na busca por nome (apenas tipo lista)

### `ibge_calendario` (~326 tokens)

Queries IBGE release and collection calendar.

Features:
\- List upcoming survey releases
\- Filter by product (IPCA, PNAD, GDP, etc.)
\- Filter by period
\- Distinguish releases from field collections

Event types:
\- **Release**: Publication of survey results
\- **Collection**: Field research period

Examples:
\- Upcoming releases: (no parameters)
\- IPCA releases: produto="IPCA"
\- 2024 calendar: de="01/01/2024", ate="31/12/2024"
\- Field collections: tipo="coleta"

Use a different tool when:
\- Already-published news and releases → ibge_noticias

Behavior: read-only and idempotent — a live GET against the public IBGE Calendário API. Returns a Markdown list.

Input parameters:

- `ate` (string): Data final no formato DD/MM/AAAA (ex: '31/12/2024')
- `de` (string): Data inicial no formato DD/MM/AAAA (ex: '01/01/2024')
- `pagina` (number): Número da página (padrão: 1)
- `produto` (string): Filtrar por produto/pesquisa (ex: 'IPCA', 'PNAD', 'PIB')
- `quantidade` (number): Quantidade de resultados por página (padrão: 20)
- `tipo` (string): Tipo de evento: 'divulgacao' (publicações), 'coleta' (pesquisas de campo), ou 'todos'

Output parameters:

- `eventos` (array): Lista de eventos do calendário (divulgações/coletas)
- `pagina` (number): Página atual retornada
- `produto` (string): Filtro de produto aplicado, quando informado
- `total` (number): Total de eventos disponíveis para os critérios
- `totalPaginas` (number): Total de páginas disponíveis

### `ibge_comparar` (~448 tokens)

Compares data between localities (municipalities or states).

Available indicators:
\- populacao: Current population estimate
\- populacao_censo: Census 2022 population
\- pib: GDP per capita
\- area: Territorial area (km²)
\- densidade: Population density (inhab/km²)
\- alfabetizacao: Literacy rate
\- domicilios: Number of households

Features:
\- Compare up to 10 localities at once
\- Calculate statistics (max, min, average, variation)
\- Generate ranked output
\- Accept municipality codes (7 digits) or state codes (2 digits)

Examples:
\- Compare capitals: localidades="3550308,3304557,4106902", indicador="populacao"
\- Compare states: localidades="35,33,41", indicador="pib"
\- Area ranking: localidades="3550308,3304557", formato="ranking"
\- List indicators: indicador="listar"

Use this tool ONLY to rank/compare 2–10 localities on one indicator.
For a single locality, use ibge_cidades (municipal panel), ibge_censo, or ibge_sidra.

Behavior: read-only and idempotent — a live GET against the public IBGE APIs (SIDRA and Localidades). Returns Markdown plus a typed structuredContent payload.

Input parameters:

- `formato` (string): Formato de saída: tabela, json ou ranking (ordenado)
- `indicador` (string): Indicador para comparação: - populacao: Estimativa populacional atual - populacao_censo: População do Censo 2022 - pib: PIB per capita - area: Área territorial (km²) - densidade: Densidade demográfic…
- `localidades` (string, required): Códigos IBGE das localidades separados por vírgula (ex: "3550308,3304557,4106902"). Use 7 dígitos para municípios, 2 dígitos para UFs.

Output parameters:

- `estatisticas` (object): Estatísticas agregadas (quando há ao menos 2 valores positivos)
- `formato` (string): Formato solicitado
- `indicador` (string): Indicador comparado
- `localidades` (array): Localidades comparadas, com o valor do indicador
- `nome` (string): Nome do indicador
- `tabela` (string): Tabela SIDRA de origem

### `ibge_malhas_tema` (~450 tokens)

Gets thematic geographic meshes from IBGE.

Available themes:
\- biomas: Brazilian biomes (Amazon, Cerrado, Atlantic Forest, Caatinga, Pampa, Pantanal)
\- amazonia_legal: Legal Amazon area
\- semiarido: Semi-arid region
\- costeiro: Coastal zone
\- fronteira: Border strip
\- metropolitana: Metropolitan regions
\- ride: Integrated Development Regions

Biome codes:
\- 1: Amazon
\- 2: Cerrado
\- 3: Atlantic Forest
\- 4: Caatinga
\- 5: Pampa
\- 6: Pantanal

Examples:
\- All biomes: tema="biomas"
\- Amazon biome: tema="biomas", codigo="1"
\- Legal Amazon: tema="amazonia_legal"
\- Metropolitan regions: tema="metropolitana"
\- With municipalities: tema="biomas", resolucao="5"
\- List themes: tema="listar"

Use a different tool when:
\- Administrative meshes (Brazil/region/state/municipality outlines) → ibge_malhas

Behavior: read-only and idempotent — a live GET against the public IBGE Malhas API. Returns the mesh in the requested format (GeoJSON, TopoJSON, or SVG).

Input parameters:

- `codigo` (string): Código específico do tema (ex: código do bioma, da região metropolitana)
- `formato` (string): Formato de saída
- `qualidade` (string): Qualidade do traçado: 1=mínima, 4=máxima
- `resolucao` (string): 0 = Apenas contorno, 5 = Com municípios
- `tema` (string, required): Tema da malha: - biomas: Biomas brasileiros (Amazônia, Cerrado, etc.) - amazonia_legal: Área da Amazônia Legal - semiarido: Região do semiárido - costeiro: Zona costeira - fronteira: Faixa de frontei…

Output parameters:

- `codigo` (string): Código específico do tema, quando informado
- `formato` (string): Formato de saída (geojson, topojson, svg)
- `resolucao` (string): Resolução da malha (0 = contorno, 5 = com municípios)
- `tema` (string): Tema da malha solicitada (ou 'listar')
- `temas` (array): Lista de temas disponíveis (somente no modo 'listar')

### `ibge_vizinhos` (~265 tokens)

Finds nearby/neighboring municipalities.

Features:
\- Search by IBGE code (7 digits) or municipality name
\- Returns municipalities in the same mesoregion (proximity approximation)
\- Optionally includes population data

Note: Uses mesoregion as geographic proximity proxy.
For exact spatial neighborhood, mesh processing would be required.

Examples:
\- By code: municipio="3550308"
\- By name: municipio="Campinas", uf="SP"
\- With population: municipio="3550308", incluir_dados=true

Note: proximity is approximated by shared mesoregion (not exact spatial adjacency).
For listing/searching municipalities, use ibge_municipios.

Behavior: read-only and idempotent — a live GET against the public IBGE Localidades API. Returns a Markdown list.

Input parameters:

- `incluir_dados` (boolean): Incluir dados populacionais dos vizinhos
- `municipio` (string, required): Código IBGE do município (7 dígitos) ou nome do município
- `raio` (number): Raio em km para buscar municípios próximos (usa centróides)
- `uf` (string): Estado por sigla (SP), nome (São Paulo) ou código IBGE (35) — obrigatório se usar nome do município

Output parameters:

- `municipio` (object): Município de referência da consulta
- `total` (number): Quantidade de municípios próximos encontrados
- `vizinhos` (array): Lista de municípios próximos (mesma mesorregião)

### `ibge_datasaude` (~591 tokens)

Queries Brazil health indicators, served through IBGE's SIDRA (some originally produced by DataSUS, e.g. mortality and births).

Mortality and Birth:
\- mortalidade_infantil: Infant mortality rate
\- nascidos_vivos: Live births by location
\- obitos: Deaths by residence
\- obitos_causas: Deaths by cause (ICD-10)

Demographic Indicators:
\- esperanca_vida: Life expectancy at birth
\- fecundidade: Fertility rate

Sanitation:
\- saneamento_agua: Water supply
\- saneamento_esgoto: Sewage system

Health Coverage:
\- plano_saude: Health insurance coverage
\- autoavaliacao_saude: Self-rated health status

Territorial levels: 1=Brazil, 2=Region, 3=State, 6=Municipality

Examples:
\- Infant mortality: indicador="mortalidade_infantil"
\- Life expectancy by state: indicador="esperanca_vida", nivel_territorial="3"
\- Deaths in SP: indicador="obitos", nivel_territorial="3", localidade="35"
\- List indicators: indicador="listar"

Use a different tool when:
\- A single municipality's general panel (which also includes infant mortality) → ibge_cidades
\- Population/demographic counts (not health-specific) → ibge_censo or ibge_sidra

Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown plus a typed structuredContent payload.

Input parameters:

- `campos` (string): Selecionar apenas algumas colunas por rótulo, separadas por vírgula (ex: 'Valor,Ano'). Reduz o volume da resposta.
- `formato` (string): Formato de saída
- `indicador` (string, required): Indicador de saúde. Disponíveis: - mortalidade_infantil: Taxa de mortalidade infantil - esperanca_vida: Esperança de vida ao nascer - nascidos_vivos: Nascidos vivos - obitos: Óbitos por local de resi…
- `localidade` (string): Código da localidade ou 'all'
- `nivel_territorial` (string): Nível territorial (código N): 1=Brasil, 2=Região, 3=UF, 6=Município
- `periodo` (string): Período: 'last', 'all', ou ano específico

Output parameters:

- `colunas` (array): Rótulos das colunas, na ordem
- `fonte` (string): Fonte do dado
- `indicador` (string): Chave do indicador de saúde consultado
- `nome` (string): Nome do indicador
- `registros` (array): Registros: cada um mapeia rótulo da coluna -> valor
- `totalRegistros` (number): Total de registros de dados

### `ibge_paises` (~296 tokens)

Queries international country data via IBGE.

Features:
\- List all countries (following UN M49 methodology)
\- Country details (area, languages, currency, location)
\- Search countries by name
\- Filter by region/continent

Available regions: americas, europa, africa, asia, oceania

Country codes: Use ISO-ALPHA-2 (e.g., BR, US, AR, PT, JP)

Examples:
\- List all: tipo="listar"
\- Brazil details: tipo="detalhes", pais="BR"
\- Search: tipo="buscar", busca="Argentina"
\- Americas countries: tipo="listar", regiao="americas"
\- Available indicators: tipo="indicadores"

Behavior: read-only and idempotent — a live GET against the public IBGE Países API. Returns Markdown.

Input parameters:

- `busca` (string): Termo de busca para filtrar países pelo nome
- `indicadores` (string): IDs dos indicadores separados por | (ex: 77819|77820)
- `pais` (string): Código ISO-ALPHA-2 do país (ex: BR, US, AR) ou código M49
- `regiao` (string): Filtrar por região/continente: americas, europa, africa, asia, oceania
- `tipo` (string): Tipo de consulta: listar (todos), detalhes (de um país), indicadores, buscar

Output parameters:

- `busca` (string): Termo de busca aplicado, se houver
- `indicadores` (array): Indicadores disponíveis para consulta de países (modo indicadores)
- `pais` (object): Detalhes de um país específico (modo detalhes)
- `paises` (array): Lista de países (modos listar/buscar). Limitada aos 50 primeiros na exibição
- `regiao` (string): Filtro de região/continente aplicado, se houver
- `tipo` (string): Modo de consulta que originou este resultado
- `total` (number): Total de países encontrados (modos listar/buscar)

### `ibge_cidades` (~354 tokens)

Queries municipal indicators from IBGE (similar to Cidades@ portal).

Features:
\- General overview of a municipality (population, HDI, GDP, etc.)
\- Query specific indicators
\- Historical indicator data over years
\- List available surveys and indicators

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

Examples:
\- São Paulo overview: tipo="panorama", municipio="3550308"
\- Population history: tipo="historico", municipio="3550308", indicador="populacao"
\- View surveys: tipo="pesquisas"
\- Available indicators: tipo="indicador"

This tool is the panel for a SINGLE municipality (Cidades@).
Use a different tool when:
\- Real-time Brazil population → ibge_populacao
\- Census themes / historical series → ibge_censo
\- Comparing multiple municipalities → ibge_comparar
\- A macro indicator time series → ibge_indicadores

Behavior: read-only and idempotent — a live GET against the public IBGE APIs (Cidades@/agregados). Returns Markdown plus a typed structuredContent payload.

Input parameters:

- `indicador` (string): ID do indicador ou nome para busca
- `municipio` (string): Código IBGE do município (7 dígitos)
- `pesquisa` (string): ID da pesquisa para filtrar indicadores
- `tipo` (string): Tipo de consulta: panorama (resumo geral), indicador (específico), pesquisas (listar), historico
- `uf` (string): Código ou sigla da UF para filtrar (ex: 35 ou SP)

Output parameters:

- `indicadores` (array): Indicadores retornados (vazio para respostas de catálogo)
- `municipio` (string): Código IBGE do município
- `nome` (string): Nome do município/indicador
- `tipo` (string): Tipo de consulta (panorama, indicador, pesquisas, historico)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/sidneybissoli-ibge-br-mcp/ibge#diagnostics

## Score history

- 2026-08-03: 69
- 2026-08-02: 68
- 2026-08-01: 68
- 2026-07-31: 67
- 2026-07-30: 67
- 2026-07-29: 66
- 2026-07-28: 65
- 2026-07-27: 65
- 2026-07-26: 64

## Links

- Remote endpoint: https://ibge.sidneybissoli.com/mcp
- Repository: https://github.com/SidneyBissoli/ibge-br-mcp
- Changelog RSS feed: https://verifymcp.io/servers/sidneybissoli-ibge-br-mcp/ibge/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/sidneybissoli-ibge-br-mcp/ibge/changelog.json
- HTML version of this page: https://verifymcp.io/servers/sidneybissoli-ibge-br-mcp/ibge
