fix: stamp server info on graceful subscription results (#1078)

* fix: stamp server info on graceful subscription results

* fix: expose subscription server info metadata

---------

Co-authored-by: mrcs64 <9069178+mrcs64@users.noreply.github.com>
This commit is contained in:
mrcs64 2026-07-29 19:34:33 +02:00 • committed by GitHub
commit cb50ae7890
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -18,8 +18,8 @@ use std::{
use rmcp::{
ClientLifecycleMode, ClientServiceExt, ServerHandler,
model::{
ClientInfo, ClientRequest, ListToolsRequest, ProtocolVersion, RequestMetaObject,
ServerCapabilities, ServerInfo, ServerNotification, SubscriptionFilter,
ClientInfo, ClientRequest, Implementation, ListToolsRequest, ProtocolVersion,
RequestMetaObject, ServerCapabilities, ServerInfo, ServerNotification, SubscriptionFilter,
},
service::{PeerRequestOptions, SubscriptionContext, SubscriptionEnd},
transport::{
@ -59,6 +59,7 @@ impl ServerHandler for HttpSubscriptionServer {
.enable_tool_list_changed()
.build(),
)
.with_server_info(Implementation::new("http-subscription-server", "1.0.0"))
}
fn accepted_subscription_filter(
@ -217,10 +218,16 @@ async fn modern_http_graceful_close_returns_final_listen_result() -> anyhow::Res
assert!(subscription.next().await?.is_some());
assert!(subscription.next().await?.is_none());
assert!(matches!(
subscription.end(),
Some(SubscriptionEnd::Graceful(_))
));
let Some(SubscriptionEnd::Graceful(result)) = subscription.end() else {
panic!("expected graceful final result");
};
assert_eq!(
result
.meta
.server_info()
.expect("graceful result should contain valid server info"),
Implementation::new("http-subscription-server", "1.0.0")
);
client.cancel().await?;
server_ct.cancel();