diff --git a/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/tool/utils/JsonSchemaGenerator.java b/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/tool/utils/JsonSchemaGenerator.java index a480d67..dacc4c7 100644 --- a/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/tool/utils/JsonSchemaGenerator.java +++ b/mcp-annotations/src/main/java/org/springaicommunity/mcp/method/tool/utils/JsonSchemaGenerator.java @@ -184,15 +184,7 @@ public static String generateFromClass(Class clazz) { } private static String internalGenerateFromClass(Class clazz) { - SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder(SchemaVersion.DRAFT_2020_12, - OptionPreset.PLAIN_JSON); - SchemaGeneratorConfig config = configBuilder.with(Option.EXTRA_OPEN_API_FORMAT_VALUES) - .without(Option.FLATTENED_ENUMS_FROM_TOSTRING) - .build(); - - SchemaGenerator generator = new SchemaGenerator(config); - JsonNode jsonSchema = generator.generateSchema(clazz); - return jsonSchema.toPrettyString(); + return TYPE_SCHEMA_GENERATOR.generateSchema(clazz).toPrettyString(); } public static String generateFromType(Type type) { @@ -201,15 +193,7 @@ public static String generateFromType(Type type) { } private static String internalGenerateFromType(Type type) { - SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder(SchemaVersion.DRAFT_2020_12, - OptionPreset.PLAIN_JSON); - SchemaGeneratorConfig config = configBuilder.with(Option.EXTRA_OPEN_API_FORMAT_VALUES) - .without(Option.FLATTENED_ENUMS_FROM_TOSTRING) - .build(); - - SchemaGenerator generator = new SchemaGenerator(config); - JsonNode jsonSchema = generator.generateSchema(type); - return jsonSchema.toPrettyString(); + return TYPE_SCHEMA_GENERATOR.generateSchema(type).toPrettyString(); } /** diff --git a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProviderTests.java b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProviderTests.java index 812daa7..0781e53 100644 --- a/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProviderTests.java +++ b/mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProviderTests.java @@ -24,6 +24,8 @@ import java.util.Map; import java.util.function.BiFunction; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyDescription; import org.junit.jupiter.api.Test; import org.springaicommunity.mcp.annotation.McpTool; @@ -586,7 +588,9 @@ public String defaultAnnotationsTool(String input) { void testToolWithOutputSchemaGeneration() { // Define a custom result class - record CustomResult(String message, int count) { + record CustomResult(@JsonPropertyDescription("customResultMessage") @JsonProperty(required = false) + String message, + @JsonProperty(required = true) int count) { } class OutputSchemaTool { @@ -613,7 +617,7 @@ public List outputSchemaTool(String input) { assertThat(outputSchemaString).contains("message"); assertThat(outputSchemaString).contains("count"); assertThat(outputSchemaString).isEqualTo( - "{$schema=https://json-schema.org/draft/2020-12/schema, type=array, items={type=object, properties={count={type=integer, format=int32}, message={type=string}}}}"); + "{$schema=https://json-schema.org/draft/2020-12/schema, type=array, items={type=object, properties={count={type=integer, format=int32}, message={type=string, description=customResultMessage}}, required=[count]}}"); } @Test