PubMed & Europe PMC literature search, US/UK drug labelling, and clinical trials for AI assistants.
PubCrawl MCP Server (io.github.nickjlamb/pubcrawl)
This MCP server provides AI assistants access to PubMed and Europe PMC literature search, along with US and UK drug labelling and clinical trial information from ClinicalTrials.gov. It is described as an “MCP server” that supports these biomedical and healthcare reference sources for use by LLM tools and agents.
🛠️ Key Features
PubMed literature search
Europe PMC literature search
US and UK drug labelling
Clinical trials via ClinicalTrials.gov
Model Context Protocol (MCP) server integration
🚀 Use Cases
Searching biomedical literature (PubMed, Europe PMC)
Checking drug labelling in the US/UK context
Finding clinical trials relevant to specific conditions or therapies
⚡ Developer Benefits
Exposes NCBI-related biomedical sources (PubMed, Europe PMC) via MCP
Bundles healthcare/pharma sources for AI agents (literature + label + trial)
Fits MCP workflows for LLM tools
⚠️ Limitations
Scope is limited to the cited sources: PubMed, Europe PMC, US/UK drug labelling, and ClinicalTrials.gov
PubCrawl connects your AI assistant (Claude Desktop, Cursor, or any MCP-compatible client) directly to the primary sources clinicians and researchers actually use — so you can ask a question in plain English and get an answer grounded in PubMed, Europe PMC, FDA/UK drug labelling, and ClinicalTrials.gov, with real PMIDs, NCT IDs, and DOIs you can verify.
Every tool is a thin, deterministic wrapper over an official API. Nothing is invented; every result cites its source.
The thing no other MCP server does
Ask "compare US and UK labelling for semaglutide" and PubCrawl pulls both live labels and maps equivalent sections — US Indications and Usage ↔ UK 4.1 Therapeutic indications, and so on — so the differences are visible instead of assumed:
US Prescribing Information
UK SmPC
Indications
glycaemic control · reduce risk of MACE in T2D with established CVD · reduce risk of sustained eGFR decline, ESKD and CV death in T2D with CKD
glycaemic control only — CV and renal outcomes appear as cross-references to §4.4/4.5/5.1, not as indications
Contraindications
personal or family history of MTC or MEN 2 · hypersensitivity
hypersensitivity only
A cardiovascular claim that is on-label in the US promotes an unlicensed indication in the UK. If you write, review, or check medical copy for both markets, that gap is the whole job — and compare_labels is the only MCP tool that surfaces it.
Everything else
🔬 14 tools across literature, drug labelling, and clinical trials
🧾 Verifiable by design — results link back to DailyMed, the eMC, PubMed, and ClinicalTrials.gov
📰 Preprints via Europe PMC — surface work ahead of formal publication
🆓 No API keys required (an optional free NCBI key raises PubMed rate limits)
🧪 Fully typed, tested, and CI-checked — retrieval fidelity gated by OpenGATE on every release
Search PubMed with filters for date range, article type, and sort order. Returns PMIDs, titles, authors, journals, and DOIs.
search_europepmc
Search Europe PMC — a broader corpus than PubMed that also indexes preprints (bioRxiv, medRxiv) and patents. Each result includes an abstract snippet, citation count, open-access status, and a preprint flag. Filter to preprints or open-access only.
get_abstract
Get the full structured abstract for an article — broken into labeled sections (background, methods, results, conclusions) with keywords and MeSH terms.
get_full_text
Retrieve the full text of open-access articles from PubMed Central, with parsed sections, figure/table captions, and reference counts.
find_related
Find similar articles using PubMed's neighbor algorithm, ranked by relevance score.
format_citation
Generate a formatted citation in APA, Vancouver, Harvard, or BibTeX style.
trending_papers
Find recent papers on a topic, with optional filtering to high-impact journals (Nature, Science, Cell, NEJM, Lancet, JAMA, etc.).
💊 Drug labelling
Tool
What it does
resolve_drug_name
Convert a brand drug name to its generic (or a generic to its US brand names), with drug class and common indications. Deterministic, via RxNorm/openFDA — no AI.
get_uspi
Pull US Prescribing Information sections via openFDA (cited to DailyMed) — indications, dosing, warnings, contraindications, and more.
get_smpc
Retrieve UK Summary of Product Characteristics from the eMC — the UK equivalent of US prescribing information, with numbered SmPC sections.
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.
search_by_indication
Find drugs approved for a medical condition. Searches FDA labelling via openFDA, then cross-references UK availability on the eMC.
🧫 Clinical trials
Tool
What it does
search_trials
Search ClinicalTrials.gov for clinical trials. Filter by condition, intervention, recruitment status, and phase. Returns NCT IDs, sponsors, enrollment, and links.
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.
💬 Examples
Once connected, just ask naturally:
Literature
"Search PubMed for recent clinical trials on semaglutide."
"Search Europe PMC for preprints on GLP-1 receptor agonists, most cited first."
"Get the abstract for PMID 38127654, then find related papers and cite them all in Vancouver style."
"What are the trending papers on CRISPR gene therapy this month, high-impact journals only?"
"Pull the full text of that PMC article and summarise the methods section."
Drug labelling
"Get the FDA prescribing information for metformin — just the indications and warnings."
"Pull the UK SmPC for atorvastatin."
"Compare US and UK labelling for lisinopril and highlight the differences."
"What's the generic name and drug class for Ozempic?"
"What drugs are approved for type 2 diabetes in both the US and UK?"
Clinical trials
"Find recruiting Phase 3 trials for pembrolizumab in breast cancer."
"Get the eligibility criteria and primary outcomes for NCT03086486."
Cross-source (where PubCrawl shines)
"For semaglutide: summarise the US label's cardiovascular indication, then find the pivotal trial and its NEJM publication."
🏗 Architecture
Three layers — tools register the MCP interface, lib clients talk to each external API, and shared cache + parsers keep it fast and consistent.
Each tool file exports a register*Tool(server) function with a zod schema and an async handler. All network calls are rate-limited, cached, and time-bounded. See CLAUDE.md for a full architecture walkthrough and CONTRIBUTING.md to add a tool.
🔧 Configuration
Install options
bash
# Zero-install (recommended): npx fetches it on demand — see Quick start above.# Or install globally:
npm install -g @pharmatools/pubcrawl
# Config for a global install:# { "mcpServers": { "pubcrawl": { "command": "pubcrawl" } } }
NCBI API key (optional)
Without a key, PubMed requests are limited to 3/second. A free key raises this to 10/second.
git clone https://github.com/nickjlamb/pubcrawl.git
cd pubcrawl
npm install
npm run dev # TypeScript watch mode
npm run build # compile to dist/
npm start # run the stdio server
npm test# Vitest unit suite
npm run lint # ESLint
Unit tests live in tests/ and cover the parsing, caching, citation, and formatting logic with fixture payloads (no network calls). CI runs lint → test → build on every push and pull request. New to the codebase? Start with CONTRIBUTING.md.
Contributions are welcome and appreciated — bug reports, new data sources, new tools. Read the contributing guide to get started, then open an issue or a pull request.
📚 Citation
If PubCrawl supports work you publish, please cite it — see CITATION.cff, or:
bibtex
@software{lamb_pubcrawl,
author = {Lamb, Nick},
title = {PubCrawl: verifiable biomedical literature, drug labelling and clinical trials for AI assistants},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.22101559},
url = {https://doi.org/10.5281/zenodo.22101559}
}