pub trait McpServerConnect<Counterpart: Role>:
Send
+ Sync
+ 'static {
// Required methods
fn name(&self) -> String;
fn connect(&self, cx: McpConnectionTo<Counterpart>) -> DynConnectTo<Client>;
}Expand description
Trait for types that can create MCP server connections.
Implement this trait to create custom MCP servers. Each call to connect
should return a new ConnectTo that serves MCP requests for a single
connection.
§Example
use agent_client_protocol::mcp_server::{McpServerConnect, McpConnectionTo};
use agent_client_protocol::{DynConnectTo, role::Role};
struct MyMcpServer {
name: String,
}
impl<R: Role> McpServerConnect<R> for MyMcpServer {
fn name(&self) -> String {
self.name.clone()
}
fn connect(&self, cx: McpConnectionTo<R>) -> DynConnectTo<role::mcp::Client> {
// Create and return a component that handles MCP requests
DynConnectTo::new(MyMcpComponent::new(cx))
}
}Required Methods§
Sourcefn connect(&self, cx: McpConnectionTo<Counterpart>) -> DynConnectTo<Client>
fn connect(&self, cx: McpConnectionTo<Counterpart>) -> DynConnectTo<Client>
Create a component to service a new MCP connection.
This is called each time an MCP client connects to this server. The returned component will handle MCP protocol messages for that connection.
Any communication primitives shared with the server’s
RunWithConnectionTo task must be created
before the McpServer is returned. The runner has no
separate readiness protocol and may continue asynchronous initialization
while connections and their messages are queued.
McpConnectionTo distinguishes a direct MCP connection from an
ACP-attached connection and provides the corresponding host connection.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".