drug-pipeline-mcp
Searches PubMed for scientific publications related to drugs and clinical trials, returning results with PMID links.
💊 drug-pipeline-mcp
Pharmaceutical R&D Pipeline Intelligence for AI Agents — a lightweight MCP server that aggregates clinical trial data, FDA/EMA approvals, safety surveillance (FAERS), drug labels, patents, drug interactions, recalls, and publications through a unified API. Every output includes a verifiable source identifier (NCT ID, FDA Application Number, or PMID).
Not a replacement for IQVIA/EvaluatePharma. A real-time, publicly accessible intelligence layer that complements subscription databases.
Quick Start
pip install git+https://github.com/DasClown/drug-pipeline-mcp.git
# Start MCP server (stdio)
drug-pipeline
# Or HTTP mode for remote access
pip install drug-pipeline-mcp[http]
drug-pipeline --http --port 8081Or deploy via Smithery — one click, no config.
Related MCP server: aria-mcp-server
Tools (28)
Tool | What it does | Data Source |
| Search clinical trials by condition, phase, status, sponsor | ClinicalTrials.gov |
| Full protocol for a specific NCT (eligibility, outcomes, locations) | ClinicalTrials.gov |
| Trial outcomes — endpoints, adverse events, participant flow | ClinicalTrials.gov |
| Trial site locations — facilities, countries, geo distribution | ClinicalTrials.gov |
| Drug info: active ingredients, strength, ATC classification, NDC | openFDA + RxNorm |
| FDA approval history with submission dates and status | openFDA Drugs@FDA |
| EU/EMA authorization — brand names, ATC, status, orphan/biosimilar flags | EMA Daily XLSX |
| FAERS adverse event reports — top reactions, serious outcomes, total count | openFDA FAERS |
| Disproportionality screening (exploratory) — AE reporting ratios | openFDA FAERS |
| FDA prescribing info — indications, boxed warnings, contraindications, dosing | openFDA Drug Labeling |
| NIH drug label (OTC + Rx) — SPL set ID, version, DailyMed URL | DailyMed (NIH/NLM) |
| FDA drug recalls — Class I/II/III, reasons, dates, firms | openFDA Enforcement |
| Patent & exclusivity — approval dates, market exclusivity estimates | openFDA |
| Drug-drug interactions — FDA label + FAERS co-reported drugs | openFDA Labeling + FAERS |
| US drug product ID — NDC codes, manufacturers, strength, form | openFDA NDC Directory |
| Drug-target MOA — mechanisms, targets, clinical stage, drug type | Open Targets (EMBL-EBI) |
| US FDA Orphan Drug Designations — indication, status, exclusivity | MyChem.info |
| Find drugs by indication — which are EU-approved for a condition | EMA Daily XLSX |
| EU orphan drug designations — filter by therapeutic area | EMA Daily XLSX |
| EU biosimilars — filter by condition / therapeutic area | EMA Daily XLSX |
| LOE timing — biosimilar competition by active substance | EMA + FDA |
| Company R&D — trials grouped by phase + EU approval enrichment | ClinicalTrials.gov + EMA |
| PubMed search for drug/trial publications | PubMed / NCBI |
| KOL / PI search — investigators by condition or drug | ClinicalTrials.gov + PubMed |
| Combination therapy detection — co-administered drugs in trials | ClinicalTrials.gov |
| Head-to-head — FDA, EU, MOA, safety, patent across 2 drugs | Composite |
| Composite — drug info + FDA + EU + safety + label + signals + recalls + interactions + trials + pubs + patent | All sources |
| Full pipeline for a condition — approved + Phase 3/2/1 + mechanisms + sponsors + pubs | Composite |
⚠️
detect_safety_signals: Exploratory disproportionality screening — uses an approximate denominator, not a validated PRR. Not for regulatory or clinical use. See methodology note in code.
Architecture
drug-pipeline-mcp/
├── drug_pipeline/
│ ├── __init__.py # Version
│ ├── server.py # MCP server (28 tools)
│ └── sources.py # Data source fetchers (API aggregation layer)
├── drug_pipeline_cli.py # CLI entry point
├── tests/ # 61 unit tests (pytest)
├── pyproject.toml
└── README.mdDesign philosophy: Lightweight API aggregation. No caching layer. No ML models. No predictions. Each tool makes real-time requests to a public API and returns structured data with source identifiers. The server is intentionally simple — it extracts, structures, and annotates, nothing more.
Limitations by design:
Rate limits apply per source (openFDA: 10 req/sec, ClinicalTrials.gov: generous)
EMA data sourced from a daily-updated XLSX register — format changes monitored manually
FAERS data is spontaneous reporting, not incidence rates
The server does not interpret, predict, or synthesize beyond what the sources provide
Data Sources
Source | Data | Access |
ClinicalTrials.gov | 500K+ studies, phases, status, eligibility, results, site locations | ✅ Always free |
openFDA NDC Directory | Drug product ID, NDC codes, manufacturers | ✅ Always free |
openFDA FAERS | Adverse event reports, reactions, serious outcomes | ✅ Always free |
openFDA Drug Labeling | Prescribing info, interactions, contraindications | ✅ Always free |
openFDA Drugs@FDA | Approval history, submissions, orphan designations | ✅ Always free |
openFDA Enforcement | Recalls, market withdrawals, safety alerts | ✅ Always free |
RxNorm / RxNav | Drug identifiers, RxCUI, ATC classification | ✅ Always free |
PubMed / NCBI | Scientific publications, abstracts, PMIDs | ✅ Always free |
EMA Medicines Register | EU authorization status, ATC, orphan/biosimilar flags | ✅ Always free |
Open Targets (EMBL-EBI) | Drug-target mechanisms of action, clinical development stage | ✅ Always free |
DailyMed (NIH/NLM) | Drug labels (OTC + Rx), structured product labeling | ✅ Always free |
MyChem.info | US FDA Orphan Drug Designations | ✅ Always free |
All sources are publicly funded and freely accessible. No API keys, subscriptions, or licensing required.
Verifiable Outputs
Every data point includes a direct link to its primary source:
Output Field | Example Source URL |
NCT ID |
|
FDA Application Number |
|
PMID |
|
FDA Product NDC |
|
DailyMed SPL Set ID |
|
No calculated fields. No predictions. No estimates. The tool is an aggregator, not an oracle — it brings primary-source data into an AI agent's context so the LLM can apply reasoning, not so the server can produce answers.
Testing & Quality
Check | Status |
Unit tests | ✅ 61 passing (pytest) |
CI/CD | ✅ Multi-Python matrix (3.10–3.13), Docker build, PyPI publish |
Linting | ✅ Ruff (zero warnings) |
Formatting | ✅ Black-compatible |
Code coverage | Tracked in CI |
Regulatory Intelligence
Beyond drug-level approvals, this project provides multi-jurisdiction regulatory framework intelligence for pipeline analysis. See docs/local-regulation-2026.md for a comprehensive reference covering 7 jurisdictions:
🇺🇸 US IRA — Medicare Part D price negotiation (Sep 2026), Small Molecule Penalty (7 yr vs 13 yr)
🇩🇪 Germany AMNOG — Benefit assessment, 2026 reform with fixed effect-size thresholds
🇫🇷 France HAS/CEPS — SMR/ASMR ratings, 400–600 day access timelines
🇮🇹 Italy AIFA — 21 regional formularies, payback mechanisms
🇬🇧 UK MHRA/NICE — Post-Brexit ILAP pathway, £/QALY thresholds
🇯🇵 Japan PMDA/NHI — Sakigake designation, biennial price revision
🇨🇳 China NMPA/NRDL — Annual –61% price negotiation
Example Agent Queries
"What's in the pipeline for GLP-1 agonists?" →
drug_pipeline(drug_name="semaglutide")→ ATC class, FDA status, clinical trials, publications
"Which companies have Phase 3 trials for non-small cell lung cancer?" →
search_trials(condition="non-small cell lung cancer", phase="PHASE3", status="RECRUITING")
"Is pembrolizumab approved in the EU vs US?" →
get_approvals(drug_name="Keytruda")+get_eu_approvals(drug_name="Keytruda")
"What are the safety signals for semaglutide?" →
get_safety_data(drug_name="semaglutide")+detect_safety_signals(drug_name="semaglutide")
"What does the label say for Keytruda?" →
get_drug_label(drug_name="Keytruda")→ indications, boxed warnings, contraindications, dosing
"When does the patent for Keytruda expire?" →
get_patent_expiry(drug_name="Keytruda")→ exclusivity information
"What drugs are approved for non-small cell lung cancer in the EU?" →
approved_for_condition(condition="non-small cell lung cancer")
Client Integration
Claude Desktop
{
"mcpServers": {
"drug-pipeline": {
"command": "python3",
"args": ["-m", "drug_pipeline.server"]
}
}
}Cursor / VS Code
{
"mcpServers": {
"drug-pipeline": {
"command": "uvx",
"args": ["drug-pipeline-mcp"]
}
}
}HTTP / SSE (Remote)
pip install drug-pipeline-mcp[http]
drug-pipeline --http --port 8081Connect at http://your-server:8081/sse.
Smithery
One-click deploy. No config needed.
🤝 Getting Help & Contributing
Channel | Purpose |
Questions before coding, feature ideas, community chat | |
Bug reports, confirmed feature requests | |
Development setup, code style, testing |
New contributors welcome. See CONTRIBUTING.md for setup instructions.
License
MIT
This server cannot be installed
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DasClown/drug-pipeline-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server