bcb-br-mcp 1.12.1 → 1.14.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.
- package/dist/call-shape.d.ts +25 -0
- package/dist/call-shape.d.ts.map +1 -1
- package/dist/call-shape.js +31 -0
- package/dist/call-shape.js.map +1 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +5 -2
- package/dist/register.js.map +1 -1
- package/dist/shared.d.ts +23 -0
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +71 -6
- package/dist/shared.js.map +1 -1
- package/package.json +4 -4
package/dist/call-shape.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ export type ErrorClass =
|
|
|
30
30
|
| "nao_encontrado"
|
|
31
31
|
/** A fonte falhou ou demorou: 5xx, timeout, payload grande demais. */
|
|
32
32
|
| "fonte"
|
|
33
|
+
/** Exceção de runtime escapando do handler: é bug NOSSO, não condição da fonte. */
|
|
34
|
+
| "defeito"
|
|
33
35
|
/** Falhou por outro motivo — se esta classe crescer, é sinal de que falta uma classe. */
|
|
34
36
|
| "outro";
|
|
35
37
|
/**
|
|
@@ -65,4 +67,27 @@ export declare function paramNames(args: unknown): string;
|
|
|
65
67
|
* que é `nao_encontrado` por definição, foi gravada como `fonte`.
|
|
66
68
|
*/
|
|
67
69
|
export declare function errorText(result: unknown): string;
|
|
70
|
+
/**
|
|
71
|
+
* Classifica uma exceção que ESCAPOU do handler, tendo o objeto do erro em mãos
|
|
72
|
+
* e não só a mensagem.
|
|
73
|
+
*
|
|
74
|
+
* Por que existe. Em 22/09/2026 o `ibge_cnae` respondia
|
|
75
|
+
* `Cannot read properties of undefined (reading 'divisao')` a um código de
|
|
76
|
+
* classe válido — um `TypeError` nosso, nascido de um `[]` da fonte que
|
|
77
|
+
* atravessou a camada de rede. Nenhum padrão de `classifyError` casa com essa
|
|
78
|
+
* frase, então ela caía em `outro`, que já era 13 dos 23 erros da ferramenta na
|
|
79
|
+
* semana. O comentário de `outro` avisava desde o início: *se esta classe
|
|
80
|
+
* crescer, é sinal de que falta uma classe*. Faltava esta. O conserto nasceu no
|
|
81
|
+
* `ibge-br-mcp` 5.1.2 e é o mesmo em toda a frota, porque a classe é a mesma.
|
|
82
|
+
*
|
|
83
|
+
* O sinal é o TIPO, não a frase, e é por isso que esta função existe separada
|
|
84
|
+
* de `classifyError`: `TypeError`, `RangeError`, `ReferenceError` e
|
|
85
|
+
* `SyntaxError` são erros de programa. A fonte não os produz — nós os
|
|
86
|
+
* produzimos ao supor a forma do que ela respondeu. Classificá-los por
|
|
87
|
+
* mensagem seria caçar o texto do motor de JS, que muda entre versões de Node.
|
|
88
|
+
*
|
|
89
|
+
* `classifyError` fica INTACTA: ela recebe mensagem e continua sendo o caminho
|
|
90
|
+
* do erro que NÓS escrevemos.
|
|
91
|
+
*/
|
|
92
|
+
export declare function classifyThrown(error: unknown): ErrorClass;
|
|
68
93
|
//# sourceMappingURL=call-shape.d.ts.map
|
package/dist/call-shape.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-shape.d.ts","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,qEAAqE;AACrE,MAAM,MAAM,UAAU;AACpB,gHAAgH;AAC9G,UAAU;AACZ,gFAAgF;GAC9E,gBAAgB;AAClB,sEAAsE;GACpE,OAAO;AACT,yFAAyF;GACvF,OAAO,CAAC;AAEZ;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAmEzD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOhD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAcjD"}
|
|
1
|
+
{"version":3,"file":"call-shape.d.ts","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,qEAAqE;AACrE,MAAM,MAAM,UAAU;AACpB,gHAAgH;AAC9G,UAAU;AACZ,gFAAgF;GAC9E,gBAAgB;AAClB,sEAAsE;GACpE,OAAO;AACT,mFAAmF;GACjF,SAAS;AACX,yFAAyF;GACvF,OAAO,CAAC;AAEZ;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAmEzD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOhD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAcjD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAUzD"}
|
package/dist/call-shape.js
CHANGED
|
@@ -135,4 +135,35 @@ export function errorText(result) {
|
|
|
135
135
|
}
|
|
136
136
|
return t;
|
|
137
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Classifica uma exceção que ESCAPOU do handler, tendo o objeto do erro em mãos
|
|
140
|
+
* e não só a mensagem.
|
|
141
|
+
*
|
|
142
|
+
* Por que existe. Em 22/09/2026 o `ibge_cnae` respondia
|
|
143
|
+
* `Cannot read properties of undefined (reading 'divisao')` a um código de
|
|
144
|
+
* classe válido — um `TypeError` nosso, nascido de um `[]` da fonte que
|
|
145
|
+
* atravessou a camada de rede. Nenhum padrão de `classifyError` casa com essa
|
|
146
|
+
* frase, então ela caía em `outro`, que já era 13 dos 23 erros da ferramenta na
|
|
147
|
+
* semana. O comentário de `outro` avisava desde o início: *se esta classe
|
|
148
|
+
* crescer, é sinal de que falta uma classe*. Faltava esta. O conserto nasceu no
|
|
149
|
+
* `ibge-br-mcp` 5.1.2 e é o mesmo em toda a frota, porque a classe é a mesma.
|
|
150
|
+
*
|
|
151
|
+
* O sinal é o TIPO, não a frase, e é por isso que esta função existe separada
|
|
152
|
+
* de `classifyError`: `TypeError`, `RangeError`, `ReferenceError` e
|
|
153
|
+
* `SyntaxError` são erros de programa. A fonte não os produz — nós os
|
|
154
|
+
* produzimos ao supor a forma do que ela respondeu. Classificá-los por
|
|
155
|
+
* mensagem seria caçar o texto do motor de JS, que muda entre versões de Node.
|
|
156
|
+
*
|
|
157
|
+
* `classifyError` fica INTACTA: ela recebe mensagem e continua sendo o caminho
|
|
158
|
+
* do erro que NÓS escrevemos.
|
|
159
|
+
*/
|
|
160
|
+
export function classifyThrown(error) {
|
|
161
|
+
if (error instanceof TypeError ||
|
|
162
|
+
error instanceof RangeError ||
|
|
163
|
+
error instanceof ReferenceError ||
|
|
164
|
+
error instanceof SyntaxError) {
|
|
165
|
+
return "defeito";
|
|
166
|
+
}
|
|
167
|
+
return classifyError(error instanceof Error ? error.message : String(error));
|
|
168
|
+
}
|
|
138
169
|
//# sourceMappingURL=call-shape.js.map
|
package/dist/call-shape.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-shape.js","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"call-shape.js","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"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"}
|
package/dist/register.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EACL,SAAS,EAOV,MAAM,8BAA8B,CAAC;AA4CtC;;;;;GAKG;AACH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,WAAW,GAAG,YAAY,EAChC,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,cAAc,KACnB,IAAI,CAAC;AAEV,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,MAAM,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EACL,SAAS,EAOV,MAAM,8BAA8B,CAAC;AA4CtC;;;;;GAKG;AACH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,WAAW,GAAG,YAAY,EAChC,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,cAAc,KACnB,IAAI,CAAC;AAEV,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,MAAM,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAmElF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,SAAS,CAiBtF"}
|
package/dist/register.js
CHANGED
|
@@ -39,7 +39,7 @@ import { McpServer, fromJsonSchema } from "@modelcontextprotocol/server";
|
|
|
39
39
|
// interpreta o schema em vez de gerar código, funciona igual no Node, e assim
|
|
40
40
|
// os dois transportes validam exatamente da mesma forma.
|
|
41
41
|
import { CfWorkerJsonSchemaValidator } from "@modelcontextprotocol/server/validators/cf-worker";
|
|
42
|
-
import { classifyError, errorText, paramNames } from "./call-shape.js";
|
|
42
|
+
import { classifyError, classifyThrown, errorText, paramNames } from "./call-shape.js";
|
|
43
43
|
import { announceServedVersions } from "./discover.js";
|
|
44
44
|
import { SERVER_IDENTITY, SERVER_INSTRUCTIONS } from "./identity.js";
|
|
45
45
|
import { TOOL_DEFINITIONS, RESOURCE_DEFINITIONS, PROMPT_DEFINITIONS, dispatchTool, CONFIG } from "./tools.js";
|
|
@@ -95,7 +95,10 @@ export function registerAll(server, options = {}) {
|
|
|
95
95
|
// Handlers already trap their own failures; this is the last resort
|
|
96
96
|
// so an unexpected throw never breaks the transport.
|
|
97
97
|
const message = error instanceof Error ? error.message : String(error);
|
|
98
|
-
|
|
98
|
+
// `classifyThrown` e não `classifyError`: aqui o OBJETO do erro existe,
|
|
99
|
+
// e o tipo dele separa bug nosso (`TypeError` & cia. -> `defeito`) de
|
|
100
|
+
// condição da fonte. Pela mensagem, um `TypeError` caía em `outro`.
|
|
101
|
+
const forma = { params: paramNames(args), classe: classifyThrown(error) };
|
|
99
102
|
record?.("tool_call", tool.name, forma);
|
|
100
103
|
record?.("tool_error", tool.name, forma);
|
|
101
104
|
return {
|
package/dist/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EACL,SAAS,EACT,cAAc,EAMf,MAAM,8BAA8B,CAAC;AACtC,yEAAyE;AACzE,uEAAuE;AACvE,+EAA+E;AAC/E,0EAA0E;AAC1E,8EAA8E;AAC9E,yDAAyD;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
|
package/dist/shared.d.ts
CHANGED
|
@@ -13,6 +13,29 @@ export declare const CONFIG: {
|
|
|
13
13
|
MAX_RETRIES: number;
|
|
14
14
|
RETRY_DELAY_MS: number;
|
|
15
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Orçamento de tempo do PEDIDO PEQUENO (`/dados/ultimos/N`, no máximo 20
|
|
18
|
+
* observações). Não é ajuste fino: é o que separa "não existe" de "demorou".
|
|
19
|
+
*
|
|
20
|
+
* Medido em 24/09/2026, 15 séries reais (432, 433, 11, 12, 13521, 7000, 189,
|
|
21
|
+
* 188, 4390, 20539, 24363, 21619, 1178, 28763, 25239): `ultimos/1` responde
|
|
22
|
+
* entre **0,18 s e 0,41 s**. Código inexistente (99999, 99999999, 999999999)
|
|
23
|
+
* responde `200 text/html` com a página de requisição inválida — mas depois de
|
|
24
|
+
* **~30,2 s**. São duas populações separadas por ~75×.
|
|
25
|
+
*
|
|
26
|
+
* Consequência que este valor conserta: os dois orçamentos do servidor (30 s no
|
|
27
|
+
* stdio, 10 s no Worker) ABORTAM antes dos 30,2 s, então a defesa que lê a
|
|
28
|
+
* página HTML (logo abaixo, medida em 13/08/2026) nunca chegava a rodar. Quem
|
|
29
|
+
* errava um dígito esperava duas tentativas inteiras para receber "Falha após 2
|
|
30
|
+
* tentativas: The operation was aborted" — mensagem que culpa a origem por um
|
|
31
|
+
* erro de digitação.
|
|
32
|
+
*
|
|
33
|
+
* 6 s dá ~15× de folga sobre a resposta real mais lenta já medida e corta a
|
|
34
|
+
* espera do código errado de ~25 s para ~6 s.
|
|
35
|
+
*/
|
|
36
|
+
export declare const TIMEOUT_PEDIDO_PEQUENO_MS = 6000;
|
|
37
|
+
/** A forma de URL que pede no máximo 20 observações. */
|
|
38
|
+
export declare function ehPedidoPequeno(url: string): boolean;
|
|
16
39
|
export declare const WORKER_CONFIG: {
|
|
17
40
|
TIMEOUT_MS: number;
|
|
18
41
|
MAX_RETRIES: number;
|
package/dist/shared.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,MAAM;IACjB,UAAU;IACV,WAAW;IACX,cAAc;CACf,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,MAAM;IACjB,UAAU;IACV,WAAW;IACX,cAAc;CACf,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEpD;AAGD,eAAO,MAAM,aAAa;IACxB,UAAU;IACV,WAAW;IACX,cAAc;CACf,CAAC;AAgBF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAID,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe;AACzB,sEAAsE;AACpE,QAAQ;AACV,kFAAkF;GAChF,QAAQ,CAAC;AAEb,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,SAAS,EAAE,eAAe,CAAC;IAC3B,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD;;;GAGG;AACH,eAAO,MAAM,eAAe,QAIO,CAAC;AAEpC,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,QAGT,CAAC;AAI1B;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAK7E;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEpD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD;AAID,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAI3C;CACF;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,QAAQ,EAAE,MAAM,EAG3B;CACF;AAsBD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,iFAAiF;IACjF,QAAQ,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAExE;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,UAAQ,GAAG,IAAI,CAElF;AAED,mEAAmE;AACnE,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAEnD;AAED,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,WAAW,EAAE,IAAI,CAAC;IAClB,uFAAuF;IACvF,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,gBAAgB,CAcrF;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgBxF;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,MAA0B,EACrC,UAAU,GAAE,MAA2B,GACtC,OAAO,CAAC,OAAO,CAAC,CAyHlB;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGnF;AAID;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAUxC;AAED,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,OAAO,CAAC;QACtB,eAAe,EAAE,OAAO,CAAC;QACzB,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC,CAE1E"}
|
package/dist/shared.js
CHANGED
|
@@ -14,6 +14,31 @@ export const CONFIG = {
|
|
|
14
14
|
MAX_RETRIES: 3,
|
|
15
15
|
RETRY_DELAY_MS: 1000
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Orçamento de tempo do PEDIDO PEQUENO (`/dados/ultimos/N`, no máximo 20
|
|
19
|
+
* observações). Não é ajuste fino: é o que separa "não existe" de "demorou".
|
|
20
|
+
*
|
|
21
|
+
* Medido em 24/09/2026, 15 séries reais (432, 433, 11, 12, 13521, 7000, 189,
|
|
22
|
+
* 188, 4390, 20539, 24363, 21619, 1178, 28763, 25239): `ultimos/1` responde
|
|
23
|
+
* entre **0,18 s e 0,41 s**. Código inexistente (99999, 99999999, 999999999)
|
|
24
|
+
* responde `200 text/html` com a página de requisição inválida — mas depois de
|
|
25
|
+
* **~30,2 s**. São duas populações separadas por ~75×.
|
|
26
|
+
*
|
|
27
|
+
* Consequência que este valor conserta: os dois orçamentos do servidor (30 s no
|
|
28
|
+
* stdio, 10 s no Worker) ABORTAM antes dos 30,2 s, então a defesa que lê a
|
|
29
|
+
* página HTML (logo abaixo, medida em 13/08/2026) nunca chegava a rodar. Quem
|
|
30
|
+
* errava um dígito esperava duas tentativas inteiras para receber "Falha após 2
|
|
31
|
+
* tentativas: The operation was aborted" — mensagem que culpa a origem por um
|
|
32
|
+
* erro de digitação.
|
|
33
|
+
*
|
|
34
|
+
* 6 s dá ~15× de folga sobre a resposta real mais lenta já medida e corta a
|
|
35
|
+
* espera do código errado de ~25 s para ~6 s.
|
|
36
|
+
*/
|
|
37
|
+
export const TIMEOUT_PEDIDO_PEQUENO_MS = 6000;
|
|
38
|
+
/** A forma de URL que pede no máximo 20 observações. */
|
|
39
|
+
export function ehPedidoPequeno(url) {
|
|
40
|
+
return /\/dados\/ultimos\/\d+/.test(url);
|
|
41
|
+
}
|
|
17
42
|
// Worker uses shorter timeout (Cloudflare has its own limits)
|
|
18
43
|
export const WORKER_CONFIG = {
|
|
19
44
|
TIMEOUT_MS: 10000,
|
|
@@ -195,9 +220,14 @@ export async function fetchWithTimeout(url, timeoutMs) {
|
|
|
195
220
|
}
|
|
196
221
|
export async function fetchBcbApi(url, timeoutMs = CONFIG.TIMEOUT_MS, maxRetries = CONFIG.MAX_RETRIES) {
|
|
197
222
|
let lastError = null;
|
|
223
|
+
// O pedido pequeno nunca precisa de 10 s, muito menos de 30: a resposta real
|
|
224
|
+
// mais lenta já medida levou 0,41 s. Encurtar o orçamento AQUI é o que faz a
|
|
225
|
+
// inexistência aparecer como inexistência em vez de como falha da origem.
|
|
226
|
+
const pequeno = ehPedidoPequeno(url);
|
|
227
|
+
const orcamentoMs = pequeno ? Math.min(timeoutMs, TIMEOUT_PEDIDO_PEQUENO_MS) : timeoutMs;
|
|
198
228
|
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
199
229
|
try {
|
|
200
|
-
const response = await fetchWithTimeout(url,
|
|
230
|
+
const response = await fetchWithTimeout(url, orcamentoMs);
|
|
201
231
|
if (!response.ok) {
|
|
202
232
|
if (response.status === 404) {
|
|
203
233
|
throw new ErroHttpBcb(404, `Série não encontrada ou sem dados para o período solicitado`);
|
|
@@ -223,11 +253,21 @@ export async function fetchBcbApi(url, timeoutMs = CONFIG.TIMEOUT_MS, maxRetries
|
|
|
223
253
|
//
|
|
224
254
|
// `ultimos/N` nunca é caso (b): pede no máximo 20 observações. Então a
|
|
225
255
|
// forma da URL separa os dois sem uma requisição a mais.
|
|
226
|
-
|
|
256
|
+
//
|
|
257
|
+
// (c) DESCOBERTO em 24/09/2026, e derruba o "determinístico" que estava
|
|
258
|
+
// escrito aqui: a origem responde essa MESMA página, depois dos
|
|
259
|
+
// mesmos ~30 s, a uma série que EXISTE. Medido na 432 (meta Selic):
|
|
260
|
+
// 3 páginas HTML em 9 chamadas numa janela de poucos minutos e,
|
|
261
|
+
// logo depois, 20 chamadas seguidas devolvendo JSON em ≤ 0,4 s. Ou
|
|
262
|
+
// seja: a página não prova inexistência — prova que ESTA tentativa
|
|
263
|
+
// não trouxe dado. Tratá-la como veredito fazia o servidor dizer que
|
|
264
|
+
// a meta Selic não existe sempre que a origem soluçasse.
|
|
265
|
+
//
|
|
266
|
+
// Por isso a suspeita de inexistência agora é RESOLVIDA POR REPETIÇÃO,
|
|
267
|
+
// no `catch` abaixo: código que não existe falha em todas as tentativas;
|
|
268
|
+
// série boa volta na seguinte, em décimos de segundo.
|
|
269
|
+
const pediuPoucasObservacoes = pequeno;
|
|
227
270
|
if (pediuPoucasObservacoes) {
|
|
228
|
-
// Determinístico como um 4xx: o código não existe e não vai passar a
|
|
229
|
-
// existir na tentativa seguinte. Repetir aqui gastava as retentativas
|
|
230
|
-
// inteiras, com backoff, para chegar à mesma resposta.
|
|
231
271
|
throw new ErroSerieInexistente("A API do BCB respondeu com a página de 'requisição inválida' a um pedido pequeno — " +
|
|
232
272
|
"é assim que ela indica série INEXISTENTE (não usa 404). Confira o código da série.");
|
|
233
273
|
}
|
|
@@ -238,7 +278,8 @@ export async function fetchBcbApi(url, timeoutMs = CONFIG.TIMEOUT_MS, maxRetries
|
|
|
238
278
|
}
|
|
239
279
|
catch (error) {
|
|
240
280
|
lastError = error instanceof Error ? error : new Error(String(error));
|
|
241
|
-
|
|
281
|
+
// 404 de verdade continua determinístico.
|
|
282
|
+
if (lastError.message.includes("não encontrada")) {
|
|
242
283
|
throw lastError;
|
|
243
284
|
}
|
|
244
285
|
// Erro de cliente (4xx) é determinístico: repetir só gasta tempo e
|
|
@@ -250,6 +291,30 @@ export async function fetchBcbApi(url, timeoutMs = CONFIG.TIMEOUT_MS, maxRetries
|
|
|
250
291
|
const isTimeout = lastError.name === "AbortError" ||
|
|
251
292
|
lastError.message.includes("aborted") ||
|
|
252
293
|
lastError.message.includes("timeout");
|
|
294
|
+
// SUSPEITA de inexistência, no pedido pequeno: ou a origem devolveu a
|
|
295
|
+
// página de 'requisição inválida', ou não devolveu nada dentro do
|
|
296
|
+
// orçamento curto. As duas são a mesma coisa vista de dois lados — a
|
|
297
|
+
// origem leva ~30 s para negar um código que não existe, e o orçamento
|
|
298
|
+
// de 6 s corta esse silêncio antes de a página chegar.
|
|
299
|
+
//
|
|
300
|
+
// A suspeita se RESOLVE POR REPETIÇÃO, não por veredito na primeira
|
|
301
|
+
// tentativa: a mesma página sai para série que EXISTE (medição de
|
|
302
|
+
// 24/09/2026, série 432 — ver o comentário no `catch` do JSON). Código
|
|
303
|
+
// inexistente falha em todas; série boa volta na seguinte em décimos de
|
|
304
|
+
// segundo. Com o orçamento curto, insistir custa ~6 s por tentativa em
|
|
305
|
+
// vez dos ~10–30 s de antes.
|
|
306
|
+
const suspeitaInexistencia = pequeno && (lastError instanceof ErroSerieInexistente || isTimeout);
|
|
307
|
+
if (suspeitaInexistencia && attempt >= maxRetries) {
|
|
308
|
+
// Só aqui vira afirmação — e ainda assim nomeia a alternativa, porque
|
|
309
|
+
// queda de rede e indisponibilidade da origem terminam igual. Dizer
|
|
310
|
+
// "não existe" de um código certo seria trocar erro alto por plausível.
|
|
311
|
+
throw new ErroSerieInexistente(`A API do BCB não trouxe dado em ${maxRetries} tentativas de um pedido de poucas ` +
|
|
312
|
+
`observações (orçamento de ${Math.round(orcamentoMs / 1000)}s cada). Série que existe ` +
|
|
313
|
+
"responde em menos de 0,5 s; é a série INEXISTENTE que fica ~30 s sem resposta antes de " +
|
|
314
|
+
"devolver a página de 'requisição inválida' (a origem não usa 404). Confira o código com " +
|
|
315
|
+
"`bcb_buscar_serie`. Se o código estiver certo, a origem está indisponível — repita em " +
|
|
316
|
+
"instantes.");
|
|
317
|
+
}
|
|
253
318
|
if (attempt < maxRetries) {
|
|
254
319
|
const delayMs = CONFIG.RETRY_DELAY_MS * Math.pow(2, attempt - 1);
|
|
255
320
|
const reason = isTimeout ? "timeout" : "erro";
|
package/dist/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bcb-br-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.14.1",
|
|
4
4
|
"mcpName": "io.github.SidneyBissoli/bcb-br-mcp",
|
|
5
5
|
"description": "MCP server for the Brazilian Central Bank (Banco Central do Brasil, BCB): SGS time series (Selic, IPCA, exchange rates, GDP and a curated catalogue of indicators), Focus market expectations, PTAX exchange rates and the Olinda open-data platform, with a provenance block on every response.",
|
|
6
6
|
"type": "module",
|
|
@@ -64,16 +64,16 @@
|
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
66
66
|
"@sbissoli/mcp-provenance": "^0.1.0",
|
|
67
|
-
"@sbissoli/mcp-search": "^0.
|
|
67
|
+
"@sbissoli/mcp-search": "^0.6.0",
|
|
68
68
|
"@sbissoli/mcp-stats": "^0.3.0"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"@modelcontextprotocol/client": "^2.0.0",
|
|
72
72
|
"@sbissoli/mcp-evals": "^0.1.0",
|
|
73
|
-
"@types/node": "^26.
|
|
73
|
+
"@types/node": "^26.6.1",
|
|
74
74
|
"tsx": "^4.23.13",
|
|
75
75
|
"typescript": "^7.0.2",
|
|
76
76
|
"vite": "^8.3.0",
|
|
77
|
-
"vitest": "^5.0.
|
|
77
|
+
"vitest": "^5.0.1"
|
|
78
78
|
}
|
|
79
79
|
}
|