mcp-trace
Privacy-by-default stdio MITM proxy between an MCP client (Claude Code, any other host) and an MCP server. Pairs request/response by id and logs metadata to a local SQLite file. Sister project to mcp-skills-vault.
Install
git clone https://github.com/froggychips/mcp-trace.git
cd mcp-trace
node bin/mcp-trace.cjs --version
Zero npm dependencies. Node 22+ built-ins only (node:sqlite, node:child_process, node:readline). On Node 22/24 add --experimental-sqlite; Node 25+ just works.
What you get
- Stdio proxy — wraps any MCP server, forwards bytes byte-for-byte, and pairs request ↔ response by JSON-RPC id to compute per-call latency.
- Local SQLite store — zero deps via built-in
node:sqlite, WAL mode so multiple proxied servers can write concurrently. Default DB at~/.mcp-trace/traces.db. - Three CLI subcommands —
stats,tools,tokens. Bodies are never logged unless you opt into--capture-bodywithMCP_TRACE_CAPTURE_BODY_CONFIRMED=1.
Latest release
v0.1.0 — initial release — 2026-05-22
- stdio MITM proxy:
mcp-trace proxy <name> -- <command> - per-event JSON-RPC metadata logging via built-in
node:sqlite - privacy-by-default: bodies require
--capture-bodyandMCP_TRACE_CAPTURE_BODY_CONFIRMED=1 stats/tools/tokenssubcommands- zero npm dependencies; Node 22+ required
Quick taste
$ node bin/mcp-trace.cjs stats
server calls p50 p95 errors tools
github 42 180 420 1 7
$ node bin/mcp-trace.cjs tools github
server tool calls p50 p95 err% last_seen
github search_repositories 18 130 260 0 2m ago
github create_issue 0 - - 0 never
$ node bin/mcp-trace.cjs tokens github
# HEURISTIC (~350 tokens/tool). Real cost only observable inside Claude Code.
github: 47 tools advertised × 350 = ~16450 tokens/session
12 tools called in window; estimated wasted budget: ~12250 tokens/turn