pub struct McpSdkServer {
pub name: String,
pub version: String,
/* private fields */
}Expand description
In-process MCP server that hosts custom tools.
Implements the MCP tool listing and calling protocol. Tool calls are dispatched to the registered handler functions and executed within your application.
Fields§
§name: StringServer name identifier.
version: StringServer version string.
Implementations§
Source§impl McpSdkServer
impl McpSdkServer
Sourcepub fn new(
name: impl Into<String>,
version: impl Into<String>,
tools: Vec<SdkMcpTool>,
) -> Self
pub fn new( name: impl Into<String>, version: impl Into<String>, tools: Vec<SdkMcpTool>, ) -> Self
Creates a new MCP server with the given name, version, and tools.
§Example
use claude_code::{tool, McpSdkServer};
use serde_json::{json, Value};
let tools = vec![tool(
"ping",
"Ping tool",
json!({"type":"object"}),
|_args: Value| async move { Ok(json!({"content": []})) },
)];
let server = McpSdkServer::new("local-tools", "1.0.0", tools);
assert_eq!(server.name, "local-tools");Sourcepub fn has_tools(&self) -> bool
pub fn has_tools(&self) -> bool
Returns true if the server has any registered tools.
§Example
use claude_code::McpSdkServer;
let server = McpSdkServer::new("empty", "1.0.0", vec![]);
assert!(!server.has_tools());Sourcepub fn list_tools_json(&self) -> Vec<Value>
pub fn list_tools_json(&self) -> Vec<Value>
Returns JSON representations of all registered tools (for tools/list responses).
§Example
use claude_code::{tool, McpSdkServer};
use serde_json::{json, Value};
let server = McpSdkServer::new(
"demo",
"1.0.0",
vec![tool(
"echo",
"Echo text",
json!({"type":"object","properties":{"text":{"type":"string"}}}),
|_args: Value| async move { Ok(json!({"content": []})) },
)],
);
let tools = server.list_tools_json();
assert_eq!(tools.len(), 1);Sourcepub async fn call_tool_json(&self, tool_name: &str, arguments: Value) -> Value
pub async fn call_tool_json(&self, tool_name: &str, arguments: Value) -> Value
Calls a tool by name with the given arguments and returns the JSON result.
If the tool is not found or the handler returns an error, an error result
in MCP format is returned (with isError: true).
§Example
use claude_code::{tool, McpSdkServer};
use serde_json::{json, Value};
let server = McpSdkServer::new(
"demo",
"1.0.0",
vec![tool(
"echo",
"Echo text",
json!({"type":"object","properties":{"text":{"type":"string"}}}),
|args: Value| async move {
Ok(json!({"content":[{"type":"text","text":args["text"]}]}))
},
)],
);
let result = server.call_tool_json("echo", json!({"text":"hello"})).await;
assert!(result.get("content").is_some());Trait Implementations§
Source§impl Clone for McpSdkServer
impl Clone for McpSdkServer
Source§fn clone(&self) -> McpSdkServer
fn clone(&self) -> McpSdkServer
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for McpSdkServer
impl !RefUnwindSafe for McpSdkServer
impl Send for McpSdkServer
impl Sync for McpSdkServer
impl Unpin for McpSdkServer
impl UnsafeUnpin for McpSdkServer
impl !UnwindSafe for McpSdkServer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more