@pharmatools/pubcrawl 2.1.0 → 2.2.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 +10 -1
- package/dist/http.d.ts +3 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +84 -0
- package/dist/http.js.map +1 -0
- package/dist/tools/abstract.d.ts.map +1 -1
- package/dist/tools/abstract.js +1 -1
- package/dist/tools/abstract.js.map +1 -1
- package/dist/tools/cite.d.ts.map +1 -1
- package/dist/tools/cite.js +1 -1
- package/dist/tools/cite.js.map +1 -1
- package/dist/tools/compare-labels.d.ts +8 -0
- package/dist/tools/compare-labels.d.ts.map +1 -1
- package/dist/tools/compare-labels.js +43 -97
- package/dist/tools/compare-labels.js.map +1 -1
- package/dist/tools/fulltext.d.ts.map +1 -1
- package/dist/tools/fulltext.js +1 -1
- package/dist/tools/fulltext.js.map +1 -1
- package/dist/tools/related.d.ts.map +1 -1
- package/dist/tools/related.js +1 -1
- package/dist/tools/related.js.map +1 -1
- package/dist/tools/search-indication.d.ts.map +1 -1
- package/dist/tools/search-indication.js +1 -1
- package/dist/tools/search-indication.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +1 -1
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/smpc.d.ts +8 -0
- package/dist/tools/smpc.d.ts.map +1 -1
- package/dist/tools/smpc.js +28 -28
- package/dist/tools/smpc.js.map +1 -1
- package/dist/tools/trending.d.ts.map +1 -1
- package/dist/tools/trending.js +1 -1
- package/dist/tools/trending.js.map +1 -1
- package/dist/tools/trials-detail.d.ts.map +1 -1
- package/dist/tools/trials-detail.js +1 -1
- package/dist/tools/trials-detail.js.map +1 -1
- package/dist/tools/trials-search.d.ts.map +1 -1
- package/dist/tools/trials-search.js +1 -1
- package/dist/tools/trials-search.js.map +1 -1
- package/dist/tools/uspi.d.ts +9 -0
- package/dist/tools/uspi.d.ts.map +1 -1
- package/dist/tools/uspi.js +31 -93
- package/dist/tools/uspi.js.map +1 -1
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PubCrawl
|
|
2
2
|
|
|
3
|
-
An [MCP server](https://modelcontextprotocol.io) that gives LLM clients access to PubMed, FDA drug labelling,
|
|
3
|
+
An [MCP server](https://modelcontextprotocol.io) that gives LLM clients access to PubMed, FDA drug labelling, UK medicines data, and ClinicalTrials.gov. A peer-reviewed pub crawl through the literature — the label — and the trial.
|
|
4
4
|
|
|
5
5
|
Built by [PharmaTools.AI](https://pharmatools.ai).
|
|
6
6
|
|
|
@@ -26,6 +26,13 @@ Built by [PharmaTools.AI](https://pharmatools.ai).
|
|
|
26
26
|
| `compare_labels` | Side-by-side comparison of US (USPI) and UK (SmPC) labelling for the same drug. Spot regulatory differences in indications, warnings, and dosing. |
|
|
27
27
|
| `search_by_indication` | Find drugs approved for a medical condition. Searches FDA labelling via OpenFDA, then cross-references UK availability on the eMC. |
|
|
28
28
|
|
|
29
|
+
### Clinical Trials
|
|
30
|
+
|
|
31
|
+
| Tool | What it does |
|
|
32
|
+
|------|-------------|
|
|
33
|
+
| `search_trials` | Search ClinicalTrials.gov for clinical trials. Filter by condition, intervention, recruitment status, and phase. Returns NCT IDs, sponsors, enrollment, and links. |
|
|
34
|
+
| `get_trial` | Get full details for a clinical trial by NCT ID — eligibility criteria, study design, arms, primary/secondary outcomes, locations, and associated PubMed IDs. |
|
|
35
|
+
|
|
29
36
|
## Setup
|
|
30
37
|
|
|
31
38
|
### Prerequisites
|
|
@@ -114,6 +121,8 @@ Once connected, just ask naturally:
|
|
|
114
121
|
- "Pull the UK SmPC for atorvastatin"
|
|
115
122
|
- "Compare US and UK labelling for lisinopril"
|
|
116
123
|
- "What drugs are approved for type 2 diabetes?"
|
|
124
|
+
- "Find recruiting Phase 3 trials for pembrolizumab in breast cancer"
|
|
125
|
+
- "Get details on clinical trial NCT03086486"
|
|
117
126
|
|
|
118
127
|
## Development
|
|
119
128
|
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC"}
|
package/dist/http.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import "dotenv/config";
|
|
3
|
+
import { createServer } from "node:http";
|
|
4
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
6
|
+
import { setApiKey } from "./lib/ncbi.js";
|
|
7
|
+
import { registerSearchTool } from "./tools/search.js";
|
|
8
|
+
import { registerAbstractTool } from "./tools/abstract.js";
|
|
9
|
+
import { registerFullTextTool } from "./tools/fulltext.js";
|
|
10
|
+
import { registerRelatedTool } from "./tools/related.js";
|
|
11
|
+
import { registerCiteTool } from "./tools/cite.js";
|
|
12
|
+
import { registerTrendingTool } from "./tools/trending.js";
|
|
13
|
+
import { registerUspiTool } from "./tools/uspi.js";
|
|
14
|
+
import { registerSmpcTool } from "./tools/smpc.js";
|
|
15
|
+
import { registerCompareLabelsTool } from "./tools/compare-labels.js";
|
|
16
|
+
import { registerSearchIndicationTool } from "./tools/search-indication.js";
|
|
17
|
+
import { registerTrialsSearchTool } from "./tools/trials-search.js";
|
|
18
|
+
import { registerTrialDetailTool } from "./tools/trials-detail.js";
|
|
19
|
+
// Configure NCBI API key if available (10 req/s vs 3 req/s)
|
|
20
|
+
if (process.env.NCBI_API_KEY) {
|
|
21
|
+
setApiKey(process.env.NCBI_API_KEY);
|
|
22
|
+
}
|
|
23
|
+
function createMcpServer() {
|
|
24
|
+
const server = new McpServer({
|
|
25
|
+
name: "pubcrawl",
|
|
26
|
+
version: "2.0.0",
|
|
27
|
+
});
|
|
28
|
+
registerSearchTool(server);
|
|
29
|
+
registerAbstractTool(server);
|
|
30
|
+
registerFullTextTool(server);
|
|
31
|
+
registerRelatedTool(server);
|
|
32
|
+
registerCiteTool(server);
|
|
33
|
+
registerTrendingTool(server);
|
|
34
|
+
registerUspiTool(server);
|
|
35
|
+
registerSmpcTool(server);
|
|
36
|
+
registerCompareLabelsTool(server);
|
|
37
|
+
registerSearchIndicationTool(server);
|
|
38
|
+
registerTrialsSearchTool(server);
|
|
39
|
+
registerTrialDetailTool(server);
|
|
40
|
+
return server;
|
|
41
|
+
}
|
|
42
|
+
const PORT = parseInt(process.env.PORT ?? "3000", 10);
|
|
43
|
+
const CORS_HEADERS = {
|
|
44
|
+
"Access-Control-Allow-Origin": "*",
|
|
45
|
+
"Access-Control-Allow-Methods": "GET, POST, OPTIONS",
|
|
46
|
+
"Access-Control-Allow-Headers": "Content-Type, Accept, Authorization, Mcp-Session-Id",
|
|
47
|
+
"Access-Control-Expose-Headers": "Mcp-Session-Id",
|
|
48
|
+
};
|
|
49
|
+
const httpServer = createServer(async (req, res) => {
|
|
50
|
+
const url = new URL(req.url ?? "/", `http://${req.headers.host}`);
|
|
51
|
+
// Handle CORS preflight
|
|
52
|
+
if (req.method === "OPTIONS") {
|
|
53
|
+
res.writeHead(204, CORS_HEADERS);
|
|
54
|
+
res.end();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// Set CORS headers on all responses
|
|
58
|
+
for (const [key, value] of Object.entries(CORS_HEADERS)) {
|
|
59
|
+
res.setHeader(key, value);
|
|
60
|
+
}
|
|
61
|
+
// Health check endpoint
|
|
62
|
+
if (url.pathname === "/health" && req.method === "GET") {
|
|
63
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
64
|
+
res.end(JSON.stringify({ status: "ok", server: "pubcrawl" }));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// MCP endpoint — new server + transport per request (stateless mode)
|
|
68
|
+
if (url.pathname === "/mcp") {
|
|
69
|
+
const server = createMcpServer();
|
|
70
|
+
const transport = new StreamableHTTPServerTransport({
|
|
71
|
+
sessionIdGenerator: undefined,
|
|
72
|
+
});
|
|
73
|
+
await server.connect(transport);
|
|
74
|
+
await transport.handleRequest(req, res);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// 404 for everything else
|
|
78
|
+
res.writeHead(404, { "Content-Type": "application/json" });
|
|
79
|
+
res.end(JSON.stringify({ error: "Not found" }));
|
|
80
|
+
});
|
|
81
|
+
httpServer.listen(PORT, "0.0.0.0", () => {
|
|
82
|
+
console.error(`PubCrawl MCP server running on http://0.0.0.0:${PORT}/mcp`);
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../src/tools/abstract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../src/tools/abstract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmH5D"}
|
package/dist/tools/abstract.js
CHANGED
|
@@ -6,7 +6,7 @@ const schema = {
|
|
|
6
6
|
structured: z.boolean().default(true).describe("Return structured abstract sections"),
|
|
7
7
|
};
|
|
8
8
|
export function registerAbstractTool(server) {
|
|
9
|
-
server.tool("get_abstract", "Get the full structured abstract and metadata for a PubMed article. Returns abstract sections (background, methods, results, conclusions), keywords, MeSH terms, and PMC ID.", schema, async (params) => {
|
|
9
|
+
server.tool("get_abstract", "Get the full structured abstract and metadata for a PubMed article. Returns abstract sections (background, methods, results, conclusions), keywords, MeSH terms, and PMC ID.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
10
10
|
try {
|
|
11
11
|
const xml = await efetch({ id: params.pmid, rettype: "xml" });
|
|
12
12
|
const parsed = parseXml(xml);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../src/tools/abstract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../src/tools/abstract.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/cite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cite.d.ts","sourceRoot":"","sources":["../../src/tools/cite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4IpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"cite.d.ts","sourceRoot":"","sources":["../../src/tools/cite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4IpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoFxD"}
|
package/dist/tools/cite.js
CHANGED
|
@@ -115,7 +115,7 @@ function formatBibtex(info) {
|
|
|
115
115
|
return lines.join("\n");
|
|
116
116
|
}
|
|
117
117
|
export function registerCiteTool(server) {
|
|
118
|
-
server.tool("format_citation", "Format a citation for a PubMed article in APA, Vancouver, Harvard, or BibTeX style.", schema, async (params) => {
|
|
118
|
+
server.tool("format_citation", "Format a citation for a PubMed article in APA, Vancouver, Harvard, or BibTeX style.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
119
119
|
try {
|
|
120
120
|
const xml = await efetch({ id: params.pmid, rettype: "xml" });
|
|
121
121
|
const parsed = parseXml(xml);
|
package/dist/tools/cite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cite.js","sourceRoot":"","sources":["../../src/tools/cite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE3E,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CACnG,CAAC;AAcF,SAAS,SAAS,CAAC,IAAiB;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACrB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,GAAG,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,GAAG,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,EAAE;gBAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,GAAG,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACpC,CAAC,CAAC,EAAE,CAAC;IAEX,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;IAClF,MAAM,WAAW,GAAG,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/D,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AACjH,CAAC;AAED,SAAS,eAAe,CAAC,IAAiB;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACrB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1D,OAAO,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1D,OAAO,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;IAClF,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnD,OAAO,GAAG,SAAS,IAAI,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AAClH,CAAC;AAED,SAAS,aAAa,CAAC,IAAiB;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACrB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChE,OAAO,GAAG,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,CAAC,GAAG,EAAE;gBACJ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChE,OAAO,GAAG,IAAI,KAAK,QAAQ,SAAS,CAAC;YACvC,CAAC,CAAC,EAAE,CAAC;IAEX,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;IACtC,MAAM,WAAW,GAAG,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AAChH,CAAC;AAED,SAAS,YAAY,CAAC,IAAiB;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACjC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI;QACzD,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEjB,MAAM,KAAK,GAAG;QACZ,YAAY,GAAG,GAAG;QAClB,gBAAgB,SAAS,IAAI;QAC7B,gBAAgB,IAAI,CAAC,KAAK,IAAI;QAC9B,gBAAgB,IAAI,CAAC,OAAO,IAAI;QAChC,gBAAgB,IAAI,CAAC,IAAI,IAAI;KAC9B,CAAC;IAEF,IAAI,IAAI,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,qFAAqF,EACrF,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE7B,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC;YACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpE,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC7E,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAChD,MAAM,WAAW,GAAG,eAAe,EAAE,OAAO,CAAC;YAE7C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC5E,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YACpC,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,CAAC;YAE3C,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC;YAC7C,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBACxE,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;oBACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;wBAC1D,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;wBACvB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAgB;gBACxB,OAAO;gBACP,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC;gBAC5C,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;gBAC7E,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI;oBAC/B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;oBACnC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC7E,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC/D,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5D,KAAK,EAAE,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC1F,GAAG;gBACH,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;YAEF,MAAM,UAAU,GAAkD;gBAChE,GAAG,EAAE,SAAS;gBACd,SAAS,EAAE,eAAe;gBAC1B,OAAO,EAAE,aAAa;gBACtB,MAAM,EAAE,YAAY;aACrB,CAAC;YAEF,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAEjD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC/F,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,OAAO,EAAE,EAAE,CAAC;gBAC1E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"cite.js","sourceRoot":"","sources":["../../src/tools/cite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { CompareLabelsResult } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Build a CompareLabelsResult by fetching both labels from the shared engine and
|
|
5
|
+
* pairing equivalent sections (US LOINC <-> UK section number). Cached for 24h.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildCompareResult(drug: string, sections?: string[]): Promise<CompareLabelsResult | {
|
|
8
|
+
error: string;
|
|
9
|
+
}>;
|
|
2
10
|
export declare function registerCompareLabelsTool(server: McpServer): void;
|
|
3
11
|
//# sourceMappingURL=compare-labels.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-labels.d.ts","sourceRoot":"","sources":["../../src/tools/compare-labels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"compare-labels.d.ts","sourceRoot":"","sources":["../../src/tools/compare-labels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,EAAmB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAYnE;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,mBAAmB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA0ClD;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuBjE"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { parseXml, parseSplSections } from "../lib/xml-parser.js";
|
|
2
|
+
import { getUsLabel, getUkSmpc } from "@pharmatools/drug-data";
|
|
3
|
+
import { cache, TTL } from "../lib/cache.js";
|
|
5
4
|
import { filterSectionMap } from "../lib/label-mapping.js";
|
|
6
5
|
const schema = {
|
|
7
6
|
drug: z.string().describe("Drug name to compare across US and UK labelling"),
|
|
@@ -10,108 +9,55 @@ const schema = {
|
|
|
10
9
|
.optional()
|
|
11
10
|
.describe("Specific topics to compare (e.g., ['indications', 'adverse reactions']). Compares all mapped sections if omitted."),
|
|
12
11
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (aMatch !== bMatch)
|
|
22
|
-
return bMatch - aMatch;
|
|
23
|
-
return b.published_date.localeCompare(a.published_date);
|
|
24
|
-
});
|
|
25
|
-
const best = sorted[0];
|
|
26
|
-
const xml = await fetchSplXml(best.setid);
|
|
27
|
-
const parsed = parseXml(xml);
|
|
28
|
-
const docComponent = parsed?.document?.component;
|
|
29
|
-
const firstComponent = Array.isArray(docComponent) ? docComponent[0] : docComponent;
|
|
30
|
-
const structuredBody = firstComponent?.structuredBody;
|
|
31
|
-
const rawSections = parseSplSections(structuredBody, loincCodes);
|
|
32
|
-
const sectionMap = new Map();
|
|
33
|
-
for (const s of rawSections) {
|
|
34
|
-
sectionMap.set(s.code, { code: s.code, title: s.title, content: s.content });
|
|
12
|
+
/**
|
|
13
|
+
* Build a CompareLabelsResult by fetching both labels from the shared engine and
|
|
14
|
+
* pairing equivalent sections (US LOINC <-> UK section number). Cached for 24h.
|
|
15
|
+
*/
|
|
16
|
+
export async function buildCompareResult(drug, sections) {
|
|
17
|
+
const mappings = filterSectionMap(sections);
|
|
18
|
+
if (mappings.length === 0) {
|
|
19
|
+
return { error: "No matching section mappings found for the requested topics" };
|
|
35
20
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const best = sorted[0];
|
|
52
|
-
const html = await fetchSmpcHtml(best.product_id);
|
|
53
|
-
const rawSections = parseSmpcSections(html, ukCodes);
|
|
54
|
-
const sectionMap = new Map();
|
|
55
|
-
for (const s of rawSections) {
|
|
56
|
-
sectionMap.set(s.code, { code: s.code, title: s.title, content: s.content });
|
|
21
|
+
const cacheKey = `compare:${drug.toLowerCase()}:${(sections ?? []).join(",").toLowerCase()}`;
|
|
22
|
+
const cached = cache.get(cacheKey);
|
|
23
|
+
if (cached)
|
|
24
|
+
return cached;
|
|
25
|
+
const usCodes = mappings.map((m) => m.us_loinc);
|
|
26
|
+
const ukCodes = mappings.map((m) => m.uk_code);
|
|
27
|
+
// Fetch both in parallel — allow partial results
|
|
28
|
+
const [usSettled, ukSettled] = await Promise.allSettled([
|
|
29
|
+
getUsLabel(drug, usCodes),
|
|
30
|
+
getUkSmpc(drug, ukCodes),
|
|
31
|
+
]);
|
|
32
|
+
const us = usSettled.status === "fulfilled" ? usSettled.value : null;
|
|
33
|
+
const uk = ukSettled.status === "fulfilled" ? ukSettled.value : null;
|
|
34
|
+
if ((!us || us.sections.length === 0) && (!uk || uk.sections.length === 0)) {
|
|
35
|
+
return { error: `No labelling found for "${drug}" in either US or UK databases` };
|
|
57
36
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
37
|
+
const usByCode = new Map((us?.sections ?? []).map((s) => [s.code, s]));
|
|
38
|
+
const ukByCode = new Map((uk?.sections ?? []).map((s) => [s.code, s]));
|
|
39
|
+
const comparisons = mappings.map((m) => ({
|
|
40
|
+
topic: m.topic,
|
|
41
|
+
us_section: usByCode.get(m.us_loinc) ?? null,
|
|
42
|
+
uk_section: ukByCode.get(m.uk_code) ?? null,
|
|
43
|
+
}));
|
|
44
|
+
const result = {
|
|
45
|
+
drug,
|
|
46
|
+
comparisons,
|
|
47
|
+
us_source: us?.dailymedUrl ?? null,
|
|
48
|
+
uk_source: uk?.url ?? null,
|
|
61
49
|
};
|
|
50
|
+
cache.set(cacheKey, result, TTL.LABEL);
|
|
51
|
+
return result;
|
|
62
52
|
}
|
|
63
53
|
export function registerCompareLabelsTool(server) {
|
|
64
|
-
server.tool("compare_labels", "Compare US FDA Prescribing Information vs UK/EU SmPC for a drug side-by-side. Maps equivalent sections (e.g., US Indications ↔ UK 4.1) and returns paired content.", schema, async (params) => {
|
|
54
|
+
server.tool("compare_labels", "Compare US FDA Prescribing Information vs UK/EU SmPC for a drug side-by-side. Maps equivalent sections (e.g., US Indications ↔ UK 4.1) and returns paired content.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
65
55
|
try {
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
return {
|
|
69
|
-
content: [{
|
|
70
|
-
type: "text",
|
|
71
|
-
text: JSON.stringify({ error: "No matching section mappings found for the requested topics" }, null, 2),
|
|
72
|
-
}],
|
|
73
|
-
isError: true,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
const loincCodes = mappings.map((m) => m.us_loinc);
|
|
77
|
-
const ukCodes = mappings.map((m) => m.uk_code);
|
|
78
|
-
// Fetch both in parallel — allow partial results
|
|
79
|
-
const [usResult, ukResult] = await Promise.allSettled([
|
|
80
|
-
fetchUsSections(params.drug, loincCodes),
|
|
81
|
-
fetchUkSections(params.drug, ukCodes),
|
|
82
|
-
]);
|
|
83
|
-
const us = usResult.status === "fulfilled" ? usResult.value : { sections: new Map(), source: null };
|
|
84
|
-
const uk = ukResult.status === "fulfilled" ? ukResult.value : { sections: new Map(), source: null };
|
|
85
|
-
if (us.sections.size === 0 && uk.sections.size === 0) {
|
|
86
|
-
const errors = [];
|
|
87
|
-
if (usResult.status === "rejected")
|
|
88
|
-
errors.push(`US: ${usResult.reason}`);
|
|
89
|
-
if (ukResult.status === "rejected")
|
|
90
|
-
errors.push(`UK: ${ukResult.reason}`);
|
|
91
|
-
return {
|
|
92
|
-
content: [{
|
|
93
|
-
type: "text",
|
|
94
|
-
text: JSON.stringify({
|
|
95
|
-
error: `No labelling found for "${params.drug}" in either US or UK databases`,
|
|
96
|
-
details: errors.length > 0 ? errors : undefined,
|
|
97
|
-
}, null, 2),
|
|
98
|
-
}],
|
|
99
|
-
isError: true,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
const comparisons = mappings.map((mapping) => ({
|
|
103
|
-
topic: mapping.topic,
|
|
104
|
-
us_section: us.sections.get(mapping.us_loinc) ?? null,
|
|
105
|
-
uk_section: uk.sections.get(mapping.uk_code) ?? null,
|
|
106
|
-
}));
|
|
107
|
-
const result = {
|
|
108
|
-
drug: params.drug,
|
|
109
|
-
comparisons,
|
|
110
|
-
us_source: us.source,
|
|
111
|
-
uk_source: uk.source,
|
|
112
|
-
};
|
|
56
|
+
const result = await buildCompareResult(params.drug, params.sections);
|
|
57
|
+
const isError = "error" in result;
|
|
113
58
|
return {
|
|
114
59
|
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
60
|
+
...(isError ? { isError: true } : {}),
|
|
115
61
|
};
|
|
116
62
|
}
|
|
117
63
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-labels.js","sourceRoot":"","sources":["../../src/tools/compare-labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"compare-labels.js","sourceRoot":"","sources":["../../src/tools/compare-labels.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fulltext.d.ts","sourceRoot":"","sources":["../../src/tools/fulltext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"fulltext.d.ts","sourceRoot":"","sources":["../../src/tools/fulltext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkG5D"}
|
package/dist/tools/fulltext.js
CHANGED
|
@@ -7,7 +7,7 @@ const schema = {
|
|
|
7
7
|
sections: z.array(z.string()).optional().describe("Filter to specific section titles"),
|
|
8
8
|
};
|
|
9
9
|
export function registerFullTextTool(server) {
|
|
10
|
-
server.tool("get_full_text", "Get the full text of an open-access article from PubMed Central. Returns article sections, figure/table captions, and reference count. Only works for articles available in PMC.", schema, async (params) => {
|
|
10
|
+
server.tool("get_full_text", "Get the full text of an open-access article from PubMed Central. Returns article sections, figure/table captions, and reference count. Only works for articles available in PMC.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
11
11
|
try {
|
|
12
12
|
if (!params.pmid && !params.pmcid) {
|
|
13
13
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fulltext.js","sourceRoot":"","sources":["../../src/tools/fulltext.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fulltext.js","sourceRoot":"","sources":["../../src/tools/fulltext.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"related.d.ts","sourceRoot":"","sources":["../../src/tools/related.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"related.d.ts","sourceRoot":"","sources":["../../src/tools/related.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiE3D"}
|
package/dist/tools/related.js
CHANGED
|
@@ -6,7 +6,7 @@ const schema = {
|
|
|
6
6
|
maxResults: z.number().min(1).max(100).default(10).describe("Maximum number of results"),
|
|
7
7
|
};
|
|
8
8
|
export function registerRelatedTool(server) {
|
|
9
|
-
server.tool("find_related", "Find related articles for a given PubMed article. Returns similar papers ranked by relevance score using PubMed's neighbor algorithm.", schema, async (params) => {
|
|
9
|
+
server.tool("find_related", "Find related articles for a given PubMed article. Returns similar papers ranked by relevance score using PubMed's neighbor algorithm.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
10
10
|
try {
|
|
11
11
|
const linkResult = await elink({
|
|
12
12
|
id: params.pmid,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"related.js","sourceRoot":"","sources":["../../src/tools/related.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"related.js","sourceRoot":"","sources":["../../src/tools/related.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-indication.d.ts","sourceRoot":"","sources":["../../src/tools/search-indication.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgCpE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"search-indication.d.ts","sourceRoot":"","sources":["../../src/tools/search-indication.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgCpE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6DpE"}
|
|
@@ -22,7 +22,7 @@ const schema = {
|
|
|
22
22
|
maxResults: z.number().min(1).max(50).default(10).describe("Maximum number of drug results to return"),
|
|
23
23
|
};
|
|
24
24
|
export function registerSearchIndicationTool(server) {
|
|
25
|
-
server.tool("search_by_indication", "Find drugs approved for a medical condition. Searches US FDA labelling for the condition, then checks UK (eMC) availability for each drug found.", schema, async (params) => {
|
|
25
|
+
server.tool("search_by_indication", "Find drugs approved for a medical condition. Searches US FDA labelling for the condition, then checks UK (eMC) availability for each drug found.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
26
26
|
try {
|
|
27
27
|
// Step 1: Search OpenFDA for drugs with this indication
|
|
28
28
|
const fdaDrugs = await searchByIndication(params.condition, params.maxResults);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-indication.js","sourceRoot":"","sources":["../../src/tools/search-indication.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search-indication.js","sourceRoot":"","sources":["../../src/tools/search-indication.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiCpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiCpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiD1D"}
|
package/dist/tools/search.js
CHANGED
|
@@ -27,7 +27,7 @@ function formatArticle(uid, doc) {
|
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
export function registerSearchTool(server) {
|
|
30
|
-
server.tool("search_pubmed", "Search PubMed for biomedical literature. Returns article summaries with PMIDs, titles, authors, journals, and DOIs.", schema, async (params) => {
|
|
30
|
+
server.tool("search_pubmed", "Search PubMed for biomedical literature. Returns article summaries with PMIDs, titles, authors, journals, and DOIs.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
31
31
|
try {
|
|
32
32
|
let term = params.query;
|
|
33
33
|
if (params.articleType) {
|
package/dist/tools/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACxF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC/E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC/D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;CAClG,CAAC;AAEF,SAAS,aAAa,CAAC,GAAW,EAAE,GAA4B;IAC9D,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;SAChC,QAAQ,EAAE;SACV,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAE5B,OAAO;QACL,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO;QACP,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QACxD,IAAI;QACJ,GAAG;QACH,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,IAAI,CACT,eAAe,EACf,qHAAqH,EACrH,MAAM,EACN,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EACnE,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;YACxB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,IAAI,IAAI,QAAQ,MAAM,CAAC,WAAW,MAAM,CAAC;YAC3C,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC;gBACjC,IAAI;gBACJ,MAAM,EAAE,MAAM,CAAC,UAAU;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;gBACvD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC/D,OAAO,EAAE,MAAM,CAAC,QAAQ;gBACxB,OAAO,EAAE,MAAM,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC5F,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;YAEhE,MAAM,QAAQ,GAAoB,YAAY,CAAC,MAAM;iBAClD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACjC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAA4B,CAAC,CAAC,CAAC;YAEjF,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtF,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,OAAO,EAAE,EAAE,CAAC;gBACvE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/smpc.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { SmPCResult } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Build an SmPCResult from the shared drug-data engine (eMC). Result-shape
|
|
5
|
+
* compatible with the previous implementation. Cached for 24h.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildSmpcResult(drug: string, sections?: string[]): Promise<SmPCResult | {
|
|
8
|
+
error: string;
|
|
9
|
+
}>;
|
|
2
10
|
export declare function registerSmpcTool(server: McpServer): void;
|
|
3
11
|
//# sourceMappingURL=smpc.d.ts.map
|
package/dist/tools/smpc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smpc.d.ts","sourceRoot":"","sources":["../../src/tools/smpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"smpc.d.ts","sourceRoot":"","sources":["../../src/tools/smpc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAYzC;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBzC;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuBxD"}
|
package/dist/tools/smpc.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { getUkSmpc } from "@pharmatools/drug-data";
|
|
3
|
+
import { cache, TTL } from "../lib/cache.js";
|
|
3
4
|
const schema = {
|
|
4
5
|
drug: z.string().describe("Drug name to look up (e.g., 'metformin', 'atorvastatin')"),
|
|
5
6
|
sections: z
|
|
@@ -7,37 +8,36 @@ const schema = {
|
|
|
7
8
|
.optional()
|
|
8
9
|
.describe("Specific sections to retrieve — accepts numbers like '4.1' or names like 'indications'. Returns all sections if omitted."),
|
|
9
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Build an SmPCResult from the shared drug-data engine (eMC). Result-shape
|
|
13
|
+
* compatible with the previous implementation. Cached for 24h.
|
|
14
|
+
*/
|
|
15
|
+
export async function buildSmpcResult(drug, sections) {
|
|
16
|
+
const cacheKey = `smpc:${drug.toLowerCase()}:${(sections ?? []).join(",").toLowerCase()}`;
|
|
17
|
+
const cached = cache.get(cacheKey);
|
|
18
|
+
if (cached)
|
|
19
|
+
return cached;
|
|
20
|
+
const smpc = await getUkSmpc(drug, sections);
|
|
21
|
+
if (!smpc || smpc.sections.length === 0) {
|
|
22
|
+
return { error: `No SmPC found for "${drug}" on eMC` };
|
|
23
|
+
}
|
|
24
|
+
const result = {
|
|
25
|
+
drug_name: smpc.drugName,
|
|
26
|
+
product_id: smpc.productId,
|
|
27
|
+
sections: smpc.sections,
|
|
28
|
+
url: smpc.url,
|
|
29
|
+
};
|
|
30
|
+
cache.set(cacheKey, result, TTL.LABEL);
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
10
33
|
export function registerSmpcTool(server) {
|
|
11
|
-
server.tool("get_smpc", "Get UK/EU Summary of Product Characteristics (SmPC) for a drug from eMC (medicines.org.uk). Returns structured labelling sections.", schema, async (params) => {
|
|
34
|
+
server.tool("get_smpc", "Get UK/EU Summary of Product Characteristics (SmPC) for a drug from eMC (medicines.org.uk). Returns structured labelling sections.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
12
35
|
try {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
return {
|
|
16
|
-
content: [{
|
|
17
|
-
type: "text",
|
|
18
|
-
text: JSON.stringify({ error: `No SmPC found for "${params.drug}" on eMC` }, null, 2),
|
|
19
|
-
}],
|
|
20
|
-
isError: true,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
// Select best match: prefer name containing the drug
|
|
24
|
-
const drugLower = params.drug.toLowerCase();
|
|
25
|
-
const sorted = [...searchResults].sort((a, b) => {
|
|
26
|
-
const aMatch = a.name.toLowerCase().includes(drugLower) ? 1 : 0;
|
|
27
|
-
const bMatch = b.name.toLowerCase().includes(drugLower) ? 1 : 0;
|
|
28
|
-
return bMatch - aMatch;
|
|
29
|
-
});
|
|
30
|
-
const best = sorted[0];
|
|
31
|
-
const html = await fetchSmpcHtml(best.product_id);
|
|
32
|
-
const sections = parseSmpcSections(html, params.sections);
|
|
33
|
-
const result = {
|
|
34
|
-
drug_name: best.name,
|
|
35
|
-
product_id: best.product_id,
|
|
36
|
-
sections: sections.map((s) => ({ code: s.code, title: s.title, content: s.content })),
|
|
37
|
-
url: `https://www.medicines.org.uk/emc/product/${best.product_id}/smpc`,
|
|
38
|
-
};
|
|
36
|
+
const result = await buildSmpcResult(params.drug, params.sections);
|
|
37
|
+
const isError = "error" in result;
|
|
39
38
|
return {
|
|
40
39
|
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
40
|
+
...(isError ? { isError: true } : {}),
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
catch (error) {
|
package/dist/tools/smpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smpc.js","sourceRoot":"","sources":["../../src/tools/smpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"smpc.js","sourceRoot":"","sources":["../../src/tools/smpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAG7C,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACrF,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,0HAA0H,CAC3H;CACJ,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,QAAmB;IAEnB,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IAC1F,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAa,QAAQ,CAAC,CAAC;IAC/C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,KAAK,EAAE,sBAAsB,IAAI,UAAU,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,MAAM,GAAe;QACzB,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,IAAI,CACT,UAAU,EACV,oIAAoI,EACpI,MAAM,EACN,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EACnE,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,OAAO,EAAE,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trending.d.ts","sourceRoot":"","sources":["../../src/tools/trending.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqCpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"trending.d.ts","sourceRoot":"","sources":["../../src/tools/trending.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqCpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoF5D"}
|
package/dist/tools/trending.js
CHANGED
|
@@ -31,7 +31,7 @@ function formatDate(date) {
|
|
|
31
31
|
return `${y}/${m}/${d}`;
|
|
32
32
|
}
|
|
33
33
|
export function registerTrendingTool(server) {
|
|
34
|
-
server.tool("trending_papers", "Find recent/trending papers on a topic. Sorted by date, with optional filtering to high-impact journals.", schema, async (params) => {
|
|
34
|
+
server.tool("trending_papers", "Find recent/trending papers on a topic. Sorted by date, with optional filtering to high-impact journals.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
35
35
|
try {
|
|
36
36
|
const now = new Date();
|
|
37
37
|
const from = new Date(now.getTime() - params.days * 24 * 60 * 60 * 1000);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trending.js","sourceRoot":"","sources":["../../src/tools/trending.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,oBAAoB,GAAG;IAC3B,QAAQ;IACR,SAAS;IACT,MAAM;IACN,qCAAqC;IACrC,YAAY;IACZ,MAAM;IACN,KAAK;IACL,iBAAiB;IACjB,sBAAsB;IACtB,iBAAiB;IACjB,gBAAgB;IAChB,6BAA6B;IAC7B,eAAe;IACf,aAAa;IACb,8BAA8B;CAC/B,CAAC;AAEF,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACpF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACxF,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;CAC3F,CAAC;AAEF,SAAS,UAAU,CAAC,IAAU;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,0GAA0G,EAC1G,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAEzE,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;YACxB,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,MAAM,aAAa,GAAG,oBAAoB;qBACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;qBAC7B,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChB,IAAI,IAAI,SAAS,aAAa,GAAG,CAAC;YACpC,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC;gBACjC,IAAI;gBACJ,MAAM,EAAE,MAAM,CAAC,UAAU;gBACzB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC;gBACzB,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC;aACzB,CAAC,CAAC;YAEH,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,OAAO,EAAE,EAAE;gCACX,WAAW,EAAE,CAAC;gCACd,KAAK,EAAE,MAAM,CAAC,KAAK;gCACnB,WAAW,EAAE,MAAM,CAAC,IAAI;6BACzB,EAAE,IAAI,EAAE,CAAC,CAAC;yBACZ,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;YAEhE,MAAM,QAAQ,GAAoB,YAAY,CAAC,MAAM;iBAClD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACjC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAA4B,CAAC;gBACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC/C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBAExE,OAAO;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC9B,OAAO;oBACP,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;oBACxD,IAAI;oBACJ,GAAG;oBACH,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iBAC5D,CAAC;YACJ,CAAC,CAAC,CAAC;YAEL,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,OAAO,EAAE,QAAQ;4BACjB,WAAW,EAAE,YAAY,CAAC,KAAK;4BAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,WAAW,EAAE,MAAM,CAAC,IAAI;yBACzB,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,OAAO,EAAE,EAAE,CAAC;gBAC9E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"trending.js","sourceRoot":"","sources":["../../src/tools/trending.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trials-detail.d.ts","sourceRoot":"","sources":["../../src/tools/trials-detail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"trials-detail.d.ts","sourceRoot":"","sources":["../../src/tools/trials-detail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwC/D"}
|
|
@@ -7,7 +7,7 @@ const schema = {
|
|
|
7
7
|
.describe("ClinicalTrials.gov NCT identifier (e.g., NCT03086486)"),
|
|
8
8
|
};
|
|
9
9
|
export function registerTrialDetailTool(server) {
|
|
10
|
-
server.tool("get_trial", "Get detailed information about a specific clinical trial from ClinicalTrials.gov. Returns eligibility criteria, study design, arms, outcomes, locations, and associated PubMed IDs.", schema, async (params) => {
|
|
10
|
+
server.tool("get_trial", "Get detailed information about a specific clinical trial from ClinicalTrials.gov. Returns eligibility criteria, study design, arms, outcomes, locations, and associated PubMed IDs.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
11
11
|
try {
|
|
12
12
|
const detail = await getTrialDetail(params.nctId);
|
|
13
13
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trials-detail.js","sourceRoot":"","sources":["../../src/tools/trials-detail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,KAAK,CAAC,YAAY,EAAE,4CAA4C,CAAC;SACjE,QAAQ,CAAC,uDAAuD,CAAC;CACrE,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,IAAI,CACT,WAAW,EACX,qLAAqL,EACrL,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAElD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEvE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,KAAK,EAAE,kBAAkB,MAAM,CAAC,KAAK,2CAA2C,EAAE,EACpF,IAAI,EACJ,CAAC,CACF;yBACF,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"trials-detail.js","sourceRoot":"","sources":["../../src/tools/trials-detail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,KAAK,CAAC,YAAY,EAAE,4CAA4C,CAAC;SACjE,QAAQ,CAAC,uDAAuD,CAAC;CACrE,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,IAAI,CACT,WAAW,EACX,qLAAqL,EACrL,MAAM,EACN,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EACnE,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAElD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEvE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,KAAK,EAAE,kBAAkB,MAAM,CAAC,KAAK,2CAA2C,EAAE,EACpF,IAAI,EACJ,CAAC,CACF;yBACF,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trials-search.d.ts","sourceRoot":"","sources":["../../src/tools/trials-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8BpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"trials-search.d.ts","sourceRoot":"","sources":["../../src/tools/trials-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8BpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+ChE"}
|
|
@@ -27,7 +27,7 @@ const schema = {
|
|
|
27
27
|
.describe("Sort order for results"),
|
|
28
28
|
};
|
|
29
29
|
export function registerTrialsSearchTool(server) {
|
|
30
|
-
server.tool("search_trials", "Search ClinicalTrials.gov for clinical trials. Filter by condition, intervention, status, and phase. Returns trial summaries with NCT IDs, status, sponsors, and enrollment info.", schema, async (params) => {
|
|
30
|
+
server.tool("search_trials", "Search ClinicalTrials.gov for clinical trials. Filter by condition, intervention, status, and phase. Returns trial summaries with NCT IDs, status, sponsors, and enrollment info.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
31
31
|
try {
|
|
32
32
|
if (!params.condition && !params.intervention && !params.term) {
|
|
33
33
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trials-search.js","sourceRoot":"","sources":["../../src/tools/trials-search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trials-search.js","sourceRoot":"","sources":["../../src/tools/trials-search.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/uspi.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { USPIResult } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Build a USPIResult from the shared drug-data engine (openFDA, cited to
|
|
5
|
+
* DailyMed). Result-shape compatible with the previous SPL-based implementation.
|
|
6
|
+
* Cached for 24h. Returns { error } when no label is found.
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildUspiResult(drug: string, sections?: string[]): Promise<USPIResult | {
|
|
9
|
+
error: string;
|
|
10
|
+
}>;
|
|
2
11
|
export declare function registerUspiTool(server: McpServer): void;
|
|
3
12
|
//# sourceMappingURL=uspi.d.ts.map
|
package/dist/tools/uspi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uspi.d.ts","sourceRoot":"","sources":["../../src/tools/uspi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"uspi.d.ts","sourceRoot":"","sources":["../../src/tools/uspi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAYzC;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBzC;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuBxD"}
|
package/dist/tools/uspi.js
CHANGED
|
@@ -1,50 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
// LOINC codes for FDA prescribing information sections
|
|
5
|
-
const LOINC_MAP = {
|
|
6
|
-
"boxed warning": "34071-1",
|
|
7
|
-
"indications": "34067-9",
|
|
8
|
-
"indications and usage": "34067-9",
|
|
9
|
-
"dosage": "34068-7",
|
|
10
|
-
"dosage and administration": "34068-7",
|
|
11
|
-
"dosage forms": "43678-2",
|
|
12
|
-
"contraindications": "34070-3",
|
|
13
|
-
"warnings": "43685-7",
|
|
14
|
-
"warnings and precautions": "43685-7",
|
|
15
|
-
"adverse reactions": "34084-4",
|
|
16
|
-
"drug interactions": "34073-7",
|
|
17
|
-
"use in specific populations": "42228-7",
|
|
18
|
-
"pregnancy": "42228-7",
|
|
19
|
-
"overdosage": "34088-5",
|
|
20
|
-
"clinical pharmacology": "34090-1",
|
|
21
|
-
"description": "34089-3",
|
|
22
|
-
"how supplied": "34069-5",
|
|
23
|
-
"storage": "44425-7",
|
|
24
|
-
"patient counseling": "34076-0",
|
|
25
|
-
"medication guide": "42231-1",
|
|
26
|
-
};
|
|
27
|
-
// All known PI LOINC codes
|
|
28
|
-
const ALL_PI_CODES = [...new Set(Object.values(LOINC_MAP))];
|
|
29
|
-
function resolveLoincCodes(sections) {
|
|
30
|
-
if (!sections || sections.length === 0)
|
|
31
|
-
return undefined;
|
|
32
|
-
const codes = [];
|
|
33
|
-
for (const input of sections) {
|
|
34
|
-
const lower = input.toLowerCase().trim();
|
|
35
|
-
// Direct LOINC code (e.g., "34067-9")
|
|
36
|
-
if (/^\d{5}-\d$/.test(lower)) {
|
|
37
|
-
codes.push(lower);
|
|
38
|
-
continue;
|
|
39
|
-
}
|
|
40
|
-
// Fuzzy match against section names
|
|
41
|
-
const match = Object.entries(LOINC_MAP).find(([name]) => name.includes(lower) || lower.includes(name));
|
|
42
|
-
if (match) {
|
|
43
|
-
codes.push(match[1]);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return codes.length > 0 ? codes : undefined;
|
|
47
|
-
}
|
|
2
|
+
import { getUsLabel } from "@pharmatools/drug-data";
|
|
3
|
+
import { cache, TTL } from "../lib/cache.js";
|
|
48
4
|
const schema = {
|
|
49
5
|
drug: z.string().describe("Drug name to look up (e.g., 'metformin', 'atorvastatin')"),
|
|
50
6
|
sections: z
|
|
@@ -52,57 +8,39 @@ const schema = {
|
|
|
52
8
|
.optional()
|
|
53
9
|
.describe("Specific sections to retrieve (e.g., ['indications', 'adverse reactions', 'contraindications']). Returns all sections if omitted."),
|
|
54
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Build a USPIResult from the shared drug-data engine (openFDA, cited to
|
|
13
|
+
* DailyMed). Result-shape compatible with the previous SPL-based implementation.
|
|
14
|
+
* Cached for 24h. Returns { error } when no label is found.
|
|
15
|
+
*/
|
|
16
|
+
export async function buildUspiResult(drug, sections) {
|
|
17
|
+
const cacheKey = `uspi:${drug.toLowerCase()}:${(sections ?? []).join(",").toLowerCase()}`;
|
|
18
|
+
const cached = cache.get(cacheKey);
|
|
19
|
+
if (cached)
|
|
20
|
+
return cached;
|
|
21
|
+
const label = await getUsLabel(drug, sections);
|
|
22
|
+
if (!label || label.sections.length === 0) {
|
|
23
|
+
return { error: `No FDA labelling found for "${drug}"` };
|
|
24
|
+
}
|
|
25
|
+
const result = {
|
|
26
|
+
drug_name: label.drugName,
|
|
27
|
+
setid: label.setId,
|
|
28
|
+
spl_version: "",
|
|
29
|
+
published_date: label.publishedDate,
|
|
30
|
+
sections: label.sections,
|
|
31
|
+
dailymed_url: label.dailymedUrl,
|
|
32
|
+
};
|
|
33
|
+
cache.set(cacheKey, result, TTL.LABEL);
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
55
36
|
export function registerUspiTool(server) {
|
|
56
|
-
server.tool("get_uspi", "Get FDA US Prescribing Information (USPI) for a drug from DailyMed. Returns structured labelling sections with LOINC codes.", schema, async (params) => {
|
|
37
|
+
server.tool("get_uspi", "Get FDA US Prescribing Information (USPI) for a drug from openFDA (cited to DailyMed). Returns structured labelling sections with LOINC codes.", schema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async (params) => {
|
|
57
38
|
try {
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
return {
|
|
61
|
-
content: [{
|
|
62
|
-
type: "text",
|
|
63
|
-
text: JSON.stringify({ error: `No FDA labelling found for "${params.drug}"` }, null, 2),
|
|
64
|
-
}],
|
|
65
|
-
isError: true,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
// Select best match: filter by drug name, sort by date descending
|
|
69
|
-
const drugLower = params.drug.toLowerCase();
|
|
70
|
-
const sorted = [...searchResults].sort((a, b) => {
|
|
71
|
-
const aMatch = a.title.toLowerCase().includes(drugLower) ? 1 : 0;
|
|
72
|
-
const bMatch = b.title.toLowerCase().includes(drugLower) ? 1 : 0;
|
|
73
|
-
if (aMatch !== bMatch)
|
|
74
|
-
return bMatch - aMatch;
|
|
75
|
-
return b.published_date.localeCompare(a.published_date);
|
|
76
|
-
});
|
|
77
|
-
const best = sorted[0];
|
|
78
|
-
const xml = await fetchSplXml(best.setid);
|
|
79
|
-
const parsed = parseXml(xml);
|
|
80
|
-
// Navigate SPL XML structure: document > component > structuredBody
|
|
81
|
-
// component may be an array due to XML parser isArray config
|
|
82
|
-
const document = parsed?.document;
|
|
83
|
-
const docComponent = document?.component;
|
|
84
|
-
const firstComponent = Array.isArray(docComponent) ? docComponent[0] : docComponent;
|
|
85
|
-
const structuredBody = firstComponent?.structuredBody;
|
|
86
|
-
const requestedCodes = resolveLoincCodes(params.sections);
|
|
87
|
-
const rawSections = parseSplSections(structuredBody, requestedCodes);
|
|
88
|
-
// If no specific sections requested and we got nothing from filtering, try all PI codes
|
|
89
|
-
const sections = rawSections.length > 0
|
|
90
|
-
? rawSections.map((s) => ({ code: s.code, title: s.title, content: s.content }))
|
|
91
|
-
: parseSplSections(structuredBody, ALL_PI_CODES).map((s) => ({
|
|
92
|
-
code: s.code,
|
|
93
|
-
title: s.title,
|
|
94
|
-
content: s.content,
|
|
95
|
-
}));
|
|
96
|
-
const result = {
|
|
97
|
-
drug_name: best.title,
|
|
98
|
-
setid: best.setid,
|
|
99
|
-
spl_version: best.spl_version,
|
|
100
|
-
published_date: best.published_date,
|
|
101
|
-
sections,
|
|
102
|
-
dailymed_url: `https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=${best.setid}`,
|
|
103
|
-
};
|
|
39
|
+
const result = await buildUspiResult(params.drug, params.sections);
|
|
40
|
+
const isError = "error" in result;
|
|
104
41
|
return {
|
|
105
42
|
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
43
|
+
...(isError ? { isError: true } : {}),
|
|
106
44
|
};
|
|
107
45
|
}
|
|
108
46
|
catch (error) {
|
package/dist/tools/uspi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uspi.js","sourceRoot":"","sources":["../../src/tools/uspi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"uspi.js","sourceRoot":"","sources":["../../src/tools/uspi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAG7C,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACrF,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,mIAAmI,CACpI;CACJ,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,QAAmB;IAEnB,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IAC1F,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAa,QAAQ,CAAC,CAAC;IAC/C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,+BAA+B,IAAI,GAAG,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,GAAe;QACzB,SAAS,EAAE,KAAK,CAAC,QAAQ;QACzB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,KAAK,CAAC,aAAa;QACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,KAAK,CAAC,WAAW;KAChC,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,IAAI,CACT,UAAU,EACV,gJAAgJ,EAChJ,MAAM,EACN,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EACnE,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,OAAO,EAAE,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pharmatools/pubcrawl",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "MCP server for PubMed literature search and US/UK drug labelling — built by PharmaTools.AI",
|
|
5
5
|
"mcpName": "io.github.nickjlamb/pubcrawl",
|
|
6
6
|
"author": "PharmaTools.AI",
|
|
@@ -29,11 +29,13 @@
|
|
|
29
29
|
"scripts": {
|
|
30
30
|
"build": "tsc",
|
|
31
31
|
"start": "node dist/index.js",
|
|
32
|
+
"start:http": "node dist/http.js",
|
|
32
33
|
"dev": "tsc --watch",
|
|
33
34
|
"prepublishOnly": "npm run build"
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
37
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
38
|
+
"@pharmatools/drug-data": "^0.2.0",
|
|
37
39
|
"cheerio": "^1.2.0",
|
|
38
40
|
"dotenv": "^16.0.0",
|
|
39
41
|
"fast-xml-parser": "^4.3.0"
|
|
@@ -42,6 +44,9 @@
|
|
|
42
44
|
"@types/node": "^20.0.0",
|
|
43
45
|
"typescript": "^5.3.0"
|
|
44
46
|
},
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=20"
|
|
49
|
+
},
|
|
45
50
|
"repository": {
|
|
46
51
|
"type": "git",
|
|
47
52
|
"url": "https://github.com/nickjlamb/pubcrawl"
|