docs: ClientHandler list_changed callbacks don't mention Peer::listen (2026-07-28)
I maintainer di solito rispondono entro 3 giorni
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
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.
- Lingua principale
- Rust
- Stelle
- 4.1k
- Fork
- 680
- Merge medio
- 3g 20h
- PR unite (30g)
- 32
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di modelcontextprotocol/rust-sdk
-
auth: refresh_token() requests offline_access that was never granted, so refreshes fail with invalid_scopeForse già presa @jstar0 l’ha presa 20 giorni fa. Apertabug P1 ready for work T-security T-transport
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
modelcontextprotocol/rust-sdk#1330 ·
I maintainer di solito rispondono entro 3 giorni
-
Enterprise-managed auth: ID-JAG `resource` claim should be optionalForse già presa @gocamille l’ha presa 1 giorno fa. Apertabug P1 ready for work T-security T-transport
modelcontextprotocol/rust-sdk#1404 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 3 giorni
-
Auto discovery timeout rejects a late probe response during legacy initializationForse già presa @gocamille l’ha presa 1 giorno fa. Apertabug P1 ready for work T-service
modelcontextprotocol/rust-sdk#1400 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 3 giorni
-
URL mode elicitation requires elicitationId, which the 2026-07-28 schema removedForse già presa @gocamille l’ha presa 2 giorni fa. Apertabug P1 ready for work T-model
modelcontextprotocol/rust-sdk#1399 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 3 giorni
-
stdio transport: a request over the maximum line length gets no answerForse già presa @gocamille l’ha presa 3 giorni fa. Apertabug P1 ready for work T-transport
modelcontextprotocol/rust-sdk#1395 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di modelcontextprotocol/rust-sdk
Issue simili
-
Add a just recipe that runs the workflow linters locallyForse già presa @sgamelin l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
good first issue security
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
-
Status bar: a progress line that keeps the same text (import at 0%) ages out after 8 s and blinksApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
transit-audio/transit#216 ·
-
area: effects devices enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
suhina-daw/suhina-daw#1060 ·
I maintainer di solito rispondono entro 1 giorno