mcpreplay

Your MCP server drifts. Nobody notices until the agent breaks.

MCPReplay records real client traffic, replays it on every commit, and fails the build the moment a tool response stops matching contract.

$ npx mcpreplay record
 captured 12 tool calls → tests/mcp/fixtures.json

# later, in CI…
$ npx mcpreplay replay
 tools/search: response shape drifted
  - results: [{ title, url: "string" }]
  + results: [{ title, url: { href, label } }]

FAIL  1 tool drifted · exit 1

Email to get early access hi@mcpreplay.com

Free CLI + GitHub Action launching soon. A reply is the signup — we read every one.

How it works

  1. 1

    Record

    $ npx mcpreplay record

    Proxy your real dev MCP session. Every tool call + response is snapshotted into tests/mcp/*.json.

  2. 2

    Commit

    $ git add tests/mcp/ && git commit

    Fixtures ship with your code. Reviewed in PRs like any other test. No cloud round-trip.

  3. 3

    Replay in CI

    # .github/workflows/mcp.yml
    - uses: mcpreplay/action@v1

    One workflow step. The PR fails the instant any tool response drifts from the last green run.

Why MCPReplay

Built for MCP server authors

Four contract-testing primitives, one CLI, one GitHub Action.

Record real traffic

Proxy your dev MCP session over stdio or HTTP. Every JSON-RPC call lands as a numbered fixture. Filter by method, redact secrets by JSON Pointer, cap by count or duration.

Replay against the live server

Re-run every fixture against the current build, diff each response against the recorded baseline, and exit non-zero on contract drift. --bail, --only, --exclude for big suites.

CI-shaped output

Human, JSON, and JUnit-XML reporters. --github-annotations drops inline PR comments on the line of every drifted fixture. Latency budgets per fixture and aggregate. Baselines for trend regressions.

One-command setup

npx mcpreplay init scaffolds .github/workflows/mcp-contract.yml, a tests/mcp/ README, and a status-badge snippet. From zero to a green CI run in one PR.

Pricing

The CLI is free, forever. The hosted dashboard is the optional layer on top.

OSS / Free

$0forever

For every MCP server author.

  • npx mcpreplay record / replay / assert / init
  • GitHub Action wrapper
  • Unlimited local + CI runs
  • Fixtures stored in your own repo
  • Apache-2.0 — fork it, ship it

Get the CLI

Most popular at launch

Hosted Solo

$29/ month

For solo devs shipping a public MCP server.

  • Cloud fixture storage + run history
  • README status badge
  • Multi-server dashboard
  • Scheduled cron runs against main
  • Email + webhook drift alerts

Join the waitlist

Team

$99/ month

For small teams maintaining several MCP servers.

  • Everything in Hosted Solo
  • 5 seats, role-based access
  • 365-day fixture retention
  • Slack notifications
  • Private install support

Join the waitlist

FAQ

What does MCPReplay actually do that I can't do with my own tests?
It captures real client→server traffic on a Model Context Protocol server and replays it on every commit, diffing each response against the recorded baseline. So when a tool's params get renamed or a return shape grows a new required field, CI fails on the exact tool call that drifted — not three days later when an agent silently misbehaves in production.
How is this different from Snyk Agent Scan, mcp-scan, Enkrypt MCP Scan, or Invariant?
Those are security scanners — prompt injection, tool poisoning, exfiltration. They look for malicious shapes. MCPReplay is the correctness harness: same server, same calls you already make, did the contract change between commits? The two are complements, not competitors.
What transports do you support?
Both. stdio (the default for local MCP servers — point --server at any executable) and Streamable HTTP per MCP 2024-11-05 (--transport=http --url …, with JSON or SSE responses, Mcp-Session-Id session tracking, and custom headers).
Where do the fixtures live? Are they tied to your service?
In your repo, under whatever directory you choose (we suggest tests/mcp/). They are plain JSON, hand-readable, hand-editable, reviewable in PRs. The CLI never sends them anywhere. The hosted dashboard, when it lands, will be an opt-in mirror — not a requirement.
Will Anthropic ship something like this for free?
Maybe. If they do and it covers regression-CI, contract assertions, and multi-server diffing, we have a transition plan in our public IDENTITY notes. In the meantime, the OSS half of MCPReplay is Apache-2.0 — your fixtures and your CI integration are yours regardless of what we do.

Ship your next MCP server with a green contract test.

The CLI lands shortly. The hosted dashboard follows. Drop us a line and we will email when each opens.

Email to get early access hi@mcpreplay.com

A reply is the signup — we read every one.