用 Rust 写 MCP 服务真的比 Python 快吗?
很多人觉得用 Rust 重写工具是为了追求那点运行速度,但其实在写 MCP 服务时,这完全是误区。因为这类服务绝大多数时间都在等网络 I/O(比如调用 AWS API),无论你用什么语言,等接口返回的时间都是一样的。
首先在
在 Rust 中,你需要定义一个结构体来接收参数,并利用
MCP 服务通过标准输入输出(stdio)与客户端通信。使用
下一篇
我之前给公司搭建的 DEV. →
但我这次在公司尝试用 rmcp(官方 Rust SDK)替代原有的 Python 版本后,发现 Rust 的真正优势在于“部署成本”和“内存占用”。我们团队得管理 16 台 G5g 实例,如果每台机器都跑一个 Python 写的 MCP 服务,光内存就得吃掉 1.3GB 左右,而且还得处理各种虚拟环境和依赖冲突。换成 Rust 静态编译后的二进制文件,16 个服务加起来才占用 192MB 内存,启动时间从秒级直接掉到了毫秒级。最关键的是,它不需要安装 Python 解释器,直接扔个二进制文件上去就能跑,彻底解决了依赖漂移的问题。
如果你也想尝试用 Rust 搭建,可以参考这个实操流程:
一、环境准备与依赖配置
首先在
Cargo.toml 中引入必要的 crate。这里 schemars 非常关键,它能保证你的 JSON Schema 和代码结构完全同步,不会出现模型调用时参数对不上的情况。[dependencies]
rmcp = "3.1.2"
tokio = { version = "1", features = ["full"] }
schemars = "0.8"
aws-config = "1.0"
aws-sdk-ec2 = "1.0"
aws-sdk-ssm = "1.0"
serde = { version = "1.0", features = ["derive"] }二、定义工具与处理逻辑
在 Rust 中,你需要定义一个结构体来接收参数,并利用
JsonSchema 派生宏让 MCP 客户端(如 Claude Code)知道这个工具怎么用。#[derive(serde::Deserialize, schemars::JsonSchema)]
struct EC2LaunchArgs {
instance_type: String,
ami_id: String,
}
// 在 handler 中实现具体的 AWS 调用逻辑
async fn handle_launch_instance(args: EC2LaunchArgs) -> Result<String, String> {
// 这里调用 aws-sdk-ec2 的逻辑
Ok("Instance launched successfully".to_string())
}三、启动 stdio 传输服务
MCP 服务通过标准输入输出(stdio)与客户端通信。使用
rmcp 快速挂载工具并启动服务器:#[tokio::main]
async fn main() {
let mut server = rmcp::Server::new("aws-manager");
server.add_tool("launch_instance", "启动指定类型的EC2实例", handle_launch_instance);
if let Err(e) = server.run().await {
eprintln!("Server error: {}", e);
}
}最后将编译好的二进制文件配置到 Claude Code 的配置文件中即可。对于只有一两个小工具的需求,Python 确实更快捷;但如果你在做企业级部署,或者像我们这样需要管理大量实例的 Agent 工作流,Rust 的确定性确实香得多。
免费 AI 工具箱 · 全部完全免费
各类AI落地变现的详细拆解见AI赚钱方法实操指南,有不少直接可参考的案例。