⚠ SPEED CAVEAT: Slow deep-thinker: ~17-19 t/s, 5-9 min/prompt, ~5-9k tokens incl. reasoning. Fast for quality, not throughput.
tok/sec20.20
tokens5244
TTFT2.57s
▮ PILLAR BREAKDOWN
Schema / I/O
18/20
Transport
20/20
Error Handling
17/20
State Safety
18/20
Test Integrity
15/20
✓ WENT RIGHT
Transport (20/20)
Schema / I/O (18/20)
State Safety (18/20)
Error Handling (17/20)
✗ WENT WRONG
No pillar fell below 14 — solid across the board.
▮ CRITICAL BUGS
Output is JSON.stringify'd into a text content block rather than returned as structured typed content — spec explicitly asks for typed/structured output not raw strings.
clearTimeout(timer) is called before res.json() in fetchJson, so a slow/stuck JSON body parse has no timeout guard.
Test 404 case (b) logs 'PASS' in both the success and catch branches, making it a tautological always-pass assertion that doesn't verify error semantics.
Tests call the *Impl functions directly, bypassing the MCP CallToolRequest handler — the schema-to-handler wiring, isError flag, and content-block formatting are never exercised.
▮ RECOMMENDED USE
Clean, idiomatic single-file MCP server with REAL SDK wiring (no hallucinated APIs — correct @modelcontextprotocol/sdk imports, setRequestHandler on ListTools/CallTool, StdioServerTransport), Zod-validated tool schemas, timeout-safe fetches via AbortController, and isError-flag error responses instead of bare throws. First model tested on the mcp prompt; sets a high bar.
▮ REFACTORED PATCH
// 1. Return structured content instead of stringified JSON
case 'get_user': {
const { id } = GetUserSchema.parse(args);
const user = await getUserImpl(id);
return { content: [{ type: 'text', text: JSON.stringify(user) }], structuredContent: user };
}
// 2. Keep timeout alive through JSON parse (move clearTimeout to finally)
async function fetchJson(url, timeoutMs = 8000) {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeoutMs);
try {
const res = await fetch(url, { signal: controller.signal });
if (!res.ok) throw new Error(`HTTP ${res.status} ${res.statusText}`);
return await res.json();
} catch (err) {
if (err.name === 'AbortError') throw new Error('Request timed out');
throw err;
} finally {
clearTimeout(timer); // single clear, covers all paths incl. slow json()
}
}
// 3. Make 404 test actually assert error semantics
try {
const r = await getUserImpl(9999);
console.log('b) FAIL — expected throw, got', r);
} catch (e) {
console.log('b) 404 handled -> PASS:', e.message);
}