-
Notifications
You must be signed in to change notification settings - Fork 2k
Open
Description
Bug description
While input schema generation includes Jackson annotations like @JsonPropertyDescription, output schema generation does not. The root cause of this is JsonSchemaGenerator.internalGenerateFromClass creating its schema generator config from scratch instead of using TYPE_SCHEMA_GENERATOR or at least including the Jackson module manually.
Environment
Spring AI 1.1.0-M2, reactive mode, Java 24.
Steps to reproduce
Use a @McpTool method with a return type that uses Jackson description annotations.
Expected behavior
The Jackson annotations are included in the schema generation.
Minimal Complete Reproducible example
@SpringBootApplication
class Application {
companion object {
@JvmStatic
fun main(args: Array<String>) {
runApplication<Application>(*args)
}
}
data class Input(@JsonPropertyDescription("Test Input") val value: String)
data class Output(@JsonPropertyDescription("Test Output") val value: String)
@McpTool
fun test(@McpToolParam(description = "input") input: Input): Output {
return Output(input.value)
}
}Tool listing response:
{
"name": "test",
"title": "test",
"description": "",
"inputSchema": {
"type": "object",
"properties": {
"input": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Test Input"
}
},
"required": [
"value"
],
"description": "input"
}
},
"required": [
"input"
]
},
"outputSchema": {
"type": "object",
"properties": {
"value": {
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
},
"annotations": {
"title": "",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": true
}
}okohub