Skip to main content
Glama
ab-orbit

ab-ibge-mcp-server

by ab-orbit
README.md
# 🇧🇷 IBGE MCP Server

Servidor MCP (Model Context Protocol) para as **APIs públicas do IBGE**, permitindo que agentes de IA como Claude acessem dados estatísticos, geográficos e econômicos do Brasil em tempo real.

**✨ Versão 2.2.0** — Agora com suporte HTTP/SSE, cache inteligente, API de Nomes e suporte multi-variável!

---

**Sponsored by [Aeon Bridge Co.](https://aeonbridge.com)** 🌉
Building the future of AI-powered data integration.
Contact: [contact@aeonbridge.com](mailto:contact@aeonbridge.com)

---

## ✨ Ferramentas Disponíveis (27+ tools)

### 📍 Localidades
| Tool | Descrição |
|------|-----------|
| `ibge_listar_regioes` | Lista as 5 regiões geográficas com seus estados |
| `ibge_listar_estados` | Lista todos os 27 estados com sigla, ID e região |
| `ibge_listar_municipios` | Lista municípios de um estado (busca flexível sem acentos) |
| `ibge_buscar_municipio` | Busca município por nome em todo Brasil (suporta "Sao Paulo") |

### 📊 SIDRA (Sistema de Recuperação Automática)
| Tool | Descrição |
|------|-----------|
| `ibge_sidra_pesquisar_tabelas` | Pesquisa tabelas por assunto (ex: "PIB", "agricultura") |
| `ibge_sidra_metadados_tabela` | Metadados de uma tabela (variáveis, períodos, localidades) |
| `ibge_sidra_consultar_tabela` | Consulta dados com **múltiplas variáveis** simultaneamente |
| `ibge_periodos_tabela` | Lista períodos disponíveis de uma tabela |
| `ibge_ipca` | Inflação IPCA mensal com série histórica |
| `ibge_pib_municipios` | PIB dos municípios (tabela 5938) |
| `ibge_pib_estados` | **NOVO** — PIB dos estados com ranking nacional |

### 📈 Indicadores Econômicos
| Tool | Descrição |
|------|-----------|
| `ibge_indicador_economico` | IPCA, IPCA acumulado, desemprego, rendimento, INPC |
| `ibge_listar_indicadores` | Lista todos os indicadores disponíveis |

### 👥 Censo e População
| Tool | Descrição |
|------|-----------|
| `ibge_populacao_municipio` | População de um município pelo Censo 2022 |
| `ibge_populacao_estados` | Ranking de população de todos os estados |
| `ibge_densidade_demografica` | Densidade demográfica (hab/km²) por estado |
| `ibge_populacao_censo2022` | Dados populacionais do Censo com filtros avançados |
| `ibge_estimativas_populacionais` | **NOVO** — Estimativas anuais (2001-2024+) para municípios e estados |

### 🏷️ API de Nomes (Censo)
| Tool | Descrição |
|------|-----------|
| `ibge_nomes_frequencia` | **NOVO** — Frequência histórica de um nome (ex: "João") por década |
| `ibge_nomes_ranking` | **NOVO** — Top 20 nomes mais populares do Brasil ou por UF |

### 🗺️ Malha e Notícias
| Tool | Descrição |
|------|-----------|
| `ibge_malha_geografica` | URL da malha geográfica (GeoJSON/SVG) |
| `ibge_noticias` | Notícias e releases do IBGE |

## 🚀 Instalação

### Instalação via npm (Recomendado)

```bash
# Instale globalmente via npm
npm install -g ab-ibge-mcp-server
```

### Instalação manual (Desenvolvimento)

```bash
# 1. Clone ou copie o projeto
cd ibge-mcp-server

# 2. Instale as dependências
npm install

# 3. Compile o TypeScript
npm run build

# 4. Teste o servidor
node dist/index.js
```

## 🌐 Modos de Transporte

O servidor suporta dois modos de transporte:

| Modo | Uso | Comando |
|------|-----|---------|
| **stdio** (padrão) | Uso local com Claude Desktop, CLI | `npm start` |
| **http** | Deploy cloud, múltiplos clientes | `npm run start:http` |

### Modo HTTP (Novo!)

Para usar o servidor via HTTP/SSE em vez de stdio:

```bash
# Desenvolvimento
npm run dev:http

# Produção
npm run start:http

# Customizar porta
MCP_TRANSPORT=http PORT=8080 npm start
```

**Endpoints disponíveis:**
- `GET /health` — Health check
- `POST /sse` — Conexão MCP via Server-Sent Events

**📖 Documentação completa:** [HTTP_MODE.md](./HTTP_MODE.md)

---

## ⚙️ Configuração no Claude Desktop

### Se instalou via npm global

Edite `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) ou
`%APPDATA%\Claude\claude_desktop_config.json` (Windows):

```json
{
  "mcpServers": {
    "ibge": {
      "command": "ab-ibge-mcp-server"
    }
  }
}
```

### Se instalou manualmente

```json
{
  "mcpServers": {
    "ibge": {
      "command": "node",
      "args": ["/caminho/para/ibge-mcp-server/dist/index.js"]
    }
  }
}
```

Reinicie o Claude Desktop. O ícone 🔌 aparecerá indicando que o servidor está conectado.

## 💡 Exemplos de Uso com Agentes IA

```
Usuário: "Qual o estado mais populoso do Brasil?"
Agente: ibge_populacao_estados() → São Paulo com 44,4 milhões de habitantes (21,7% do total)

Usuário: "Quantas pessoas se chamam Maria no Brasil?"
Agente: ibge_nomes_frequencia(nome="Maria") → 11,7 milhões de pessoas registradas

Usuário: "Quais os nomes masculinos mais populares na década de 1990?"
Agente: ibge_nomes_ranking(sexo="M", decada=1990) → Top 20 com frequência

Usuário: "Qual o PIB de São Paulo em 2021?"
Agente: ibge_pib_estados(ano=2021, uf_id=35) → R$ 2,7 trilhões (31% do PIB nacional)

Usuário: "População estimada do Brasil em 2024"
Agente: ibge_estimativas_populacionais(ano=2024, localidade="BR") → 212,6 milhões

Usuário: "Compare inflação de 2023 e 2024 mês a mês"
Agente: ibge_indicador_economico(indicador="IPCA", periodos="202301-202412")

Usuário: "Liste todas as cidades de SC com 'Floriano' (sem acento)"
Agente: ibge_listar_municipios(uf="SC", busca="Floriano") → Florianópolis encontrada!

Usuário: "Busque 'Sao Paulo' (sem acento)"
Agente: ibge_buscar_municipio(nome="Sao Paulo") → São Paulo-SP encontrado (normalização automática)

Usuário: "Qual a densidade demográfica do DF vs SP?"
Agente: ibge_densidade_demografica() → DF: 529.2 hab/km², SP: 177.3 hab/km²

Usuário: "Consulte IPCA e INPC simultaneamente"
Agente: ibge_sidra_consultar_tabela(tabela="1419", variaveis="63|44") → Múltiplas variáveis em uma chamada
```

## 🔧 Tecnologias e Performance

- **TypeScript** com tipagem estrita
- **MCP SDK** (@modelcontextprotocol/sdk)
- **APIs do IBGE** — 100% públicas, sem autenticação necessária
- **Zod** para validação de inputs
- **Cache in-memory** com TTL inteligente (até 7 dias para dados imutáveis)
- **Retry automático** com exponential backoff para maior confiabilidade
- **Busca sem acentos** — aceita "Sao Paulo", "Florianopolis", etc.

## 📚 APIs do IBGE Utilizadas

| API | Versão | Endpoint Base |
|-----|--------|---------------|
| Localidades | v1 | `servicodados.ibge.gov.br/api/v1/localidades` |
| SIDRA | v3 | `servicodados.ibge.gov.br/api/v3/agregados` |
| Malha Geográfica | v2 | `servicodados.ibge.gov.br/api/v2/malhas` |
| Notícias | v3 | `servicodados.ibge.gov.br/api/v3/noticias` |

## 🤝 Sponsorship

This project is proudly **sponsored by [Aeon Bridge Co.](https://aeonbridge.com)** 🌉

Aeon Bridge Co. is a technology company focused on building innovative solutions for AI-powered data integration and intelligent systems. We bridge the gap between complex data sources and modern AI agents, making information accessible and actionable.

**Learn more:** [https://aeonbridge.com](https://aeonbridge.com)
**Contact:** [contact@aeonbridge.com](mailto:contact@aeonbridge.com)

---

## 📄 License

MIT License - See [LICENSE](LICENSE) file for details.

## 🙏 Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

---

**Made with ❤️ by the Aeon Bridge team**

TDQS

A3.6/5.0

Scored across 32 tools

Disambiguation2/5

Several tools overlap significantly: ibge_populacao_censo2022, ibge_populacao_municipio, and ibge_populacao_estados all provide census population data with different granularities; ibge_ipca duplicates part of ibge_indicador_economico. These overlaps create ambiguity about which tool to use for a given query.

Naming Consistency3/5

All tools share the ibge_ prefix, but naming conventions are mixed: some use verb_noun patterns (listar, buscar, obter, comparar) while others use bare noun phrases (populacao_censo2022, pib_estados, densidade_demografica). This inconsistency makes the API less predictable, though still readable.

Tool Count2/5

With 32 tools, the server is heavy and exceeds the typical well-scoped range. Many tools could be consolidated (e.g., population queries into one tool with a level parameter, IPCA into economic indicators), reducing redundancy without losing functionality.

Completeness4/5

The server covers a broad range of IBGE data: locations, SIDRA queries, population, PIB, CNAE, country indicators, names, and news. It provides list, search, detail, and comparison operations, with few obvious gaps for a read-only statistical data API.

Maintenance

ActivityInactive
ResponsivenessNo issues