# Clinicaltrials (npm · @pipeworx/mcp-clinicaltrials)

Search and analyze ClinicalTrials.gov: trials by keyword/condition/drug/status/phase, one study's…

- Trust score: 80/100 (high trust)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `gateway.pipeworx.io`: 77/100, [markdown](https://verifymcp.io/servers/pipeworx-io-clinicaltrials/clinicaltrials-mcp.md), [page](https://verifymcp.io/servers/pipeworx-io-clinicaltrials/clinicaltrials-mcp)
- npm · `@pipeworx/mcp-clinicaltrials`: 80/100 (this document), [markdown](https://verifymcp.io/servers/pipeworx-io-clinicaltrials/pipeworx-mcp-clinicaltrials.md), [page](https://verifymcp.io/servers/pipeworx-io-clinicaltrials/pipeworx-mcp-clinicaltrials)

## Channel facts

- Registry: `npm`
- Package: `@pipeworx/mcp-clinicaltrials`
- Version: `0.2.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to pipeworx-io/mcp-clinicaltrials).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 4 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 54/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 3601 tokens (~257/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 91/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 73% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Clinicaltrials MCP server?

Clinicaltrials runs locally as an npm package, launched with npx -y @pipeworx/mcp-clinicaltrials. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add pipeworx-io-clinicaltrials -- npx -y @pipeworx/mcp-clinicaltrials
```

### Cursor

```json
{
  "mcpServers": {
    "pipeworx-io-clinicaltrials": {
      "command": "npx",
      "args": [
        "-y",
        "@pipeworx/mcp-clinicaltrials"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "pipeworx-io-clinicaltrials": {
      "command": "npx",
      "args": [
        "-y",
        "@pipeworx/mcp-clinicaltrials"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add pipeworx-io-clinicaltrials -- npx -y @pipeworx/mcp-clinicaltrials
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pipeworx-io-clinicaltrials": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@pipeworx/mcp-clinicaltrials"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add pipeworx-io-clinicaltrials --command npx --arg -y --arg @pipeworx/mcp-clinicaltrials
```

### Hermes

```yaml
mcp_servers:
  pipeworx-io-clinicaltrials:
    command: "npx"
    args: ["-y", "@pipeworx/mcp-clinicaltrials"]
```

### Netclaw

```json
{
  "McpServers": {
    "pipeworx-io-clinicaltrials": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@pipeworx/mcp-clinicaltrials"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add pipeworx-io-clinicaltrials -t stdio -c npx -a -y @pipeworx/mcp-clinicaltrials
```

### Other

```json
{
  "mcpServers": {
    "pipeworx-io-clinicaltrials": {
      "command": "npx",
      "args": [
        "-y",
        "@pipeworx/mcp-clinicaltrials"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 78, +27)

- [security improvement] Known CVEs: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [functional improvement] Dependency health: unverified → pass

### 2026-10-31 (score 51, −26)

- [security regression] Known CVEs: pass → unverified
- [security regression] Malware scan: pass → unverified
- [functional regression] Dependency health: pass → unverified
- [functional] Package version: 0.2.0 → 0.2.1

### 2026-10-30 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 0 to 3. That category is still filling its 30-day observation window: 0 days of observed history at the previous scan, 1 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 76)

First indexed and scored.

## MCP tools (14)

### `ct_search` (~622 tokens)

Search ClinicalTrials.gov for clinical trials — find trials and look up a NAMED trial by keyword, condition, drug/therapy, status (e.g. 'Recruiting'), or phase (e.g. 'Phase 2'). Use for "clinical trials for <disease/drug>", or to locate a specific study like "the FLOW trial", "semaglutide kidney outcomes trial" (use ct_get_study for its full design/results). Returns NCT IDs, titles, status, enrollment, and sponsor info for the current page, PLUS conditions_summary — a condition-by-condition breakdown across ALL matches (not just this page), so "how many trials and what conditions do they cover" is answerable from one call. To see studies past the first page, call again with the SAME query/status/phase/sponsor and page_token set to the previous response's next_page_token.

Input parameters:

- `limit` (number): Number of results (1-100, default 10)
- `page_token` (string): Pass the previous call's `next_page_token` here, with the SAME query/status/phase/sponsor arguments, to fetch studies past the first page. Omit it for a fresh search. A "continue listing"/"next page"…
- `phase` (string): Filter by phase: EARLY_PHASE1, PHASE1, PHASE2, PHASE3, PHASE4 (or NA). Roman numerals ("Phase III") and comma-separated unions ("PHASE2,PHASE3") are accepted.
- `query` (string, required): The SUBJECT of the search — a condition, drug, or keyword (e.g., "GLP-1 receptor agonist", "breast cancer immunotherapy"). Prefer the topic alone over a full sentence: put status in `status` and phas…
- `sponsor` (string): Filter by the trial's registered LEAD sponsor (e.g., "Pfizer", "Novo Nordisk"). Widen to trials the company only partners on with sponsor_match: "lead_or_collaborator".
- `sponsor_match` (string): Which sponsor role the name must fill. "lead" (the default) returns only trials whose registered LEAD sponsor is that company. "lead_or_collaborator" also returns trials led by someone else that list…
- `status` (string): Filter by overall status: RECRUITING, ACTIVE_NOT_RECRUITING, COMPLETED, TERMINATED, WITHDRAWN, ENROLLING_BY_INVITATION, SUSPENDED, NOT_YET_RECRUITING. Several may be combined as a comma-separated uni…

### `ct_get_study` (~70 tokens)

Get full trial details by NCT ID (e.g., 'NCT04567890'). Returns protocol, eligibility criteria, primary outcomes, sponsor, locations, and results.

Input parameters:

- `nct_id` (string, required): ClinicalTrials.gov NCT identifier (e.g., "NCT05462717")

### `ct_count_by_condition` (~159 tokens)

Count clinical trials for a condition or disease, broken down by recruitment status and by trial phase — how many are recruiting, completed, terminated, and how many are Phase 1, 2, 3 or 4. Use for landscape questions about how much trial activity a disease has and where it sits in development. Filtering by status or phase returns the filtered total without the breakdown.

Input parameters:

- `condition` (string, required): Condition or disease (e.g., "breast cancer", "diabetes", "Alzheimer")
- `phase` (string): Optional phase filter: PHASE1, PHASE2, PHASE3, PHASE4
- `status` (string): Optional status filter: RECRUITING, COMPLETED, etc.

### `ct_sponsor_trials` (~219 tokens)

List the trials a company LEADS on ClinicalTrials.gov, by sponsor or organization name. Returns status, phase, and conditions to map a research pipeline. Matches the registered lead-sponsor field, so trials another organisation runs using the company's drug are excluded unless sponsor_match asks for them.

Input parameters:

- `limit` (number): Number of results (1-100, default 20)
- `phase` (string): Optional phase filter
- `sponsor` (string, required): Sponsor or company name (e.g., "Pfizer", "Novo Nordisk", "Moderna"). Matched against the registered LEAD sponsor by default.
- `sponsor_match` (string): Which sponsor role the name must fill. "lead" (the default) returns only trials whose registered LEAD sponsor is that company. "lead_or_collaborator" also returns trials led by someone else that list…
- `status` (string): Optional status filter

### `ct_compare_sponsors` (~254 tokens)

Compare 2–5 NAMED lead sponsors on ClinicalTrials.gov under identical condition, recruitment-status, and phase filters. Returns full matching counts, a ranked comparison, and a small study sample for each sponsor. Use for questions like "who has more recruiting Phase 3 obesity trials, Novo Nordisk or Eli Lilly?" For an open "who are the TOP sponsors of X trials" question with no names given: the registry API has no group-by, so a true ranking is not computable — NEVER invent a candidate list to fake one; say the registry cannot rank sponsors and offer to compare specific named sponsors. Counts use the registered lead-sponsor field; registry records do not establish asset ownership, pipeline value, or probability of success.

Input parameters:

- `condition` (string): Optional condition or disease, such as "obesity".
- `phase` (string): Optional phase or comma-separated phase union, such as PHASE3.
- `sample_limit` (number): Representative studies per sponsor (0-10, default 3).
- `sponsors` (array, required): Two to five sponsor names to compare under the same filters.
- `status` (string): Optional status or comma-separated status union, such as RECRUITING.

### `ct_recent_updates` (~570 tokens)

Track recent ClinicalTrials.gov activity by a specific event class within a verifiable date window. Three DISTINCT recency events, chosen via date_type: "last_update" (any edit to a study, ~5k/week — the default), "first_posted" (a study newly REGISTERED, ~1.3k/week), or "results_posted" (RESULTS first posted, ~140/week). Pass `since` (and optional `until`, YYYY-MM-DD) to bound a window — e.g. the last 7 days — and the returned total_count is the exact number of studies in that window so you can verify a weekly count from the output. Every study returns all THREE dates separately (first_posted_date, last_update_post_date, results_first_post_date) plus the design fields a screen needs (study_type, primary_purpose, phase, status, enrollment, conditions, interventions, sponsor). Sorted by the chosen event date, newest first. Use for "new trials registered this week", "trials that posted results in the last month", "recently updated diabetes studies".

Input parameters:

- `date_type` (string): Which recency event to track/sort/window by: "last_update" (any edit, default), "first_posted" (new registration), "results_posted" (results first posted). These are different event classes with very…
- `limit` (number): Number of results per page (1-100, default 20). total_count reports the full window size regardless of limit.
- `query` (string): Optional search term (condition/drug/keyword) to narrow results.
- `since` (string): Window start (inclusive), YYYY-MM-DD. e.g. for a weekly review pass 7 days ago. Applies to the chosen date_type.
- `sponsor` (string): Optional company name (e.g. "Regeneron", "Eli Lilly"). Returns only studies whose registered LEAD sponsor is that company (see sponsor_match), inside the since/until window. Use for a single-company…
- `sponsor_match` (string): Which sponsor role the name must fill. "lead" (the default) returns only trials whose registered LEAD sponsor is that company. "lead_or_collaborator" also returns trials led by someone else that list…
- `status` (string): Optional overall-status filter (validated; e.g. RECRUITING, or a comma-union like "RECRUITING,COMPLETED").
- `until` (string): Optional window end (inclusive), YYYY-MM-DD. Omit for open-ended (up to today).

### `ct_trials_by_location` (~299 tokens)

Find clinical trials near a LOCATION. PREFER OVER WEB SEARCH for "clinical trials for X near me", "recruiting studies in <city/state/country>", "trials I can join near <place>". Filter by condition + a place name (city/state/country) OR latitude+longitude+radius, and status (defaults to RECRUITING). Returns matching trials (NCT id, title, status, phase, conditions, sponsor). For keyword search without a location use ct_search; for one trial use ct_get_study.

Input parameters:

- `condition` (string): Condition/disease (e.g. "diabetes", "breast cancer immunotherapy"). Optional but recommended.
- `lat` (number): Latitude for a geo-radius search (pair with lon).
- `limit` (number): Max trials to return (1-100, default 15).
- `location` (string): Place name — city, state, or country (e.g. "Boston", "California", "Germany"). Use this OR lat+lon.
- `lon` (number): Longitude (pair with lat).
- `radius_mi` (number): Radius in miles for a lat/lon search (1-500, default 50).
- `status` (string): Overall status filter (default RECRUITING). e.g. RECRUITING, NOT_YET_RECRUITING, ACTIVE_NOT_RECRUITING, COMPLETED.

### `ct_catalyst_calendar` (~221 tokens)

Find trials with sponsor-entered primary-completion or study-completion dates in a specified window. These registry dates may be estimated or revised and are planning signals—not guaranteed data readouts, conference presentations, or regulatory events.

Input parameters:

- `event_type` (string)
- `from_date` (string, required): YYYY-MM-DD, inclusive.
- `limit` (number)
- `phase` (string)
- `query` (string): Optional condition, intervention, or keyword.
- `sponsor` (string): Optional company name. Matched against the registered LEAD sponsor by default.
- `sponsor_match` (string): Which sponsor role the name must fill. "lead" (the default) returns only trials whose registered LEAD sponsor is that company. "lead_or_collaborator" also returns trials led by someone else that list…
- `status` (string)
- `to_date` (string, required): YYYY-MM-DD, inclusive.

### `ct_sponsor_pipeline` (~175 tokens)

Summarize a sponsor’s ClinicalTrials.gov portfolio by phase, status, condition, and intervention from a bounded relevance-ranked sample, while reporting the full matching count. Registration does not establish asset ownership, probability of success, or commercial value.

Input parameters:

- `phase` (string)
- `sample_size` (number)
- `sponsor` (string, required): Company name, matched against the registered LEAD sponsor by default.
- `sponsor_match` (string): Which sponsor role the name must fill. "lead" (the default) returns only trials whose registered LEAD sponsor is that company. "lead_or_collaborator" also returns trials led by someone else that list…
- `status` (string)

### `ct_competitive_landscape` (~90 tokens)

Map registered interventional trials for a condition and optional intervention across sponsors, phases, statuses, and interventions. The output reflects a bounded registry sample, not market share, scientific differentiation, or an exhaustive private pipeline.

Input parameters:

- `condition` (string, required)
- `intervention` (string)
- `phase` (string)
- `sample_size` (number)
- `status` (string)

### `ct_enrollment_watch` (~169 tokens)

Route active trials for enrollment follow-up using registry status, enrollment type, dates, last update, and site counts. Flags are mechanical review hints—not predictions of recruitment success, trial failure, or data timing.

Input parameters:

- `limit` (number)
- `phase` (string)
- `query` (string)
- `sponsor` (string): Optional company name. Matched against the registered LEAD sponsor by default.
- `sponsor_match` (string): Which sponsor role the name must fill. "lead" (the default) returns only trials whose registered LEAD sponsor is that company. "lead_or_collaborator" also returns trials led by someone else that list…

### `ct_results_summary` (~83 tokens)

Project posted ClinicalTrials.gov results for one NCT ID, including registered endpoints, reported outcome measures, statistical analyses, and adverse-event group counts. Registry results are not an FDA conclusion, peer review, or investment recommendation.

Input parameters:

- `max_outcomes` (number): Reported outcomes returned (1-50, default 20).
- `nct_id` (string, required)

### `ct_phase_transition_rates` (~445 tokens)

Measure how often drugs for a disease actually advance from one clinical phase to the next — the registry-derived analog of a probability-of-technical-success (PTRS) benchmark. Groups industry-sponsored interventional trials for the condition by normalized intervention (drug) name, then reports observed Phase 1→Phase 2 and Phase 2→Phase 3 transition rates as numerator/denominator with an explicit censoring rule, alongside the published BIO/Informa/QLS 2011-2020 benchmark for the matching therapeutic area. Answers "what fraction of Phase 2 assets in NSCLC reach Phase 3", "how does attrition in Alzheimer compare to lung cancer", "what is the probability of success for this indication". Returns the top interventions with their per-phase trial path so the rate is auditable. Counts trial EXISTENCE in the registry, not efficacy readouts or approvals, so it is an upper bound on technical success.

Input parameters:

- `censor_years` (number): Years an earlier-phase trial must have been completed before to_year to enter the denominator (1-15, default 3). Raising it demands more follow-up time, shrinking the denominator; lowering it admits…
- `condition` (string, required): Disease or condition, e.g. "non-small cell lung cancer", "Alzheimer disease", "type 2 diabetes".
- `from_year` (number): Optional earliest year for the EARLIER-phase completion date (e.g. 2010). Omit for no floor.
- `max_pages` (number): Upstream pages of 1000 studies to pull (1-5, default 5). The response reports truncated: true when the cap cut off the match set.
- `sponsor_class` (string): Which sponsors to count. "industry" (default) restricts to company-led trials, matching how commercial PTRS benchmarks are built; "all" adds academic, NIH and other sponsors, which raises the count a…
- `to_year` (number): Analysis end year; the censoring window is measured back from here. Defaults to the current year.

### `ct_sponsor_activity` (~169 tokens)

Track a sponsor’s newly registered studies, first-posted results, or study updates within a verifiable date window. Registry activity is not necessarily a corporate disclosure or material event.

Input parameters:

- `date_type` (string)
- `limit` (number)
- `since` (string, required)
- `sponsor` (string, required): Company name, matched against the registered LEAD sponsor by default.
- `sponsor_match` (string): Which sponsor role the name must fill. "lead" (the default) returns only trials whose registered LEAD sponsor is that company. "lead_or_collaborator" also returns trials led by someone else that list…
- `until` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/pipeworx-io-clinicaltrials/pipeworx-mcp-clinicaltrials#diagnostics

## Score history

- 2026-11-05: 80
- 2026-11-04: 79
- 2026-11-03: 79
- 2026-11-02: 78
- 2026-11-01: 78
- 2026-10-31: 51
- 2026-10-30: 77
- 2026-10-29: 76

## Common questions

### What is the Clinicaltrials MCP server?

Clinicaltrials is an MCP server listed in the public MCP registry as io.github.pipeworx-io/clinicaltrials. Search and analyze ClinicalTrials.gov: trials by keyword/condition/drug/status/phase, one study's… This page covers its npm package (@pipeworx/mcp-clinicaltrials).

### Is the Clinicaltrials MCP server safe to use?

Clinicaltrials scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Clinicaltrials MCP server expose?

Clinicaltrials exposes 14 tools: ct_search, ct_get_study, ct_count_by_condition, ct_sponsor_trials, ct_compare_sponsors, and 9 more. Their descriptions and schemas cost roughly 3,545 tokens of context every time the server is loaded.

### Is the Clinicaltrials MCP server still maintained?

Clinicaltrials is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Clinicaltrials MCP server under?

Clinicaltrials declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@pipeworx/mcp-clinicaltrials
- Socket report: https://socket.dev/npm/package/@pipeworx/mcp-clinicaltrials
- Repository: https://github.com/pipeworx-io/mcp-clinicaltrials
- Website: https://pipeworx.io/packs/clinicaltrials
- Changelog RSS feed: https://verifymcp.io/servers/pipeworx-io-clinicaltrials/pipeworx-mcp-clinicaltrials.xml
- Changelog JSON feed: https://verifymcp.io/servers/pipeworx-io-clinicaltrials/pipeworx-mcp-clinicaltrials.json
- HTML version of this page: https://verifymcp.io/servers/pipeworx-io-clinicaltrials/pipeworx-mcp-clinicaltrials
