sih-br-mcp 0.15.7 → 0.17.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 +8 -5
- package/dist/output-schemas.d.ts +60 -0
- package/dist/output-schemas.d.ts.map +1 -0
- package/dist/output-schemas.js +586 -0
- package/dist/output-schemas.js.map +1 -0
- package/dist/server.d.ts +3 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +18 -3
- package/dist/server.js.map +1 -1
- package/dist/tools.d.ts +22 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +81 -8
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -159,7 +159,7 @@ domínio, rate limit, autenticação opcional e medição — desenho e custos e
|
|
|
159
159
|
|
|
160
160
|
```bash
|
|
161
161
|
npm ci && npm run build
|
|
162
|
-
npm test # vitest: decisão de rota (puro) + envelope das 12 (caso cheio e caso magro)
|
|
162
|
+
npm test # vitest: decisão de rota (puro) + envelope e outputSchema das 12 (caso cheio e caso magro)
|
|
163
163
|
npm run smoke:stdio # superfície das ferramentas × baselines/surface-stdio.json
|
|
164
164
|
npm run smoke:http # mesma superfície e chamadas pelo transporte HTTP (dist/http.js)
|
|
165
165
|
npm run golden:tools # 12 ferramentas byte a byte × baselines/golden-tools.json (fixture 2023/RR)
|
|
@@ -178,10 +178,13 @@ O CI (`.github/workflows/ci.yml`) roda tudo isso em Node 22 e 24. A fixture
|
|
|
178
178
|
A divisão de trabalho entre as duas famílias: os scripts em `scripts/*.mjs`
|
|
179
179
|
pinam VALORES (mudou um número, o baseline acusa); a suíte de `tests/*.test.ts`
|
|
180
180
|
afirma INVARIANTES (qual cubo responde a pergunta; toda resposta sai com
|
|
181
|
-
proveniência
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
181
|
+
proveniência, com o texto igual à estrutura e obedecendo ao `outputSchema` que
|
|
182
|
+
o `tools/list` publica — validado com o mesmo validador do SDK), e por isso
|
|
183
|
+
republicar um cubo não a move. Cada ferramenta tem ali um caso CHEIO e um caso
|
|
184
|
+
MAGRO — a resposta com os campos opcionais ausentes, que o golden, sempre com
|
|
185
|
+
fixture cheia, não alcança — e o caminho de erro-mole ("ano sem dado") também
|
|
186
|
+
é validado. Os esquemas de saída estão em `src/output-schemas.ts`, escritos à
|
|
187
|
+
mão a partir das formas medidas, como os de entrada.
|
|
185
188
|
|
|
186
189
|
## Documentação
|
|
187
190
|
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `outputSchema` das doze ferramentas — JSON Schema escrito à mão, servido
|
|
3
|
+
* verbatim (como o `inputSchema` em src/tools.ts; molde do bcb-br-mcp).
|
|
4
|
+
*
|
|
5
|
+
* De onde vêm as formas. NÃO foram inventadas a partir do código: foram MEDIDAS
|
|
6
|
+
* em 16/09/2026 contra o servidor de verdade (`createServer`, transporte em
|
|
7
|
+
* memória, fixture 2023/RR) — os 36 casos do golden, os 27 casos cheio/magro
|
|
8
|
+
* de tests/output-contract.test.ts e mais 38 variantes de `group_by`, filtro,
|
|
9
|
+
* universo e ano ausente, 101 chamadas ao todo — e depois conferidas contra
|
|
10
|
+
* cada handler, porque a fixture não alcança tudo (raça nula em 1998–2007,
|
|
11
|
+
* município nulo em 1992–1997, o `catch` de cada handler). A medição de 14/09
|
|
12
|
+
* (decisão 37 do CONTEXT.md) já dizia o essencial: a forma NÃO varia com
|
|
13
|
+
* `group_by`; varia com o caminho de erro-mole.
|
|
14
|
+
*
|
|
15
|
+
* O que "honesto" quer dizer aqui, e por que importa: cliente que valida (o
|
|
16
|
+
* MCP Inspector valida) rejeita a resposta INTEIRA quando o `structuredContent`
|
|
17
|
+
* não obedece ao esquema anunciado. Um esquema que promete mais do que o
|
|
18
|
+
* servidor cumpre — campo obrigatório que a fonte omite, `number` onde vem
|
|
19
|
+
* `null` — transforma resposta certa em erro no cliente. Por isso:
|
|
20
|
+
*
|
|
21
|
+
* - campo que algum caminho omite é opcional (fora do `required`);
|
|
22
|
+
* - medida que vem NULA em recorte vazio (`get_hospitalizations` sem linha)
|
|
23
|
+
* é `["number", "null"]`;
|
|
24
|
+
* - coluna de agrupamento que a FONTE anula (raça antes de 2008, município
|
|
25
|
+
* antes de 1994, grupo CSAP das internações não sensíveis, `exclusion`) é
|
|
26
|
+
* anulável, mesmo que a fixture de 2023 nunca a mostre nula;
|
|
27
|
+
* - o CAMINHO DE ERRO-MOLE — resposta de sucesso (não `isError`) que carrega
|
|
28
|
+
* `error` em vez dos dados: "ano sem dado" do funil (decisão 38), grupo
|
|
29
|
+
* CSAP inexistente, o `catch` de cada handler, cobertura populacional — é
|
|
30
|
+
* um ramo do `anyOf`, ao lado do caminho feliz. Ramo do caminho feliz exige
|
|
31
|
+
* os campos de dados; ramo de erro-mole exige `error`. Resposta que não
|
|
32
|
+
* cumpre nenhum dos dois reprova — é isso que dá dente ao gate
|
|
33
|
+
* (tests/output-contract.test.ts).
|
|
34
|
+
*
|
|
35
|
+
* Todos os `properties` ficam declarados no topo, com descrição; o `anyOf` só
|
|
36
|
+
* carrega `required`. Cliente que renderiza `properties` vê tudo; validador
|
|
37
|
+
* aplica a exclusividade.
|
|
38
|
+
*
|
|
39
|
+
* Erros de verdade (`isError: true`, sem `structuredContent`) ficam fora: o
|
|
40
|
+
* SDK v2 só exige `structuredContent` em sucesso.
|
|
41
|
+
*/
|
|
42
|
+
import type { JsonSchemaType } from "@modelcontextprotocol/server";
|
|
43
|
+
type Schema = Record<string, unknown>;
|
|
44
|
+
/**
|
|
45
|
+
* Projeção `concise` do bloco de proveniência (contrato @sbissoli/mcp-provenance
|
|
46
|
+
* v1.0, `ConciseBlock` em render.ts): a forma que `withProvenance` põe em
|
|
47
|
+
* `structuredContent`. Transcrito do PROVENANCE_BLOCK_SCHEMA do bcb-br-mcp
|
|
48
|
+
* (src/provenance.ts) — o pacote comum publica o esquema canônico em zod, não
|
|
49
|
+
* a projeção concise em JSON Schema, então cada servidor a escreve.
|
|
50
|
+
*/
|
|
51
|
+
export declare const PROVENANCE_BLOCK_SCHEMA: Schema;
|
|
52
|
+
/**
|
|
53
|
+
* O `outputSchema` da ferramenta, pronto para o `tools/list`. Recebe o
|
|
54
|
+
* `inputSchema` porque `filters_applied` ecoa os argumentos e é descrito pelas
|
|
55
|
+
* mesmas propriedades. Lança para ferramenta desconhecida: ferramenta nova
|
|
56
|
+
* entra em src/tools.ts e reprova aqui até ganhar o seu esquema.
|
|
57
|
+
*/
|
|
58
|
+
export declare function outputSchemaFor(name: string, inputSchema: JsonSchemaType): JsonSchemaType;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=output-schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-schemas.d.ts","sourceRoot":"","sources":["../src/output-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAwCtC;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAWrC,CAAC;AAwrBF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,GAAG,cAAc,CAIzF"}
|