Skip to content

Commit e09eca3

Browse files
authored
bug: ReadResourceResult serde issue (#77)
1 parent 82697ed commit e09eca3

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

micronaut-mcp-server-java-sdk/src/main/java/io/micronaut/mcp/server/json/McpSchemaSerdeImport.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package io.micronaut.mcp.server.json;
1717

18+
import com.fasterxml.jackson.annotation.JsonSubTypes;
1819
import com.fasterxml.jackson.annotation.JsonInclude;
1920
import com.fasterxml.jackson.annotation.JsonTypeInfo;
2021
import io.micronaut.context.annotation.ClassImport;
@@ -106,7 +107,12 @@ class CompleteCompletionMixin {
106107

107108
}
108109

109-
@Mixin.Filter(removeAnnotations = {"com.fasterxml.jackson.annotation.JsonTypeInfo", "io.micronaut.serde.config.annotation.SerdeConfig$SerError"})
110+
@Mixin.Filter(removeAnnotations = {
111+
"com.fasterxml.jackson.annotation.JsonTypeInfo",
112+
"com.fasterxml.jackson.annotation.JsonSubTypes",
113+
"io.micronaut.serde.config.annotation.SerdeConfig$SerError",
114+
"io.micronaut.serde.config.annotation.SerdeConfig$SerSubtyped"
115+
})
110116
@Mixin(McpSchema.ResourceContents.class)
111117
@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION)
112118
class CorrectResourceContentsMixin {
@@ -121,5 +127,7 @@ class CorrectTextResourceContentsMixin {
121127
@Mixin.Filter(removeAnnotations = {"com.fasterxml.jackson.annotation.JsonTypeInfo", "io.micronaut.serde.config.annotation.SerdeConfig$SerError"})
122128
@Mixin(McpSchema.BlobResourceContents.class)
123129
@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION)
130+
@JsonSubTypes({@JsonSubTypes.Type(value = McpSchema.TextResourceContents.class),
131+
@JsonSubTypes.Type(value = McpSchema.BlobResourceContents.class)})
124132
class CorrectBlobResourceContentsMixin {
125133
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package io.micronaut.mcp.server.serialization;
2+
3+
import io.micronaut.json.JsonMapper;
4+
import io.micronaut.test.extensions.junit5.annotation.MicronautTest;
5+
import io.modelcontextprotocol.spec.McpSchema;
6+
import org.junit.jupiter.api.Test;
7+
8+
import java.io.IOException;
9+
10+
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
11+
12+
@MicronautTest(startApplication = false)
13+
class ReadResourceResultSerializationTest {
14+
15+
@Test
16+
void serialize(JsonMapper jsonMapper) {
17+
//language=JSON
18+
String json = """
19+
{
20+
"contents": [
21+
{
22+
"uri": "guidemetadata://micronaut-oauth2-auth0",
23+
"mimeType": "application/json",
24+
"text": "{\\"title\\":\\"Secure a Micronaut application with Auth0\\",\\"intro\\":\\"Learn how to create a Micronaut application and secure it with an Authorization Server provided by Auth0.\\",\\"authors\\":[\\"Sergio del Amo\\"],\\"tags\\":[\\"security-jwt\\",\\"security\\",\\"authorization-code\\",\\"auth0\\",\\"graalvm\\",\\"thymeleaf\\",\\"oauth2\\",\\"oidc\\",\\"security-oauth2\\",\\"yaml\\"],\\"category\\":\\"Authorization Code\\",\\"publicationDate\\":\\"2021-09-03\\",\\"slug\\":\\"micronaut-oauth2-auth0\\",\\"url\\":\\"https://guides.micronaut.io/latest/micronaut-oauth2-auth0.html\\",\\"options\\":[{\\"buildTool\\":\\"GRADLE\\",\\"language\\":\\"JAVA\\",\\"url\\":\\"https://guides.micronaut.io/latest/micronaut-oauth2-auth0-gradle-java.html\\"},{\\"buildTool\\":\\"GRADLE\\",\\"language\\":\\"GROOVY\\",\\"url\\":\\"https://guides.micronaut.io/latest/micronaut-oauth2-auth0-gradle-groovy.html\\"},{\\"buildTool\\":\\"GRADLE\\",\\"language\\":\\"KOTLIN\\",\\"url\\":\\"https://guides.micronaut.io/latest/micronaut-oauth2-auth0-gradle-kotlin.html\\"},{\\"buildTool\\":\\"MAVEN\\",\\"language\\":\\"JAVA\\",\\"url\\":\\"https://guides.micronaut.io/latest/micronaut-oauth2-auth0-maven-java.html\\"},{\\"buildTool\\":\\"MAVEN\\",\\"language\\":\\"GROOVY\\",\\"url\\":\\"https://guides.micronaut.io/latest/micronaut-oauth2-auth0-maven-groovy.html\\"},{\\"buildTool\\":\\"MAVEN\\",\\"language\\":\\"KOTLIN\\",\\"url\\":\\"https://guides.micronaut.io/latest/micronaut-oauth2-auth0-maven-kotlin.html\\"}]}"
25+
}
26+
]
27+
}""";
28+
assertDoesNotThrow(() -> jsonMapper.readValue(json, McpSchema.ReadResourceResult.class));
29+
}
30+
}

0 commit comments

Comments
 (0)