feat(mcp): add JsonIgnoreProperties to schema records for resilient deserialization

This commit is contained in:
Christian Tzolov 2025-01-14 14:43:55 +01:00
commit 26460e640b

View file

@ -222,6 +222,7 @@ public final class McpSchema {
} // @formatter:on } // @formatter:on
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record InitializeResult( // @formatter:off public record InitializeResult( // @formatter:off
@JsonProperty("protocolVersion") String protocolVersion, @JsonProperty("protocolVersion") String protocolVersion,
@JsonProperty("capabilities") ServerCapabilities capabilities, @JsonProperty("capabilities") ServerCapabilities capabilities,
@ -472,12 +473,14 @@ public final class McpSchema {
} // @formatter:on } // @formatter:on
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record ListResourcesResult( // @formatter:off public record ListResourcesResult( // @formatter:off
@JsonProperty("resources") List<Resource> resources, @JsonProperty("resources") List<Resource> resources,
@JsonProperty("nextCursor") String nextCursor) { @JsonProperty("nextCursor") String nextCursor) {
} // @formatter:on } // @formatter:on
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record ListResourceTemplatesResult( // @formatter:off public record ListResourceTemplatesResult( // @formatter:off
@JsonProperty("resourceTemplates") List<ResourceTemplate> resourceTemplates, @JsonProperty("resourceTemplates") List<ResourceTemplate> resourceTemplates,
@JsonProperty("nextCursor") String nextCursor) { @JsonProperty("nextCursor") String nextCursor) {
@ -489,6 +492,7 @@ public final class McpSchema {
} // @formatter:on } // @formatter:on
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record ReadResourceResult( // @formatter:off public record ReadResourceResult( // @formatter:off
@JsonProperty("contents") List<ResourceContents> contents){ @JsonProperty("contents") List<ResourceContents> contents){
} // @formatter:on } // @formatter:on
@ -619,6 +623,7 @@ public final class McpSchema {
* are more prompts available. * are more prompts available.
*/ */
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record ListPromptsResult( // @formatter:off public record ListPromptsResult( // @formatter:off
@JsonProperty("prompts") List<Prompt> prompts, @JsonProperty("prompts") List<Prompt> prompts,
@JsonProperty("nextCursor") String nextCursor) { @JsonProperty("nextCursor") String nextCursor) {
@ -643,6 +648,7 @@ public final class McpSchema {
* @param messages A list of messages to display as part of the prompt. * @param messages A list of messages to display as part of the prompt.
*/ */
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record GetPromptResult( // @formatter:off public record GetPromptResult( // @formatter:off
@JsonProperty("description") String description, @JsonProperty("description") String description,
@JsonProperty("messages") List<PromptMessage> messages) { @JsonProperty("messages") List<PromptMessage> messages) {
@ -659,6 +665,7 @@ public final class McpSchema {
* are more tools available. * are more tools available.
*/ */
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record ListToolsResult( // @formatter:off public record ListToolsResult( // @formatter:off
@JsonProperty("tools") List<Tool> tools, @JsonProperty("tools") List<Tool> tools,
@JsonProperty("nextCursor") String nextCursor) { @JsonProperty("nextCursor") String nextCursor) {
@ -716,6 +723,7 @@ public final class McpSchema {
* input schema. * input schema.
*/ */
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record CallToolRequest(// @formatter:off public record CallToolRequest(// @formatter:off
@JsonProperty("name") String name, @JsonProperty("name") String name,
@JsonProperty("arguments") Map<String, Object> arguments) implements Request { @JsonProperty("arguments") Map<String, Object> arguments) implements Request {
@ -730,6 +738,7 @@ public final class McpSchema {
* If false or absent, indicates successful execution. * If false or absent, indicates successful execution.
*/ */
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record CallToolResult( // @formatter:off public record CallToolResult( // @formatter:off
@JsonProperty("content") List<Content> content, @JsonProperty("content") List<Content> content,
@JsonProperty("isError") Boolean isError) { @JsonProperty("isError") Boolean isError) {
@ -776,6 +785,7 @@ public final class McpSchema {
}// @formatter:on }// @formatter:on
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record CreateMessageResult(// @formatter:off public record CreateMessageResult(// @formatter:off
@JsonProperty("role") Role role, @JsonProperty("role") Role role,
@JsonProperty("content") Content content, @JsonProperty("content") Content content,
@ -837,6 +847,7 @@ public final class McpSchema {
} }
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record PaginatedResult(@JsonProperty("nextCursor") String nextCursor) { public record PaginatedResult(@JsonProperty("nextCursor") String nextCursor) {
} }
@ -1044,6 +1055,7 @@ public final class McpSchema {
* that the server can operate on. * that the server can operate on.
*/ */
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonIgnoreProperties(ignoreUnknown = true)
public record ListRootsResult( // @formatter:off public record ListRootsResult( // @formatter:off
@JsonProperty("roots") List<Root> roots) { @JsonProperty("roots") List<Root> roots) {
} // @formatter:on } // @formatter:on