JS Runtimes
Node.js vs Bun vs Deno
ZeroMCP and the Official MCP SDK tested across all three JavaScript runtimes.
Same tool. Same machine. stdio transport.
12.04K req/s Bun + ZeroMCP
11.10K req/s Deno + ZeroMCP
9.74K req/s Node + ZeroMCP
24ms startup Bun (fastest)
Head to head
ZeroMCP (amber) vs Official SDK (gray) on each runtime. Toggle metrics.
Full results
| Runtime | SDK | Startup | req/s | p50 | p99 | Memory |
|---|---|---|---|---|---|---|
| Bun | ZeroMCP | 24ms | 12.04K | 0.07ms | 0.96ms | 73 MB |
| Official | 52ms | 7.28K | 0.09ms | 1.21ms | 122 MB | |
| Deno | ZeroMCP | 34ms | 11.10K | 0.09ms | 0.21ms | 81 MB |
| Official | 67ms | 6.53K | 0.14ms | 0.45ms | 140 MB | |
| Node.js | ZeroMCP | 47ms | 9.74K | 0.09ms | 0.30ms | 59 MB |
| Official | 120ms | 6.50K | 0.14ms | 0.34ms | 107 MB |
What this means
Bun is fastest across the board
24ms startup, 12K req/s with ZeroMCP. 65% faster than the official SDK on Bun.
Deno has the best tail latency
0.21ms p99 — the most consistent runtime. No outlier spikes over the test window.
Node.js uses the least memory
59 MB peak with ZeroMCP. Mature V8 GC keeps it tight. Still 9.7K req/s.
ZeroMCP wins on every runtime
1.5-1.7x faster than the official SDK regardless of runtime. The gap is the SDK, not the engine.