A production .cpuprofile is millions of lines of tick counts and call frames — reading it directly fills the context window and still needs aggregation across the call tree to mean anything. This does the aggregation outside the model and returns the conclusion, including the before-and-after diff that tells you whether your fix worked.
An MCP server that decodes Node.js V8 CPU profiles locally and returns compact bottleneck summaries instead of raw profile JSON.
- The hottest functions ranked by exclusive self time, with V8 internals and Node built-ins filtered out so only your code is listed
- All callers of a named function, with how often each one invoked it
- Hot functions mapped back to their original TypeScript source locations through source maps
- Garbage collection overhead reported as a percentage of total profiling time
- Two profiles compared before and after a change, returning per-function CPU time deltas
- Event-loop overhead surfaced by identifying the V8 internal frames that represent async machinery
A .cpuprofile file on disk — the one Node writes when you start it with CPU profiling turned on — and the path to it. No account and no key; the profile is decoded locally rather than uploaded.
One command — npx -y v8-cpu-profile-decoder-mcp
