#![allow(dead_code)] use rmcp::{handler::server::wrapper::Parameters, schemars, tool, tool_router}; #[derive(Debug, serde::Deserialize, schemars::JsonSchema)] pub struct SumRequest { #[schemars(description = "the left hand side number")] pub a: i32, pub b: i32, } #[derive(Debug, serde::Deserialize, schemars::JsonSchema)] pub struct SubRequest { #[schemars(description = "the left hand side number")] pub a: i32, #[schemars(description = "the right hand side number")] pub b: i32, } #[derive(Debug, Clone)] pub struct Calculator; #[tool_router(server_handler)] impl Calculator { #[tool(description = "Calculate the sum of two numbers")] fn sum(&self, Parameters(SumRequest { a, b }): Parameters) -> String { (a + b).to_string() } #[tool(description = "Calculate the difference of two numbers")] fn sub(&self, Parameters(SubRequest { a, b }): Parameters) -> String { (a - b).to_string() } }