Expand description
§TurboMCP Macros
Zero-overhead procedural macros for ergonomic MCP server development, providing compile-time code generation for MCP protocol handlers with graceful shutdown support.
§Features
#[server]
- Convert structs into MCP servers with transport methods and graceful shutdown#[tool]
- Mark methods as MCP tool handlers with automatic schema generation#[prompt]
- Mark methods as MCP prompt handlers with template support#[resource]
- Mark methods as MCP resource handlers with URI templates- Helper macros -
mcp_error!
,mcp_text!
,tool_result!
for ergonomic content creation
§Usage
ⓘ
use turbomcp::prelude::*;
#[derive(Clone)]
struct Calculator {
operations: std::sync::Arc<std::sync::atomic::AtomicU64>,
}
#[server]
impl Calculator {
#[tool("Add two numbers")]
async fn add(&self, a: i32, b: i32) -> McpResult<i32> {
self.operations.fetch_add(1, std::sync::atomic::Ordering::Relaxed);
Ok(a + b)
}
#[tool("Divide two numbers")]
async fn divide(&self, a: f64, b: f64) -> McpResult<f64> {
if b == 0.0 {
return Err(mcp_error!("Cannot divide by zero"));
}
Ok(a / b)
}
}
Macros§
- mcp_
error - Helper macro for creating MCP errors
- mcp_
text - Helper macro for creating MCP ContentBlock structures (advanced usage)
- tool_
result - Helper macro for creating CallToolResult structures (advanced usage)