ab-ibge-mcp-server 1.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -12
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/services/cache.d.ts +18 -0
- package/dist/services/cache.d.ts.map +1 -0
- package/dist/services/cache.js +41 -0
- package/dist/services/cache.js.map +1 -0
- package/dist/services/ibge-client.d.ts +1 -1
- package/dist/services/ibge-client.d.ts.map +1 -1
- package/dist/services/ibge-client.js +64 -20
- package/dist/services/ibge-client.js.map +1 -1
- package/dist/tools/censo.d.ts.map +1 -1
- package/dist/tools/censo.js +75 -3
- package/dist/tools/censo.js.map +1 -1
- package/dist/tools/indicadores.js +2 -2
- package/dist/tools/indicadores.js.map +1 -1
- package/dist/tools/localidades.d.ts.map +1 -1
- package/dist/tools/localidades.js +12 -4
- package/dist/tools/localidades.js.map +1 -1
- package/dist/tools/nomes.d.ts +3 -0
- package/dist/tools/nomes.d.ts.map +1 -0
- package/dist/tools/nomes.js +144 -0
- package/dist/tools/nomes.js.map +1 -0
- package/dist/tools/paises.d.ts +7 -0
- package/dist/tools/paises.d.ts.map +1 -0
- package/dist/tools/paises.js +353 -0
- package/dist/tools/paises.js.map +1 -0
- package/dist/tools/sidra.d.ts.map +1 -1
- package/dist/tools/sidra.js +91 -7
- package/dist/tools/sidra.js.map +1 -1
- package/dist/types.d.ts +85 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -2
package/README.md
CHANGED
|
@@ -2,24 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
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.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**✨ Versão 2.0.1** — Agora com cache inteligente, API de Nomes e suporte multi-variável!
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
**Sponsored by [Aeon Bridge Co.](https://aeonbridge.com)** 🌉
|
|
10
|
+
Building the future of AI-powered data integration.
|
|
11
|
+
Contact: [contact@aeonbridge.com](mailto:contact@aeonbridge.com)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## ✨ Ferramentas Disponíveis (27+ tools)
|
|
6
16
|
|
|
7
17
|
### 📍 Localidades
|
|
8
18
|
| Tool | Descrição |
|
|
9
19
|
|------|-----------|
|
|
10
20
|
| `ibge_listar_regioes` | Lista as 5 regiões geográficas com seus estados |
|
|
11
21
|
| `ibge_listar_estados` | Lista todos os 27 estados com sigla, ID e região |
|
|
12
|
-
| `ibge_listar_municipios` | Lista municípios de um estado (
|
|
13
|
-
| `ibge_buscar_municipio` | Busca município por
|
|
22
|
+
| `ibge_listar_municipios` | Lista municípios de um estado (busca flexível sem acentos) |
|
|
23
|
+
| `ibge_buscar_municipio` | Busca município por nome em todo Brasil (suporta "Sao Paulo") |
|
|
14
24
|
|
|
15
25
|
### 📊 SIDRA (Sistema de Recuperação Automática)
|
|
16
26
|
| Tool | Descrição |
|
|
17
27
|
|------|-----------|
|
|
18
28
|
| `ibge_sidra_pesquisar_tabelas` | Pesquisa tabelas por assunto (ex: "PIB", "agricultura") |
|
|
19
29
|
| `ibge_sidra_metadados_tabela` | Metadados de uma tabela (variáveis, períodos, localidades) |
|
|
20
|
-
| `ibge_sidra_consultar_tabela` | Consulta dados
|
|
30
|
+
| `ibge_sidra_consultar_tabela` | Consulta dados com **múltiplas variáveis** simultaneamente |
|
|
31
|
+
| `ibge_periodos_tabela` | Lista períodos disponíveis de uma tabela |
|
|
21
32
|
| `ibge_ipca` | Inflação IPCA mensal com série histórica |
|
|
22
|
-
| `ibge_pib_municipios` | PIB dos municípios
|
|
33
|
+
| `ibge_pib_municipios` | PIB dos municípios (tabela 5938) |
|
|
34
|
+
| `ibge_pib_estados` | **NOVO** — PIB dos estados com ranking nacional |
|
|
23
35
|
|
|
24
36
|
### 📈 Indicadores Econômicos
|
|
25
37
|
| Tool | Descrição |
|
|
@@ -27,13 +39,20 @@ Servidor MCP (Model Context Protocol) para as **APIs públicas do IBGE**, permit
|
|
|
27
39
|
| `ibge_indicador_economico` | IPCA, IPCA acumulado, desemprego, rendimento, INPC |
|
|
28
40
|
| `ibge_listar_indicadores` | Lista todos os indicadores disponíveis |
|
|
29
41
|
|
|
30
|
-
### 👥 Censo
|
|
42
|
+
### 👥 Censo e População
|
|
31
43
|
| Tool | Descrição |
|
|
32
44
|
|------|-----------|
|
|
33
45
|
| `ibge_populacao_municipio` | População de um município pelo Censo 2022 |
|
|
34
46
|
| `ibge_populacao_estados` | Ranking de população de todos os estados |
|
|
35
47
|
| `ibge_densidade_demografica` | Densidade demográfica (hab/km²) por estado |
|
|
36
48
|
| `ibge_populacao_censo2022` | Dados populacionais do Censo com filtros avançados |
|
|
49
|
+
| `ibge_estimativas_populacionais` | **NOVO** — Estimativas anuais (2001-2024+) para municípios e estados |
|
|
50
|
+
|
|
51
|
+
### 🏷️ API de Nomes (Censo)
|
|
52
|
+
| Tool | Descrição |
|
|
53
|
+
|------|-----------|
|
|
54
|
+
| `ibge_nomes_frequencia` | **NOVO** — Frequência histórica de um nome (ex: "João") por década |
|
|
55
|
+
| `ibge_nomes_ranking` | **NOVO** — Top 20 nomes mais populares do Brasil ou por UF |
|
|
37
56
|
|
|
38
57
|
### 🗺️ Malha e Notícias
|
|
39
58
|
| Tool | Descrição |
|
|
@@ -104,25 +123,43 @@ Reinicie o Claude Desktop. O ícone 🔌 aparecerá indicando que o servidor est
|
|
|
104
123
|
Usuário: "Qual o estado mais populoso do Brasil?"
|
|
105
124
|
Agente: ibge_populacao_estados() → São Paulo com 44,4 milhões de habitantes (21,7% do total)
|
|
106
125
|
|
|
107
|
-
Usuário: "
|
|
126
|
+
Usuário: "Quantas pessoas se chamam Maria no Brasil?"
|
|
127
|
+
Agente: ibge_nomes_frequencia(nome="Maria") → 11,7 milhões de pessoas registradas
|
|
128
|
+
|
|
129
|
+
Usuário: "Quais os nomes masculinos mais populares na década de 1990?"
|
|
130
|
+
Agente: ibge_nomes_ranking(sexo="M", decada=1990) → Top 20 com frequência
|
|
131
|
+
|
|
132
|
+
Usuário: "Qual o PIB de São Paulo em 2021?"
|
|
133
|
+
Agente: ibge_pib_estados(ano=2021, uf_id=35) → R$ 2,7 trilhões (31% do PIB nacional)
|
|
134
|
+
|
|
135
|
+
Usuário: "População estimada do Brasil em 2024"
|
|
136
|
+
Agente: ibge_estimativas_populacionais(ano=2024, localidade="BR") → 212,6 milhões
|
|
137
|
+
|
|
138
|
+
Usuário: "Compare inflação de 2023 e 2024 mês a mês"
|
|
108
139
|
Agente: ibge_indicador_economico(indicador="IPCA", periodos="202301-202412")
|
|
109
140
|
|
|
110
|
-
Usuário: "Liste todas as cidades de SC com 'Floriano'
|
|
111
|
-
Agente: ibge_listar_municipios(uf="SC", busca="Floriano")
|
|
141
|
+
Usuário: "Liste todas as cidades de SC com 'Floriano' (sem acento)"
|
|
142
|
+
Agente: ibge_listar_municipios(uf="SC", busca="Floriano") → Florianópolis encontrada!
|
|
143
|
+
|
|
144
|
+
Usuário: "Busque 'Sao Paulo' (sem acento)"
|
|
145
|
+
Agente: ibge_buscar_municipio(nome="Sao Paulo") → São Paulo-SP encontrado (normalização automática)
|
|
112
146
|
|
|
113
147
|
Usuário: "Qual a densidade demográfica do DF vs SP?"
|
|
114
148
|
Agente: ibge_densidade_demografica() → DF: 529.2 hab/km², SP: 177.3 hab/km²
|
|
115
149
|
|
|
116
|
-
Usuário: "
|
|
117
|
-
Agente: ibge_sidra_consultar_tabela(tabela="
|
|
150
|
+
Usuário: "Consulte IPCA e INPC simultaneamente"
|
|
151
|
+
Agente: ibge_sidra_consultar_tabela(tabela="1419", variaveis="63|44") → Múltiplas variáveis em uma chamada
|
|
118
152
|
```
|
|
119
153
|
|
|
120
|
-
## 🔧 Tecnologias
|
|
154
|
+
## 🔧 Tecnologias e Performance
|
|
121
155
|
|
|
122
156
|
- **TypeScript** com tipagem estrita
|
|
123
157
|
- **MCP SDK** (@modelcontextprotocol/sdk)
|
|
124
158
|
- **APIs do IBGE** — 100% públicas, sem autenticação necessária
|
|
125
159
|
- **Zod** para validação de inputs
|
|
160
|
+
- **Cache in-memory** com TTL inteligente (até 7 dias para dados imutáveis)
|
|
161
|
+
- **Retry automático** com exponential backoff para maior confiabilidade
|
|
162
|
+
- **Busca sem acentos** — aceita "Sao Paulo", "Florianopolis", etc.
|
|
126
163
|
|
|
127
164
|
## 📚 APIs do IBGE Utilizadas
|
|
128
165
|
|
|
@@ -132,3 +169,26 @@ Agente: ibge_sidra_consultar_tabela(tabela="5938", localidades="N3[21,22,23,24,2
|
|
|
132
169
|
| SIDRA | v3 | `servicodados.ibge.gov.br/api/v3/agregados` |
|
|
133
170
|
| Malha Geográfica | v2 | `servicodados.ibge.gov.br/api/v2/malhas` |
|
|
134
171
|
| Notícias | v3 | `servicodados.ibge.gov.br/api/v3/noticias` |
|
|
172
|
+
|
|
173
|
+
## 🤝 Sponsorship
|
|
174
|
+
|
|
175
|
+
This project is proudly **sponsored by [Aeon Bridge Co.](https://aeonbridge.com)** 🌉
|
|
176
|
+
|
|
177
|
+
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.
|
|
178
|
+
|
|
179
|
+
**Learn more:** [https://aeonbridge.com](https://aeonbridge.com)
|
|
180
|
+
**Contact:** [contact@aeonbridge.com](mailto:contact@aeonbridge.com)
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 📄 License
|
|
185
|
+
|
|
186
|
+
MIT License - See [LICENSE](LICENSE) file for details.
|
|
187
|
+
|
|
188
|
+
## 🙏 Contributing
|
|
189
|
+
|
|
190
|
+
Contributions are welcome! Please feel free to submit issues or pull requests.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
**Made with ❤️ by the Aeon Bridge team**
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,8 @@ const malha_noticias_js_1 = require("./tools/malha-noticias.js");
|
|
|
9
9
|
const indicadores_js_1 = require("./tools/indicadores.js");
|
|
10
10
|
const censo_js_1 = require("./tools/censo.js");
|
|
11
11
|
const cnae_js_1 = require("./tools/cnae.js");
|
|
12
|
+
const nomes_js_1 = require("./tools/nomes.js");
|
|
13
|
+
const paises_js_1 = require("./tools/paises.js");
|
|
12
14
|
const server = new mcp_js_1.McpServer({
|
|
13
15
|
name: "ibge-mcp-server",
|
|
14
16
|
version: "1.0.0",
|
|
@@ -19,10 +21,12 @@ const server = new mcp_js_1.McpServer({
|
|
|
19
21
|
(0, indicadores_js_1.registerIndicadoresTools)(server);
|
|
20
22
|
(0, censo_js_1.registerCensoTools)(server);
|
|
21
23
|
(0, cnae_js_1.registerCnaeTools)(server);
|
|
24
|
+
(0, nomes_js_1.registerNomesTools)(server);
|
|
25
|
+
(0, paises_js_1.registerPaisesTools)(server);
|
|
22
26
|
async function main() {
|
|
23
27
|
const transport = new stdio_js_1.StdioServerTransport();
|
|
24
28
|
await server.connect(transport);
|
|
25
|
-
console.error("✅ IBGE MCP Server iniciado —
|
|
29
|
+
console.error("✅ IBGE MCP Server iniciado — 32 ferramentas disponíveis");
|
|
26
30
|
}
|
|
27
31
|
main().catch((err) => {
|
|
28
32
|
console.error("❌ Erro:", err);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,oEAAoE;AACpE,wEAAiF;AACjF,2DAAkE;AAClE,+CAAsD;AACtD,iEAAkE;AAClE,2DAAkE;AAClE,+CAAsD;AACtD,6CAAoD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,oEAAoE;AACpE,wEAAiF;AACjF,2DAAkE;AAClE,+CAAsD;AACtD,iEAAkE;AAClE,2DAAkE;AAClE,+CAAsD;AACtD,6CAAoD;AACpD,+CAAsD;AACtD,iDAAwD;AAExD,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC;IAC3B,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,IAAA,yCAAwB,EAAC,MAAM,CAAC,CAAC;AACjC,IAAA,6BAAkB,EAAC,MAAM,CAAC,CAAC;AAC3B,IAAA,yCAAqB,EAAC,MAAM,CAAC,CAAC;AAC9B,IAAA,yCAAwB,EAAC,MAAM,CAAC,CAAC;AACjC,IAAA,6BAAkB,EAAC,MAAM,CAAC,CAAC;AAC3B,IAAA,2BAAiB,EAAC,MAAM,CAAC,CAAC;AAC1B,IAAA,6BAAkB,EAAC,MAAM,CAAC,CAAC;AAC3B,IAAA,+BAAmB,EAAC,MAAM,CAAC,CAAC;AAE5B,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC3E,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare class SimpleCache {
|
|
2
|
+
private store;
|
|
3
|
+
get<T>(key: string): T | null;
|
|
4
|
+
set<T>(key: string, data: T, ttlMs: number): void;
|
|
5
|
+
clear(): void;
|
|
6
|
+
size(): number;
|
|
7
|
+
}
|
|
8
|
+
export declare const cache: SimpleCache;
|
|
9
|
+
export declare const TTL: {
|
|
10
|
+
readonly LOCALIDADES: number;
|
|
11
|
+
readonly NOMES: number;
|
|
12
|
+
readonly SIDRA_METADATA: number;
|
|
13
|
+
readonly SIDRA_DATA: number;
|
|
14
|
+
readonly INDICADORES: number;
|
|
15
|
+
readonly NOTICIAS: number;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/services/cache.ts"],"names":[],"mappings":"AAQA,cAAM,WAAW;IACf,OAAO,CAAC,KAAK,CAA0C;IAEvD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAY7B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOjD,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,MAAM;CAGf;AAED,eAAO,MAAM,KAAK,aAAoB,CAAC;AAGvC,eAAO,MAAM,GAAG;;;;;;;CAON,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// services/cache.ts
|
|
3
|
+
// In-memory cache with TTL for IBGE API responses
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.TTL = exports.cache = void 0;
|
|
6
|
+
class SimpleCache {
|
|
7
|
+
store = new Map();
|
|
8
|
+
get(key) {
|
|
9
|
+
const entry = this.store.get(key);
|
|
10
|
+
if (!entry)
|
|
11
|
+
return null;
|
|
12
|
+
if (Date.now() > entry.expiresAt) {
|
|
13
|
+
this.store.delete(key);
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return entry.data;
|
|
17
|
+
}
|
|
18
|
+
set(key, data, ttlMs) {
|
|
19
|
+
this.store.set(key, {
|
|
20
|
+
data,
|
|
21
|
+
expiresAt: Date.now() + ttlMs,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
clear() {
|
|
25
|
+
this.store.clear();
|
|
26
|
+
}
|
|
27
|
+
size() {
|
|
28
|
+
return this.store.size;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.cache = new SimpleCache();
|
|
32
|
+
// TTL constants based on IBGE data update frequency
|
|
33
|
+
exports.TTL = {
|
|
34
|
+
LOCALIDADES: 24 * 60 * 60 * 1000, // 24 hours - rarely changes
|
|
35
|
+
NOMES: 7 * 24 * 60 * 60 * 1000, // 7 days - census data, never changes
|
|
36
|
+
SIDRA_METADATA: 6 * 60 * 60 * 1000, // 6 hours
|
|
37
|
+
SIDRA_DATA: 60 * 60 * 1000, // 1 hour - economic indicators update monthly
|
|
38
|
+
INDICADORES: 60 * 60 * 1000, // 1 hour
|
|
39
|
+
NOTICIAS: 30 * 60 * 1000, // 30 minutes
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/services/cache.ts"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,kDAAkD;;;AAOlD,MAAM,WAAW;IACP,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEvD,GAAG,CAAI,GAAW;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,IAAS,CAAC;IACzB,CAAC;IAED,GAAG,CAAI,GAAW,EAAE,IAAO,EAAE,KAAa;QACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAEY,QAAA,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;AAEvC,oDAAoD;AACvC,QAAA,GAAG,GAAG;IACjB,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAG,4BAA4B;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAK,sCAAsC;IACzE,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU;IAC9C,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAU,8CAA8C;IAClF,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAS,SAAS;IAC7C,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAY,aAAa;CACzC,CAAC"}
|
|
@@ -8,7 +8,7 @@ export declare class IBGEApiError extends Error {
|
|
|
8
8
|
readonly endpoint?: string | undefined;
|
|
9
9
|
constructor(message: string, status?: number | undefined, endpoint?: string | undefined);
|
|
10
10
|
}
|
|
11
|
-
export declare function ibgeFetch<T>(url: string): Promise<T>;
|
|
11
|
+
export declare function ibgeFetch<T>(url: string, cacheTtl?: number): Promise<T>;
|
|
12
12
|
export declare function formatToolError(err: unknown): string;
|
|
13
13
|
export declare function truncateIfNeeded(text: string, maxChars?: number): string;
|
|
14
14
|
//# sourceMappingURL=ibge-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ibge-client.d.ts","sourceRoot":"","sources":["../../src/services/ibge-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ibge-client.d.ts","sourceRoot":"","sources":["../../src/services/ibge-client.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAEX,qBAAa,YAAa,SAAQ,KAAK;aAGnB,MAAM,CAAC,EAAE,MAAM;aACf,QAAQ,CAAC,EAAE,MAAM;gBAFjC,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,QAAQ,CAAC,EAAE,MAAM,YAAA;CAKpC;AA0ED,wBAAsB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAkB7E;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAQ,GAAG,MAAM,CAMvE"}
|
|
@@ -6,6 +6,7 @@ exports.IBGEApiError = exports.IBGE_API = void 0;
|
|
|
6
6
|
exports.ibgeFetch = ibgeFetch;
|
|
7
7
|
exports.formatToolError = formatToolError;
|
|
8
8
|
exports.truncateIfNeeded = truncateIfNeeded;
|
|
9
|
+
const cache_js_1 = require("./cache.js");
|
|
9
10
|
exports.IBGE_API = {
|
|
10
11
|
v1: "https://servicodados.ibge.gov.br/api/v1",
|
|
11
12
|
v2: "https://servicodados.ibge.gov.br/api/v2",
|
|
@@ -22,30 +23,73 @@ class IBGEApiError extends Error {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
exports.IBGEApiError = IBGEApiError;
|
|
25
|
-
async function
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
26
|
+
async function sleep(ms) {
|
|
27
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
28
|
+
}
|
|
29
|
+
async function fetchWithRetry(url, retries = 3, baseDelay = 500) {
|
|
30
|
+
let lastError;
|
|
31
|
+
for (let attempt = 0; attempt < retries; attempt++) {
|
|
32
|
+
const controller = new AbortController();
|
|
33
|
+
const timeout = setTimeout(() => controller.abort(), 15000);
|
|
34
|
+
try {
|
|
35
|
+
const response = await fetch(url, {
|
|
36
|
+
signal: controller.signal,
|
|
37
|
+
headers: { Accept: "application/json" },
|
|
38
|
+
});
|
|
39
|
+
clearTimeout(timeout);
|
|
40
|
+
// Retry on 503/504 (server errors)
|
|
41
|
+
if (response.status === 503 || response.status === 504) {
|
|
42
|
+
if (attempt < retries - 1) {
|
|
43
|
+
const delay = baseDelay * Math.pow(2, attempt);
|
|
44
|
+
await sleep(delay);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
throw new IBGEApiError(`IBGE API retornou status ${response.status}: ${response.statusText}`, response.status, url);
|
|
50
|
+
}
|
|
51
|
+
const data = (await response.json());
|
|
52
|
+
return data;
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
clearTimeout(timeout);
|
|
56
|
+
if (err instanceof IBGEApiError) {
|
|
57
|
+
lastError = err;
|
|
58
|
+
if (err.status !== 503 && err.status !== 504) {
|
|
59
|
+
throw err; // Don't retry on non-retryable errors
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else if (err instanceof Error && err.name === "AbortError") {
|
|
63
|
+
lastError = new IBGEApiError("Timeout: a API do IBGE demorou mais de 15s", undefined, url);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
lastError = new IBGEApiError(`Erro ao conectar com a API do IBGE: ${err instanceof Error ? err.message : String(err)}`, undefined, url);
|
|
67
|
+
}
|
|
68
|
+
// If not last attempt and error is retryable, continue
|
|
69
|
+
if (attempt < retries - 1) {
|
|
70
|
+
const delay = baseDelay * Math.pow(2, attempt);
|
|
71
|
+
await sleep(delay);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
36
74
|
}
|
|
37
|
-
const data = (await response.json());
|
|
38
|
-
return data;
|
|
39
75
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
76
|
+
throw lastError || new IBGEApiError("Erro desconhecido após retries", undefined, url);
|
|
77
|
+
}
|
|
78
|
+
async function ibgeFetch(url, cacheTtl) {
|
|
79
|
+
// Check cache first if TTL is provided
|
|
80
|
+
if (cacheTtl !== undefined) {
|
|
81
|
+
const cached = cache_js_1.cache.get(url);
|
|
82
|
+
if (cached !== null) {
|
|
83
|
+
return cached;
|
|
46
84
|
}
|
|
47
|
-
throw new IBGEApiError(`Erro ao conectar com a API do IBGE: ${err instanceof Error ? err.message : String(err)}`, undefined, url);
|
|
48
85
|
}
|
|
86
|
+
// Fetch with retry
|
|
87
|
+
const data = await fetchWithRetry(url);
|
|
88
|
+
// Store in cache if TTL is provided
|
|
89
|
+
if (cacheTtl !== undefined) {
|
|
90
|
+
cache_js_1.cache.set(url, data, cacheTtl);
|
|
91
|
+
}
|
|
92
|
+
return data;
|
|
49
93
|
}
|
|
50
94
|
function formatToolError(err) {
|
|
51
95
|
if (err instanceof IBGEApiError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ibge-client.js","sourceRoot":"","sources":["../../src/services/ibge-client.ts"],"names":[],"mappings":";AAAA,0BAA0B;AAC1B,uDAAuD;;;
|
|
1
|
+
{"version":3,"file":"ibge-client.js","sourceRoot":"","sources":["../../src/services/ibge-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"censo.d.ts","sourceRoot":"","sources":["../../src/tools/censo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"censo.d.ts","sourceRoot":"","sources":["../../src/tools/censo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqO1D"}
|
package/dist/tools/censo.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.registerCensoTools = registerCensoTools;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const ibge_client_js_1 = require("../services/ibge-client.js");
|
|
6
|
+
const cache_js_1 = require("../services/cache.js");
|
|
6
7
|
function formatNum(v) {
|
|
7
8
|
return v.toLocaleString("pt-BR");
|
|
8
9
|
}
|
|
@@ -68,7 +69,7 @@ Retorna ranking de população com % do total nacional.`,
|
|
|
68
69
|
}, async ({ uf_id }) => {
|
|
69
70
|
try {
|
|
70
71
|
const localidade = uf_id ? `N3[${uf_id}]` : "N3[all]";
|
|
71
|
-
const url = `${ibge_client_js_1.IBGE_API.v3}/agregados/9514/periodos/2022/variaveis/93?localidades=${localidade}
|
|
72
|
+
const url = `${ibge_client_js_1.IBGE_API.v3}/agregados/9514/periodos/2022/variaveis/93?localidades=${localidade}`;
|
|
72
73
|
const dados = await (0, ibge_client_js_1.ibgeFetch)(url);
|
|
73
74
|
const series = getSerie(dados);
|
|
74
75
|
if (series.length === 0)
|
|
@@ -106,8 +107,8 @@ Retorna população, área em km² e densidade por estado, ordenados por densida
|
|
|
106
107
|
try {
|
|
107
108
|
const localidade = uf_id ? `N3[${uf_id}]` : "N3[all]";
|
|
108
109
|
const [dadosPop, dadosArea] = await Promise.all([
|
|
109
|
-
(0, ibge_client_js_1.ibgeFetch)(`${ibge_client_js_1.IBGE_API.v3}/agregados/9514/periodos/2022/variaveis/93?localidades=${localidade}
|
|
110
|
-
(0, ibge_client_js_1.ibgeFetch)(`${ibge_client_js_1.IBGE_API.v3}/agregados/9517/periodos/2022/variaveis/82?localidades=${localidade}
|
|
110
|
+
(0, ibge_client_js_1.ibgeFetch)(`${ibge_client_js_1.IBGE_API.v3}/agregados/9514/periodos/2022/variaveis/93?localidades=${localidade}`),
|
|
111
|
+
(0, ibge_client_js_1.ibgeFetch)(`${ibge_client_js_1.IBGE_API.v3}/agregados/9517/periodos/2022/variaveis/82?localidades=${localidade}`).catch(() => []),
|
|
111
112
|
]);
|
|
112
113
|
const pop = getSerie(dadosPop);
|
|
113
114
|
const area = getSerie(dadosArea);
|
|
@@ -132,5 +133,76 @@ Retorna população, área em km² e densidade por estado, ordenados por densida
|
|
|
132
133
|
return { content: [{ type: "text", text: (0, ibge_client_js_1.formatToolError)(err) }] };
|
|
133
134
|
}
|
|
134
135
|
});
|
|
136
|
+
server.registerTool("ibge_estimativas_populacionais", {
|
|
137
|
+
title: "Estimativas Populacionais Anuais",
|
|
138
|
+
description: `Consulta estimativas de população para anos entre censos (2001-2024+).
|
|
139
|
+
As estimativas são usadas pelo TCU para repasse de verbas e são atualizadas anualmente.
|
|
140
|
+
|
|
141
|
+
Args:
|
|
142
|
+
- ano (obrigatório): Ano da estimativa (ex: 2024, 2023, 2022...)
|
|
143
|
+
- localidade (opcional): "BR" (Brasil), "estados" (todos estados), ou código IBGE específico
|
|
144
|
+
- municipio_id (opcional): Código IBGE de 7 dígitos para consulta de município específico
|
|
145
|
+
|
|
146
|
+
Use para dados mais recentes que o Censo 2022 ou para anos intermediários.
|
|
147
|
+
Exemplo: População estimada de 2024, população de município não finalizado no censo.`,
|
|
148
|
+
inputSchema: zod_1.z.object({
|
|
149
|
+
ano: zod_1.z.number().int().min(2001).max(2030).describe("Ano da estimativa"),
|
|
150
|
+
localidade: zod_1.z.enum(["BR", "estados"]).optional().describe("BR=Brasil, estados=todos estados"),
|
|
151
|
+
municipio_id: zod_1.z.number().int().positive().optional().describe("Código IBGE do município (7 dígitos)"),
|
|
152
|
+
}),
|
|
153
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
154
|
+
}, async (args) => {
|
|
155
|
+
try {
|
|
156
|
+
const { ano, localidade, municipio_id } = args;
|
|
157
|
+
let nivel = "N1[all]"; // Brasil por padrão
|
|
158
|
+
if (localidade === "estados") {
|
|
159
|
+
nivel = "N3[all]";
|
|
160
|
+
}
|
|
161
|
+
else if (municipio_id) {
|
|
162
|
+
nivel = `N6[${municipio_id}]`;
|
|
163
|
+
}
|
|
164
|
+
const url = `${ibge_client_js_1.IBGE_API.v3}/agregados/6579/periodos/${ano}/variaveis/9324?localidades=${nivel}`;
|
|
165
|
+
const dados = await (0, ibge_client_js_1.ibgeFetch)(url, cache_js_1.TTL.SIDRA_DATA);
|
|
166
|
+
const series = getSerie(dados);
|
|
167
|
+
if (series.length === 0) {
|
|
168
|
+
return {
|
|
169
|
+
content: [{
|
|
170
|
+
type: "text",
|
|
171
|
+
text: `Dados não encontrados para o ano ${ano}.\n\nVerifique se o ano está disponível na base do IBGE (geralmente 2001-2024).`
|
|
172
|
+
}]
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
if (municipio_id || localidade === undefined) {
|
|
176
|
+
// Resultado único
|
|
177
|
+
const item = series[0];
|
|
178
|
+
return {
|
|
179
|
+
content: [{
|
|
180
|
+
type: "text",
|
|
181
|
+
text: `## ${item.nome} — Estimativa ${ano}\n\n**População estimada:** ${formatNum(item.valor)} habitantes\n\n_Fonte: IBGE Estimativas de População (Tabela 6579)_`
|
|
182
|
+
}]
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
// Múltiplas localidades
|
|
186
|
+
const total = series.reduce((acc, s) => acc + s.valor, 0);
|
|
187
|
+
series.sort((a, b) => b.valor - a.valor);
|
|
188
|
+
const linhas = series.map((s, i) => {
|
|
189
|
+
const pct = localidade === "estados" ? ` (${((s.valor / total) * 100).toFixed(2)}%)` : "";
|
|
190
|
+
return `${i + 1}. **${s.nome}**: ${formatNum(s.valor)} hab${pct}`;
|
|
191
|
+
});
|
|
192
|
+
const titulo = localidade === "estados" ? "por Estado" : "Brasil";
|
|
193
|
+
return {
|
|
194
|
+
content: [{
|
|
195
|
+
type: "text",
|
|
196
|
+
text: (0, ibge_client_js_1.truncateIfNeeded)(`## Estimativa de População ${titulo} — ${ano}\n\n` +
|
|
197
|
+
(localidade === "estados" ? `**Brasil:** ${formatNum(total)} habitantes\n\n` : "") +
|
|
198
|
+
linhas.join("\n") +
|
|
199
|
+
`\n\n_Fonte: IBGE Estimativas de População (Tabela 6579)_`)
|
|
200
|
+
}]
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
return { content: [{ type: "text", text: (0, ibge_client_js_1.formatToolError)(err) }] };
|
|
205
|
+
}
|
|
206
|
+
});
|
|
135
207
|
}
|
|
136
208
|
//# sourceMappingURL=censo.js.map
|
package/dist/tools/censo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"censo.js","sourceRoot":"","sources":["../../src/tools/censo.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"censo.js","sourceRoot":"","sources":["../../src/tools/censo.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ exports.registerIndicadoresTools = registerIndicadoresTools;
|
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const ibge_client_js_1 = require("../services/ibge-client.js");
|
|
6
6
|
const INDICADORES = {
|
|
7
|
-
IPCA: { tabela: "
|
|
8
|
-
IPCA_ACUMULADO: { tabela: "
|
|
7
|
+
IPCA: { tabela: "1419", variavel: "63", nome: "IPCA - Variação Mensal", unidade: "%" },
|
|
8
|
+
IPCA_ACUMULADO: { tabela: "1419", variavel: "2266", nome: "IPCA - Acumulado 12 meses", unidade: "%" },
|
|
9
9
|
DESEMPREGO: { tabela: "6381", variavel: "4099", nome: "PNAD - Taxa de Desocupação", unidade: "%" },
|
|
10
10
|
RENDIMENTO: { tabela: "6403", variavel: "5929", nome: "PNAD - Rendimento Médio per capita", unidade: "R$" },
|
|
11
11
|
INPC: { tabela: "1736", variavel: "44", nome: "INPC - Variação Mensal", unidade: "%" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indicadores.js","sourceRoot":"","sources":["../../src/tools/indicadores.ts"],"names":[],"mappings":";;AAcA,4DAyEC;AArFD,6BAAwB;AACxB,+DAAoG;AAGpG,MAAM,WAAW,GAAwF;IACvG,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,GAAG,EAAE;IACtF,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"indicadores.js","sourceRoot":"","sources":["../../src/tools/indicadores.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localidades.d.ts","sourceRoot":"","sources":["../../src/tools/localidades.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"localidades.d.ts","sourceRoot":"","sources":["../../src/tools/localidades.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoIhE"}
|
|
@@ -75,8 +75,12 @@ Retorna: id (7 dígitos), nome, microrregião. Use o id em consultas SIDRA de mu
|
|
|
75
75
|
const uf_nome = municipios[0]?.microrregiao?.mesorregiao?.UF?.nome ?? uf;
|
|
76
76
|
let lista = municipios.map((m) => municipioToSimples(m, uf_sigla, uf_nome));
|
|
77
77
|
if (nome_filtro) {
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
// Normalizar acentos para busca flexível (São Paulo = Sao Paulo)
|
|
79
|
+
const filtroNorm = nome_filtro.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "");
|
|
80
|
+
lista = lista.filter((m) => {
|
|
81
|
+
const nomeNorm = m.nome.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "");
|
|
82
|
+
return nomeNorm.includes(filtroNorm);
|
|
83
|
+
});
|
|
80
84
|
}
|
|
81
85
|
lista.sort((a, b) => a.nome.localeCompare(b.nome));
|
|
82
86
|
const texto = lista.map((m) => `• [${m.id}] ${m.nome}${m.microrregiao ? ` (${m.microrregiao})` : ""}`).join("\n");
|
|
@@ -105,9 +109,13 @@ Retorna: código IBGE, nome, UF, mesorregião de todos os municípios encontrado
|
|
|
105
109
|
? `${ibge_client_js_1.IBGE_API.v1}/localidades/estados/${uf}/municipios`
|
|
106
110
|
: `${ibge_client_js_1.IBGE_API.v1}/localidades/municipios`;
|
|
107
111
|
const municipios = await (0, ibge_client_js_1.ibgeFetch)(url);
|
|
108
|
-
|
|
112
|
+
// Normalizar acentos para busca flexível (São Paulo = Sao Paulo)
|
|
113
|
+
const filtroNorm = nome.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "");
|
|
109
114
|
const encontrados = municipios
|
|
110
|
-
.filter((m) =>
|
|
115
|
+
.filter((m) => {
|
|
116
|
+
const nomeNorm = m.nome.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "");
|
|
117
|
+
return nomeNorm.includes(filtroNorm);
|
|
118
|
+
})
|
|
111
119
|
.map((m) => municipioToSimples(m))
|
|
112
120
|
.sort((a, b) => a.nome.localeCompare(b.nome));
|
|
113
121
|
if (encontrados.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localidades.js","sourceRoot":"","sources":["../../src/tools/localidades.ts"],"names":[],"mappings":";AAAA,wEAAwE;;AAkBxE,
|
|
1
|
+
{"version":3,"file":"localidades.js","sourceRoot":"","sources":["../../src/tools/localidades.ts"],"names":[],"mappings":"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"}
|