MCP over HTTP: Tumult as a Service
Originally published 2026-04-01; reviewed for Tumult 2.16.1 on 2026-07-21.
Tumult’s MCP server now supports Streamable HTTP transport, enabling any MCP-compatible agent to connect over the network. This unlocks container-to-container communication, multi-agent orchestration, and fleet-wide chaos engineering.
Why HTTP?
The original stdio transport works for local use; MCP-compatible IDEs and agents connect directly. But for production agent fleets, containers, and CI/CD pipelines, you need network transport.
The MCP 2025-11-25 specification defines Streamable HTTP; a protocol where clients POST JSON-RPC requests and receive responses as Server-Sent Events (SSE). This gives us:
- Stateful sessions; each client gets a session ID, enabling concurrent users
- Streaming results; long-running experiments can stream progress
- Standard HTTP; works through proxies, load balancers, firewalls
- Session resumability; clients can reconnect and resume
Usage
# Local; stdio (default, for IDE integration)
tumult-mcp
# Network; Streamable HTTP (for containers and agent fleets)
tumult-mcp --transport http --port 3100
# Docker
docker run --network tumult-e2e -p 3100:3100 tumult-mcp
Live Demo
All 40 MCP tools accessible over HTTP (summarized by group; see the MCP guide for the full list):
$ curl -s POST http://localhost:3100/mcp \
-H "Accept: text/event-stream, application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
Available tools: 40
Experiments: tumult_run_experiment, tumult_validate, tumult_discover, ...
Journals and analytics: tumult_read_journal, tumult_analyze, tumult_report, ...
GameDays: tumult_gameday_run, tumult_gameday_analyze, ...
Intelligence: tumult_recommend, tumult_coverage, ...
Agentic testing: tumult_agentic_list_scenarios, ...
ChaosGraph: tumult_chaosgraph_query, ...
Topology: tumult_topology_map, ...
Autopilot: tumult_autopilot_run, ...
Access: tumult_whoami
Running a live experiment via HTTP:
$ curl POST http://localhost:3100/mcp \
-d '{"method":"tools/call","params":{
"name":"tumult_run_experiment",
"arguments":{"experiment_path":"examples/postgres-failover.toon"}}}'
status: completed
duration_ms: 228
steady_state_before: met: true
steady_state_after: met: true
full_recovery: true
mttr_s: 0
Querying the persistent analytics store:
$ curl POST http://localhost:3100/mcp \
-d '{"method":"tools/call","params":{
"name":"tumult_store_stats","arguments":{}}}'
store: analytics.duckdb
experiments: 67
activities: 244
size_mb: 2.51
Architecture
┌──────────────────────┐ Streamable HTTP ┌─────────────────┐
│ Coding Agent │◄─────────────────►│ tumult-mcp │
│ (AQE, IDEs, │ :3100/mcp │ --transport http│
│ Cursor, etc.) │ │ │
└──────────────────────┘ └────────┬────────┘
│
┌────────┴────────┐
│ tumult-core │
│ 16 plugins │
│ 91 actions │
│ DuckDB store │
└─────────────────┘
Docker Compose
The Tumult MCP container runs in HTTP mode by default:
services:
tumult-mcp:
image: tumult-mcp:latest
ports:
- "3100:3100"
environment:
TUMULT_MCP_TOKEN: ${TUMULT_MCP_TOKEN:-tumult-dev}
networks:
- tumult-e2e
Any agent on the same Docker network can connect to http://tumult-mcp:3100/mcp.
What This Enables
- Agentic QE Fleet; quality engineering agents run chaos experiments through Tumult
- CI/CD chaos gates; pipeline steps can call Tumult MCP to validate resilience
- Multi-tenant; multiple agents can share one Tumult instance via sessions
- Remote chaos; run experiments against production from a central control plane
Next: connecting the Agentic QE Fleet to Tumult for autonomous chaos engineering.