Skip to content

Commit 88d1845

Browse files
committed
Update MCP SDK version and other stuff with that
Signed-off-by: see-quick <maros.orsak159@gmail.com>
1 parent 675d875 commit 88d1845

32 files changed

Lines changed: 128 additions & 62 deletions

dependency-reduced-pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
</plugins>
4343
</build>
4444
<properties>
45-
<mcp-sdk.version>0.10.0</mcp-sdk.version>
45+
<mcp-sdk.version>0.14.0</mcp-sdk.version>
4646
<maven.compiler.source>21</maven.compiler.source>
4747
<fabric8.version>7.5.1</fabric8.version>
4848
<strimzi.version>0.49.1</strimzi.version>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<maven.compiler.target>21</maven.compiler.target>
1818
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1919

20-
<mcp-sdk.version>0.10.0</mcp-sdk.version>
20+
<mcp-sdk.version>0.14.0</mcp-sdk.version>
2121
<fabric8.version>7.5.1</fabric8.version>
2222
<strimzi.version>0.49.1</strimzi.version>
2323
<slf4j.version>2.0.17</slf4j.version>

src/main/java/io/seequick/mcp/StrimziMcpServer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import io.fabric8.kubernetes.client.KubernetesClient;
55
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
6+
import io.modelcontextprotocol.json.jackson.JacksonMcpJsonMapper;
67
import io.modelcontextprotocol.server.McpServer;
78
import io.modelcontextprotocol.server.McpSyncServer;
89
import io.modelcontextprotocol.server.transport.StdioServerTransportProvider;
@@ -108,7 +109,7 @@ private List<StrimziTool> createTools() {
108109
* Starts the MCP server with stdio transport.
109110
*/
110111
public void start() {
111-
StdioServerTransportProvider transportProvider = new StdioServerTransportProvider(new ObjectMapper());
112+
StdioServerTransportProvider transportProvider = new StdioServerTransportProvider(new JacksonMcpJsonMapper(new ObjectMapper()));
112113

113114
McpSyncServer syncServer = McpServer.sync(transportProvider)
114115
.serverInfo(SERVER_NAME, SERVER_VERSION)

src/main/java/io/seequick/mcp/tool/AbstractStrimziTool.java

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.seequick.mcp.tool;
22

3+
import com.fasterxml.jackson.core.type.TypeReference;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
35
import io.fabric8.kubernetes.client.KubernetesClient;
46
import io.modelcontextprotocol.server.McpServerFeatures;
5-
import io.modelcontextprotocol.server.McpSyncServerExchange;
67
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
8+
import io.modelcontextprotocol.spec.McpSchema.JsonSchema;
79
import io.modelcontextprotocol.spec.McpSchema.TextContent;
810
import io.modelcontextprotocol.spec.McpSchema.Tool;
911

@@ -15,6 +17,8 @@
1517
*/
1618
public abstract class AbstractStrimziTool implements StrimziTool {
1719

20+
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
21+
1822
protected final KubernetesClient kubernetesClient;
1923

2024
protected AbstractStrimziTool(KubernetesClient kubernetesClient) {
@@ -34,17 +38,50 @@ protected AbstractStrimziTool(KubernetesClient kubernetesClient) {
3438
/**
3539
* Returns the JSON schema for the tool's input parameters.
3640
*/
37-
protected abstract String getInputSchema();
41+
protected abstract JsonSchema getInputSchema();
3842

3943
/**
4044
* Executes the tool with the given arguments.
4145
*/
4246
protected abstract CallToolResult execute(Map<String, Object> args);
4347

48+
/**
49+
* Parses a JSON schema string into a JsonSchema object.
50+
*/
51+
@SuppressWarnings("unchecked")
52+
protected static JsonSchema parseSchema(String jsonSchema) {
53+
try {
54+
Map<String, Object> schemaMap = OBJECT_MAPPER.readValue(
55+
jsonSchema, new TypeReference<>() {});
56+
57+
String type = (String) schemaMap.get("type");
58+
Map<String, Object> properties = (Map<String, Object>) schemaMap.get("properties");
59+
List<String> required = (List<String>) schemaMap.get("required");
60+
Boolean additionalProperties = schemaMap.get("additionalProperties") instanceof Boolean b ? b : null;
61+
Map<String, Object> defs = (Map<String, Object>) schemaMap.get("$defs");
62+
Map<String, Object> definitions = (Map<String, Object>) schemaMap.get("definitions");
63+
64+
return new JsonSchema(
65+
type,
66+
properties,
67+
required,
68+
additionalProperties,
69+
defs,
70+
definitions
71+
);
72+
} catch (Exception e) {
73+
throw new RuntimeException("Failed to parse JSON schema: " + e.getMessage(), e);
74+
}
75+
}
76+
4477
@Override
4578
public McpServerFeatures.SyncToolSpecification getSpecification() {
4679
return new McpServerFeatures.SyncToolSpecification(
47-
new Tool(getName(), getDescription(), getInputSchema()),
80+
Tool.builder()
81+
.name(getName())
82+
.description(getDescription())
83+
.inputSchema(getInputSchema())
84+
.build(),
4885
(exchange, args) -> execute(args)
4986
);
5087
}

src/main/java/io/seequick/mcp/tool/cluster/DescribeBridgeTool.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.fabric8.kubernetes.client.KubernetesClient;
44
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
5+
import io.modelcontextprotocol.spec.McpSchema.JsonSchema;
56
import io.strimzi.api.kafka.model.bridge.KafkaBridge;
67
import io.strimzi.api.kafka.model.bridge.KafkaBridgeList;
78
import io.seequick.mcp.tool.AbstractStrimziTool;
@@ -45,8 +46,8 @@ protected String getDescription() {
4546
}
4647

4748
@Override
48-
protected String getInputSchema() {
49-
return SCHEMA;
49+
protected JsonSchema getInputSchema() {
50+
return parseSchema(SCHEMA);
5051
}
5152

5253
@Override

src/main/java/io/seequick/mcp/tool/cluster/DescribeConnectorTool.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.fabric8.kubernetes.client.KubernetesClient;
44
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
5+
import io.modelcontextprotocol.spec.McpSchema.JsonSchema;
56
import io.strimzi.api.kafka.model.connector.KafkaConnector;
67
import io.strimzi.api.kafka.model.connector.KafkaConnectorList;
78
import io.seequick.mcp.tool.AbstractStrimziTool;
@@ -46,8 +47,8 @@ protected String getDescription() {
4647
}
4748

4849
@Override
49-
protected String getInputSchema() {
50-
return SCHEMA;
50+
protected JsonSchema getInputSchema() {
51+
return parseSchema(SCHEMA);
5152
}
5253

5354
@Override

src/main/java/io/seequick/mcp/tool/cluster/DescribeKafkaConnectTool.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.fabric8.kubernetes.client.KubernetesClient;
44
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
5+
import io.modelcontextprotocol.spec.McpSchema.JsonSchema;
56
import io.strimzi.api.kafka.model.connect.KafkaConnect;
67
import io.strimzi.api.kafka.model.connect.KafkaConnectList;
78
import io.seequick.mcp.tool.AbstractStrimziTool;
@@ -45,8 +46,8 @@ protected String getDescription() {
4546
}
4647

4748
@Override
48-
protected String getInputSchema() {
49-
return SCHEMA;
49+
protected JsonSchema getInputSchema() {
50+
return parseSchema(SCHEMA);
5051
}
5152

5253
@Override

src/main/java/io/seequick/mcp/tool/cluster/DescribeMirrorMaker2Tool.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.fabric8.kubernetes.client.KubernetesClient;
44
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
5+
import io.modelcontextprotocol.spec.McpSchema.JsonSchema;
56
import io.strimzi.api.kafka.model.mirrormaker2.KafkaMirrorMaker2;
67
import io.strimzi.api.kafka.model.mirrormaker2.KafkaMirrorMaker2List;
78
import io.seequick.mcp.tool.AbstractStrimziTool;
@@ -45,8 +46,8 @@ protected String getDescription() {
4546
}
4647

4748
@Override
48-
protected String getInputSchema() {
49-
return SCHEMA;
49+
protected JsonSchema getInputSchema() {
50+
return parseSchema(SCHEMA);
5051
}
5152

5253
@Override

src/main/java/io/seequick/mcp/tool/cluster/DescribeNodePoolTool.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.fabric8.kubernetes.client.KubernetesClient;
44
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
5+
import io.modelcontextprotocol.spec.McpSchema.JsonSchema;
56
import io.strimzi.api.kafka.model.nodepool.KafkaNodePool;
67
import io.strimzi.api.kafka.model.nodepool.KafkaNodePoolList;
78
import io.seequick.mcp.tool.AbstractStrimziTool;
@@ -45,8 +46,8 @@ protected String getDescription() {
4546
}
4647

4748
@Override
48-
protected String getInputSchema() {
49-
return SCHEMA;
49+
protected JsonSchema getInputSchema() {
50+
return parseSchema(SCHEMA);
5051
}
5152

5253
@Override

src/main/java/io/seequick/mcp/tool/cluster/DescribeRebalanceTool.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.fabric8.kubernetes.client.KubernetesClient;
44
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
5+
import io.modelcontextprotocol.spec.McpSchema.JsonSchema;
56
import io.strimzi.api.kafka.model.rebalance.KafkaRebalance;
67
import io.strimzi.api.kafka.model.rebalance.KafkaRebalanceList;
78
import io.seequick.mcp.tool.AbstractStrimziTool;
@@ -45,8 +46,8 @@ protected String getDescription() {
4546
}
4647

4748
@Override
48-
protected String getInputSchema() {
49-
return SCHEMA;
49+
protected JsonSchema getInputSchema() {
50+
return parseSchema(SCHEMA);
5051
}
5152

5253
@Override

0 commit comments

Comments
 (0)