Skip to content

Commit 368a785

Browse files
aksOpsclaude
andcommitted
fix: MCP client compatibility — ignore unknown fields in protocol messages
VS Code MCP client sends capabilities.elicitation.form which Spring AI 1.1.4's McpSchema doesn't recognize, causing deserialization failure. Fix: disable FAIL_ON_UNKNOWN_PROPERTIES in both Jackson ObjectMapper bean and application.yml so newer MCP protocol fields are silently ignored. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent d75688c commit 368a785

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package io.github.randomcodespace.iq.config;
22

3+
import com.fasterxml.jackson.databind.DeserializationFeature;
34
import com.fasterxml.jackson.databind.ObjectMapper;
45
import com.fasterxml.jackson.databind.SerializationFeature;
56
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
67
import org.springframework.context.annotation.Bean;
78
import org.springframework.context.annotation.Configuration;
89

910
/**
10-
* Provides an ObjectMapper bean when Spring Boot's web auto-configuration
11-
* is not active (e.g., indexing profile with WebApplicationType.NONE).
11+
* Jackson configuration.
12+
* <p>
13+
* Disables FAIL_ON_UNKNOWN_PROPERTIES globally so that newer MCP clients
14+
* sending fields not yet in Spring AI's McpSchema (e.g., capabilities.elicitation.form)
15+
* don't cause deserialization failures.
1216
*/
1317
@Configuration
1418
public class JacksonConfig {
@@ -17,6 +21,7 @@ public class JacksonConfig {
1721
@ConditionalOnMissingBean(ObjectMapper.class)
1822
public ObjectMapper objectMapper() {
1923
return new ObjectMapper()
20-
.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
24+
.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
25+
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
2126
}
2227
}

src/main/resources/application.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ spring:
77
threads:
88
virtual:
99
enabled: true
10+
jackson:
11+
deserialization:
12+
fail-on-unknown-properties: false
1013
# Neo4j runs in embedded mode — no Bolt URI needed.
1114
# See Neo4jConfig.java and codeiq.graph.path below.
1215

0 commit comments

Comments
 (0)