Repository navigation
deps: bump rmcp to >=3.5.1 to fix discover->initialize tools/list failure - #218
Merged
Merged
Conversation
…lure A client that probes `server/discover` before `initialize` (e.g. Claude Code) permanently latched rmcp's internal `request_metadata_required` flag on the session, even after falling back to the classic (`initialize`-negotiated) lifecycle. Every later request without per-request `_meta` -- including an ordinary `tools/list` -- was then rejected with -32602, so the client loaded zero tools. Upstream fix: modelcontextprotocol/rust-sdk#1248, shipped in rmcp 3.5.1. Adds a stdio regression test driving the exact discover -> initialize -> notifications/initialized -> tools/list sequence over an in-memory duplex transport; it reproduces the -32602 failure against the prior rmcp 3.5.0 pin and passes against 3.5.1. Closes #217 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
server/discoverbootstrap probe beforeinitialize(Claude Code, and any client following the same pattern) permanently latched rmcp's internalrequest_metadata_requiredflag on the stdio session, even after the session fell back to the classic (initialize-negotiated) lifecycle. Every later request without per-request_meta-- including an ordinarytools/list-- was then rejected with-32602 request _meta is missing or has malformed required fields, so the client loaded zero tools.rmcpfrom the previously-locked 3.5.0 to>=3.5.1,<4inCargo.toml/Cargo.lock. Upstream fix: fix(server): keep discover lifecycle bootstrap-neutral modelcontextprotocol/rust-sdk#1248, merged 2026-09-07, first shipped in rmcp 3.5.1 (2026-10-05).Closes #217
Test plan
crates/rustsdcmcp/tests/stdio_discover_before_initialize.rsdrives the exact wire sequence from the issue over an in-memory stdio-shaped duplex transport:server/discover(with the 2026-07-28 draft's required_metakeys) ->initialize(protocolVersion2025-11-25) ->notifications/initialized->tools/listwith no_meta, and assertstools/listsucceeds and returns every tool inKNOWN_TOOLS.-32602failure from the issue against the prior rmcp 3.5.0 pin (verified in a scratch build), and passes against 3.5.1.cargo fmt --all -- --checkcargo clippy --workspace --all-targets --all-features --locked -- -D warningscargo build --workspace --lockedcargo test --workspace --locked(all 248 tests pass, including the new regression test)RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps --lockedcargo +1.89 check --workspace --all-targets --locked(MSRV)python3 -m unittest discover -s scripts/testsandpython3 scripts/spec-drift.py self-check(unaffected by this change, confirmed still green)🤖 Generated with Claude Code