docs: ClientHandler list_changed callbacks don't mention Peer::listen (2026-07-28)
Maintainer thường phản hồi trong vòng 3 ngày
@DaleSeo đang làm issue này rồi.
Từ ngày 24/10/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
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.
- Ngôn ngữ chính
- Rust
- Star
- 4.1k
- Fork
- 680
- Merge trung bình
- 4 ngày 1 giờ
- Pull request đã merge (30 ngày)
- 35
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của modelcontextprotocol/rust-sdk
-
auth: refresh_token() requests offline_access that was never granted, so refreshes fail with invalid_scopeCó thể đã có người làm @jstar0 đã nhận 19 ngày trước. Đang mởbug P1 ready for work T-security T-transport
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
modelcontextprotocol/rust-sdk#1330 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
stdio transport: a request over the maximum line length gets no answerCó thể đã có người làm @gocamille đã nhận 1 ngày trước. Đang mởbug P1 ready for work T-transport
modelcontextprotocol/rust-sdk#1395 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Support the Skills extension (SEP-2640)Có thể đã có người làm @DaleSeo đã nhận 4 ngày trước. Đang mởenhancement P2 ready for work T-enhancement T-handler T-model T-service
modelcontextprotocol/rust-sdk#1391 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 3 ngày
-
reqwest Streamable HTTP client matches response Content-Type by case-sensitive prefixCó thể đã có người làm @DaleSeo đã nhận 4 ngày trước. Đang mởbug P1 ready for work T-transport
modelcontextprotocol/rust-sdk#1389 · 2 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Streamable HTTP server: Accept and Content-Type are matched case-sensitively and by substring/prefixCó thể đã có người làm @DaleSeo đã nhận 7 ngày trước. Đang mởbug P1 ready for work T-transport
modelcontextprotocol/rust-sdk#1381 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 3 ngày
Tất cả issue của modelcontextprotocol/rust-sdk
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
dsx-ai-factory/infra-controller#8341 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement triage:deciding
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
open-telemetry/otel-arrow#4540 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
component:benchmark
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
agentic-os-org/ANOLISA#9177 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
oracle/rust-oracledb#61 ·
-
bug priority-medium to-agent
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày