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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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