Skip to main content

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.


CI Python 3.11+ License: MIT MCP Compatible PyPI Version HuggingFace


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:

  1. Expands medical abbreviations — T2DType 2 Diabetes, NSCLCNon-Small Cell Lung Cancer (70+ mappings)
  2. Resolves conditions to authoritative NLM MeSH terms before querying PubMed — the same vocabulary PubMed uses internally
  3. Queries ClinicalTrials.gov, PubMed, and openFDA concurrently
  4. Scores every trial using a BM25 relevance index built across the full trial corpus
  5. Returns ranked profiles with a four-component score_vector and an explainability_vector showing 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

helix_mcp-1.5.0.tar.gz (29.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

helix_mcp-1.5.0-py3-none-any.whl (28.9 kB view details)

Uploaded Python 3

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

Hashes for helix_mcp-1.5.0.tar.gz
Algorithm Hash digest
SHA256 a0835c61063aa42b676049828900304a552d1bb7ee95c159fcdd8d7ab51b4bc1
MD5 ee06cda68f48eaf6e031ffe00b6de815
BLAKE2b-256 e4185ead7967a5d1fbaa2517eb02dcc76274e472c8e7f30a8aa92e43438f9431

See more details on using hashes here.

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

Hashes for helix_mcp-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 742639b4501abe3e8ea9b7589011eb8e6a4c2b97e003c7846432105bea99aeab
MD5 27bf9f83c878b7de6d25705cc4e40e7f
BLAKE2b-256 2681ddfb8732ad9ad9b1f95bc8978716749f1242074d55ebd0b0adf17b82a756

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page