io.github.nickjlamb/pubcrawl

Registre officiel Santé

PubMed & Europe PMC literature search, US/UK drug labelling, and clinical trials for AI assistants.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package @pharmatools/pubcrawl
Claude Code
claude mcp add pubcrawl -e 'NCBI_API_KEY=<your ncbi_api_key>' -- npx -y @pharmatools/pubcrawl@2.6.4
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "pubcrawl": {
            "command": "npx",
            "args": [
                "-y",
                "@pharmatools/pubcrawl@2.6.4"
            ],
            "env": {
                "NCBI_API_KEY": "<your ncbi_api_key>"
            }
        }
    }
}

Variables d'environnement

  • NCBI_API_KEY secret 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/

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. ✨ What is PubCrawl?
  2. 🚀 Quick start (60 seconds)
  3. 🧰 Tools
  4. 💬 Examples
  5. 🏗 Architecture
  6. 🔧 Configuration
  7. 🗺 Roadmap
  8. 🛠 Development
  9. 📦 Releases & changelog
  10. 🤝 Contributing
  11. 📚 Citation
  12. 📄 License

An MCP server that gives AI assistants access to PubMed, Europe PMC, FDA & UK drug labelling, and ClinicalTrials.gov.

A peer-reviewed pub crawl through the literature — the label — and the trial.

Quick start · Tools · Examples · Architecture · Roadmap · Contributing


✨ What is PubCrawl?

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 InformationUK SmPC
Indicationsglycaemic control · reduce risk of MACE in T2D with established CVD · reduce risk of sustained eGFR decline, ESKD and CV death in T2D with CKDglycaemic control only — CV and renal outcomes appear as cross-references to §4.4/4.5/5.1, not as indications
Contraindicationspersonal or family history of MTC or MEN 2 · hypersensitivityhypersensitivity 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 — literature retrieval gated by OpenGATE, and labelling & trials by the in-repo fidelity benchmark, on every release

Built by PharmaTools.AI.


🚀 Quick start (60 seconds)

1. Add PubCrawl to your client config — no install step needed, npx fetches it on first run.

For Claude Desktop, edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "pubcrawl": {
      "command": "npx",
      "args": ["-y", "@pharmatools/pubcrawl"]
    }
  }
}

2. Restart your client. PubCrawl appears under + → Connectors.

3. Ask away:

"Compare the US and UK labelling for atorvastatin, and find recent Phase 3 trials for it."

That's it. → More examples · API key & other options


🧰 Tools

📚 Literature
ToolWhat it does
search_pubmedSearch PubMed with filters for date range, article type, and sort order. Returns PMIDs, titles, authors, journals, and DOIs.
search_europepmcSearch 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_abstractGet the full structured abstract for an article — broken into labeled sections (background, methods, results, conclusions) with keywords and MeSH terms.
get_full_textRetrieve the full text of open-access articles from PubMed Central, with parsed sections, figure/table captions, and reference counts.
find_relatedFind similar articles using PubMed's neighbor algorithm, ranked by relevance score.
format_citationGenerate a formatted citation in APA, Vancouver, Harvard, or BibTeX style.
trending_papersFind recent papers on a topic, with optional filtering to high-impact journals (Nature, Science, Cell, NEJM, Lancet, JAMA, etc.).
💊 Drug labelling
ToolWhat it does
resolve_drug_nameConvert 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_uspiPull US Prescribing Information sections via openFDA (cited to DailyMed) — indications, dosing, warnings, contraindications, and more.
get_smpcRetrieve UK Summary of Product Characteristics from the eMC — the UK equivalent of US prescribing information, with numbered SmPC sections.
compare_labelsSide-by-side comparison of US (USPI) and UK (SmPC) labelling for the same drug, pairing equivalent sections (US Indications ↔ UK 4.1). A missing side is always explained, cut sections are flagged truncated, and us_drug / uk_drug pin a different name per market (Farxiga / Forxiga).
search_by_indicationFind drugs approved for a medical condition. Searches FDA labelling via openFDA, then cross-references UK availability on the eMC.
🧫 Clinical trials
ToolWhat it does
search_trialsSearch ClinicalTrials.gov for clinical trials. Filter by condition, intervention, recruitment status, and phase. Returns NCT IDs, sponsors, enrollment, and links.
get_trialGet 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
# 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.

  1. Create a free NCBI account at https://www.ncbi.nlm.nih.gov/account/
  2. Account Settings → API Key Management → create a key
  3. Add it to your config:
{
  "mcpServers": {
    "pubcrawl": {
      "command": "npx",
      "args": ["-y", "@pharmatools/pubcrawl"],
      "env": { "NCBI_API_KEY": "your_key_here" }
    }
  }
}
HTTP transport

PubCrawl also ships a stateless Streamable HTTP transport for browser-based and hosted clients:

npm run start:http   # serves POST /mcp and GET /health on PORT (default 3000)

🗺 Roadmap

Highlights of what's planned — see ROADMAP.md for the full list.

  • get_europepmc_fulltext — read preprints & OA articles surfaced by search_europepmc
  • get_adverse_events — openFDA FAERS adverse-event lookups
  • EMA / EPAR labelling to complement the US + UK compare_labels
  • MeSH query helper for sharper PubMed searches
  • MCP resources & prompts for common review workflows

Ideas welcome — open an issue.


🛠 Development

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, formatting and label-pairing 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.

Measuring fidelity
npm run bench            # labelling + trials fidelity benchmark against the live sources
npm run bench -- --ci    # what the release gate runs: exit 1 if a verified case fails

Two gates run on every release and weekly. OpenGATE's retrieval scorer checks PubMed and Europe PMC records against hand-verified anchors. The in-repo fidelity benchmark does the same for drug labelling and trials: compare_labels is held to a gold set of US/UK anchors (a phrase must appear on one side and must not on the other, so real divergences are surfaced rather than smoothed over) plus a verbatim check that refetches the raw openFDA record and eMC page and confirms every returned sentence is a substring of the source. No LLM judge anywhere in either gate.


📦 Releases & changelog

Versions follow Semantic Versioning. See the **CHANGELOG** for a full history and Releases for notes and assets.

🤝 Contributing

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:

@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}
}

📄 License

MIT © PharmaTools.AI

Data from NCBI E-utilities, Europe PMC, openFDA, DailyMed, the UK eMC, and ClinicalTrials.gov. PubCrawl is not affiliated with these providers.

Questions fréquentes

Qu'est-ce que io.github.nickjlamb/pubcrawl ?

PubMed & Europe PMC literature search, US/UK drug labelling, and clinical trials for AI assistants.

Comment installer io.github.nickjlamb/pubcrawl ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add pubcrawl -e 'NCBI_API_KEY=<your ncbi_api_key>' -- npx -y @pharmatools/pubcrawl@2.6.4. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour io.github.nickjlamb/pubcrawl ?

Oui. Il attend NCBI_API_KEY, à renseigner dans sa configuration.

io.github.nickjlamb/pubcrawl est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient io.github.nickjlamb/pubcrawl ?

Il est publié par nickjlamb. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.