Recordings
Capture an exchange as a single file, replay it anywhere a target goes with the server gone, and attach a reproduction to a bug report without also attaching your gateway.
A bug report that says "the call fails" costs someone a day. A recording is the same report with the frames attached — and it replays with the server gone.
Capturing one
Any target's exchange can be written out from any face:
| Face | How |
|---|---|
| Web UI | the export recording button in the header |
| TUI | w, which writes mcpg-inspector-<target>-<timestamp>.jsonl into the working directory |
| API | GET /api/v1/targets/{id}/export |
The format is NDJSON: one header line saying which server and which wire, then the frames as they crossed.
Replaying one
recording: is a target form, so it goes anywhere a target goes:
# the web UI, against a file
mcpg inspector serve --target recording:./session.jsonl
# the TUI
mcpg inspector tui --target recording:./session.jsonl
# and the one-shot verbs
mcpg inspector list recording:./session.jsonl tools --json
Every surface works on it — the catalog, a call, the wire pane — because nothing above the session knows it is replaying. It dials nothing, so it works with the server gone, which is the point.
What a replay can and cannot answer
A recording answers only what the original session actually asked. Replay a call the recording never saw and it says so by name, rather than inventing a result.
That has a practical consequence when you are the one capturing: list the surfaces you want before exporting. A recording taken after only calling one tool is a recording of one tool, and the replay will be thinner than whoever receives it expects.
Sharing one is sending a file
The inspector stores no recordings. There are no share links, no retention, and no custody of anyone's traffic — a recording is a file you wrote, and sending it is sending it.
Two things protect you, and one thing does not:
- Credentials are redacted at write time. Frames go through the same credential redaction the gateway applies to audit records, so a bearer token never reaches the file.
- The target is described, not copied. What server it was, and which wire — not the credential that reached it.
- Your own arguments are not redacted, because they are the content. If you called a tool with a customer record in it, that record is in the file. Treat a recording as the traffic it is.
That combination is what makes it safe to attach a reproduction to a bug report without also attaching your gateway.
Next steps
- Debug a server — find the failure worth capturing.
- Gate CI on it — the other way to make a finding repeatable.
mcpg inspectorreference — every verb and flag.