Phase 2/3 clinical trial design via gsDesign / gsDesign2: sample size, GS boundaries, multiplicity
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A Claude Code plugin and MCP server for end-to-end clinical trial design.
clinical-trial-design helps biostatisticians and clinical trialists design Phase 2 and Phase 3 confirmatory studies through a conversational interface, backed by validated R packages (gsDesign, gsDesign2, graphicalMCP).
v0.0.13 β pre-beta. Nine MCP tools across single-primary endpoint design (binary, continuous, time-to-event under PH and four NPH frameworks), multi-hypothesis design (co-primary, multi-population, graphical multiplicity / Maurer-Bretz), Monte-Carlo verification, and Word/PDF reporting. Reasoning-chain schema with sponsor-confidential redaction. Operational kernel solves accrual β duration β N, plus optional
max_n/max_durationfeasibility warnings. 288/288 R tests, 18/18 MCP smoke. Published to npm (clinical-trial-design) and the official MCP registry (io.github.wei-ai-lab/clinical-trial-design). Full change history in CHANGELOG.md; API contract in API_STABILITY.md.
clinical-trial-design has four layers:
| Layer | Role |
|---|---|
R package (r-package/ClinicalTrialDesign) | Pure R statistical computation engine. Wraps and extends established packages (gsDesign, gsDesign2, graphicalMCP, simtrial) behind a unified result schema. |
MCP server (mcp-server/) | Exposes the R functions as typed tools over the Model Context Protocol so Claude Code β or any MCP client β can call them. |
Skill (skills/clinical-trial-design/) | Domain-expert prompt. Translates a user's design brief into the right tool calls and interprets results in clinical-trial terms; includes a 9-step Phase 3 orchestration workflow with waypoints. |
Benchmark corpus (benchmarks/) | 176 curated public-trial designs across 21 family directories. Each case is human-readable Markdown plus machine-readable YAML with expected outputs and tolerances. |
Plus an eval harness under eval/ (11 reproducible scenarios Γ six scoring dimensions Γ multi-vendor Claude family) and an examples gallery under examples/ (5 published trials reproduced end-to-end).
| Family | Status |
|---|---|
| Fixed-sample binary | β super / NI / equivalence |
| Fixed-sample continuous | β super / NI / equivalence |
| Fixed-sample TTE β PH log-rank | β super / NI |
| Fixed-sample TTE β NPH MaxCombo / RMST / milestone | β superiority |
| Group-sequential binary / continuous | β
super / NI; futility via test.type |
| Group-sequential TTE β PH | β
super / NI; events via Schoenfeld + OBF inflation by default (regulatory-defensible; events_calc selector) |
| Group-sequential TTE β NPH (MaxCombo / WLR / AHR) | β superiority |
| Multi-hypothesis β co-primary endpoints | β fixed-sequence / alpha-split / Bonferroni |
| Multi-hypothesis β multi-population (subgroup + ITT) | β nested or disjoint relations |
| Multi-hypothesis β graphical (Maurer-Bretz) | β initial weights + transition matrix + Rule-3 validator |
| Adaptive (SSR, enrichment, selection) | β³ corpus has cases; wrappers are roadmap |
| MAMS / platform / basket / umbrella | β³ corpus has cases; wrappers are roadmap |
| Layer | State |
|---|---|
| R package | β 288/288 testthat |
| MCP server | β 9 tools over stdio, esbuild bundle, 18/18 smoke |
| Skill | β 9-step Phase 3 orchestration workflow + waypoints |
| Benchmark corpus | β 176 curated public-trial cases / 21 families |
| Plugin manifest | β
.claude-plugin/plugin.json + marketplace.json |
| npm package | β
clinical-trial-design@0.0.13 published 2026-04-29 |
| Official MCP registry | β
io.github.wei-ai-lab/clinical-trial-design |
| CI release-gate | β
.github/workflows/release-gate.yml (R tests + R CMD check + MCP build/smoke + scenario validation) |
| LLM benchmark harness | β
11 scenarios Γ 6-dimension rubric (eval/) |
| Pre-beta hand-off | β items tracked in BETA_HANDOFF.md |
Nine MCP tools β three single-primary design tools, three multi-hypothesis design tools, three meta tools. Same unified result schema across families.
| Tool | Endpoint | Selectors | R backend |
|---|---|---|---|
design_binary | event / no-event | design_class β {"fixed", "group-sequential"} | gsDesign::nBinomial, gsDesign::gsDesign |
design_continuous | mean difference | design_class β {"fixed", "group-sequential"} | gsDesign::nNormal, gsDesign::gsDesign |
design_survival | time-to-event | design_class Γ model β {"ph", "maxcombo", "rmst", "milestone", "wlr", "ahr"} | gsDesign::nSurv/gsSurv (PH); gsDesign2::fixed_design_* and gs_design_* (NPH) |
All three accept comparison β {"superiority", "non-inferiority", "equivalence"} (equivalence on fixed-sample binary / continuous only), alpha, power, sided, allocation_ratio, GS parameters (k, timing, sfu, sfl, test.type), an optional operational block, and an optional reasoning_chain array (citation trail with source_type tags).
design_survival adds events_calc β {"schoenfeld" (default), "lachin-foulkes", "freedman"} for PH GS designs and accepts control_hazard_rate (events per patient-year) as an alternative to control_median.
| Tool | When to use | Strategies | R backend |
|---|---|---|---|
design_co_primary | Two or more co-primary endpoints (PFS+OS, CV death+HHF, mixed binary+continuous) | fixed-sequence (hierarchical, default), alpha-split (weighted), bonferroni | Per-endpoint dispatch to single-primary tools at the appropriate effective alpha; total N = max across endpoints |
design_multi_population | Same endpoint tested across multiple populations (biomarker subgroup + ITT, nested PD-L1 strata) | Same three strategies; relation β {"nested", "disjoint"} | Same per-population dispatch; for nested, total N driven by largest implied-enrolled-N (events / prevalence); for disjoint, total N is the sum |
design_graphical_multiplicity | Multi-hypothesis with alpha recycling (Maurer-Bretz) β mixed primary+secondary, dose-response | Graphical procedure with user-supplied initial weights and transition matrix; built-in Rule-3 validator | graphicalMCP::graph_create; per-hypothesis sample-size at worst-case alpha |
| Tool | Purpose |
|---|---|
validate_against_benchmark | Replay a benchmark case through its matching design tool and diff against expected values within tolerance. |
verify_design | Monte Carlo cross-check of any result. Closed-form simulation under H0 and H1; Β±2 pp power / Β±0.5 pp Type I tolerance gate. Supports fixed and GS designs on binary, continuous, and PH-survival endpoints. |
design_report | Render a clinician-readable design summary in markdown (default), Word (format="docx" via officer), or PDF (format="pdf" via rmarkdown + Pandoc). Reasoning chain rendered as a Word table; sponsor-confidential entries surface a redaction warning at the top of the document. |
Every endpoint design tool accepts an operational block that solves the simple relations accrual_rate Γ accrual_duration = sample_size_total and total_trial_duration = accrual_duration + follow_up_duration (plus target_events = sample_size_total Γ cumulative_event_rate(...) for survival, via uniroot over the closed-form pooled exponential-PH event probability β same kernel gsDesign::nSurv uses internally).
Supply any 0β4 of {accrual_rate, accrual_duration, follow_up_duration, total_trial_duration} plus optional caps {max_n, max_duration}. The solver fills in the missing values with an audit trail (given, derived); cap violations surface as structured feasibility_warnings rather than silent over-cap designs.
Prerequisites: R β₯ 4.2, Node β₯ 18. No npm install step (the MCP server ships pre-bundled in mcp-server/dist/index.js) and no remotes::install_local step (the launcher sources r-package/ClinicalTrialDesign/R/*.R directly out of the plugin cache).
The first four are runtime imports; officer and rmarkdown are Suggests: and only needed for design_report(format="docx") / format="pdf".
clinical-trial-design v0.0.13 was developed and tested against the versions below. CRAN's latest is usually fine; pin to these floors only if you hit a version-skew issue.
| Layer | Dependency | Tested version |
|---|---|---|
| R runtime | R | 4.5.3 (works on R β₯ 4.2) |
| R imports | gsDesign | 3.9.0 |
gsDesign2 | 1.1.8 | |
graphicalMCP | 0.2.9 | |
jsonlite | 2.0.0 | |
| R suggests | officer | 0.6.x (for design_report(format="docx")) |
rmarkdown | 2.20+ (for design_report(format="pdf"); Pandoc system dep) | |
simtrial | 1.0.2 (for verify_design Monte Carlo) | |
rpact | 4.4.0 | |
yaml | 2.3.12 | |
testthat | 3.3.2 | |
| Node runtime | Node | 22.22.1 (works on Node β₯ 18) |
| Node bundled | @modelcontextprotocol/sdk | ^1.0.0 (inlined in dist/index.js) |
zod | ^3.23.0 (inlined) |
Method A β slash commands (recommended, inside Claude Code)
After install, restart Claude Code so it loads the bundled MCP server. Confirm with /plugin (clinical-trial-design should be listed and enabled at version 0.0.13).
Method B β host shell (equivalent, scriptable)
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/clinical-trial-design)<a href="https://allmcps.com/mcp/clinical-trial-design"><img src="https://allmcps.com/api/badge/clinical-trial-design?style=directory" alt="Clinical Trial Design on AllMCPs" /></a>