docs: ClientHandler list_changed callbacks don't mention Peer::listen (2026-07-28)
Maintainer antworten meist innerhalb von 3 Tagen
@DaleSeo arbeitet bereits daran.
Seit 24.10.2026.
Bewertung
Dieses Issue wurde noch nicht bewertet.
Beschreibung
Summary
ClientHandler::on_tool_list_changed, on_prompt_list_changed and on_resource_list_changed (crates/rmcp/src/handler/client.rs) have no rustdoc, and nothing in that file mentions Peer::listen.
On 2026-07-28, list-changed notifications go through subscriptions/listen: servers SHOULD send notifications/tools/list_changed to clients that opened a listen stream with toolsListChanged: true (Tools), and MUST NOT send notification types the client has not requested (Subscriptions). So with a compliant server:
- a client that never calls
Peer::listengets no list-changed notifications, and the callbacks never fire; - a client that does call it gets them on the
Subscription: the serve loop routes notifications whose_meta["io.modelcontextprotocol/subscriptionId"]matches an active subscription to that channel and skipshandle_notification(crates/rmcp/src/service.rs~L1645-1678; the response cache is still invalidated first, ~L1612).
On 2025-11-25, or with servers that still send unscoped notifications, the callbacks fire as before.
Peer::listen already says "Notifications routed to the returned Subscription are not also delivered through ClientHandler callbacks", but the callbacks themselves don't, and the README's resources section (~L489, "Clients handle these via ClientHandler") shows on_resource_list_changed without pointing to the Subscriptions section. Real-world example: goose implements on_tool_list_changed without opening a listen stream (aaif-goose/goose#13055).
Proposal
Docs only: rustdoc on the three callbacks saying they receive only notifications not routed to a Subscription, pointing to Peer::listen with SubscriptionFilterBuilder::{tools,prompts,resources}_list_changed() and the subscriptions_streamhttp client example. Optionally a one-line pointer from the README's resources section to the Subscriptions section. Happy to open the PR if this direction works for you.
AI Disclosure (pursuant to the AI Contribution Policy): I used Claude to help write this issue; all checks, reviews, and code were handled by me personally.
- Vorherrschende Sprache
- Rust
- Sterne
- 4.1k
- Forks
- 680
- Ø Merge
- 4 T. 1 Std.
- Gemergte PRs (30 T.)
- 35
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus modelcontextprotocol/rust-sdk
-
auth: refresh_token() requests offline_access that was never granted, so refreshes fail with invalid_scopeEvtl. vergeben @jstar0 hat das vor 18 Tagen übernommen. Offenbug P1 ready for work T-security T-transport
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
modelcontextprotocol/rust-sdk#1330 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
stdio transport: a request over the maximum line length gets no answerEvtl. vergeben @gocamille hat das vor 1 Tag übernommen. Offenbug P1 ready for work T-transport
modelcontextprotocol/rust-sdk#1395 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Support the Skills extension (SEP-2640)Evtl. vergeben @DaleSeo hat das vor 4 Tagen übernommen. Offenenhancement P2 ready for work T-enhancement T-handler T-model T-service
modelcontextprotocol/rust-sdk#1391 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 3 Tagen
-
reqwest Streamable HTTP client matches response Content-Type by case-sensitive prefixEvtl. vergeben @DaleSeo hat das vor 4 Tagen übernommen. Offenbug P1 ready for work T-transport
modelcontextprotocol/rust-sdk#1389 · 2 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Streamable HTTP server: Accept and Content-Type are matched case-sensitively and by substring/prefixEvtl. vergeben @DaleSeo hat das vor 7 Tagen übernommen. Offenbug P1 ready for work T-transport
modelcontextprotocol/rust-sdk#1381 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 3 Tagen
Alle Issues in modelcontextprotocol/rust-sdk
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
status:untriaged
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
midnightntwrk/midnight-zk#592 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
QuartoHub: have the Document name before the filename in the browser tabEvtl. vergeben @cscheid hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
quarto-dev/q2#930 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
muse P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
HerringtonDarkholme/hd-lang#923 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag