pub async fn handle_sdk_mcp_request(
sdk_mcp_servers: &HashMap<String, Arc<McpSdkServer>>,
server_name: &str,
message: &Value,
) -> ValueExpand description
Routes an MCP message to the appropriate in-process SDK MCP server.
Implements JSON-RPC message routing for in-process SDK MCP servers.
Handles initialize, tools/list, tools/call, and notifications/initialized methods.
ยงExample
use claude_code::{create_sdk_mcp_server, tool};
use claude_code::query::handle_sdk_mcp_request;
use serde_json::{json, Value};
use std::collections::HashMap;
use std::sync::Arc;
let config = create_sdk_mcp_server(
"tools",
"1.0.0",
vec![tool("echo", "Echo", json!({"type":"object"}), |_args: Value| async move {
Ok(json!({"content": []}))
})],
);
let mut servers = HashMap::new();
servers.insert(config.name.clone(), Arc::clone(&config.instance));
let response = handle_sdk_mcp_request(
&servers,
"tools",
&json!({"jsonrpc":"2.0","id":1,"method":"tools/list"}),
)
.await;
assert_eq!(response["jsonrpc"], "2.0");