The agent writes TypeScript to discover and call tools:
// search — find tools across all servers return tools.filter(t => t.name.includes("screenshot"));
// execute — call tools with full type safety await chrome_devtools.navigate_page({ url: "https://example.com" }); const shot = await chrome_devtools.take_screenshot({ format: "png" }); return shot;
Type declarations are auto-generated from each tool's JSON Schema, so the agent gets typed parameters for every tool. TypeScript is stripped via oxc and the JS runs in a sandboxed QuickJS engine (64 MB memory limit).
Adding servers works exactly like you'd expect — just prepend cmcp to any claude mcp add command from a README:
cmcp claude mcp add chrome-devtools npx chrome-devtools-mcp@latest cmcp install
Built in Rust with rmcp, rquickjs, and oxc. Inspired by Cloudflare's blog post on code-mode MCP.
What I found interesting building this: the biggest win isn't just fewer tokens — it's composability. An agent can chain calls across multiple servers in a single execution, which isn't possible with individual tool calls.