diff --git a/crates/rmcp-macros/src/tool.rs b/crates/rmcp-macros/src/tool.rs index d6662f079..f986279cc 100644 --- a/crates/rmcp-macros/src/tool.rs +++ b/crates/rmcp-macros/src/tool.rs @@ -176,9 +176,9 @@ pub fn tool(attr: TokenStream, input: TokenStream) -> syn::Result { rmcp::handler::server::common::cached_schema_for_type::<#params_ty>() })? } else { - // if not found, use the default EmptyObject schema + // if not found, use a simple empty JSON object syn::parse2::(quote! { - rmcp::handler::server::common::cached_schema_for_type::() + std::sync::Arc::new(serde_json::Map::new()) })? } }; diff --git a/crates/rmcp/tests/test_tool_macros.rs b/crates/rmcp/tests/test_tool_macros.rs index e30d31cbc..8825f1229 100644 --- a/crates/rmcp/tests/test_tool_macros.rs +++ b/crates/rmcp/tests/test_tool_macros.rs @@ -110,7 +110,7 @@ async fn test_tool_macros() { async fn test_tool_macros_with_empty_param() { let _attr = Server::empty_param_tool_attr(); println!("{_attr:?}"); - assert_eq!(_attr.input_schema.get("type").unwrap(), "object"); + assert!(_attr.input_schema.get("type").is_none()); assert!(_attr.input_schema.get("properties").is_none()); }