diff --git a/crates/rmcp/src/handler/server.rs b/crates/rmcp/src/handler/server.rs index c28d66312..0844591f8 100644 --- a/crates/rmcp/src/handler/server.rs +++ b/crates/rmcp/src/handler/server.rs @@ -465,7 +465,11 @@ macro_rules! server_handler_methods { request: CompleteRequestParams, context: RequestContext, ) -> impl Future> + MaybeSendFuture + '_ { - std::future::ready(Ok(CompleteResult::default())) + std::future::ready(if self.get_info().capabilities.completions.is_some() { + Ok(CompleteResult::default()) + } else { + Err(McpError::method_not_found::()) + }) } fn set_level( &self, @@ -486,7 +490,11 @@ macro_rules! server_handler_methods { request: Option, context: RequestContext, ) -> impl Future> + MaybeSendFuture + '_ { - std::future::ready(Ok(ListPromptsResult::default())) + std::future::ready(if self.get_info().capabilities.prompts.is_some() { + Ok(ListPromptsResult::default()) + } else { + Err(McpError::method_not_found::()) + }) } fn list_resources( &self,