Crate turbomcp_macros

Crate turbomcp_macros 

Source
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)

Attribute Macros§

prompt
Marks a method as a prompt handler
resource
Marks a method as a resource handler
server
Marks an impl block as a TurboMCP server (idiomatic Rust)
tool
Marks a method as a tool handler