diff --git a/Cargo.lock b/Cargo.lock index 1e2f7538a..7e032f82d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -264,7 +264,7 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures 0.3.1", ] [[package]] @@ -310,9 +310,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88b7ea17d208c4193f2c1e6de3c35fe71f98c96982d5ced308bdcc749ff6e1f" +checksum = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a" dependencies = [ "borsh-derive", "bytes", @@ -321,15 +321,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f347189c62a579b8cd5f80714efa178f52e461dc2e6d701d264f5ff22e566c" +checksum = "12cdfe656708a01f89b451a7d36466e6fe6c414de0aa18fc54f864f6f9ca9f56" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.4", ] [[package]] @@ -603,9 +603,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" dependencies = [ "libc", ] @@ -1617,9 +1617,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.14.0" +version = "2.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +checksum = "07aa2048142242915a31d35844fb311e0e53fcca590c3a0a40dcf1b841fa09eb" dependencies = [ "equivalent", "hashbrown 0.17.1", @@ -1852,9 +1852,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.18.2" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d2f2f9b4ba7e6b24d95e7e899329d35be83bcded72c8540cdd5368932d1d90a" +checksum = "0d317b4b9eb398e6acce275758ec6125535505e7a146fb1a9b8bda2451b0ff4c" dependencies = [ "hashbrown 0.17.1", ] @@ -2602,7 +2602,7 @@ dependencies = [ "hashbrown 0.17.1", "itertools 0.14.0", "kasuari", - "lru 0.18.2", + "lru 0.18.3", "palette", "serde", "strum", @@ -2794,9 +2794,9 @@ dependencies = [ [[package]] name = "rmcp" -version = "3.1.4" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a15bc53261a9dc37e105df006e4656c598379a8f9581f8950debb130f27a7cf" +checksum = "42b6914fac0be956fe704a38239c3f44a9f841d1b06a5713d2f638065593f5b5" dependencies = [ "base64 0.23.1", "chrono", @@ -2817,9 +2817,9 @@ dependencies = [ [[package]] name = "rmcp-macros" -version = "3.1.4" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a85d45508e9b4ba024fe996c2638799635d75b6dd0ba8f32ccf08f8026f0c780" +checksum = "cdf1c49bd4d52014b94db0877410db273c2008f01628b0252a2e9460ad9b7fda" dependencies = [ "darling", "proc-macro2", @@ -3032,7 +3032,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.3.0", + "cpufeatures 0.3.1", "digest 0.11.3", ] @@ -3912,9 +3912,9 @@ dependencies = [ [[package]] name = "tree-sitter-language" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009994f150cc0cd50ff54917d5bc8bffe8cad10ca10d81c34da2ec421ae61782" +checksum = "ca0d1bf6fdd806e43ae5198f82f527056d359def39e54e67a0f478ac09dac081" [[package]] name = "tree-sitter-lua" diff --git a/crates/ecp-mcp/Cargo.toml b/crates/ecp-mcp/Cargo.toml index 80bee9435..9fddd8294 100644 --- a/crates/ecp-mcp/Cargo.toml +++ b/crates/ecp-mcp/Cargo.toml @@ -17,7 +17,7 @@ ecp-core = { workspace = true } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" tokio = { version = "1", features = ["rt-multi-thread", "macros", "io-std", "process"] } -rmcp = { version = "3.1", features = ["server", "transport-io"] } +rmcp = { version = "3.2", features = ["server", "transport-io"] } [dev-dependencies] clap = { version = "4.5", features = ["derive"] } diff --git a/crates/ecp-mcp/src/server.rs b/crates/ecp-mcp/src/server.rs index 4a116d29f..78eaa32f0 100644 --- a/crates/ecp-mcp/src/server.rs +++ b/crates/ecp-mcp/src/server.rs @@ -142,6 +142,16 @@ const TOOL_LIST_TTL_MS: u64 = 60_000; /// /// Older peers predate both fields and keep the legacy wire shape, matching /// how rmcp's own `#[tool_handler]` gates them. +/// +/// Since rmcp 3.2.0 the hints branch is unreachable over stdio, and that is the +/// spec's intent rather than a bug to route around. `negotiate_protocol_version` +/// (rust-sdk#1228) now returns a legacy version on every path, because an +/// `initialize` handshake selects legacy semantics whatever version the client +/// names; `2026-07-28` arrives only through the discover lifecycle, which rmcp +/// wires in the streamable-HTTP tower service alone. `serve_stdio` goes through +/// `serve_server`, so `protocol` is always below the gate today. Keep the branch: +/// it is what a discover-lifecycle peer must receive, and it goes live the day +/// `ecp` gains an HTTP transport or rmcp gives stdio that lifecycle. fn list_tools_result( tools: Vec, protocol: Option,