Search PubMed biomedical literature, get abstracts, find related papers, and track citations via @pipeworx/mcp-pubmed — 5 tools, credential-free NCBI E-utilities
@pipeworx/mcp-pubmed — verified recipe via local npm install
Package: @pipeworx/mcp-pubmed (latest) on npm Transport: Library-style MCP export (not stdio) — import default export, call callTool(name, args) Auth: None (NCBI E-utilities are credential-free) Install: npm install @pipeworx/mcp-pubmed Runtime: node --experimental-strip-types (TypeScript source only, must copy out of node_modules)
Setup
npm install --prefix /tmp/pubmed @pipeworx/mcp-pubmed
cp /tmp/pubmed/node_modules/@pipeworx/mcp-pubmed/src/index.ts /tmp/pubmed/pubmed.ts
cd /tmp/pubmed
node --experimental-strip-types --input-type=module <<'EOF'
import pack from "./pubmed.ts";
const result = await pack.callTool("search_pubmed", { query: "CRISPR cancer therapy", limit: 5 });
console.log(JSON.stringify(result, null, 2));
EOF⚠️ `node --experimental-strip-types` cannot import .ts from node_modules — copy source file to a non-node_modules path first.
5 tools
| Tool | Required params | Description |
|---|---|---|
search_pubmed | query | Search 35M+ PubMed citations. Supports MeSH (COVID-19[MeSH]), author (Doudna JA[Author]), field qualifiers. Optional: limit (1-100, default 10) |
get_summary | ids | Batch citation metadata for comma-separated PMIDs. Returns title, authors, journal, DOI, pub_date. Up to ~200 IDs per call |
get_abstract | id | Full abstract text for one PMID, with structured sections (Background/Methods/Results/Conclusions) when available |
get_related_articles | pmid | NIH's computed neighbor papers, relevance-ranked. Optional: limit (1-50, default 10) |
get_citations | pmid | Forward citation search (PubMed Central citation graph). Optional: limit (1-50, default 10) |
Verified calls (8 calls, 7 OK + 1 correct rejection)
search_pubmed — {query: "CRISPR cancer therapy 2024", limit: 5} → 1,103 total results, 5 PMIDs returned, query auto-expanded to MeSH terms. Latency: 1095ms.
search_pubmed (MeSH) — {query: "COVID-19[MeSH] vaccine efficacy", limit: 3} → 5,529 total results, 3 PMIDs. MeSH qualifier correctly parsed. Latency: 228ms.
search_pubmed (author) — {query: "Doudna JA[Author] CRISPR", limit: 3} → 224 total results, 3 PMIDs. Author field qualifier works perfectly. Latency: 224ms.
get_summary — {ids: "42317600,42290533,42258134"} → 3 articles with full metadata: titles, 6-14 authors each, journal names, pub_date, volume/issue/pages, DOI, PubMed URLs. Batch mode works correctly. Latency: 424ms.
get_abstract — {id: "42317600"} → Full unstructured abstract (DLBCL autologous transplant study), 1,200+ chars. Includes title. Latency: 568ms.
get_related_articles — {pmid: "23287722", limit: 5} (the landmark 2013 Doudna/Charpentier CRISPR-Cas9 paper) → 5 related papers, all CRISPR genome editing papers (2013-2014), relevance-ranked. Includes the companion Cong et al. paper (23287718) and Yang et al. methods paper. Latency: 919ms.
get_citations — {pmid: "23287722", limit: 5} → 4,931 citing papers in PubMed Central graph (a floor — total real citations higher). Top 5 most recent: gene editing for hearing loss (2026), keratinocyte CRISPR (2026), chromatin off-target effects (2026). Latency: 1177ms.
get_abstract (nonexistent) — {id: "999999999999"} → Correct rejection: "No abstract found for PubMed ID: 999999999999". No crash.
Key observations
- `get_related_articles` and `get_citations` are the killer features — not available in
mcp-simple-pubmed(the other PubMed MCP server). Related articles use NIH's computed neighbors (shared terms/MeSH/citations); citations are forward-citation search from PMC. - `query_translation` field is invaluable — shows exactly how PubMed expanded your query (e.g., "CRISPR" → MeSH terms + all-fields OR).
- Batch `get_summary` — much cheaper than per-ID; up to ~200 IDs per call.
- Built-in retry with backoff on 5xx/timeou
{ "server": "@pipeworx/mcp-pubmed", "transport": "library-export (not stdio)", "install": "npm install @pipeworx/mcp-pubmed", "runtime_note": "TypeScript source only — copy out of node_modules, run with node --experimental-strip-types", "tools": ["search_pubmed", "get_summary", "get_abstract", "get_related_articles", "get_citations"], "calls": 8, "success_rate": "88% (7 OK + 1 correct rejection)", "p50_ms": 568, "trace": { "search_crispr": { "input": { "query": "CRISPR cancer therapy 2024", "limit": 5 }, "output": { "total": 1103, "returned": 5, "pmids": ["42317600", "42290533", "42258134", "42252920", "42200207"] }, "latency_ms": 1095 }, "search_mesh": { "input": { "query": "COVID-19[MeSH] vaccine efficacy", "limit": 3 }, "output": { "total": 5529, "returned": 3 }, "latency_ms": 228 }, "search_author": { "input": { "query": "Doudna JA[Author] CRISPR", "limit": 3 }, "output": { "total": 224, "returned": 3 }, "latency_ms": 224 }, "get_summary_batch": { "input": { "ids": "42317600,42290533,42258134" }, "output": { "articles": 3, "sample_title": "Autologous transplant for patients with chemotherapy-sensitive late relapse of diffuse large B-cell lymphoma." }, "latency_ms": 424 }, "get_abstract": { "input": { "id": "42317600" }, "output": { "title": "Autologous transplant for patients with chemotherapy-sensitive late relapse of diffuse large B-cell lymphoma.", "abstract_chars": 1200 }, "latency_ms": 568 }, "get_related_articles": { "input": { "pmid": "23287722", "limit": 5 }, "output": { "total_related": 5, "top_related_pmid": "24557908", "top_related_title": "CRISPR-Cas-mediated targeted genome editing in human cells." }, "latency_ms": 919 }, "get_citations": { "input": { "pmid": "23287722", "limit": 5 }, "output": { "total_citing_in_pmc": 4931, "top_citing_pmid": "42240932", "top_citing_title": "Gene Editing Technologies for Hereditary Hearing Loss: Prospects and Challenges." }, "latency_ms": 1177 }, "get_abstract_nonexistent": { "input": { "id": "999999999999" }, "error": "No abstract found for PubMed ID: 999999999999", "latency_ms": 208 } }, "ran_at": "2026-06-22T03:10:00Z" }