Your MCP servers are
eating your RAM.
Every local MCP server your agent spawns is a real, resident process. A Node one costs 100–300 MB before it does any work; one that drives a browser costs a gigabyte. These are the same seven servers, doing the same jobs, compiled.
$ git clone https://github.com/luka-loehr/rust-mcp-servers $ cd rust-mcp-servers && cargo build --release
This is the honest comparison, not the flattering one. Idle against idle it is only ~4×, because a native WKWebView window is already small. The gap opens once a page actually loads and Playwright launches a second Chromium process tree, while this one reuses the WebKit engine already resident in macOS.
Same machine, same day, Apple Silicon. RSS summed across the whole process tree, not just the top PID, and the Node and Python originals were run warm. Method and script in BENCHMARKS.md.
Let your agent swap them
Your agent already knows which MCP servers you run. Paste this and it builds the Rust ones, rewrites your config, and tells you where coverage differs — because on two of them, it does.
Swap my Node and Python MCP servers for the Rust ones in
luka-loehr/rust-mcp-servers. Run this first, then follow it exactly:
curl -fsSL https://rmcp.lukaloehr.com/setup.txt
Ask me its first question before doing anything else. Do not remove a server
I still depend on without telling me what it does not cover.Two steps
Ah, so you haven’t fallen for the vibe yet. Respect. I still read commands before I run them too.
Build them
One Cargo workspace. Binaries land in target/release/. Build a single one with cargo build --release -p <name>.
$ git clone https://github.com/luka-loehr/rust-mcp-servers $ cd rust-mcp-servers && cargo build --release
Point your client at the binary
Instead of an npx or uvx command. Same tools, same JSON-RPC, no runtime underneath. filesystem-mcp-rs takes its allowed roots as arguments, exactly like the original.
$ claude mcp add time-rs \ .../target/release/time-mcp-rs $ claude mcp add filesystem-rs \ .../target/release/filesystem-mcp-rs -- ~/code
Seven, and what each replaces
Idle RSS, measured
Two of these are not full parity, and it matters. n8n-mcp-rs covers the node catalog, templates and validation, but does not proxy to a live n8n instance — keep the original alongside it if you create or execute workflows. browser-mcp-rs has no accessibility-tree snapshot, multi-tab, dialogs, file upload or network interception. If you need those, stay on Playwright.