Skip to main content

Module mcp_server

Module mcp_server 

Source
Expand description

MCP server support for providing MCP tools over ACP Runtime-agnostic MCP server support for providing MCP tools over ACP.

This module provides the infrastructure for attaching MCP servers to ACP connections without tying the core SDK to a particular MCP implementation or async runtime.

§Building MCP servers with tools

The agent-client-protocol-rmcp crate provides the builder APIs for MCP tools backed by the rmcp crate.

§Custom MCP Server Implementations

You can implement McpServerConnect to create custom MCP servers:

use agent_client_protocol::mcp_server::{McpConnectionTo, McpServer, McpServerConnect};
use agent_client_protocol::{DynConnectTo, NullRun, Role, role};

struct MyCustomServer;

impl<R: Role> McpServerConnect<R> for MyCustomServer {
    fn name(&self) -> String {
        "my-custom-server".to_string()
    }

    fn connect(&self, cx: McpConnectionTo<R>) -> DynConnectTo<role::mcp::Client> {
        // Return a component that serves MCP requests
        DynConnectTo::new(my_mcp_component(cx))
    }
}

let server = McpServer::new(MyCustomServer, NullRun);

Structs§

McpConnectionTo
Context about the ACP and MCP connection available to an MCP server.
McpServer
An MCP server that can be attached to ACP connections.
McpToolMetadata
Runtime-neutral metadata for an MCP tool.
McpToolRegistry
Runtime-neutral registry for MCP tools.
RegisteredMcpTool
A registered MCP tool that can be dispatched with erased JSON values.

Enums§

EnabledTools
Tracks which tools are enabled.

Traits§

McpServerConnect
Trait for types that can create MCP server connections.
McpTool
Trait for defining MCP tools.

Functions§

tool_fn
Create a stateless function-backed MCP tool and its concurrent responder.
tool_fn_mut
Create a “single-threaded” function-backed MCP tool and its responder.

Type Aliases§

McpToolSchema
JSON Schema object used to describe MCP tool inputs and outputs.