@pharmatools/pubcrawl 2.0.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 (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +45 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/cache.d.ts +19 -0
  8. package/dist/lib/cache.d.ts.map +1 -0
  9. package/dist/lib/cache.js +52 -0
  10. package/dist/lib/cache.js.map +1 -0
  11. package/dist/lib/dailymed.d.ts +9 -0
  12. package/dist/lib/dailymed.d.ts.map +1 -0
  13. package/dist/lib/dailymed.js +58 -0
  14. package/dist/lib/dailymed.js.map +1 -0
  15. package/dist/lib/emc.d.ts +13 -0
  16. package/dist/lib/emc.d.ts.map +1 -0
  17. package/dist/lib/emc.js +215 -0
  18. package/dist/lib/emc.js.map +1 -0
  19. package/dist/lib/label-mapping.d.ts +8 -0
  20. package/dist/lib/label-mapping.d.ts.map +1 -0
  21. package/dist/lib/label-mapping.js +23 -0
  22. package/dist/lib/label-mapping.js.map +1 -0
  23. package/dist/lib/ncbi.d.ts +37 -0
  24. package/dist/lib/ncbi.d.ts.map +1 -0
  25. package/dist/lib/ncbi.js +175 -0
  26. package/dist/lib/ncbi.js.map +1 -0
  27. package/dist/lib/openfda.d.ts +8 -0
  28. package/dist/lib/openfda.d.ts.map +1 -0
  29. package/dist/lib/openfda.js +83 -0
  30. package/dist/lib/openfda.js.map +1 -0
  31. package/dist/lib/xml-parser.d.ts +23 -0
  32. package/dist/lib/xml-parser.d.ts.map +1 -0
  33. package/dist/lib/xml-parser.js +273 -0
  34. package/dist/lib/xml-parser.js.map +1 -0
  35. package/dist/tools/abstract.d.ts +3 -0
  36. package/dist/tools/abstract.d.ts.map +1 -0
  37. package/dist/tools/abstract.js +107 -0
  38. package/dist/tools/abstract.js.map +1 -0
  39. package/dist/tools/cite.d.ts +3 -0
  40. package/dist/tools/cite.d.ts.map +1 -0
  41. package/dist/tools/cite.js +188 -0
  42. package/dist/tools/cite.js.map +1 -0
  43. package/dist/tools/compare-labels.d.ts +3 -0
  44. package/dist/tools/compare-labels.d.ts.map +1 -0
  45. package/dist/tools/compare-labels.js +126 -0
  46. package/dist/tools/compare-labels.js.map +1 -0
  47. package/dist/tools/fulltext.d.ts +3 -0
  48. package/dist/tools/fulltext.d.ts.map +1 -0
  49. package/dist/tools/fulltext.js +88 -0
  50. package/dist/tools/fulltext.js.map +1 -0
  51. package/dist/tools/related.d.ts +3 -0
  52. package/dist/tools/related.d.ts.map +1 -0
  53. package/dist/tools/related.js +63 -0
  54. package/dist/tools/related.js.map +1 -0
  55. package/dist/tools/search-indication.d.ts +3 -0
  56. package/dist/tools/search-indication.d.ts.map +1 -0
  57. package/dist/tools/search-indication.js +73 -0
  58. package/dist/tools/search-indication.js.map +1 -0
  59. package/dist/tools/search.d.ts +3 -0
  60. package/dist/tools/search.d.ts.map +1 -0
  61. package/dist/tools/search.js +69 -0
  62. package/dist/tools/search.js.map +1 -0
  63. package/dist/tools/smpc.d.ts +3 -0
  64. package/dist/tools/smpc.d.ts.map +1 -0
  65. package/dist/tools/smpc.js +52 -0
  66. package/dist/tools/smpc.js.map +1 -0
  67. package/dist/tools/trending.d.ts +3 -0
  68. package/dist/tools/trending.d.ts.map +1 -0
  69. package/dist/tools/trending.js +106 -0
  70. package/dist/tools/trending.js.map +1 -0
  71. package/dist/tools/uspi.d.ts +3 -0
  72. package/dist/tools/uspi.d.ts.map +1 -0
  73. package/dist/tools/uspi.js +117 -0
  74. package/dist/tools/uspi.js.map +1 -0
  75. package/dist/types.d.ts +93 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +2 -0
  78. package/dist/types.js.map +1 -0
  79. package/package.json +49 -0
  80. package/server.json +29 -0
@@ -0,0 +1,93 @@
1
+ export interface PubMedArticle {
2
+ pmid: string;
3
+ title: string;
4
+ authors: string[];
5
+ journal: string;
6
+ year: string;
7
+ doi: string;
8
+ abstract_snippet: string;
9
+ }
10
+ export interface AbstractSection {
11
+ label: string;
12
+ text: string;
13
+ }
14
+ export interface FullAbstract {
15
+ pmid: string;
16
+ title: string;
17
+ authors: string[];
18
+ journal: string;
19
+ year: string;
20
+ doi: string;
21
+ volume: string;
22
+ issue: string;
23
+ pages: string;
24
+ abstract_sections: AbstractSection[];
25
+ keywords: string[];
26
+ mesh_terms: string[];
27
+ pmc_id: string;
28
+ }
29
+ export interface FullTextSection {
30
+ title: string;
31
+ content: string;
32
+ }
33
+ export interface FullTextResult {
34
+ pmid: string;
35
+ pmcid: string;
36
+ title: string;
37
+ sections: FullTextSection[];
38
+ figure_captions: string[];
39
+ table_captions: string[];
40
+ reference_count: number;
41
+ }
42
+ export interface RelatedArticle extends PubMedArticle {
43
+ relevance_score: number;
44
+ }
45
+ export interface CacheEntry<T> {
46
+ value: T;
47
+ timestamp: number;
48
+ ttl: number;
49
+ }
50
+ export interface LabelSection {
51
+ code: string;
52
+ title: string;
53
+ content: string;
54
+ }
55
+ export interface USPIResult {
56
+ drug_name: string;
57
+ setid: string;
58
+ spl_version: string;
59
+ published_date: string;
60
+ sections: LabelSection[];
61
+ dailymed_url: string;
62
+ }
63
+ export interface SmPCResult {
64
+ drug_name: string;
65
+ product_id: string;
66
+ sections: LabelSection[];
67
+ url: string;
68
+ }
69
+ export interface LabelComparison {
70
+ topic: string;
71
+ us_section: LabelSection | null;
72
+ uk_section: LabelSection | null;
73
+ }
74
+ export interface CompareLabelsResult {
75
+ drug: string;
76
+ comparisons: LabelComparison[];
77
+ us_source: string | null;
78
+ uk_source: string | null;
79
+ }
80
+ export interface DrugApprovalEntry {
81
+ name: string;
82
+ brand_name?: string;
83
+ manufacturer?: string;
84
+ us_approved: boolean;
85
+ uk_approved: boolean;
86
+ us_setid?: string;
87
+ uk_product_id?: string;
88
+ }
89
+ export interface IndicationSearchResult {
90
+ condition: string;
91
+ drugs: DrugApprovalEntry[];
92
+ }
93
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@pharmatools/pubcrawl",
3
+ "version": "2.0.0",
4
+ "description": "MCP server for PubMed literature search and US/UK drug labelling — built by PharmaTools.AI",
5
+ "mcpName": "io.github.nickjlamb/pubcrawl",
6
+ "author": "PharmaTools.AI",
7
+ "license": "MIT",
8
+ "type": "module",
9
+ "main": "dist/index.js",
10
+ "bin": {
11
+ "pubcrawl": "dist/index.js"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "server.json"
16
+ ],
17
+ "keywords": [
18
+ "mcp",
19
+ "mcp-server",
20
+ "pubmed",
21
+ "ncbi",
22
+ "biomedical",
23
+ "literature",
24
+ "drug-labelling",
25
+ "openfda",
26
+ "dailymed",
27
+ "pharma"
28
+ ],
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "start": "node dist/index.js",
32
+ "dev": "tsc --watch",
33
+ "prepublishOnly": "npm run build"
34
+ },
35
+ "dependencies": {
36
+ "@modelcontextprotocol/sdk": "^1.0.0",
37
+ "cheerio": "^1.2.0",
38
+ "dotenv": "^16.0.0",
39
+ "fast-xml-parser": "^4.3.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/node": "^20.0.0",
43
+ "typescript": "^5.3.0"
44
+ },
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "https://github.com/nickjlamb/pubcrawl"
48
+ }
49
+ }
package/server.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.nickjlamb/pubcrawl",
4
+ "description": "MCP server for PubMed literature search and US/UK drug labelling. 10 tools: search PubMed, get abstracts, full text, related papers, citations, trending papers, US prescribing information (DailyMed), UK SmPC (eMC), compare US/UK labels, and search by indication (OpenFDA).",
5
+ "repository": {
6
+ "url": "https://github.com/nickjlamb/pubcrawl",
7
+ "source": "github"
8
+ },
9
+ "version": "2.0.0",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "identifier": "@pharmatools/pubcrawl",
14
+ "version": "2.0.0",
15
+ "transport": {
16
+ "type": "stdio"
17
+ },
18
+ "environmentVariables": [
19
+ {
20
+ "description": "NCBI API key for higher rate limits (10 req/s vs 3 req/s). Optional — get one free at https://www.ncbi.nlm.nih.gov/account/",
21
+ "isRequired": false,
22
+ "format": "string",
23
+ "isSecret": true,
24
+ "name": "NCBI_API_KEY"
25
+ }
26
+ ]
27
+ }
28
+ ]
29
+ }