生产级 Rust SDK,用于构建零样板的 Model Context Protocol (MCP) 服务器与客户端。支持 STDIO/HTTP/WebSocket/TCP/Unix Socket 多传输协议,内置 OAuth 2.1 + DPoP 认证、SIMD 加速与 OpenTelemetry 可观测性。完整实现 MCP 2025-11-25 规范。
TurboMCP 是由 Epistates, Inc. 开发的 Model Context Protocol (MCP) 生产级 Rust SDK。项目采用 Rust 2024 Edition(需要 Rust 1.89.0+),当前版本 3.0.0-beta.5,完整实现 MCP 2025-11-25 规范。
核心特性#
零样板开发#
通过 #[server]、#[tool]、#[resource]、#[prompt]、#[completion]、#[ping]、#[elicitation] 等过程宏,自动从函数签名生成 JSON Schema,无需手动构建 schema 或参数解析。类型安全的编译期到运行时完整校验。
多传输协议支持#
| 传输 | 性能 | 用途 | 安全 |
|---|---|---|---|
| STDIO | Fast | Claude Desktop, CLI 工具 | 进程隔离 |
| HTTP/SSE | Good | Web 应用, REST API | TLS 1.3, 会话管理 |
| WebSocket | Real-time | 交互式应用 | Secure WebSocket |
| TCP | High throughput | 集群部署 | 可选 TLS |
| Unix Socket | Fast | 容器通信 | 文件权限 |
企业级安全#
- OAuth 2.1 支持 PKCE,多提供商:Google, GitHub, Microsoft, Apple, Okta, Auth0, Keycloak, 通用 OIDC
- DPoP (RFC 9449) 证明持有令牌
- CORS 保护与生产安全默认配置
- 会话管理与超时执行
- TLS 1.3 支持与证书验证
性能优化#
- SIMD 加速 JSON 处理(simd-json / sonic-rs 可选)
- 零拷贝消息处理
- 熔断器、连接池、优雅降级
- 内置基准测试套件(5% 回归检测)
MCP 协议完整覆盖#
- ✅ Tools(完整工具生命周期 + schema 生成)
- ✅ Resources(URI 模板与订阅)
- ✅ Prompts(动态模板与参数)
- ✅ Sampling(服务器发起的 LLM 请求)
- ✅ Completion(智能自动补全)
- ✅ Elicitation(表单 + URL 模式)
- ✅ Logging(结构化双向日志)
- ✅ Roots(文件系统边界配置)
模块化架构(10+ 专用 crates)#
| Crate | 职责 |
|---|---|
turbomcp | 主 SDK,人体工程学 API,过程宏,prelude |
turbomcp-types | 统一类型(唯一真相源) |
turbomcp-core | no_std 核心类型(基础层) |
turbomcp-protocol | 协议实现 |
turbomcp-transport | 多协议传输层 |
turbomcp-server | 服务器框架,Handler registry,中间件 |
turbomcp-client | MCP 客户端,连接管理 |
turbomcp-macros | 过程宏定义 |
turbomcp-cli | 开发工具,测试,schema 导出 |
turbomcp-auth | OAuth 2.1 认证 |
turbomcp-dpop | RFC 9449 DPoP 令牌 |
turbomcp-telemetry | OpenTelemetry 集成 |
turbomcp-wasm | WebAssembly 绑定 |
turbomcp-grpc | gRPC 传输(tonic) |
turbomcp-openapi | OpenAPI 到 MCP 转换 |
快速开始#
[dependencies]
turbomcp = "3.0.0-beta.5"
tokio = { version = "1", features = ["full"] }
use turbomcp::prelude::*;
#[derive(Clone)]
struct Calculator;
#[server(name = "calculator", version = "1.0.0", transports = ["stdio"])]
impl Calculator {
#[tool("Add two numbers")]
async fn add(&self, a: f64, b: f64) -> McpResult<f64> {
Ok(a + b)
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
Calculator.run_stdio().await?;
Ok(())
}
Feature Presets#
| Preset | 用途 | 包含特性 |
|---|---|---|
| default | 基础工具服务器 | STDIO only |
| full | 生产服务器 | 所有传输 + 上下文注入 |
| full-stack | 服务器 + 客户端 | full + client integration |
| network | 网络服务 | STDIO + TCP |
Claude Desktop 集成配置#
{
"mcpServers": {
"hello-server": {
"command": "/path/to/your/server",
"args": []
}
}
}
许可证#
MIT License (Copyright 2025 Epistates, Inc.)