@mcpassure/mcp-anvisa-bulario 0.0.1 → 0.1.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.
Files changed (116) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +196 -0
  3. package/README.md +192 -5
  4. package/dist/cache/sqlite-cache.d.ts +13 -0
  5. package/dist/cache/sqlite-cache.d.ts.map +1 -0
  6. package/dist/cache/sqlite-cache.js +58 -0
  7. package/dist/cache/sqlite-cache.js.map +1 -0
  8. package/dist/cache/types.d.ts +17 -0
  9. package/dist/cache/types.d.ts.map +1 -0
  10. package/dist/cache/types.js +7 -0
  11. package/dist/cache/types.js.map +1 -0
  12. package/dist/config.d.ts +12 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +17 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/domain/repository.d.ts +47 -0
  17. package/dist/domain/repository.d.ts.map +1 -0
  18. package/dist/domain/repository.js +88 -0
  19. package/dist/domain/repository.js.map +1 -0
  20. package/dist/domain/types.d.ts +2 -0
  21. package/dist/domain/types.d.ts.map +1 -0
  22. package/dist/domain/types.js +2 -0
  23. package/dist/domain/types.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +37 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/prompts/handlers.d.ts +24 -0
  29. package/dist/prompts/handlers.d.ts.map +1 -0
  30. package/dist/prompts/handlers.js +267 -0
  31. package/dist/prompts/handlers.js.map +1 -0
  32. package/dist/prompts/index.d.ts +4 -0
  33. package/dist/prompts/index.d.ts.map +1 -0
  34. package/dist/prompts/index.js +35 -0
  35. package/dist/prompts/index.js.map +1 -0
  36. package/dist/prompts/schemas.d.ts +22 -0
  37. package/dist/prompts/schemas.d.ts.map +1 -0
  38. package/dist/prompts/schemas.js +15 -0
  39. package/dist/prompts/schemas.js.map +1 -0
  40. package/dist/resources/handlers.d.ts +5 -0
  41. package/dist/resources/handlers.d.ts.map +1 -0
  42. package/dist/resources/handlers.js +145 -0
  43. package/dist/resources/handlers.js.map +1 -0
  44. package/dist/resources/index.d.ts +4 -0
  45. package/dist/resources/index.d.ts.map +1 -0
  46. package/dist/resources/index.js +48 -0
  47. package/dist/resources/index.js.map +1 -0
  48. package/dist/schemas/tools.d.ts +134 -0
  49. package/dist/schemas/tools.d.ts.map +1 -0
  50. package/dist/schemas/tools.js +106 -0
  51. package/dist/schemas/tools.js.map +1 -0
  52. package/dist/server.d.ts +4 -0
  53. package/dist/server.d.ts.map +1 -0
  54. package/dist/server.js +25 -0
  55. package/dist/server.js.map +1 -0
  56. package/dist/sources/anvisa-api.d.ts +25 -0
  57. package/dist/sources/anvisa-api.d.ts.map +1 -0
  58. package/dist/sources/anvisa-api.js +153 -0
  59. package/dist/sources/anvisa-api.js.map +1 -0
  60. package/dist/sources/anvisa-dados-abertos.d.ts +12 -0
  61. package/dist/sources/anvisa-dados-abertos.d.ts.map +1 -0
  62. package/dist/sources/anvisa-dados-abertos.js +27 -0
  63. package/dist/sources/anvisa-dados-abertos.js.map +1 -0
  64. package/dist/sources/anvisa-portal.d.ts +12 -0
  65. package/dist/sources/anvisa-portal.d.ts.map +1 -0
  66. package/dist/sources/anvisa-portal.js +27 -0
  67. package/dist/sources/anvisa-portal.js.map +1 -0
  68. package/dist/sources/types.d.ts +56 -0
  69. package/dist/sources/types.d.ts.map +1 -0
  70. package/dist/sources/types.js +2 -0
  71. package/dist/sources/types.js.map +1 -0
  72. package/dist/tools/buscar-por-classe-terapeutica.d.ts +4 -0
  73. package/dist/tools/buscar-por-classe-terapeutica.d.ts.map +1 -0
  74. package/dist/tools/buscar-por-classe-terapeutica.js +30 -0
  75. package/dist/tools/buscar-por-classe-terapeutica.js.map +1 -0
  76. package/dist/tools/buscar-por-nome.d.ts +4 -0
  77. package/dist/tools/buscar-por-nome.d.ts.map +1 -0
  78. package/dist/tools/buscar-por-nome.js +25 -0
  79. package/dist/tools/buscar-por-nome.js.map +1 -0
  80. package/dist/tools/buscar-por-principio-ativo.d.ts +4 -0
  81. package/dist/tools/buscar-por-principio-ativo.d.ts.map +1 -0
  82. package/dist/tools/buscar-por-principio-ativo.js +25 -0
  83. package/dist/tools/buscar-por-principio-ativo.js.map +1 -0
  84. package/dist/tools/consultar-bula.d.ts +4 -0
  85. package/dist/tools/consultar-bula.d.ts.map +1 -0
  86. package/dist/tools/consultar-bula.js +42 -0
  87. package/dist/tools/consultar-bula.js.map +1 -0
  88. package/dist/tools/filtrar-por-tarja.d.ts +4 -0
  89. package/dist/tools/filtrar-por-tarja.d.ts.map +1 -0
  90. package/dist/tools/filtrar-por-tarja.js +29 -0
  91. package/dist/tools/filtrar-por-tarja.js.map +1 -0
  92. package/dist/tools/listar-apresentacoes.d.ts +4 -0
  93. package/dist/tools/listar-apresentacoes.d.ts.map +1 -0
  94. package/dist/tools/listar-apresentacoes.js +34 -0
  95. package/dist/tools/listar-apresentacoes.js.map +1 -0
  96. package/dist/tools/shared.d.ts +97 -0
  97. package/dist/tools/shared.d.ts.map +1 -0
  98. package/dist/tools/shared.js +34 -0
  99. package/dist/tools/shared.js.map +1 -0
  100. package/dist/utils/backoff.d.ts +8 -0
  101. package/dist/utils/backoff.d.ts.map +1 -0
  102. package/dist/utils/backoff.js +37 -0
  103. package/dist/utils/backoff.js.map +1 -0
  104. package/dist/utils/http.d.ts +45 -0
  105. package/dist/utils/http.d.ts.map +1 -0
  106. package/dist/utils/http.js +175 -0
  107. package/dist/utils/http.js.map +1 -0
  108. package/dist/utils/meta.d.ts +8 -0
  109. package/dist/utils/meta.d.ts.map +1 -0
  110. package/dist/utils/meta.js +13 -0
  111. package/dist/utils/meta.js.map +1 -0
  112. package/dist/utils/playwright-http.d.ts +2 -0
  113. package/dist/utils/playwright-http.d.ts.map +1 -0
  114. package/dist/utils/playwright-http.js +4 -0
  115. package/dist/utils/playwright-http.js.map +1 -0
  116. package/package.json +68 -6
@@ -0,0 +1,145 @@
1
+ export const TARJAS_JSON = JSON.stringify({
2
+ tarjas: [
3
+ {
4
+ codigo: "sem_tarja",
5
+ nome: "Sem tarja",
6
+ descricao: "Venda livre — sem retenção de receita.",
7
+ },
8
+ {
9
+ codigo: "amarela",
10
+ nome: "Tarja Amarela",
11
+ descricao: "Venda sob prescrição — antibióticos e outros medicamentos sujeitos a controle.",
12
+ },
13
+ {
14
+ codigo: "vermelha",
15
+ nome: "Tarja Vermelha",
16
+ descricao: "Venda sob prescrição médica — receita simples retida.",
17
+ },
18
+ {
19
+ codigo: "preta",
20
+ nome: "Tarja Preta",
21
+ descricao: "Controle especial — Portaria 344/98 (psicotrópicos, entorpecentes).",
22
+ },
23
+ ],
24
+ fonte: "RDC ANVISA 357/2020 e Portaria SVS/MS 344/1998",
25
+ }, null, 2);
26
+ const CLASSES_TERAPEUTICAS_HARDCODED = [
27
+ "Analgésico",
28
+ "Anti-inflamatório",
29
+ "Antibiótico",
30
+ "Antifúngico",
31
+ "Antiviral",
32
+ "Antiparasitário",
33
+ "Anti-hipertensivo",
34
+ "Antidiabético",
35
+ "Anticoagulante",
36
+ "Antiarrítmico",
37
+ "Diurético",
38
+ "Broncodilatador",
39
+ "Corticosteroide",
40
+ "Imunossupressor",
41
+ "Antineoplásico",
42
+ "Ansiolítico",
43
+ "Antidepressivo",
44
+ "Antipsicótico",
45
+ "Antiepiléptico",
46
+ "Antiparkinsônico",
47
+ "Opiáceo",
48
+ "Psicotrópico",
49
+ "Hormônio",
50
+ "Anticoncepcional",
51
+ "Vitamina e Suplemento",
52
+ "Gastroprotetores",
53
+ "Antiácido",
54
+ "Antiemético",
55
+ "Laxante",
56
+ "Antidiarreico",
57
+ "Hipnótico",
58
+ "Relaxante Muscular",
59
+ "Imunomodulador",
60
+ "Vacina",
61
+ "Hemostático",
62
+ "Antialérgico",
63
+ "Descongestionante",
64
+ "Mucolítico",
65
+ "Antitussígeno",
66
+ "Dermatológico",
67
+ "Oftálmico",
68
+ "Otológico",
69
+ "Antisséptico",
70
+ ];
71
+ export async function getClassesTerapeuticasJson(_repository) {
72
+ return JSON.stringify({
73
+ classes_terapeuticas: CLASSES_TERAPEUTICAS_HARDCODED.sort(),
74
+ total: CLASSES_TERAPEUTICAS_HARDCODED.length,
75
+ fonte: "Bulário Eletrônico ANVISA — principais classes indexadas",
76
+ nota: "Lista representativa. Consulte o Bulário ANVISA para listagem completa atualizada.",
77
+ }, null, 2);
78
+ }
79
+ export const SCOPE_MARKDOWN = `# Escopo do MCP @mcpassure/mcp-anvisa-bulario
80
+
81
+ ## 🇧🇷 Português (BR)
82
+
83
+ ### O que este MCP faz
84
+
85
+ Consulta ao **Bulário Eletrônico da ANVISA** (Agência Nacional de Vigilância Sanitária), incluindo:
86
+
87
+ - Busca de medicamentos por nome comercial, princípio ativo, classe terapêutica ou tarja
88
+ - Recuperação de bulas (paciente e profissional) em PDF via número de registro ANVISA
89
+ - Listagem de apresentações comerciais (concentração, forma farmacêutica, fabricante)
90
+ - Filtragem por tarja regulatória (Livre, Vermelha, Preta)
91
+ - Transport Playwright resistente a proteção Cloudflare do portal ANVISA
92
+ - Cache local SQLite para redução de latência e requisições repetidas
93
+
94
+ ### O que este MCP NÃO faz
95
+
96
+ - ❌ Não substitui consulta direta à ANVISA para fins regulatórios oficiais
97
+ - ❌ Não fornece preços de medicamentos (consulte CMED/ANVISA)
98
+ - ❌ Não verifica interações medicamentosas
99
+ - ❌ Não emite receitas ou laudos médicos
100
+ - ❌ Não cobre medicamentos fitoterápicos, cosméticos ou saneantes
101
+ - ❌ Não acessa dados de farmacovigilância ou notificações de eventos adversos
102
+
103
+ ### ⚠️ Disclaimer regulatório
104
+
105
+ Dados obtidos do Bulário Eletrônico ANVISA com latência de cache configurável.
106
+ **Decisões clínicas ou regulatórias devem sempre utilizar a fonte ANVISA oficial e atualizada.**
107
+
108
+ Medicamentos sob **Tarja Preta** (Portaria SVS/MS 344/1998) estão sujeitos a controle especial —
109
+ psicotrópicos, entorpecentes, precursores e outras substâncias de controle especial.
110
+ O uso inadequado é crime previsto em lei.
111
+
112
+ ---
113
+
114
+ ## 🇺🇸 English
115
+
116
+ ### What this MCP does
117
+
118
+ Queries the **ANVISA Electronic Drug Information Database** (Brazilian Health Regulatory Agency), including:
119
+
120
+ - Search medications by trade name, active ingredient (INN/DCB), therapeutic class, or controlled-substance tier
121
+ - Retrieve patient and prescriber leaflets (bulas) in PDF via ANVISA registration number
122
+ - List commercial presentations (dosage, pharmaceutical form, manufacturer)
123
+ - Filter by regulatory tier (Sem Tarja/OTC, Tarja Vermelha/Rx, Tarja Preta/controlled)
124
+ - Cloudflare-resistant Playwright transport for the ANVISA portal
125
+ - Local SQLite cache to reduce latency on repeated queries
126
+
127
+ ### What this MCP does NOT do
128
+
129
+ - ❌ Does not replace official ANVISA consultation for regulatory compliance
130
+ - ❌ Does not provide drug pricing (see CMED/ANVISA)
131
+ - ❌ Does not check drug interactions
132
+ - ❌ Does not issue prescriptions or medical reports
133
+ - ❌ Does not cover phytotherapeutics, cosmetics, or sanitizers
134
+ - ❌ Does not access pharmacovigilance data or adverse event reports
135
+
136
+ ### ⚠️ Regulatory disclaimer
137
+
138
+ Data sourced from the ANVISA Electronic Drug Information Database with configurable cache latency.
139
+ **Clinical or regulatory decisions must always use the official and up-to-date ANVISA source.**
140
+
141
+ Medications classified as **Tarja Preta** (Black-banded — controlled substance under Brazilian
142
+ Ordinance SVS/MS 344/1998) are subject to special control — psychotropics, narcotics, precursors,
143
+ and other controlled substances. Misuse is a criminal offense under Brazilian law.
144
+ `;
145
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/resources/handlers.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CACvC;IACE,MAAM,EAAE;QACN;YACE,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,wCAAwC;SACpD;QACD;YACE,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,gFAAgF;SAC5F;QACD;YACE,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,uDAAuD;SACnE;QACD;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,qEAAqE;SACjF;KACF;IACD,KAAK,EAAE,gDAAgD;CACxD,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AAEF,MAAM,8BAA8B,GAAG;IACrC,YAAY;IACZ,mBAAmB;IACnB,aAAa;IACb,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,mBAAmB;IACnB,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,WAAW;IACX,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,uBAAuB;IACvB,kBAAkB;IAClB,WAAW;IACX,aAAa;IACb,SAAS;IACT,eAAe;IACf,WAAW;IACX,oBAAoB;IACpB,gBAAgB;IAChB,QAAQ;IACR,aAAa;IACb,cAAc;IACd,mBAAmB;IACnB,YAAY;IACZ,eAAe;IACf,eAAe;IACf,WAAW;IACX,WAAW;IACX,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,WAA+B;IAC9E,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,oBAAoB,EAAE,8BAA8B,CAAC,IAAI,EAAE;QAC3D,KAAK,EAAE,8BAA8B,CAAC,MAAM;QAC5C,KAAK,EAAE,0DAA0D;QACjE,IAAI,EAAE,oFAAoF;KAC3F,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiE7B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { IBularioRepository } from "../domain/repository.js";
3
+ export declare function registerResources(server: McpServer, repository: IBularioRepository): void;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAiEzF"}
@@ -0,0 +1,48 @@
1
+ import { getClassesTerapeuticasJson, SCOPE_MARKDOWN, TARJAS_JSON } from "./handlers.js";
2
+ export function registerResources(server, repository) {
3
+ server.registerResource("bulario://tarjas", "bulario://tarjas", {
4
+ title: "Taxonomia de Tarjas ANVISA",
5
+ description: "Taxonomia regulatória de tarjas (RDC 357/2020, Portaria 344/98). " +
6
+ "Lista todas as categorias de controle de venda de medicamentos no Brasil.",
7
+ mimeType: "application/json",
8
+ }, async () => ({
9
+ contents: [
10
+ {
11
+ uri: "bulario://tarjas",
12
+ mimeType: "application/json",
13
+ text: TARJAS_JSON,
14
+ },
15
+ ],
16
+ }));
17
+ server.registerResource("bulario://classes_terapeuticas", "bulario://classes_terapeuticas", {
18
+ title: "Classes Terapêuticas Indexadas",
19
+ description: "Lista das principais classes terapêuticas indexadas no Bulário Eletrônico ANVISA.",
20
+ mimeType: "application/json",
21
+ }, async () => {
22
+ const json = await getClassesTerapeuticasJson(repository);
23
+ return {
24
+ contents: [
25
+ {
26
+ uri: "bulario://classes_terapeuticas",
27
+ mimeType: "application/json",
28
+ text: json,
29
+ },
30
+ ],
31
+ };
32
+ });
33
+ server.registerResource("bulario://scope", "bulario://scope", {
34
+ title: "Escopo do MCP (PT/EN)",
35
+ description: "Escopo do MCP (PT/EN): o que faz, o que não faz, disclaimer regulatório " +
36
+ "e atenção especial a Tarja Preta (Portaria 344/98).",
37
+ mimeType: "text/markdown",
38
+ }, async () => ({
39
+ contents: [
40
+ {
41
+ uri: "bulario://scope",
42
+ mimeType: "text/markdown",
43
+ text: SCOPE_MARKDOWN,
44
+ },
45
+ ],
46
+ }));
47
+ }
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAExF,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,UAA8B;IACjF,MAAM,CAAC,gBAAgB,CACrB,kBAAkB,EAClB,kBAAkB,EAClB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,mEAAmE;YACnE,2EAA2E;QAC7E,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,kBAAkB;gBACvB,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,WAAW;aAClB;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACrB,gCAAgC,EAChC,gCAAgC,EAChC;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,mFAAmF;QACrF,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,MAAM,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAC1D,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,gCAAgC;oBACrC,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI;iBACX;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACrB,iBAAiB,EACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,0EAA0E;YAC1E,qDAAqD;QACvD,QAAQ,EAAE,eAAe;KAC1B,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,iBAAiB;gBACtB,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,cAAc;aACrB;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,134 @@
1
+ import { z } from "zod";
2
+ export declare const BuscarPorNomeInputSchema: z.ZodObject<{
3
+ nome: z.ZodString;
4
+ pagina: z.ZodOptional<z.ZodNumber>;
5
+ count: z.ZodOptional<z.ZodNumber>;
6
+ }, z.core.$strip>;
7
+ export declare const BuscarPorPrincipioAtivoInputSchema: z.ZodObject<{
8
+ principioAtivo: z.ZodString;
9
+ pagina: z.ZodOptional<z.ZodNumber>;
10
+ count: z.ZodOptional<z.ZodNumber>;
11
+ }, z.core.$strip>;
12
+ export declare const BuscarPorClasseTerapeuticaInputSchema: z.ZodObject<{
13
+ classeTerapeutica: z.ZodString;
14
+ pagina: z.ZodOptional<z.ZodNumber>;
15
+ count: z.ZodOptional<z.ZodNumber>;
16
+ }, z.core.$strip>;
17
+ export declare const FiltrarPorTarjaInputSchema: z.ZodObject<{
18
+ tarja: z.ZodEnum<{
19
+ LIVRE: "LIVRE";
20
+ VERMELHA: "VERMELHA";
21
+ PRETA: "PRETA";
22
+ }>;
23
+ pagina: z.ZodOptional<z.ZodNumber>;
24
+ count: z.ZodOptional<z.ZodNumber>;
25
+ }, z.core.$strip>;
26
+ export declare const ConsultarBulaInputSchema: z.ZodObject<{
27
+ numProcesso: z.ZodString;
28
+ }, z.core.$strip>;
29
+ export declare const ListarApresentacoesInputSchema: z.ZodObject<{
30
+ numProcesso: z.ZodString;
31
+ }, z.core.$strip>;
32
+ export declare const MetaSchema: z.ZodObject<{
33
+ data_da_base: z.ZodString;
34
+ fonte: z.ZodString;
35
+ defasagem_dias: z.ZodNumber;
36
+ modo: z.ZodEnum<{
37
+ cache_local: "cache_local";
38
+ online: "online";
39
+ }>;
40
+ status: z.ZodOptional<z.ZodEnum<{
41
+ stale: "stale";
42
+ ok: "ok";
43
+ }>>;
44
+ }, z.core.$strip>;
45
+ export declare const MedicamentoListaOutputSchema: z.ZodObject<{
46
+ data: z.ZodObject<{
47
+ total: z.ZodNumber;
48
+ pagina: z.ZodNumber;
49
+ medicamentos: z.ZodArray<z.ZodObject<{
50
+ numProcesso: z.ZodString;
51
+ nomeProduto: z.ZodString;
52
+ empresa: z.ZodString;
53
+ idBulaPacienteProtegido: z.ZodOptional<z.ZodString>;
54
+ idBulaProfissionalProtegido: z.ZodOptional<z.ZodString>;
55
+ dataAtualizacao: z.ZodOptional<z.ZodString>;
56
+ }, z.core.$strip>>;
57
+ }, z.core.$strip>;
58
+ _meta: z.ZodObject<{
59
+ data_da_base: z.ZodString;
60
+ fonte: z.ZodString;
61
+ defasagem_dias: z.ZodNumber;
62
+ modo: z.ZodEnum<{
63
+ cache_local: "cache_local";
64
+ online: "online";
65
+ }>;
66
+ status: z.ZodOptional<z.ZodEnum<{
67
+ stale: "stale";
68
+ ok: "ok";
69
+ }>>;
70
+ }, z.core.$strip>;
71
+ }, z.core.$strip>;
72
+ export declare const BulaOutputSchema: z.ZodObject<{
73
+ data: z.ZodObject<{
74
+ numProcesso: z.ZodString;
75
+ nomeProduto: z.ZodString;
76
+ empresa: z.ZodString;
77
+ tarja: z.ZodOptional<z.ZodEnum<{
78
+ LIVRE: "LIVRE";
79
+ VERMELHA: "VERMELHA";
80
+ PRETA: "PRETA";
81
+ }>>;
82
+ classesTerapeuticas: z.ZodOptional<z.ZodArray<z.ZodString>>;
83
+ principioAtivo: z.ZodOptional<z.ZodString>;
84
+ bulaPaciente: z.ZodOptional<z.ZodObject<{
85
+ id: z.ZodString;
86
+ urlPdf: z.ZodOptional<z.ZodString>;
87
+ }, z.core.$strip>>;
88
+ bulaProfissional: z.ZodOptional<z.ZodObject<{
89
+ id: z.ZodString;
90
+ urlPdf: z.ZodOptional<z.ZodString>;
91
+ }, z.core.$strip>>;
92
+ }, z.core.$strip>;
93
+ _meta: z.ZodObject<{
94
+ data_da_base: z.ZodString;
95
+ fonte: z.ZodString;
96
+ defasagem_dias: z.ZodNumber;
97
+ modo: z.ZodEnum<{
98
+ cache_local: "cache_local";
99
+ online: "online";
100
+ }>;
101
+ status: z.ZodOptional<z.ZodEnum<{
102
+ stale: "stale";
103
+ ok: "ok";
104
+ }>>;
105
+ }, z.core.$strip>;
106
+ }, z.core.$strip>;
107
+ export declare const ApresentacoesOutputSchema: z.ZodObject<{
108
+ data: z.ZodObject<{
109
+ numProcesso: z.ZodString;
110
+ nomeProduto: z.ZodString;
111
+ empresa: z.ZodString;
112
+ apresentacoes: z.ZodArray<z.ZodObject<{
113
+ descricao: z.ZodString;
114
+ }, z.core.$strip>>;
115
+ }, z.core.$strip>;
116
+ _meta: z.ZodObject<{
117
+ data_da_base: z.ZodString;
118
+ fonte: z.ZodString;
119
+ defasagem_dias: z.ZodNumber;
120
+ modo: z.ZodEnum<{
121
+ cache_local: "cache_local";
122
+ online: "online";
123
+ }>;
124
+ status: z.ZodOptional<z.ZodEnum<{
125
+ stale: "stale";
126
+ ok: "ok";
127
+ }>>;
128
+ }, z.core.$strip>;
129
+ }, z.core.$strip>;
130
+ export type MedicamentoListaOutput = z.infer<typeof MedicamentoListaOutputSchema>;
131
+ export type BulaOutput = z.infer<typeof BulaOutputSchema>;
132
+ export type ApresentacoesOutput = z.infer<typeof ApresentacoesOutputSchema>;
133
+ export type Meta = z.infer<typeof MetaSchema>;
134
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/schemas/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,wBAAwB;;;;iBAUnC,CAAC;AAEH,eAAO,MAAM,kCAAkC;;;;iBAO7C,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;iBAOhD,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;iBAQrC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;iBAKnC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;iBAEzC,CAAC;AAIH,eAAO,MAAM,UAAU;;;;;;;;;;;;iBAMrB,CAAC;AAeH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOvC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB3B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;iBAYpC,CAAC;AAIH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
@@ -0,0 +1,106 @@
1
+ import { z } from "zod";
2
+ // ── Inputs ──────────────────────────────────────────────────────────────────
3
+ export const BuscarPorNomeInputSchema = z.object({
4
+ nome: z.string().min(1).describe("Nome comercial do medicamento"),
5
+ pagina: z.number().int().min(1).optional().describe("Número da página (padrão: 1)"),
6
+ count: z
7
+ .number()
8
+ .int()
9
+ .min(1)
10
+ .max(100)
11
+ .optional()
12
+ .describe("Resultados por página (padrão: 10, máx: 100)"),
13
+ });
14
+ export const BuscarPorPrincipioAtivoInputSchema = z.object({
15
+ principioAtivo: z
16
+ .string()
17
+ .min(1)
18
+ .describe("DCB ou DCI do princípio ativo (ex: dipirona, ibuprofeno)"),
19
+ pagina: z.number().int().min(1).optional(),
20
+ count: z.number().int().min(1).max(100).optional(),
21
+ });
22
+ export const BuscarPorClasseTerapeuticaInputSchema = z.object({
23
+ classeTerapeutica: z
24
+ .string()
25
+ .min(1)
26
+ .describe("Classe terapêutica do medicamento (ex: antibiótico, analgésico)"),
27
+ pagina: z.number().int().min(1).optional(),
28
+ count: z.number().int().min(1).max(100).optional(),
29
+ });
30
+ export const FiltrarPorTarjaInputSchema = z.object({
31
+ tarja: z
32
+ .enum(["LIVRE", "VERMELHA", "PRETA"])
33
+ .describe("Tipo de tarja: LIVRE (venda livre), VERMELHA (retenção de receita), PRETA (controle especial)"),
34
+ pagina: z.number().int().min(1).optional(),
35
+ count: z.number().int().min(1).max(100).optional(),
36
+ });
37
+ export const ConsultarBulaInputSchema = z.object({
38
+ numProcesso: z
39
+ .string()
40
+ .min(1)
41
+ .describe("Número de processo do medicamento na ANVISA (obtido via busca de medicamentos)"),
42
+ });
43
+ export const ListarApresentacoesInputSchema = z.object({
44
+ numProcesso: z.string().min(1).describe("Número de processo do medicamento na ANVISA"),
45
+ });
46
+ // ── Meta ─────────────────────────────────────────────────────────────────────
47
+ export const MetaSchema = z.object({
48
+ data_da_base: z.string().describe("ISO 8601 da última atualização da base consultada"),
49
+ fonte: z.string().describe("Identificação da fonte que respondeu (ex: anvisa_api, cache_local)"),
50
+ defasagem_dias: z.number().describe("Dias desde data_da_base"),
51
+ modo: z.enum(["cache_local", "online"]),
52
+ status: z.enum(["ok", "stale"]).optional().describe("'stale' quando defasagem > 30 dias"),
53
+ });
54
+ // ── Shared pieces ────────────────────────────────────────────────────────────
55
+ const MedicamentoResumoSchema = z.object({
56
+ numProcesso: z.string(),
57
+ nomeProduto: z.string(),
58
+ empresa: z.string(),
59
+ idBulaPacienteProtegido: z.string().optional(),
60
+ idBulaProfissionalProtegido: z.string().optional(),
61
+ dataAtualizacao: z.string().optional(),
62
+ });
63
+ // ── Outputs ──────────────────────────────────────────────────────────────────
64
+ export const MedicamentoListaOutputSchema = z.object({
65
+ data: z.object({
66
+ total: z.number().describe("Número de resultados retornados nesta página"),
67
+ pagina: z.number(),
68
+ medicamentos: z.array(MedicamentoResumoSchema),
69
+ }),
70
+ _meta: MetaSchema,
71
+ });
72
+ export const BulaOutputSchema = z.object({
73
+ data: z.object({
74
+ numProcesso: z.string(),
75
+ nomeProduto: z.string(),
76
+ empresa: z.string(),
77
+ tarja: z.enum(["LIVRE", "VERMELHA", "PRETA"]).optional(),
78
+ classesTerapeuticas: z.array(z.string()).optional(),
79
+ principioAtivo: z.string().optional(),
80
+ bulaPaciente: z
81
+ .object({
82
+ id: z.string(),
83
+ urlPdf: z.string().optional(),
84
+ })
85
+ .optional(),
86
+ bulaProfissional: z
87
+ .object({
88
+ id: z.string(),
89
+ urlPdf: z.string().optional(),
90
+ })
91
+ .optional(),
92
+ }),
93
+ _meta: MetaSchema,
94
+ });
95
+ export const ApresentacoesOutputSchema = z.object({
96
+ data: z.object({
97
+ numProcesso: z.string(),
98
+ nomeProduto: z.string(),
99
+ empresa: z.string(),
100
+ apresentacoes: z.array(z.object({
101
+ descricao: z.string(),
102
+ })),
103
+ }),
104
+ _meta: MetaSchema,
105
+ });
106
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/schemas/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { IBularioRepository } from "./domain/repository.js";
3
+ export declare function createServer(repository: IBularioRepository): McpServer;
4
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAUjE,wBAAgB,YAAY,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAgBtE"}
package/dist/server.js ADDED
@@ -0,0 +1,25 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { registerPrompts } from "./prompts/index.js";
3
+ import { registerResources } from "./resources/index.js";
4
+ import { registerBuscarPorClasseTerapeutica } from "./tools/buscar-por-classe-terapeutica.js";
5
+ import { registerBuscarPorNome } from "./tools/buscar-por-nome.js";
6
+ import { registerBuscarPorPrincipioAtivo } from "./tools/buscar-por-principio-ativo.js";
7
+ import { registerConsultarBula } from "./tools/consultar-bula.js";
8
+ import { registerFiltrarPorTarja } from "./tools/filtrar-por-tarja.js";
9
+ import { registerListarApresentacoes } from "./tools/listar-apresentacoes.js";
10
+ export function createServer(repository) {
11
+ const server = new McpServer({
12
+ name: "mcpassure-anvisa-bulario",
13
+ version: "1.0.0",
14
+ });
15
+ registerBuscarPorNome(server, repository);
16
+ registerBuscarPorPrincipioAtivo(server, repository);
17
+ registerBuscarPorClasseTerapeutica(server, repository);
18
+ registerFiltrarPorTarja(server, repository);
19
+ registerConsultarBula(server, repository);
20
+ registerListarApresentacoes(server, repository);
21
+ registerPrompts(server, repository);
22
+ registerResources(server, repository);
23
+ return server;
24
+ }
25
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAE9E,MAAM,UAAU,YAAY,CAAC,UAA8B;IACzD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpD,kCAAkC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvD,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5C,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type HttpGet } from "../utils/http.js";
2
+ import type { Apresentacao, BulaLink, BularioSource, MedicamentoDetalhes, MedicamentoResumo, SearchByClasseTerapeuticaParams, SearchByNameParams, SearchByPrincipalAtivoParams, SearchByTarjaParams } from "./types.js";
3
+ export declare class AnvisaApiSource implements BularioSource {
4
+ readonly name = "anvisa_api";
5
+ private readonly client;
6
+ /**
7
+ * @param baseUrl URL base da API ANVISA (ex: https://consultas.anvisa.gov.br)
8
+ * @param maxRetries Tentativas de retry em falhas transitórias
9
+ * @param baseDelayMs Delay base do backoff exponencial
10
+ * @param timeoutMs Timeout por request em ms
11
+ * @param client Opcional — HttpClient pré-construído. Útil pra testes (mock)
12
+ * e pra compartilhar browser entre múltiplos sources.
13
+ */
14
+ constructor(baseUrl: string, maxRetries: number, baseDelayMs: number, timeoutMs: number, client?: HttpGet);
15
+ close(): Promise<void>;
16
+ searchByName(params: SearchByNameParams): Promise<MedicamentoResumo[]>;
17
+ searchByPrincipalAtivo(params: SearchByPrincipalAtivoParams): Promise<MedicamentoResumo[]>;
18
+ searchByClasseTerapeutica(params: SearchByClasseTerapeuticaParams): Promise<MedicamentoResumo[]>;
19
+ searchByTarja(params: SearchByTarjaParams): Promise<MedicamentoResumo[]>;
20
+ getDetalhes(numProcesso: string): Promise<MedicamentoDetalhes>;
21
+ getApresentacoes(numProcesso: string): Promise<Apresentacao[]>;
22
+ getBulaLink(idBulaProtegido: string): Promise<BulaLink>;
23
+ private _search;
24
+ }
25
+ //# sourceMappingURL=anvisa-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anvisa-api.d.ts","sourceRoot":"","sources":["../../src/sources/anvisa-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,+BAA+B,EAC/B,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AA8HpB,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC;;;;;;;OAOG;gBAED,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,OAAO;IAKZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAItE,sBAAsB,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI1F,yBAAyB,CAC7B,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIzB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAOxE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0B9D,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAa9D,WAAW,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;YAe/C,OAAO;CAwBtB"}