rmcp integration for Agent Client Protocol MCP servers.
This crate bridges rmcp-based MCP server implementations with the
runtime-agnostic MCP server framework from agent-client-protocol. It lets you define MCP tools in
Rust, serve them directly, or attach them to an ACP proxy.
Attached servers are advertised with the opt-in native MCP-over-ACP transport:
McpServer::Acp plus mcp/connect, mcp/message, and mcp/disconnect. This
crate does not enable the core SDK's unstable_mcp_over_acp feature merely to
build or directly serve a server. Enable this crate's matching
unstable_mcp_over_acp feature when using with_mcp_server. Use
agent-client-protocol-polyfill when the final agent accepts HTTP but not
ACP-transport MCP servers.
Use the McpServerExt trait to build an MCP server with tools:
use agent_client_protocol::{ConnectTo, mcp_server::McpServer, role::mcp};
use agent_client_protocol_rmcp::McpServerExt;
async fn serve(
client_transport: impl ConnectTo<mcp::Server>,
) -> agent_client_protocol::Result<()> {
let server = McpServer::<mcp::Client>::builder("my-tools").build();
server.connect_to(client_transport).await
}Choosing mcp::Client as the counterpart makes this a standalone MCP server
that implements ConnectTo<mcp::Client>.
Or create an MCP server from an rmcp service:
use agent_client_protocol::mcp_server::McpServer;
use agent_client_protocol_rmcp::McpServerExt;
let server = McpServer::from_rmcp("my-server", MyRmcpService::new);
// Use as a handler in a proxy
Proxy.builder()
.with_mcp_server(server)
.connect_to(transport)
.await?;This crate is separate from agent-client-protocol to avoid coupling the core protocol crate to the rmcp dependency. This allows:
agent-client-protocolto remain focused on the ACP protocolagent-client-protocol-rmcpto trackrmcpupdates independently- Integrations to choose compatible
agent-client-protocolandrmcpmajor versions explicitly
Both agent-client-protocol and rmcp are public dependencies of this crate:
their types and traits appear in its public API. A source-incompatible major
release of either dependency therefore requires a major release of this crate.
| agent-client-protocol-rmcp | agent-client-protocol | rmcp |
|---|---|---|
| 3.x | 2.x | 2.x |
| 2.x | 1.x | 2.x |
| 1.x | 1.x | 1.x |
- agent-client-protocol — Core ACP protocol types and traits
- agent-client-protocol-conductor — Proxy-chain orchestration
Apache-2.0