Skip to content

Commit 6b290e1

Browse files
authored
fix:spring-ai-community#61:outputSchema do not contain description (spring-ai-community#72)
1 parent c080686 commit 6b290e1

File tree

2 files changed

+8
-20
lines changed

2 files changed

+8
-20
lines changed

mcp-annotations/src/main/java/org/springaicommunity/mcp/method/tool/utils/JsonSchemaGenerator.java

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -184,15 +184,7 @@ public static String generateFromClass(Class<?> clazz) {
184184
}
185185

186186
private static String internalGenerateFromClass(Class<?> clazz) {
187-
SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder(SchemaVersion.DRAFT_2020_12,
188-
OptionPreset.PLAIN_JSON);
189-
SchemaGeneratorConfig config = configBuilder.with(Option.EXTRA_OPEN_API_FORMAT_VALUES)
190-
.without(Option.FLATTENED_ENUMS_FROM_TOSTRING)
191-
.build();
192-
193-
SchemaGenerator generator = new SchemaGenerator(config);
194-
JsonNode jsonSchema = generator.generateSchema(clazz);
195-
return jsonSchema.toPrettyString();
187+
return TYPE_SCHEMA_GENERATOR.generateSchema(clazz).toPrettyString();
196188
}
197189

198190
public static String generateFromType(Type type) {
@@ -201,15 +193,7 @@ public static String generateFromType(Type type) {
201193
}
202194

203195
private static String internalGenerateFromType(Type type) {
204-
SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder(SchemaVersion.DRAFT_2020_12,
205-
OptionPreset.PLAIN_JSON);
206-
SchemaGeneratorConfig config = configBuilder.with(Option.EXTRA_OPEN_API_FORMAT_VALUES)
207-
.without(Option.FLATTENED_ENUMS_FROM_TOSTRING)
208-
.build();
209-
210-
SchemaGenerator generator = new SchemaGenerator(config);
211-
JsonNode jsonSchema = generator.generateSchema(type);
212-
return jsonSchema.toPrettyString();
196+
return TYPE_SCHEMA_GENERATOR.generateSchema(type).toPrettyString();
213197
}
214198

215199
/**

mcp-annotations/src/test/java/org/springaicommunity/mcp/provider/tool/SyncMcpToolProviderTests.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import java.util.Map;
2525
import java.util.function.BiFunction;
2626

27+
import com.fasterxml.jackson.annotation.JsonProperty;
28+
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
2729
import org.junit.jupiter.api.Test;
2830
import org.springaicommunity.mcp.annotation.McpTool;
2931

@@ -586,7 +588,9 @@ public String defaultAnnotationsTool(String input) {
586588
void testToolWithOutputSchemaGeneration() {
587589

588590
// Define a custom result class
589-
record CustomResult(String message, int count) {
591+
record CustomResult(@JsonPropertyDescription("customResultMessage") @JsonProperty(required = false)
592+
String message,
593+
@JsonProperty(required = true) int count) {
590594
}
591595

592596
class OutputSchemaTool {
@@ -613,7 +617,7 @@ public List<CustomResult> outputSchemaTool(String input) {
613617
assertThat(outputSchemaString).contains("message");
614618
assertThat(outputSchemaString).contains("count");
615619
assertThat(outputSchemaString).isEqualTo(
616-
"{$schema=https://json-schema.org/draft/2020-12/schema, type=array, items={type=object, properties={count={type=integer, format=int32}, message={type=string}}}}");
620+
"{$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]}}");
617621
}
618622

619623
@Test

0 commit comments

Comments
 (0)