pub struct ToolDefinition {
pub name: String,
pub description: String,
pub input_schema: Value,
}Expand description
Tool definition for MCP tools/list response.
This struct represents a tool that can be called by MCP clients. It includes the tool’s name, description, and JSON Schema for input validation. This is a type-erased version that allows storing multiple tools with different input types in the same collection.
§Fields
name: Unique identifier for the tooldescription: Human-readable description of what the tool doesinput_schema: JSON Schema defining the expected input parameters
§Example
use solidmcp::handler::ToolDefinition;
use serde_json::json;
let tool = ToolDefinition {
name: "calculate".to_string(),
description: "Perform arithmetic operations".to_string(),
input_schema: json!({
"type": "object",
"properties": {
"a": { "type": "number" },
"b": { "type": "number" },
"operation": {
"type": "string",
"enum": ["add", "subtract", "multiply", "divide"]
}
},
"required": ["a", "b", "operation"]
}),
};Fields§
§name: String§description: String§input_schema: ValueImplementations§
Source§impl ToolDefinition
impl ToolDefinition
Sourcepub fn from_schema<T: JsonSchema>(
name: impl Into<String>,
description: impl Into<String>,
) -> Self
pub fn from_schema<T: JsonSchema>( name: impl Into<String>, description: impl Into<String>, ) -> Self
Create a new tool definition from a JsonSchema type.
This method automatically generates a JSON Schema from a Rust type that
implements the JsonSchema trait. This is the preferred way to create
tool definitions when using the framework API.
§Type Parameters
T: Type that implementsschemars::JsonSchema
§Parameters
name: The unique name for this tooldescription: Human-readable description of the tool’s purpose
§Returns
A new ToolDefinition with the schema automatically generated from type T
§Example
use solidmcp::handler::ToolDefinition;
use schemars::JsonSchema;
use serde::Deserialize;
#[derive(JsonSchema, Deserialize)]
struct SearchInput {
query: String,
#[serde(default)]
limit: u32,
}
let tool = ToolDefinition::from_schema::<SearchInput>(
"search",
"Search for items matching a query"
);Sourcepub fn to_json(&self) -> Value
pub fn to_json(&self) -> Value
Convert to the JSON format expected by MCP protocol.
This method serializes the tool definition into the format required by the MCP protocol for the tools/list response.
§Returns
A JSON value containing the tool’s name, description, and input schema
§Example
let json = tool.to_json();
assert_eq!(json["name"], "calculate");
assert_eq!(json["description"], "Perform arithmetic operations");
assert!(json["input_schema"].is_object());Trait Implementations§
Source§impl Clone for ToolDefinition
impl Clone for ToolDefinition
Source§fn clone(&self) -> ToolDefinition
fn clone(&self) -> ToolDefinition
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more