Skip to main content

handle_sdk_mcp_request

Function handle_sdk_mcp_request 

Source
pub async fn handle_sdk_mcp_request(
    sdk_mcp_servers: &HashMap<String, Arc<McpSdkServer>>,
    server_name: &str,
    message: &Value,
) -> Value
Expand 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");