Skip to content

Commit 9257e23

Browse files
committed
feat(rmcp): Move MCP server builder from core to rmcp crate
1 parent 2b68bcf commit 9257e23

30 files changed

Lines changed: 170 additions & 134 deletions

Cargo.lock

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
members = [
33
"src/agent-client-protocol",
44
"src/agent-client-protocol-derive",
5-
# Keep polyfill before conductor: release-plz currently ignores versioned
5+
# Keep polyfill and rmcp before conductor: release-plz currently ignores versioned
66
# dev-dependency edges, but cargo publish still validates them.
77
"src/agent-client-protocol-polyfill",
8-
"src/agent-client-protocol-conductor",
98
"src/agent-client-protocol-rmcp",
9+
"src/agent-client-protocol-conductor",
1010
"src/agent-client-protocol-test",
1111
"src/agent-client-protocol-trace-viewer",
1212
"src/yopo",

md/design.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ The core SDK. Provides:
1414
- **Connection builders** (`builder()`, `connect_to()`, `connect_with()`)
1515
- **Message handling** (`on_receive_request`, `on_receive_notification`, `on_receive_dispatch`)
1616
- **Protocol types** (`agent_client_protocol::schema::*`) - all ACP message types
17-
- **MCP server builder** - for adding tools to proxies
17+
- **MCP server attachment** - runtime-agnostic interfaces for wiring MCP servers into ACP sessions
1818

1919
### agent-client-protocol-tokio
2020

@@ -27,6 +27,7 @@ Tokio-specific utilities:
2727

2828
Integration with the [rmcp](https://docs.rs/rmcp) crate:
2929

30+
- **`McpServer::builder()`** - define MCP tools in Rust code
3031
- **`McpServer::from_rmcp()`** - wrap an rmcp server as an ACP MCP server
3132

3233
## Role System
@@ -156,7 +157,7 @@ stateDiagram-v2
156157
| `src/agent-client-protocol/src/component.rs` | ConnectTo and Builder traits |
157158
| `src/agent-client-protocol/src/handler.rs` | Connection builder implementation |
158159
| `src/agent-client-protocol/src/typed.rs` | Dispatch type and handler matching |
159-
| `src/agent-client-protocol/src/mcp_server/` | MCP server builder |
160+
| `src/agent-client-protocol/src/mcp_server/` | Runtime-agnostic MCP server attachment |
160161
| `src/agent-client-protocol/src/concepts/` | Rustdoc concept explanations |
161162

162163
## Design Decisions

src/agent-client-protocol-conductor/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ uuid.workspace = true
3737

3838
[dev-dependencies]
3939
agent-client-protocol = { workspace = true, features = ["unstable_mcp_over_acp"] }
40+
agent-client-protocol-rmcp.workspace = true
4041
agent-client-protocol-test.workspace = true
4142
yopo.workspace = true
4243
expect-test.workspace = true

src/agent-client-protocol-conductor/tests/mcp_integration/proxy.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
33
use agent_client_protocol::mcp_server::McpServer;
44
use agent_client_protocol::{Conductor, ConnectTo, Proxy};
5+
use agent_client_protocol_rmcp::McpServerExt as _;
56
use schemars::JsonSchema;
67
use serde::{Deserialize, Serialize};
78

src/agent-client-protocol-conductor/tests/mcp_server_handler_chain.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use agent_client_protocol::schema::{
1212
};
1313
use agent_client_protocol::{Agent, Client, Conductor, ConnectTo, DynConnectTo, Proxy};
1414
use agent_client_protocol_conductor::{ConductorImpl, ProxiesAndAgent};
15+
use agent_client_protocol_rmcp::McpServerExt as _;
1516
use schemars::JsonSchema;
1617
use serde::{Deserialize, Serialize};
1718
use std::path::PathBuf;

src/agent-client-protocol-conductor/tests/scoped_mcp_server.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use agent_client_protocol::mcp_server::McpServer;
88
use agent_client_protocol::{Agent, Conductor, ConnectTo, Proxy, Role, RunWithConnectionTo};
99
use agent_client_protocol_conductor::{ConductorImpl, ProxiesAndAgent};
1010
use agent_client_protocol_polyfill::mcp_over_acp::McpOverAcpPolyfill;
11+
use agent_client_protocol_rmcp::McpServerExt as _;
1112
use agent_client_protocol_test::testy::{Testy, TestyCommand};
1213
use schemars::JsonSchema;
1314
use serde::{Deserialize, Serialize};

src/agent-client-protocol-conductor/tests/standalone_mcp_server.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use agent_client_protocol::{
77
ByteStreams, ConnectTo, RunWithConnectionTo, mcp_server::McpServer, role::mcp, util::run_until,
88
};
9+
use agent_client_protocol_rmcp::McpServerExt as _;
910
use rmcp::{ClientHandler, ServiceExt, model::ClientInfo};
1011
use schemars::JsonSchema;
1112
use serde::{Deserialize, Serialize};

src/agent-client-protocol-conductor/tests/test_mcp_tool_output_types.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use agent_client_protocol::mcp_server::McpServer;
77
use agent_client_protocol::{Conductor, ConnectTo, DynConnectTo, Proxy, RunWithConnectionTo};
88
use agent_client_protocol_conductor::{ConductorImpl, ProxiesAndAgent};
99
use agent_client_protocol_polyfill::mcp_over_acp::McpOverAcpPolyfill;
10+
use agent_client_protocol_rmcp::McpServerExt as _;
1011
use agent_client_protocol_test::testy::{Testy, TestyCommand};
1112
use schemars::JsonSchema;
1213
use serde::{Deserialize, Serialize};

src/agent-client-protocol-conductor/tests/test_session_id_in_mcp_tools.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use agent_client_protocol::mcp_server::McpServer;
1313
use agent_client_protocol::{Conductor, ConnectTo, DynConnectTo, Proxy};
1414
use agent_client_protocol_conductor::{ConductorImpl, ProxiesAndAgent};
1515
use agent_client_protocol_polyfill::mcp_over_acp::McpOverAcpPolyfill;
16+
use agent_client_protocol_rmcp::McpServerExt as _;
1617
use agent_client_protocol_test::testy::{Testy, TestyCommand};
1718
use schemars::JsonSchema;
1819
use serde::{Deserialize, Serialize};

0 commit comments

Comments
 (0)