mcptest docs GitHub

Cargo workspace layout

Audit performed 2026-05-16 against the acceptance criteria. This page is the canonical reference for which crates exist, what they own, and where the public/private boundary runs.

Crates

CratePathRolePublic?
mcptestcrates/mcptest/The CLI binary plus a thin library wrapper so integration tests can exercise the parser without spawning a subprocess.Published. The mcptest binary is the user-facing artifact.
mcptest-corecrates/mcptest-core/Matchers, MCP protocol client, transports, runner, cache eligibility, coverage, reporters, lint, redaction, cassette, compliance. Transport-free except the upload reporter.Published as a library. Used directly by the CLI and (later) by SDK FFI hosts.
mcptest-configcrates/mcptest-config/YAML loader with JSON Schema validation, .env parser, variable resolution, ${VAR} interpolation.Published as a library. The runner and the CLI both depend on it; SDK hosts will too.

The OSS PRD also mentions mcptest-cassette and mcptest-report. Both shipped inside mcptest-core for now (see cassette and report modules). Splitting them into their own crates is deferred until the record/replay file format ships, tracked.

Dependency graph

mcptest (bin + lib)
  -> mcptest-core
  -> mcptest-config
       -> (no internal deps)
mcptest-core
  -> (no internal deps)

The flow is intentionally one-way: core has no knowledge of config, and config has no knowledge of core. The CLI is the only place that wires both together. This keeps the FFI surface narrow (an SDK host loads one crate, not three) and lets cargo test -p mcptest-core run without dragging in YAML parsing.

Shared workspace dependencies

[workspace.dependencies] in the top-level Cargo.toml declares the single source of truth for every shared crate version:

Workspace members reference these with dep = { workspace = true } so a bump happens in exactly one place.

MSRV

The minimum supported Rust version is pinned in two places that must stay in lockstep:

Verification

The acceptance criteria are met as follows:

Outstanding items