usefulapi

ClinicalTrials.gov MCP server. Search and read ClinicalTrials.gov studies, sites and outcomes.

Claude

  1. Open Settings → Connectors → Add custom connector
  2. Paste this URL:
    https://clinicaltrialsgov.usefulapi.io/mcp
  3. Authenticate with ClinicalTrials.gov when prompted

Cursor · VS Code · Windsurf · Cline

Add to your MCP config, then reload & authorize:

{
  "mcpServers": {
    "clinicaltrialsgov": {
      "url": "https://clinicaltrialsgov.usefulapi.io/mcp"
    }
  }
}
live7 toolsFree 100 tool calls / monthPro $9/mo · $90/yr

Tools 7

ToolTypeWhat it does
search_studiesread
Search clinical trials (ClinicalTrials.gov)
Search the ClinicalTrials.gov v2 study registry. Provide any combination of query terms (condition, intervention, title, location, sponsor, general term) — multiple query.* terms are ANDed together — plus optional filters (status, geo, advanced Essie expression, explicit NCT ids). Returns { totalCount?, studies: [...], nextPageToken? }. Use `fields` to trim the response to specific fields/modules, `sort` to order (e.g. '@relevance', 'LastUpdatePostDate:desc', 'EnrollmentCount:desc'), and pageSize/pageToken to page. GET /studies.
get_studyread
Get a clinical trial by NCT ID
Fetch a single ClinicalTrials.gov study by its NCT id (format NCT######## — the letters 'NCT' followed by digits, e.g. NCT00841061). Returns the full study object { protocolSection, derivedSection?, hasResults? }. Use `fields` to return only specific fields/modules. GET /studies/{nctId}.
count_studiesread
Count matching clinical trials
Return only the total NUMBER of studies matching a query, without fetching any records. Accepts the same query terms and filters as search_studies (term, condition, intervention, title, location, sponsor, status, geoFilter, advanced). Returns { totalCount }. GET /studies with countTotal=true and pageSize=1.
list_field_valuesread
List value statistics for study fields
Discover valid values / enums for one or more study fields. Returns per-field value statistics — for each field: its type, unique-value count and topValues [{value, studiesCount}]. Great for finding valid enum values (e.g. OverallStatus, Phase) before building a filter. GET /stats/field/values.
get_study_metadataread
Get the study data-model (field tree)
Return the ClinicalTrials.gov study data model as a tree of module nodes (each with name/title/type/children). Use this to explore what fields/modules exist and their nesting, to build `fields` selections or `sort`/filter expressions. GET /studies/metadata.
get_studies_statsread
Get study size statistics
Return overall study-size statistics across the registry: { totalStudies, averageSizeBytes, percentiles, ranges, largestStudies }. Useful for understanding data volume. GET /stats/size.
get_api_versionread
Get the ClinicalTrials.gov API version
Return the ClinicalTrials.gov API version and the timestamp of the underlying data snapshot: { apiVersion, dataTimestamp }. GET /version.

Pricing

PlanPriceLimit
Free$0100 tool calls / month
Pro$9/mo · $90/yrUnlimited

This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.