From 86f7c76ddd42a51c7cdbf2c0b05b5a050c28031a Mon Sep 17 00:00:00 2001 From: TaMai Date: Mon, 24 Nov 2025 22:53:50 +0700 Subject: [PATCH 1/2] Add a sample for McpToolParam that includes its nested model classes. Signed-off-by: TaMai --- .../sample/server/providers/ToolProvider.java | 22 ++++++++++++++++++- .../server/providers/ToolProvider2.java | 3 --- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/providers/ToolProvider.java b/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/providers/ToolProvider.java index 2eb8af1..b7bf748 100644 --- a/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/providers/ToolProvider.java +++ b/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/providers/ToolProvider.java @@ -16,11 +16,13 @@ package org.springframework.ai.mcp.sample.server.providers; import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; import org.slf4j.Logger; import org.springaicommunity.mcp.annotation.McpTool; import org.springaicommunity.mcp.annotation.McpToolParam; - +import org.springframework.ai.mcp.sample.server.model.Point; import org.springframework.stereotype.Service; import org.springframework.web.client.RestClient; @@ -61,4 +63,22 @@ public WeatherResponse getTemperature(@McpToolParam(description = "The location return response; } + @McpTool(description = "Get temperatures (in celsius) for two specific locations simultaneously") + public List getTemperatures(@McpToolParam(description = "The first location point") Point point1, + @McpToolParam(description = "The second location point") Point point2) { + + String latParam = point1.getLatitude() + "," + point2.getLatitude(); + String longParam = point1.getLongitude() + "," + point2.getLongitude(); + + WeatherResponse[] responses = restClient + .get() + .uri("https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={long}¤t=temperature_2m", + latParam, longParam) + .retrieve() + .body(WeatherResponse[].class); + + logger.info("Checked 2 locations. Point1: {}, Point2: {}", point1, point2); + + return responses != null ? Arrays.asList(responses) : List.of(); + } } diff --git a/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/providers/ToolProvider2.java b/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/providers/ToolProvider2.java index 0f15d25..8755994 100644 --- a/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/providers/ToolProvider2.java +++ b/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/providers/ToolProvider2.java @@ -21,9 +21,6 @@ import org.springaicommunity.mcp.annotation.McpProgressToken; import org.springaicommunity.mcp.annotation.McpTool; import org.springaicommunity.mcp.annotation.McpToolParam; -import org.springaicommunity.mcp.context.DefaultMcpSyncRequestContext; - -import org.springframework.stereotype.Service; import io.modelcontextprotocol.server.McpSyncServerExchange; import io.modelcontextprotocol.spec.McpSchema; From af0d4fa3f25d2d3b74b65f652e0a5b4ce403c1a0 Mon Sep 17 00:00:00 2001 From: TaMai Date: Sun, 28 Dec 2025 19:37:47 +0700 Subject: [PATCH 2/2] Update class model Signed-off-by: kidmtt94 --- .../ai/mcp/sample/server/model/Point.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/model/Point.java diff --git a/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/model/Point.java b/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/model/Point.java new file mode 100644 index 0000000..1beb873 --- /dev/null +++ b/model-context-protocol/mcp-annotations/mcp-annotations-server/src/main/java/org/springframework/ai/mcp/sample/server/model/Point.java @@ -0,0 +1,31 @@ +package org.springframework.ai.mcp.sample.server.model; + +import org.springaicommunity.mcp.annotation.McpToolParam; + +public class Point { + + @McpToolParam(description = "The latitude of the location", required = true) + private double latitude; + @McpToolParam(description = "The longitude of the location", required = true) + private double longitude; + + + public Point() {} + public Point(double latitude, double longitude) { + this.latitude = latitude; + this.longitude = longitude; + } + public double getLatitude() { + return latitude; + } + public void setLatitude(double latitude) { + this.latitude = latitude; + } + public double getLongitude() { + return longitude; + } + public void setLongitude(double longitude) { + this.longitude = longitude; + } + +}