diff --git a/crates/context_servers/src/client.rs b/crates/context_servers/src/client.rs index 6681023c00..0bf0d04e86 100644 --- a/crates/context_servers/src/client.rs +++ b/crates/context_servers/src/client.rs @@ -55,11 +55,20 @@ pub struct Client { #[repr(transparent)] pub struct ContextServerId(pub String); +fn is_null_value(value: &T) -> bool { + if let Ok(Value::Null) = serde_json::to_value(value) { + true + } else { + false + } +} + #[derive(Serialize, Deserialize)] struct Request<'a, T> { jsonrpc: &'static str, id: RequestId, method: &'a str, + #[serde(skip_serializing_if = "is_null_value")] params: T, } diff --git a/crates/context_servers/src/protocol.rs b/crates/context_servers/src/protocol.rs index 996fc34f46..12fe18ecf5 100644 --- a/crates/context_servers/src/protocol.rs +++ b/crates/context_servers/src/protocol.rs @@ -113,7 +113,10 @@ impl InitializedContextServerProtocol { let response: types::PromptsListResponse = self .inner - .request(types::RequestType::PromptsList.as_str(), ()) + .request( + types::RequestType::PromptsList.as_str(), + serde_json::json!({}), + ) .await?; Ok(response.prompts) @@ -125,7 +128,10 @@ impl InitializedContextServerProtocol { let response: types::ResourcesListResponse = self .inner - .request(types::RequestType::ResourcesList.as_str(), ()) + .request( + types::RequestType::ResourcesList.as_str(), + serde_json::json!({}), + ) .await?; Ok(response)