Procedural macros for mcp-host
Provides attribute macros for ergonomic MCP tool, resource, and prompt definition.
Usage
use *;
use JsonSchema;
// Registration:
let server = new;
tool_router.register_all;
Procedural macros for mcp-host
Provides attribute macros for ergonomic MCP tool, resource, and prompt definition.
use mcp_host::prelude::*;
use schemars::JsonSchema;
#[derive(Deserialize, JsonSchema)]
struct CalcParams {
x: f64,
y: f64,
}
#[mcp_tool_router]
impl MyServer {
/// A calculator tool
#[mcp_tool(name = "calculate")]
async fn calculate(&self, ctx: Ctx, params: Parameters<CalcParams>) -> ToolResult {
Ok(vec![text(&format!("Result: {}", params.0.x + params.0.y))])
}
#[mcp_tool(visible = "ctx.is_admin()")]
async fn admin_tool(&self, ctx: Ctx, params: Parameters<AdminParams>) -> ToolResult {
// Only visible to admin users
}
}
// Registration:
let server = Arc::new(MyServer::new());
MyServer::tool_router().register_all(®istry, server);