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.
Files changed (3) hide show
  1. package/README.md +22 -1
  2. package/dist/index.js +23 -4
  3. 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 24h. Sem rede, serve cache expirado com aviso.
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.4.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)")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opf-br-mcp",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "description": "MCP server local com as regras do Open Finance Brasil (PCM additionalInfo, specs OpenAPI de Pagamentos)",
5
5
  "type": "module",
6
6
  "license": "MIT",