MCP Failure Lab
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Failure Labcall lab_probe under the transient-error scenario to check retry recovery"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Failure Lab
A deliberately faulty MCP server and a bounded reference-client harness. v0.1.0, MIT. Built on the official MCP TypeScript SDK 2.3.1, not a replacement protocol implementation.
Try it
Requires Docker. The image uses Node 24 and pinned npm dependencies.
docker build -t mcp-failure-lab:local .
docker run --rm --network none --read-only --cap-drop ALL --security-opt no-new-privileges mcp-failure-lab:local npm test
docker run --rm --network none --read-only --cap-drop ALL --security-opt no-new-privileges mcp-failure-lab:local node runner.mjsThe last command prints JSON results and OpenAI-message-shaped traces from seven deterministic runs. No language model participates. Timings are observed elapsed milliseconds, not benchmarks. The test command exits nonzero on a regression; the demo command emits observations, not a grading verdict.
For local development: npm ci --ignore-scripts, then npm test.
Related MCP server: genpark-distributed-agent-chaos-latency-fuzzer-skill
Faults
LAB_SCENARIO | Injected behavior | Reference-client expectation |
healthy | Normal tool response | One success |
tool-error | Valid result with isError=true | Stop at configured attempt budget |
transient-error | First LAB_FAILURES calls fail | Recover if the attempt budget permits |
delay | Wait LAB_DELAY_MS before tool response | Succeed within deadline or time out |
malformed | Valid JSON-RPC envelope, invalid text-block value | Reject the tool result |
disconnect | Exit during a tool response | Report closed connection, not success |
Only the advertised lab_probe tool is affected. Initialization and discovery use the official SDK.
The transport wrapper corrupts result shape, not JSON framing; truncated frames, bad IDs, HTTP failures and authentication faults are not implemented.
Configuration is read at process startup. Scenarios reset per process.
LAB_DELAY_MS: integer 0–10000 (default 1000).
LAB_FAILURES: integer 0–10 (default 2).
The reference client retries only explicit tool errors, at most five attempts; protocol errors, timeouts and disconnects stop immediately.
The harness's tool-call deadline is 10–10000 ms; SDK connection/discovery deadlines are separate.
Retries intentionally have no backoff so the generated fixture exposes repeated calls; this is not recommended production retry policy.
Attach your own MCP client
Configure a test MCP connection to run this command, with stdin/stdout attached:
docker run --rm -i --network none --read-only --cap-drop ALL --security-opt no-new-privileges -e LAB_SCENARIO=transient-error -e LAB_FAILURES=2 mcp-failure-lab:localCall lab_probe with {"message":"probe"}.
There are no real downstream services, credentials, file-writing tools or listening network ports.
Client integrations beyond the included reference client are unverified.
Feed a failure into Agent Trace Clinic
From this repository, with Clinic checked out next to it:
mkdir -p artifacts
docker run --rm --network none --read-only mcp-failure-lab:local node runner.mjs > artifacts/run.json
node --input-type=module -e 'import fs from "node:fs"; const r=JSON.parse(fs.readFileSync("artifacts/run.json","utf8")); console.log(JSON.stringify(r.results.find(x=>x.scenario==="tool-error").trace));' > artifacts/tool-error.json
node ../agent-trace-clinic/cli.mjs artifacts/tool-error.json --html > artifacts/clinic-report.htmlClinic should identify tool_loop, retry_storm and unhandled_tool_error on this fixture. These are heuristic leads: deliberate bounded retries can also trigger them. No token counts are invented.
Relationship to upstream
MCP conformance is the upstream authority for protocol tests. This project contributes a small fault surface for recovery experiments; it does not claim conformance certification. The official framework currently documents HTTP-based client/server scenario runners. This first release is stdio-only; an upstream scenario adapter and a Streamable HTTP target are next, not shipped capabilities.
Sources checked 2026-10-14:
Maintenance contract
One transport, one tool, six fault modes, one reference client. Pin SDK upgrades and rerun every fault test.
Owner: Cloud Lab Works / Waku. Gherkin review has not been assigned or completed.
Before public release: source/dependency review, an independent test pass, and publication approval.
Before cloud execution: bounded job budget, teardown, and measured runtime. No cloud account is required for this release.
No telemetry or remote reporting. Generated reports stay in ignored artifacts/.
Agent Reliability Lab
Open the public demo or read the experiment guide. Four controlled before/after cases connect the official MCP reference client to deterministic Clinic inspection. The public sample is recorded local evidence, not a live cloud execution. Cloud adapters and runbook are included.
Citation
If you use this project, please cite the accompanying preprint: MCP Failure Lab: Reproducible Tool-Failure Fixtures and Cross-Platform Traces for Testing Agent Reliability. DOI: 10.5281/zenodo.23720942. See the paper page for the abstract and PDF.
@techreport{alvord2026mcp,
author = {Alvord, Alex},
title = {{MCP Failure Lab: Reproducible Tool-Failure Fixtures and Cross-Platform Traces for Testing Agent Reliability}},
institution = {CloudLab Works},
publisher = {Zenodo},
year = {2026},
month = oct,
type = {Preprint},
doi = {10.5281/zenodo.23720942},
url = {https://doi.org/10.5281/zenodo.23720942}
}This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP for A2A failure replay MCP, structured receipts, audit logs, and reviewer-ready evidence.
Collision-first MCP diagnostics for MCP, API, webhook and agent failures. Returns structured evidence, bounded repair guidance, agent compatibility checks and safe recovery routing.
Known MCP tool-call failures and workarounds verified by reproduction.
Concurrent two-client overlap probe proving MCP servers do not cross-deliver tool results.
Related MCP Servers
- AlicenseBqualityBmaintenanceA chaos-engineering and resilience-testing toolkit for Model Context Protocol servers, enabling deterministic fault injection and testing of reliability scenarios.910255 npm4MIT
- FlicenseNot gradedqualityBmaintenanceEnables distributed multi-agent chaos latency injection and fault fuzzing, allowing MCP-compatible clients to inject network faults and retrieve structured execution telemetry.8-
- AlicenseCqualityAmaintenanceServes configurable fake service worlds as MCP tools with fault injection, recording every call and enabling seeded pytest assertions on final state.42Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables users to run synthetic support-agent evaluations, preserve and inspect traces, score results deterministically, inject failures, and enforce release review gates through MCP tools, resources, and prompts.MIT