Clinical evidence synthesis MCP server — ClinicalTrials.gov, PubMed, and openFDA in one call
Project description
🧬 Helix
Clinical evidence synthesis engine — free, no API key, production-grade.
Give any AI model — or any HTTP client — structured, scored access to the world's three largest free health databases. In a single call.
| 400,000+ Clinical Trials | 35M+ PubMed Papers | FDA Drug Labels | < 4s Response |
|---|---|---|---|
| ClinicalTrials.gov live | Full abstracts via efetch | openFDA drug information | All 3 databases in parallel |
See It
curl -X POST http://localhost:8000/synthesize \
-H "Content-Type: application/json" \
-d '{"condition": "T2D", "age": 45, "sex": "MALE"}'
{
"clinicalInsight": {
"condition": "Type 2 Diabetes",
"expanded_from": "T2D",
"total_trials": 16,
"top_score": 94.0,
"average_score": 77.66
},
"trialProfiles": [
{
"id": "NCT05099770",
"title": "PROACT: A Study of REACT in Subjects With Type 2 Diabetes",
"phase": ["PHASE3"],
"final_score": 94.0,
"score_vector": {
"condition_match": 1.0,
"eligibility_fit": 0.8,
"evidence_support": 1.0,
"trial_phase_maturity": 1.0
},
"risk_flags": []
}
],
"excludedTrials": [
{
"id": "NCT00000042",
"title": "Pediatric Glucose Management Study",
"exclusion_reason": "age 45 above max 18"
}
]
}
Every trial gets a score vector showing exactly why it ranked where it did.
Ineligible trials appear in excludedTrials with a precise rejection reason — they never silently disappear.
Install
pip install helix-mcp
REST API
helix-api
# → http://localhost:8000/docs
MCP Server (Claude Desktop)
Add to claude_desktop_config.json:
{
"mcpServers": {
"helix": { "command": "helix" }
}
}
Then ask Claude: "Find clinical trials for a 52-year-old female with NSCLC in London"
Docker
docker compose up
How It Works
When you call synthesize_evidence, Helix:
- Expands medical abbreviations —
T2D→Type 2 Diabetes,NSCLC→Non-Small Cell Lung Cancer(70+ mappings) - Resolves conditions to authoritative NLM MeSH terms before querying PubMed — the same vocabulary PubMed uses internally
- Queries ClinicalTrials.gov, PubMed, and openFDA concurrently
- Scores every trial using a BM25 relevance index built across the full trial corpus
- Returns ranked profiles with a four-component
score_vectorand anexplainability_vectorshowing the raw numbers behind each score
Condition input
↓
synonym expansion → MeSH resolution
↓
ClinicalTrials.gov ──┐
PubMed (MeSH query) ─┼── parallel asyncio.gather
openFDA ─────────────┘
↓
BM25 corpus scoring across all trials
↓
hard eligibility gate (age + sex)
↓
ranked profiles + excluded trials + clinical insight
Scoring Formula
final_score = 100 × (
0.35 × condition_match # BM25 relevance: condition vs trial corpus
+ 0.30 × eligibility_fit # age-window centrality (1.0=center, 0.5=edge)
+ 0.20 × evidence_support # fraction of PubMed papers supporting condition
+ 0.15 × trial_phase_maturity # Phase 3/4=1.0, Phase 2=0.6, Phase 1=0.3
)
Tools
| Tool | Description |
|---|---|
synthesize_evidence |
Full cross-database synthesis — scored, ranked, explained |
find_trials |
Search ClinicalTrials.gov with condition, location, sex, phase |
search_papers |
Search PubMed with MeSH-resolved queries, full abstracts |
lookup_drug |
FDA drug information by brand or generic name |
match_eligibility |
Match a patient profile to trials ranked by eligibility fit |
health_check |
Live latency check against all three upstream APIs |
All tools accept medical abbreviations. All tools are cached. All tools never raise.
Data Sources
| Source | Access |
|---|---|
| ClinicalTrials.gov | Free, no key |
| PubMed E-utilities | Free, email optional |
| openFDA | Free, no key |
| NLM MeSH API | Free, no key |
Development
git clone https://github.com/Al1Abdullah/Helix.git
cd Helix
pip install -e ".[dev]"
pytest
License
MIT — see LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file helix_mcp-1.5.0.tar.gz.
File metadata
- Download URL: helix_mcp-1.5.0.tar.gz
- Upload date:
- Size: 29.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0835c61063aa42b676049828900304a552d1bb7ee95c159fcdd8d7ab51b4bc1
|
|
| MD5 |
ee06cda68f48eaf6e031ffe00b6de815
|
|
| BLAKE2b-256 |
e4185ead7967a5d1fbaa2517eb02dcc76274e472c8e7f30a8aa92e43438f9431
|
File details
Details for the file helix_mcp-1.5.0-py3-none-any.whl.
File metadata
- Download URL: helix_mcp-1.5.0-py3-none-any.whl
- Upload date:
- Size: 28.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
742639b4501abe3e8ea9b7589011eb8e6a4c2b97e003c7846432105bea99aeab
|
|
| MD5 |
27bf9f83c878b7de6d25705cc4e40e7f
|
|
| BLAKE2b-256 |
2681ddfb8732ad9ad9b1f95bc8978716749f1242074d55ebd0b0adf17b82a756
|