* feat: add type-safe elicitation schema support (#465) Implement type-safe schema definitions for MCP elicitation requests, replacing generic `JsonObject` with strongly-typed primitive schemas per the [MCP 2025-06-18 specification](https://spec.modelcontextprotocol.io/specification/2025-06-18/server/elicitation/). Features: - Type-safe schema hierarchy (`StringSchema`, `NumberSchema`, `IntegerSchema`, `BooleanSchema`) - Builder pattern with fluent API and 20+ convenience methods - Build-time validation ensuring required fields exist in properties - Private fields enforcing invariants through validated constructors - Comprehensive validation support (range, length, format, enums) - Typed property methods for cleaner schema construction Benefits: - Compile-time type safety prevents invalid schema construction - 60-70% reduction in boilerplate through convenience methods - Enforces MCP specification requirement for primitive-only properties - Better IDE autocomplete and type inference - Runtime validation catches schema errors early Breaking changes: - `CreateElicitationRequestParam.requested_schema` changed from `JsonObject` to `ElicitationSchema` - `ElicitationSchemaBuilder::build()` now returns `Result` instead of direct value Fixes #465 * fix: fix RMCP compliance * feat: add conversion methods to ElicitationSchema Add from_json_schema() and from_type() methods to ElicitationSchema for easier type-to-schema conversion. This addresses feedback about improving ergonomics when working with generated schemas. Also make all struct fields public for better flexibility. * chore: change `StringFormat` to enum
This commit is contained in:
parent
d929e6918e
commit
11093bc830
1 changed files with 2253 additions and 137 deletions
|
|
@ -29,6 +29,12 @@ pub struct UserInfo {
|
|||
// Mark as safe for elicitation
|
||||
elicit_safe!(UserInfo);
|
||||
|
||||
/// Simple greeting message
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct GreetingMessage {
|
||||
pub text: String,
|
||||
}
|
||||
|
||||
/// Simple tool request
|
||||
#[derive(Debug, Deserialize, JsonSchema)]
|
||||
pub struct GreetRequest {
|
||||
|
|
|
|||
Loading…
Reference in a new issue