Labsco
MCP SERVER

ClinicalTrials.gov Trial Search

by cyanheads

Search ClinicalTrials.gov, read a study's full protocol and results, and match a patient's profile to recruiting trials — no account needed.

Biomedical: Genomics & Clinical DataVerified
Summary
It tells you the field names before you build the query.

The discovery tools are what keep a search from failing quietly: clinicaltrials_get_field_definitions resolves the exact PascalCase identifiers the API accepts, and clinicaltrials_get_field_values shows which values actually exist with counts, so a filter is built from real options rather than guesses. The summary mode on results matters too — a completed study's full results can run ~200KB, and here you can ask for the ~5KB version first.

What it is

A server over the public ClinicalTrials.gov v2 API: 7 tools for searching studies, reading full records and results, discovering the data model, and matching patients to eligible trials, plus a resource and a prompt. Runs over stdio or Streamable HTTP.

What you get
  • clinicaltrials_search_studies runs full-text and field-specific queries with status, phase and geographic filters, pagination and sorting, returning a compact per-study index by default and full-fidelity leaves when you name the fields
  • clinicaltrials_get_study_record fetches one study by NCT ID in full — protocol, eligibility, outcomes, arms, interventions, contacts and locations — with locationLimit, outcomeLimit and referenceLimit to trim the parts you do not need
  • clinicaltrials_get_study_count returns just the total matching a query, fast enough to call repeatedly and build breakdowns by phase, status or recruiting state
  • clinicaltrials_get_field_values discovers the valid values for a field with counts per value, and clinicaltrials_get_field_definitions resolves the canonical PascalCase field names (OverallStatus, EnrollmentCount, LeadSponsorName) that the fields, advancedFilter and sort parameters accept
  • clinicaltrials_get_study_results extracts outcome measures with statistics, adverse events, participant flow and baseline data from completed studies, with a summary mode that cuts a ~200KB payload to ~5KB and outcomeLimit / adverseEventLimit to cap full mode
  • clinicaltrials_find_eligible matches age, sex, conditions and location against recruiting trials, re-ranking so studies whose own condition matches the request rise to the top, with contact information and recruiting locations
Requirements

Nothing to sign up for — ClinicalTrials.gov is public and MCP_AUTH_MODE defaults to none. Run it with npx clinicaltrialsgov-mcp-server over stdio, from the ghcr.io Docker image, or against the author's public instance at https://clinicaltrials.caseyjhand.com/mcp; building from source wants Bun. CT_API_BASE_URL, CT_REQUEST_TIMEOUT_MS (default 30000) and CT_MAX_PAGE_SIZE (default 200) tune the client if you need to.

Setup effort

One command — bunx clinicaltrialsgov-mcp-server@latest