Build1 distinct publisher3 min readUpdated
An rmcp walk-through concedes its tools are I/O-bound at 100-500ms per AWS call, then makes the rewrite argument on footprint, dependency isolation and schema drift instead.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
A dev.to walk-through of building an MCP server in Rust with rmcp, the official Model Context Protocol Rust SDK, opens by taking apart the usual reason for doing it [1]. Every tool in the server is an AWS API call - describe_instances, send_command, polling SSM - at 100 to 500 ms of network per call, and the author's position is that the caller's language contributes nothing measurable there, so anyone selling a Rust rewrite on raw speed for this workload is selling something [2][3].
What is left after that concession is the part worth reading. The monorepo in question is not one server: it is 16 rigs, each with its own MCP server [4]. The author puts the cost as a gigabyte of resident Python to expose sixteen tool lists [5], which is roughly 64 MB per server before any tool is called [6]. That is the load-bearing claim, and the supplied text does not close it: there is a figure for the Python side and none for the Rust binaries [7]. Direction without a delta.
The second argument is packaging, and it is more concrete. These rigs install system-wide, no virtualenvs by policy, so all sixteen share one interpreter [8]. Sixteen servers with independently drifting boto3 and mcp pins in a single Python is a standing conflict risk, according to the author [9]; a static binary has no such coupling, and each rig pins what it likes in its own Cargo.lock [10]. Note what is actually forcing this. The constraint is an install policy, not a language deficiency, and a reader with virtualenvs or uv-managed environments has already bought most of that benefit.
Third: schemars generates the tool schema from the same struct the handler destructures, so the advertised schema cannot drift from the code [11]. The author expects that one to survive longest [12], and it is the only one of the three that is a property of the type system rather than of the deployment.
Startup gets a mention because MCP transport is usually stdio, with the client spawning your binary and talking over stdin and stdout [13], which makes process startup user-visible when a session spawns a fresh process [14]. The Rust server is quoted at 2.5 ms [15]. Against one AWS call that is 0.5 to 2.5 percent of the wait [16] - real, and not the headline.
The design underneath is the reason any of this is a server rather than shell scripts, in the author's own framing [17]: nine tools covering list, start, stop, terminate, endpoint, run_remote and health [18], driving a g5g.4xlarge Graviton2 box with an NVIDIA T4G that serves Gemma 4 E2B under vLLM on port 8000 [19], with no inbound SSH, no key pair and no port 22 rule, everything going through the EC2 API and SSM Run Command under an instance profile carrying AmazonSSMManagedInstanceCore [20].
Two things to watch. First, whether anyone publishes measured resident-set numbers per server for both stacks, because the fleet argument stands or falls on that and currently rests on one round figure [5][7]. Second, the rmcp packaging trap the article flags: a bare cargo add rmcp compiles and gives you almost nothing, with server, macros and transport-io needed explicitly and client, auth, elicitation and the streamable-HTTP server transport off by default [21][22]. The author's own limit is the honest one: if you have one MCP server and it works, this is not a reason to rewrite it [23].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The author notes that if the client spawns your process on every session, process startup is a user-visible cost.
The Rust server is described in the architecture diagram as 1 binary at 2.5 ms, built on rmcp 3.1.2 with tokio, schemars and aws-sdk-ec2/aws-sdk-ssm.
A dev.to tutorial walks through building an MCP server in Rust with rmcp, the official Model Context Protocol Rust SDK, using as its example a devops agent that manages AWS EC2 G5g instances serving Gemma 4 under vLLM; a Python version of the same server already exists.
The server's tools are I/O bound: every one is an AWS API call (describe_instances, send_command, polling SSM), so 100-500 ms of network per call.
The author states that the caller's language contributes nothing measurable to that latency, and that anyone selling a Rust rewrite on raw speed for this workload is selling something.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One self-reported practitioner account, code-specific but unbenchmarked
The implementation detail is verifiable and precise - exact crate versions, feature flags, tool count, protocol mechanics - which supports the how-to layer well. The argumentative layer is weaker: the decisive footprint figure is a single unmeasured round number with no Rust counterpart, the 2.5 ms startup is a diagram label with no method, and there is exactly one source and one author with no independent replication.
One author's fleet; no external uptake evidence
Adoption evidence is confined to the author's own environment: a 16-rig monorepo, one Rust MCP server pinned to rmcp 3.1.2, and one GPU instance driven through SSM. No other teams, download counts, downstream users or vendor deployments appear in the supplied material, so uptake beyond this practitioner is unknown rather than absent.
Self-limiting framing, one asymmetric number
The piece deflates rather than inflates the usual Rust pitch: it concedes the workload is I/O bound at 100-500 ms per call, says language contributes nothing measurable, and tells readers with one working server not to rewrite. That pulls the gap toward zero or below. It stays slightly positive because the argument it does keep rests on a gigabyte-of-Python figure presented without methodology and without any Rust resident-memory comparison, so the surviving case is asserted somewhat beyond what is shown.
Self-published author promoting own toolchain and article series
The author is documenting and advocating a personal architectural choice on a self-publishing platform and cross-references a companion article in the same series about vLLM's Rust frontend, which is an audience and narrative interest in the Rust framing looking justified. There is no evidence in the supplied material of vendor sponsorship, commercial product, or paid placement, so the incentive is reputational rather than financial.
High confidence on mechanics, low on the comparative case
What the article implements can be trusted at face value and is internally consistent. Whether the footprint and correctness case generalises beyond one sixteen-rig monorepo cannot be judged from a single unbenchmarked source, and the key comparison lacks its Rust-side number, so overall confidence sits below the midpoint.
build
Anthropic's CCAR-F puts a scaled score on "can build agents"1 distinct publisher
product
A 2x LLM bill is not a bug report: token spend is an observability problem1 distinct publisher
leadership
Anthropic's own telemetry: 93% of permission prompts approved. Budget for blast radius, not reviewers1 distinct publisher
science
OX Security says MCP command execution is a design choice, so server owners own the risk1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 16, 2026