docs: ClientHandler list_changed callbacks don't mention Peer::listen (2026-07-28)
Mantenedores costumam responder em até 3 dias
Avaliação
Esta issue ainda não foi avaliada.
Descrição
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.
- Linguagem predominante
- Rust
- Estrelas
- 4.1k
- Forks
- 680
- Merge médio
- 3d 19h
- PRs com merge (30d)
- 39
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de modelcontextprotocol/rust-sdk
-
auth: refresh_token() requests offline_access that was never granted, so refreshes fail with invalid_scopeTalvez já em andamento @jstar0 assumiu há 24 dias. Abertabug P1 ready for work T-security T-transport
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
modelcontextprotocol/rust-sdk#1330 ·
Mantenedores costumam responder em até 3 dias
-
OAuth discovery drops explicit default ports from advertised issuer identifiersTalvez já em andamento @gocamille assumiu há 1 dia. Abertabug P1 ready for work T-security T-transport
modelcontextprotocol/rust-sdk#1420 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 3 dias
-
`register_client` drops `client_secret_expires_at` from the registration responseTalvez já em andamento @gocamille assumiu há 2 dias. Abertabug P2 ready for work T-security
modelcontextprotocol/rust-sdk#1416 · 1 comentário · 1 responsável ·
Mantenedores costumam responder em até 3 dias
-
Typed client calls drop the parse error when a reply misses a required fieldTalvez já em andamento @gocamille assumiu há 2 dias. Abertaenhancement P2 ready for work T-core T-service
modelcontextprotocol/rust-sdk#1415 · 1 comentário · 1 responsável ·
Mantenedores costumam responder em até 3 dias
-
Return merged cache hints from list_all_* client methodsTalvez já em andamento @gocamille assumiu há 3 dias. Abertaenhancement P2 ready for work T-service
modelcontextprotocol/rust-sdk#1411 · 1 comentário · 1 responsável ·
Mantenedores costumam responder em até 3 dias
Todas as issues de modelcontextprotocol/rust-sdk
Issues semelhantes
-
accessibility good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
dividebysandwich/rust-dos#434 ·
Mantenedores costumam responder em até 1 dia
-
go good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia