ibge-br-mcp 5.1.0 → 5.1.1

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.
@@ -64,15 +64,11 @@
64
64
  * carro/frota (0 — frota é do Denatran), imc (0), matrícula como cadastro
65
65
  * (0 — o IBGE mede "frequenta escola", não matrícula, que é do Inep).
66
66
  *
67
- * Vale para os dois caminhos de busca, pelas duas pontas da mesma tabela:
68
- * `ibge_sidra_tabelas` expande o TERMO da busca (OR dentro do termo, AND entre
69
- * termos — expandir só aumenta o recall, nunca perde casamento que já havia) e
70
- * o índice de `search` (Deep Research) recebe a palavra perguntada como KEYWORD
71
- * do agregado cujo nome traz a palavra da fonte.
72
- *
73
- * Mesma receita de `src/ilostat/vocabulary.ts` (ilo-mcp-server 0.6.0) e
74
- * `src/uis/vocabulary.ts` (uis-mcp-server 0.3.0); terceiro servidor com ela —
75
- * candidata a subir para `@sbissoli/mcp-search`.
67
+ * A MECÂNICA (normalização dos dois lados, AND por palavra com stopwords do
68
+ * pt-BR fora, singular sem caco, OR das grafias do IBGE, a nota dita e a ponta
69
+ * inversa para o índice de `search`) mora em `@sbissoli/mcp-search` desde a
70
+ * 0.5.0 — cinco servidores a carregavam em cópia; aqui fica só a tabela. Os
71
+ * nomes exportados são os de sempre (em português), para quem chama não mudar.
76
72
  */
77
73
  export interface EntradaVocabulario {
78
74
  /** Como o usuário escreve (um token, normalizado: minúsculo, sem acento). */
@@ -81,36 +77,26 @@ export interface EntradaVocabulario {
81
77
  readonly fonte: readonly string[];
82
78
  }
83
79
  export declare const VOCABULARIO: readonly EntradaVocabulario[];
84
- /** Sem acento, caixa baixa, espaços colapsados — os dois lados da busca passam por aqui. */
85
- export declare function normalizar(texto: string): string;
86
- /** Os termos efetivos da busca: normalizados, sem stopword, sem vazio. */
87
- export declare function termosDaBusca(busca: string): string[];
88
- /**
89
- * Um termo e as substrings que o representam na busca (o próprio termo primeiro).
90
- * A expansão só acrescenta alternativas em OR: o que casava antes segue casando.
91
- */
92
- export declare function expandirTermo(termo: string): string[];
93
80
  export interface TermoExpandido {
94
81
  readonly termo: string;
95
82
  readonly padroes: readonly string[];
96
83
  /** A tabela (não a mera flexão de plural) mudou o que se procura. */
97
84
  readonly traduzido: boolean;
98
85
  }
86
+ /** Sem acento, caixa baixa, espaços colapsados — os dois lados da busca passam por aqui. */
87
+ export declare const normalizar: (text: string) => string;
88
+ /** Os termos efetivos da busca: normalizados, sem stopword, sem vazio. */
89
+ export declare const termosDaBusca: (query: string) => string[];
90
+ /** Um termo e as substrings que o representam na busca (o próprio termo primeiro). */
91
+ export declare const expandirTermo: (term: string) => string[];
99
92
  /** A busca inteira, termo a termo, pronta para virar filtro. */
100
93
  export declare function expandirBusca(busca: string): TermoExpandido[];
101
- /**
102
- * A frase que conta ao chamador que a palavra dele não é a do IBGE — sem isto
103
- * a tradução é invisível e o resultado parece vir do que ele escreveu.
104
- */
94
+ /** A frase que conta ao chamador que a palavra dele não é a do IBGE. */
105
95
  export declare function notasDeVocabulario(expandidos: readonly TermoExpandido[]): string[];
106
96
  /** Um nome (já normalizado) casa o termo expandido? */
107
97
  export declare function casaTermo(nomeNormalizado: string, expandido: TermoExpandido): boolean;
108
98
  /** Um nome (já normalizado) casa TODOS os termos da busca expandida? */
109
99
  export declare function casaBusca(nomeNormalizado: string, expandidos: readonly TermoExpandido[]): boolean;
110
- /**
111
- * A ponta inversa da tabela: as palavras com que se PERGUNTA por este nome de
112
- * agregado — keywords do índice de `search`, que ranqueia por relevância em
113
- * vez de casar substring.
114
- */
115
- export declare function palavrasPerguntadas(nome: string): string[];
100
+ /** A ponta inversa: as palavras com que se PERGUNTA por este nome — keywords do índice de `search`. */
101
+ export declare const palavrasPerguntadas: (name: string) => string[];
116
102
  //# sourceMappingURL=vocabulario.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vocabulario.d.ts","sourceRoot":"","sources":["../src/vocabulario.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,kBAAkB,EAgCpD,CAAC;AAuCF,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAeD,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAIrD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAQrD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAO7D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,EAAE,CAOlF;AAED,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAErF;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAEjG;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAM1D"}
1
+ {"version":3,"file":"vocabulario.d.ts","sourceRoot":"","sources":["../src/vocabulario.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AAIH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,kBAAkB,EAgCpD,CAAC;AAQF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAaD,4FAA4F;AAC5F,eAAO,MAAM,UAAU,0BAAwB,CAAC;AAChD,0EAA0E;AAC1E,eAAO,MAAM,aAAa,6BAAyB,CAAC;AACpD,sFAAsF;AACtF,eAAO,MAAM,aAAa,4BAAyB,CAAC;AACpD,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAE7D;AACD,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,EAAE,CAElF;AACD,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAErF;AACD,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAEjG;AACD,uGAAuG;AACvG,eAAO,MAAM,mBAAmB,4BAA4B,CAAC"}
@@ -64,16 +64,13 @@
64
64
  * carro/frota (0 — frota é do Denatran), imc (0), matrícula como cadastro
65
65
  * (0 — o IBGE mede "frequenta escola", não matrícula, que é do Inep).
66
66
  *
67
- * Vale para os dois caminhos de busca, pelas duas pontas da mesma tabela:
68
- * `ibge_sidra_tabelas` expande o TERMO da busca (OR dentro do termo, AND entre
69
- * termos — expandir só aumenta o recall, nunca perde casamento que já havia) e
70
- * o índice de `search` (Deep Research) recebe a palavra perguntada como KEYWORD
71
- * do agregado cujo nome traz a palavra da fonte.
72
- *
73
- * Mesma receita de `src/ilostat/vocabulary.ts` (ilo-mcp-server 0.6.0) e
74
- * `src/uis/vocabulary.ts` (uis-mcp-server 0.3.0); terceiro servidor com ela —
75
- * candidata a subir para `@sbissoli/mcp-search`.
67
+ * A MECÂNICA (normalização dos dois lados, AND por palavra com stopwords do
68
+ * pt-BR fora, singular sem caco, OR das grafias do IBGE, a nota dita e a ponta
69
+ * inversa para o índice de `search`) mora em `@sbissoli/mcp-search` desde a
70
+ * 0.5.0 — cinco servidores a carregavam em cópia; aqui fica só a tabela. Os
71
+ * nomes exportados são os de sempre (em português), para quem chama não mudar.
76
72
  */
73
+ import { createVocabulary } from "@sbissoli/mcp-search";
77
74
  export const VOCABULARIO = [
78
75
  { perguntado: "desemprego", fonte: ["desocupa"] },
79
76
  { perguntado: "desempregado", fonte: ["desocupa"] },
@@ -107,112 +104,43 @@ export const VOCABULARIO = [
107
104
  { perguntado: "expectativa", fonte: ["expectativa", "esperanca"] },
108
105
  { perguntado: "quarto", fonte: ["quarto", "dormitorio"] },
109
106
  ];
110
- const POR_PERGUNTADO = new Map(VOCABULARIO.map((e) => [e.perguntado, e.fonte]));
111
- /**
112
- * Palavras que não carregam significado no nome de um agregado e, em AND,
113
- * excluem resultado certo ("grupo de idade" não pode morrer no "de"). Só saem
114
- * quando sobra algum termo — busca feita só de stopword continua valendo.
115
- */
116
- const STOPWORDS = new Set([
117
- "a",
118
- "o",
119
- "as",
120
- "os",
121
- "um",
122
- "uma",
123
- "de",
124
- "da",
125
- "do",
126
- "das",
127
- "dos",
128
- "e",
129
- "em",
130
- "no",
131
- "na",
132
- "nos",
133
- "nas",
134
- "ao",
135
- "aos",
136
- "por",
137
- "para",
138
- "com",
139
- "sem",
140
- "que",
141
- "ou",
142
- ]);
107
+ const vocabulario = createVocabulary({
108
+ entries: VOCABULARIO.map((e) => ({ asked: e.perguntado, source: e.fonte })),
109
+ locale: "pt-BR",
110
+ sourceName: "o IBGE",
111
+ });
112
+ const emPortugues = (e) => ({
113
+ termo: e.term,
114
+ padroes: e.patterns,
115
+ traduzido: e.translated,
116
+ });
117
+ const emIngles = (e) => ({
118
+ term: e.termo,
119
+ patterns: e.padroes,
120
+ translated: e.traduzido,
121
+ });
143
122
  /** Sem acento, caixa baixa, espaços colapsados — os dois lados da busca passam por aqui. */
144
- export function normalizar(texto) {
145
- return texto.normalize("NFD").replace(/[̀-ͯ]/g, "").toLowerCase().replace(/\s+/g, " ").trim();
146
- }
147
- /**
148
- * Forma singular de um termo já normalizado — a substring mais curta casa o
149
- * plural também. Só as regras do português que não fabricam caco: "ões/ães"
150
- * → "ão" (já sem acento: "oes"→"ao"), "ais/eis/ois" → "al/el/ol" e o "s" final.
151
- */
152
- function singulares(termo) {
153
- if (termo.length > 4 && (termo.endsWith("oes") || termo.endsWith("aes")))
154
- return [`${termo.slice(0, -3)}ao`];
155
- if (termo.length > 4 && /(ais|eis|ois)$/.test(termo))
156
- return [`${termo.slice(0, -2)}l`];
157
- if (termo.length > 3 && termo.endsWith("s") && !termo.endsWith("ss"))
158
- return [termo.slice(0, -1)];
159
- return [];
160
- }
123
+ export const normalizar = vocabulario.normalize;
161
124
  /** Os termos efetivos da busca: normalizados, sem stopword, sem vazio. */
162
- export function termosDaBusca(busca) {
163
- const todos = normalizar(busca).split(" ").filter(Boolean);
164
- const ficam = todos.filter((t) => !STOPWORDS.has(t));
165
- return ficam.length ? ficam : todos;
166
- }
167
- /**
168
- * Um termo e as substrings que o representam na busca (o próprio termo primeiro).
169
- * A expansão só acrescenta alternativas em OR: o que casava antes segue casando.
170
- */
171
- export function expandirTermo(termo) {
172
- const t = normalizar(termo);
173
- const saida = [
174
- t,
175
- ...(POR_PERGUNTADO.get(t) ?? []),
176
- ...singulares(t).flatMap((s) => [s, ...(POR_PERGUNTADO.get(s) ?? [])]),
177
- ];
178
- return [...new Set(saida)];
179
- }
125
+ export const termosDaBusca = vocabulario.queryTerms;
126
+ /** Um termo e as substrings que o representam na busca (o próprio termo primeiro). */
127
+ export const expandirTermo = vocabulario.expandTerm;
180
128
  /** A busca inteira, termo a termo, pronta para virar filtro. */
181
129
  export function expandirBusca(busca) {
182
- return termosDaBusca(busca).map((termo) => {
183
- const padroes = expandirTermo(termo);
184
- const traduzido = POR_PERGUNTADO.has(termo) || singulares(termo).some((s) => POR_PERGUNTADO.has(s));
185
- return { termo, padroes, traduzido };
186
- });
130
+ return vocabulario.expandQuery(busca).map(emPortugues);
187
131
  }
188
- /**
189
- * A frase que conta ao chamador que a palavra dele não é a do IBGE — sem isto
190
- * a tradução é invisível e o resultado parece vir do que ele escreveu.
191
- */
132
+ /** A frase que conta ao chamador que a palavra dele não é a do IBGE. */
192
133
  export function notasDeVocabulario(expandidos) {
193
- return expandidos
194
- .filter((e) => e.traduzido)
195
- .map((e) => {
196
- const outros = e.padroes.filter((p) => p !== e.termo);
197
- return `"${e.termo}" também foi buscado como ${outros.join(", ")} — a palavra que o IBGE usa.`;
198
- });
134
+ return vocabulario.vocabularyNotes(expandidos.map(emIngles));
199
135
  }
200
136
  /** Um nome (já normalizado) casa o termo expandido? */
201
137
  export function casaTermo(nomeNormalizado, expandido) {
202
- return expandido.padroes.some((p) => nomeNormalizado.includes(p));
138
+ return vocabulario.matchesTerm(nomeNormalizado, emIngles(expandido));
203
139
  }
204
140
  /** Um nome (já normalizado) casa TODOS os termos da busca expandida? */
205
141
  export function casaBusca(nomeNormalizado, expandidos) {
206
- return expandidos.every((e) => casaTermo(nomeNormalizado, e));
207
- }
208
- /**
209
- * A ponta inversa da tabela: as palavras com que se PERGUNTA por este nome de
210
- * agregado — keywords do índice de `search`, que ranqueia por relevância em
211
- * vez de casar substring.
212
- */
213
- export function palavrasPerguntadas(nome) {
214
- const n = normalizar(nome);
215
- const saida = VOCABULARIO.filter((e) => e.fonte.some((f) => n.includes(f))).map((e) => e.perguntado);
216
- return [...new Set(saida)];
142
+ return vocabulario.matchesQuery(nomeNormalizado, expandidos.map(emIngles));
217
143
  }
144
+ /** A ponta inversa: as palavras com que se PERGUNTA por este nome — keywords do índice de `search`. */
145
+ export const palavrasPerguntadas = vocabulario.askedWordsFor;
218
146
  //# sourceMappingURL=vocabulario.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vocabulario.js","sourceRoot":"","sources":["../src/vocabulario.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AASH,MAAM,CAAC,MAAM,WAAW,GAAkC;IACxD,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE;IACjD,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE;IACnD,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE;IACnD,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE;IAC9C,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;IAC7D,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;IAC/C,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;IACpD,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE;IACxD,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACvD,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;IACzC,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;IACnD,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;IACjE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;IACjE,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE;IACtE,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE;IACnE,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE;IAC3D,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,kBAAkB,EAAE,cAAc,CAAC,EAAE;IAClE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;IACtD,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;IAC/C,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE;IAC/C,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACrD,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,qBAAqB,CAAC,EAAE;IACnF,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,qBAAqB,CAAC,EAAE;IACnF,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE;IAC7C,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;IAC/C,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;IAC1C,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;IACjE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE;IAC3C,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE;IAC3C,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE;IAClE,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;CAC1D,CAAC;AAEF,MAAM,cAAc,GAA2C,IAAI,GAAG,CACpE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAChD,CAAC;AAEF;;;;GAIG;AACH,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAC;IAC7C,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;CACL,CAAC,CAAC;AAEH,4FAA4F;AAC5F,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAChG,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG;QACZ,CAAC;QACD,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACvE,CAAC;IACF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AASD,gEAAgE;AAChE,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,SAAS,GACb,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAqC;IACtE,OAAO,UAAU;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,CAAC,KAAK,6BAA6B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC;IACjG,CAAC,CAAC,CAAC;AACP,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,SAAS,CAAC,eAAuB,EAAE,SAAyB;IAC1E,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,eAAuB,EAAE,UAAqC;IACtF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAC7E,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CACpB,CAAC;IACF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"vocabulario.js","sourceRoot":"","sources":["../src/vocabulario.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ibge-br-mcp",
3
- "version": "5.1.0",
3
+ "version": "5.1.1",
4
4
  "mcpName": "io.github.SidneyBissoli/ibge-br-mcp",
5
5
  "description": "MCP server giving AI assistants live, sourced access to Brazilian public data — geography, census, economy and health — from the official IBGE APIs. Exact figures with provenance, not approximations.",
6
6
  "type": "module",
@@ -60,7 +60,7 @@
60
60
  "dependencies": {
61
61
  "@modelcontextprotocol/server": "^2.0.0",
62
62
  "@sbissoli/mcp-provenance": "^0.1.0",
63
- "@sbissoli/mcp-search": "^0.4.0",
63
+ "@sbissoli/mcp-search": "^0.5.0",
64
64
  "@sbissoli/mcp-stats": "^0.3.0",
65
65
  "zod": "^4.5.4"
66
66
  },