Session replay sends previously captured client-to-server messages against a live MCP server, collecting responses for analysis, testing, and reproduction.Documentation Index
Fetch the complete documentation index at: https://docs.q-uestionable.ai/llms.txt
Use this file to discover all available pages before exploring further.
Basic Workflow
- Capture a session:
session.json.
- Replay the captured messages:
Replay Command Reference
| Option | Required | Type | Description |
|---|---|---|---|
--session-file | Yes | string | Path to the captured session file |
--target-command | Yes* | string | Command to start the target server (stdio) |
--target-url | Yes* | string | URL of the target server (SSE/HTTP) |
--output | No | string | Save replay results to JSON file |
--timeout | No | float | Per-message response timeout in seconds (default: 10.0) |
--no-handshake | No | flag | Skip synthetic handshake (only if session already includes initialize) |
--target-command or --target-url is required.
Auto-Handshake
By default, replay sends a synthetic MCP handshake before replaying messages:--no-handshake only if:
- Your captured session already starts with an
initializerequest - You want to replay the exact sequence as captured (including handshake)
Modifying Arguments Before Replay
Replay sends messages exactly as captured. To modify arguments:- Export the session JSON or inspect it to find the target message
- Edit the message’s
payloadfield directly in the JSON file - Replay the modified session
Output Format
Replay results are written to JSON with a detailed record of each message:| Field | Description |
|---|---|
original_request | The ProxyMessage from the captured session |
sent_message | The actual SessionMessage sent to the server |
response | The server’s response (null if notification or timeout) |
error | Error description if replay failed (null on success) |
duration_ms | Round-trip time in milliseconds |
Handling Timeouts
Use--timeout to adjust the per-message timeout:
Filtering Replayed Messages
Only client-to-server messages are replayed. Server-to-client messages in the session are skipped:client_to_servermessages (requests and notifications) are replayed in orderserver_to_clientmessages (responses and notifications) are ignored- Notifications (no JSON-RPC id) are sent without waiting for a response
Use Cases
Reproduce Security Findings
Capture a vulnerable interaction, then replay it to confirm the finding:Test Compatibility
Verify a new server version behaves the same as the old:Debug Intermittent Issues
Capture a failing interaction, then replay it repeatedly:Only client-to-server messages are replayed. Server responses are discarded from the original session and newly captured during replay. This allows testing the server against the same client sequence while isolating server-side changes.