opf-br-mcp 0.4.0 → 0.5.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/README.md +22 -1
- package/dist/index.js +23 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ de um `search`. Assim o agente localiza o endpoint/schema certo pagando poucos
|
|
|
63
63
|
tokens e só "paga" o payload integral quando pede um item nomeado.
|
|
64
64
|
|
|
65
65
|
Dados: extraídos das fontes públicas na primeira consulta (lazy), cache em
|
|
66
|
-
`~/.cache/opf-br-mcp/` com TTL de
|
|
66
|
+
`~/.cache/opf-br-mcp/` com TTL de 72h. Sem rede, serve cache expirado com aviso.
|
|
67
67
|
|
|
68
68
|
## Instalação
|
|
69
69
|
|
|
@@ -81,6 +81,27 @@ GitHub Copilot (VS Code) — `.vscode/mcp.json`:
|
|
|
81
81
|
{ "servers": { "opf-br": { "command": "npx", "args": ["-y", "opf-br-mcp"] } } }
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
Claude Desktop — `claude_desktop_config.json` (Settings → Developer → Edit Config):
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{ "mcpServers": { "opf-br": { "command": "npx", "args": ["-y", "opf-br-mcp"] } } }
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Windows
|
|
91
|
+
|
|
92
|
+
No Windows, o client não consegue executar `npx` diretamente (é o shim
|
|
93
|
+
`npx.cmd`) e acaba abrindo um `cmd.exe` interativo, cujo banner
|
|
94
|
+
(`Microsoft Windows [Version ...]`) vaza para o canal stdio e corrompe o
|
|
95
|
+
protocolo JSON-RPC — o servidor falha na conexão com erros de JSON inválido.
|
|
96
|
+
Envolva o comando em `cmd /c` para rodá-lo sem shell interativo:
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{ "mcpServers": { "opf-br": { "command": "cmd", "args": ["/c", "npx", "-y", "opf-br-mcp"] } } }
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Vale para qualquer client no Windows (Claude Desktop, Claude Code, VS Code) —
|
|
103
|
+
ajuste apenas a chave externa (`mcpServers` ou `servers`).
|
|
104
|
+
|
|
84
105
|
### Uso local (a partir do fonte)
|
|
85
106
|
|
|
86
107
|
```bash
|
package/dist/index.js
CHANGED
|
@@ -46,7 +46,7 @@ function isFresh(entry, ttlHours, now = /* @__PURE__ */ new Date()) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
// src/core/version.ts
|
|
49
|
-
var PACKAGE_VERSION = "0.
|
|
49
|
+
var PACKAGE_VERSION = "0.5.0";
|
|
50
50
|
|
|
51
51
|
// src/core/data.ts
|
|
52
52
|
async function getDomainData(domain, force = false, ctx) {
|
|
@@ -254,6 +254,25 @@ function parseAdditionalInfoTables(html) {
|
|
|
254
254
|
}
|
|
255
255
|
|
|
256
256
|
// src/domains/pcm-additional-info/index.ts
|
|
257
|
+
function definicaoSnippet(text2, max = 120) {
|
|
258
|
+
if (text2.length <= max) return text2;
|
|
259
|
+
const slice = text2.slice(0, max);
|
|
260
|
+
const lastSpace = slice.lastIndexOf(" ");
|
|
261
|
+
const cut = lastSpace > 0 ? slice.slice(0, lastSpace) : slice;
|
|
262
|
+
return `${cut.trimEnd()}\u2026`;
|
|
263
|
+
}
|
|
264
|
+
function summarizePcm(item) {
|
|
265
|
+
const summary = {
|
|
266
|
+
campo: item.campo,
|
|
267
|
+
tipo: item.tipo ?? null,
|
|
268
|
+
versoes: item.versoes,
|
|
269
|
+
roles: item.roles,
|
|
270
|
+
id: item.id,
|
|
271
|
+
page: item.page
|
|
272
|
+
};
|
|
273
|
+
if (item.definicao) summary.definicaoSnippet = definicaoSnippet(item.definicao);
|
|
274
|
+
return summary;
|
|
275
|
+
}
|
|
257
276
|
function slugify(text2) {
|
|
258
277
|
return text2.normalize("NFD").replace(/[̀-ͯ]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
259
278
|
}
|
|
@@ -278,7 +297,7 @@ function buildItems(pages) {
|
|
|
278
297
|
var pcmDomain = {
|
|
279
298
|
id: "pcm-additional-info",
|
|
280
299
|
title: "PCM \u2014 Regras de obrigatoriedade do additionalInfo",
|
|
281
|
-
description: "Regras de preenchimento do campo additionalInfo das p\xE1ginas PCM (Plataforma de Coleta de M\xE9tricas) do Confluence do Open Finance Brasil (Inicia\xE7\xE3o de Pagamentos, Pagamentos Autom\xE1ticos, Sem Redirecionamento, DC-*). Cada item \xE9 um campo com regra, m\xE9todos, endpoints, vers\xF5es, tamanho m\xE1ximo e exemplo.",
|
|
300
|
+
description: "Regras de preenchimento do campo additionalInfo das p\xE1ginas PCM (Plataforma de Coleta de M\xE9tricas) do Confluence do Open Finance Brasil (Inicia\xE7\xE3o de Pagamentos, Pagamentos Autom\xE1ticos, Sem Redirecionamento, DC-*). Cada item \xE9 um campo com regra, m\xE9todos, endpoints, vers\xF5es, tamanho m\xE1ximo e exemplo. search devolve resumos; use get_item para o registro completo.",
|
|
282
301
|
ttlHours: 24,
|
|
283
302
|
filters: [
|
|
284
303
|
{ name: "field", description: "Match exato no nome do campo (case-insensitive)" },
|
|
@@ -323,7 +342,7 @@ var pcmDomain = {
|
|
|
323
342
|
if (!matchesQuery(haystack, query)) return false;
|
|
324
343
|
}
|
|
325
344
|
return true;
|
|
326
|
-
});
|
|
345
|
+
}).map(summarizePcm);
|
|
327
346
|
},
|
|
328
347
|
getItem(data, id) {
|
|
329
348
|
return data.items.find((i) => i.id === id) ?? null;
|
|
@@ -1107,7 +1126,7 @@ function createServer() {
|
|
|
1107
1126
|
"get_item",
|
|
1108
1127
|
{
|
|
1109
1128
|
title: "Detalhar um item",
|
|
1110
|
-
description: "Devolve o registro completo de um item pelo `id` retornado por search (nos dom\xEDnios *-openapi e participantes inclui o n\xF3 integral da spec em `detail
|
|
1129
|
+
description: "Devolve o registro completo de um item pelo `id` retornado por search (nos dom\xEDnios *-openapi e participantes inclui o n\xF3 integral da spec em `detail`; em pcm-additional-info devolve o registro completo, enquanto search devolve apenas um resumo).",
|
|
1111
1130
|
inputSchema: {
|
|
1112
1131
|
domain: domainIdSchema,
|
|
1113
1132
|
id: z.string().describe("Id do item (vindo de search)")
|