From e6cb56c4b15b5415dcb12ecb93b5adbb702f0c18 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 29 Dec 2024 18:17:34 +0100 Subject: [PATCH 001/505] Next development version --- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp-sample/pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mcp/pom.xml b/mcp/pom.xml index eb1802f..c5c2d54 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.3.0 + 0.4.0-SNAPSHOT mcp jar diff --git a/pom.xml b/pom.xml index 8326898..4a1823b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.3.0 + 0.4.0-SNAPSHOT pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp-sample/pom.xml b/spring-ai-mcp-sample/pom.xml index dad8702..70aa6d8 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/spring-ai-mcp-sample/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.3.0 + 0.4.0-SNAPSHOT spring-ai-mcp-sample diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index f3c17dc..67caf72 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.3.0 + 0.4.0-SNAPSHOT spring-ai-mcp Spring AI MCP From f7551839c55b6ebf949f537b66c3ec0301b0aac5 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 29 Dec 2024 18:56:38 +0100 Subject: [PATCH 002/505] docs Update pom version in docs --- README.md | 6 +++--- mcp/README.md | 2 +- spring-ai-mcp-sample/README.md | 6 +++--- .../springframework/ai/mcp/sample/client/ClientStdio.java | 2 +- spring-ai-mcp/README.md | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 330e838..b799c3d 100644 --- a/README.md +++ b/README.md @@ -42,14 +42,14 @@ Add the following dependencies to your Maven project: org.springframework.experimental mcp - 0.3.0-SNAPSHOT + 0.4.0-SNAPSHOT org.springframework.experimental spring-ai-mcp - 0.3.0-SNAPSHOT + 0.4.0-SNAPSHOT ``` @@ -85,7 +85,7 @@ mvn test ## Project Information - **Group ID**: org.springframework.experimental -- **Version**: 0.3.0-SNAPSHOT +- **Version**: 0.4.0-SNAPSHOT - **Java Version**: 17 - **Spring AI Version**: 1.0.0-M4 diff --git a/mcp/README.md b/mcp/README.md index 11a2ad1..f0bf8a9 100644 --- a/mcp/README.md +++ b/mcp/README.md @@ -26,7 +26,7 @@ Add the following dependency to your Maven project: org.springframework.experimental mcp - 0.3.0-SNAPSHOT + 0.4.0-SNAPSHOT ``` diff --git a/spring-ai-mcp-sample/README.md b/spring-ai-mcp-sample/README.md index 4c53b48..632e253 100644 --- a/spring-ai-mcp-sample/README.md +++ b/spring-ai-mcp-sample/README.md @@ -28,7 +28,7 @@ The server can be started in two transport modes, controlled by the `transport.m ### Stdio Mode (Default) ```bash -java -Dtransport.mode=stdio -jar target/spring-ai-mcp-sample-0.3.0-SNAPSHOT.jar +java -Dtransport.mode=stdio -jar target/spring-ai-mcp-sample-0.4.0-SNAPSHOT.jar ``` The Stdio mode server is automatically started by the client - no explicit server startup is needed. @@ -38,7 +38,7 @@ In Stdio mode the server must not emit any messages/logs to the console (e.g. st ### SSE Mode ```bash -java -Dtransport.mode=sse -jar target/spring-ai-mcp-sample-0.3.0-SNAPSHOT.jar +java -Dtransport.mode=sse -jar target/spring-ai-mcp-sample-0.4.0-SNAPSHOT.jar ``` ## Sample Clients @@ -49,7 +49,7 @@ The project includes example clients for both transport modes: ```java var stdioParams = ServerParameters.builder("java") .args("-Dtransport.mode=stdio", "-jar", - "target/spring-ai-mcp-sample-0.3.0-SNAPSHOT.jar") + "target/spring-ai-mcp-sample-0.4.0-SNAPSHOT.jar") .build(); var transport = new StdioClientTransport(stdioParams); diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java index 2aeb1d7..7777359 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java @@ -28,7 +28,7 @@ public class ClientStdio { var stdioParams = ServerParameters.builder("java") .args("-Dtransport.mode=stdio", "-jar", - "spring-ai-mcp-sample/target/spring-ai-mcp-sample-0.3.0-SNAPSHOT.jar") + "spring-ai-mcp-sample/target/spring-ai-mcp-sample-0.4.0-SNAPSHOT.jar") .build(); var transport = new StdioClientTransport(stdioParams); diff --git a/spring-ai-mcp/README.md b/spring-ai-mcp/README.md index 29ade4c..07229bd 100644 --- a/spring-ai-mcp/README.md +++ b/spring-ai-mcp/README.md @@ -31,7 +31,7 @@ To use this module, add the following dependency to your Maven project: org.springframework.experimental spring-ai-mcp - 0.3.0-SNAPSHOT + 0.4.0-SNAPSHOT ``` From 2de1d637c070ee90f018f8b4c98e89dc948dd7d4 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 29 Dec 2024 21:05:57 +0100 Subject: [PATCH 003/505] Fix javadoc issues --- .../ai/mcp/client/McpAsyncClient.java | 82 ++++++++++++------- .../ai/mcp/client/McpSyncClient.java | 2 + .../client/transport/SseClientTransport.java | 4 +- .../ai/mcp/server/McpAsyncServer.java | 23 ++++-- .../ai/mcp/spec/McpSchema.java | 30 ++++++- .../springframework/ai/mcp/util/Assert.java | 7 +- .../springframework/ai/mcp/util/Utils.java | 4 +- 7 files changed, 111 insertions(+), 41 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index 5b50266..add1ad6 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -84,8 +84,8 @@ public class McpAsyncClient { private final ConcurrentHashMap roots; /** - * MCP provides a standardized way for servers to request LLM sampling (“completions” - * or “generations”) from language models via clients. This flow allows clients to + * MCP provides a standardized way for servers to request LLM sampling ("completions" + * or "generations") from language models via clients. This flow allows clients to * maintain control over model access, selection, and permissions while enabling * servers to leverage AI capabilities—with no server API keys necessary. Servers can * request text or image-based interactions and optionally include context from MCP @@ -108,10 +108,13 @@ public class McpAsyncClient { * timeout. * @param transport the transport to use. * @param requestTimeout the session request-response timeout. - * @param rootsListProviders the list of suppliers that provide the list of roots - * backing the roots list request. - * @param rootsListChangedNotification whether the client supports roots/list_changed - * notification. + * @param clientInfo the client implementation information. + * @param clientCapabilities the client capabilities. + * @param roots the roots. + * @param toolsChangeConsumers the tools change consumers. + * @param resourcesChangeConsumers the resources change consumers. + * @param promptsChangeConsumers the prompts change consumers. + * @param samplingHandler the sampling handler. */ public McpAsyncClient(McpTransport transport, Duration requestTimeout, Implementation clientInfo, ClientCapabilities clientCapabilities, Map roots, @@ -215,9 +218,9 @@ public class McpAsyncClient { */ public Mono initialize() { McpSchema.InitializeRequest initializeRequest = new McpSchema.InitializeRequest(// @formatter:off - McpSchema.LATEST_PROTOCOL_VERSION, - this.clientCapabilities, - this.clientInfo); // @formatter:on + McpSchema.LATEST_PROTOCOL_VERSION, + this.clientCapabilities, + this.clientInfo); // @formatter:on Mono result = this.mcpSession.sendRequest("initialize", initializeRequest, new TypeReference() { @@ -239,10 +242,17 @@ public class McpAsyncClient { }); } + /** + * Closes the client connection immediately. + */ public void close() { this.mcpSession.close(); } + /** + * Gracefully closes the client connection. + * @return A Mono that completes when the connection is closed + */ public Mono closeGracefully() { return this.mcpSession.closeGracefully(); } @@ -252,7 +262,8 @@ public class McpAsyncClient { // -------------------------- /** - * Send a synchronous ping request. + * Sends a ping request to the server. + * @return A Mono that completes with the server's ping response */ public Mono ping() { return this.mcpSession.sendRequest("ping", null, new TypeReference() { @@ -262,6 +273,11 @@ public class McpAsyncClient { // -------------------------- // Roots // -------------------------- + /** + * Adds a new root to the client's root list. + * @param root The root to add + * @return A Mono that completes when the root is added and notifications are sent + */ public Mono addRoot(Root root) { if (root == null) { @@ -286,6 +302,11 @@ public class McpAsyncClient { return Mono.empty(); } + /** + * Removes a root from the client's root list. + * @param rootUri The URI of the root to remove + * @return A Mono that completes when the root is removed and notifications are sent + */ public Mono removeRoot(String rootUri) { if (rootUri == null) { @@ -309,8 +330,9 @@ public class McpAsyncClient { } /** - * Manually, send a roots/list_changed notification. The addRoot and removeRoot + * Manually sends a roots/list_changed notification. The addRoot and removeRoot * methods automatically send the roots/list_changed notification. + * @return A Mono that completes when the notification is sent */ public Mono rootsListChangedNotification() { return this.mcpSession.sendNotification("notifications/roots/list_changed"); @@ -436,7 +458,7 @@ public class McpAsyncClient { /** * Send a resources/list request. - * @return the list of resources result. + * @return A Mono that completes with the list of resources result */ public Mono listResources() { return this.listResources(null); @@ -444,8 +466,8 @@ public class McpAsyncClient { /** * Send a resources/list request. - * @param cursor the cursor - * @return the list of resources result. + * @param cursor the cursor for pagination + * @return A Mono that completes with the list of resources result */ public Mono listResources(String cursor) { return this.mcpSession.sendRequest("resources/list", new McpSchema.PaginatedRequest(cursor), @@ -455,7 +477,7 @@ public class McpAsyncClient { /** * Send a resources/read request. * @param resource the resource to read - * @return the resource content. + * @return A Mono that completes with the resource content */ public Mono readResource(McpSchema.Resource resource) { return this.readResource(new McpSchema.ReadResourceRequest(resource.uri())); @@ -463,8 +485,8 @@ public class McpAsyncClient { /** * Send a resources/read request. - * @param readResourceRequest the read resource request. - * @return the resource content. + * @param readResourceRequest the read resource request + * @return A Mono that completes with the resource content */ public Mono readResource(McpSchema.ReadResourceRequest readResourceRequest) { return this.mcpSession.sendRequest("resources/read", readResourceRequest, READ_RESOURCE_RESULT_TYPE_REF); @@ -475,7 +497,7 @@ public class McpAsyncClient { * templates. Arguments may be auto-completed through the completion API. * * Request a list of resource templates the server has. - * @return the list of resource templates result. + * @return A Mono that completes with the list of resource templates result */ public Mono listResourceTemplates() { return this.listResourceTemplates(null); @@ -486,8 +508,8 @@ public class McpAsyncClient { * templates. Arguments may be auto-completed through the completion API. * * Request a list of resource templates the server has. - * @param cursor the cursor - * @return the list of resource templates result. + * @param cursor the cursor for pagination + * @return A Mono that completes with the list of resource templates result */ public Mono listResourceTemplates(String cursor) { return this.mcpSession.sendRequest("resources/templates/list", new McpSchema.PaginatedRequest(cursor), @@ -496,7 +518,8 @@ public class McpAsyncClient { /** * List Changed Notification. When the list of available resources changes, servers - * that declared the listChanged capability SHOULD send a notification: + * that declared the listChanged capability SHOULD send a notification. + * @return A Mono that completes when the notification is sent */ public Mono sendResourcesListChanged() { return this.mcpSession.sendNotification("notifications/resources/list_changed"); @@ -509,7 +532,8 @@ public class McpAsyncClient { * * Send a resources/subscribe request. * @param subscribeRequest the subscribe request contains the uri of the resource to - * subscribe to. + * subscribe to + * @return A Mono that completes when the subscription is complete */ public Mono subscribeResource(McpSchema.SubscribeRequest subscribeRequest) { return this.mcpSession.sendRequest("resources/subscribe", subscribeRequest, VOID_TYPE_REFERENCE); @@ -518,7 +542,8 @@ public class McpAsyncClient { /** * Send a resources/unsubscribe request. * @param unsubscribeRequest the unsubscribe request contains the uri of the resource - * to unsubscribe from. + * to unsubscribe from + * @return A Mono that completes when the unsubscription is complete */ public Mono unsubscribeResource(McpSchema.UnsubscribeRequest unsubscribeRequest) { return this.mcpSession.sendRequest("resources/unsubscribe", unsubscribeRequest, VOID_TYPE_REFERENCE); @@ -554,7 +579,7 @@ public class McpAsyncClient { /** * List all available prompts. - * @return the list of prompts result. + * @return A Mono that completes with the list of prompts result */ public Mono listPrompts() { return this.listPrompts(null); @@ -562,8 +587,8 @@ public class McpAsyncClient { /** * List all available prompts. - * @param cursor the cursor - * @return the list of prompts result. + * @param cursor the cursor for pagination + * @return A Mono that completes with the list of prompts result */ public Mono listPrompts(String cursor) { return this.mcpSession.sendRequest("prompts/list", new PaginatedRequest(cursor), LIST_PROMPTS_RESULT_TYPE_REF); @@ -571,8 +596,8 @@ public class McpAsyncClient { /** * Get a prompt by its id. - * @param getPromptRequest the get prompt request. - * @return the get prompt result. + * @param getPromptRequest the get prompt request + * @return A Mono that completes with the get prompt result */ public Mono getPrompt(GetPromptRequest getPromptRequest) { return this.mcpSession.sendRequest("prompts/get", getPromptRequest, GET_PROMPT_RESULT_TYPE_REF); @@ -582,6 +607,7 @@ public class McpAsyncClient { * (Server) An optional notification from the server to the client, informing it that * the list of prompts it offers has changed. This may be issued by servers without * any previous subscription from the client. + * @return A Mono that completes when the notification is sent */ public Mono promptListChangedNotification() { return this.mcpSession.sendNotification("notifications/prompts/list_changed"); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java index 54fed7b..88b87e0 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java @@ -28,6 +28,8 @@ import org.springframework.ai.mcp.spec.McpSchema.ListPromptsResult; import org.springframework.ai.mcp.util.Assert; /** + * A synchronous client for the Model Context Protocol (MCP). + * * @author Dariusz Jędrzejczyk * @author Christian Tzolov */ diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java index 8438958..a77528b 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java @@ -60,8 +60,8 @@ import org.springframework.web.reactive.function.client.WebClient; *
    *
  1. The client establishes an SSE connection to the server's /sse endpoint
  2. *
  3. The server sends an 'endpoint' event containing the URI for sending messages
  4. - * - *

    + *

+ * * This implementation handles automatic reconnection for transient failures and provides * graceful shutdown capabilities. It uses {@link WebClient} for HTTP communications and * supports JSON serialization/deserialization of messages. diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index fc31c98..7e1d259 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -61,10 +61,13 @@ public class McpAsyncServer { /** * Create a new McpAsyncServer with the given transport and capabilities. - * @param transport The transport to use for communication - * @param tools List of tool registrations - * @param resources Map of resource registrations - * @param prompts Map of prompt registrations + * @param mcpTransport The transport layer implementation for MCP communication + * @param serverInfo The server implementation details + * @param serverCapabilities The server capabilities + * @param tools The list of tool registrations + * @param resources The map of resource registrations + * @param resourceTemplates The list of resource templates + * @param prompts The map of prompt registrations */ public McpAsyncServer(McpTransport mcpTransport, McpSchema.Implementation serverInfo, McpSchema.ServerCapabilities serverCapabilities, List tools, @@ -407,28 +410,32 @@ public class McpAsyncServer { } /** - * Notify clients that the list of available tools has changed. + * Notifies clients that the list of available tools has changed. + * @return A Mono that completes when all clients have been notified */ public Mono notifyToolsListChanged() { return this.mcpSession.sendNotification("notifications/tools/list_changed", null); } /** - * Notify clients that the list of available resources has changed. + * Notifies clients that the list of available resources has changed. + * @return A Mono that completes when all clients have been notified */ public Mono notifyResourcesListChanged() { return this.mcpSession.sendNotification("notifications/resources/list_changed", null); } /** - * Notify clients that the list of available prompts has changed. + * Notifies clients that the list of available prompts has changed. + * @return A Mono that completes when all clients have been notified */ public Mono notifyPromptsListChanged() { return this.mcpSession.sendNotification("notifications/prompts/list_changed", null); } /** - * Close the server gracefully. + * Gracefully closes the server, allowing any in-progress operations to complete. + * @return A Mono that completes when the server has been closed */ public Mono closeGracefully() { return this.mcpSession.closeGracefully(); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java index ece13f6..2c466d6 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java @@ -32,7 +32,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; /** * Based on the JSON-RPC 2.0 - * specification and the and the Model * Context Protocol Schema. * @@ -47,16 +47,34 @@ public class McpSchema { // --------------------------- // JSON-RPC Error Codes // --------------------------- + /** + * Standard error codes used in MCP JSON-RPC responses. + */ public final class ErrorCodes { + /** + * Invalid JSON was received by the server. + */ public static final int PARSE_ERROR = -32700; + /** + * The JSON sent is not a valid Request object. + */ public static final int INVALID_REQUEST = -32600; + /** + * The method does not exist / is not available. + */ public static final int METHOD_NOT_FOUND = -32601; + /** + * Invalid method parameter(s). + */ public static final int INVALID_PARAMS = -32602; + /** + * Internal JSON-RPC error. + */ public static final int INTERNAL_ERROR = -32603; } @@ -340,6 +358,9 @@ public class McpSchema { } /** + * Optional annotations for the client. The client can use annotations to inform how + * objects are used or displayed. + * * @param audience Describes who the intended customer of this object or data is. It * can include multiple entries to indicate content useful for multiple audiences * (e.g., `["user", "assistant"]`). @@ -544,6 +565,10 @@ public class McpSchema { /** * The server's response to a prompts/list request from the client. + * + * @param prompts A list of prompts that the server provides. + * @param nextCursor An optional cursor for pagination. If present, indicates there + * are more prompts available. */ @JsonInclude(JsonInclude.Include.NON_ABSENT) public record ListPromptsResult( // @formatter:off @@ -856,6 +881,9 @@ public class McpSchema { * The client's response to a roots/list request from the server. This result contains * an array of Root objects, each representing a root directory or file that the * server can operate on. + * + * @param roots An array of Root objects, each representing a root directory or file + * that the server can operate on. */ @JsonInclude(JsonInclude.Include.NON_ABSENT) public record ListRootsResult( // @formatter:off diff --git a/mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java b/mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java index 256d063..8d4ea23 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java @@ -19,10 +19,15 @@ package org.springframework.ai.mcp.util; import reactor.util.annotation.Nullable; /** + * Assertion utility class that assists in validating arguments. + * * @author Christian Tzolov */ -public class Assert { +/** + * Utility class providing assertion methods for parameter validation. + */ +public final class Assert { /** * Assert that an object is not {@code null}. diff --git a/mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java b/mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java index 7f6850a..47e38c7 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java @@ -24,10 +24,12 @@ import reactor.util.annotation.Nullable; import org.springframework.lang.Contract; /** + * Miscellaneous utility methods. + * * @author Christian Tzolov */ -public class Utils { +public final class Utils { /** * Check whether the given {@code String} contains actual text. From 9b6a0b537bc6a72b54ae1433daef70fa2e817c80 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 29 Dec 2024 21:40:51 +0100 Subject: [PATCH 004/505] refactor(mcp): improve StdioServerTransport shutdown and error handling - Add specific error categorization for pipe closed errors - Enhance shutdown sequence with proper stream and scheduler cleanup - Add debug logging for shutdown-related stream errors - Improve isClosing state management --- .../transport/StdioServerTransport.java | 73 ++++++++++++------- 1 file changed, 48 insertions(+), 25 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java index 4d9c979..dff9727 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java @@ -171,9 +171,18 @@ public class StdioServerTransport implements McpTransport { } } catch (IOException e) { - if (!isClosing) { + // Check isClosing before the error occurs to properly categorize it + boolean wasClosing = isClosing; + isClosing = true; + if (!wasClosing && e.getMessage().equals("Pipe closed")) { + logger.debug("Stream closed during shutdown", e); + } + else if (!wasClosing) { logger.error("Error reading from stdin", e); } + else { + logger.debug("Stream error during shutdown", e); + } } finally { isClosing = true; @@ -209,6 +218,9 @@ public class StdioServerTransport implements McpTransport { logger.error("Error writing message", e); sink.error(new RuntimeException(e)); } + else { + logger.debug("Stream closed during shutdown", e); + } } } else if (isClosing) { @@ -236,35 +248,46 @@ public class StdioServerTransport implements McpTransport { return Mono.fromRunnable(() -> { isClosing = true; logger.debug("Initiating graceful shutdown"); - }) - // .then(Mono.defer(() -> { - // inboundSink.tryEmitComplete(); - // outboundSink.tryEmitComplete(); - // return Mono.delay(Duration.ofMillis(100)); - // })) + }).then(Mono.defer(() -> { + // First complete the sinks to stop processing + inboundSink.tryEmitComplete(); + outboundSink.tryEmitComplete(); + return Mono.delay(Duration.ofMillis(100)); + })).then(Mono.fromRunnable(() -> { + try { + // Dispose schedulers first + inboundScheduler.dispose(); + outboundScheduler.dispose(); - .then(Mono.fromRunnable(() -> { + // Wait for schedulers to terminate + if (!inboundScheduler.isDisposed()) { + inboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); + } + if (!outboundScheduler.isDisposed()) { + outboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); + } + + // Only after schedulers are disposed, close the streams try { - - inboundScheduler.dispose(); - outboundScheduler.dispose(); - - // Wait for schedulers to terminate - if (!inboundScheduler.isDisposed()) { - inboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); + if (inputStream != System.in) { + inputStream.close(); } - if (!outboundScheduler.isDisposed()) { - outboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); + if (outputStream != System.out) { + outputStream.flush(); + outputStream.close(); } + } + catch (IOException e) { + // Log but don't throw since we're shutting down + logger.debug("Error closing streams during shutdown", e); + } - logger.info("Graceful shutdown completed"); - } - catch (Exception e) { - logger.error("Error during graceful shutdown", e); - } - })) - .then() - .subscribeOn(Schedulers.boundedElastic()); + logger.info("Graceful shutdown completed"); + } + catch (Exception e) { + logger.error("Error during graceful shutdown", e); + } + })).then().subscribeOn(Schedulers.boundedElastic()); } @Override From 47b09165c59874d8833271c0d82c9b42eb2f6313 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 09:08:56 +0100 Subject: [PATCH 005/505] refactor(mcp) Increase the server stdio shutdown timeout --- .../ai/mcp/server/transport/SseServerTransport.java | 1 - .../ai/mcp/server/transport/StdioServerTransport.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java index 8125f4d..88bda2e 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; -import java.util.stream.Collectors; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java index dff9727..93d6c23 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java @@ -252,7 +252,7 @@ public class StdioServerTransport implements McpTransport { // First complete the sinks to stop processing inboundSink.tryEmitComplete(); outboundSink.tryEmitComplete(); - return Mono.delay(Duration.ofMillis(100)); + return Mono.delay(Duration.ofMillis(200)); })).then(Mono.fromRunnable(() -> { try { // Dispose schedulers first From dfa7435ad888d2c6e042311975867e3426244a0a Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 09:23:42 +0100 Subject: [PATCH 006/505] refactor(mcp) Disable stdio server sink draining on close --- .../transport/StdioServerTransport.java | 80 ++++++++++--------- 1 file changed, 42 insertions(+), 38 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java index 93d6c23..8846774 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java @@ -248,46 +248,50 @@ public class StdioServerTransport implements McpTransport { return Mono.fromRunnable(() -> { isClosing = true; logger.debug("Initiating graceful shutdown"); - }).then(Mono.defer(() -> { - // First complete the sinks to stop processing - inboundSink.tryEmitComplete(); - outboundSink.tryEmitComplete(); - return Mono.delay(Duration.ofMillis(200)); - })).then(Mono.fromRunnable(() -> { - try { - // Dispose schedulers first - inboundScheduler.dispose(); - outboundScheduler.dispose(); - - // Wait for schedulers to terminate - if (!inboundScheduler.isDisposed()) { - inboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); - } - if (!outboundScheduler.isDisposed()) { - outboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); - } - - // Only after schedulers are disposed, close the streams + }) + // .then(Mono.defer(() -> { + // // First complete the sinks to stop processing + // inboundSink.tryEmitComplete(); + // outboundSink.tryEmitComplete(); + // return Mono.delay(Duration.ofMillis(100)); + // })) + .then(Mono.fromRunnable(() -> { try { - if (inputStream != System.in) { - inputStream.close(); - } - if (outputStream != System.out) { - outputStream.flush(); - outputStream.close(); - } - } - catch (IOException e) { - // Log but don't throw since we're shutting down - logger.debug("Error closing streams during shutdown", e); - } + // Dispose schedulers first + inboundScheduler.dispose(); + outboundScheduler.dispose(); - logger.info("Graceful shutdown completed"); - } - catch (Exception e) { - logger.error("Error during graceful shutdown", e); - } - })).then().subscribeOn(Schedulers.boundedElastic()); + // Wait for schedulers to terminate + if (!inboundScheduler.isDisposed()) { + inboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); + } + if (!outboundScheduler.isDisposed()) { + outboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); + } + + // Only after schedulers are disposed, close the streams + try { + if (inputStream != System.in) { + inputStream.close(); + } + if (outputStream != System.out) { + outputStream.flush(); + outputStream.close(); + } + } + catch (IOException e) { + // Log but don't throw since we're shutting down + logger.debug("Error closing streams during shutdown", e); + } + + logger.info("Graceful shutdown completed"); + } + catch (Exception e) { + logger.error("Error during graceful shutdown", e); + } + })) + .then() + .subscribeOn(Schedulers.boundedElastic()); } @Override From fcf0ff0ae246752ee7cff3524f684560ba2a7fef Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 11:52:43 +0100 Subject: [PATCH 007/505] refactor: simplify StdioServerTransport to only use System streams Removes custom stream injection capability from StdioServerTransport and simplifies it to only use System.in/out. Updates related tests to use System streams instead of piped streams. --- .../transport/StdioServerTransport.java | 80 ++++++------------- .../mcp/server/StdioMcpAsyncServerTests.java | 4 +- .../mcp/server/StdioMcpSyncServerTests.java | 51 +----------- .../transport/StdioServerTransportTests.java | 12 +-- 4 files changed, 33 insertions(+), 114 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java index 8846774..31c1780 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java @@ -77,7 +77,7 @@ public class StdioServerTransport implements McpTransport { * Creates a new StdioServerTransport with a default ObjectMapper and System streams. */ public StdioServerTransport() { - this(new ObjectMapper(), System.in, System.out); + this(new ObjectMapper()); } /** @@ -86,26 +86,15 @@ public class StdioServerTransport implements McpTransport { * @param objectMapper The ObjectMapper to use for JSON serialization/deserialization */ public StdioServerTransport(ObjectMapper objectMapper) { - this(objectMapper, System.in, System.out); - } - /** - * Creates a new StdioServerTransport with the specified ObjectMapper and streams. - * @param objectMapper The ObjectMapper to use for JSON serialization/deserialization - * @param inputStream The input stream to read from - * @param outputStream The output stream to write to - */ - public StdioServerTransport(ObjectMapper objectMapper, InputStream inputStream, OutputStream outputStream) { Assert.notNull(objectMapper, "The ObjectMapper can not be null"); - Assert.notNull(inputStream, "The InputStream can not be null"); - Assert.notNull(outputStream, "The OutputStream can not be null"); this.inboundSink = Sinks.many().unicast().onBackpressureBuffer(); this.outboundSink = Sinks.many().unicast().onBackpressureBuffer(); this.objectMapper = objectMapper; - this.inputStream = inputStream; - this.outputStream = outputStream; + this.inputStream = System.in; + this.outputStream = System.out; // Use bounded schedulers for better resource management this.inboundScheduler = Schedulers.newBoundedElastic(1, 1, "inbound"); @@ -248,50 +237,31 @@ public class StdioServerTransport implements McpTransport { return Mono.fromRunnable(() -> { isClosing = true; logger.debug("Initiating graceful shutdown"); - }) - // .then(Mono.defer(() -> { - // // First complete the sinks to stop processing - // inboundSink.tryEmitComplete(); - // outboundSink.tryEmitComplete(); - // return Mono.delay(Duration.ofMillis(100)); - // })) - .then(Mono.fromRunnable(() -> { - try { - // Dispose schedulers first - inboundScheduler.dispose(); - outboundScheduler.dispose(); + }).then(Mono.defer(() -> { + // First complete the sinks to stop processing + inboundSink.tryEmitComplete(); + outboundSink.tryEmitComplete(); + return Mono.delay(Duration.ofMillis(100)); + })).then(Mono.fromRunnable(() -> { + try { + // Dispose schedulers first + inboundScheduler.dispose(); + outboundScheduler.dispose(); - // Wait for schedulers to terminate - if (!inboundScheduler.isDisposed()) { - inboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); - } - if (!outboundScheduler.isDisposed()) { - outboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); - } - - // Only after schedulers are disposed, close the streams - try { - if (inputStream != System.in) { - inputStream.close(); - } - if (outputStream != System.out) { - outputStream.flush(); - outputStream.close(); - } - } - catch (IOException e) { - // Log but don't throw since we're shutting down - logger.debug("Error closing streams during shutdown", e); - } - - logger.info("Graceful shutdown completed"); + // Wait for schedulers to terminate + if (!inboundScheduler.isDisposed()) { + inboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); } - catch (Exception e) { - logger.error("Error during graceful shutdown", e); + if (!outboundScheduler.isDisposed()) { + outboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); } - })) - .then() - .subscribeOn(Schedulers.boundedElastic()); + + logger.info("Graceful shutdown completed"); + } + catch (Exception e) { + logger.error("Error during graceful shutdown", e); + } + })).then().subscribeOn(Schedulers.boundedElastic()); } @Override diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java index 9a0185c..9d5c80b 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java @@ -16,8 +16,6 @@ package org.springframework.ai.mcp.server; -import com.fasterxml.jackson.databind.ObjectMapper; - import org.springframework.ai.mcp.server.transport.StdioServerTransport; import org.springframework.ai.mcp.spec.McpTransport; @@ -30,7 +28,7 @@ class StdioMcpAsyncServerTests extends AbstractMcpAsyncServerTests { @Override protected McpTransport createMcpTransport() { - return new StdioServerTransport(new ObjectMapper()); + return new StdioServerTransport(); } } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java index 745264a..a90e4de 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java @@ -16,11 +16,6 @@ package org.springframework.ai.mcp.server; -import java.io.PipedInputStream; -import java.io.PipedOutputStream; - -import com.fasterxml.jackson.databind.ObjectMapper; - import org.springframework.ai.mcp.server.transport.StdioServerTransport; import org.springframework.ai.mcp.spec.McpTransport; @@ -31,53 +26,9 @@ import org.springframework.ai.mcp.spec.McpTransport; */ class StdioMcpSyncServerTests extends AbstractMcpSyncServerTests { - private PipedInputStream testInput; - - private PipedOutputStream testOutput; - - private PipedOutputStream writeToInput; - - private PipedInputStream readFromOutput; - @Override protected McpTransport createMcpTransport() { - try { - testInput = new PipedInputStream(); - writeToInput = new PipedOutputStream(testInput); - testOutput = new PipedOutputStream(); - readFromOutput = new PipedInputStream(testOutput); - return new StdioServerTransport(new ObjectMapper(), testInput, testOutput); - } - catch (Exception e) { - throw new RuntimeException("Failed to initialize test streams", e); - } - } - - @Override - protected void onStart() { - // No special setup needed for stdio transport - } - - @Override - protected void onClose() { - try { - if (testInput != null) { - testInput.close(); - } - if (testOutput != null) { - testOutput.close(); - } - if (writeToInput != null) { - writeToInput.close(); - } - if (readFromOutput != null) { - readFromOutput.close(); - } - } - catch (Exception e) { - // Log but don't throw since this is cleanup - e.printStackTrace(); - } + return new StdioServerTransport(); } } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java index 34e549b..ba0446d 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java @@ -92,7 +92,7 @@ class StdioServerTransportTests { testIn = new ByteArrayInputStream((jsonMessage + "\n").getBytes(StandardCharsets.UTF_8)); // Create transport with test streams - transport = new StdioServerTransport(objectMapper, testIn, testOutPrintStream); + transport = new StdioServerTransport(objectMapper); // Parse expected message McpSchema.JSONRPCRequest expected = objectMapper.readValue(jsonMessage, McpSchema.JSONRPCRequest.class); @@ -109,9 +109,9 @@ class StdioServerTransportTests { @Disabled void shouldHandleOutgoingMessages() throws Exception { // Create transport with test streams - transport = new StdioServerTransport(objectMapper, new BlockingInputStream(), testOutPrintStream); - // transport = new StdioServerTransport(objectMapper, new ByteArrayInputStream(new - // byte[0]), testOutPrintStream); + transport = new StdioServerTransport(objectMapper); + // transport = new StdioServerTransport(objectMapper, new BlockingInputStream(), + // testOutPrintStream); // Create test messages JSONRPCRequest initMessage = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "init", "init-id", @@ -137,7 +137,7 @@ class StdioServerTransportTests { @Test void shouldWaitForProcessorsBeforeSendingMessage() { // Create transport with test streams - transport = new StdioServerTransport(objectMapper, new ByteArrayInputStream(new byte[0]), testOutPrintStream); + transport = new StdioServerTransport(objectMapper); // Create test message JSONRPCRequest testMessage = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "test", "test-id", @@ -154,7 +154,7 @@ class StdioServerTransportTests { @Test void shouldCloseGracefully() { // Create transport with test streams - transport = new StdioServerTransport(objectMapper, new ByteArrayInputStream(new byte[0]), testOutPrintStream); + transport = new StdioServerTransport(objectMapper); // Create test message JSONRPCRequest initMessage = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "init", "init-id", From ad3cdd20a937b3356c49320f074991f577e25cd0 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 12:15:39 +0100 Subject: [PATCH 008/505] fix: Improve MCP server stability and test reliability - Replace bounded elastic schedulers with single thread executors - Add timeouts to MCP server tests - Enhance error handling in StdioServerTransport - Comment out unused PaginatedRequest unmarshalling - Simplify shutdown logic in StdioServerTransport --- .../ai/mcp/server/McpAsyncServer.java | 12 ++-- .../transport/StdioServerTransport.java | 61 +++++++++---------- .../server/AbstractMcpSyncServerTests.java | 1 + .../ai/mcp/server/SseMcpAsyncServerTests.java | 3 + .../ai/mcp/server/SseMcpSyncServerTests.java | 3 + .../mcp/server/StdioMcpAsyncServerTests.java | 3 + .../mcp/server/StdioMcpSyncServerTests.java | 3 + .../transport/StdioServerTransportTests.java | 4 -- pom.xml | 1 + 9 files changed, 50 insertions(+), 41 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index 7e1d259..e7c07f4 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -349,9 +349,9 @@ public class McpAsyncServer { private DefaultMcpSession.RequestHandler resourcesListRequestHandler() { return params -> { - McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, - new TypeReference() { - }); + // McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, + // new TypeReference() { + // }); var resourceList = this.resources.values().stream().map(ResourceRegistration::resource).toList(); @@ -361,9 +361,9 @@ public class McpAsyncServer { private DefaultMcpSession.RequestHandler resourceTemplateListRequestHandler() { return params -> { - McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, - new TypeReference() { - }); + // McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, + // new TypeReference() { + // }); return Mono.just(new McpSchema.ListResourceTemplatesResult(this.resourceTemplates, null)); }; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java index 31c1780..675737f 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java @@ -23,6 +23,7 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.time.Duration; +import java.util.concurrent.Executors; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; @@ -97,8 +98,8 @@ public class StdioServerTransport implements McpTransport { this.outputStream = System.out; // Use bounded schedulers for better resource management - this.inboundScheduler = Schedulers.newBoundedElastic(1, 1, "inbound"); - this.outboundScheduler = Schedulers.newBoundedElastic(1, 1, "outbound"); + this.inboundScheduler = Schedulers.fromExecutorService(Executors.newSingleThreadExecutor(), "inbound"); + this.outboundScheduler = Schedulers.fromExecutorService(Executors.newSingleThreadExecutor(), "outbound"); } @Override @@ -139,38 +140,43 @@ public class StdioServerTransport implements McpTransport { private void startInboundProcessing() { this.inboundScheduler.schedule(() -> { inboundReady.tryEmitValue(null); - try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { - String line; - while (!isClosing && (line = reader.readLine()) != null) { + BufferedReader reader = null; + try { + reader = new BufferedReader(new InputStreamReader(inputStream)); + while (!isClosing) { try { - JSONRPCMessage message = McpSchema.deserializeJsonRpcMessage(this.objectMapper, line); - if (!this.inboundSink.tryEmitNext(message).isSuccess()) { + String line = reader.readLine(); + if (line == null || isClosing) { + break; + } + + try { + JSONRPCMessage message = McpSchema.deserializeJsonRpcMessage(this.objectMapper, line); + if (!this.inboundSink.tryEmitNext(message).isSuccess()) { + if (!isClosing) { + logger.error("Failed to enqueue message"); + } + break; + } + } + catch (Exception e) { if (!isClosing) { - logger.error("Failed to enqueue message"); + logger.error("Error processing inbound message", e); } break; } } - catch (Exception e) { + catch (IOException e) { if (!isClosing) { - logger.error("Error processing inbound message", e); + logger.error("Error reading from stdin", e); } break; } } } - catch (IOException e) { - // Check isClosing before the error occurs to properly categorize it - boolean wasClosing = isClosing; - isClosing = true; - if (!wasClosing && e.getMessage().equals("Pipe closed")) { - logger.debug("Stream closed during shutdown", e); - } - else if (!wasClosing) { - logger.error("Error reading from stdin", e); - } - else { - logger.debug("Stream error during shutdown", e); + catch (Exception e) { + if (!isClosing) { + logger.error("Error in inbound processing", e); } } finally { @@ -234,6 +240,7 @@ public class StdioServerTransport implements McpTransport { @Override public Mono closeGracefully() { + return Mono.fromRunnable(() -> { isClosing = true; logger.debug("Initiating graceful shutdown"); @@ -244,18 +251,10 @@ public class StdioServerTransport implements McpTransport { return Mono.delay(Duration.ofMillis(100)); })).then(Mono.fromRunnable(() -> { try { - // Dispose schedulers first + // Dispose schedulers with longer timeout inboundScheduler.dispose(); outboundScheduler.dispose(); - // Wait for schedulers to terminate - if (!inboundScheduler.isDisposed()) { - inboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); - } - if (!outboundScheduler.isDisposed()) { - outboundScheduler.disposeGracefully().block(Duration.ofSeconds(5)); - } - logger.info("Graceful shutdown completed"); } catch (Exception e) { diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java index 15ef810..8807d40 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java @@ -66,6 +66,7 @@ public abstract class AbstractMcpSyncServerTests { @BeforeEach void setUp() { + // onStart(); } @AfterEach diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java index b9a2b77..3d8336b 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java @@ -17,6 +17,8 @@ package org.springframework.ai.mcp.server; import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Timeout; + import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.function.server.RouterFunctions; @@ -31,6 +33,7 @@ import org.springframework.ai.mcp.spec.McpTransport; * * @author Christian Tzolov */ +@Timeout(15) // Giving extra time beyond the client timeout class SseMcpAsyncServerTests extends AbstractMcpAsyncServerTests { private static final int PORT = 8181; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java index 2d92574..c742969 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java @@ -17,6 +17,8 @@ package org.springframework.ai.mcp.server; import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Timeout; + import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.function.server.RouterFunctions; @@ -31,6 +33,7 @@ import org.springframework.ai.mcp.spec.McpTransport; * * @author Christian Tzolov */ +@Timeout(15) // Giving extra time beyond the client timeout class SseMcpSyncServerTests extends AbstractMcpSyncServerTests { private static final int PORT = 8182; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java index 9d5c80b..8d8a31d 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java @@ -16,6 +16,8 @@ package org.springframework.ai.mcp.server; +import org.junit.jupiter.api.Timeout; + import org.springframework.ai.mcp.server.transport.StdioServerTransport; import org.springframework.ai.mcp.spec.McpTransport; @@ -24,6 +26,7 @@ import org.springframework.ai.mcp.spec.McpTransport; * * @author Christian Tzolov */ +@Timeout(15) // Giving extra time beyond the client timeout class StdioMcpAsyncServerTests extends AbstractMcpAsyncServerTests { @Override diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java index a90e4de..2e02f0d 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java @@ -16,6 +16,8 @@ package org.springframework.ai.mcp.server; +import org.junit.jupiter.api.Timeout; + import org.springframework.ai.mcp.server.transport.StdioServerTransport; import org.springframework.ai.mcp.spec.McpTransport; @@ -24,6 +26,7 @@ import org.springframework.ai.mcp.spec.McpTransport; * * @author Christian Tzolov */ +@Timeout(15) // Giving extra time beyond the client timeout class StdioMcpSyncServerTests extends AbstractMcpSyncServerTests { @Override diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java index ba0446d..c6ce443 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java @@ -16,7 +16,6 @@ package org.springframework.ai.mcp.server.transport; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.PrintStream; @@ -51,8 +50,6 @@ class StdioServerTransportTests { private ByteArrayOutputStream testOut; - private ByteArrayInputStream testIn; - private ByteArrayOutputStream testErr; private PrintStream testOutPrintStream; @@ -89,7 +86,6 @@ class StdioServerTransportTests { void shouldHandleIncomingMessages() throws Exception { // Prepare test input String jsonMessage = "{\"jsonrpc\":\"2.0\",\"method\":\"test\",\"params\":{},\"id\":1}"; - testIn = new ByteArrayInputStream((jsonMessage + "\n").getBytes(StandardCharsets.UTF_8)); // Create transport with test streams transport = new StdioServerTransport(objectMapper); diff --git a/pom.xml b/pom.xml index 4a1823b..383a2d2 100644 --- a/pom.xml +++ b/pom.xml @@ -174,6 +174,7 @@ false + From c36d4677c164335c326c509a1275662572393271 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 13:13:32 +0100 Subject: [PATCH 009/505] docs(mcp) Improve McpServer and McpClient javadoc --- mcp/README.md | 4 +- mcp/pom.xml | 2 +- .../ai/mcp/client/McpClient.java | 187 +++++++-- .../ai/mcp/server/McpServer.java | 384 +++++++++++++++--- 4 files changed, 485 insertions(+), 92 deletions(-) diff --git a/mcp/README.md b/mcp/README.md index f0bf8a9..4c9c641 100644 --- a/mcp/README.md +++ b/mcp/README.md @@ -1,6 +1,6 @@ -# Spring AI MCP SDK +# Java MCP SDK -This SDK implements the Model Context Protocol, enabling seamless integration with language models and AI tools. +Java SDK implementation of the Model Context Protocol, enabling seamless integration with language models and AI tools. ## Features diff --git a/mcp/pom.xml b/mcp/pom.xml index c5c2d54..6bb5e13 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -11,7 +11,7 @@ mcp jar Java MCP SDK - Core Java implementation of the Model Context Protocol (MCP) specification, providing synchronous and asynchronous clients, server implementations (coming in 0.3.0), with support for tool discovery, resource management, and multiple transport implementations + Java SDK implementation of the Model Context Protocol, enabling seamless integration with language models and AI tools https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java index 3c4663a..9f49924 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java @@ -34,42 +34,90 @@ import org.springframework.ai.mcp.spec.McpTransport; import org.springframework.ai.mcp.util.Assert; /** - * Factory class providing static methods for creating Model Context Protocol (MCP) - * clients. This class serves as the main entry point for establishing connections with - * MCP servers, offering both synchronous and asynchronous client implementations. - * - *

- * The class provides factory methods to create either: + * Factory class for creating Model Context Protocol (MCP) clients. MCP is a protocol that enables + * AI models to interact with external tools and resources through a standardized interface. + * + *

This class serves as the main entry point for establishing connections with MCP servers, + * implementing the client-side of the MCP specification. The protocol follows a client-server + * architecture where: *

    - *
  • {@link McpAsyncClient} for non-blocking operations - *
  • {@link McpSyncClient} for blocking operations + *
  • The client (this implementation) initiates connections and sends requests + *
  • The server responds to requests and provides access to tools and resources + *
  • Communication occurs through a transport layer (e.g., stdio, SSE) using JSON-RPC 2.0 *
* - *

- * Use the builder pattern for flexible client configuration: + *

The class provides factory methods to create either: + *

    + *
  • {@link McpAsyncClient} for non-blocking operations with CompletableFuture responses + *
  • {@link McpSyncClient} for blocking operations with direct responses + *
* + *

Example of creating a basic client: *

{@code
  * McpClient.using(transport)
- * 		.requestTimeout(Duration.ofSeconds(5))
- * 		.sync(); // or .async()
+ *     .requestTimeout(Duration.ofSeconds(5))
+ *     .sync(); // or .async()
  * }
* + *

Example with advanced configuration: + *

{@code
+ * McpClient.using(transport)
+ *     .requestTimeout(Duration.ofSeconds(10))
+ *     .capabilities(new ClientCapabilities(...))
+ *     .clientInfo(new Implementation("My Client", "1.0.0"))
+ *     .roots(new Root("file://workspace", "Workspace Files"))
+ *     .toolsChangeConsumer(tools -> System.out.println("Tools updated: " + tools))
+ *     .async();
+ * }
+ * + *

The client supports: + *

    + *
  • Tool discovery and invocation + *
  • Resource access and management + *
  • Prompt template handling + *
  • Real-time updates through change consumers + *
  • Custom sampling strategies + *
+ * * @author Christian Tzolov * @author Dariusz Jędrzejczyk + * @see McpAsyncClient + * @see McpSyncClient + * @see McpTransport */ public interface McpClient { /** - * Start building an MCP client with the specified transport. - * @param transport The transport layer implementation for MCP communication - * @return A new builder instance + * Start building an MCP client with the specified transport layer. + * The transport layer handles the low-level communication between + * client and server using protocols like stdio or Server-Sent Events (SSE). + * + * @param transport The transport layer implementation for MCP communication. + * Common implementations include {@code StdioClientTransport} + * for stdio-based communication and {@code SseClientTransport} + * for SSE-based communication. + * @return A new builder instance for configuring the client + * @throws IllegalArgumentException if transport is null */ public static Builder using(McpTransport transport) { return new Builder(transport); } /** - * Builder class for creating MCP clients with custom configuration. + * Builder class for creating and configuring MCP clients. This class follows + * the builder pattern to provide a fluent API for setting up clients with + * custom configurations. + * + *

The builder supports configuration of: + *

    + *
  • Transport layer for client-server communication + *
  • Request timeouts for operation boundaries + *
  • Client capabilities for feature negotiation + *
  • Client implementation details for version tracking + *
  • Root URIs for resource access + *
  • Change notification handlers for tools, resources, and prompts + *
  • Custom message sampling logic + *
*/ public static class Builder { @@ -79,7 +127,7 @@ public interface McpClient { private ClientCapabilities capabilities; - private Implementation clientInfo = new Implementation("Spring AI MCP Client", "0.3.0"); + private Implementation clientInfo = new Implementation("Spring AI MCP Client", "0.3.1"); private Map roots = new HashMap<>(); @@ -97,9 +145,14 @@ public interface McpClient { } /** - * Set the request timeout duration. - * @param requestTimeout The duration to wait before timing out requests - * @return This builder instance + * Sets the duration to wait for server responses before timing out requests. + * This timeout applies to all requests made through the client, including + * tool calls, resource access, and prompt operations. + * + * @param requestTimeout The duration to wait before timing out requests. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if requestTimeout is null */ public Builder requestTimeout(Duration requestTimeout) { Assert.notNull(requestTimeout, "Request timeout must not be null"); @@ -107,18 +160,46 @@ public interface McpClient { return this; } + /** + * Sets the client capabilities that will be advertised to the server during + * connection initialization. Capabilities define what features the client supports, + * such as tool execution, resource access, and prompt handling. + * + * @param capabilities The client capabilities configuration. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if capabilities is null + */ public Builder capabilities(ClientCapabilities capabilities) { Assert.notNull(capabilities, "Capabilities must not be null"); this.capabilities = capabilities; return this; } + /** + * Sets the client implementation information that will be shared with the server + * during connection initialization. This helps with version compatibility and + * debugging. + * + * @param clientInfo The client implementation details including name and version. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if clientInfo is null + */ public Builder clientInfo(Implementation clientInfo) { Assert.notNull(clientInfo, "Client info must not be null"); this.clientInfo = clientInfo; return this; } + /** + * Sets the root URIs that this client can access. Roots define the base URIs + * for resources that the client can request from the server. For example, + * a root might be "file://workspace" for accessing workspace files. + * + * @param roots A list of root definitions. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if roots is null + */ public Builder roots(List roots) { Assert.notNull(roots, "Roots must not be null"); for (Root root : roots) { @@ -127,6 +208,15 @@ public interface McpClient { return this; } + /** + * Sets the root URIs that this client can access, using a varargs parameter + * for convenience. This is an alternative to {@link #roots(List)}. + * + * @param roots An array of root definitions. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if roots is null + * @see #roots(List) + */ public Builder roots(Root... roots) { Assert.notNull(roots, "Roots must not be null"); for (Root root : roots) { @@ -135,24 +225,64 @@ public interface McpClient { return this; } + /** + * Sets a custom sampling handler for processing message creation requests. + * The sampling handler can modify or validate messages before they are sent + * to the server, enabling custom processing logic. + * + * @param samplingHandler A function that processes message requests and returns + * results. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if samplingHandler is null + */ public Builder sampling(Function samplingHandler) { Assert.notNull(samplingHandler, "Sampling handler must not be null"); this.samplingHandler = samplingHandler; return this; } + /** + * Adds a consumer to be notified when the available tools change. This allows + * the client to react to changes in the server's tool capabilities, such as + * tools being added or removed. + * + * @param toolsChangeConsumer A consumer that receives the updated list of + * available tools. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if toolsChangeConsumer is null + */ public Builder toolsChangeConsumer(Consumer> toolsChangeConsumer) { Assert.notNull(toolsChangeConsumer, "Tools change consumer must not be null"); this.toolsChangeConsumers.add(toolsChangeConsumer); return this; } + /** + * Adds a consumer to be notified when the available resources change. This allows + * the client to react to changes in the server's resource availability, such as + * files being added or removed. + * + * @param resourcesChangeConsumer A consumer that receives the updated list of + * available resources. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourcesChangeConsumer is null + */ public Builder resourcesChangeConsumer(Consumer> resourcesChangeConsumer) { Assert.notNull(resourcesChangeConsumer, "Resources change consumer must not be null"); this.resourcesChangeConsumers.add(resourcesChangeConsumer); return this; } + /** + * Adds a consumer to be notified when the available prompts change. This allows + * the client to react to changes in the server's prompt templates, such as + * new templates being added or existing ones being modified. + * + * @param promptsChangeConsumer A consumer that receives the updated list of + * available prompts. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if promptsChangeConsumer is null + */ public Builder promptsChangeConsumer(Consumer> promptsChangeConsumer) { Assert.notNull(promptsChangeConsumer, "Prompts change consumer must not be null"); this.promptsChangeConsumers.add(promptsChangeConsumer); @@ -160,16 +290,25 @@ public interface McpClient { } /** - * Build a synchronous MCP client. - * @return A new instance of {@link McpSyncClient} + * Builds a synchronous MCP client that provides blocking operations. + * Synchronous clients wait for each operation to complete before returning, + * making them simpler to use but potentially less performant for + * concurrent operations. + * + * @return A new instance of {@link McpSyncClient} configured with this + * builder's settings */ public McpSyncClient sync() { return new McpSyncClient(async()); } /** - * Build an asynchronous MCP client. - * @return A new instance of {@link McpAsyncClient} + * Builds an asynchronous MCP client that provides non-blocking operations. + * Asynchronous clients return CompletableFuture objects immediately, + * allowing for concurrent operations and reactive programming patterns. + * + * @return A new instance of {@link McpAsyncClient} configured with this + * builder's settings */ public McpAsyncClient async() { return new McpAsyncClient(transport, requestTimeout, clientInfo, capabilities, roots, toolsChangeConsumers, diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java index cbabff4..4cc051c 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java @@ -30,49 +30,162 @@ import org.springframework.ai.mcp.spec.McpTransport; import org.springframework.ai.mcp.util.Assert; /** - * Factory class providing static methods for creating Model Context Protocol (MCP) - * servers. This class serves as the main entry point for establishing MCP servers, - * offering both synchronous and asynchronous server implementations. + * Factory class for creating Model Context Protocol (MCP) servers. MCP servers expose + * tools, resources, and prompts to AI models through a standardized interface. * - *

- * The class provides factory methods to create either: + *

This class serves as the main entry point for implementing the server-side of + * the MCP specification. The server's responsibilities include: *

    - *
  • {@link McpAsyncServer} for non-blocking operations - *
  • {@link McpSyncServer} for blocking operations + *
  • Exposing tools that models can invoke to perform actions + *
  • Providing access to resources that give models context + *
  • Managing prompt templates for structured model interactions + *
  • Handling client connections and requests + *
  • Implementing capability negotiation *
* - *

- * Use the builder pattern for flexible server configuration: + *

The class provides factory methods to create either: + *

    + *
  • {@link McpAsyncServer} for non-blocking operations with CompletableFuture responses + *
  • {@link McpSyncServer} for blocking operations with direct responses + *
* + *

Example of creating a basic server: *

{@code
  * McpServer.using(transport)
- * 		.serverInfo(new McpSchema.Implementation("my-server", "1.0.0"))
- * 		.tool(new MyToolHandler())
- * 		.async(); // or .sync()
+ *     .info("my-server", "1.0.0")
+ *     .tool(new Tool("calculator", "Performs calculations", schema),
+ *           args -> new CallToolResult("Result: " + calculate(args)))
+ *     .sync(); // or .async()
+ * }
+ * + *

Example with comprehensive configuration: + *

{@code
+ * McpServer.using(transport)
+ *     .info("advanced-server", "2.0.0")
+ *     .capabilities(new ServerCapabilities(...))
+ *     // Register tools
+ *     .tools(
+ *         new ToolRegistration(calculatorTool, calculatorHandler),
+ *         new ToolRegistration(weatherTool, weatherHandler)
+ *     )
+ *     // Register resources
+ *     .resources(
+ *         new ResourceRegistration(fileResource, fileHandler),
+ *         new ResourceRegistration(dbResource, dbHandler)
+ *     )
+ *     // Add resource templates
+ *     .resourceTemplates(
+ *         new ResourceTemplate("file://{path}", "Access files"),
+ *         new ResourceTemplate("db://{table}", "Access database")
+ *     )
+ *     // Register prompts
+ *     .prompts(
+ *         new PromptRegistration(analysisPrompt, analysisHandler),
+ *         new PromptRegistration(summaryPrompt, summaryHandler)
+ *     )
+ *     .async();
  * }
* * @author Christian Tzolov + * @see McpAsyncServer + * @see McpSyncServer + * @see McpTransport */ public interface McpServer { /** - * Registration of a tool with its handler function. MCP allows servers to expose - * tools that can be invoked by language models. Tools enable models to interact with - * external systems, such as querying databases, calling APIs, or performing - * computations. Each tool is uniquely identified by a name and includes metadata - * describing its schema. + * Registration of a tool with its handler function. Tools are the primary way for + * MCP servers to expose functionality to AI models. Each tool represents a specific + * capability, such as: + *
    + *
  • Performing calculations + *
  • Accessing external APIs + *
  • Querying databases + *
  • Manipulating files + *
  • Executing system commands + *
* - * @param tool The tool definition - * @param call The function to handle tool execution + *

Example tool registration: + *

{@code
+	 * new ToolRegistration(
+	 *     new Tool(
+	 *         "calculator",
+	 *         "Performs mathematical calculations",
+	 *         new JsonSchemaObject()
+	 *             .required("expression")
+	 *             .property("expression", JsonSchemaType.STRING)
+	 *     ),
+	 *     args -> {
+	 *         String expr = (String) args.get("expression");
+	 *         return new CallToolResult("Result: " + evaluate(expr));
+	 *     }
+	 * )
+	 * }
+ * + * @param tool The tool definition including name, description, and parameter schema + * @param call The function that implements the tool's logic, receiving arguments + * and returning results */ public static record ToolRegistration(Tool tool, Function, CallToolResult> call) { - } + /** + * Registration of a resource with its handler function. Resources provide context + * to AI models by exposing data such as: + *
    + *
  • File contents + *
  • Database records + *
  • API responses + *
  • System information + *
  • Application state + *
+ * + *

Example resource registration: + *

{@code
+	 * new ResourceRegistration(
+	 *     new Resource("docs", "Documentation files", "text/markdown"),
+	 *     request -> {
+	 *         String content = readFile(request.getPath());
+	 *         return new ReadResourceResult(content);
+	 *     }
+	 * )
+	 * }
+ * + * @param resource The resource definition including name, description, and MIME type + * @param readHandler The function that handles resource read requests + */ public static record ResourceRegistration(McpSchema.Resource resource, Function readHandler) { } + /** + * Registration of a prompt template with its handler function. Prompts provide + * structured templates for AI model interactions, supporting: + *
    + *
  • Consistent message formatting + *
  • Parameter substitution + *
  • Context injection + *
  • Response formatting + *
  • Instruction templating + *
+ * + *

Example prompt registration: + *

{@code
+	 * new PromptRegistration(
+	 *     new Prompt("analyze", "Code analysis template"),
+	 *     request -> {
+	 *         String code = request.getArguments().get("code");
+	 *         return new GetPromptResult(
+	 *             "Analyze this code:\n\n" + code + "\n\nProvide feedback on:"
+	 *         );
+	 *     }
+	 * )
+	 * }
+ * + * @param prompt The prompt definition including name and description + * @param promptHandler The function that processes prompt requests and returns + * formatted templates + */ public static record PromptRegistration(McpSchema.Prompt propmpt, Function promptHandler) { } @@ -132,9 +245,14 @@ public interface McpServer { } /** - * Set the server implementation information. - * @param serverInfo The server implementation details - * @return This builder instance + * Sets the server implementation information that will be shared with clients + * during connection initialization. This helps with version compatibility, + * debugging, and server identification. + * + * @param serverInfo The server implementation details including name and version. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if serverInfo is null */ public Builder info(McpSchema.Implementation serverInfo) { Assert.notNull(serverInfo, "Server info must not be null"); @@ -143,10 +261,14 @@ public interface McpServer { } /** - * Set the server implementation information using name and version. - * @param name The server name - * @param version The server version - * @return This builder instance + * Sets the server implementation information using name and version strings. + * This is a convenience method alternative to {@link #info(McpSchema.Implementation)}. + * + * @param name The server name. Must not be null or empty. + * @param version The server version. Must not be null or empty. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if name or version is null or empty + * @see #info(McpSchema.Implementation) */ public Builder info(String name, String version) { Assert.hasText(name, "Name must not be null or empty"); @@ -156,9 +278,20 @@ public interface McpServer { } /** - * Set the server capabilities. - * @param serverCapabilities The server capabilities configuration - * @return This builder instance + * Sets the server capabilities that will be advertised to clients during + * connection initialization. Capabilities define what features the server + * supports, such as: + *
    + *
  • Tool execution + *
  • Resource access + *
  • Prompt handling + *
  • Streaming responses + *
  • Batch operations + *
+ * + * @param serverCapabilities The server capabilities configuration. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if serverCapabilities is null */ public Builder capabilities(McpSchema.ServerCapabilities serverCapabilities) { this.serverCapabilities = serverCapabilities; @@ -166,10 +299,23 @@ public interface McpServer { } /** - * Add a tool with its handler function. - * @param tool The tool definition - * @param handler The function to handle tool execution - * @return This builder instance + * Adds a single tool with its implementation handler to the server. This is + * a convenience method for registering individual tools without creating a + * {@link ToolRegistration} explicitly. + * + *

Example usage: + *

{@code
+		 * .tool(
+		 *     new Tool("calculator", "Performs calculations", schema),
+		 *     args -> new CallToolResult("Result: " + calculate(args))
+		 * )
+		 * }
+ * + * @param tool The tool definition including name, description, and schema. + * Must not be null. + * @param handler The function that implements the tool's logic. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if tool or handler is null */ public Builder tool(McpSchema.Tool tool, Function, McpSchema.CallToolResult> handler) { Assert.notNull(tool, "Tool must not be null"); @@ -181,9 +327,15 @@ public interface McpServer { } /** - * Add multiple tool handlers to the server. - * @param toolRegistrations The list of tool handlers to add - * @return This builder instance + * Adds multiple tools with their handlers to the server using a List. + * This method is useful when tools are dynamically generated or loaded + * from a configuration source. + * + * @param toolRegistrations The list of tool registrations to add. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if toolRegistrations is null + * @see #tools(ToolRegistration...) */ public Builder tools(List toolRegistrations) { Assert.notNull(toolRegistrations, "Tool handlers list must not be null"); @@ -192,9 +344,22 @@ public interface McpServer { } /** - * Register tools with the server. - * @param toolRegistrations The map of tools to register - * @return This builder instance + * Adds multiple tools with their handlers to the server using varargs. + * This method provides a convenient way to register multiple tools inline. + * + *

Example usage: + *

{@code
+		 * .tools(
+		 *     new ToolRegistration(calculatorTool, calculatorHandler),
+		 *     new ToolRegistration(weatherTool, weatherHandler),
+		 *     new ToolRegistration(fileManagerTool, fileManagerHandler)
+		 * )
+		 * }
+ * + * @param toolRegistrations The tool registrations to add. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if toolRegistrations is null + * @see #tools(List) */ public Builder tools(ToolRegistration... toolRegistrations) { for (ToolRegistration tool : toolRegistrations) { @@ -204,9 +369,15 @@ public interface McpServer { } /** - * Register resources with the server. - * @param resourceRegsitrations The map of resources to register - * @return This builder instance + * Registers multiple resources with their handlers using a Map. + * This method is useful when resources are dynamically generated + * or loaded from a configuration source. + * + * @param resourceRegsitrations Map of resource name to registration. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourceRegsitrations is null + * @see #resources(ResourceRegistration...) */ public Builder resources(Map resourceRegsitrations) { Assert.notNull(resourceRegsitrations, "Resource handlers map must not be null"); @@ -215,9 +386,15 @@ public interface McpServer { } /** - * Register resources with the server. - * @param resourceRegsitrations The list of resources to register - * @return This builder instance + * Registers multiple resources with their handlers using a List. + * This method is useful when resources need to be added in bulk + * from a collection. + * + * @param resourceRegsitrations List of resource registrations. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourceRegsitrations is null + * @see #resources(ResourceRegistration...) */ public Builder resources(List resourceRegsitrations) { Assert.notNull(resourceRegsitrations, "Resource handlers list must not be null"); @@ -228,9 +405,23 @@ public interface McpServer { } /** - * Register resources with the server. - * @param resourceRegistrations The list of resources to register - * @return This builder instance + * Registers multiple resources with their handlers using varargs. + * This method provides a convenient way to register multiple + * resources inline. + * + *

Example usage: + *

{@code
+		 * .resources(
+		 *     new ResourceRegistration(fileResource, fileHandler),
+		 *     new ResourceRegistration(dbResource, dbHandler),
+		 *     new ResourceRegistration(apiResource, apiHandler)
+		 * )
+		 * }
+ * + * @param resourceRegistrations The resource registrations to add. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourceRegistrations is null */ public Builder resources(ResourceRegistration... resourceRegistrations) { Assert.notNull(resourceRegistrations, "Resource handlers list must not be null"); @@ -241,15 +432,36 @@ public interface McpServer { } /** - * Set the resource templates. - * @param resourceTemplates The list of resource templates - * @return This builder instance + * Sets the resource templates that define patterns for dynamic resource + * access. Templates use URI patterns with placeholders that can be + * filled at runtime. + * + *

Example usage: + *

{@code
+		 * .resourceTemplates(
+		 *     new ResourceTemplate("file://{path}", "Access files by path"),
+		 *     new ResourceTemplate("db://{table}/{id}", "Access database records")
+		 * )
+		 * }
+ * + * @param resourceTemplates List of resource templates. If null, clears + * existing templates. + * @return This builder instance for method chaining + * @see #resourceTemplates(ResourceTemplate...) */ public Builder resourceTemplates(List resourceTemplates) { this.resourceTemplates = resourceTemplates; return this; } + /** + * Sets the resource templates using varargs for convenience. + * This is an alternative to {@link #resourceTemplates(List)}. + * + * @param resourceTemplates The resource templates to set. + * @return This builder instance for method chaining + * @see #resourceTemplates(List) + */ public Builder resourceTemplates(ResourceTemplate... resourceTemplates) { for (ResourceTemplate resourceTemplate : resourceTemplates) { this.resourceTemplates.add(resourceTemplate); @@ -258,9 +470,23 @@ public interface McpServer { } /** - * Register prompts with the server. - * @param prompts The map of prompts to register - * @return This builder instance + * Registers multiple prompts with their handlers using a Map. + * This method is useful when prompts are dynamically generated + * or loaded from a configuration source. + * + *

Example usage: + *

{@code
+		 * Map prompts = new HashMap<>();
+		 * prompts.put("analysis", new PromptRegistration(
+		 *     new Prompt("analysis", "Code analysis template"),
+		 *     request -> new GetPromptResult(generateAnalysisPrompt(request))
+		 * ));
+		 * .prompts(prompts)
+		 * }
+ * + * @param prompts Map of prompt name to registration. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if prompts is null */ public Builder prompts(Map prompts) { this.prompts.putAll(prompts); @@ -268,9 +494,14 @@ public interface McpServer { } /** - * Register prompts with the server. - * @param prompts The list of prompts to register - * @return This builder instance. + * Registers multiple prompts with their handlers using a List. + * This method is useful when prompts need to be added in bulk + * from a collection. + * + * @param prompts List of prompt registrations. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if prompts is null + * @see #prompts(PromptRegistration...) */ public Builder prompts(List prompts) { for (PromptRegistration prompt : prompts) { @@ -280,9 +511,22 @@ public interface McpServer { } /** - * Register prompts with the server. - * @param prompts The list of prompts to register - * @return This builder instance + * Registers multiple prompts with their handlers using varargs. + * This method provides a convenient way to register multiple + * prompts inline. + * + *

Example usage: + *

{@code
+		 * .prompts(
+		 *     new PromptRegistration(analysisPrompt, analysisHandler),
+		 *     new PromptRegistration(summaryPrompt, summaryHandler),
+		 *     new PromptRegistration(reviewPrompt, reviewHandler)
+		 * )
+		 * }
+ * + * @param prompts The prompt registrations to add. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if prompts is null */ public Builder prompts(PromptRegistration... prompts) { for (PromptRegistration prompt : prompts) { @@ -292,16 +536,26 @@ public interface McpServer { } /** - * Build a synchronous MCP server. - * @return A new instance of {@link McpSyncServer} + * Builds a synchronous MCP server that provides blocking operations. + * Synchronous servers process each request to completion before handling + * the next one, making them simpler to implement but potentially less + * performant for concurrent operations. + * + * @return A new instance of {@link McpSyncServer} configured with this + * builder's settings */ public McpSyncServer sync() { return new McpSyncServer(async()); } /** - * Build an asynchronous MCP server. - * @return A new instance of {@link McpAsyncServer} + * Builds an asynchronous MCP server that provides non-blocking operations. + * Asynchronous servers can handle multiple requests concurrently using + * CompletableFuture, making them more efficient for high-concurrency + * scenarios but more complex to implement. + * + * @return A new instance of {@link McpAsyncServer} configured with this + * builder's settings */ public McpAsyncServer async() { if (serverInfo == null) { From b6c9973cbf6d9797d34afbd25f7d745c1ea4008e Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 13:16:08 +0100 Subject: [PATCH 010/505] Fix code formatting --- .../ai/mcp/client/McpClient.java | 134 ++++++------- .../ai/mcp/server/McpServer.java | 189 ++++++++---------- 2 files changed, 148 insertions(+), 175 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java index 9f49924..bea9478 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java @@ -34,33 +34,37 @@ import org.springframework.ai.mcp.spec.McpTransport; import org.springframework.ai.mcp.util.Assert; /** - * Factory class for creating Model Context Protocol (MCP) clients. MCP is a protocol that enables - * AI models to interact with external tools and resources through a standardized interface. - * - *

This class serves as the main entry point for establishing connections with MCP servers, - * implementing the client-side of the MCP specification. The protocol follows a client-server - * architecture where: + * Factory class for creating Model Context Protocol (MCP) clients. MCP is a protocol that + * enables AI models to interact with external tools and resources through a standardized + * interface. + * + *

+ * This class serves as the main entry point for establishing connections with MCP + * servers, implementing the client-side of the MCP specification. The protocol follows a + * client-server architecture where: *

    *
  • The client (this implementation) initiates connections and sends requests *
  • The server responds to requests and provides access to tools and resources - *
  • Communication occurs through a transport layer (e.g., stdio, SSE) using JSON-RPC 2.0 + *
  • Communication occurs through a transport layer (e.g., stdio, SSE) using JSON-RPC + * 2.0 *
* - *

The class provides factory methods to create either: + *

+ * The class provides factory methods to create either: *

    *
  • {@link McpAsyncClient} for non-blocking operations with CompletableFuture responses *
  • {@link McpSyncClient} for blocking operations with direct responses *
* - *

Example of creating a basic client: - *

{@code
+ * 

+ * Example of creating a basic client:

{@code
  * McpClient.using(transport)
  *     .requestTimeout(Duration.ofSeconds(5))
  *     .sync(); // or .async()
  * }
* - *

Example with advanced configuration: - *

{@code
+ * 

+ * Example with advanced configuration:

{@code
  * McpClient.using(transport)
  *     .requestTimeout(Duration.ofSeconds(10))
  *     .capabilities(new ClientCapabilities(...))
@@ -70,7 +74,8 @@ import org.springframework.ai.mcp.util.Assert;
  *     .async();
  * }
* - *

The client supports: + *

+ * The client supports: *

    *
  • Tool discovery and invocation *
  • Resource access and management @@ -88,14 +93,12 @@ import org.springframework.ai.mcp.util.Assert; public interface McpClient { /** - * Start building an MCP client with the specified transport layer. - * The transport layer handles the low-level communication between - * client and server using protocols like stdio or Server-Sent Events (SSE). - * - * @param transport The transport layer implementation for MCP communication. - * Common implementations include {@code StdioClientTransport} - * for stdio-based communication and {@code SseClientTransport} - * for SSE-based communication. + * Start building an MCP client with the specified transport layer. The transport + * layer handles the low-level communication between client and server using protocols + * like stdio or Server-Sent Events (SSE). + * @param transport The transport layer implementation for MCP communication. Common + * implementations include {@code StdioClientTransport} for stdio-based communication + * and {@code SseClientTransport} for SSE-based communication. * @return A new builder instance for configuring the client * @throws IllegalArgumentException if transport is null */ @@ -104,11 +107,12 @@ public interface McpClient { } /** - * Builder class for creating and configuring MCP clients. This class follows - * the builder pattern to provide a fluent API for setting up clients with - * custom configurations. + * Builder class for creating and configuring MCP clients. This class follows the + * builder pattern to provide a fluent API for setting up clients with custom + * configurations. * - *

    The builder supports configuration of: + *

    + * The builder supports configuration of: *

      *
    • Transport layer for client-server communication *
    • Request timeouts for operation boundaries @@ -145,12 +149,11 @@ public interface McpClient { } /** - * Sets the duration to wait for server responses before timing out requests. - * This timeout applies to all requests made through the client, including - * tool calls, resource access, and prompt operations. - * - * @param requestTimeout The duration to wait before timing out requests. - * Must not be null. + * Sets the duration to wait for server responses before timing out requests. This + * timeout applies to all requests made through the client, including tool calls, + * resource access, and prompt operations. + * @param requestTimeout The duration to wait before timing out requests. Must not + * be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if requestTimeout is null */ @@ -162,9 +165,8 @@ public interface McpClient { /** * Sets the client capabilities that will be advertised to the server during - * connection initialization. Capabilities define what features the client supports, - * such as tool execution, resource access, and prompt handling. - * + * connection initialization. Capabilities define what features the client + * supports, such as tool execution, resource access, and prompt handling. * @param capabilities The client capabilities configuration. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if capabilities is null @@ -179,9 +181,8 @@ public interface McpClient { * Sets the client implementation information that will be shared with the server * during connection initialization. This helps with version compatibility and * debugging. - * * @param clientInfo The client implementation details including name and version. - * Must not be null. + * Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if clientInfo is null */ @@ -192,10 +193,9 @@ public interface McpClient { } /** - * Sets the root URIs that this client can access. Roots define the base URIs - * for resources that the client can request from the server. For example, - * a root might be "file://workspace" for accessing workspace files. - * + * Sets the root URIs that this client can access. Roots define the base URIs for + * resources that the client can request from the server. For example, a root + * might be "file://workspace" for accessing workspace files. * @param roots A list of root definitions. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if roots is null @@ -209,9 +209,8 @@ public interface McpClient { } /** - * Sets the root URIs that this client can access, using a varargs parameter - * for convenience. This is an alternative to {@link #roots(List)}. - * + * Sets the root URIs that this client can access, using a varargs parameter for + * convenience. This is an alternative to {@link #roots(List)}. * @param roots An array of root definitions. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if roots is null @@ -226,12 +225,11 @@ public interface McpClient { } /** - * Sets a custom sampling handler for processing message creation requests. - * The sampling handler can modify or validate messages before they are sent - * to the server, enabling custom processing logic. - * + * Sets a custom sampling handler for processing message creation requests. The + * sampling handler can modify or validate messages before they are sent to the + * server, enabling custom processing logic. * @param samplingHandler A function that processes message requests and returns - * results. Must not be null. + * results. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if samplingHandler is null */ @@ -242,12 +240,11 @@ public interface McpClient { } /** - * Adds a consumer to be notified when the available tools change. This allows - * the client to react to changes in the server's tool capabilities, such as - * tools being added or removed. - * + * Adds a consumer to be notified when the available tools change. This allows the + * client to react to changes in the server's tool capabilities, such as tools + * being added or removed. * @param toolsChangeConsumer A consumer that receives the updated list of - * available tools. Must not be null. + * available tools. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if toolsChangeConsumer is null */ @@ -261,9 +258,8 @@ public interface McpClient { * Adds a consumer to be notified when the available resources change. This allows * the client to react to changes in the server's resource availability, such as * files being added or removed. - * * @param resourcesChangeConsumer A consumer that receives the updated list of - * available resources. Must not be null. + * available resources. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if resourcesChangeConsumer is null */ @@ -275,11 +271,10 @@ public interface McpClient { /** * Adds a consumer to be notified when the available prompts change. This allows - * the client to react to changes in the server's prompt templates, such as - * new templates being added or existing ones being modified. - * + * the client to react to changes in the server's prompt templates, such as new + * templates being added or existing ones being modified. * @param promptsChangeConsumer A consumer that receives the updated list of - * available prompts. Must not be null. + * available prompts. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if promptsChangeConsumer is null */ @@ -290,13 +285,11 @@ public interface McpClient { } /** - * Builds a synchronous MCP client that provides blocking operations. - * Synchronous clients wait for each operation to complete before returning, - * making them simpler to use but potentially less performant for - * concurrent operations. - * - * @return A new instance of {@link McpSyncClient} configured with this - * builder's settings + * Builds a synchronous MCP client that provides blocking operations. Synchronous + * clients wait for each operation to complete before returning, making them + * simpler to use but potentially less performant for concurrent operations. + * @return A new instance of {@link McpSyncClient} configured with this builder's + * settings */ public McpSyncClient sync() { return new McpSyncClient(async()); @@ -304,11 +297,10 @@ public interface McpClient { /** * Builds an asynchronous MCP client that provides non-blocking operations. - * Asynchronous clients return CompletableFuture objects immediately, - * allowing for concurrent operations and reactive programming patterns. - * - * @return A new instance of {@link McpAsyncClient} configured with this - * builder's settings + * Asynchronous clients return CompletableFuture objects immediately, allowing for + * concurrent operations and reactive programming patterns. + * @return A new instance of {@link McpAsyncClient} configured with this builder's + * settings */ public McpAsyncClient async() { return new McpAsyncClient(transport, requestTimeout, clientInfo, capabilities, roots, toolsChangeConsumers, diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java index 4cc051c..22d6840 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java @@ -33,8 +33,9 @@ import org.springframework.ai.mcp.util.Assert; * Factory class for creating Model Context Protocol (MCP) servers. MCP servers expose * tools, resources, and prompts to AI models through a standardized interface. * - *

      This class serves as the main entry point for implementing the server-side of - * the MCP specification. The server's responsibilities include: + *

      + * This class serves as the main entry point for implementing the server-side of the MCP + * specification. The server's responsibilities include: *

        *
      • Exposing tools that models can invoke to perform actions *
      • Providing access to resources that give models context @@ -43,14 +44,15 @@ import org.springframework.ai.mcp.util.Assert; *
      • Implementing capability negotiation *
      * - *

      The class provides factory methods to create either: + *

      + * The class provides factory methods to create either: *

        *
      • {@link McpAsyncServer} for non-blocking operations with CompletableFuture responses *
      • {@link McpSyncServer} for blocking operations with direct responses *
      * - *

      Example of creating a basic server: - *

      {@code
      + * 

      + * Example of creating a basic server:

      {@code
        * McpServer.using(transport)
        *     .info("my-server", "1.0.0")
        *     .tool(new Tool("calculator", "Performs calculations", schema),
      @@ -58,8 +60,8 @@ import org.springframework.ai.mcp.util.Assert;
        *     .sync(); // or .async()
        * }
      * - *

      Example with comprehensive configuration: - *

      {@code
      + * 

      + * Example with comprehensive configuration:

      {@code
        * McpServer.using(transport)
        *     .info("advanced-server", "2.0.0")
        *     .capabilities(new ServerCapabilities(...))
      @@ -94,8 +96,8 @@ import org.springframework.ai.mcp.util.Assert;
       public interface McpServer {
       
       	/**
      -	 * Registration of a tool with its handler function. Tools are the primary way for
      -	 * MCP servers to expose functionality to AI models. Each tool represents a specific
      +	 * Registration of a tool with its handler function. Tools are the primary way for MCP
      +	 * servers to expose functionality to AI models. Each tool represents a specific
       	 * capability, such as:
       	 * 
        *
      • Performing calculations @@ -105,8 +107,8 @@ public interface McpServer { *
      • Executing system commands *
      * - *

      Example tool registration: - *

      {@code
      +	 * 

      + * Example tool registration:

      {@code
       	 * new ToolRegistration(
       	 *     new Tool(
       	 *         "calculator",
      @@ -123,15 +125,15 @@ public interface McpServer {
       	 * }
      * * @param tool The tool definition including name, description, and parameter schema - * @param call The function that implements the tool's logic, receiving arguments - * and returning results + * @param call The function that implements the tool's logic, receiving arguments and + * returning results */ public static record ToolRegistration(Tool tool, Function, CallToolResult> call) { } /** - * Registration of a resource with its handler function. Resources provide context - * to AI models by exposing data such as: + * Registration of a resource with its handler function. Resources provide context to + * AI models by exposing data such as: *
        *
      • File contents *
      • Database records @@ -140,8 +142,8 @@ public interface McpServer { *
      • Application state *
      * - *

      Example resource registration: - *

      {@code
      +	 * 

      + * Example resource registration:

      {@code
       	 * new ResourceRegistration(
       	 *     new Resource("docs", "Documentation files", "text/markdown"),
       	 *     request -> {
      @@ -169,8 +171,8 @@ public interface McpServer {
       	 * 
    • Instruction templating *
    * - *

    Example prompt registration: - *

    {@code
    +	 * 

    + * Example prompt registration:

    {@code
     	 * new PromptRegistration(
     	 *     new Prompt("analyze", "Code analysis template"),
     	 *     request -> {
    @@ -184,7 +186,7 @@ public interface McpServer {
     	 *
     	 * @param prompt The prompt definition including name and description
     	 * @param promptHandler The function that processes prompt requests and returns
    -	 *                     formatted templates
    +	 * formatted templates
     	 */
     	public static record PromptRegistration(McpSchema.Prompt propmpt,
     			Function promptHandler) {
    @@ -248,9 +250,8 @@ public interface McpServer {
     		 * Sets the server implementation information that will be shared with clients
     		 * during connection initialization. This helps with version compatibility,
     		 * debugging, and server identification.
    -		 *
     		 * @param serverInfo The server implementation details including name and version.
    -		 *                   Must not be null.
    +		 * Must not be null.
     		 * @return This builder instance for method chaining
     		 * @throws IllegalArgumentException if serverInfo is null
     		 */
    @@ -261,9 +262,8 @@ public interface McpServer {
     		}
     
     		/**
    -		 * Sets the server implementation information using name and version strings.
    -		 * This is a convenience method alternative to {@link #info(McpSchema.Implementation)}.
    -		 *
    +		 * Sets the server implementation information using name and version strings. This
    +		 * is a convenience method alternative to {@link #info(McpSchema.Implementation)}.
     		 * @param name The server name. Must not be null or empty.
     		 * @param version The server version. Must not be null or empty.
     		 * @return This builder instance for method chaining
    @@ -288,8 +288,8 @@ public interface McpServer {
     		 * 
  • Streaming responses *
  • Batch operations *
- * - * @param serverCapabilities The server capabilities configuration. Must not be null. + * @param serverCapabilities The server capabilities configuration. Must not be + * null. * @return This builder instance for method chaining * @throws IllegalArgumentException if serverCapabilities is null */ @@ -299,20 +299,19 @@ public interface McpServer { } /** - * Adds a single tool with its implementation handler to the server. This is - * a convenience method for registering individual tools without creating a + * Adds a single tool with its implementation handler to the server. This is a + * convenience method for registering individual tools without creating a * {@link ToolRegistration} explicitly. * - *

Example usage: - *

{@code
+		 * 

+ * Example usage:

{@code
 		 * .tool(
 		 *     new Tool("calculator", "Performs calculations", schema),
 		 *     args -> new CallToolResult("Result: " + calculate(args))
 		 * )
 		 * }
- * - * @param tool The tool definition including name, description, and schema. - * Must not be null. + * @param tool The tool definition including name, description, and schema. Must + * not be null. * @param handler The function that implements the tool's logic. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if tool or handler is null @@ -327,12 +326,11 @@ public interface McpServer { } /** - * Adds multiple tools with their handlers to the server using a List. - * This method is useful when tools are dynamically generated or loaded - * from a configuration source. - * - * @param toolRegistrations The list of tool registrations to add. - * Must not be null. + * Adds multiple tools with their handlers to the server using a List. This method + * is useful when tools are dynamically generated or loaded from a configuration + * source. + * @param toolRegistrations The list of tool registrations to add. Must not be + * null. * @return This builder instance for method chaining * @throws IllegalArgumentException if toolRegistrations is null * @see #tools(ToolRegistration...) @@ -344,18 +342,17 @@ public interface McpServer { } /** - * Adds multiple tools with their handlers to the server using varargs. - * This method provides a convenient way to register multiple tools inline. + * Adds multiple tools with their handlers to the server using varargs. This + * method provides a convenient way to register multiple tools inline. * - *

Example usage: - *

{@code
+		 * 

+ * Example usage:

{@code
 		 * .tools(
 		 *     new ToolRegistration(calculatorTool, calculatorHandler),
 		 *     new ToolRegistration(weatherTool, weatherHandler),
 		 *     new ToolRegistration(fileManagerTool, fileManagerHandler)
 		 * )
 		 * }
- * * @param toolRegistrations The tool registrations to add. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if toolRegistrations is null @@ -369,12 +366,11 @@ public interface McpServer { } /** - * Registers multiple resources with their handlers using a Map. - * This method is useful when resources are dynamically generated - * or loaded from a configuration source. - * - * @param resourceRegsitrations Map of resource name to registration. - * Must not be null. + * Registers multiple resources with their handlers using a Map. This method is + * useful when resources are dynamically generated or loaded from a configuration + * source. + * @param resourceRegsitrations Map of resource name to registration. Must not be + * null. * @return This builder instance for method chaining * @throws IllegalArgumentException if resourceRegsitrations is null * @see #resources(ResourceRegistration...) @@ -386,12 +382,9 @@ public interface McpServer { } /** - * Registers multiple resources with their handlers using a List. - * This method is useful when resources need to be added in bulk - * from a collection. - * - * @param resourceRegsitrations List of resource registrations. - * Must not be null. + * Registers multiple resources with their handlers using a List. This method is + * useful when resources need to be added in bulk from a collection. + * @param resourceRegsitrations List of resource registrations. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if resourceRegsitrations is null * @see #resources(ResourceRegistration...) @@ -405,21 +398,19 @@ public interface McpServer { } /** - * Registers multiple resources with their handlers using varargs. - * This method provides a convenient way to register multiple - * resources inline. + * Registers multiple resources with their handlers using varargs. This method + * provides a convenient way to register multiple resources inline. * - *

Example usage: - *

{@code
+		 * 

+ * Example usage:

{@code
 		 * .resources(
 		 *     new ResourceRegistration(fileResource, fileHandler),
 		 *     new ResourceRegistration(dbResource, dbHandler),
 		 *     new ResourceRegistration(apiResource, apiHandler)
 		 * )
 		 * }
- * - * @param resourceRegistrations The resource registrations to add. - * Must not be null. + * @param resourceRegistrations The resource registrations to add. Must not be + * null. * @return This builder instance for method chaining * @throws IllegalArgumentException if resourceRegistrations is null */ @@ -432,20 +423,18 @@ public interface McpServer { } /** - * Sets the resource templates that define patterns for dynamic resource - * access. Templates use URI patterns with placeholders that can be - * filled at runtime. + * Sets the resource templates that define patterns for dynamic resource access. + * Templates use URI patterns with placeholders that can be filled at runtime. * - *

Example usage: - *

{@code
+		 * 

+ * Example usage:

{@code
 		 * .resourceTemplates(
 		 *     new ResourceTemplate("file://{path}", "Access files by path"),
 		 *     new ResourceTemplate("db://{table}/{id}", "Access database records")
 		 * )
 		 * }
- * - * @param resourceTemplates List of resource templates. If null, clears - * existing templates. + * @param resourceTemplates List of resource templates. If null, clears existing + * templates. * @return This builder instance for method chaining * @see #resourceTemplates(ResourceTemplate...) */ @@ -455,9 +444,8 @@ public interface McpServer { } /** - * Sets the resource templates using varargs for convenience. - * This is an alternative to {@link #resourceTemplates(List)}. - * + * Sets the resource templates using varargs for convenience. This is an + * alternative to {@link #resourceTemplates(List)}. * @param resourceTemplates The resource templates to set. * @return This builder instance for method chaining * @see #resourceTemplates(List) @@ -470,12 +458,12 @@ public interface McpServer { } /** - * Registers multiple prompts with their handlers using a Map. - * This method is useful when prompts are dynamically generated - * or loaded from a configuration source. + * Registers multiple prompts with their handlers using a Map. This method is + * useful when prompts are dynamically generated or loaded from a configuration + * source. * - *

Example usage: - *

{@code
+		 * 

+ * Example usage:

{@code
 		 * Map prompts = new HashMap<>();
 		 * prompts.put("analysis", new PromptRegistration(
 		 *     new Prompt("analysis", "Code analysis template"),
@@ -483,7 +471,6 @@ public interface McpServer {
 		 * ));
 		 * .prompts(prompts)
 		 * }
- * * @param prompts Map of prompt name to registration. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if prompts is null @@ -494,10 +481,8 @@ public interface McpServer { } /** - * Registers multiple prompts with their handlers using a List. - * This method is useful when prompts need to be added in bulk - * from a collection. - * + * Registers multiple prompts with their handlers using a List. This method is + * useful when prompts need to be added in bulk from a collection. * @param prompts List of prompt registrations. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if prompts is null @@ -511,19 +496,17 @@ public interface McpServer { } /** - * Registers multiple prompts with their handlers using varargs. - * This method provides a convenient way to register multiple - * prompts inline. + * Registers multiple prompts with their handlers using varargs. This method + * provides a convenient way to register multiple prompts inline. * - *

Example usage: - *

{@code
+		 * 

+ * Example usage:

{@code
 		 * .prompts(
 		 *     new PromptRegistration(analysisPrompt, analysisHandler),
 		 *     new PromptRegistration(summaryPrompt, summaryHandler),
 		 *     new PromptRegistration(reviewPrompt, reviewHandler)
 		 * )
 		 * }
- * * @param prompts The prompt registrations to add. Must not be null. * @return This builder instance for method chaining * @throws IllegalArgumentException if prompts is null @@ -536,13 +519,12 @@ public interface McpServer { } /** - * Builds a synchronous MCP server that provides blocking operations. - * Synchronous servers process each request to completion before handling - * the next one, making them simpler to implement but potentially less - * performant for concurrent operations. - * - * @return A new instance of {@link McpSyncServer} configured with this - * builder's settings + * Builds a synchronous MCP server that provides blocking operations. Synchronous + * servers process each request to completion before handling the next one, making + * them simpler to implement but potentially less performant for concurrent + * operations. + * @return A new instance of {@link McpSyncServer} configured with this builder's + * settings */ public McpSyncServer sync() { return new McpSyncServer(async()); @@ -551,11 +533,10 @@ public interface McpServer { /** * Builds an asynchronous MCP server that provides non-blocking operations. * Asynchronous servers can handle multiple requests concurrently using - * CompletableFuture, making them more efficient for high-concurrency - * scenarios but more complex to implement. - * - * @return A new instance of {@link McpAsyncServer} configured with this - * builder's settings + * CompletableFuture, making them more efficient for high-concurrency scenarios + * but more complex to implement. + * @return A new instance of {@link McpAsyncServer} configured with this builder's + * settings */ public McpAsyncServer async() { if (serverInfo == null) { From 8dc9b979a82c90b1d34a0aeff5140edd324e901c Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 13:25:35 +0100 Subject: [PATCH 011/505] Release version 0.3.1 --- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp-sample/pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mcp/pom.xml b/mcp/pom.xml index 6bb5e13..dcdba17 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0-SNAPSHOT + 0.3.1 mcp jar diff --git a/pom.xml b/pom.xml index 383a2d2..3df66b0 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0-SNAPSHOT + 0.3.1 pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp-sample/pom.xml b/spring-ai-mcp-sample/pom.xml index 70aa6d8..02ec387 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/spring-ai-mcp-sample/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0-SNAPSHOT + 0.3.1 spring-ai-mcp-sample diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index 67caf72..fe62bbe 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0-SNAPSHOT + 0.3.1 spring-ai-mcp Spring AI MCP From d96222dcaf95faefa908ada8deff08e3f2461d76 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 13:25:53 +0100 Subject: [PATCH 012/505] Next development version --- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp-sample/pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mcp/pom.xml b/mcp/pom.xml index dcdba17..6bb5e13 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.3.1 + 0.4.0-SNAPSHOT mcp jar diff --git a/pom.xml b/pom.xml index 3df66b0..383a2d2 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.3.1 + 0.4.0-SNAPSHOT pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp-sample/pom.xml b/spring-ai-mcp-sample/pom.xml index 02ec387..70aa6d8 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/spring-ai-mcp-sample/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.3.1 + 0.4.0-SNAPSHOT spring-ai-mcp-sample diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index fe62bbe..67caf72 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.3.1 + 0.4.0-SNAPSHOT spring-ai-mcp Spring AI MCP From a2a8be215555cdd206bb8e7e0919271b7e79560a Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 13:53:23 +0100 Subject: [PATCH 013/505] Improve README --- README.md | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index b799c3d..6b4ef27 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Java SDK for the Model Context Protocol (MCP), providing seamless integration be ## Overview -Experimental project that provides Java and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. +Provides Java and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. @@ -14,8 +14,8 @@ The project consists of two main modules: ### [mcp](./mcp/README.md) -The core module provides a Java implementation of the Model Context Protocol specification. It includes: -- Synchronous and asynchronous client implementations +Java implementation of the Model Context Protocol specification. It includes: +- Synchronous and asynchronous [MCP Client](https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#client-usage-examples) and [MCP Server](https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#server-usage-examples) implementations - Standard MCP operations support (tool discovery, resource management, prompt handling). Support for request and notificaiotn handling. - [Stdio](https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio) and [SSE](https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse) transport implementations. - [Find more](./mcp/README.md). @@ -61,12 +61,13 @@ Explore these MCP examples in the [spring-ai-examples/model-context-protocol](ht - [SQLite Chatbot](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/chatbot) - Interactive chatbot with SQLite database interaction - [Filesystem](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem) - Enables LLM interaction with local filesystem folders and files - [Brave](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave) - Enables natural language interactions with Brave Search, allowing you to perform internet searches. - +- [Spring-ai-mcp-sample](./spring-ai-mcp-sample/) - Showcases how to create and use MCP servers and clients with different transport modes and capabilities. ## Documentation -- [Core Module Documentation](mcp/README.md) -- [Spring Integration Documentation](spring-ai-mcp/README.md) -- [UML Class Diagrams](spring-ai-mcp/docs/spring-ai-mcp-uml-classdiagram.svg) +- [Java MCP SDK documentation](mcp/README.md) + - [Reference documentation](docs/ref-index.md) +- [Spring Integration documentation](spring-ai-mcp/README.md) + ## Development @@ -111,18 +112,3 @@ This is an experimental Spring project. Contributions are welcome! Please: ## License This project is licensed under the [Apache License 2.0](LICENSE). - -``` -Copyright 2024-2024 the original author or authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. From a5394fffd282081c6efbc40846f53239fc69a519 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 16:09:12 +0100 Subject: [PATCH 014/505] efactor(mcp): reorganize McpAsyncServer and enhance error handling - Reorganize McpAsyncServer code into logical sections (Lifecycle, Tool, Resource, Prompt Management) - (bug) Fix resource registration to use URI instead of name as map key - Improve error logging in StdioServerTransport with helper methods - Clean up documentation and add transport mode descriptions - Update sample server configuration with clearer method names and organization --- .../ai/mcp/server/McpAsyncServer.java | 284 +++++++++--------- .../ai/mcp/server/McpServer.java | 4 +- .../transport/StdioServerTransport.java | 29 +- .../ai/mcp/sample/client/ClientStdio.java | 4 +- .../ai/mcp/sample/server/McpServerConfig.java | 54 ++-- 5 files changed, 195 insertions(+), 180 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index e7c07f4..ccd32c4 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -129,6 +129,52 @@ public class McpAsyncServer { notificationHandlers); } + // --------------------------------------- + // Lifecycle Management + // --------------------------------------- + private DefaultMcpSession.RequestHandler initializeRequestHandler() { + return params -> { + McpSchema.InitializeRequest initializeRequest = transport.unmarshalFrom(params, + new TypeReference() { + }); + + logger.info("Client initialize request - Protocol: {}, Capabilities: {}, Info: {}", + initializeRequest.protocolVersion(), initializeRequest.capabilities(), + initializeRequest.clientInfo()); + + if (!McpSchema.LATEST_PROTOCOL_VERSION.equals(initializeRequest.protocolVersion())) { + return Mono + .error(new McpError( + "Unsupported protocol version from client: " + initializeRequest.protocolVersion())) + .publishOn(Schedulers.boundedElastic()); + } + + return Mono + .just(new McpSchema.InitializeResult(McpSchema.LATEST_PROTOCOL_VERSION, this.serverCapabilities, + this.serverInfo, null)) + .publishOn(Schedulers.boundedElastic()); + }; + } + + /** + * Gracefully closes the server, allowing any in-progress operations to complete. + * @return A Mono that completes when the server has been closed + */ + public Mono closeGracefully() { + return this.mcpSession.closeGracefully(); + } + + /** + * Close the server immediately. + */ + public void close() { + this.mcpSession.close(); + } + + // --------------------------------------- + // Tool Management + // --------------------------------------- + /** * Add a new tool registration at runtime. * @param toolRegistration The tool registration to add @@ -185,6 +231,53 @@ public class McpAsyncServer { return Mono.error(new McpError("Tool with name '" + toolName + "' not found")); } + /** + * Notifies clients that the list of available tools has changed. + * @return A Mono that completes when all clients have been notified + */ + public Mono notifyToolsListChanged() { + return this.mcpSession.sendNotification("notifications/tools/list_changed", null); + } + + private DefaultMcpSession.RequestHandler toolsListRequestHandler() { + return params -> { + McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, + new TypeReference() { + }); + + List tools = this.tools.stream().map(toolRegistration -> { + return toolRegistration.tool(); + }).toList(); + + logger.info("Client tools list request - Cursor: {}", request.cursor()); + return Mono.just(new McpSchema.ListToolsResult(tools, null)); + }; + } + + private DefaultMcpSession.RequestHandler toolsCallRequestHandler() { + return params -> { + McpSchema.CallToolRequest callToolRequest = transport.unmarshalFrom(params, + new TypeReference() { + }); + + Optional toolRegistration = this.tools.stream() + .filter(tr -> callToolRequest.name().equals(tr.tool().name())) + .findAny(); + + if (toolRegistration.isEmpty()) { + return Mono.error(new McpError("Tool not found: " + callToolRequest.name())); + } + + CallToolResult callResponse = toolRegistration.get().call().apply(callToolRequest.arguments()); + + return Mono.just(callResponse); + }; + } + + // --------------------------------------- + // Resource Management + // --------------------------------------- + /** * Add a new resource handler at runtime. * @param resourceHandler The resource handler to add @@ -236,6 +329,43 @@ public class McpAsyncServer { return Mono.error(new McpError("Resource with URI '" + resourceUri + "' not found")); } + /** + * Notifies clients that the list of available resources has changed. + * @return A Mono that completes when all clients have been notified + */ + public Mono notifyResourcesListChanged() { + return this.mcpSession.sendNotification("notifications/resources/list_changed", null); + } + + private DefaultMcpSession.RequestHandler resourcesListRequestHandler() { + return params -> { + var resourceList = this.resources.values().stream().map(ResourceRegistration::resource).toList(); + return Mono.just(new McpSchema.ListResourcesResult(resourceList, null)); + }; + } + + private DefaultMcpSession.RequestHandler resourceTemplateListRequestHandler() { + return params -> Mono.just(new McpSchema.ListResourceTemplatesResult(this.resourceTemplates, null)); + + } + + private DefaultMcpSession.RequestHandler resourcesReadRequestHandler() { + return params -> { + McpSchema.ReadResourceRequest resourceRequest = transport.unmarshalFrom(params, + new TypeReference() { + }); + var resourceUri = resourceRequest.uri(); + if (this.resources.containsKey(resourceUri)) { + return Mono.just(this.resources.get(resourceUri).readHandler().apply(resourceRequest)); + } + return Mono.error(new McpError("Resource not found: " + resourceUri)); + }; + } + + // --------------------------------------- + // Prompt Management + // --------------------------------------- + /** * Add a new prompt handler at runtime. * @param promptRegistration The prompt handler to add @@ -255,7 +385,11 @@ public class McpAsyncServer { } this.prompts.put(promptRegistration.propmpt().name(), promptRegistration); + logger.info("Added prompt handler: {}", promptRegistration.propmpt().name()); + + // Servers that declared the listChanged capability SHOULD send a notification, + // when the list of available prompts changes if (this.serverCapabilities.prompts().listChanged()) { return notifyPromptsListChanged(); } @@ -276,8 +410,11 @@ public class McpAsyncServer { } PromptRegistration removed = this.prompts.remove(promptName); + if (removed != null) { logger.info("Removed prompt handler: {}", promptName); + // Servers that declared the listChanged capability SHOULD send a + // notification, when the list of available prompts changes if (this.serverCapabilities.prompts().listChanged()) { return this.notifyPromptsListChanged(); } @@ -286,100 +423,12 @@ public class McpAsyncServer { return Mono.error(new McpError("Prompt with name '" + promptName + "' not found")); } - // --------------------------------------- - // Request Handlers - // --------------------------------------- - private DefaultMcpSession.RequestHandler initializeRequestHandler() { - return params -> { - McpSchema.InitializeRequest request = transport.unmarshalFrom(params, - new TypeReference() { - }); - - logger.info("Client initialize request - Protocol: {}, Capabilities: {}, Info: {}", - request.protocolVersion(), request.capabilities(), request.clientInfo()); - - if (!McpSchema.LATEST_PROTOCOL_VERSION.equals(request.protocolVersion())) { - return Mono - .error( - new McpError("Unsupported protocol version from client: " + request.protocolVersion())) - .publishOn(Schedulers.boundedElastic()); - } - - return Mono - .just(new McpSchema.InitializeResult(McpSchema.LATEST_PROTOCOL_VERSION, this.serverCapabilities, - this.serverInfo, null)) - .publishOn(Schedulers.boundedElastic()); - }; - } - - private DefaultMcpSession.RequestHandler toolsListRequestHandler() { - return params -> { - McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, - new TypeReference() { - }); - - List tools = this.tools.stream().map(toolRegistration -> { - return toolRegistration.tool(); - }).toList(); - - logger.info("Client tools list request - Cursor: {}", request.cursor()); - return Mono.just(new McpSchema.ListToolsResult(tools, null)); - }; - } - - private DefaultMcpSession.RequestHandler toolsCallRequestHandler() { - return params -> { - McpSchema.CallToolRequest callToolRequest = transport.unmarshalFrom(params, - new TypeReference() { - }); - - Optional toolRegistration = this.tools.stream() - .filter(tr -> callToolRequest.name().equals(tr.tool().name())) - .findAny(); - - if (toolRegistration.isEmpty()) { - return Mono.error(new McpError("Tool not found: " + callToolRequest.name())); - } - - CallToolResult callResponse = toolRegistration.get().call().apply(callToolRequest.arguments()); - - return Mono.just(callResponse); - }; - } - - private DefaultMcpSession.RequestHandler resourcesListRequestHandler() { - return params -> { - // McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, - // new TypeReference() { - // }); - - var resourceList = this.resources.values().stream().map(ResourceRegistration::resource).toList(); - - return Mono.just(new McpSchema.ListResourcesResult(resourceList, null)); - }; - } - - private DefaultMcpSession.RequestHandler resourceTemplateListRequestHandler() { - return params -> { - // McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, - // new TypeReference() { - // }); - - return Mono.just(new McpSchema.ListResourceTemplatesResult(this.resourceTemplates, null)); - }; - } - - private DefaultMcpSession.RequestHandler resourcesReadRequestHandler() { - return params -> { - McpSchema.ReadResourceRequest request = transport.unmarshalFrom(params, - new TypeReference() { - }); - var resourceUri = request.uri(); - if (this.resources.containsKey(resourceUri)) { - return Mono.just(this.resources.get(resourceUri).readHandler().apply(request)); - } - return Mono.error(new McpError("Resource not found: " + resourceUri)); - }; + /** + * Notifies clients that the list of available prompts has changed. + * @return A Mono that completes when all clients have been notified + */ + public Mono notifyPromptsListChanged() { + return this.mcpSession.sendNotification("notifications/prompts/list_changed", null); } private DefaultMcpSession.RequestHandler promptsListRequestHandler() { @@ -396,56 +445,17 @@ public class McpAsyncServer { private DefaultMcpSession.RequestHandler promptsGetRequestHandler() { return params -> { - McpSchema.GetPromptRequest request = transport.unmarshalFrom(params, + McpSchema.GetPromptRequest promptRequest = transport.unmarshalFrom(params, new TypeReference() { }); // Implement prompt retrieval logic here - if (this.prompts.containsKey(request.name())) { - return Mono.just(this.prompts.get(request.name()).promptHandler().apply(request)); + if (this.prompts.containsKey(promptRequest.name())) { + return Mono.just(this.prompts.get(promptRequest.name()).promptHandler().apply(promptRequest)); } - return Mono.error(new McpError("Prompt not found: " + request.name())); + return Mono.error(new McpError("Prompt not found: " + promptRequest.name())); }; } - /** - * Notifies clients that the list of available tools has changed. - * @return A Mono that completes when all clients have been notified - */ - public Mono notifyToolsListChanged() { - return this.mcpSession.sendNotification("notifications/tools/list_changed", null); - } - - /** - * Notifies clients that the list of available resources has changed. - * @return A Mono that completes when all clients have been notified - */ - public Mono notifyResourcesListChanged() { - return this.mcpSession.sendNotification("notifications/resources/list_changed", null); - } - - /** - * Notifies clients that the list of available prompts has changed. - * @return A Mono that completes when all clients have been notified - */ - public Mono notifyPromptsListChanged() { - return this.mcpSession.sendNotification("notifications/prompts/list_changed", null); - } - - /** - * Gracefully closes the server, allowing any in-progress operations to complete. - * @return A Mono that completes when the server has been closed - */ - public Mono closeGracefully() { - return this.mcpSession.closeGracefully(); - } - - /** - * Close the server immediately. - */ - public void close() { - this.mcpSession.close(); - } - } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java index 22d6840..a92879a 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java @@ -392,7 +392,7 @@ public interface McpServer { public Builder resources(List resourceRegsitrations) { Assert.notNull(resourceRegsitrations, "Resource handlers list must not be null"); for (ResourceRegistration resource : resourceRegsitrations) { - this.resources.put(resource.resource().name(), resource); + this.resources.put(resource.resource().uri(), resource); } return this; } @@ -417,7 +417,7 @@ public interface McpServer { public Builder resources(ResourceRegistration... resourceRegistrations) { Assert.notNull(resourceRegistrations, "Resource handlers list must not be null"); for (ResourceRegistration resource : resourceRegistrations) { - this.resources.put(resource.resource().name(), resource); + this.resources.put(resource.resource().uri(), resource); } return this; } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java index 675737f..c568233 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java @@ -153,31 +153,23 @@ public class StdioServerTransport implements McpTransport { try { JSONRPCMessage message = McpSchema.deserializeJsonRpcMessage(this.objectMapper, line); if (!this.inboundSink.tryEmitNext(message).isSuccess()) { - if (!isClosing) { - logger.error("Failed to enqueue message"); - } + logIfNotClosing("Failed to enqueue message"); break; } } catch (Exception e) { - if (!isClosing) { - logger.error("Error processing inbound message", e); - } + logIfNotClosing("Error processing inbound message", e); break; } } catch (IOException e) { - if (!isClosing) { - logger.error("Error reading from stdin", e); - } + logIfNotClosing("Error reading from stdin", e); break; } } } catch (Exception e) { - if (!isClosing) { - logger.error("Error in inbound processing", e); - } + logIfNotClosing("Error in inbound processing", e); } finally { isClosing = true; @@ -254,7 +246,6 @@ public class StdioServerTransport implements McpTransport { // Dispose schedulers with longer timeout inboundScheduler.dispose(); outboundScheduler.dispose(); - logger.info("Graceful shutdown completed"); } catch (Exception e) { @@ -268,4 +259,16 @@ public class StdioServerTransport implements McpTransport { return this.objectMapper.convertValue(data, typeRef); } + private void logIfNotClosing(String message, Exception e) { + if (!this.isClosing) { + logger.error(message, e); + } + } + + private void logIfNotClosing(String message) { + if (!this.isClosing) { + logger.error(message); + } + } + } diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java index 7777359..ee84037 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java @@ -19,9 +19,9 @@ import org.springframework.ai.mcp.client.transport.ServerParameters; import org.springframework.ai.mcp.client.transport.StdioClientTransport; /** - * @author Christian Tzolov + * With stdio transport, the MCP server is automatically started by the client. But you + * have to build the server jar first:
./mvnw clean install -DskipTests
*/ - public class ClientStdio { public static void main(String[] args) { diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java index 968b122..06d2dc3 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java @@ -27,18 +27,21 @@ import org.springframework.web.reactive.function.server.RouterFunction; @Configuration public class McpServerConfig { + // STDIO transport @Bean @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "stdio") public StdioServerTransport stdioServerTransport() { return new StdioServerTransport(); } + // SSE transport @Bean @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") public SseServerTransport sseServerTransport() { return new SseServerTransport(new ObjectMapper(), "/mcp/message"); } + // Router function for SSE transport used by Spring WebFlux to start an HTTP server. @Bean @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") public RouterFunction mcpRouterFunction(SseServerTransport transport) { @@ -59,13 +62,13 @@ public class McpServerConfig { return McpServer.using(transport) .info("MCP Demo Server", "1.0.0") .capabilities(capabilities) - .tools(List.of(weatherTool(), calculatorTool())) - .resources(Map.of("system://info", systemInfoResource())) - .prompts(List.of(greetingPrompt())) + .resources(systemInfoResourceRegistration()) + .prompts(greetingPromptRegistration()) + .tools(weatherToolRegistration(), calculatorToolRegistration()) .async(); } // @formatter:on - private static ResourceRegistration systemInfoResource() { + private static ResourceRegistration systemInfoResourceRegistration() { // Create a resource registration for system information var systemInfoResource = new McpSchema.Resource( // @formatter:off @@ -98,7 +101,26 @@ public class McpServerConfig { return resourceRegistration; } - private static ToolRegistration weatherTool() { + private static PromptRegistration greetingPromptRegistration() { + + var prompt = new McpSchema.Prompt("greeting", "A friendly greeting prompt", + List.of(new McpSchema.PromptArgument("name", "The name to greet", true))); + + return new PromptRegistration(prompt, getPromptRequest -> { + + String nameArgument = (String) getPromptRequest.arguments().get("name"); + if (nameArgument == null) { + nameArgument = "friend"; + } + + var userMessage = new PromptMessage(Role.USER, + new TextContent("Hello " + nameArgument + "! How can I assist you today?")); + + return new GetPromptResult("A personalized greeting message", List.of(userMessage)); + }); + } + + private static ToolRegistration weatherToolRegistration() { return new ToolRegistration( new McpSchema.Tool("weather", "Weather forecast tool by location", Map.of("city", "String")), (arguments) -> { @@ -108,7 +130,7 @@ public class McpServerConfig { }); } - private static ToolRegistration calculatorTool() { + private static ToolRegistration calculatorToolRegistration() { return new ToolRegistration(new McpSchema.Tool("calculator", "Performs basic arithmetic operations (add, subtract, multiply, divide)", """ { @@ -164,24 +186,4 @@ public class McpServerConfig { }); } - private static PromptRegistration greetingPrompt() { - var nameArg = new McpSchema.PromptArgument("name", "The name to greet", true // required - // parameter - ); - - var prompt = new McpSchema.Prompt("greeting", "A friendly greeting prompt", List.of(nameArg)); - - return new PromptRegistration(prompt, request -> { - String name = (String) request.arguments().get("name"); - if (name == null) { - name = "friend"; - } - - var assistantMessage = new PromptMessage(Role.ASSISTANT, - new TextContent("Hello " + name + "! How can I assist you today?")); - - return new GetPromptResult("A personalized greeting message", List.of(assistantMessage)); - }); - } - } From 86659344fc2ca55d9900bd78d86d2d6854b50e68 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 30 Dec 2024 23:42:18 +0100 Subject: [PATCH 015/505] feat: add structured logging support with severity levels - Add client and server-side logging capabilities with configurable severity levels - Implement logging message notifications with DEBUG to EMERGENCY levels - Add logging consumers for client-side log handling - Update documentation with logging examples and configuration - Add comprehensive tests for logging functionality - Fix typo in README.md (notificaiotn -> notification) - Centralize MCP method names as constants - Move all JSON-RPC method names to McpSchema class as static constants - Replace hardcoded method strings with constant references in McpAsyncClient and McpAsyncServer - Update test cases to use new method name constants Resolves #35 --- README.md | 2 +- docs/ref-server.md | 60 ++++++- mcp/README.md | 89 ++++++++- .../ai/mcp/client/McpAsyncClient.java | 169 +++++++++++------- .../ai/mcp/client/McpClient.java | 45 ++++- .../ai/mcp/client/McpSyncClient.java | 10 +- .../ai/mcp/server/McpAsyncServer.java | 110 +++++++++--- .../ai/mcp/server/McpSyncServer.java | 11 ++ .../ai/mcp/spec/McpSchema.java | 142 +++++++++++++-- .../client/AbstractMcpAsyncClientTests.java | 35 ++++ .../client/AbstractMcpSyncClientTests.java | 35 ++++ .../McpAsyncClientResponseHandlerTests.java | 22 +-- .../server/AbstractMcpAsyncServerTests.java | 162 ++++++++++++----- .../server/AbstractMcpSyncServerTests.java | 160 ++++++++++++----- .../ai/mcp/sample/server/McpServerConfig.java | 36 +++- .../ai/mcp/spring/McpFunctionCallback.java | 1 - 16 files changed, 861 insertions(+), 228 deletions(-) diff --git a/README.md b/README.md index 6b4ef27..a6b72e5 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ The project consists of two main modules: Java implementation of the Model Context Protocol specification. It includes: - Synchronous and asynchronous [MCP Client](https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#client-usage-examples) and [MCP Server](https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#server-usage-examples) implementations -- Standard MCP operations support (tool discovery, resource management, prompt handling). Support for request and notificaiotn handling. +- Standard MCP operations support (tool discovery, resource management, prompt handling, structured logging). Support for request and notification handling. - [Stdio](https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio) and [SSE](https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse) transport implementations. - [Find more](./mcp/README.md). diff --git a/docs/ref-server.md b/docs/ref-server.md index 6daf3e9..5ee6739 100644 --- a/docs/ref-server.md +++ b/docs/ref-server.md @@ -136,10 +136,6 @@ McpServer.using(transport) .sync(); ``` -### Implementation Notes - -- The server factory uses a builder pattern for configuration -- Default server info is "mcp-server" version "1.0.0" if not specified - Tool handlers must be thread-safe as they may be called concurrently - The synchronous server is implemented as a wrapper around the asynchronous server - Resource and prompt providers use cursor-based pagination @@ -160,3 +156,59 @@ Tool handlers implement this interface to define: - Tool name and description - Input schema for validation - Execution logic in the call method + +### Logging Capabilities + +The MCP Server supports logging functionality that allows sending log messages with different severity levels to the Client. This feature can be enabled through server capabilities configuration. + +#### Enabling Logging + +```java +McpServer.using(transport) + .serverInfo("my-server", "1.0.0") + .capabilities(ServerCapabilities.builder().logging().build()) + .sync(); // or .async() +``` + +#### Logging Levels + +The server supports the following logging levels: +- TRACE +- DEBUG +- INFO +- WARN +- ERROR +- FATAL + +#### Sending Log Messages + +For synchronous servers: +```java +LoggingMessageNotification notification = McpSchema.LoggingMessageNotification.builder() + .level(McpSchema.LoggingLevel.INFO) + .logger("my-logger") + .data("Log message") + .build(); + +mcpSyncServer.loggingNotification(notification); +``` + +For asynchronous servers: +```java +LoggingMessageNotification notification = McpSchema.LoggingMessageNotification.builder() + .level(McpSchema.LoggingLevel.INFO) + .logger("my-logger") + .data("Log message") + .build(); + +mcpAsyncServer.loggingNotification(notification) + .subscribe(); +``` + +- Logging works even if the logging capability is not enabled +- Null notifications are rejected with a McpError +- Log messages include: + - Level: The severity level of the message + - Logger: The name of the logger (typically identifies the source) + - Data: The actual log message content +- The server implementation is transport-agnostic, allowing different transport mechanisms to handle the log messages diff --git a/mcp/README.md b/mcp/README.md index 4c9c641..f51b0be 100644 --- a/mcp/README.md +++ b/mcp/README.md @@ -186,6 +186,63 @@ McpTransport transport = new SseClientTransport(webClientBuilder); ``` +### Client Capabilities + +The client can be configured with various capabilities: + +```java +var capabilities = ClientCapabilities.builder() + .roots(true) // Enable filesystem roots support with list changes notifications + .sampling() // Enable LLM sampling support + .build(); +``` + +#### Roots Support + +Roots define the boundaries of where servers can operate within the filesystem: + +```java +// Add a root dynamically +client.addRoot(new Root("file:///path", "description")); + +// Remove a root +client.removeRoot("file:///path"); + +// Notify server of roots changes +client.rootsListChangedNotification(); +``` + +The roots capability allows servers to: +- Request the list of accessible filesystem roots +- Receive notifications when the root list changes +- Understand which directories and files they have access to + +#### Sampling Support + +Sampling enables servers to request LLM interactions ("completions" or "generations") through the client: + +```java +// Configure sampling handler +Function samplingHandler = request -> { + // Sampling implementation that interfaces with LLM + return new CreateMessageResult(response); +}; + +// Create client with sampling support +var client = McpClient.using(transport) + .capabilities(ClientCapabilities.builder() + .sampling() + .build()) + .samplingHandler(samplingHandler) + .build(); +``` + +This capability allows: +- Servers to leverage AI capabilities without requiring API keys +- Clients to maintain control over model access and permissions +- Support for both text and image-based interactions +- Optional inclusion of MCP server context in prompts + ## Server Usage Examples ### MCP Server (Sync API) @@ -307,10 +364,36 @@ var capabilities = ServerCapabilities.builder() .resources(false, true) // Resource support with list changes notifications .tools(true) // Tool support with list changes notifications .prompts(true) // Prompt support with list changes notifications + .logging() // Enable logging support (enabled by default with loging level INFO) .build(); ``` -### Tool Registration +#### Logging Support + +The server provides structured logging capabilities that allow sending log messages to clients with different severity levels: + +```java +// Send a log message to clients +server.loggingNotification(LoggingMessageNotification.builder() + .level(LoggingLevel.INFO) + .logger("custom-logger") + .data("Custom log message") + .build()); +``` + +Supported logging levels (in order of increasing severity): +- DEBUG (0) +- INFO (1) +- NOTICE (2) +- WARNING (3) +- ERROR (4) +- CRITICAL (5) +- ALERT (6) +- EMERGENCY (7) + +Clients can control the minimum logging level they receive through the `mcpClient.setLoggingLevel(level)` request. Messages below the set level will be filtered out. + +#### Tool Registration ```java var toolRegistration = new ToolRegistration( @@ -326,7 +409,7 @@ var toolRegistration = new ToolRegistration( ); ``` -### Resource Registration +#### Resource Registration ```java var resourceRegistration = new ResourceRegistration( @@ -338,7 +421,7 @@ var resourceRegistration = new ResourceRegistration( ); ``` -### Prompt Registration +#### Prompt Registration ```java var promptRegistration = new PromptRegistration( diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index add1ad6..3931c77 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -44,6 +44,8 @@ import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; import org.springframework.ai.mcp.spec.McpSchema.Implementation; import org.springframework.ai.mcp.spec.McpSchema.ListPromptsResult; +import org.springframework.ai.mcp.spec.McpSchema.LoggingLevel; +import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.spec.McpSchema.PaginatedRequest; import org.springframework.ai.mcp.spec.McpSchema.Root; import org.springframework.ai.mcp.spec.McpTransport; @@ -114,6 +116,7 @@ public class McpAsyncClient { * @param toolsChangeConsumers the tools change consumers. * @param resourcesChangeConsumers the resources change consumers. * @param promptsChangeConsumers the prompts change consumers. + * @param loggingConsumers the logging consumers. * @param samplingHandler the sampling handler. */ public McpAsyncClient(McpTransport transport, Duration requestTimeout, Implementation clientInfo, @@ -121,6 +124,7 @@ public class McpAsyncClient { List>> toolsChangeConsumers, List>> resourcesChangeConsumers, List>> promptsChangeConsumers, + List> loggingConsumers, Function samplingHandler) { Assert.notNull(transport, "Transport must not be null"); @@ -142,13 +146,13 @@ public class McpAsyncClient { // Roots List Request Handler if (!Utils.isEmpty(this.roots) && this.clientCapabilities.roots() != null) { - requestHanlers.put("roots/list", rootsListRequestHandler()); + requestHanlers.put(McpSchema.METHOD_ROOTS_LIST, rootsListRequestHandler()); } // Sampling Handler if (samplingHandler != null && this.clientCapabilities.sampling() != null) { this.samplingHandler = samplingHandler; - requestHanlers.put("sampling/createMessage", samplingCreateMessageHandler()); + requestHanlers.put(McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, samplingCreateMessageHandler()); } // Notification Handlers @@ -160,7 +164,7 @@ public class McpAsyncClient { if (!Utils.isEmpty(toolsChangeConsumers)) { toolsChangeConsumersFinal.addAll(toolsChangeConsumers); } - notificationHandlers.put("notifications/tools/list_changed", + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_TOOLS_LIST_CHANGED, toolsChangeNotificationHandler(toolsChangeConsumersFinal)); // Resources Change Notification @@ -169,7 +173,7 @@ public class McpAsyncClient { if (!Utils.isEmpty(resourcesChangeConsumers)) { resourcesChangeConsumersFinal.addAll(resourcesChangeConsumers); } - notificationHandlers.put("notifications/resources/list_changed", + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_RESOURCES_LIST_CHANGED, resourcesChangeNotificationHandler(resourcesChangeConsumersFinal)); // Prompts Change Notification @@ -178,9 +182,18 @@ public class McpAsyncClient { if (!Utils.isEmpty(promptsChangeConsumers)) { promptsChangeConsumersFinal.addAll(promptsChangeConsumers); } - notificationHandlers.put("notifications/prompts/list_changed", + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_PROMPTS_LIST_CHANGED, promptsChangeNotificationHandler(promptsChangeConsumersFinal)); + // Utility Logging Notification + List> loggingConsumersFinal = new ArrayList<>(); + loggingConsumersFinal.add((notification) -> logger.info("Logging: {}", notification)); + if (!Utils.isEmpty(loggingConsumers)) { + loggingConsumersFinal.addAll(loggingConsumers); + } + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_MESSAGE, + loggingNotificationHandler(loggingConsumersFinal)); + this.mcpSession = new DefaultMcpSession(requestTimeout, transport, requestHanlers, notificationHandlers); } @@ -222,8 +235,8 @@ public class McpAsyncClient { this.clientCapabilities, this.clientInfo); // @formatter:on - Mono result = this.mcpSession.sendRequest("initialize", initializeRequest, - new TypeReference() { + Mono result = this.mcpSession.sendRequest(McpSchema.METHOD_INITIALIZE, + initializeRequest, new TypeReference() { }); return result.flatMap(initializeResult -> { @@ -237,7 +250,8 @@ public class McpAsyncClient { "Unsupported protocol version from the server: " + initializeResult.protocolVersion())); } else { - return this.mcpSession.sendNotification("notifications/initialized", null).thenReturn(initializeResult); + return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_INITIALIZED, null) + .thenReturn(initializeResult); } }); } @@ -266,7 +280,7 @@ public class McpAsyncClient { * @return A Mono that completes with the server's ping response */ public Mono ping() { - return this.mcpSession.sendRequest("ping", null, new TypeReference() { + return this.mcpSession.sendRequest(McpSchema.METHOD_PING, null, new TypeReference() { }); } @@ -335,7 +349,7 @@ public class McpAsyncClient { * @return A Mono that completes when the notification is sent */ public Mono rootsListChangedNotification() { - return this.mcpSession.sendNotification("notifications/roots/list_changed"); + return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_ROOTS_LIST_CHANGED); } private RequestHandler rootsListRequestHandler() { @@ -387,7 +401,7 @@ public class McpAsyncClient { * (false/absent) */ public Mono callTool(McpSchema.CallToolRequest callToolRequest) { - return this.mcpSession.sendRequest("tools/call", callToolRequest, CALL_TOOL_RESULT_TYPE_REF); + return this.mcpSession.sendRequest(McpSchema.METHOD_TOOLS_CALL, callToolRequest, CALL_TOOL_RESULT_TYPE_REF); } /** @@ -408,7 +422,7 @@ public class McpAsyncClient { * Optional cursor for pagination if more tools are available */ public Mono listTools(String cursor) { - return this.mcpSession.sendRequest("tools/list", new McpSchema.PaginatedRequest(cursor), + return this.mcpSession.sendRequest(McpSchema.METHOD_TOOLS_LIST, new McpSchema.PaginatedRequest(cursor), LIST_TOOLS_RESULT_TYPE_REF); } @@ -427,20 +441,14 @@ public class McpAsyncClient { private NotificationHandler toolsChangeNotificationHandler( List>> toolsChangeConsumers) { - return new NotificationHandler() { - @Override - public Mono handle(Object params) { - // TODO: add support for cursor/pagination - return listTools().flatMap(listToolsResult -> Mono.fromRunnable(() -> { - for (Consumer> toolsChangeConsumer : toolsChangeConsumers) { - toolsChangeConsumer.accept(listToolsResult.tools()); - } - }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { - logger.error("Error handling tools list change notification", error); - return Mono.empty(); - }).then(); // Convert to Mono + return params -> listTools().flatMap(listToolsResult -> Mono.fromRunnable(() -> { + for (Consumer> toolsChangeConsumer : toolsChangeConsumers) { + toolsChangeConsumer.accept(listToolsResult.tools()); } - }; + }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { + logger.error("Error handling tools list change notification", error); + return Mono.empty(); + }).then(); // Convert to Mono }; // -------------------------- @@ -470,7 +478,7 @@ public class McpAsyncClient { * @return A Mono that completes with the list of resources result */ public Mono listResources(String cursor) { - return this.mcpSession.sendRequest("resources/list", new McpSchema.PaginatedRequest(cursor), + return this.mcpSession.sendRequest(McpSchema.METHOD_RESOURCES_LIST, new McpSchema.PaginatedRequest(cursor), LIST_RESOURCES_RESULT_TYPE_REF); } @@ -489,7 +497,8 @@ public class McpAsyncClient { * @return A Mono that completes with the resource content */ public Mono readResource(McpSchema.ReadResourceRequest readResourceRequest) { - return this.mcpSession.sendRequest("resources/read", readResourceRequest, READ_RESOURCE_RESULT_TYPE_REF); + return this.mcpSession.sendRequest(McpSchema.METHOD_RESOURCES_READ, readResourceRequest, + READ_RESOURCE_RESULT_TYPE_REF); } /** @@ -512,8 +521,8 @@ public class McpAsyncClient { * @return A Mono that completes with the list of resource templates result */ public Mono listResourceTemplates(String cursor) { - return this.mcpSession.sendRequest("resources/templates/list", new McpSchema.PaginatedRequest(cursor), - LIST_RESOURCE_TEMPLATES_RESULT_TYPE_REF); + return this.mcpSession.sendRequest(McpSchema.METHOD_RESOURCES_TEMPLATES_LIST, + new McpSchema.PaginatedRequest(cursor), LIST_RESOURCE_TEMPLATES_RESULT_TYPE_REF); } /** @@ -522,7 +531,7 @@ public class McpAsyncClient { * @return A Mono that completes when the notification is sent */ public Mono sendResourcesListChanged() { - return this.mcpSession.sendNotification("notifications/resources/list_changed"); + return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_RESOURCES_LIST_CHANGED); } /** @@ -536,7 +545,7 @@ public class McpAsyncClient { * @return A Mono that completes when the subscription is complete */ public Mono subscribeResource(McpSchema.SubscribeRequest subscribeRequest) { - return this.mcpSession.sendRequest("resources/subscribe", subscribeRequest, VOID_TYPE_REFERENCE); + return this.mcpSession.sendRequest(McpSchema.METHOD_RESOURCES_SUBSCRIBE, subscribeRequest, VOID_TYPE_REFERENCE); } /** @@ -546,26 +555,21 @@ public class McpAsyncClient { * @return A Mono that completes when the unsubscription is complete */ public Mono unsubscribeResource(McpSchema.UnsubscribeRequest unsubscribeRequest) { - return this.mcpSession.sendRequest("resources/unsubscribe", unsubscribeRequest, VOID_TYPE_REFERENCE); + return this.mcpSession.sendRequest(McpSchema.METHOD_RESOURCES_UNSUBSCRIBE, unsubscribeRequest, + VOID_TYPE_REFERENCE); } private NotificationHandler resourcesChangeNotificationHandler( List>> resourcesChangeConsumers) { - return new NotificationHandler() { - @Override - public Mono handle(Object params) { - // TODO: add support for cursor/pagination - return listResources().flatMap(listResourcesResult -> Mono.fromRunnable(() -> { - for (Consumer> resourceChangeConsumer : resourcesChangeConsumers) { - resourceChangeConsumer.accept(listResourcesResult.resources()); - } - }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { - logger.error("Error handling resources list change notification", error); - return Mono.empty(); - }).then(); // Convert to Mono + return params -> listResources().flatMap(listResourcesResult -> Mono.fromRunnable(() -> { + for (Consumer> resourceChangeConsumer : resourcesChangeConsumers) { + resourceChangeConsumer.accept(listResourcesResult.resources()); } - }; + }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { + logger.error("Error handling resources list change notification", error); + return Mono.empty(); + }).then(); }; // -------------------------- @@ -591,7 +595,8 @@ public class McpAsyncClient { * @return A Mono that completes with the list of prompts result */ public Mono listPrompts(String cursor) { - return this.mcpSession.sendRequest("prompts/list", new PaginatedRequest(cursor), LIST_PROMPTS_RESULT_TYPE_REF); + return this.mcpSession.sendRequest(McpSchema.METHOD_PROMPT_LIST, new PaginatedRequest(cursor), + LIST_PROMPTS_RESULT_TYPE_REF); } /** @@ -600,7 +605,7 @@ public class McpAsyncClient { * @return A Mono that completes with the get prompt result */ public Mono getPrompt(GetPromptRequest getPromptRequest) { - return this.mcpSession.sendRequest("prompts/get", getPromptRequest, GET_PROMPT_RESULT_TYPE_REF); + return this.mcpSession.sendRequest(McpSchema.METHOD_PROMPT_GET, getPromptRequest, GET_PROMPT_RESULT_TYPE_REF); } /** @@ -610,26 +615,66 @@ public class McpAsyncClient { * @return A Mono that completes when the notification is sent */ public Mono promptListChangedNotification() { - return this.mcpSession.sendNotification("notifications/prompts/list_changed"); + return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_PROMPTS_LIST_CHANGED); } private NotificationHandler promptsChangeNotificationHandler( List>> promptsChangeConsumers) { - return new NotificationHandler() { - @Override - public Mono handle(Object params) { - // TODO: add support for cursor/pagination - return listPrompts().flatMap(listPromptsResult -> Mono.fromRunnable(() -> { - for (Consumer> promptChangeConsumer : promptsChangeConsumers) { - promptChangeConsumer.accept(listPromptsResult.prompts()); - } - }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { - logger.error("Error handling prompts list change notification", error); - return Mono.empty(); - }).then(); // Convert to Mono - } - }; + return params -> {// @formatter:off + return listPrompts().flatMap(listPromptsResult -> Mono.fromRunnable(() -> { + for (Consumer> promptChangeConsumer : promptsChangeConsumers) { + promptChangeConsumer.accept(listPromptsResult.prompts()); + } + }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { + logger.error("Error handling prompts list change notification", error); + return Mono.empty(); + }).then(); // Convert to Mono + }; // @formatter:on }; + // -------------------------- + // Logging + // -------------------------- + /** + * Create a notification handler for logging notifications from the server. This + * handler automatically distributes logging messages to all registered consumers. + * @param loggingConsumers List of consumers that will be notified when a logging + * message is received. Each consumer receives the logging message notification. + * @return A NotificationHandler that processes log notifications by distributing the + * message to all registered consumers + */ + private NotificationHandler loggingNotificationHandler( + List> loggingConsumers) { + + return params -> { + + McpSchema.LoggingMessageNotification loggingMessageNotification = transport.unmarshalFrom(params, + new TypeReference() { + }); + + return Mono.fromRunnable(() -> { + for (Consumer loggingConsumer : loggingConsumers) { + loggingConsumer.accept(loggingMessageNotification); + } + }).subscribeOn(Schedulers.boundedElastic()).then(); + + }; + } + + /** + * Client can set the minimum logging level it wants to receive from the server. + * @param loggingLevel the min logging level + */ + public Mono setLoggingLevel(LoggingLevel loggingLevel) { + Assert.notNull(loggingLevel, "Logging level must not be null"); + + String levelName = this.transport.unmarshalFrom(loggingLevel, new TypeReference() { + }); + + Map params = Map.of("level", levelName); + + return this.mcpSession.sendNotification(McpSchema.METHOD_LOGGING_SET_LEVEL, params); + } + } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java index bea9478..dcd8bd0 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java @@ -71,6 +71,9 @@ import org.springframework.ai.mcp.util.Assert; * .clientInfo(new Implementation("My Client", "1.0.0")) * .roots(new Root("file://workspace", "Workspace Files")) * .toolsChangeConsumer(tools -> System.out.println("Tools updated: " + tools)) + * .resourcesChangeConsumer(resources -> System.out.println("Resources updated: " + resources)) + * .promptsChangeConsumer(prompts -> System.out.println("Prompts updated: " + prompts)) + * .loggingConsumer(message -> System.out.println("Log message: " + message)) * .async(); * } * @@ -82,6 +85,16 @@ import org.springframework.ai.mcp.util.Assert; *
  • Prompt template handling *
  • Real-time updates through change consumers *
  • Custom sampling strategies + *
  • Structured logging with severity levels + * + * + *

    + * The client supports structured logging through the MCP logging utility: + *

      + *
    • Eight severity levels from DEBUG to EMERGENCY + *
    • Optional logger name categorization + *
    • Configurable logging consumers + *
    • Server-controlled minimum log level *
    * * @author Christian Tzolov @@ -141,6 +154,8 @@ public interface McpClient { private List>> promptsChangeConsumers = new ArrayList<>(); + private List> loggingConsumers = new ArrayList<>(); + private Function samplingHandler; private Builder(McpTransport transport) { @@ -284,6 +299,34 @@ public interface McpClient { return this; } + /** + * Adds a consumer to be notified when logging messages are received from the + * server. This allows the client to react to log messages, such as warnings or + * errors, that are sent by the server. + * @param loggingConsumer A consumer that receives logging messages. Must not be + * null. + * @return This builder instance for method chaining + */ + public Builder loggingConsumer(Consumer loggingConsumer) { + Assert.notNull(loggingConsumer, "Logging consumer must not be null"); + this.loggingConsumers.add(loggingConsumer); + return this; + } + + /** + * Adds multiple consumers to be notified when logging messages are received from + * the server. This allows the client to react to log messages, such as warnings + * or errors, that are sent by the server. + * @param loggingConsumers A list of consumers that receive logging messages. Must + * not be null. + * @return This builder instance for method chaining + */ + public Builder loggingConsumers(List> loggingConsumers) { + Assert.notNull(loggingConsumers, "Logging consumers must not be null"); + this.loggingConsumers.addAll(loggingConsumers); + return this; + } + /** * Builds a synchronous MCP client that provides blocking operations. Synchronous * clients wait for each operation to complete before returning, making them @@ -304,7 +347,7 @@ public interface McpClient { */ public McpAsyncClient async() { return new McpAsyncClient(transport, requestTimeout, clientInfo, capabilities, roots, toolsChangeConsumers, - resourcesChangeConsumers, promptsChangeConsumers, samplingHandler); + resourcesChangeConsumers, promptsChangeConsumers, loggingConsumers, samplingHandler); } } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java index 88b87e0..866e4d2 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java @@ -29,7 +29,7 @@ import org.springframework.ai.mcp.util.Assert; /** * A synchronous client for the Model Context Protocol (MCP). - * + * * @author Dariusz Jędrzejczyk * @author Christian Tzolov */ @@ -280,4 +280,12 @@ public class McpSyncClient implements AutoCloseable { this.delegate.promptListChangedNotification().block(); } + /** + * Client can set the minimum logging level it wants to receive from the server. + * @param loggingLevel the min logging level + */ + public void setLoggingLevel(McpSchema.LoggingLevel loggingLevel) { + this.delegate.setLoggingLevel(loggingLevel).block(); + } + } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index ccd32c4..75d68e7 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -1,3 +1,19 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.springframework.ai.mcp.server; import java.time.Duration; @@ -22,6 +38,8 @@ import org.springframework.ai.mcp.spec.DefaultMcpSession.NotificationHandler; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; +import org.springframework.ai.mcp.spec.McpSchema.LoggingLevel; +import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.ai.mcp.spec.McpTransport; import org.springframework.ai.mcp.util.Utils; @@ -59,6 +77,9 @@ public class McpAsyncServer { private final ConcurrentHashMap prompts; + private LoggingLevel minLoggingLevel = LoggingLevel.DEBUG; + + // TODO: Add support for roots list changed notification /** * Create a new McpAsyncServer with the given transport and capabilities. * @param mcpTransport The transport layer implementation for MCP communication @@ -83,7 +104,8 @@ public class McpAsyncServer { this.serverCapabilities = (serverCapabilities != null) ? serverCapabilities : new McpSchema.ServerCapabilities( null, // experimental - null, // logging + new McpSchema.ServerCapabilities.LoggingCapabilities(), // Enable logging + // by default !Utils.isEmpty(this.prompts) ? new McpSchema.ServerCapabilities.PromptCapabilities(false) : null, !Utils.isEmpty(this.resources) ? new McpSchema.ServerCapabilities.ResourceCapabilities(false, false) : null, @@ -92,37 +114,42 @@ public class McpAsyncServer { Map requestHandlers = new HashMap<>(); // Initialize request handlers for standard MCP methods - requestHandlers.put("initialize", initializeRequestHandler()); + requestHandlers.put(McpSchema.METHOD_INITIALIZE, initializeRequestHandler()); // Ping MUST respond with an empty data, but not NULL response. - requestHandlers.put("ping", (params) -> Mono.just("")); + requestHandlers.put(McpSchema.METHOD_PING, (params) -> Mono.just("")); // Add tools API handlers if the tool capability is enabled if (this.serverCapabilities.tools() != null) { - requestHandlers.put("tools/list", toolsListRequestHandler()); - requestHandlers.put("tools/call", toolsCallRequestHandler()); + requestHandlers.put(McpSchema.METHOD_TOOLS_LIST, toolsListRequestHandler()); + requestHandlers.put(McpSchema.METHOD_TOOLS_CALL, toolsCallRequestHandler()); } // Add resources API handlers if provided if (!Utils.isEmpty(this.resources)) { - requestHandlers.put("resources/list", resourcesListRequestHandler()); - requestHandlers.put("resources/read", resourcesReadRequestHandler()); + requestHandlers.put(McpSchema.METHOD_RESOURCES_LIST, resourcesListRequestHandler()); + requestHandlers.put(McpSchema.METHOD_RESOURCES_READ, resourcesReadRequestHandler()); } // Add resource templates API handlers if provided. if (!Utils.isEmpty(this.resourceTemplates)) { - requestHandlers.put("resources/templates/list", resourceTemplateListRequestHandler()); + requestHandlers.put(McpSchema.METHOD_RESOURCES_TEMPLATES_LIST, resourceTemplateListRequestHandler()); } // Add prompts API handlers if provider exists if (!Utils.isEmpty(this.prompts)) { - requestHandlers.put("prompts/list", promptsListRequestHandler()); - requestHandlers.put("prompts/get", promptsGetRequestHandler()); + requestHandlers.put(McpSchema.METHOD_PROMPT_LIST, promptsListRequestHandler()); + requestHandlers.put(McpSchema.METHOD_PROMPT_GET, promptsGetRequestHandler()); + } + + // Add logging API handlers if the logging capability is enabled + if (this.serverCapabilities.logging() != null) { + requestHandlers.put(McpSchema.METHOD_LOGGING_SET_LEVEL, setLoggerRequestHandler()); } Map notificationHandlers = new HashMap<>(); - notificationHandlers.put("notifications/initialized", (params) -> Mono.empty()); + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_INITIALIZED, (params) -> Mono.empty()); this.transport = mcpTransport; this.mcpSession = new DefaultMcpSession(Duration.ofSeconds(10), mcpTransport, requestHandlers, @@ -236,20 +263,16 @@ public class McpAsyncServer { * @return A Mono that completes when all clients have been notified */ public Mono notifyToolsListChanged() { - return this.mcpSession.sendNotification("notifications/tools/list_changed", null); + return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_TOOLS_LIST_CHANGED, null); } private DefaultMcpSession.RequestHandler toolsListRequestHandler() { return params -> { - McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, - new TypeReference() { - }); List tools = this.tools.stream().map(toolRegistration -> { return toolRegistration.tool(); }).toList(); - logger.info("Client tools list request - Cursor: {}", request.cursor()); return Mono.just(new McpSchema.ListToolsResult(tools, null)); }; } @@ -334,7 +357,7 @@ public class McpAsyncServer { * @return A Mono that completes when all clients have been notified */ public Mono notifyResourcesListChanged() { - return this.mcpSession.sendNotification("notifications/resources/list_changed", null); + return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_RESOURCES_LIST_CHANGED, null); } private DefaultMcpSession.RequestHandler resourcesListRequestHandler() { @@ -428,14 +451,15 @@ public class McpAsyncServer { * @return A Mono that completes when all clients have been notified */ public Mono notifyPromptsListChanged() { - return this.mcpSession.sendNotification("notifications/prompts/list_changed", null); + return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_PROMPTS_LIST_CHANGED, null); } private DefaultMcpSession.RequestHandler promptsListRequestHandler() { return params -> { - McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, - new TypeReference() { - }); + // TODO: Implement pagination + // McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, + // new TypeReference() { + // }); var promptList = this.prompts.values().stream().map(PromptRegistration::propmpt).toList(); @@ -458,4 +482,48 @@ public class McpAsyncServer { }; } + // --------------------------------------- + // Logging Management + // --------------------------------------- + + /** + * Send a logging message notification to all connected clients. Messages below the + * current minimum logging level will be filtered out. + * @param loggingMessageNotification The logging message to send + * @return A Mono that completes when the notification has been sent + */ + public Mono loggingNotification(LoggingMessageNotification loggingMessageNotification) { + + if (loggingMessageNotification == null) { + return Mono.error(new McpError("Logging message must not be null")); + } + + Map params = this.transport.unmarshalFrom(loggingMessageNotification, + new TypeReference>() { + }); + + if (loggingMessageNotification.level().level() < minLoggingLevel.level()) { + return Mono.empty(); + } + + return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_MESSAGE, params); + } + + /** + * Handles requests to set the minimum logging level. Messages below this level will + * not be sent. + * @return A handler that processes logging level change requests + */ + private DefaultMcpSession.RequestHandler setLoggerRequestHandler() { + return params -> { + McpSchema.LoggingLevel setLoggerRequest = transport.unmarshalFrom(params, + new TypeReference() { + }); + + this.minLoggingLevel = setLoggerRequest; + + return Mono.empty(); + }; + } + } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java index 2650c9d..97f6b9e 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java @@ -16,9 +16,12 @@ package org.springframework.ai.mcp.server; +import reactor.core.publisher.Mono; + import org.springframework.ai.mcp.server.McpServer.PromptRegistration; import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; import org.springframework.ai.mcp.server.McpServer.ToolRegistration; +import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.util.Assert; /** @@ -113,6 +116,14 @@ public class McpSyncServer { this.asyncServer.notifyPromptsListChanged().block(); } + /** + * Send a logging message notification to all clients. + * @param loggingMessageNotification The logging message notification to send + */ + public void loggingNotification(LoggingMessageNotification loggingMessageNotification) { + this.asyncServer.loggingNotification(loggingMessageNotification).block(); + } + /** * Close the server gracefully. */ diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java index 2c466d6..663cc0c 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java @@ -44,6 +44,57 @@ public class McpSchema { public static final String JSONRPC_VERSION = "2.0"; + // --------------------------- + // Method Names + // --------------------------- + + // Lifecycle Methods + public static final String METHOD_INITIALIZE = "initialize"; + + public static final String METHOD_NOTIFICATION_INITIALIZED = "notifications/initialized"; + + public static final String METHOD_PING = "ping"; + + // Tool Methods + public static final String METHOD_TOOLS_LIST = "tools/list"; + + public static final String METHOD_TOOLS_CALL = "tools/call"; + + public static final String METHOD_NOTIFICATION_TOOLS_LIST_CHANGED = "notifications/tools/list_changed"; + + // Resources Methods + public static final String METHOD_RESOURCES_LIST = "resources/list"; + + public static final String METHOD_RESOURCES_READ = "resources/read"; + + public static final String METHOD_NOTIFICATION_RESOURCES_LIST_CHANGED = "notifications/resources/list_changed"; + + public static final String METHOD_RESOURCES_TEMPLATES_LIST = "resources/templates/list"; + + public static final String METHOD_RESOURCES_SUBSCRIBE = "resources/subscribe"; + + public static final String METHOD_RESOURCES_UNSUBSCRIBE = "resources/unsubscribe"; + + // Prompt Methods + public static final String METHOD_PROMPT_LIST = "prompts/list"; + + public static final String METHOD_PROMPT_GET = "prompts/get"; + + public static final String METHOD_NOTIFICATION_PROMPTS_LIST_CHANGED = "notifications/prompts/list_changed"; + + // Logging Methods + public static final String METHOD_LOGGING_SET_LEVEL = "logging/setLevel"; + + public static final String METHOD_NOTIFICATION_MESSAGE = "notifications/message"; + + // Roots Methods + public static final String METHOD_ROOTS_LIST = "roots/list"; + + public static final String METHOD_NOTIFICATION_ROOTS_LIST_CHANGED = "notifications/roots/list_changed"; + + // Sampling Methods + public static final String METHOD_SAMPLING_CREATE_MESSAGE = "sampling/createMessage"; + // --------------------------- // JSON-RPC Error Codes // --------------------------- @@ -254,11 +305,16 @@ public class McpSchema { @JsonInclude(JsonInclude.Include.NON_ABSENT) public record ServerCapabilities( // @formatter:off @JsonProperty("experimental") Map experimental, - @JsonProperty("logging") Object logging, + @JsonProperty("logging") LoggingCapabilities logging, @JsonProperty("prompts") PromptCapabilities prompts, @JsonProperty("resources") ResourceCapabilities resources, @JsonProperty("tools") ToolCapabilities tools) { - + + + @JsonInclude(JsonInclude.Include.NON_ABSENT) + public record LoggingCapabilities() { + } + @JsonInclude(JsonInclude.Include.NON_ABSENT) public record PromptCapabilities( @JsonProperty("listChanged") Boolean listChanged) { @@ -282,7 +338,7 @@ public class McpSchema { public static class Builder { private Map experimental; - private Object logging; + private LoggingCapabilities logging = new LoggingCapabilities(); private PromptCapabilities prompts; private ResourceCapabilities resources; private ToolCapabilities tools; @@ -292,8 +348,8 @@ public class McpSchema { return this; } - public Builder logging(Object logging) { - this.logging = logging; + public Builder logging() { + this.logging = new LoggingCapabilities(); return this; } @@ -331,19 +387,6 @@ public class McpSchema { @JsonProperty("assistant") ASSISTANT }// @formatter:on - public enum LoggingLevel {// @formatter:off - - @JsonProperty("debug") DEBUG, - @JsonProperty("info") INFO, - @JsonProperty("notice") NOTICE, - @JsonProperty("warning") WARNING, - @JsonProperty("error") ERROR, - @JsonProperty("critical") CRITICAL, - @JsonProperty("alert") ALERT, - @JsonProperty("emergency") EMERGENCY - - } // @formatter:on - // --------------------------- // Resource Interfaces // --------------------------- @@ -752,12 +795,73 @@ public class McpSchema { @JsonProperty("total") Double total) { }// @formatter:on + /** + * The Model Context Protocol (MCP) provides a standardized way for servers to send + * structured log messages to clients. Clients can control logging verbosity by + * setting minimum log levels, with servers sending notifications containing severity + * levels, optional logger names, and arbitrary JSON-serializable data. + * + * @param level The severity levels. The mimimum log level is set by the client. + * @param logger The logger that generated the message. + * @param data JSON-serializable logging data. + */ public record LoggingMessageNotification(// @formatter:off @JsonProperty("level") LoggingLevel level, @JsonProperty("logger") String logger, - @JsonProperty("data") Object data) { + @JsonProperty("data") String data) { + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private LoggingLevel level = LoggingLevel.INFO; + private String logger = "server"; + private String data; + + public Builder level(LoggingLevel level) { + this.level = level; + return this; + } + + public Builder logger(String logger) { + this.logger = logger; + return this; + } + + public Builder data(String data) { + this.data = data; + return this; + } + + public LoggingMessageNotification build() { + return new LoggingMessageNotification(level, logger, data); + } + } }// @formatter:on + public enum LoggingLevel {// @formatter:off + @JsonProperty("debug") DEBUG(0), + @JsonProperty("info") INFO(1), + @JsonProperty("notice") NOTICE(2), + @JsonProperty("warning") WARNING(3), + @JsonProperty("error") ERROR(4), + @JsonProperty("critical") CRITICAL(5), + @JsonProperty("alert") ALERT(6), + @JsonProperty("emergency") EMERGENCY(7); + + private final int level; + + LoggingLevel(int level) { + this.level = level; + } + + public int level() { + return level; + } + + } // @formatter:on + // --------------------------- // Autocomplete // --------------------------- diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java index b7b26a2..c8d357d 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java @@ -26,6 +26,7 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import reactor.test.StepVerifier; +import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; @@ -322,4 +323,38 @@ public abstract class AbstractMcpAsyncClientTests { }).doesNotThrowAnyException(); } + // --------------------------------------- + // Logging Tests + // --------------------------------------- + + @Test + void testLoggingLevels() { + // Test all logging levels + for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { + StepVerifier.create(mcpAsyncClient.setLoggingLevel(level)).verifyComplete(); + } + } + + @Test + void testLoggingConsumer() { + AtomicBoolean logReceived = new AtomicBoolean(false); + var transport = createMcpTransport(); + + var client = McpClient.using(transport) + .requestTimeout(TIMEOUT) + .loggingConsumer(notification -> logReceived.set(true)) + .async(); + + assertThatCode(() -> { + client.initialize().block(Duration.ofSeconds(10)); + client.closeGracefully().block(Duration.ofSeconds(10)); + }).doesNotThrowAnyException(); + } + + @Test + void testLoggingWithNullNotification() { + assertThatThrownBy(() -> mcpAsyncClient.setLoggingLevel(null).block()) + .hasMessageContaining("Logging level must not be null"); + } + } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java index c55d775..7a1939b 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java @@ -24,6 +24,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; @@ -277,4 +278,38 @@ public abstract class AbstractMcpSyncClientTests { }).doesNotThrowAnyException(); } + // --------------------------------------- + // Logging Tests + // --------------------------------------- + + @Test + void testLoggingLevels() { + // Test all logging levels + for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { + assertThatCode(() -> mcpSyncClient.setLoggingLevel(level)).doesNotThrowAnyException(); + } + } + + @Test + void testLoggingConsumer() { + AtomicBoolean logReceived = new AtomicBoolean(false); + var transport = createMcpTransport(); + + var client = McpClient.using(transport) + .requestTimeout(TIMEOUT) + .loggingConsumer(notification -> logReceived.set(true)) + .sync(); + + assertThatCode(() -> { + client.initialize(); + client.close(); + }).doesNotThrowAnyException(); + } + + @Test + void testLoggingWithNullNotification() { + assertThatThrownBy(() -> mcpSyncClient.setLoggingLevel(null)) + .hasMessageContaining("Logging level must not be null"); + } + } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java index 282744c..68bbc32 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java @@ -136,12 +136,12 @@ class McpAsyncClientResponseHandlerTests { // Simulate server sending tools/list_changed notification McpSchema.JSONRPCNotification notification = new McpSchema.JSONRPCNotification(McpSchema.JSONRPC_VERSION, - "notifications/tools/list_changed", null); + McpSchema.METHOD_NOTIFICATION_TOOLS_LIST_CHANGED, null); transport.simulateIncomingMessage(notification); // Simulate server response to tools/list request McpSchema.JSONRPCRequest toolsListRequest = transport.getLastSentMessageAsRequest(); - assertThat(toolsListRequest.method()).isEqualTo("tools/list"); + assertThat(toolsListRequest.method()).isEqualTo(McpSchema.METHOD_TOOLS_LIST); McpSchema.JSONRPCResponse toolsListResponse = new McpSchema.JSONRPCResponse(McpSchema.JSONRPC_VERSION, toolsListRequest.id(), mockToolsResult, null); @@ -166,8 +166,8 @@ class McpAsyncClientResponseHandlerTests { .async(); // Simulate incoming request - McpSchema.JSONRPCRequest request = new McpSchema.JSONRPCRequest(McpSchema.JSONRPC_VERSION, "roots/list", - "test-id", null); + McpSchema.JSONRPCRequest request = new McpSchema.JSONRPCRequest(McpSchema.JSONRPC_VERSION, + McpSchema.METHOD_ROOTS_LIST, "test-id", null); transport.simulateIncomingMessage(request); // Verify response @@ -207,12 +207,12 @@ class McpAsyncClientResponseHandlerTests { // Simulate server sending resources/list_changed notification McpSchema.JSONRPCNotification notification = new McpSchema.JSONRPCNotification(McpSchema.JSONRPC_VERSION, - "notifications/resources/list_changed", null); + McpSchema.METHOD_NOTIFICATION_RESOURCES_LIST_CHANGED, null); transport.simulateIncomingMessage(notification); // Simulate server response to resources/list request McpSchema.JSONRPCRequest resourcesListRequest = transport.getLastSentMessageAsRequest(); - assertThat(resourcesListRequest.method()).isEqualTo("resources/list"); + assertThat(resourcesListRequest.method()).isEqualTo(McpSchema.METHOD_RESOURCES_LIST); McpSchema.JSONRPCResponse resourcesListResponse = new McpSchema.JSONRPCResponse(McpSchema.JSONRPC_VERSION, resourcesListRequest.id(), mockResourcesResult, null); @@ -251,12 +251,12 @@ class McpAsyncClientResponseHandlerTests { // Simulate server sending prompts/list_changed notification McpSchema.JSONRPCNotification notification = new McpSchema.JSONRPCNotification(McpSchema.JSONRPC_VERSION, - "notifications/prompts/list_changed", null); + McpSchema.METHOD_NOTIFICATION_PROMPTS_LIST_CHANGED, null); transport.simulateIncomingMessage(notification); // Simulate server response to prompts/list request McpSchema.JSONRPCRequest promptsListRequest = transport.getLastSentMessageAsRequest(); - assertThat(promptsListRequest.method()).isEqualTo("prompts/list"); + assertThat(promptsListRequest.method()).isEqualTo(McpSchema.METHOD_PROMPT_LIST); McpSchema.JSONRPCResponse promptsListResponse = new McpSchema.JSONRPCResponse(McpSchema.JSONRPC_VERSION, promptsListRequest.id(), mockPromptsResult, null); @@ -303,7 +303,7 @@ class McpAsyncClientResponseHandlerTests { // Simulate incoming request McpSchema.JSONRPCRequest request = new McpSchema.JSONRPCRequest(McpSchema.JSONRPC_VERSION, - "sampling/createMessage", "test-id", messageRequest); + McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, "test-id", messageRequest); transport.simulateIncomingMessage(request); // Verify response @@ -342,7 +342,7 @@ class McpAsyncClientResponseHandlerTests { // Simulate incoming request McpSchema.JSONRPCRequest request = new McpSchema.JSONRPCRequest(McpSchema.JSONRPC_VERSION, - "sampling/createMessage", "test-id", messageRequest); + McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, "test-id", messageRequest); transport.simulateIncomingMessage(request); // Verify error response @@ -374,7 +374,7 @@ class McpAsyncClientResponseHandlerTests { // Simulate incoming request McpSchema.JSONRPCRequest request = new McpSchema.JSONRPCRequest(McpSchema.JSONRPC_VERSION, - "sampling/createMessage", "test-id", messageRequest); + McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, "test-id", messageRequest); transport.simulateIncomingMessage(request); // Verify error response diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java index 3799a39..6de166e 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java @@ -75,6 +75,10 @@ public abstract class AbstractMcpAsyncServerTests { onClose(); } + // --------------------------------------- + // Server Lifecycle Tests + // --------------------------------------- + @Test void testConstructorWithInvalidArguments() { assertThatThrownBy(() -> McpServer.using(null)).isInstanceOf(IllegalArgumentException.class) @@ -85,6 +89,24 @@ public abstract class AbstractMcpAsyncServerTests { .hasMessage("Server info must not be null"); } + @Test + void testGracefulShutdown() { + var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); + + StepVerifier.create(mcpAsyncServer.closeGracefully()).verifyComplete(); + } + + @Test + void testImmediateClose() { + var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); + + assertThatCode(() -> mcpAsyncServer.close()).doesNotThrowAnyException(); + } + + // --------------------------------------- + // Tools Tests + // --------------------------------------- + @Test void testAddTool() { Tool newTool = new McpSchema.Tool("new-tool", "New test tool", Map.of("input", "string")); @@ -165,6 +187,10 @@ public abstract class AbstractMcpAsyncServerTests { assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); } + // --------------------------------------- + // Resources Tests + // --------------------------------------- + @Test void testNotifyResourcesListChanged() { var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); @@ -174,29 +200,6 @@ public abstract class AbstractMcpAsyncServerTests { assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); } - @Test - void testNotifyPromptsListChanged() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); - - StepVerifier.create(mcpAsyncServer.notifyPromptsListChanged()).verifyComplete(); - - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); - } - - @Test - void testGracefulShutdown() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); - - StepVerifier.create(mcpAsyncServer.closeGracefully()).verifyComplete(); - } - - @Test - void testImmediateClose() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); - - assertThatCode(() -> mcpAsyncServer.close()).doesNotThrowAnyException(); - } - @Test void testAddResource() { var mcpAsyncServer = McpServer.using(createMcpTransport()) @@ -216,7 +219,6 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testAddResourceWithNullRegistration() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) .info("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) @@ -229,18 +231,6 @@ public abstract class AbstractMcpAsyncServerTests { assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } - @Test - void testAddPromptWithNullRegistration() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") - .capabilities(ServerCapabilities.builder().prompts(false).build()) - .async(); - - StepVerifier.create(mcpAsyncServer.addPrompt(null)).verifyErrorSatisfies(error -> { - assertThat(error).isInstanceOf(McpError.class).hasMessage("Prompt registration must not be null"); - }); - } - @Test void testAddResourceWithoutCapability() { // Create a server without resource capabilities @@ -259,6 +249,44 @@ public abstract class AbstractMcpAsyncServerTests { }); } + @Test + void testRemoveResourceWithoutCapability() { + // Create a server without resource capabilities + McpAsyncServer serverWithoutResources = McpServer.using(createMcpTransport()) + .info("test-server", "1.0.0") + .async(); + + StepVerifier.create(serverWithoutResources.removeResource(TEST_RESOURCE_URI)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Server must be configured with resource capabilities"); + }); + } + + // --------------------------------------- + // Prompts Tests + // --------------------------------------- + + @Test + void testNotifyPromptsListChanged() { + var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); + + StepVerifier.create(mcpAsyncServer.notifyPromptsListChanged()).verifyComplete(); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + } + + @Test + void testAddPromptWithNullRegistration() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .info("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().prompts(false).build()) + .async(); + + StepVerifier.create(mcpAsyncServer.addPrompt(null)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class).hasMessage("Prompt registration must not be null"); + }); + } + @Test void testAddPromptWithoutCapability() { // Create a server without prompt capabilities @@ -277,19 +305,6 @@ public abstract class AbstractMcpAsyncServerTests { }); } - @Test - void testRemoveResourceWithoutCapability() { - // Create a server without resource capabilities - McpAsyncServer serverWithoutResources = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") - .async(); - - StepVerifier.create(serverWithoutResources.removeResource(TEST_RESOURCE_URI)).verifyErrorSatisfies(error -> { - assertThat(error).isInstanceOf(McpError.class) - .hasMessage("Server must be configured with resource capabilities"); - }); - } - @Test void testRemovePromptWithoutCapability() { // Create a server without prompt capabilities @@ -339,4 +354,53 @@ public abstract class AbstractMcpAsyncServerTests { .doesNotThrowAnyException(); } + // --------------------------------------- + // Logging Tests + // --------------------------------------- + + @Test + void testLoggingLevels() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .info("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().logging().build()) + .async(); + + // Test all logging levels + for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { + var notification = McpSchema.LoggingMessageNotification.builder() + .level(level) + .logger("test-logger") + .data("Test message with level " + level) + .build(); + + StepVerifier.create(mcpAsyncServer.loggingNotification(notification)).verifyComplete(); + } + } + + @Test + void testLoggingWithoutCapability() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .info("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().build()) // No logging capability + .async(); + + var notification = McpSchema.LoggingMessageNotification.builder() + .level(McpSchema.LoggingLevel.INFO) + .logger("test-logger") + .data("Test log message") + .build(); + + StepVerifier.create(mcpAsyncServer.loggingNotification(notification)).verifyComplete(); + } + + @Test + void testLoggingWithNullNotification() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .info("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().logging().build()) + .async(); + + StepVerifier.create(mcpAsyncServer.loggingNotification(null)).verifyError(McpError.class); + } + } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java index 8807d40..04fa9a3 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java @@ -74,6 +74,10 @@ public abstract class AbstractMcpSyncServerTests { onClose(); } + // --------------------------------------- + // Server Lifecycle Tests + // --------------------------------------- + @Test void testConstructorWithInvalidArguments() { assertThatThrownBy(() -> McpServer.using(null)).isInstanceOf(IllegalArgumentException.class) @@ -84,6 +88,33 @@ public abstract class AbstractMcpSyncServerTests { .hasMessage("Server info must not be null"); } + @Test + void testGracefulShutdown() { + var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testImmediateClose() { + var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + + assertThatCode(() -> mcpSyncServer.close()).doesNotThrowAnyException(); + } + + @Test + void testGetAsyncServer() { + var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + + assertThat(mcpSyncServer.getAsyncServer()).isNotNull(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + // --------------------------------------- + // Tools Tests + // --------------------------------------- + @Test void testAddTool() { var mcpSyncServer = McpServer.using(createMcpTransport()) @@ -154,6 +185,10 @@ public abstract class AbstractMcpSyncServerTests { assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); } + // --------------------------------------- + // Resources Tests + // --------------------------------------- + @Test void testNotifyResourcesListChanged() { var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); @@ -163,29 +198,6 @@ public abstract class AbstractMcpSyncServerTests { assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); } - @Test - void testNotifyPromptsListChanged() { - var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); - - assertThatCode(() -> mcpSyncServer.notifyPromptsListChanged()).doesNotThrowAnyException(); - - assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); - } - - @Test - void testGracefulShutdown() { - var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); - - assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); - } - - @Test - void testImmediateClose() { - var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); - - assertThatCode(() -> mcpSyncServer.close()).doesNotThrowAnyException(); - } - @Test void testAddResource() { var mcpSyncServer = McpServer.using(createMcpTransport()) @@ -216,17 +228,6 @@ public abstract class AbstractMcpSyncServerTests { assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); } - @Test - void testAddPromptWithNullRegistration() { - var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") - .capabilities(ServerCapabilities.builder().prompts(false).build()) - .sync(); - - assertThatThrownBy(() -> mcpSyncServer.addPrompt(null)).isInstanceOf(McpError.class) - .hasMessage("Prompt registration must not be null"); - } - @Test void testAddResourceWithoutCapability() { var serverWithoutResources = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); @@ -240,6 +241,38 @@ public abstract class AbstractMcpSyncServerTests { .hasMessage("Server must be configured with resource capabilities"); } + @Test + void testRemoveResourceWithoutCapability() { + var serverWithoutResources = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + + assertThatThrownBy(() -> serverWithoutResources.removeResource(TEST_RESOURCE_URI)).isInstanceOf(McpError.class) + .hasMessage("Server must be configured with resource capabilities"); + } + + // --------------------------------------- + // Prompts Tests + // --------------------------------------- + + @Test + void testNotifyPromptsListChanged() { + var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + + assertThatCode(() -> mcpSyncServer.notifyPromptsListChanged()).doesNotThrowAnyException(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testAddPromptWithNullRegistration() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .info("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().prompts(false).build()) + .sync(); + + assertThatThrownBy(() -> mcpSyncServer.addPrompt(null)).isInstanceOf(McpError.class) + .hasMessage("Prompt registration must not be null"); + } + @Test void testAddPromptWithoutCapability() { var serverWithoutPrompts = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); @@ -253,14 +286,6 @@ public abstract class AbstractMcpSyncServerTests { .hasMessage("Server must be configured with prompt capabilities"); } - @Test - void testRemoveResourceWithoutCapability() { - var serverWithoutResources = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); - - assertThatThrownBy(() -> serverWithoutResources.removeResource(TEST_RESOURCE_URI)).isInstanceOf(McpError.class) - .hasMessage("Server must be configured with resource capabilities"); - } - @Test void testRemovePromptWithoutCapability() { var serverWithoutPrompts = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); @@ -271,7 +296,6 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemovePrompt() { - Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( "Test prompt description", @@ -282,8 +306,6 @@ public abstract class AbstractMcpSyncServerTests { .capabilities(ServerCapabilities.builder().prompts(true).build()) .prompts(registration) .sync(); - // assertThatCode(() -> - // mcpSyncServer.addPrompt(registration)).doesNotThrowAnyException(); assertThatCode(() -> mcpSyncServer.removePrompt(TEST_PROMPT_NAME)).doesNotThrowAnyException(); @@ -303,13 +325,53 @@ public abstract class AbstractMcpSyncServerTests { assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); } + // --------------------------------------- + // Logging Tests + // --------------------------------------- + @Test - void testGetAsyncServer() { - var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + void testLoggingLevels() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .info("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().logging().build()) + .sync(); - assertThat(mcpSyncServer.getAsyncServer()).isNotNull(); + // Test all logging levels + for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { + var notification = McpSchema.LoggingMessageNotification.builder() + .level(level) + .logger("test-logger") + .data("Test message with level " + level) + .build(); - assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + assertThatCode(() -> mcpSyncServer.loggingNotification(notification)).doesNotThrowAnyException(); + } + } + + @Test + void testLoggingWithoutCapability() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .info("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().build()) // No logging capability + .sync(); + + var notification = McpSchema.LoggingMessageNotification.builder() + .level(McpSchema.LoggingLevel.INFO) + .logger("test-logger") + .data("Test log message") + .build(); + + assertThatCode(() -> mcpSyncServer.loggingNotification(notification)).doesNotThrowAnyException(); + } + + @Test + void testLoggingWithNullNotification() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .info("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().logging().build()) + .sync(); + + assertThatThrownBy(() -> mcpSyncServer.loggingNotification(null)).isInstanceOf(McpError.class); } } diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java index 06d2dc3..8d919b8 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java @@ -4,6 +4,8 @@ import java.util.List; import java.util.Map; import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.ai.mcp.server.McpAsyncServer; import org.springframework.ai.mcp.server.McpServer; @@ -15,6 +17,7 @@ import org.springframework.ai.mcp.server.transport.StdioServerTransport; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; +import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; import org.springframework.ai.mcp.spec.McpSchema.Role; import org.springframework.ai.mcp.spec.McpSchema.TextContent; @@ -27,6 +30,8 @@ import org.springframework.web.reactive.function.server.RouterFunction; @Configuration public class McpServerConfig { + private static final Logger logger = LoggerFactory.getLogger(McpServerConfig.class); + // STDIO transport @Bean @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "stdio") @@ -41,7 +46,8 @@ public class McpServerConfig { return new SseServerTransport(new ObjectMapper(), "/mcp/message"); } - // Router function for SSE transport used by Spring WebFlux to start an HTTP server. + // Router function for SSE transport used by Spring WebFlux to start an HTTP + // server. @Bean @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") public RouterFunction mcpRouterFunction(SseServerTransport transport) { @@ -56,16 +62,20 @@ public class McpServerConfig { .resources(false, true) // No subscribe support, but list changes notifications .tools(true) // Tool support with list changes notifications .prompts(true) // Prompt support with list changes notifications + .logging() // Logging support .build(); // Create the server with both tool and resource capabilities - return McpServer.using(transport) + var server = McpServer.using(transport) .info("MCP Demo Server", "1.0.0") .capabilities(capabilities) .resources(systemInfoResourceRegistration()) .prompts(greetingPromptRegistration()) - .tools(weatherToolRegistration(), calculatorToolRegistration()) + .tools(calculatorToolRegistration()) .async(); + + server.addTool(weatherToolRegistration(server)); + return server; // @formatter:on } // @formatter:on private static ResourceRegistration systemInfoResourceRegistration() { @@ -120,13 +130,27 @@ public class McpServerConfig { }); } - private static ToolRegistration weatherToolRegistration() { + private static ToolRegistration weatherToolRegistration(McpAsyncServer server) { return new ToolRegistration( new McpSchema.Tool("weather", "Weather forecast tool by location", Map.of("city", "String")), (arguments) -> { String city = (String) arguments.get("city"); - TextContent content = new TextContent("Weather forecast for " + city + " is sunny"); - return new CallToolResult(List.of(content), false); + + // Create the result + var result = new CallToolResult( + List.of(new TextContent("Weather forecast for " + city + " is sunny")), false); + + // Send the logging notification and ignore its completion + server + .loggingNotification(LoggingMessageNotification.builder() + .data("This is a log message from the weather tool") + .build()) + .subscribe(null, error -> { + // Log any errors but don't fail the operation + logger.error("Failed to send logging notification", error); + }); + + return result; }); } diff --git a/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/McpFunctionCallback.java b/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/McpFunctionCallback.java index 8f965b5..e06b026 100644 --- a/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/McpFunctionCallback.java +++ b/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/McpFunctionCallback.java @@ -28,7 +28,6 @@ import org.springframework.ai.model.function.FunctionCallback; /** * @author Christian Tzolov - * @since 1.0.0 */ public class McpFunctionCallback implements FunctionCallback { From 2b42379c577b5753ade1b0408e9b27c5639e554a Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Wed, 1 Jan 2025 13:33:54 +0100 Subject: [PATCH 016/505] feat: add getters for server/client capabilities and implementation info Add getter methods to expose server and client capabilities and implementation information in both McpAsyncServer and McpSyncServer classes. Store client metadata received during initialization for later retrieval. --- .../ai/mcp/server/McpAsyncServer.java | 40 +++++++++++++++++++ .../ai/mcp/server/McpSyncServer.java | 36 ++++++++++++++++- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index 75d68e7..d25003d 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -38,6 +38,7 @@ import org.springframework.ai.mcp.spec.DefaultMcpSession.NotificationHandler; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; +import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; import org.springframework.ai.mcp.spec.McpSchema.LoggingLevel; import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.spec.McpSchema.Tool; @@ -66,6 +67,10 @@ public class McpAsyncServer { private final McpSchema.Implementation serverInfo; + private McpSchema.ClientCapabilities clientCapabilities; + + private McpSchema.Implementation clientInfo; + /** * Thread-safe list of tool handlers that can be modified at runtime. */ @@ -165,6 +170,9 @@ public class McpAsyncServer { new TypeReference() { }); + this.clientCapabilities = initializeRequest.capabilities(); + this.clientInfo = initializeRequest.clientInfo(); + logger.info("Client initialize request - Protocol: {}, Capabilities: {}, Info: {}", initializeRequest.protocolVersion(), initializeRequest.capabilities(), initializeRequest.clientInfo()); @@ -183,6 +191,38 @@ public class McpAsyncServer { }; } + /** + * Get the server capabilities that define the supported features and functionality. + * @return The server capabilities + */ + public McpSchema.ServerCapabilities getServerCapabilities() { + return this.serverCapabilities; + } + + /** + * Get the server implementation information. + * @return The server implementation details + */ + public McpSchema.Implementation getServerInfo() { + return this.serverInfo; + } + + /** + * Get the client capabilities that define the supported features and functionality. + * @return The client capabilities + */ + public ClientCapabilities getClientCapabilities() { + return this.clientCapabilities; + } + + /** + * Get the client implementation information. + * @return The client implementation details + */ + public McpSchema.Implementation getClientInfo() { + return this.clientInfo; + } + /** * Gracefully closes the server, allowing any in-progress operations to complete. * @return A Mono that completes when the server has been closed diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java index 97f6b9e..4a11943 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java @@ -16,11 +16,11 @@ package org.springframework.ai.mcp.server; -import reactor.core.publisher.Mono; - import org.springframework.ai.mcp.server.McpServer.PromptRegistration; import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; import org.springframework.ai.mcp.server.McpServer.ToolRegistration; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.util.Assert; @@ -124,6 +124,38 @@ public class McpSyncServer { this.asyncServer.loggingNotification(loggingMessageNotification).block(); } + /** + * Get the server capabilities that define the supported features and functionality. + * @return The server capabilities + */ + public McpSchema.ServerCapabilities getServerCapabilities() { + return this.asyncServer.getServerCapabilities(); + } + + /** + * Get the server implementation information. + * @return The server implementation details + */ + public McpSchema.Implementation getServerInfo() { + return this.asyncServer.getServerInfo(); + } + + /** + * Get the client capabilities that define the supported features and functionality. + * @return The client capabilities + */ + public ClientCapabilities getClientCapabilities() { + return this.asyncServer.getClientCapabilities(); + } + + /** + * Get the client implementation information. + * @return The client implementation details + */ + public McpSchema.Implementation getClientInfo() { + return this.asyncServer.getClientInfo(); + } + /** * Close the server gracefully. */ From 0b0d5086ce740aa698bcb8990b86229ebc295129 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Wed, 1 Jan 2025 14:00:37 +0100 Subject: [PATCH 017/505] feat: add server/client metadata getters to MCP clients Add getter methods to expose server and client capabilities and implementation info in McpAsyncClient and McpSyncClient. Store server metadata received during initialization for later access. --- .../ai/mcp/client/McpAsyncClient.java | 55 +++++++++++++++++-- .../ai/mcp/client/McpSyncClient.java | 33 +++++++++++ 2 files changed, 83 insertions(+), 5 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index 3931c77..bf1f17c 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -77,6 +77,21 @@ public class McpAsyncClient { */ private final McpSchema.ClientCapabilities clientCapabilities; + /** + * Client implementation information. + */ + private final McpSchema.Implementation clientInfo; + + /** + * Server capabilities. + */ + private McpSchema.ServerCapabilities serverCapabilities; + + /** + * Server implementation information. + */ + private McpSchema.Implementation serverInfo; + /** * Roots define the boundaries of where servers can operate within the filesystem, * allowing them to understand which directories and files they have access to. @@ -100,11 +115,6 @@ public class McpAsyncClient { */ private final McpTransport transport; - /** - * Client implementation information. - */ - private Implementation clientInfo; - /** * Create a new McpAsyncClient with the given transport and session request-response * timeout. @@ -241,6 +251,9 @@ public class McpAsyncClient { return result.flatMap(initializeResult -> { + this.serverCapabilities = initializeResult.capabilities(); + this.serverInfo = initializeResult.serverInfo(); + logger.info("Server response with Protocol: {}, Capabilities: {}, Info: {} and Instructions {}", initializeResult.protocolVersion(), initializeResult.capabilities(), initializeResult.serverInfo(), initializeResult.instructions()); @@ -256,6 +269,38 @@ public class McpAsyncClient { }); } + /** + * Get the server capabilities that define the supported features and functionality. + * @return The server capabilities + */ + public McpSchema.ServerCapabilities getServerCapabilities() { + return this.serverCapabilities; + } + + /** + * Get the server implementation information. + * @return The server implementation details + */ + public McpSchema.Implementation getServerInfo() { + return this.serverInfo; + } + + /** + * Get the client capabilities that define the supported features and functionality. + * @return The client capabilities + */ + public ClientCapabilities getClientCapabilities() { + return this.clientCapabilities; + } + + /** + * Get the client implementation information. + * @return The client implementation details + */ + public McpSchema.Implementation getClientInfo() { + return this.clientInfo; + } + /** * Closes the client connection immediately. */ diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java index 866e4d2..8cc018a 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java @@ -22,6 +22,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; import org.springframework.ai.mcp.spec.McpSchema.ListPromptsResult; @@ -49,6 +50,38 @@ public class McpSyncClient implements AutoCloseable { this.delegate = delegate; } + /** + * Get the server capabilities that define the supported features and functionality. + * @return The server capabilities + */ + public McpSchema.ServerCapabilities getServerCapabilities() { + return this.delegate.getServerCapabilities(); + } + + /** + * Get the server implementation information. + * @return The server implementation details + */ + public McpSchema.Implementation getServerInfo() { + return this.delegate.getServerInfo(); + } + + /** + * Get the client capabilities that define the supported features and functionality. + * @return The client capabilities + */ + public ClientCapabilities getClientCapabilities() { + return this.delegate.getClientCapabilities(); + } + + /** + * Get the client implementation information. + * @return The client implementation details + */ + public McpSchema.Implementation getClientInfo() { + return this.delegate.getClientInfo(); + } + @Override public void close() { this.delegate.close(); From 0fd93a9f82bef238bcd1045ce1338423483ac5fe Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 2 Jan 2025 08:27:12 +0100 Subject: [PATCH 018/505] feat: Add roots change notification support to MCP server - Implement roots change notification handler in McpAsyncServer - Add rootsChangeConsumer builder methods to support single and multiple consumers - Rename info() builder method to serverInfo() for clarity - Add comprehensive tests for roots change notification functionality - Add default server info implementation in Builder Resolves #39 --- .../ai/mcp/server/McpAsyncServer.java | 41 ++++++- .../ai/mcp/server/McpServer.java | 65 +++++++++-- .../ai/mcp/attic/DemoServer.java | 2 +- .../server/AbstractMcpAsyncServerTests.java | 108 ++++++++++++++---- .../server/AbstractMcpSyncServerTests.java | 106 +++++++++++++---- .../ai/mcp/sample/server/McpServerConfig.java | 2 +- 6 files changed, 266 insertions(+), 58 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index d25003d..75a9879 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.function.Consumer; import com.fasterxml.jackson.core.type.TypeReference; import org.slf4j.Logger; @@ -39,6 +40,7 @@ import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.ListRootsResult; import org.springframework.ai.mcp.spec.McpSchema.LoggingLevel; import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.spec.McpSchema.Tool; @@ -84,7 +86,6 @@ public class McpAsyncServer { private LoggingLevel minLoggingLevel = LoggingLevel.DEBUG; - // TODO: Add support for roots list changed notification /** * Create a new McpAsyncServer with the given transport and capabilities. * @param mcpTransport The transport layer implementation for MCP communication @@ -94,11 +95,13 @@ public class McpAsyncServer { * @param resources The map of resource registrations * @param resourceTemplates The list of resource templates * @param prompts The map of prompt registrations + * @param rootsChangeConsumers The list of consumers that will be notified when the + * roots list changes */ public McpAsyncServer(McpTransport mcpTransport, McpSchema.Implementation serverInfo, McpSchema.ServerCapabilities serverCapabilities, List tools, Map resources, List resourceTemplates, - Map prompts) { + Map prompts, List>> rootsChangeConsumers) { this.serverInfo = serverInfo; this.tools = new CopyOnWriteArrayList<>(tools != null ? tools : List.of()); @@ -156,6 +159,13 @@ public class McpAsyncServer { notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_INITIALIZED, (params) -> Mono.empty()); + if (Utils.isEmpty(rootsChangeConsumers)) { + rootsChangeConsumers = List.of((roots) -> logger + .warn("Roots list changed notification, but no consumers provided. Roots list changed: {}", roots)); + } + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_ROOTS_LIST_CHANGED, + rootsListChnagedNotificationHandler(rootsChangeConsumers)); + this.transport = mcpTransport; this.mcpSession = new DefaultMcpSession(Duration.ofSeconds(10), mcpTransport, requestHandlers, notificationHandlers); @@ -238,6 +248,33 @@ public class McpAsyncServer { this.mcpSession.close(); } + private static TypeReference LIST_ROOTS_RESULT_TYPE_REF = new TypeReference<>() { + }; + + private NotificationHandler rootsListChnagedNotificationHandler( + List>> rootsChangeConsumers) { + + if (this.clientCapabilities != null && this.clientCapabilities.roots() != null) { + + Mono updatedRootsList = this.mcpSession.sendRequest(McpSchema.METHOD_ROOTS_LIST, null, + LIST_ROOTS_RESULT_TYPE_REF); + + return params -> updatedRootsList // @formatter:off + .flatMap(listRootsResult -> + Mono.fromRunnable(() -> + rootsChangeConsumers.stream().forEach(consumer -> consumer.accept(listRootsResult.roots()))) + .subscribeOn(Schedulers.boundedElastic())) // TODO: Check if this is needed + .onErrorResume(error -> { + logger.error("Error handling roots list change notification", error); + return Mono.empty(); + }) + .then(); // Convert to Mono + // @formatter:on + } + + return params -> Mono.empty(); + }; + // --------------------------------------- // Tool Management // --------------------------------------- diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java index a92879a..63588f4 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Consumer; import java.util.function.Function; import org.springframework.ai.mcp.spec.McpSchema; @@ -206,9 +207,12 @@ public interface McpServer { */ public static class Builder { + private final static McpSchema.Implementation DEFAULT_SERVER_INFO = new McpSchema.Implementation("mcp-server", + "1.0.0"); + private final McpTransport transport; - private McpSchema.Implementation serverInfo; + private McpSchema.Implementation serverInfo = DEFAULT_SERVER_INFO; private McpSchema.ServerCapabilities serverCapabilities; @@ -241,6 +245,8 @@ public interface McpServer { */ private Map prompts = new HashMap<>(); + private List>> rootsChangeConsumers = new ArrayList<>(); + private Builder(McpTransport transport) { Assert.notNull(transport, "Transport must not be null"); this.transport = transport; @@ -255,7 +261,7 @@ public interface McpServer { * @return This builder instance for method chaining * @throws IllegalArgumentException if serverInfo is null */ - public Builder info(McpSchema.Implementation serverInfo) { + public Builder serverInfo(McpSchema.Implementation serverInfo) { Assert.notNull(serverInfo, "Server info must not be null"); this.serverInfo = serverInfo; return this; @@ -263,14 +269,15 @@ public interface McpServer { /** * Sets the server implementation information using name and version strings. This - * is a convenience method alternative to {@link #info(McpSchema.Implementation)}. + * is a convenience method alternative to + * {@link #serverInfo(McpSchema.Implementation)}. * @param name The server name. Must not be null or empty. * @param version The server version. Must not be null or empty. * @return This builder instance for method chaining * @throws IllegalArgumentException if name or version is null or empty - * @see #info(McpSchema.Implementation) + * @see #serverInfo(McpSchema.Implementation) */ - public Builder info(String name, String version) { + public Builder serverInfo(String name, String version) { Assert.hasText(name, "Name must not be null or empty"); Assert.hasText(version, "Version must not be null or empty"); this.serverInfo = new McpSchema.Implementation(name, version); @@ -518,6 +525,49 @@ public interface McpServer { return this; } + /** + * Registers a consumer that will be notified when the list of roots changes. This + * is useful for updating resource availability dynamically, such as when new + * files are added or removed. + * @param consumer The consumer to register. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if consumer is null + */ + public Builder rootsChangeConsumer(Consumer> consumer) { + Assert.notNull(consumer, "Consumer must not be null"); + this.rootsChangeConsumers.add(consumer); + return this; + } + + /** + * Registers multiple consumers that will be notified when the list of roots + * changes. This method is useful when multiple consumers need to be registered at + * once. + * @param consumers The list of consumers to register. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if consumers is null + */ + public Builder rootsChangeConsumers(List>> consumers) { + Assert.notNull(consumers, "Consumers list must not be null"); + this.rootsChangeConsumers.addAll(consumers); + return this; + } + + /** + * Registers multiple consumers that will be notified when the list of roots + * changes using varargs. This method provides a convenient way to register + * multiple consumers inline. + * @param consumers The consumers to register. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if consumers is null + */ + public Builder rootsChangeConsumers(Consumer>... consumers) { + for (Consumer> consumer : consumers) { + this.rootsChangeConsumers.add(consumer); + } + return this; + } + /** * Builds a synchronous MCP server that provides blocking operations. Synchronous * servers process each request to completion before handling the next one, making @@ -539,12 +589,9 @@ public interface McpServer { * settings */ public McpAsyncServer async() { - if (serverInfo == null) { - serverInfo = new McpSchema.Implementation("mcp-server", "1.0.0"); - } return new McpAsyncServer(transport, serverInfo, serverCapabilities, tools, resources, resourceTemplates, - prompts); + prompts, rootsChangeConsumers); } } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/DemoServer.java b/mcp/src/test/java/org/springframework/ai/mcp/attic/DemoServer.java index a389b4b..d663f14 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/attic/DemoServer.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/attic/DemoServer.java @@ -43,7 +43,7 @@ public class DemoServer { SseServerTransport transport = new SseServerTransport(new ObjectMapper(), "/mcp/message"); var mcpServer = McpServer.using(transport) - .info("Weather Forecast", "1.0.0") + .serverInfo("Weather Forecast", "1.0.0") .tool(new McpSchema.Tool("weather", "Weather forecast tool by location", Map.of("city", "String")), (arguments) -> { String city = (String) arguments.get("city"); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java index 6de166e..d6e7e26 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java @@ -84,21 +84,21 @@ public abstract class AbstractMcpAsyncServerTests { assertThatThrownBy(() -> McpServer.using(null)).isInstanceOf(IllegalArgumentException.class) .hasMessage("Transport must not be null"); - assertThatThrownBy(() -> McpServer.using(createMcpTransport()).info((McpSchema.Implementation) null)) + assertThatThrownBy(() -> McpServer.using(createMcpTransport()).serverInfo((McpSchema.Implementation) null)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Server info must not be null"); } @Test void testGracefulShutdown() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); StepVerifier.create(mcpAsyncServer.closeGracefully()).verifyComplete(); } @Test void testImmediateClose() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); assertThatCode(() -> mcpAsyncServer.close()).doesNotThrowAnyException(); } @@ -111,7 +111,7 @@ public abstract class AbstractMcpAsyncServerTests { void testAddTool() { Tool newTool = new McpSchema.Tool("new-tool", "New test tool", Map.of("input", "string")); var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .async(); @@ -127,7 +127,7 @@ public abstract class AbstractMcpAsyncServerTests { Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", Map.of("input", "string")); var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .tool(duplicateTool, args -> new CallToolResult(List.of(), false)) .async(); @@ -148,7 +148,7 @@ public abstract class AbstractMcpAsyncServerTests { Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", Map.of("input", "string")); var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .tool(too, args -> new CallToolResult(List.of(), false)) .async(); @@ -161,7 +161,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testRemoveNonexistentTool() { var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .async(); @@ -177,7 +177,7 @@ public abstract class AbstractMcpAsyncServerTests { Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", Map.of("input", "string")); var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .tool(too, args -> new CallToolResult(List.of(), false)) .async(); @@ -193,7 +193,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testNotifyResourcesListChanged() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); StepVerifier.create(mcpAsyncServer.notifyResourcesListChanged()).verifyComplete(); @@ -203,7 +203,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testAddResource() { var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) .async(); @@ -220,7 +220,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testAddResourceWithNullRegistration() { var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) .async(); @@ -235,7 +235,7 @@ public abstract class AbstractMcpAsyncServerTests { void testAddResourceWithoutCapability() { // Create a server without resource capabilities McpAsyncServer serverWithoutResources = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .async(); Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", @@ -253,7 +253,7 @@ public abstract class AbstractMcpAsyncServerTests { void testRemoveResourceWithoutCapability() { // Create a server without resource capabilities McpAsyncServer serverWithoutResources = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .async(); StepVerifier.create(serverWithoutResources.removeResource(TEST_RESOURCE_URI)).verifyErrorSatisfies(error -> { @@ -268,7 +268,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testNotifyPromptsListChanged() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); StepVerifier.create(mcpAsyncServer.notifyPromptsListChanged()).verifyComplete(); @@ -278,7 +278,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testAddPromptWithNullRegistration() { var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(false).build()) .async(); @@ -291,7 +291,7 @@ public abstract class AbstractMcpAsyncServerTests { void testAddPromptWithoutCapability() { // Create a server without prompt capabilities McpAsyncServer serverWithoutPrompts = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .async(); Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); @@ -309,7 +309,7 @@ public abstract class AbstractMcpAsyncServerTests { void testRemovePromptWithoutCapability() { // Create a server without prompt capabilities McpAsyncServer serverWithoutPrompts = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .async(); StepVerifier.create(serverWithoutPrompts.removePrompt(TEST_PROMPT_NAME)).verifyErrorSatisfies(error -> { @@ -328,7 +328,7 @@ public abstract class AbstractMcpAsyncServerTests { List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) .prompts(registration) .async(); @@ -341,7 +341,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testRemoveNonexistentPrompt() { var mcpAsyncServer2 = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) .async(); @@ -354,6 +354,70 @@ public abstract class AbstractMcpAsyncServerTests { .doesNotThrowAnyException(); } + // --------------------------------------- + // Roots Tests + // --------------------------------------- + + @Test + void testRootsChangeConsumers() { + // Test with single consumer + var rootsReceived = new McpSchema.Root[1]; + var consumerCalled = new boolean[1]; + + var singleConsumerServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + consumerCalled[0] = true; + if (!roots.isEmpty()) { + rootsReceived[0] = roots.get(0); + } + })) + .async(); + + assertThat(singleConsumerServer).isNotNull(); + assertThatCode(() -> singleConsumerServer.closeGracefully().block(Duration.ofSeconds(10))) + .doesNotThrowAnyException(); + onClose(); + + // Test with multiple consumers + var consumer1Called = new boolean[1]; + var consumer2Called = new boolean[1]; + var rootsContent = new List[1]; + + var multipleConsumersServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + consumer1Called[0] = true; + rootsContent[0] = roots; + }, roots -> consumer2Called[0] = true)) + .async(); + + assertThat(multipleConsumersServer).isNotNull(); + assertThatCode(() -> multipleConsumersServer.closeGracefully().block(Duration.ofSeconds(10))) + .doesNotThrowAnyException(); + onClose(); + + // Test error handling + var errorHandlingServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + throw new RuntimeException("Test error"); + })) + .async(); + + assertThat(errorHandlingServer).isNotNull(); + assertThatCode(() -> errorHandlingServer.closeGracefully().block(Duration.ofSeconds(10))) + .doesNotThrowAnyException(); + onClose(); + + // Test without consumers + var noConsumersServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + + assertThat(noConsumersServer).isNotNull(); + assertThatCode(() -> noConsumersServer.closeGracefully().block(Duration.ofSeconds(10))) + .doesNotThrowAnyException(); + } + // --------------------------------------- // Logging Tests // --------------------------------------- @@ -361,7 +425,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testLoggingLevels() { var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) .async(); @@ -380,7 +444,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testLoggingWithoutCapability() { var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().build()) // No logging capability .async(); @@ -396,7 +460,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testLoggingWithNullNotification() { var mcpAsyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) .async(); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java index 04fa9a3..def8527 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java @@ -83,28 +83,28 @@ public abstract class AbstractMcpSyncServerTests { assertThatThrownBy(() -> McpServer.using(null)).isInstanceOf(IllegalArgumentException.class) .hasMessage("Transport must not be null"); - assertThatThrownBy(() -> McpServer.using(createMcpTransport()).info((McpSchema.Implementation) null)) + assertThatThrownBy(() -> McpServer.using(createMcpTransport()).serverInfo((McpSchema.Implementation) null)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Server info must not be null"); } @Test void testGracefulShutdown() { - var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); } @Test void testImmediateClose() { - var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); assertThatCode(() -> mcpSyncServer.close()).doesNotThrowAnyException(); } @Test void testGetAsyncServer() { - var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); assertThat(mcpSyncServer.getAsyncServer()).isNotNull(); @@ -118,7 +118,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddTool() { var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .sync(); @@ -135,7 +135,7 @@ public abstract class AbstractMcpSyncServerTests { Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", Map.of("input", "string")); var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .tool(duplicateTool, args -> new CallToolResult(List.of(), false)) .sync(); @@ -153,7 +153,7 @@ public abstract class AbstractMcpSyncServerTests { Tool tool = new McpSchema.Tool(TEST_TOOL_NAME, "Test tool", Map.of("input", "string")); var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .tool(tool, args -> new CallToolResult(List.of(), false)) .sync(); @@ -166,7 +166,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemoveNonexistentTool() { var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .sync(); @@ -178,7 +178,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testNotifyToolsListChanged() { - var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); assertThatCode(() -> mcpSyncServer.notifyToolsListChanged()).doesNotThrowAnyException(); @@ -191,7 +191,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testNotifyResourcesListChanged() { - var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); assertThatCode(() -> mcpSyncServer.notifyResourcesListChanged()).doesNotThrowAnyException(); @@ -201,7 +201,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddResource() { var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) .sync(); @@ -218,7 +218,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddResourceWithNullRegistration() { var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) .sync(); @@ -230,7 +230,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddResourceWithoutCapability() { - var serverWithoutResources = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + var serverWithoutResources = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", null); @@ -243,7 +243,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemoveResourceWithoutCapability() { - var serverWithoutResources = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + var serverWithoutResources = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); assertThatThrownBy(() -> serverWithoutResources.removeResource(TEST_RESOURCE_URI)).isInstanceOf(McpError.class) .hasMessage("Server must be configured with resource capabilities"); @@ -255,7 +255,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testNotifyPromptsListChanged() { - var mcpSyncServer = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); assertThatCode(() -> mcpSyncServer.notifyPromptsListChanged()).doesNotThrowAnyException(); @@ -265,7 +265,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddPromptWithNullRegistration() { var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(false).build()) .sync(); @@ -275,7 +275,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddPromptWithoutCapability() { - var serverWithoutPrompts = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + var serverWithoutPrompts = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( @@ -288,7 +288,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemovePromptWithoutCapability() { - var serverWithoutPrompts = McpServer.using(createMcpTransport()).info("test-server", "1.0.0").sync(); + var serverWithoutPrompts = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); assertThatThrownBy(() -> serverWithoutPrompts.removePrompt(TEST_PROMPT_NAME)).isInstanceOf(McpError.class) .hasMessage("Server must be configured with prompt capabilities"); @@ -302,7 +302,7 @@ public abstract class AbstractMcpSyncServerTests { List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) .prompts(registration) .sync(); @@ -315,7 +315,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemoveNonexistentPrompt() { var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) .sync(); @@ -325,6 +325,66 @@ public abstract class AbstractMcpSyncServerTests { assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); } + // --------------------------------------- + // Roots Tests + // --------------------------------------- + + @Test + void testRootsChangeConsumers() { + // Test with single consumer + var rootsReceived = new McpSchema.Root[1]; + var consumerCalled = new boolean[1]; + + var singleConsumerServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + consumerCalled[0] = true; + if (!roots.isEmpty()) { + rootsReceived[0] = roots.get(0); + } + })) + .sync(); + + assertThat(singleConsumerServer).isNotNull(); + assertThatCode(() -> singleConsumerServer.closeGracefully()).doesNotThrowAnyException(); + onClose(); + + // Test with multiple consumers + var consumer1Called = new boolean[1]; + var consumer2Called = new boolean[1]; + var rootsContent = new List[1]; + + var multipleConsumersServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + consumer1Called[0] = true; + rootsContent[0] = roots; + }, roots -> consumer2Called[0] = true)) + .sync(); + + assertThat(multipleConsumersServer).isNotNull(); + assertThatCode(() -> multipleConsumersServer.closeGracefully()).doesNotThrowAnyException(); + onClose(); + + // Test error handling + var errorHandlingServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + throw new RuntimeException("Test error"); + })) + .sync(); + + assertThat(errorHandlingServer).isNotNull(); + assertThatCode(() -> errorHandlingServer.closeGracefully()).doesNotThrowAnyException(); + onClose(); + + // Test without consumers + var noConsumersServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + assertThat(noConsumersServer).isNotNull(); + assertThatCode(() -> noConsumersServer.closeGracefully()).doesNotThrowAnyException(); + } + // --------------------------------------- // Logging Tests // --------------------------------------- @@ -332,7 +392,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testLoggingLevels() { var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) .sync(); @@ -351,7 +411,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testLoggingWithoutCapability() { var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().build()) // No logging capability .sync(); @@ -367,7 +427,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testLoggingWithNullNotification() { var mcpSyncServer = McpServer.using(createMcpTransport()) - .info("test-server", "1.0.0") + .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) .sync(); diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java index 8d919b8..d0b9e44 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java @@ -67,7 +67,7 @@ public class McpServerConfig { // Create the server with both tool and resource capabilities var server = McpServer.using(transport) - .info("MCP Demo Server", "1.0.0") + .serverInfo("MCP Demo Server", "1.0.0") .capabilities(capabilities) .resources(systemInfoResourceRegistration()) .prompts(greetingPromptRegistration()) From 07769a651dcc98a5253242a1bb570f6efa59494d Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 2 Jan 2025 15:45:17 +0100 Subject: [PATCH 019/505] feat(mcp): Add sampling capabilities to MCP server Implement client-side sampling features in the Model Context Protocol (MCP) server: - Add createMessage method to McpAsyncServer and McpSyncServer for LLM sampling - Move MockMcpTransport to separate file for reusability - Add integration tests for sampling functionality - Test error handling for uninitialized clients and missing capabilities The sampling implementation allows servers to request LLM completions from clients while maintaining client-side control over model access and permissions. Resolves #42 --- .../ai/mcp/server/McpAsyncServer.java | 37 ++++ .../ai/mcp/server/McpSyncServer.java | 23 +++ .../ai/mcp/MockMcpTransport.java | 103 ++++++++++++ .../McpAsyncClientResponseHandlerTests.java | 80 +-------- .../server/AbstractMcpAsyncServerTests.java | 2 +- .../mcp/server/SseAsyncIntegrationTests.java | 159 ++++++++++++++++++ .../ai/mcp/server/SseMcpAsyncServerTests.java | 7 +- .../ai/mcp/server/SseMcpSyncServerTests.java | 7 +- .../ai/mcp/spec/DefaultMcpSessionTests.java | 66 +------- 9 files changed, 331 insertions(+), 153 deletions(-) create mode 100644 mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java create mode 100644 mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index 75a9879..a79c43c 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -603,4 +603,41 @@ public class McpAsyncServer { }; } + // --------------------------------------- + // Sampling + // --------------------------------------- + private static TypeReference CREATE_MESSAGE_RESULT_TYPE_REF = new TypeReference<>() { + }; + + /** + * Create a new message using the sampling capabilities of the client. The Model + * Context Protocol (MCP) provides a standardized way for servers to request LLM + * sampling (“completions” or “generations”) from language models via clients. This + * flow allows clients to maintain control over model access, selection, and + * permissions while enabling servers to leverage AI capabilities—with no server API + * keys necessary. Servers can request text or image-based interactions and optionally + * include context from MCP servers in their prompts. + * @param createMessageRequest The request to create a new message + * @return A Mono that completes when the message has been created + * @throws McpError if the client has not been initialized or does not support + * sampling capabilities + * @throws McpError if the client does not support the createMessage method + * @see McpSchema.CreateMessageRequest + * @see McpSchema.CreateMessageResult + * @see Sampling + * Specification + */ + public Mono createMessage(McpSchema.CreateMessageRequest createMessageRequest) { + + if (this.clientCapabilities == null) { + return Mono.error(new McpError("Client must be initialized. Call the initialize method first!")); + } + if (this.clientCapabilities.sampling() == null) { + return Mono.error(new McpError("Client must be configured with sampling capabilities")); + } + return this.mcpSession.sendRequest(McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, createMessageRequest, + CREATE_MESSAGE_RESULT_TYPE_REF); + } + } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java index 4a11943..6096d9e 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java @@ -178,4 +178,27 @@ public class McpSyncServer { return this.asyncServer; } + /** + * Create a new message using the sampling capabilities of the client. The Model + * Context Protocol (MCP) provides a standardized way for servers to request LLM + * sampling (“completions” or “generations”) from language models via clients. This + * flow allows clients to maintain control over model access, selection, and + * permissions while enabling servers to leverage AI capabilities—with no server API + * keys necessary. Servers can request text or image-based interactions and optionally + * include context from MCP servers in their prompts. + * @param createMessageRequest The request to create a new message + * @return A Mono that completes when the message has been created + * @throws McpError if the client has not been initialized or does not support + * sampling capabilities + * @throws McpError if the client does not support the createMessage method + * @see McpSchema.CreateMessageRequest + * @see McpSchema.CreateMessageResult + * @see Sampling + * Specification + */ + public McpSchema.CreateMessageResult createMessage(McpSchema.CreateMessageRequest createMessageRequest) { + return this.asyncServer.createMessage(createMessageRequest).block(); + } + } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java b/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java new file mode 100644 index 0000000..a41013b --- /dev/null +++ b/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java @@ -0,0 +1,103 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp; + +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.core.publisher.Sinks; +import reactor.core.scheduler.Schedulers; + +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; +import org.springframework.ai.mcp.spec.McpSchema.JSONRPCNotification; +import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; + +@SuppressWarnings("unused") +public class MockMcpTransport implements McpTransport { + + private final AtomicInteger inboundMessageCount = new AtomicInteger(0); + + private final Sinks.Many outgoing = Sinks.many().multicast().onBackpressureBuffer(); + + private final Sinks.Many inbound = Sinks.many().unicast().onBackpressureBuffer(); + + private final Flux outboundView = outgoing.asFlux().cache(1); + + public void simulateIncomingMessage(McpSchema.JSONRPCMessage message) { + if (inbound.tryEmitNext(message).isFailure()) { + throw new RuntimeException("Failed to emit message " + message); + } + inboundMessageCount.incrementAndGet(); + } + + @Override + public Mono sendMessage(McpSchema.JSONRPCMessage message) { + if (outgoing.tryEmitNext(message).isFailure()) { + return Mono.error(new RuntimeException("Can't emit outgoing message " + message)); + } + return Mono.empty(); + } + + public McpSchema.JSONRPCRequest getLastSentMessageAsRequest() { + return (JSONRPCRequest) outboundView.blockFirst(); + } + + public McpSchema.JSONRPCNotification getLastSentMessageAsNotifiation() { + return (JSONRPCNotification) outboundView.blockFirst(); + } + + public McpSchema.JSONRPCMessage getLastSentMessage() { + return outboundView.blockFirst(); + } + + private volatile boolean connected = false; + + @Override + public Mono connect(Function, Mono> handler) { + if (connected) { + return Mono.error(new IllegalStateException("Already connected")); + } + connected = true; + return inbound.asFlux() + .publishOn(Schedulers.boundedElastic()) + .flatMap(message -> Mono.just(message).transform(handler)) + .doFinally(signal -> connected = false) + .then(); + } + + @Override + public Mono closeGracefully() { + return Mono.defer(() -> { + connected = false; + outgoing.tryEmitComplete(); + inbound.tryEmitComplete(); + return Mono.empty(); + }); + } + + @Override + public T unmarshalFrom(Object data, TypeReference typeRef) { + return new ObjectMapper().convertValue(data, typeRef); + } + +} \ No newline at end of file diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java index 68bbc32..0b2c374 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java @@ -20,100 +20,22 @@ import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; -import reactor.core.publisher.Sinks; -import reactor.core.scheduler.Schedulers; +import org.springframework.ai.mcp.MockMcpTransport; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCNotification; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; import org.springframework.ai.mcp.spec.McpSchema.Root; -import org.springframework.ai.mcp.spec.McpTransport; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; class McpAsyncClientResponseHandlerTests { - @SuppressWarnings("unused") - private static class MockMcpTransport implements McpTransport { - - private final AtomicInteger inboundMessageCount = new AtomicInteger(0); - - private final Sinks.Many outgoing = Sinks.many().multicast().onBackpressureBuffer(); - - private final Sinks.Many inbound = Sinks.many().unicast().onBackpressureBuffer(); - - private final Flux outboundView = outgoing.asFlux().cache(1); - - public void simulateIncomingMessage(McpSchema.JSONRPCMessage message) { - if (inbound.tryEmitNext(message).isFailure()) { - throw new RuntimeException("Failed to emit message " + message); - } - inboundMessageCount.incrementAndGet(); - } - - @Override - public Mono sendMessage(McpSchema.JSONRPCMessage message) { - if (outgoing.tryEmitNext(message).isFailure()) { - return Mono.error(new RuntimeException("Can't emit outgoing message " + message)); - } - return Mono.empty(); - } - - public McpSchema.JSONRPCRequest getLastSentMessageAsRequest() { - return (JSONRPCRequest) outboundView.blockFirst(); - } - - public McpSchema.JSONRPCNotification getLastSentMessageAsNotifiation() { - return (JSONRPCNotification) outboundView.blockFirst(); - } - - public McpSchema.JSONRPCMessage getLastSentMessage() { - return outboundView.blockFirst(); - } - - private volatile boolean connected = false; - - @Override - public Mono connect(Function, Mono> handler) { - if (connected) { - return Mono.error(new IllegalStateException("Already connected")); - } - connected = true; - return inbound.asFlux() - .publishOn(Schedulers.boundedElastic()) - .flatMap(message -> Mono.just(message).transform(handler)) - .doFinally(signal -> connected = false) - .then(); - } - - @Override - public Mono closeGracefully() { - return Mono.defer(() -> { - connected = false; - outgoing.tryEmitComplete(); - inbound.tryEmitComplete(); - return Mono.empty(); - }); - } - - @Override - public T unmarshalFrom(Object data, TypeReference typeRef) { - return new ObjectMapper().convertValue(data, typeRef); - } - - } - @Test void testToolsChangeNotificationHandling() { MockMcpTransport transport = new MockMcpTransport(); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java index d6e7e26..16a8a73 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java @@ -25,11 +25,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.server.McpServer.PromptRegistration; import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; import org.springframework.ai.mcp.server.McpServer.ToolRegistration; import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; import org.springframework.ai.mcp.spec.McpSchema.Prompt; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java new file mode 100644 index 0000000..65c7661 --- /dev/null +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java @@ -0,0 +1,159 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.server; + +import java.util.List; +import java.util.Map; +import java.util.function.Function; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import reactor.netty.DisposableServer; +import reactor.netty.http.server.HttpServer; +import reactor.test.StepVerifier; + +import org.springframework.ai.mcp.client.McpClient; +import org.springframework.ai.mcp.client.transport.SseClientTransport; +import org.springframework.ai.mcp.server.transport.SseServerTransport; +import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; +import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; +import org.springframework.ai.mcp.spec.McpSchema.InitializeResult; +import org.springframework.ai.mcp.spec.McpSchema.Role; +import org.springframework.http.server.reactive.HttpHandler; +import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.server.RouterFunctions; + +import static org.assertj.core.api.Assertions.assertThat; + +public class SseAsyncIntegrationTests { + + private static final int PORT = 8181; + + private static final String MESSAGE_ENDPOINT = "/mcp/message"; + + private DisposableServer httpServer; + + private SseServerTransport mcpServerTransport; + + McpClient.Builder clientBuilder; + + @BeforeEach + public void before() { + this.mcpServerTransport = new SseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); + + HttpHandler httpHandler = RouterFunctions.toHttpHandler(mcpServerTransport.getRouterFunction()); + ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); + this.httpServer = HttpServer.create().port(PORT).handle(adapter).bindNow(); + + this.clientBuilder = McpClient + .using(new SseClientTransport(WebClient.builder().baseUrl("http://localhost:" + PORT))); + } + + @AfterEach + public void after() { + if (httpServer != null) { + httpServer.disposeNow(); + } + } + + // --------------------------------------- + // Sampling Tests + // --------------------------------------- + @Test + void testCreateMessageWithoutInitialization() { + var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + + var messages = List + .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); + var modelPrefs = new McpSchema.ModelPreferences(List.of(), 1.0, 1.0, 1.0); + + var request = new McpSchema.CreateMessageRequest(messages, modelPrefs, null, + McpSchema.CreateMessageRequest.ContextInclusionStrategy.NONE, null, 100, List.of(), Map.of()); + + StepVerifier.create(mcpAsyncServer.createMessage(request)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Client must be initialized. Call the initialize method first!"); + }); + } + + @Test + void testCreateMessageWithoutSamplingCapabilities() { + + var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + + var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")).sync(); + + InitializeResult initResult = client.initialize(); + assertThat(initResult).isNotNull(); + + var messages = List + .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); + var modelPrefs = new McpSchema.ModelPreferences(List.of(), 1.0, 1.0, 1.0); + + var request = new McpSchema.CreateMessageRequest(messages, modelPrefs, null, + McpSchema.CreateMessageRequest.ContextInclusionStrategy.NONE, null, 100, List.of(), Map.of()); + + StepVerifier.create(mcpAsyncServer.createMessage(request)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Client must be configured with sampling capabilities"); + }); + } + + @Test + void testCreateMessageSuccess() throws InterruptedException { + + var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + + Function samplingHandler = request -> { + assertThat(request.messages()).hasSize(1); + assertThat(request.messages().get(0).content()).isInstanceOf(McpSchema.TextContent.class); + + return new CreateMessageResult(Role.USER, new McpSchema.TextContent("Test message"), "MockModelName", + CreateMessageResult.StopReason.STOP_SEQUENCE); + }; + + var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")) + .capabilities(ClientCapabilities.builder().sampling().build()) + .sampling(samplingHandler) + .sync(); + + InitializeResult initResult = client.initialize(); + assertThat(initResult).isNotNull(); + + var messages = List + .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); + var modelPrefs = new McpSchema.ModelPreferences(List.of(), 1.0, 1.0, 1.0); + + var request = new McpSchema.CreateMessageRequest(messages, modelPrefs, null, + McpSchema.CreateMessageRequest.ContextInclusionStrategy.NONE, null, 100, List.of(), Map.of()); + + StepVerifier.create(mcpAsyncServer.createMessage(request)).consumeNextWith(result -> { + assertThat(result).isNotNull(); + assertThat(result.role()).isEqualTo(Role.USER); + assertThat(result.content()).isInstanceOf(McpSchema.TextContent.class); + assertThat(((McpSchema.TextContent) result.content()).text()).isEqualTo("Test message"); + assertThat(result.model()).isEqualTo("MockModelName"); + assertThat(result.stopReason()).isEqualTo(CreateMessageResult.StopReason.STOP_SEQUENCE); + }).verifyComplete(); + } + +} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java index 3d8336b..45259a8 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java @@ -18,15 +18,14 @@ package org.springframework.ai.mcp.server; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Timeout; - -import org.springframework.http.server.reactive.HttpHandler; -import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; -import org.springframework.web.reactive.function.server.RouterFunctions; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; import org.springframework.ai.mcp.server.transport.SseServerTransport; import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.http.server.reactive.HttpHandler; +import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; +import org.springframework.web.reactive.function.server.RouterFunctions; /** * Tests for {@link McpAsyncServer} using {@link SseServerTransport}. diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java index c742969..2426849 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java @@ -18,15 +18,14 @@ package org.springframework.ai.mcp.server; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Timeout; - -import org.springframework.http.server.reactive.HttpHandler; -import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; -import org.springframework.web.reactive.function.server.RouterFunctions; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; import org.springframework.ai.mcp.server.transport.SseServerTransport; import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.http.server.reactive.HttpHandler; +import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; +import org.springframework.web.reactive.function.server.RouterFunctions; /** * Tests for {@link McpSyncServer} using {@link SseServerTransport}. diff --git a/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java b/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java index a29e0d2..658c49a 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java @@ -18,24 +18,18 @@ package org.springframework.ai.mcp.spec; import java.time.Duration; import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; -import reactor.core.scheduler.Schedulers; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCNotification; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; +import org.springframework.ai.mcp.MockMcpTransport; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -62,64 +56,6 @@ class DefaultMcpSessionTests { private MockMcpTransport transport; - @SuppressWarnings("unused") - private static class MockMcpTransport implements McpTransport { - - private final AtomicInteger inboundMessageCount = new AtomicInteger(0); - - private Sinks.Many outgoing = Sinks.many().multicast().onBackpressureBuffer(); - - private Sinks.Many inbound = Sinks.many().unicast().onBackpressureBuffer(); - - private Flux outboundView = outgoing.asFlux().cache(1); - - public void simulateIncomingMessage(McpSchema.JSONRPCMessage message) { - if (inbound.tryEmitNext(message).isFailure()) { - throw new RuntimeException("Failed to emit message " + message); - } - inboundMessageCount.incrementAndGet(); - } - - @Override - public Mono sendMessage(McpSchema.JSONRPCMessage message) { - if (outgoing.tryEmitNext(message).isFailure()) { - return Mono.error(new RuntimeException("Can't emit outgoing message " + message)); - } - return Mono.empty(); - } - - public McpSchema.JSONRPCRequest getLastSentMessageAsRequest() { - return (JSONRPCRequest) outboundView.blockFirst(); - } - - public McpSchema.JSONRPCNotification getLastSentMessageAsNotifiation() { - return (JSONRPCNotification) outboundView.blockFirst(); - } - - public McpSchema.JSONRPCMessage getLastSentMessage() { - return outboundView.blockFirst(); - } - - @Override - public Mono connect(Function, Mono> handler) { - return inbound.asFlux() - .publishOn(Schedulers.boundedElastic()) - .flatMap(message -> Mono.just(message).transform(handler)) - .then(); - } - - @Override - public Mono closeGracefully() { - return Mono.empty(); - } - - @Override - public T unmarshalFrom(Object data, TypeReference typeRef) { - return new ObjectMapper().convertValue(data, typeRef); - } - - } - @BeforeEach void setUp() { transport = new MockMcpTransport(); From 51b75dca196ae1a3615242f8005e677d259869a5 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 2 Jan 2025 18:19:33 +0100 Subject: [PATCH 020/505] feat: enforce sampling handler presence and add CreateMessageResult builder Improves error handling by enforcing sampling handler presence when sampling capabilities are enabled. Adds a builder pattern for CreateMessageResult to improve API ergonomics. --- .../ai/mcp/client/McpAsyncClient.java | 5 ++- .../ai/mcp/spec/McpSchema.java | 40 +++++++++++++++++++ .../client/AbstractMcpAsyncClientTests.java | 16 +++++++- .../McpAsyncClientResponseHandlerTests.java | 31 +++----------- 4 files changed, 64 insertions(+), 28 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index bf1f17c..c4473a4 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -160,7 +160,10 @@ public class McpAsyncClient { } // Sampling Handler - if (samplingHandler != null && this.clientCapabilities.sampling() != null) { + if (this.clientCapabilities.sampling() != null) { + if (samplingHandler == null) { + throw new McpError("Sampling handler must not be null when client capabilities include sampling"); + } this.samplingHandler = samplingHandler; requestHanlers.put(McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, samplingCreateMessageHandler()); } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java index 663cc0c..bb3b301 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java @@ -761,6 +761,46 @@ public class McpSchema { @JsonProperty("stop_sequence") STOP_SEQUENCE, @JsonProperty("max_tokens") MAX_TOKENS } + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private Role role = Role.ASSISTANT; + private Content content; + private String model; + private StopReason stopReason = StopReason.END_TURN; + + public Builder role(Role role) { + this.role = role; + return this; + } + + public Builder content(Content content) { + this.content = content; + return this; + } + + public Builder model(String model) { + this.model = model; + return this; + } + + public Builder stopReason(StopReason stopReason) { + this.stopReason = stopReason; + return this; + } + + public Builder message(String message) { + this.content = new TextContent(message); + return this; + } + + public CreateMessageResult build() { + return new CreateMessageResult(role, content, model, stopReason); + } + } }// @formatter:on // --------------------------- diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java index c8d357d..acde147 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java @@ -19,6 +19,7 @@ package org.springframework.ai.mcp.client; import java.time.Duration; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Function; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -29,6 +30,8 @@ import reactor.test.StepVerifier; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; +import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; import org.springframework.ai.mcp.spec.McpSchema.Prompt; import org.springframework.ai.mcp.spec.McpSchema.Resource; @@ -295,7 +298,9 @@ public abstract class AbstractMcpAsyncClientTests { var capabilities = ClientCapabilities.builder().sampling().build(); - var client = McpClient.using(transport).requestTimeout(TIMEOUT).capabilities(capabilities).async(); + var client = McpClient.using(transport).requestTimeout(TIMEOUT).capabilities(capabilities).sampling(request -> { + return CreateMessageResult.builder().message("test").model("test-model").build(); + }).async(); assertThatCode(() -> { client.initialize().block(Duration.ofSeconds(10)); @@ -313,7 +318,14 @@ public abstract class AbstractMcpAsyncClientTests { .sampling() .build(); - var client = McpClient.using(transport).requestTimeout(TIMEOUT).capabilities(capabilities).async(); + Function samplingHandler = request -> { + return CreateMessageResult.builder().message("test").model("test-model").build(); + }; + var client = McpClient.using(transport) + .requestTimeout(TIMEOUT) + .capabilities(capabilities) + .sampling(samplingHandler) + .async(); assertThatCode(() -> { var result = client.initialize().block(Duration.ofSeconds(10)); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java index 0b2c374..da18e5f 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java @@ -27,11 +27,13 @@ import com.fasterxml.jackson.core.type.TypeReference; import org.junit.jupiter.api.Test; import org.springframework.ai.mcp.MockMcpTransport; +import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; import org.springframework.ai.mcp.spec.McpSchema.Root; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.awaitility.Awaitility.await; class McpAsyncClientResponseHandlerTests { @@ -285,31 +287,10 @@ class McpAsyncClientResponseHandlerTests { MockMcpTransport transport = new MockMcpTransport(); // Create client with sampling capability but null handler - McpAsyncClient asyncMcpClient = McpClient.using(transport) - .capabilities(ClientCapabilities.builder().sampling().build()) - .async(); - - // Create a mock create message request - var messageRequest = new McpSchema.CreateMessageRequest( - List.of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))), - null, null, null, null, 0, null, null); - - // Simulate incoming request - McpSchema.JSONRPCRequest request = new McpSchema.JSONRPCRequest(McpSchema.JSONRPC_VERSION, - McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, "test-id", messageRequest); - transport.simulateIncomingMessage(request); - - // Verify error response - McpSchema.JSONRPCMessage sentMessage = transport.getLastSentMessage(); - assertThat(sentMessage).isInstanceOf(McpSchema.JSONRPCResponse.class); - - McpSchema.JSONRPCResponse response = (McpSchema.JSONRPCResponse) sentMessage; - assertThat(response.id()).isEqualTo("test-id"); - assertThat(response.result()).isNull(); - assertThat(response.error()).isNotNull(); - assertThat(response.error().message()).contains("Method not found: sampling/createMessage"); - - asyncMcpClient.closeGracefully(); + assertThatThrownBy( + () -> McpClient.using(transport).capabilities(ClientCapabilities.builder().sampling().build()).async()) + .isInstanceOf(McpError.class) + .hasMessage("Sampling handler must not be null when client capabilities include sampling"); } } From 724a12b6975be5ad0c25f63ca3cc0cd02c144d4c Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 2 Jan 2025 19:27:59 +0100 Subject: [PATCH 021/505] Add mcp-docs with initial Antora support --- mcp-docs/pom.xml | 89 +++++++++++++ mcp-docs/src/assembly/javadocs.xml | 31 +++++ mcp-docs/src/main/antora/antora-playbook.yml | 48 +++++++ mcp-docs/src/main/antora/antora.yml | 12 ++ .../images/spring-ai-mcp-architecture.jpg | Bin 0 -> 753882 bytes .../src/main/antora/modules/ROOT/nav.adoc | 3 + .../main/antora/modules/ROOT/pages/index.adoc | 119 ++++++++++++++++++ .../antora/modules/ROOT/pages/index2.adoc | 54 ++++++++ .../resources/antora-resources/antora.yml | 2 + mcp-docs/src/main/javadoc/overview.html | 33 +++++ pom.xml | 4 + 11 files changed, 395 insertions(+) create mode 100644 mcp-docs/pom.xml create mode 100644 mcp-docs/src/assembly/javadocs.xml create mode 100644 mcp-docs/src/main/antora/antora-playbook.yml create mode 100644 mcp-docs/src/main/antora/antora.yml create mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg create mode 100644 mcp-docs/src/main/antora/modules/ROOT/nav.adoc create mode 100644 mcp-docs/src/main/antora/modules/ROOT/pages/index.adoc create mode 100644 mcp-docs/src/main/antora/modules/ROOT/pages/index2.adoc create mode 100644 mcp-docs/src/main/antora/resources/antora-resources/antora.yml create mode 100644 mcp-docs/src/main/javadoc/overview.html diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml new file mode 100644 index 0000000..a4b958a --- /dev/null +++ b/mcp-docs/pom.xml @@ -0,0 +1,89 @@ + + + + + 4.0.0 + + org.springframework.experimental + mcp-parent + 0.4.0-SNAPSHOT + + mcp-docs + Spring AI MCP Docs + Spring AI MCP documentation + + + + + org.antora + antora-maven-plugin + ${org.maven.antora-version} + true + + + + + + + src/main/antora/antora-playbook.yml + + @antora/cli@3.2.0-alpha.6 + @antora/atlas-extension@1.0.0-alpha.2 + @antora/collector-extension@1.0.0-beta.1 + @asciidoctor/tabs@1.0.0-beta.6 + @springio/antora-extensions@1.14.2 + @springio/asciidoctor-extensions@1.0.0-alpha.12 + @djencks/asciidoctor-mathjax@0.0.9 + + + + + io.spring.maven.antora + antora-component-version-maven-plugin + ${io.spring.maven.antora-version} + + + + antora-component-version + + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven-assembly-plugin.version} + + + src/assembly/javadocs.xml + + spring-ai-mcp-${project.version} + true + + + + org.apache.maven.plugins + maven-deploy-plugin + ${maven-deploy-plugin.version} + + true + + + + + + \ No newline at end of file diff --git a/mcp-docs/src/assembly/javadocs.xml b/mcp-docs/src/assembly/javadocs.xml new file mode 100644 index 0000000..a12b36e --- /dev/null +++ b/mcp-docs/src/assembly/javadocs.xml @@ -0,0 +1,31 @@ + + + + docs + + zip + + false + + + ../target/site/apidocs + api + + + \ No newline at end of file diff --git a/mcp-docs/src/main/antora/antora-playbook.yml b/mcp-docs/src/main/antora/antora-playbook.yml new file mode 100644 index 0000000..bb45a0b --- /dev/null +++ b/mcp-docs/src/main/antora/antora-playbook.yml @@ -0,0 +1,48 @@ +# PACKAGES antora@3.2.0-alpha.6 @antora/atlas-extension:1.0.0-alpha.1 @antora/collector-extension@1.0.0-alpha.3 @springio/antora-extensions@1.1.0-alpha.2 @asciidoctor/tabs@1.0.0-alpha.12 @opendevise/antora-release-line-extension@1.0.0-alpha.2 +# +# The purpose of this Antora playbook is to build the docs in the current branch. +antora: + extensions: + - '@antora/collector-extension' + # - require: '@springio/antora-extensions/root-component-extension' + - require: '@springio/antora-extensions' + root_component_name: 'ai' +site: + title: Spring AI Reference + url: https://docs.spring.io/spring-ai-mcp/reference + robots: allow +git: + ensure_git_suffix: false +content: + sources: + - url: ./../../../.. + branches: HEAD + start_path: mcp-docs/src/main/antora + worktrees: true +asciidoc: + attributes: + page-related-doc-categories: ai,java,ml,mcp + page-pagination: '' + hide-uri-scheme: '@' + tabs-sync-option: '@' + chomp: 'all' + stem: 'asciimath' + extensions: + - '@asciidoctor/tabs' + - '@springio/asciidoctor-extensions' + - '@springio/asciidoctor-extensions/javadoc-extension' + - '@springio/asciidoctor-extensions/include-code-extension' + - '@djencks/asciidoctor-mathjax' + sourcemap: true +urls: + latest_version_segment_strategy: redirect:to + latest_version_segment: '' + redirect_facility: httpd +runtime: + log: + failure_level: warn + format: pretty +ui: + bundle: + url: https://github.com/spring-io/antora-ui-spring/releases/download/v0.4.17/ui-bundle.zip + snapshot: true \ No newline at end of file diff --git a/mcp-docs/src/main/antora/antora.yml b/mcp-docs/src/main/antora/antora.yml new file mode 100644 index 0000000..916c760 --- /dev/null +++ b/mcp-docs/src/main/antora/antora.yml @@ -0,0 +1,12 @@ +name: ai +version: true +title: Spring AI +nav: + - modules/ROOT/nav.adoc +ext: + collector: + - run: + command: mvnw process-resources + local: true + scan: + dir: mcp-docs/target/classes/antora-resources \ No newline at end of file diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7463b847256e5ffd25bd93f5216070ea4ab67a0f GIT binary patch literal 753882 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:p1i{1GmV{2_*N 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%0AC5Q%TxdBm@fxiO1SS4yyX!=?T!@xWtc3lQA~5 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 z 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 L(FmOVKJfnlgrVJU literal 0 HcmV?d00001 diff --git a/mcp-docs/src/main/antora/modules/ROOT/nav.adoc b/mcp-docs/src/main/antora/modules/ROOT/nav.adoc new file mode 100644 index 0000000..b456e4a --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/nav.adoc @@ -0,0 +1,3 @@ +* xref:index.adoc[Overview] +// ** xref:concepts.adoc[AI Concepts] +// * xref:getting-started.adoc[Getting Started] diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/index.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000..ff74be2 --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/index.adoc @@ -0,0 +1,119 @@ += Java & Spring MCP + +Java SDK for the Model Context Protocol (MCP), providing seamless integration between Java and Spring applications and MCP-compliant AI resources and tools. + +== Overview + +Provides Java and Spring Framework integration for the link:https://modelcontextprotocol.org/docs/concepts/architecture[Model Context Protocol]. It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. + +image::spring-ai-mcp-architecture.jpg[Spring AI MCP Architecture,600] + +== Modules + +The project consists of two main modules: + +=== mcp + +Java implementation of the Model Context Protocol specification. It includes: + +* Synchronous and asynchronous link:https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#client-usage-examples[MCP Client] and link:https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#server-usage-examples[MCP Server] implementations +* Standard MCP operations support (tool discovery, resource management, prompt handling, structured logging). Support for request and notification handling. +* link:https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio[Stdio] and link:https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse[SSE] transport implementations. +* link:./mcp/README.md[Find more]. + +=== spring-ai-mcp + +The Spring integration module provides Spring-specific functionality: + +* Integration with Spring AI's function calling system +* Spring-friendly abstractions for MCP clients +* Auto-configurations (WIP) + +== Requirements + +* Java 17 or later +* Maven 3.6 or later +* Spring AI 1.0.0-M4 or later + +== Installation + +Add the following dependencies to your Maven project: + +[source,xml] +---- + + + org.springframework.experimental + mcp + 0.4.0-SNAPSHOT + + + + + org.springframework.experimental + spring-ai-mcp + 0.4.0-SNAPSHOT + +---- + +== Example Demos + +Explore these MCP examples in the link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol[spring-ai-examples/model-context-protocol] repository: + +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/simple[SQLite Simple] - Demonstrates LLM integration with a database +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/chatbot[SQLite Chatbot] - Interactive chatbot with SQLite database interaction +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem[Filesystem] - Enables LLM interaction with local filesystem folders and files +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave[Brave] - Enables natural language interactions with Brave Search, allowing you to perform internet searches. +* link:./spring-ai-mcp-sample/[Spring-ai-mcp-sample] - Showcases how to create and use MCP servers and clients with different transport modes and capabilities. + +== Documentation + +* link:mcp/README.md[Java MCP SDK documentation] +** link:docs/ref-index.md[Reference documentation] +* link:spring-ai-mcp/README.md[Spring Integration documentation] + +== Development + +=== Building from Source + +[source,bash] +---- +mvn clean install +---- + +=== Running Tests + +[source,bash] +---- +mvn test +---- + +== Project Information + +* *Group ID*: org.springframework.experimental +* *Version*: 0.4.0-SNAPSHOT +* *Java Version*: 17 +* *Spring AI Version*: 1.0.0-M4 + +== Contributing + +This is an experimental Spring project. Contributions are welcome! Please: + +1. Fork the repository +2. Create a feature branch +3. Submit a Pull Request + +== Team + +* Christian Tzolov +* Dariusz Jędrzejczyk + +== Links + +* link:https://github.com/spring-projects-experimental/spring-ai-mcp[GitHub Repository] +* link:https://github.com/spring-projects-experimental/spring-ai-mcp/issues[Issue Tracker] +* link:https://github.com/spring-projects-experimental/spring-ai-mcp/actions[CI/CD] + +== License + +This project is licensed under the link:LICENSE[Apache License 2.0]. diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/index2.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/index2.adoc new file mode 100644 index 0000000..226a186 --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/index2.adoc @@ -0,0 +1,54 @@ += Spring AI MCP Spring +:page-title: Spring AI MCP Spring +:doctype: book +:icons: font +:source-highlighter: highlight.js +:toc: left + +Spring Integration module for Model Control Protocol (MCP) that provides Spring-specific functionality for working with MCP clients. + +== Overview + +The `spring-ai-mcp` module is part of the https://github.com/spring-projects-experimental/spring-ai-mcp[Spring AI MCP] project. It provides Spring Framework integration for the Model Control Protocol (MCP), enabling seamless integration of MCP functionality within Spring applications. + +== Features + +* Spring integration for MCP clients +* Function callback implementation for tool invocations +* Seamless integration with Spring AI's function calling capabilities + +== Main Components + +=== McpFunctionCallback + +The `McpFunctionCallback` class is the primary component of this module. It implements Spring AI's `FunctionCallback` interface and provides: + +* Integration between Spring AI's function calling system and MCP tools +* Automatic conversion between JSON and Java objects for tool arguments +* Synchronous tool execution support + +== Usage + +To use this module, add the following dependency to your Maven project: + +[source,xml] +---- + + org.springframework.experimental + spring-ai-mcp + 0.4.0-SNAPSHOT + +---- + +== License + +This project is licensed under the https://www.apache.org/licenses/LICENSE-2.0[Apache License 2.0]. + +== Links + +* https://github.com/spring-projects-experimental/spring-ai-mcp[GitHub Repository] +* https://github.com/spring-projects-experimental/spring-ai-mcp/issues[Issue Tracker] + +== Contributing + +This is an experimental Spring project. Contributions are welcome! Please refer to the main project's contribution guidelines. diff --git a/mcp-docs/src/main/antora/resources/antora-resources/antora.yml b/mcp-docs/src/main/antora/resources/antora-resources/antora.yml new file mode 100644 index 0000000..99706e0 --- /dev/null +++ b/mcp-docs/src/main/antora/resources/antora-resources/antora.yml @@ -0,0 +1,2 @@ +version: ${antora-component.version} +prerelease: ${antora-component.prerelease} \ No newline at end of file diff --git a/mcp-docs/src/main/javadoc/overview.html b/mcp-docs/src/main/javadoc/overview.html new file mode 100644 index 0000000..3a30a69 --- /dev/null +++ b/mcp-docs/src/main/javadoc/overview.html @@ -0,0 +1,33 @@ + + + + +

    + This document is the API specification for Spring AI +

    +
    +

    + For further API reference and developer documentation, see the + + Spring AI MCP reference documentation. + That documentation contains more detailed, developer-targeted + descriptions, with conceptual overviews, definitions of terms, + and working code examples. +

    +
    + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 383a2d2..ea74ed2 100644 --- a/pom.xml +++ b/pom.xml @@ -93,12 +93,16 @@ 3.4.5 3.3.0 0.0.43 + 1.0.0-alpha.4 + 0.0.4 + 1.6.2 mcp spring-ai-mcp spring-ai-mcp-sample + mcp-docs From 48fad96fe4570d7cbf70b625ffa0e634a91d2e91 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 3 Jan 2025 00:25:41 +0100 Subject: [PATCH 022/505] docs: Add MCP SDK documentation and architecture diagrams Add comprehensive documentation for the MCP Java SDK implementation Add architecture diagrams showing layered design and class relationships Reorganize documentation structure with dedicated pages for: Overview and introduction MCP Java SDK reference Spring AI MCP integration Include detailed examples and usage patterns for both sync and async APIs --- .../antora/modules/ROOT/images/MCP-layers.svg | 181 +++++++ .../images/spring-ai-mcp-uml-classdiagram.svg | 1 + .../src/main/antora/modules/ROOT/nav.adoc | 4 +- .../main/antora/modules/ROOT/pages/mcp.adoc | 488 ++++++++++++++++++ .../ROOT/pages/{index.adoc => overview.adoc} | 81 +-- .../pages/{index2.adoc => spring-mcp.adoc} | 13 - 6 files changed, 718 insertions(+), 50 deletions(-) create mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/MCP-layers.svg create mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg create mode 100644 mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc rename mcp-docs/src/main/antora/modules/ROOT/pages/{index.adoc => overview.adoc} (81%) rename mcp-docs/src/main/antora/modules/ROOT/pages/{index2.adoc => spring-mcp.adoc} (75%) diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/MCP-layers.svg b/mcp-docs/src/main/antora/modules/ROOT/images/MCP-layers.svg new file mode 100644 index 0000000..2f38d6a --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/images/MCP-layers.svg @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg new file mode 100644 index 0000000..9636008 --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg @@ -0,0 +1 @@ +McpTransportMono<Void> connect(Function<Mono<JSONRPCMessage>, Mono<JSONRPCMessage>> handler)Mono<Void> sendMessage(JSONRPCMessage message)void close()Mono<Void> closeGracefully()<T> T unmarshalFrom(Object data, TypeReference<T> typeRef)McpSession<T> Mono<T> sendRequest(String method, Object requestParams, TypeReference<T> typeRef)Mono<Void> sendNotification(String method, Map<String, Object> params)Mono<Void> closeGracefully()void close()DefaultMcpSessionMcpTransport transportObjectMapper objectMapperinterface RequestHandlerinterface NotificationHandlerMcpClientBuilder using(McpTransport transport)McpAsyncClient async(McpTransport transport)McpSyncClient sync(McpTransport transport)McpAsyncClientMono<InitializeResult> initialize()Mono<CallToolResult> callTool(CallToolRequest request)Mono<ListToolsResult> listTools()Mono<ListResourcesResult> listResources()Mono<ReadResourceResult> readResource(ReadResourceRequest request)Mono<ListResourceTemplatesResult> listResourceTemplates()Mono<ListPromptsResult> listPrompts()Mono<GetPromptResult> getPrompt(GetPromptRequest request)McpSyncClientInitializeResult initialize()CallToolResult callTool(CallToolRequest request)ListToolsResult listTools()ListResourcesResult listResources()ReadResourceResult readResource(ReadResourceRequest request)ListResourceTemplatesResult listResourceTemplates()ListPromptsResult listPrompts()GetPromptResult getPrompt(GetPromptRequest request)McpServerBuilder using(McpTransport transport)McpAsyncServerinterface ToolHandlerMono<Void> addTool(ToolHandler toolHandler)Mono<Void> removeTool(String toolName)Mono<Void> notifyToolsListChanged()Mono<Void> notifyResourcesListChanged()Mono<Void> notifyPromptsListChanged()McpSyncServervoid addTool(ToolHandler toolHandler)void removeTool(String toolName)void notifyToolsListChanged()void notifyResourcesListChanged()void notifyPromptsListChanged()McpAsyncServer getAsyncServer()StdioClientTransportProcess serverProcessServerParameters parametersSseClientTransportWebClient webClientStdioServerTransportSseServerTransportMcpSchemaclass ErrorCodesinterface Requestinterface JSONRPCMessageinterface ResourceContentsinterface Contentinterface ServerCapabilitiesJSONRPCMessage deserializeJsonRpcMessage()McpErrorint codeString messagecreatescreatescreatescreatesusesthrows \ No newline at end of file diff --git a/mcp-docs/src/main/antora/modules/ROOT/nav.adoc b/mcp-docs/src/main/antora/modules/ROOT/nav.adoc index b456e4a..2bc05df 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/nav.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/nav.adoc @@ -1,3 +1,5 @@ -* xref:index.adoc[Overview] +* xref:overview.adoc[Overview] +* xref:mcp.adoc[MCP Java SDK] +* xref:spring-mcp.adoc[Spring AI MCP] // ** xref:concepts.adoc[AI Concepts] // * xref:getting-started.adoc[Getting Started] diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc new file mode 100644 index 0000000..af7ca77 --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -0,0 +1,488 @@ += Java MCP SDK + +Java SDK implementation of the Model Context Protocol, enabling seamless integration with language models and AI tools. + +== Features + +* Synchronous and Asynchronous MCP Client and MCP Server implementations +* Standard MCP operations support: +** Protocol version compatibility negotiation +** Tool discovery, execution, list change notifications +** Resource management with URI templates +** Roots list management and notifications +** Prompt handling and management +** Smampling support for AI model interactions +* Multiple transport implementations: +** Stdio-based transport for process-based communication +** SSE-based transport for HTTP streaming + +=== Dependencies + +Add the following dependency to your Maven project: + +[source,xml] +---- + + org.springframework.experimental + mcp + 0.4.0-SNAPSHOT + +---- + +== Architecture + +The SDK follows a layered architecture with clear separation of concerns: + +image::MCP-layers.svg[width=400,align=center] + +* *Transport Layer (McpTransport)*: Handles JSON-RPC message serialization/deserialization via StdioTransport (stdin/stdout) and SseTransport (HTTP streaming). +* *Session Layer (McpSession)*: Manages communication patterns and state using DefaultMcpSession implementation. +* *Client/Server Layer*: Both use McpSession for sync/async operations, with McpClient handling client-side protocol operations and McpServer managing server-side protocol operations. + +Following class diagram illustrates the layered architecture of the MCP SDK, showing the relationships between core interfaces (McpTransport, McpSession), their implementations, and the client/server components. It highlights how the transport layer connects to sessions, which in turn support both synchronous and asynchronous client/server implementations. + +image::spring-ai-mcp-uml-classdiagram.svg[width=800] + +Key Interactions: + +* *Client/Server Initialization*: Transport setup, protocol compatibility check, capability negotiation, and implementation details exchange. +* *Message Flow*: JSON-RPC message handling with validation, type-safe response processing, and error handling. +* *Resource Management*: Resource discovery, URI template-based access, subscription system, and content retrieval. +* *Prompt System*: Discovery, parameter-based retrieval, change notifications, and content management. +* *Tool Execution*: Discovery, parameter validation, timeout-aware execution, and result processing. + +== MCP Client + +The MCP Client is a key component in the Model Context Protocol (MCP) architecture, responsible for establishing and managing connections with MCP servers. It implements the client-side of the protocol, handling: + +* Protocol version negotiation to ensure compatibility with servers +* Capability negotiation to determine available features +* Message transport and JSON-RPC communication +* Tool discovery and execution +* Resource access and management +* Prompt system interactions +* Optional features like roots management and sampling support + +The client provides both synchronous and asynchronous APIs for flexibility in different application contexts. + +[tabs] +====== +Sync API:: ++ +[source,java] +---- +// Create a sync client with custom configuration +McpSyncClient client = McpClient.using(transport) + .requestTimeout(Duration.ofSeconds(10)) + .capabilities(ClientCapabilities.builder() + .roots(true) // Enable roots capability + .sampling() // Enable sampling capability + .build()) + .sampling( request -> new CreateMessageResult(response)) + .sync(); + +// Initialize connection +client.initialize(); + +// List available tools +ListToolsResult tools = client.listTools(); + +// Call a tool +CallToolResult result = client.callTool( + new CallToolRequest("calculator", + Map.of("operation", "add", "a", 2, "b", 3)) +); + +// List and read resources +ListResourcesResult resources = client.listResources(); +ReadResourceResult resource = client.readResource( + new ReadResourceRequest("resource://uri") +); + +// List and use prompts +ListPromptsResult prompts = client.listPrompts(); +GetPromptResult prompt = client.getPrompt( + new GetPromptRequest("greeting", Map.of("name", "Spring")) +); + +// Add/remove roots +client.addRoot(new Root("file:///path", "description")); +client.removeRoot("file:///path"); + +// Close client +client.closeGracefully(); +---- + +Async API:: ++ +[source,java] +---- +// Create an async client with custom configuration +McpAsyncClient client = McpClient.using(transport) + .requestTimeout(Duration.ofSeconds(10)) + .capabilities(ClientCapabilities.builder() + .roots(true) // Enable roots capability + .sampling() // Enable sampling capability + .build()) + .sampling( request -> new CreateMessageResult(response)) + .toolsChangeConsumer(tools -> { + logger.info("Tools updated: {}", tools); + }) + .resourcesChangeConsumer(resources -> { + logger.info("Resources updated: {}", resources); + }) + .promptsChangeConsumer(prompts -> { + logger.info("Prompts updated: {}", prompts); + }) + .async(); + +// Initialize connection +client.initialize() + .flatMap(initResult -> { + // List available tools + return client.listTools(); + }) + .flatMap(tools -> { + // Call a tool + return client.callTool(new CallToolRequest( + "calculator", + Map.of("operation", "add", "a", 2, "b", 3) + )); + }) + .flatMap(result -> { + // List and read resources + return client.listResources() + .flatMap(resources -> + client.readResource(new ReadResourceRequest("resource://uri")) + ); + }) + .flatMap(resource -> { + // List and use prompts + return client.listPrompts() + .flatMap(prompts -> + client.getPrompt(new GetPromptRequest( + "greeting", + Map.of("name", "Spring") + )) + ); + }) + .flatMap(prompt -> { + // Add/remove roots + return client.addRoot(new Root("file:///path", "description")) + .then(client.removeRoot("file:///path")); + }) + .doFinally(signalType -> { + // Close client + client.closeGracefully().subscribe(); + }) + .subscribe(); +---- +====== + +=== Client Transport + +The transport layer handles the communication between MCP clients and servers, providing different implementations for various use cases. The client transport manages message serialization, connection establishment, and protocol-specific communication patterns. + +[tabs] +====== +STDIO:: ++ +[source,java] +---- +// Create transport for process-based communication +ServerParameters params = ServerParameters.builder("npx") + .args("-y", "@modelcontextprotocol/server-everything", "dir") + .build(); +McpTransport transport = new StdioClientTransport(params); +---- + +SSE:: ++ +[source,java] +---- +// Create transport for HTTP streaming +WebClient.Builder webClientBuilder = WebClient.builder() + .baseUrl("http://your-mcp-server"); +McpTransport transport = new SseClientTransport(webClientBuilder); +---- +====== + +=== Client Capabilities + +The client can be configured with various capabilities: + +[source,java] +---- +var capabilities = ClientCapabilities.builder() + .roots(true) // Enable filesystem roots support with list changes notifications + .sampling() // Enable LLM sampling support + .build(); +---- + +==== Roots Support + +Roots define the boundaries of where servers can operate within the filesystem: + +[source,java] +---- +// Add a root dynamically +client.addRoot(new Root("file:///path", "description")); + +// Remove a root +client.removeRoot("file:///path"); + +// Notify server of roots changes +client.rootsListChangedNotification(); +---- + +The roots capability allows servers to: + +* Request the list of accessible filesystem roots +* Receive notifications when the root list changes +* Understand which directories and files they have access to + +==== Sampling Support + +Sampling enables servers to request LLM interactions ("completions" or "generations") through the client: + +[source,java] +---- +// Configure sampling handler +Function samplingHandler = request -> { + // Sampling implementation that interfaces with LLM + return new CreateMessageResult(response); +}; + +// Create client with sampling support +var client = McpClient.using(transport) + .capabilities(ClientCapabilities.builder() + .sampling() + .build()) + .sampling(samplingHandler) + .build(); +---- + +This capability allows: + +* Servers to leverage AI capabilities without requiring API keys +* Clients to maintain control over model access and permissions +* Support for both text and image-based interactions +* Optional inclusion of MCP server context in prompts + +== MCP Server + +The MCP Server is a foundational component in the Model Context Protocol (MCP) architecture that provides tools, resources, and capabilities to clients. It implements the server-side of the protocol, responsible for: + +* Exposing tools that clients can discover and execute +* Managing resources with URI-based access patterns +* Providing prompt templates and handling prompt requests +* Supporting capability negotiation with clients +* Implementing server-side protocol operations +* Managing concurrent client connections +* Providing structured logging and notifications + +The server supports both synchronous and asynchronous APIs, allowing for flexible integration in different application contexts. It can expose various capabilities such as file system operations, AI model interactions, and custom tool implementations. + +[tabs] +====== +Sync API:: ++ +[source,java] +---- +// Create a server with custom configuration +McpSyncServer syncServer = McpServer.using(transport) + .info("my-server", "1.0.0") + .capabilities(ServerCapabilities.builder()...build()) + .tools(new CalculatorTool()) + .resources(resourceRegistration) + .prompts(promptRegistration) + .sync(); + +// Add a tool handler at runtime +syncServer.addTool(new CalculatorTool()); + +// Remove a tool handler at runtime +syncServer.removeTool("calculator"); + +// Add a resource at runtime +syncServer.addResource(resourceRegistration); + +// Remove a resource at runtime +syncServer.removeResource(resourceUri); + +// Add a prompt at runtime +syncServer.addPrompt(promptRegistration); + +// Remove a prompt at runtime +syncServer.removePrompt(promptName); + +// Graceful shutdown +syncServer.closeGracefully(); +---- + +Async API:: ++ +[source,java] +---- +// Create an async server with custom configuration +McpAsyncServer asyncServer = McpServer.using(transport) + .info("my-server", "1.0.0") + .capabilities(ServerCapabilities.builder()...build()) + .tools(new CalculatorTool()) + .resources(resourceRegistration) + .prompts(promptRegistration) + .async(); + +// Add a tool handler at runtime +asyncServer.addTool(new CalculatorTool()) + .doOnSuccess(v -> logger.info("Tool added")) + .subscribe(); + +// Remove a tool handler at runtime +asyncServer.removeTool("calculator") + .doOnSuccess(v -> logger.info("Tool removed")) + .subscribe(); + +// Add a resource at runtime +asyncServer.addResource(resourceRegistration) + .doOnSuccess(v -> logger.info("Resource added")) + .subscribe(); + +// Remove a resource at runtime +asyncServer.removeResource(resourceUri) + .doOnSuccess(v -> logger.info("Resource removed")) + .subscribe(); + +// Add a prompt at runtime +asyncServer.addPrompt(promptRegistration) + .doOnSuccess(v -> logger.info("Prompt added")) + .subscribe(); + +// Remove a prompt at runtime +asyncServer.removePrompt(promptName) + .doOnSuccess(v -> logger.info("Prompt removed")) + .subscribe(); + +// Notify clients of changes +asyncServer.notifyToolsListChanged().subscribe(); +asyncServer.notifyResourcesListChanged().subscribe(); +asyncServer.notifyPromptsListChanged().subscribe(); + +// Graceful shutdown +asyncServer.closeGracefully().subscribe(); +---- +====== + +=== Server Transport + +The server transport layer implements the server-side communication protocols, enabling reliable message exchange with MCP clients. It provides implementations for different communication patterns while ensuring proper message handling, connection management, and protocol compliance. + +[tabs] +====== +STDIO:: ++ +[source,java] +---- +// Create transport with custom ObjectMapper +ObjectMapper mapper = new ObjectMapper(); +StdioServerTransport transport = new StdioServerTransport(mapper); +---- ++ +Provides bidirectional JSON-RPC message handling over standard input/output streams with non-blocking message processing, serialization/deserialization, and graceful shutdown support. + +SSE:: ++ +[source,java] +---- +// Create SSE transport +ObjectMapper mapper = new ObjectMapper(); +String messageEndpoint = "/mcp/message"; +SseServerTransport transport = new SseServerTransport(mapper, messageEndpoint); + +// Get router function for web server configuration +RouterFunction router = transport.getRouterFunction(); +---- ++ +Implements the MCP HTTP with SSE transport specification, providing concurrent client connections through SSE endpoints with message routing, session management, and graceful shutdown capabilities. +====== + +=== Server Capabilities + +The server can be configured with various capabilities: + +[source,java] +---- +var capabilities = ServerCapabilities.builder() + .resources(false, true) // Resource support with list changes notifications + .tools(true) // Tool support with list changes notifications + .prompts(true) // Prompt support with list changes notifications + .logging() // Enable logging support (enabled by default with loging level INFO) + .build(); +---- + +==== Logging Support + +The server provides structured logging capabilities that allow sending log messages to clients with different severity levels: + +[source,java] +---- +// Send a log message to clients +server.loggingNotification(LoggingMessageNotification.builder() + .level(LoggingLevel.INFO) + .logger("custom-logger") + .data("Custom log message") + .build()); +---- + +Clients can control the minimum logging level they receive through the `mcpClient.setLoggingLevel(level)` request. Messages below the set level will be filtered out. +Supported logging levels (in order of increasing severity): DEBUG (0), INFO (1), NOTICE (2), WARNING (3), ERROR (4), CRITICAL (5), ALERT (6), EMERGENCY (7) + + +==== Tool Registration + +[source,java] +---- +var toolRegistration = new ToolRegistration( + new Tool("calculator", "Basic calculator", Map.of( + "operation", "string", + "a", "number", + "b", "number" + )), + arguments -> { + // Tool implementation + return new CallToolResult(result, false); + } +); +---- + +==== Resource Registration + +[source,java] +---- +var resourceRegistration = new ResourceRegistration( + new Resource("custom://resource", "name", "description", "mime-type", null), + request -> { + // Resource read implementation + return new ReadResourceResult(contents); + } +); +---- + +==== Prompt Registration + +[source,java] +---- +var promptRegistration = new PromptRegistration( + new Prompt("greeting", "description", List.of( + new PromptArgument("name", "description", true) + )), + request -> { + // Prompt implementation + return new GetPromptResult(description, messages); + } +); +---- + +== Error Handling + +The SDK provides comprehensive error handling through the McpError class, covering protocol compatibility, transport communication, JSON-RPC messaging, tool execution, resource management, prompt handling, timeouts, and connection issues. This unified error handling approach ensures consistent and reliable error management across both synchronous and asynchronous operations. diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/index.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc similarity index 81% rename from mcp-docs/src/main/antora/modules/ROOT/pages/index.adoc rename to mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index ff74be2..a45d2fd 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/index.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -12,16 +12,15 @@ image::spring-ai-mcp-architecture.jpg[Spring AI MCP Architecture,600] The project consists of two main modules: -=== mcp +=== xref:mcp.adoc[MCP Java SDK] Java implementation of the Model Context Protocol specification. It includes: * Synchronous and asynchronous link:https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#client-usage-examples[MCP Client] and link:https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#server-usage-examples[MCP Server] implementations * Standard MCP operations support (tool discovery, resource management, prompt handling, structured logging). Support for request and notification handling. * link:https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio[Stdio] and link:https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse[SSE] transport implementations. -* link:./mcp/README.md[Find more]. -=== spring-ai-mcp +=== xref:spring-mcp.adoc[Spring AI MCP] The Spring integration module provides Spring-specific functionality: @@ -29,16 +28,15 @@ The Spring integration module provides Spring-specific functionality: * Spring-friendly abstractions for MCP clients * Auto-configurations (WIP) -== Requirements - -* Java 17 or later -* Maven 3.6 or later -* Spring AI 1.0.0-M4 or later == Installation Add the following dependencies to your Maven project: +[tabs] +====== +Maven:: ++ [source,xml] ---- @@ -47,7 +45,10 @@ Add the following dependencies to your Maven project: mcp 0.4.0-SNAPSHOT - +---- ++ +[source,xml] +---- org.springframework.experimental @@ -55,8 +56,42 @@ Add the following dependencies to your Maven project: 0.4.0-SNAPSHOT ---- ++ +This is a milestone release. It is not available on Maven Central. Add this repository to your POM: ++ +[source,xml] +---- + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + +---- -== Example Demos +Gradle:: ++ +[source,groovy] +---- +dependencies { + implementation 'org.springframework.experimental:mcp' +} +---- +Or for Spring AI integration: ++ +[source,groovy] +---- +dependencies { + implementation 'org.springframework.experimental:spring-ai-mcp' +} +---- +====== + +== Examples Explore these MCP examples in the link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol[spring-ai-examples/model-context-protocol] repository: @@ -88,32 +123,6 @@ mvn clean install mvn test ---- -== Project Information - -* *Group ID*: org.springframework.experimental -* *Version*: 0.4.0-SNAPSHOT -* *Java Version*: 17 -* *Spring AI Version*: 1.0.0-M4 - -== Contributing - -This is an experimental Spring project. Contributions are welcome! Please: - -1. Fork the repository -2. Create a feature branch -3. Submit a Pull Request - -== Team - -* Christian Tzolov -* Dariusz Jędrzejczyk - -== Links - -* link:https://github.com/spring-projects-experimental/spring-ai-mcp[GitHub Repository] -* link:https://github.com/spring-projects-experimental/spring-ai-mcp/issues[Issue Tracker] -* link:https://github.com/spring-projects-experimental/spring-ai-mcp/actions[CI/CD] - == License This project is licensed under the link:LICENSE[Apache License 2.0]. diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/index2.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc similarity index 75% rename from mcp-docs/src/main/antora/modules/ROOT/pages/index2.adoc rename to mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc index 226a186..fb6ee50 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/index2.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc @@ -39,16 +39,3 @@ To use this module, add the following dependency to your Maven project: 0.4.0-SNAPSHOT ---- - -== License - -This project is licensed under the https://www.apache.org/licenses/LICENSE-2.0[Apache License 2.0]. - -== Links - -* https://github.com/spring-projects-experimental/spring-ai-mcp[GitHub Repository] -* https://github.com/spring-projects-experimental/spring-ai-mcp/issues[Issue Tracker] - -== Contributing - -This is an experimental Spring project. Contributions are welcome! Please refer to the main project's contribution guidelines. From 13bafbde7144671c00922c3e503ac0a7764c91f4 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 3 Jan 2025 13:34:24 +0100 Subject: [PATCH 023/505] Add deploy docs GH actions --- .github/workflows/deploy-docs.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/deploy-docs.yml diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml new file mode 100644 index 0000000..de69a21 --- /dev/null +++ b/.github/workflows/deploy-docs.yml @@ -0,0 +1,28 @@ +name: Deploy Docs +on: + workflow_dispatch: + push: + branches: [main, '[0-9].[0-9].x' ] + tags: ['v[0-9].[0-9].[0-9]', 'v[0-9].[0-9].[0-9]-*'] +permissions: + actions: write +jobs: + build: + runs-on: ubuntu-latest + if: github.repository_owner == 'spring-projects-experimental' + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: docs-build + fetch-depth: 1 + - name: Dispatch (partial build) + if: github.ref_type == 'branch' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: gh workflow run deploy-docs.yml -r $(git rev-parse --abbrev-ref HEAD) -f build-refname=${{ github.ref_name }} + - name: Dispatch (full build) + if: github.ref_type == 'tag' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: gh workflow run deploy-docs.yml -r $(git rev-parse --abbrev-ref HEAD) \ No newline at end of file From c469f790b381dc5f53e4f816f5651371212ee8e1 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 3 Jan 2025 15:48:30 +0100 Subject: [PATCH 024/505] refactor: Improve MCP documentation and transport interfaces - Add ClientMcpTransport and ServerMcpTransport marker interfaces - Update client/server implementations to use appropriate transport interfaces - Reorganize documentation structure and improve content clarity - Move documentation images to mcp-docs/antora directory - Update README files with links to online documentation Resolves #44 --- README.md | 49 +- docs/MCP-layers.svg | 181 ------- docs/spring-ai-mcp-architecture.jpg | Bin 753882 -> 0 bytes docs/spring-ai-mcp-uml-classdiagram.svg | 1 - .../modules/ROOT/images/class-diagrams.puml | 267 +++++++++++ .../images/spring-ai-mcp-uml-classdiagram.svg | 2 +- .../main/antora/modules/ROOT/pages/mcp.adoc | 2 +- .../antora/modules/ROOT/pages/overview.adoc | 14 +- mcp/README.md | 441 +----------------- .../ai/mcp/client/McpAsyncClient.java | 3 +- .../ai/mcp/client/McpClient.java | 7 +- .../client/transport/SseClientTransport.java | 4 +- .../transport/StdioClientTransport.java | 4 +- .../ai/mcp/server/McpAsyncServer.java | 6 +- .../ai/mcp/server/McpServer.java | 7 +- .../server/transport/SseServerTransport.java | 4 +- .../transport/StdioServerTransport.java | 4 +- .../ai/mcp/spec/ClientMcpTransport.java | 25 + .../ai/mcp/spec/ServerMcpTransport.java | 25 + .../ai/mcp/MockMcpTransport.java | 5 +- .../client/AbstractMcpAsyncClientTests.java | 5 +- .../client/AbstractMcpSyncClientTests.java | 6 +- .../ai/mcp/client/McpAsyncClientTests.java | 4 +- .../ai/mcp/client/McpSyncClientTests.java | 4 +- .../ai/mcp/client/SseMcpAsyncClientTests.java | 4 +- .../ai/mcp/client/SseMcpSyncClientTests.java | 4 +- .../server/AbstractMcpAsyncServerTests.java | 3 +- .../server/AbstractMcpSyncServerTests.java | 5 +- .../ai/mcp/server/SseMcpAsyncServerTests.java | 4 +- .../ai/mcp/server/SseMcpSyncServerTests.java | 4 +- .../mcp/server/StdioMcpAsyncServerTests.java | 4 +- .../mcp/server/StdioMcpSyncServerTests.java | 4 +- .../ai/mcp/sample/client/SampleClient.java | 5 +- .../ai/mcp/sample/server/McpServerConfig.java | 4 +- spring-ai-mcp/README.md | 46 +- 35 files changed, 407 insertions(+), 750 deletions(-) delete mode 100644 docs/MCP-layers.svg delete mode 100644 docs/spring-ai-mcp-architecture.jpg delete mode 100644 docs/spring-ai-mcp-uml-classdiagram.svg create mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml create mode 100644 mcp/src/main/java/org/springframework/ai/mcp/spec/ClientMcpTransport.java create mode 100644 mcp/src/main/java/org/springframework/ai/mcp/spec/ServerMcpTransport.java diff --git a/README.md b/README.md index a6b72e5..0d36311 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,13 @@ # Java & Spring MCP -Java SDK for the Model Context Protocol (MCP), providing seamless integration between Java and Spring applications and MCP-compliant AI resources and tools. +Set of projects that provide Java SDK and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). +It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. -## Overview + -Provides Java and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. +## Projects - - -## Modules - -The project consists of two main modules: - -### [mcp](./mcp/README.md) +### [MCP Java SDK](https://docs.spring.io/spring-ai-mcp/reference/mcp.html) Java implementation of the Model Context Protocol specification. It includes: - Synchronous and asynchronous [MCP Client](https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#client-usage-examples) and [MCP Server](https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#server-usage-examples) implementations @@ -20,18 +15,13 @@ Java implementation of the Model Context Protocol specification. It includes: - [Stdio](https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio) and [SSE](https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse) transport implementations. - [Find more](./mcp/README.md). -### [spring-ai-mcp](./spring-ai-mcp/README.md) +### [Spring AI MCP](https://docs.spring.io/spring-ai-mcp/reference/spring-mcp.html) The Spring integration module provides Spring-specific functionality: - Integration with Spring AI's function calling system - Spring-friendly abstractions for MCP clients - Auto-configurations (WIP) -## Requirements - -- Java 17 or later -- Maven 3.6 or later -- Spring AI 1.0.0-M4 or later ## Installation @@ -53,6 +43,23 @@ Add the following dependencies to your Maven project: ``` +This is a milestone release, not available on Maven Central. +Add this repository to your POM: + +```xml + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + +``` + + ## Example Demos Explore these MCP examples in the [spring-ai-examples/model-context-protocol](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol) repository: @@ -71,24 +78,18 @@ Explore these MCP examples in the [spring-ai-examples/model-context-protocol](ht ## Development -### Building from Source +- Building from Source ```bash mvn clean install ``` -### Running Tests +- Running Tests ```bash mvn test ``` -## Project Information - -- **Group ID**: org.springframework.experimental -- **Version**: 0.4.0-SNAPSHOT -- **Java Version**: 17 -- **Spring AI Version**: 1.0.0-M4 ## Contributing diff --git a/docs/MCP-layers.svg b/docs/MCP-layers.svg deleted file mode 100644 index 2f38d6a..0000000 --- a/docs/MCP-layers.svg +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/spring-ai-mcp-architecture.jpg b/docs/spring-ai-mcp-architecture.jpg deleted file mode 100644 index 7463b847256e5ffd25bd93f5216070ea4ab67a0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 753882 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:p1i{1GmV{2_*N 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%0AC5Q%TxdBm@fxiO1SS4yyX!=?T!@xWtc3lQA~5 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 z zDUP{wI{mF=$Qs!XW&K-MDt*ykAwHkwLV6tHHo+LCEeccI#?B&C_&)}W$t_mf3)?Y6 zoza5vDs}zPz-20wWz8!z+E&w#Hgp^wmjA>RUCON{wxNcbjRy`hE6YxX>OG~|wl&!h z==Er<-D4GJ(zM&_kWSt7JgE=0>Z^7A766c8q0l_k2w>)8c{5o1M87N!r)ZaV)2h)U z>iw{V&EvbHcvMDVjR1-rlM2iZ)$_Yh3v{9-C!kKu5}6)UE>LT_3Zt-+Z zj*sn4|LG8Fq9FmYjDiNrTRX6z79uQ*-mq5bZfH1jZ(dnDO0VQUI9!>P;^ok&mZqG*>hnLLdN8s*W2i2q-44J55-;Anhe*-dx zh+*Kw9|3~|8#lYHf=(%HPs64ge(ijVqz>8;sYz+T;2^-=G!YEc4c!@E4F}EEo7tvL z@ybt0SpYJ$*DK%;wC#nS~5L5WGMk3)lsnNA~AHfc5s*mS@Qb`1CG(uUQTw{*eyKW z_WgLyQB#24ivV2QOhR<(Xi~Vs6kaF=Phe? zFXVJ1MMe<({UJwysTe%C>iP=GzOxwc!{FL;lBjjG(#@^)X>v)c+TTgs8m5k}VhLv$8 z`Y1WFYvFXnMX8tc2k*=v>wGVF7;V*EZ6y1s(Px+KgCavCQ7hE!{$WRU+C7{g=92+{ z@h7_6L%Gta;ewSTJHuXnj%-|$dv;FWHE?sSuxhNTINBtlF8fXPfiDzPhh5_n!*~wT ziLA=6K<7i6PM@Aw>=P$)Q$lsL-H)3a{5f~rqG6K(g)Z@t36pGLs2*d}49->39OP_x z+kN2&SXjr$5y|lnl>RfyZaIBYPNHR8Y;=tLyY-_IVkBy|EK!TiI=Nc6m#vl~di`XG z-8#ADA>sHCovY6_FOK!XW#Ti3ZXwjD6W-~46G>ve^NBax_=h#{jXLghg!O7-5ZT$HlX5K7 zH8r8WVI1SK6z$lZ7G8!fSDK?=@C`aSN2y8kas#HEfv%THA9&A*TK48&EzD^6VRg@VXDy|)^+u`DWem}~1hr}TbK}&C*O+Aw zIdGZ6cD=v*m8zS-xbRkX0yI^%-)YDOZ*raFV&gx5Fj*my<>kbSieBtm>2gG@E67Xw zs|*QiuH_fp;?j%WNllNgk~F%lpIYY`fon7!+=4DIlzdPzG}40}z%{sqL^Cf&SiO|EU-8m^20fJvK%E=*=usSf0Y|7K+#_HtoufL|cKLKO}1^UGE^trU@;0 zrzGo<}+xJ8bVfjg}W8cQ)K3TKC4dyr|f4qL5L*zL@0S;)LTbcmt$ zkf0G%Y{mKvT=L{z%l^1L%5M-B8^E$U5 z!G~Z$k#gHpuHbUFJW*WyLY!jy$|NS9TzTD*(uWBe6gKB?582ai#6~PuS?!~sbDhJ_m#!2F z+nWj7VZ0@X7@8k|FRRp+A3g0=WCK^xaCtZSMNv!hj_PPPNWB*eNnPPKNF zm(%;O4W_^vI#*hK*vCBBTSvnMr+d*`r%&242L5HT^IK`*H=oRdz5z~*>8y}_h(NA* z+uN)i@SqjG@$aW`IaSM8Ir-Em3{u(scrrBDCa56oTd2x+9tzh(BU@_|ea0P_)%)k0 zV5-fn);m32`?F(>-_c6tE)8;0K9ruBH}i|DsltBtd}&8J|LI6 zySsN#k;gB%6DU+w$CiKvJxFA5`l{wu=VF#DFxzvFtLfAo5&wf)oM zv1fB&9s6Zv&8+#ejs2S+J|_GN(f@nkf7x;k0irHZ6TLD0^z){6AquHhdT5b=YVFA- zT_A9aWKTQi_qC#YtUG3Bl@;8n*{LjL&UqYJm10W4&zZDuedk%|n0IVRy%QcSe-n0i z3CJQ`kqjC*9ccp(%#K8+Wg1*)IO>dDfib@Ggcs0li-L+EpQsi=(nxXtq$$V~7seMC8j!Go8S~+%?OY^^lLF4z7p@J^T}@q!%PLv$a4XBs z$aoFr#PEfpm#KHeYX^kniZmEr$k3zQd0=ws{O474`$~J*3T{ONw)e-QsTTix?wi(g zlOXvbn?j?)Ul&BsWN}F^)osTP>`JF)v#PUVX62PLD#GqP$C4@HUcC;t>{fJF6LTF) zp<7-91QqGuPhYFhIRDT!USo~X0T3Etp=RTBU1cinewd&xl|sOqcmwH!eFp$A$cPEH zuj*%gE+$S2R<Uuu@Mm2bUXQ8hWag|Fyv3=p` z8bWasdWsQ7BV;*wvLtL9=(HqGPz@5)yZNxc)P^kA`oVXY+tC%uvN9jBK$F$Uq(h0Q z+;T_x-ump;OnD(GaYU(#*~Pq=Tz8MTzC*+89(4P4E`@=_5-y*9^@CMh15A1YPWeFg z@XYgst$Izjfq8g_j{eIn^xqti!t>R`GW_eS%2ka_E~WP!k&=bJ^UUInR~Ie9Q$dE! z?OG_~gfbQ1^BGwayj8gx?*$bOd$Om6u%^V1g~dfBxvQVOhH@*kMY?aiMN>2x8Ef_5 zd;xa_Hf~ktIU0^G;+aE;UkQV>QCsMdM5sNhc3WY4t)EO{Ou<7*5HPuYRz{T;`%<(= z4(r=yp}QPkJ?ar+nG=Ll6x0=AHK93r3Bl*PV~&0emkr1o(W;z@2`*J)ML&*!6Dbi%IA! zmX??An5EBDLsfe5{ds3s{RW*PmEQ3D_CL_E^xwP;|1X98-^mwd6<|dJxBX+izrETS z3D%-14}As2sp1+5#(ou2?8z~0-m5rCL-SFBPVM%l?(|dBvj5nB_o!zbg-8#Njon^o zigKgDjqZOQCnhN9Z1xIp+rESv@>c}2Vt!Oppq6Ng3=0Ldd5aw+gzAb;?E-1}9vzEf zgSL^GgM$(qkh*E2mL@9de0{0Lj`Gw_VyN`ia>bRKxJy~l#j4oUAMX#;A`(_>wRr&` zQ!W0oG?b;UV|fi|$vf{wE`9Q$zrd<}LuGNAI_kYDKJVcetecOW=$#ySn@DWR=~bku z$&cOCFLQj6|C;`RsSq6T2sH1oX**Rs>S^Ek3%9+nFkNb z+n5@qeZ#E}E@|kB>vXy=wVPQDimSAZum2}6SU+``V7pHs75*?|CSs;oZs6AZjFvyr z-V>Y{d;P(YBP%Fbh)q}edY*B>wT;4X3&eJ?)IB_jSV)YgriA~RcaCmcjOiKcIG_?2 z$pKv37YIaGq4k`l^NX@ePG_tMnv%ydNKwY(lr#Uec_hl&ppbzI7>aKT|BlhLT_o}oNN%5VRquH zXc5nC>%ZX#Yxjl~a7{VvG{q~v^Na$$$AA_aeD?+_eHIrNDHNqXQYK!;CX++x&-yUY zxmn)ep`tRO*elx{Le{xaBi)BK%TXUd!xM@swW+|v6cp&>cI0?aLGg=~CHUO>5X0dX zn}F^0u98dv|kN8>k3tzWe||3vE{Lhj(j?|713WgUl_i_oZ)&&qPA`RLayA z$Q}uU=G&&I<%=Kk_iCC}yJYupC` z!(MoO<#p{~s%Cb&Zfg>;_Ff$F_H5ZRs*OjCWHCNa+^;SmIB2>7?2u#nbwIT`&1NHE zP|dPJSSw^t!>(ErIXzVTrtx}eL9qvxwDaL2tF#C|OnkQB>wa&4t5^7=)wh@1%ZwXi zu?J-=|FkT&9MQm*7UTEfX6z-Ysf6>7?IaplZ=NbqKnXffmec-Rmp8=QKJp7`bx{D0e zmZvq^uJ8Jkl3UjlSgbn)ykNrXQd^kxzUc@A=wprBh5$d}{N-z`AEa&6R6z-v0a60z zo6{WQTHhkQ9FIEg+N`azcqtOPJ}wg2u_y9Tt5{q$JPY@oXGrg8TH=CvdtHRL+HzL@ z)J^AwD$Cl42ThA**Y5e2J@Cz6mRj$WN zopsfCGSLEDnShVa>4_&z0G>geG-OVCIHn^I$jJb-7}_4|TLRf?cnNgfqCM#YIjUUhyx0~aKIh}u0@(BS%ZO6KhX zT_BD%#9Jq(gLGsEU{6DjJ>dD=LaEul0fye~5HIIV?I z3bjchCTdn!bYPNDb_>V&S}^^=j{^!!1&>ku!A-=vWwxv3?fe7;2WpqQVUf@kT@fC& z4IA4t?hDpXzID{TaM*6|G$^6+e*RGKqt<|(&YEe*VO8`Oo*$;)sH+tWXF2B1UTCx( zvnsU|BJUyipw@sQA`}iF_1DoP<0)JM3MnETy#9%Ez!4CJKz^d@d3-Lbj!TvU)t;9d zH6-WvJdq-o?UIE#zfPsnj$bH|t3t6A2ZexB|BHlRxbc*~SsH&+0Hfq_Xc{1=z~%P zpo=0%t^KyQ@5QeD+OEj9;MBlS5o3~T(I5a~g5^HitA+%6;u>P*%}W$DffA}wkVTgC z8C-Tm!cPw*B!P=|J%9V8C^ft`9y)uNlk`VPuEG2x(c<)BsP#TI%4;$2O2`aSNon!h ze5d&Kp8B@=Pj5MAEYy9ore83?MrDu#{MR5|%OSaU`72_Yz=R(rWdovx`ZAq^O857~ zQu`08LtTjIt>o-pPNZZAm$qXB*zI@%l(p3|(@P>fk}~XMN>C8;zBiJThc&rM4npQ| zW&XTO?<#~kKxZnb2ZOKdumpK+jR$V_o8rz<*Q<8$32*m6)A2B+`1ph}wPYwi|HIwP zx>rk(#R_vKXHep(YD;cQ>Ds3qyjwkFwG6q zP@E1JTpQ?2^*XU(2%S&+r58=}j5r;r@cuqKI5M?r;-*|7ys^Y7Y}p{)U6{$$iX3>s z8jMd!kqC9`*2Dkcj4s&IrI}w`le3=0$dy}&MpF4hWo5|}Z{(ChDlG*ru1zZP9Rz<- z@PG1vbpOdPsYziV=LOy=)2{E+3C$I;z9t;?Zw8pzP=BQN!TS>zwNrCbtzCMZh0Y#pRI>&m5Q2#eLLdbq`&?<0Q-N^GWMTz&iPbWhvURczAwmuf`0ho zcOK7~eYtNFKC}P$jatRkk4D)#6*J1G|OXTK{ z>mNE_N4v#v#P@QvAxwi5>q>83LP_%dHj5XjqvAb3^9%_XnDXln#0EqfE#N65)~Rct zwK8bP;Km)yHbNS+R45=P^m&YyaNV$+gTRAYv_PvK>A^5L=zXG)bLdr@V}<50_lzlM ze(BKlEoV#`neq!RGCeo#Ykx~iWlgbC>V8>!m&tehXR{^r4T6}L@l(qI zH*kZwbB4#)1+x?tQPx2bqUq(F2^9j!!1Y@<$W_(K2wl*(<&_QBLppqJsY|=l5%RXh zd8n)w%&T39w9O;$!XM;8vyca6uYv?jXQ%J#1XhSl`1^2AF>3UMekUmYbNPrd6C_73 zu#s#gwU0*Dduyf!RWS5NfQ{rI3nCy@la2)$r`6e6X4xpGx#MVLxedw=VTr!PP2*_< z-Z$*-YzjVqR)c|*k}H{HXuBxqwdccn;h2(51*>79xj%SXpSI$BDVt+Me5}JEilV1s z)tXzF`gmK~BspvrOCYE5kI8SsK3U>;}~&Y|iHE$AvDWlOQghLm-b0 z;(A6n@vks4Yy6Kea_8)B)5tj+l(~(*WMiD=6%DV-p;dUoM-?5*kaSTTw;FABxML0I za=+R~X5p@}O``3f<1m3zuh$M$al-Si50U#CVEy3eK4`SRbOS))rWRU&vgKuR^@aK4_R>IUiKO9JDHqAL%0-DM`QQC!uZoo{h?saMJIU z!>>R2kZXlvz`A|ta3vlynp8KiixYjqp1(N%C?|R2{ZXt@%AMT0qA}MTXpHysM9)0p zIDEkai{5A-pkE*sywCKv4vSZ=)R6bv^62+&s_<`-`&>1@dGfK<1xkf?$hF8mWVITP zGrYR$szrW|R;ExtYlg9;**o$HJBD#~M##RPAoK&+T_6v&J!wuZvF+pJD`XDJIRG`OYgm zO=6>u$JqIQ$fI4sW>oY}>W9vJyLd>_+!k{+UvuR{GiOr_ZCtIm_F7CxF+4mqNkOjI zQ4CV)@W8o5wJI}fQrmgQJsf;p=jh;ozCjQus=1rfSgHQP|E)s!qAtv^oR3Bx=vmRP z*r(5y#Z}GT_r5maY(!+{Neu%ju_h;UGX~?iu!pv;1Y-lHUx%KXG!_Wok1w4QS*Ebe z_%#sg4u*PsD1zzWv$o5MfyY>_eLB_sPZkjq#$;-%nRBRUWmv1!Fny0gXJ6})PgnVY zH}dZWFQrVz%VqfdTp)?H<9M-5Ks;g75>}Ql$m0p z*&3Vu2XfVuW7G5p506z2exrJXbHteSS03GOByR}&uT;!$0H~Ik?{jdb$d+E)9P(4O z;LaAOnAlUQVBViB0VfITpU-%+=~=Ffn}zjwhL4c=9XRS+>W;iGx&w}5^2J}upE>WL z@X@J;(#^AQZ{0hYK*c(&?MA*wFLg#^(6w<%;x=FYBgh;X#d%q+S*l*Uk9 zjh5!f}7{RV0}J+ zFY01uOT4jnw{(7N)rG#idh}Dz98IyHEg;aM*>G%+(1zrCUPv1=wgUA$p|1)L(ku_s zh@^!k_II6CuWCl}ou6*#t${0sW+OmzIabeo6uErM4j>i#8AK2P^ATlpT-IX0+35Kf zaA5DUi=XmwwZkpS(rEPu%?UgQ{bGZ28!M9RIPc}Z;;B_NyduESpZQ@d!<7kqmT?3g2wa3#Hh3#k4YCSyJG>i787k1j4&VM$))=qEag*Yxc$1 zT)0BHIB;RX-&-{bp*~t6=IpDi_9g8_b49R=dMg4hLLA6kY9QHc#WtG zXB#btVPm~atguv%3g}?4K-1s=e<(F*Q?}aZy)q7O=HRGb>=83MC@eVdPADM)-^!i~ zf1w|$U~GKH#!$5p;b;T;j{udh|UEmJeZx524#KfnLGYVsh3ZP>!d-YKbK zS;d~QJZBB*+?TDOG3)u5P~2r>o1t|!U?nnNvYkmY@6n@1SUUikF{#4BDR`HPo8}AH zTgRo*N5xEjkG-v;?{MNV(siedtD=ASsW7d-V8 zjuO9B12kk2Sg!h)#O&{k#CGBD$5?CVKAAH=|KJr)7|R?2?)3I2z1jR&_S>0e?tgjY z-yF}MO}jbpa$A?R@|u-u;%YRb#N(R%GPztHMO46a)JG&~k!(C+pb^`ScFKF8B>@iAzH+b7I#!1tkKqj`m;XhC;s%$vYQ0v8c3Mkj`}Je{r<3b_ z1tR=gg)16-d%dp}wYx|*5TgbVXpS4CIb**$AFxI;Y3rAu<$qB&nuF(*eIdt<3d2C! zi@9l~+W-gQKUv;@RYJ%c7zg(m@uCy){I%j2dO#iLXg4ast55*)Jnws+4O75oXu3ko zf?bI_E~M5*Q1Mi1LP%`6cLmNbw;1hM;zFq&cZ@QRr4R2vYX81a5X!UmFa>cHvV3$i zlp1YW8V8?jh(l=Ha(J$w3hSi|gxlQT5qDnzP&-N|ABbsSoablb3R4*zVywP8>6D2^ zb{`s(klp9k8My$IN=7r%1j5hRTa>)7-E3?JBHSI}fAEea-|632`)`*&)!J#fPd)gf zHg0+q0{FUzdKwaBpac6wwu>8Vy!3S((lP!wU{qI9xT81V<%&MKlv*cP^tLEyLb-)3O8i%eiaJ z7@q<_5Vep!E@C8F(1;GUk@BCAt!#0_2ht9-&LW8wi%8Keyy8IC7 zO0#Iqu6;GaZq-cJmPPr)AOE&Z|9pL373aRfG81Ng^uxUoPB()$@J_j{?u#qV-|8Vuul29{amS`^45pclaZ0w4GI6R&9Z#i9{Rje zF~6)z+eOy;T&6=82kf-ZT%tnE126fEmX5dxXL}@{ztuf2MaWPyeT0R3eEm9}O2vqJ z?ReU4TcxJ@<`S~G0;?XDIT2cXf;hS&D{5Zow##5p>!7`B&N5da9WY0#3&yQTI0mSV zy^Ut$A06tmd5Qd;rI=r3l+|TcZ`D@6DY0O^4{A$s7t#rrto_R zgYN8Nozrwhimq-3&rzLdc@*vhk+sS^e%fCkEVRS`Xw55A7w|BB0~c<-)uIh1DWBvI zlVc^ozCqzmF_=%fDI-Iq`n>9^9kyTQ;e-c|UKNT6OouPx3SKQoM^n6JQdbCpRK}uki+JZSqRbiQ4D*U7%u4Jl5GgRz-Wy zU2{RYz&{CBpdS7O_lkJR+XP6TI~K~F>ai3B?iUfsx#(*nr)gTd^9DA09@ zop)!ct`$S3#@&`3^!hw3ab<9A(78D|D5T6JPw0JiXb*vV`nfC`!Q$TGC!8B62*O{;(GNw!yo=wlC>CCP^NW*H$+CEAG664t`Z+RGvP^Zc&_L6` z)Ow=wVWW%z`*fsEq;z!kbmfn_E!P-!S{^MgV4DI>sqBIyIZzkd)8BNreQ$2^H4Zby zeH2*esm!(rR54ieA)c}xyNIq*u|A9GczwqkaN{y~O(R@Ze$#>2p)5a%p3u{;a=3iI z_)iu^xu7u}`*uCkCA!F!6{x|jcjE6xV@#;y{XBz|TDUwMCj5;p(b1$HGPv5y+1tX- zE^zGx4u!42UY@~RV_{iwz2RhQi0D%ZIE$C|^6)>>`85Q&>?=S_?Rq=hwAalJ#KLA@ zy={Y`i1y`rdIp?LA5S>sJ3kgFIES74R{DvL)yd}d`mFx_ep7aud2oye(^zBh?rU9y zutX)N!KVqWxUfU&jzrvNM*Hk(-N&D4?pJ7bfePY_PHPc0un&^;!{?QDo}bNX=GmV@ zYF6z+oS{%v5VQ8|EpIa!Ac~uX>kkROG&U~8uxVQr>p}Trc(u!EWMW>wwc6!#w?A8$ z=5x0LeW`Raha@9%?t;hjV$|hq0+W)|6}I|*;f)Qf5mHSChIXFC)mQqjv00Ly`i;;t zj9jjX2|CS4m7=^5WT1!fMFbcqDJ|Bb~P>F-u^{llTsIti%i37`p#rpVH=K zRYU3^$rqhW6vhcZ`70+g)-x0+C=IVykO;b2IDhLswUqoMH}BV7;@j_OvV}ZN8!BAx zi+!35IHL4}%1^Y;>rK39atFH}qyB>?ri*lW4bDIWs=Peoe=T)t#MI%_ZEN;f8gAH(rq<4+%`b-forc0@*r`%1*x}`PsYJxM;pcm@O%JKMA;88Y)6q3-S|gPlK#lPAgjvD8jne0{Zci4j*Iycdb|aUbhP`T>*=Tm?Hjj0He(r`p{48##PTEpEmrJ&vRH-U)}SN*$;j z|Gqd>(XsC^_}*49k(q_*7++CO>Zz@~FWau|qQPfYtvgBpEHx)by}VZ(N)O2{93qO7 zVugfMZtwp!#_|~5FC^=llr6%h8$aDR5TUJHaeq8C!s(t>xRgzpf5OCiRp)@1x`j$v z;%oD^{qEe4NJyXsmaw4cWvE;Q z$0I!kUbVfkY4bp3IgN%TXYiyKsyBa43GWwJx3w!pFR-eemA0}h08f{y>xi2!0?%z9ATi!=lGA_iI5 zTtq-4dyY4P3|x%J9x2#1!==yEorC|gl{3VJY!&L72KSGL1-sAOrj`%M049FecotIK zNx?Bjy(es?m08@GbSJ}FW({eA|2@+WaD)D*(?zez?pKP)WxbXe(QlZJWbP>wQKY+& zVbue6Zd8tN4?L@Zbw&o)8`E9v#Bd0(Q0SxOX=-7q+J>g1*Z8`LxY}}%`K-<8WCxc8;FRg+f|5( z4KDStg7UsLW4OYMX)9QmvEhaPi=yDKaP7brc}vRT-o6BRjx0nVPbG(iXZS{4$B=V- ztXcR5U$UIvyV477XDTS@Ce?h^JoaSF^Pk9Z=K zkMQ6A%18*FP|fud^4;KIFDRKjLVy)BUDCNHrc`btULm}N+g$XID>+v>*!xDf*P*qr zeCazQpY2n>o4pnMwbW=Zml~W?y4c+bI*lLAPTinGo`@a=*G&7TmF4UB(ke#9dK1Xh z+<={jn%zKu2HZoRf8onTC9`wfXQ%goR2?u)|N~m7keT~bs-*_#nVdN(e$Z{NYYr%gaYMQRP(g1;B_T? z+@vggU$@^OWv zXN|2_wO@}(x?dLP$;j0Q)h@(Y)seICBK7{2)G%I3skhp>#2!R zJ8NLjk{{OR_b1C4K1KSdi+Y7aeY*a&oBAAV@Wlo&`{(HC9^leczyyPMfPBd^-k>U3 z(kc11<#>1`#BADbSoBlFAi9JY;?>$uqcVyLnY4unkR}5N8^ER61IOsjKRBG%WZ`o4 z9K6k%H4Pnd`FHZ`hc#4+O}>oEM7tHQ8EVHoYKi@ZZvdTDe(m6|R#?Mnqp`xoEib^R6 zK9le)S(=}FB-*u`>L=tC&Njr+6=Z*`I289Ycq%|JCN*^ zYad~f@HEB1h>|Y!{%<_nV$VnAex{8)nH%`FA5t2wx>$g}t}W)<1-rc@c!XNA@y|FQ zmv_1^lPR5K(&5GA0Fg)$)izF$>|$6HkqZI$N2ep3jO}dgtfxoQlXy~l-d27PH$DX! zKw7s=zh@pTPE?ZaGT~zbQ5Cm0=hf|Jszz!w!sRZVEK!>>5=tN)i}o+Z-WK?GGi$@B zD6%$;^H~T!n*p~zr>sWDnGZj@?KiMUR2xg zs=2!nsQ@EgLwzYcWr*oJa{CtGPf|s^tQw7GxTJlZ9vmQL z5&%Qgen7eat0X$LLnj*v$z^y$e|AM@QRwbuF-ozZ?nL3)mJw~cNcVvm)#2^^3N(>8 zSDFAlR4i4uRW_;C4gO<{$t#zWDI+tz*m{?8{&hMgJz?P1h`}9g{!K=EH<-iEdvDWC zyW@K^znj)zmX%SH5Ri(t4-0P(OMi3BvJm^v_WMr`HygXT8i5B7rsz|?cVO=ehh}1V zPWVeUupfdKFhT~q7dI@-lIo0H0BgRfaEI5V>(kPP!JsZa)bSHO;TdaJGU-_q#yc&q z5k4%P+ou^?Av}0)28923YF)3tVCw8~5lzs_B5T7hkMCzEr6|q>KTprl`H}r@kb-U( z2;EEss}jmW5h1URIgVb;4fC_(~0Go>p#=ZYw*a*@wP*?RzJmv9-kkxwer20>>}&G z27|r}u}53jfF9&0ikn1R4bEcC7+@wv)9b9vp#>NMNiOTtYiJg2F>2RrirsM?=P$D0 zV?D=HpLn?Fl=zhotgGJ$e=>u%52qwBvr^{ls|pS`cp`XCt!e+tr`iKEmvFK#pHo)4 zT>=!mK+BE9=T@!zCs5H|@UMYkv>zS9#^gLE8oCJ_U(YBduAS*xXcw!dO zwvpd~=>~JdGLCo+*9?j~YDnMW<~!bYjgR$TM9KkAE7?s+!N@Di?fjh`Kgc_m_#8PI z^iE2;seOH)0i2YB7TW6eK$r88YwR5A;cyIuT~zg<2Id}`8V>Pq=i@qyNsfAI|03}{ zGcb=<=#xPD&KG9a&|aBZt~UcK>=YVYBq)bg5o0PlOV{3xC`ua~!d5P~{4RHk#p*Cq z;bN1a|FBkSj{>eRwnqLmmEAk_sQYSU%azWSs)?Zpu4khXWRa|3@z0Jm!*+fk;TR=) zK{w5+n+swz%iIJ8n>MMs z#2O3Yt$5Rx$yMyC3(L=>DBGd-t96~r?aHAR4L%X9{Ti%+rN9KMG6)^&*^W)4zKX^S zpL$LhQV>x&C}`41dqD@K%yLu{lYgwDGU7a%>aoI39zvETd{wl^%lR>BR zdVhXBJ~OVq3e5DCi3H4)O^tTd(><}uH@OtEQ}}z7ePbg1veT+(LE;&Li%#=Wj#rX6 ztX5d58_wI!x>xAVmiq~aIIzDTfE4(oS8e}syBWTujH4gkZ7#{ThBH}~#|r2jNJr{e zdEdxR($p3z2Qm!^2QE3zD&G*DwOE~=cQ!cJ5vRt^(Sujq=;d3^9c29WJR|fpV47cB zEy%!fC2ioB_u0Figsk_=N5bJzm^&l{V0oT+!ryTERJa$(o||Mex1(3O4#!bgy*!gA zGmJ7WKBc=$_tu0m3)%UL3Q@O03w$F&qz;Tmo79<0*alo0X1gFuNoPN0F6L4lSSgF- zxJV}F**oOqQ}b{c8RsNp+a$Uptsp>za$7CCD%!?&s948ziV(|{VY3s*779HY4Ft zV8is@K8oo$;)6uT$PmA@w$7&De~h72)AyqRjSmI3Al&9gi)8Ks-Uu>(7?^!=|im z5>Tr!MlFBP=|fG;Hl$A;p)4`m*!;w{k53&rQLdZn;{_Zr*d}Lch%F`X{vP2_Wg^oj zJ0|J+*sg& z(2dKMlDI}+#oxDBQ4dO0#saDlg%P@oA$tAL-xyEE@}04s*x95M-iJ9gE8VI}p1t2%86$LfH7%WAOtWkQdgkzPam&X86~1b_E$$}cpa^}R!0Qv$ zdTdjdxpUg$M+sN~-mecNW+Pj?d-Hz9|uE$2bZiZnPKelAxkRrsKf{geez_O3`w z7c@^ANLhCt7bIk5Qsv|xu(QM3TY+sc7!IJWL7_sBbtxMqaU!f(mF+qFONFj}LVm2# zK*_uuLg*lYZQ-iZPq99wWEH-1_ESuVU;-cKRhsqluXFQSMIa1wpo5>AX$@rJhy!-d<|2WRApOul|cKp>BTKGx+X0OJAk zHAx6zlcJ_wkQSLNN<|3CsHXv`#edBD;AYrdxaHivTpd$(9eaW~oDj^>zLaeRt<_Yx zILv*m&r)GFL%O`fTpJF)Qz~xfSM$_Y$oV9%yRA9SX!rog<(FU^UOOt|+de;p9L?rX z!W0+q8%VmJ9`-mPBlq9Be&&PwhM2=zH=C81LMPo^#-%M_t)%R%6|c_FV~X@K6yAqn7EArfB8K$n7Mw#b zbiCE~P9*Z)v9hG;E#G07DL$9&cw8lJQ@e5MnIntE?w zO}s}Fnu84RWJm1ku;h5$B&G53O`ANpoCfWid2rq}(`zKm`-3Ow zfljSSYU|uG6lBCt$qKAbP+ph9o!B+>`#pFRx_%EaLYa2lW!!t{8(Zj`!2Ku7RVG~L zQS)5VJy~#vCB@U5uKmk*Qlc2frm_&#c`-_CoJGR)Ke6loxZ9i)S@47CHvtlm*=Jol zzp03r`y49P(FH+Q{$x>0b(^p@U7*llgI%n@vMhD~_FwM4K&PhXW?L8DE0d_{=o@wO zZ-QM5$<8NDj>pCQC11Rm`0KL|{?C{FU3AxR>+kFh-xSYGZD6&{C|f_)q+u+6=#T&B zlm9PQ|HUnCw%9e#G9xOytgYJ2qvXc2FJPGzw{97tK*`wK5QZRjI42~i38|=sJumF^ zQ}aJrWbdgx{$|A7xqu*q1q&kLG4$mUf19{a)hs(s4eCg$;J8T9pgZ@u`^GMx)^oz2 z4JIEbmpJ;_kMZKxX_{boZnfrfA!3x+YDwG3Im5{a!}Im=TSbW@`d=p`th7{!PJMG? zL1`QQF=jQV;kDNmU3W(FKbKn7jrWW1Lihj~zLU{f#TWL1nPO~>{14XO{r}LyWaGH` zqDnSd$-VgE%w1H9il9T03lT7E(@Q$hpjRx$Dc zm~ep0<`%VS`k4%i6zopd#p-;?-F0;`L>~x8JjN z?^;omHh>bF`2LQeR>e*>lAqv3pz2@f6Iu^{Zm>LYPI+S9knt??v`jK}VyFUUonk#% zrlEg*eQdUU=ZA4}MxOI$@8HmhX1@MKKgirTU(xh~FAamSEsy;2$hu$&3?>U_l$YG} zWDjFDixga-a|IuuPRrN^G^EtJ?{&5AG6}3YB+~~^?#q>(SLCzMdlVv`n@BbR;cAHQ z8rIdKuB@*YoH<-GKeX&sZY!#?Rhb*rlJhsLa3Gyal}9rZEKW_R zR%7CD=UT$x$?ZZl`ln{r{()z|C8_#bm47)hgm;t-&Q=nG<>la#YcV1xKMMt%WBX`(ph!2^Y-+))r|g=rT+Sjt`YWmB5eLtu>A@s z%rys8({mgO=Hi0u&U^iM5JOy6KS%c?5i81-FdKYM$kw9or&?N= z0YM2d%IyZ7v*;i!Nr+0m?m09gkn?cN@A;nj@`j@S={kw^bs2aSTE*4wjrV_z9tLUJ^M!Is^hAGGdN8xwQ-JIe8;ttg_k9)6-JqWGTTbw_}SYB?1*d00$<)ii5R~P~p zl6k_)|>YZEf`8)q{pe5876U>Kb^y&xq1e1ENc{BoO93e(xq7$o6CaDdYwR{g2f9hHWmx z=YKM|oIvwj&o~Q1s-$qcwH)&ktCNq4GtKiqA2w>t5gc!huI~$%t{EH!-GB9RLoAJj zU&!bG5{A#TG%7(^XE0obHycY$bg49YY8({S6m3=cG(C|it)VP$NETueA&To2$lnbA zn4#o!z*aLARur-a%>iAWMNrR-R<#tIdm5Imd#C`@#FW55PBZG4*Kl3o`FqL1*G%6P zlpz`x0S+YF9TCf&EYj(N#j0l|ZCK@640_dN4L$)?b8CUQ>B8Gge-sv3;kPE+?Lvyr zvp$<%752nUVLoZMYRF@b5|}=J0O$!qZ!rmV)QaMA3fLWmlUKZ6G0FnoHNwR?m#UUT zO7(LqDU~$buI35#;qO*(ZZg`zeRUueB~;Qqk?+}UII@22K9P_mhHkO)Lk|cYbZglp z_5Mz9F`@+8*6h)z>Tu5cq*H~< ztGuEg5OrZ!7P>@hfpTV;OQGzp&s<}ZfN6n#bd4!W# z4ZkIszNe{rx$b(GX5Ecm!q@z;$!5C+4SXP1!ouk^`5(0S@3+{dVjG1snw~VP0LT1< zvY0bh57fX}(D#LX+o=B1s^Kq{k1Zo>>vum9S{|8;$mO}n^Owjz>F;IIb%F)MYdhQ} z;GR?M*ixyo{XdE{zuv-6l{1Bts83fsA4K)m>=zceA23?I49ob!8mAT;ES!5`aCQ~_ z!Vm4PjstH7LzP|KzlcA4=bw*5rG&277#d6bi7@s0cSC zA*0z@3|;Rb@5p^2x3FJ4QA{Bu%LH)2d@!K!LqW{LZXHWzbU&yN{&bbL^>TCl1q7Op zucya8@0WnC|C%?dRXsKvtDrcMa9Je5*DA#Q%`e|xIEr5$(b2*!iN<&)67Adq3d|Rj z{mt0rnbnQg4rB!dikRAuK{p!=4_BO$lx~6H24Zr9v)%rS)$y=tTv%S#`>ydWtIELM zvReq$Rb>)*L$A47NHX}V$%T2C}> zIp9#&>Bsxcgv(OymVTJNXFy@R^R5%YFw1KWJS13sP~JA7!asoRTNqG%pD;?ar17N8 z92!XKhwT?~SgHyPPNMDaw;q-5_b7!Zc0*?_ICbPMD@ye*8tn~y9H5x(qK*OL7W?e= z^|wP*^#;ze81jK}{G4$*LO| z;%JI@hU?)6a3+_YEG7)QD4cH*lcq8SUH%X%2(B^BKWX)ITxvb3`6c#!JOj?^1UjqH zYgiBG-O!?t1Q^o;_P9!#SDN1E#AqgkOY@eYF4(PZ;Mf{#kqATq2uTL<6#Q zGw$Xjc0AIfFxuJ_-R*?1>rAC6xG&w1r20p$XW+H=A9?SeK5_U+m&_$d=_xGTfNv}w znRT6z4iZuyE~qn-iy8Bnu>#J1v8?6H#L!3RThErHVh zhQhw*Qk@r*KezbXFJR(!-{*-|kLl@KX*S0Qc&bnSyS#IrVB>B2KzI_smi@84nyyyt z(|f%8@DWMASE3s#xfu(v&$E1Yta?$EbRv9axp}{*`SKLy$5sV4y+jrK?yO^%(8NDGifEu*6233ukOysYKio z%~b*ztCSWM^1iYpRnlK?3^L{rBjvtbJeqce0f27rw`KO^+p$ z4SRj^-w{bMZ6b*q+BIKMOcD6V81^kUI9!Y3iIT`$x*2t;e`R%~agq{NspkNf>m^CI z4CwUgFif4xYZ>wgKHkAARn==#CCG8^dfhOm#CShvO0H9ki;#CB%rEQUTZ!t0f%$}$ zE0(GIwhT)Xl9@!_?7Q5m3L71(*|DmR+f|CdF?~|rWcZ+Re!cr)e(_~P2@a&He2FQAAbWI6Mp(T4taGX>O^Ql z4e3s7@^N4}uaEoJ?t31AlIZ1>6oo5i9v4`SQTX_`i@_Eow8VT2aEfAu84VwTX|5(C zD?zEA$Z{1;&GsFQRZWJ<l*6Ce4v_@BOOq(?`JP+Wd4lm6{}Cv9B|`O zH$uw*lbAOxp@nz_%Vw3Z2vAD`)B+arl&M7^BcDyQA}pYCUttXUpmT!_okgzfrB@1#Vz1?ZD9RQDdC4rL23Ie+|e_> z>unoJJ!}_rFCrdn`ZakV=0ImEfaMmbX3Vt`em`X35yTiOTKPwB!;;{dDi{sOOKaD} z$V8_J2sBF--{{g>c{{=~tpYFvqL!AOpv}BMRlov}L;t9gr`tUuhRVUwej+Pd$8sf; zg$>pCX3P2R_@3Nb+CgCBnD;w-o7`@H-A{~}h9kH~H{UYpNnqH(tJyO>)fQn3z#ZZDcSpx5n{$lc{0~1L^<&VcbM)`~Z@ou0|p7?~^?g0Tu zn(+T(w89GYlVhK(Tq9?~^bJeLaZsHppWn_XemS$3lS8KE zM#bU?CgF2lt8SW&{^QK@ylJwi$B6Lud5EZ?Z2)XMGD%uiL;UCnVZ6+qx#4V&WwV;` z&yK+j0O3q#P%bXjOBSGEY45my>g}H_ED!tXUGB1Y=3Z=;kSLjKd$@8hM{JZaczIYLDV=t{S9uVuIP7g%nHYg+!GOy-s3fj8|d358PQU&$`~C z3vk&q5mh7t?=XPZX{&A;yww}19-va*24gPD=Gk+pKrhrZ8f{2N6@wjet?m03kaM;K z9=I1y>?u*mcfwNChyNQ($0l=ZRj2Z=#=VwK_F|;@OczC5S1+%kmk!<9jE^S|005m4 zr|vL!fV0eV257+7V~pB?HNB~It9W8QEJ}ISiH@c)TpYCcfR4stJBV+en(sX)H~yXx zF3Fzd3?C&_F)^RP=dbT<Ms1N!~E|=53{hGU(wb^xKUnDJkpf{GqdFo9!tyW?I&~HR1EYV z^0Hzoc}F+8-fzSgPNxN%r1wdXnp_1)%S3XD!aI0-6Q4mpY?j6~*pf!#?o5 z>3qEk9$e4QU)(4-k|}SK!qEES4L+gJRs|lg-CR7PJS=iD zj}Hp+qEzLQ)4160YTZp`>$B8NJJiP!W7|Z`Xl1of(eK^88#1EN-Zmo@n6Bocs=38Q z+vY%vPKlnurl~CvB;gA-Z54jWBJlLrtFcLvJAxH>X?f$|aDX^mG1i9)tpVzfZ_9zN z`ekMK>C6(zubJ?3&ekDgfT^9cp0l;Rt zWTAZ@6Y^+^eVrfm>{-|fUY^(1PAtc}W$WTUvsgYQfHd6=SjpZ^xm9gd_+Aa(b%=`- zmc8?YUGB@mPsfaI#y41tHc}TTza<@wvy~8RT$4cHZpFmwS6XbIFSq&PGjqLuF-`T2 zOqr3-pDY(a&IGT`h3O{pE!Jsf7@~`V!X)YYt#84zAw?;h)zGqvUC_5W>29ElkQEAS z?vcS=$08TNqQz9ZhGJKqY zn?-aBP(MJ^PqGKF&z?Vy^!M{>cOD})R?r4iG_{IXg+%juZiU=w4QQ$3@r&k~j^y$z zHIW$OV+!-UFw_?QU|Ai8t4_ecq2tOLPb!2Qt&Q0*OaXGEcHJlabPi3;r|9%+9X+Jm z9TFXz>Ba8J;r&)mb`{O(H!$O0SfmLoeu)pnak6q5?TR7mWp-M*QBQf5#SF>&+-}?& zCpDAbP2V1HU!THMlj6Nr)C4r7)VKHJ0`thpUM7ko9lMwo+Q66?81>s;?+E+pMN7NH;e)JyIv9EXdZKVV1FjI~IIfrQ5;GSBWZoB8Nrp3L2?(vinVUc!B#km#6p=x+RnJ86dKQ5im!igYn6-Vm*hlFCnuU` zbUfOVqoK+wA+y^b&YvDXz(njnn`f08dGo6pc2k?O3Vd8-86b5gBOf1DKz#>B-a*o_ zKx3Y?;KV)`=~{yBx0L zrXX+)kEcp%Y(|SFgGVpHi$KFIzl5l&^Rd?)lQu%BQ zwd~}R(u9*?-e((1D2u})xbkmBeqi1KI#u(e^dWA!g8YOa_M9YDI#KF>^G}xI&r`b% zh*xguJJMTkNqiQqZ$oD6@|-j!$XRL}Z<5!PhvzAT*;RUL$g-5B+?9+`({lMyGR_t- z;9Q}(mTACuli)O-Ze?3U*smTUNJiFlo4dvVZ0fl2x8L?ETL%h2O)2mFPwviw{JDH+ z(FU_<`skn|)T*9OV>Z7}wmiCYdPM_ZPmHOcK8Utdzsbds(*4;JuIj|3$o(TJ0^C&V zO)Eq$rGt@9d5N)PrYwp4U$P`58-847a%j2P_`Fppxk;>UWJqPR-Ob=3=k8W`Mpfnv*n7v#?MUeBFg_s zf+G|*|K&i)4c3d4A1KU|I3vqL!9L(yTnPal6ix4om*sr6jT9s(2ECU+3sT`oZ;B{v zVSd>gx)bE?_ABdK=ZmJrC;=h}O+5<^R9VCkFz`ERo=hb!<-rZ_mhW+C4NX=-fbHd# z#2Wzu55BQnYWnuSTl^oNZAvQ#zg*vz9B|}#L5=a9fH;MK%sc1vHr_DVO-EPs7LQ~( z>NcfPf?ux2DP(oLcI3QX=!sc!`q(gE;KW4*X-u#nkO(o8h37)d(7{s^8tVCFQ1nEV z?2@eB;+E1z`9LYFmrL+po+oEa-X~W4qj*wO$Oi??KKJ7LLoo@9xpDgLx8k`cx zMty33oP{&YR$wbKg}kokXAmH5*H?Y?-9P&3m;_i+_T6jdf!wc7&dlmH4f6juhnnPr z8)Q5A++yqQ6D~V4@wb-!>|a*ZpS3cf!oo%$fVcFQGq(S!WiOcqIG^cV-+$#1pXFzx zwF6N(WIv<#zBSl)S6e9KrFt){SEW})r*3oY6ZbF1);f-dD$S4g$p96?#FeKJBMhp> zD9Z`l6QROTsnOJQWjVwB|7qQS*!-+=Eft))-%4#e_T{^Jy?ya|X_WNcR&=Oj1RsQ5 z$w9&(B)Y1xN#fju(S7uHTIoDEMSykXEb=xPN511N&VOB*ca5Pr^`Yv`9_r$! z>Y^_%_~BQTYj5z|=rsXZWDwNO$Lz~VFXAZ zEHWb5CTD{XIhY&;CWFEF>fHOD_x0SmQ#E(0=EF?Q{<3!otwP$`YwxxG>v^7Eu0mc2 z9$A1JA0-eYCytxH{PcM4e|<&#f9uu%JCk%y?E>;EOIVz2q-M#B`LCMEw-6Ex(wqOF zr3m%wlfSyo-tMM0jm*WA7u0UQN^bSjWytpf0L|5If^k|(Uktt#%QiBDCVGjnm*VJ% zuS1l3@BDX3T?HJ6`m*g6jKOwYacL-+S#EA~fm#}tvl4y7Z5kz4phZ1FKQZR@on*y7<)=nZGTi5KQF01J7+s~K?nZ%!g51zGIi=`DNoI@bMm%~H0fn&thHvy*i@Z6g4vU7$?79WiSV@f#*A5jv zd5%J4%m*ed#=YH5NEBC^-xt%GD}>$?i9dUHsc0O9KmsmMA>_A%ShrnpBbr24n@osn zbu7;&ai60ZR0r1*@0zUsfI*VN@P0#ZZJvlN?+yqC_t8;8@0sJ)Ara#bYOO!A?U_jx z-?W-5<&)KBeOpQlbwN{r{0ch|XvkJG4uC3&X{(I9itD@h^JD6x$8Sm~!*WMfN1j{x zKm$`FV#}C>&`F^-uxeLf$FdCzZ*sIWtu$>3f?5kLHQr|PG<#hVKR^gDqBraySfTlZ z`04U~k|m*`_^umT`FMk>YPhBTTTys7C#^O#4O^z|Lfq9WKwZmah0A^11n-f2>fUmR`KFIH6_=j7Uc*~AE4-xLh3(XG)%wu9A^YbIY;>0Ifz z`CK%R6VXkZ_TX?S<#o>}eQ8;Uwd8Oek3QfT$9c+JqY^fuy1_vnHHt1DSgUSNRa6jP zCPdsxsIs=%v@jv!-vlNgvAM4kLljn3FtJWZ_<{|o<}(rIka}Q0)m2&4|GA>@MY(^{ z)?oHfGJlxI9QZTAnPt$y@KR;Q7jV@SdY#*#r9`! z`g(8w{fO=!?78CJo_@T+9??R|hRbqhiM({$qEMvK<+BJ*FoNxmE!F$Vf<)zJ4NU2m zXE*+tCTAs-yP-U(CPHcKzt5gTCu&Mfn7}Cn>PPLnim?o-<$1$WKo9j z7KBaEPKq#MQH8tMpQ?AB&G>c+k&Ps(49PZGM!ovtEYl>6>$1C^5d5rPmq=~-cwPQx z{LCeii?3ySBT!Jt&TwO(%$QH7+ZpU{FSWa)dnLO)TW5RtuV1%s>Dp=Q0h?i!R%L9w z8&{6Zd^M1ugi2I=6DIJoX`_9;veh*wYY=cme$MxF9Kp}iEJb^#n&--kBPPWj&L)|# zz)a99AP78$Rfum*qxXanhagQLPzV+7hhIn{lxN!pZXJPoV?5_z8(8Wtc$Fbo1KCbV zV*!2u0513TY}*2Zd2U1S-0$y9(PR)zrYnjBWNBa<7ThMir%HgM=6Rf7ip=)majA<_ zLLCKQF`_Jr))nG?+NtzPAkn-qsU&vUx53|>K#AvN$@hlN$cf#r)e%l2aW)u^nq5L& z^NuT4&A=C(YRO8RiOumJV4jCt3PwrtJ;gVwyvPhOlZg#P-8J7yDu=74%8hPt_&ETatVYzcc-Fh`;E- zb|pKjF}%gtYQw`HD95l}3Z)?#RRjsE)#B%N#SeGR$KS;jfxBBN{e!DKZdiBgMT`c; ze{dG~86&zrw;%?tfU`etqDy_QEeZ{<^W%?h~?K zIyzWjry$Lm@J@g9GPL2I=2txiY>pb~*Z`0_XN~XkghBjun$%_aR9#u>DqbWs*)V#G zuaF*iay}(EQHZ=^eyg<^fYd1hUkl?Z$5dwZHdYEsHxdaFHnVVDAe2Ecs*3E&8mO8x zSs;9!>G<1C){T^`ncQ4kRGO{|j23pY6cpSEaFs5>0yeQ*ZF=)K);~&R?-+ha$YwRI zyE)!|m{GNkic#d|K3lfnzl;eVz|BiH8g0sD7PH8+lG41KA>=QanOV`lc5ntjV^psCpKUMA-X34hYQY)z4U$it7mGMQ zO(0)%?fChf8jdv{&SP8Nw(F$ug?`!21NG|&Hkuex8G#Qj&N@F2<{+Oneg;smShooB zD78mJz5sEQHV6U*v43tkVNIE=az3w(T5`6WhKgK6PmGNswk8G;d?UK*lY${+{mQ*Fby)}GqK%*+iYF1mk^1fpZTiP8A^|chlEWycKG7Xj-m}bJSu)DoM zbBUWkc`wne1KijADWMh@P{iYL4RRL@?veGE2FxEk2ZEsjY3rj#J>Xj6058d9&FCLx zgc4orvKl{2x{vHsXK%2BUl6rbC}{+6aP$PbJ}P*x?ppn{GLa?fzHe!Rjhk99a4l{u z#M-SB0`&4|cfD;n#GmCmr1kD#S8@H}L!WD)n;HyQ#p5x8G10`bPeR$4H^qoC-Sj~n z;8q4j+k(pO$9gJTvpj9Vtf5LGq|Bt38ie5BVTLD#F{h9GU$me8Qc3D^Xu&(_vu!neY&if_l9i6 zjVs$QMj}Y^u`4Jr>NEfH_;)6wkqUvivv9@#tO0`*owvR-{SmGPIf$RHo3EK`{FrK| z!61&^_j>j%ea8g1@l%5E_jmTPNT9^^;q~+=NS5- zHM_4S{~U%raY+Xe6%`*Fm&8| zxpbIy_n$L&W10u}eJi?7svDmEv_W|P?`AYQ#vA#_c1YQr^LM@gcr1TNNf@gU48>Ow z*EekzljQaFq2tZ!AS^okO8ODaOjehf%ePDNFEVQ>Qv5RvV#r230~{`&@q(&CAcn~sk4mpuxt*0kPxq$1w%1i$d1e3B92YSz zZa`@*4*pzu#VMy@a_a^-)AH?>>7vf#UToj%p1rREBSd`C(P(YzM2(hO2iqRz; z5jkH!u6$?en7S`G@`7HRd-A4#Kmv33Eh#P2?Ix{98=_A$uSAv5EP>io+tTUtZPbAf zi^8xCJ-k?=&Hg~rN$4l1=9LD5Qv-%y&`IHV>zoQMpDL*XD~SSg6{V52vy)jhGWbCI zRvqaaoRtI&-MsQ7`24GjQ?1*gzB@AOw2uALsA{M|%}#A4R#y;5xzWF-`@!FAlf8+N zq?M*-nEsyLpELfkUeIM$1URz77U1Dlhgf$aU3>-j$q0|H2ZaRczM8qPX`d#PPS#ms zewpt0?UnDh-~{nB(&PEpRTL&k`OJ~gB zUS5KVZBEyzmUokBk#8%Mqq&GBg~s35QE&YRUo=On2pJgxshFi4+OUcL@YD0!zGn#&83@_%9c%=BBvKfnI{YrO-)rXhHPzKP!AriNQG{eu{)#(X2!7eIIY5 z>{|hya#{HLX=VqY*mLt5MYlFW0>m8O43E(|GmEyj^I%uJHT$v6qTG^RV>+T=z6$R= zLT#K4L)0g%r^aJ6S?vx>Z{^Ow*d0?1y&*m{sL_p&L-I=>L+<|-_Q+&bUWSi0H4O)T z#JNZ-UH1|Z_Db4`&P$hK4*?~x!t5n6W|6tZruj3xq3$cdj#1-wC5z{%^)z2A{4#=J zZ*ll0`MB6)Ei*{cG7p#uqun{IxcPydU*X9&iz+={5iCUQ4$RM@c^zxMuX)4w(5XJu zCo8R&K&p?Ml&utdg${1ci-s-YX;5%|!h?79&Jw8J<8K!qLnn6>-co62*sQj+qL@}`s$fpT;6{?(f4QqRIdWE!{Hq?l=i zA2b5CSu$Y4NQaz(iVaem-5|b*=Rd^G7j)w zbAzdYvYxe1>Q)Odr(4?`=U6^32@)|eHo5+tN%U~lJ?Tm8`drQiLGVCD*#)nho>;Ji zc9T*Ww~U^K3AyZ!#bpcs(rmE$+FIDl_T0KpFbWaoSnJimta#&wxx_7m34(<*nLzRW z0&Ky7rA7Xz!iL&M|y1BWe49ovGs&1=Uh8*JXK(;2p78BPh#024T7Ymz|N zd@F2s83!ZexwF2K@wAsb%&9XY)%r{5b!~w7=*>TxLk_>o3ryv@eLA)I*wj z^7=8AIPByr^W0P+^b%RrEzd)?gm9IC=y);9qk!p839)s}jS3?*)(^HloZ83q)kg;! z!w4l?CSui=Z|9IA@wqju>m?+&hN+#_FrG?Dzat>8g3n z5Q-25BshpfM0ku)aBF^LSQ3c@A2LxNkyuV=*lhCFWH=cQhJTUObMg=`8Y$;BOR_cn zR&gU(WU&z>315Y;%=ITDcD)*{;O)hA>p&yT$dXjm*@6C#56_T!okrs}69-*42b1z?NvXn3cys zsA(T4N(WC%OIvW9!=xa#chk8xoRWG;R@_N5siBM-!BSyT>4c7?hY?bJTByP=RR@`F zLlDeLI5c9Q8HUT;D(yo8X#2F&c7{Ncd6k4Kt2H0B_Ee}Gp^fODioJA_5Ju||3Nu$L z*vuH4t)sRa2sZaI3{?5rmuJI4-MW6PmT|c+z8c63_S0gFKfURkXJM;C| zvu`^4+VciT;EFoTPj~JC1cfv>x>Qw6N^;Y5I*;fSux(F|yDL58gH{IdE8ohht5au0 zs*YS~<_LouCgw!uW9@s}1}-IZ(3gGJN47@>!nsp2eI;QSq8Pqzz`R#flPAbt{=$#z@ki*|aHpcL8hY6=Dh&hupQ~&*-R-b-Q~mClROd=lA1(qN z-dr@iia4G{%k#3^TR(1g@f@dYZoOCWeJmeiJT()`rn!2B^BOv0C8wlYxjqv%Zur{mB09V$%w;@G+7PZFDSg_iCy&^|8Q60KK=e*XZ-Sy5>~%K^epv$^|X>= zs9FAY$~AzI@yiA{T%k=lf}In>3H{nvUgWE!2FQIa$@NlvYqP+YLi2m;FO!Q6fS@## zL=Zrj8>|lp*uVj@WZ`g_Hxb)H!7~6rS^NrA{iCquunf4$pe=wAh(T!jnmWP)jGuRk91tBD{|GMumnuB5!#2$|+)+w)iU z8}!7=+lhBAHmjTgQhH!xou=~DA*1=v$T)a{q15GLp#PkGz{9yxB@<$~u%eyJuD4S< z)WWN76X2Q^xBb+>8?Uo zd0Id0;vE02+bL*I!REtau@!yju0S@@*eFHdq~DR?nn}vL8Nzg>@^PSw{P?S%FC1$l z0P;GuD{d)H7r#S!b9%%H^nC`E2|XSvEer;4%do2WI#*o3cG~Cu)yyf8-a&Wl$WN{N zrh4ViS<(KrD_goJk0W{CkDo6_P7AM%hRkNL6wMWpIykO6^3M`tpka$rwg`nCf zEsS%7UGw*#eQJh=a!%COj~T2%eN0wy>Ec$CY)_xSAlIS$iZiHF zdh9rC9Z4?8y-lh)EoOkn_xISe`JWMw5%yc8o9%~9uX~4|ZiZm7JB^j&H856l6~Z{s ze{ozeqqU%Btd;FF>e5#5B;bhZCq|%%S!ChuBg(myM~;)rvOUh7$@%AMm-h{SZ(sUx z!IBTLJn#Jco4!^pk5{mM!%E?|I~QJ345Rpt@?%oDaQ3ZPfo>%AjepwBUU}QO$|Bv9 zz+Y)~_}huMJbtqF!zXZG7pY@-3wZ{{Y9SoltTC#@0(gZpd}~roAewee%9h{L;Xx*e zdvdUqC#gvYv$K%%CruvE4h_q(T^Zxik4I+%da;%YiK>2#}Bn-8PD9e_s@N17V%=IM%h*V zim;4njkJZ;{?}+A)GrO0_B?F>g;N9hOCsQxw5E=F@i~>GY&DMz_kKW$5dLFUicvMt zPu8Y;q12aLsd3>?6LvQRRNS5vprFu2?K1MG@pT)W!*jEEz-74tK_i7XWa`nmI94qF zgoz2~^}{Fpf8@}YyZO~OyOlt|hjMo}sVN%tnrd@4-TfR*R)KIs-H^!0aI}hsQbSnucc!CeZly~eZUF$_Hyd$7_mba*yni4HU`xsZ%oip)xz)=4R6M8+Ar3 zlJPkHZqIinaH!0|(xHM+LzE?3+*#~z>%Qp4RXh8Veeumd!-k7`3#k(0Kdy9PR0T&= z&gdR)8Gi<&(n@zj1&gAZ&62)y=O6O5UDQ;pjwUgZ^(&fhbWn_Cp88sNT~zK887u}U zVDHJdJ;E2JT^Rjc+fZTM^IHxHk*TS*6EFtV{PH$gj19Ed#QIJfp?oeD6l8F&g}CIS z2L^T=W`1W9dKYl4GW~RI>Ukj%2GQ#MhnJ8XAW*edC1M4<3YC)2mXdDJ%~EQ*?N^-k z23HzZQk0~%p@4x|ID%IZmUxPv3g4VRw7Zfo@phJd#R55iQFS%yj*A`FV+1?q-OiN= zJK3xQ15J2EaI-)B`)_|w8#tmJ%<%nB7Il5h95Kz5%UEX84XE1dK8AQ;(hr~C8$Ug+ zB6LExh^Vcylc@@lbp3{`9elm#qU5Nz61kI1CLvhXDLB`z{G83NytBbR zoE@c+X+~xvlm1GSFN-qqrr!WLx!IrB-#fq`jjcLiT}OZm3&)RYY-U>7jrk~~xNMr+ z{=R10bBcrtc;T2a|5wAsrf+g~kl3+C{^sRIc*iNKHC)fjVaVO~+86Yh zSVoxFctfK)tcHlwq=PWK`2C6#99ztP{oT*&JChsD`1N{=A6oMKJJW*?-K>NnS)$L~9lR22e>wf-()D#qUsAr)Z3vKHSo$#U85tMSXeK*`9rwzHZBO zw1@%CeJVh<%;p&+q%PglI7Tye@BNV|NN8E5Juva6@VnDgO)U(naAn}_& zJ?k$&-q&?7?f{ta)p1pSP(Tr~*g8odx@%?4;zEAUG=AM(_Wi^~`N&E#m+mKGQ<{bO zs}$G*=}1W7@_BB5N%2As4(XvqcukVjEMT+&lZTu;)@Xm|uuqwOZOg z$+l)5st0)_Rz~mdE>S$_!CTKr<93`{gEgD1$4J>NHhQ?ucx@p`j&Osmg92 z#oP(ls^9VO2Yi;?r}sYF?}sQ8VdFrZCV3u@1m#kUt$AZ6Wry07`3IAK_uou6<((p1 zPj9qU&nq{dN1P+Jn#92eqc~pqqwh@bHTm&p9lO)JQ@e--eVM%C8(6KL34)@x|gb1=58&0W1I`k`Q9S6IzoKspa8<$IF8+U zY5tNkF?>-e#75`mSw24-V-W1X=)LY~ie|J6U3}fkZYF9SqNJfo95-IuWt_%u^hHJ0 z?S*=(t-KfSY{{y7^-(=$#e^*ZVX_@zh(Q&Hm^@uJYP@DR99?I)2jzc~Hdtf$$Ik}; ze*WL^OX3fgJ6J*#ZzS;wAftbbXj$cL*~``}J1T#~zx~IR7smf?^FQ{?&j<1-nSD#w zx;Er^)sc7Hk48J~xTLl8{yMz<{xoc6cpPvM6=smeB!DgZcgu)cV{NI`7ZU!5S~%QF z&FaiNWOsXXg70+hD6wB^Fv_&f4)+8ZSDoP^PCiDMQ=j(njh^u}k zpg>Ii&RiJ(w#ek?xIBvE^B2?XUAqbK<f1U7aTk0$UduMsiC5gN^*nwAwzg(_c*v zl}X!OAPV-S1Ivm%DPmMYq$)nxzIa6?A=94RUX>1nXDvH{chAq+{RC)X9iEWhHjF z0h?Lsi70inPomC}jkV^Jo?yjuo*tXs{y^>`O2soT>%wRkg3$E6IF!8v-Z`D8IIAHe zdUab2LO2DCI`i-6BjIWiNv^JC}nSA#hg1)`Q; zGdhyxMl(ww-c8zkeYkNj{8M9y#ptEqWUs8+uC@r@xNL7%jnyg%jm84RSI@CCmp4?} zV2G(r^hU0zAo3MDu>ET&hjI=$5H%vGfPx!o_RP+XTn>###b~B`R8?Mh=*Y_@{VR+z z-TI}VnA^pNv}fzZ-VOd=W-1sDr^Ns9aPqfI3aqm`U}c+kKkyypl%NG5B(u>2rw+M0 z$U2+YQX-52UNKWBeD39D%XbQi8hI->I$Hj^xjfi!0r;Is|F5$~l;9i;%<_R9dY@i; za!qwM>rnp0RXkra5_!^1A=qtkpJfZyXpw(Q=;3r3Y_)u`hi>ds#$bp)Ro!%>6%$w_ zc8h|)a;u*uT{47KIm))Ni-fhbEKc(4(#Q<+AOv$>c=vZEM!?)4BcaTzA}xQhMrMS7 zQS7?34q~jqz7|glej9nZ0_(f+E~@r%&liT4rm()^^{WZ3=?4y{>`}ur0V->g^@*mW zQZRYJb`yd*4(kD9M(?jEmON&oN;gA}e2$)*8! zi3C7y5sWq%EYEyXTT^S8hS|-~14|YN60yfyHI|8^V-D(mAe1v^wL zd*gTdWnOP8;j$ydc;M=~&k8*v`?|ekNB#TtrFIyL$@ED!j=~f1?Tn{6oubFyasjZ| zsXXHF%_hV5Tv>+7!h!in+k08rIeqfsMSnwg4&A1q2Zb?dBq3t75YJO#a~CqGAJ%EhG6up>xqmOyaWiR1+BvaGPjO>Zu<5)xD`l$}MGH zU!0~@^BdKsvtROVx`oF?#v_u)-_^d`#r~wX=>;mfZWMHP=2{>p2Fop1(-R?TUl!6`vC!(?ss^zRPv&f)Xv5*e_p^5o!*U#7T{ZHkH=9j}iw2HoLGmXr@2NVs%F4fnt>1PFKK>tCUyDB@zQq`wy=-cnutn#p0dz;}-WlRrrJw9OUJCk?$+iaiy zl?UksyZ`FD%QVuzg3;9;`o6F2RnmCf<3?CP6S4>jxlWoax8Y=V+gS7;KZRnp{|^O} zw*M@kD9im=SoyElU(L!)E8n-$qOg9MyWTp_D$$q!jw7llZ@J+CnwV4#=f1D;($bcq zZAzi&d%#}`=h%!c(00YxlYV^`SsjoT__bbQ9pH#B#V1v1D;S$=s_;-4-~WFwwpYzm z`>E1(*acLZ&C=&Qy~X@_j&=jMD9y)A0qS}2;wa$H6yUo7fuj@V_oa5ctOQ~mp5(hR z>2KArF+gO$*i6t~Sa)wGrdtpcY)k7#VMdH1=#jXz`-eQU5PJGw2)Fz9>~Go9*>|!O z7*T1(P&uV{JtpiuZ6LESC}P%lUU=W0FRT4@2h+uB8NExZ9=CRIDZMmYQ`8wSE_TJZ z!J0G|wjnSRW2xrEMx<18%90`+)OnI^F{UZIek|o$$8Hlp>aG96qmG`}8MVE88XS^09y+USa%_%~at{O?Sa zv!a+dtp{6vf1XsYG^<6fc?JCyd2+myRIH8q0E1>_5?O0lKaFkix;W7H)7Y8Av?{UM zrR!NXhw(Do+iAq6tu#aOR)>OqAUUem_*3zH^miuCfb@-GwBjXqDkbo_*hy#MKdyX& zeg2OJ{7*ju!PFr?7E$;}+m}5Rd3n`M_g}xJFbOEv|9epI;~vBdU0%+jr3Rda&UBV< z&I)-3roo2!O?Xr|fR|04NpTap60peSeMPOo*eW}TQjZMO?6yfX*L1)bH@hhuNU0U4 zaiVu?D2)5JM#U~G*~qW;mTe$npj$DcZ&P$2T1LJ|08kB@9R;UBLpHji&yxh=+XBt; zl$uTI-+icJ*)~`@T+149)WCp}@N3cd1X9ED7ig2nSBY!eHqU}Bgm@O3+CPq6AphKv z9h;Um5hg#OL9AMPk<>F8)aE!a7>6s^Nd*qWD0uXeUP8+4Jz3eZ|I3QxAJ4`A)^VvC zw@M8+wfY)DaNn$=-QD~{ecT6Hz~-Q*2MfD`5notGEkH|qKgms8UY<+$mg%jQ2ks`# z6czrSx5)q@>Q1$O^s$=iu|a?9lRlp`V-XgrZR_>;JdQ*!(;22;75}Hj{{O9y_WzbQ zGqOI?B9=bS|2i7NCV%niP8@tr^Y)i=-6UnW4IG?_G&f0Ogpu7`2wtM<8-cNq<>V& zfI!MnJ?;TjZYKbA6|~OivPM0u+hobE%K8^e#TPxixygN&#xUbpsj{*v+OEqWf<>e_ zl7bo|CY9{)>=6IzCg#?*4EPeOW?e;!$_sKCv6%X^;~f%wc+JRCBl)_|*iHeRR%g{9B2r;oDt6z#_nC7Jx6^ofvH zM}Kq3ohtriNvU`HK}eRUKbdTM9$|_DI)RL&69#k&r?3^KG!zPrX;z6#ZP2KW=6qY) z++`4iH&+>(rjbgU${sec+hS*k%T{-WGiy_Eh>hE=?w#mPn{rfl ze_MN;ZpAO@4>>@_TRR)ynf!Mi*?v^h`h50{*QaJ?PqN?lNk`L|P+A{T{Vx*9n4NA_7jp8t&(s0=dR4NFBm3v6Nofmh*4eTEKhQfp6OZy_tZpX(T?W@# zhIy8wHU8rFDsE>iXYklB%Ho79B(FDQB zl7JEFnSETgyMu3aMbt<^Hwo!%f!W=ICVh>hI8x46F_%5&%J6HJPQSj9@++f~CJy_D z+M9i)$AKTMC*`L(UxW*`=&j65e`lIHf-Z#0g_^=d z6%W+V^%ocn*iVDsGOiUFv=)7~B2sY!VrhKmA0Pecbr79OK|Lu+mpJBaPYO{9R_1%m zM_UDZHm$lHYCSU7>`1Gxy0yg9Bz>N%O(2SE{5)090Vfd0gy-!$F)$bvF39)+;&7rt zQ=SaJdFQPT^cvi=qA2i!-7H0w8yBQl&TuEv7Mo1;Oy_IHhL5MT{z+XeAK2T#AAuej zi){%f3|&$aTN}y(Ik{~m0L^S(r}hzQA);c#RrZd`*#RbOh+>4m7|mM6QZcmT<6+<% zT|`jwk+JF5EP%a(%Xs_xFnfZR96+z1&@{8QQE5Js*!{*tqlzU|FkC3yFM^*>ujQ*= z$}5z`++f^jb7_Y)4o?`vwFgrl?RDDEaQk;D6IQ}XX|_4T8SiI^j6MT8|;hraQUSdNOGAXXXMuv9hkDxWiWY)C*l$HxGzW-;da!#P2 zr(q}7V??oit1dg4#|u%1P@59}#KbT7i0Nm;$^44TpT5wQ24y1WBgaE`e>Dj|l2@Ge zYp^7-ow#Xy#79$-LFsvTEF3H;1E%qH)tFe7GJwd&VZS+Hob3C2r)16T7sCdwcnL^#PI$KFDC@||h*fT$ACTs=Jv zr=U(iy6Wp>^5wOx26Z{y=PRFR@Bcl(V!E>?sCw$S*4b!G6;xF3VvgNf$jIlRYZ=B) z9P}$iEGb4u~nPY~KNQQLLC-{?h_ zxak+-r?&)}e)<_z);i>laK>K4512)gK!Fs&Ui}Cmt7?@2GG|bZpTu%TQIe@}DxKL$* zS9lF{tt|!RBy#i$kwzwPP%f(uL5A~-8H|C>3CPaoTwZmbU2CuWU>CE?V2-B&%}cpD z&AMCr(#2{9VB;{D=Vk*8)=O}Vd+?mUK)&v0s$4v?ljAWqT~txIw5a3|BnwnYO6qGG z6FV}wBg5HXJw}#~@2v<_Esj=hp0SOKgA}r}8tpT%SsXjjgO=^YjasetBk_u>#UAQB zVqXnIhLN)wl~=@l4R~$J88HslZcw(t`7f|BI%IK!M3K7d?HO-&R?4%=J zZM_IrRn@=M0allUOOwoy0tsM-Fm0j3tYP*#)Yk9y8x0CB3yllN2N{N2JvzY+SZ~BM zR6E<1y+7?htmNqG4*S&4NFN<>TGvE?Jv?kMSR5V)*OMGk3Gkac0T3BjHHH9M(|7tV z%H0w-`kjdxc@K}xK| z3}@%X9ab{RZc+`TRfbe?d5#(~OE~UT3lZs+#~wf~{`;tZ*Ix7XL8NHE)$j_(T}ENw{dLM`*movf zAG^DcJ7T>U$tL`3%y!Zo@qa#C?SlVq`ZXjI1L2E32B-iTF$C%+2H|bDmHVaoHRRvY z3_F{?P(906eBgqYhkBu73sHB!Gxha4Cw*G9>FDQkhOl!y>I#lNH@=!v_H>4nLX%V4 zz#mu(rLp+KAkbRBcJ)N53h@t}Jd`>rt9)6gW9~UQu=!Bo3KCH+30J#T_wWF)GbPb+ z#WbDjLkLym>1O@YTVv}(WsPe37EXhul+e1Y?)fVxKprj%SINB#aR&Oit#q z)@Clfm{hVkW7i@aSA?g@GXg}HocRQ%-ETfVZ(ocKjXcc>- z3l2|K2`1*OEE1Y)6rc@nJfDYVXLWqLfL_Rcps@(#3fUP*PvK@5fjayF$5BNpPnzp1FOX~AQ*@EBaK1MJ6iDjM z?jP3`l*X3%b}oa5gKOyY0!!g_mxZE6ic6L4>aXH+Q6KWZidTdZ_$#6iMm&S7RqmCPl0F|EXAXEtyoaO|l}X9nu?EZ`l9wFjGj@ zNAvdIC0HD`D~MstXQ0*-9ZVY%{HhrV|2)|BSZu~CB%M^oS*GRL+dtUU;nh4{=pj08&ZAtb}t}88MAIYG(GN(m(-&usLby zC9DA$R~v~yh`eEt<#1f(F8q8?{;2R}$wC}8X1eQ_v0Vt^WV8mVbgbO7{h87iCm~LB zhf`j|N6n`kkoStFB1Xy0BxFV<2?gw%^i3*nEvQOQ(&!85XNH*0hNc!fssrNY;j&*Z zUt*tKTn@guX4ESwkp=HneUh2fq5m~4?-y)NcX!boGD_|Nb<`uVy4+CWYF3d&g0Bma z|F*E_ccu`sVDW|uMNX38&NF`Awzw3+$FoJsWi8e>oNuG4(sXEp?bd+pvovlK^p5|j zc{0BC)@_vBT3G(@J>k+TCw!xkNnN7HSP3o$pk3{{W8Ro}=V>3Gx#GebGHmMPDPt-E zr}e0I#t$aU!Dfy2U1HGwDvH*zed{D2IDQ3YL>X+tc z+aef{&w&o50FW^bp@TWcgOM*J;$aPtQF%?Ox$#r)sV7 zg3j@qos%a*G>znj%%$`fhZ^3J6JDaIJ%opZeMyIs*y!W$Oe>nnY)=a3=uy9<5Q1{z zCnY%MEExXv{G+j6SCcQ#3BQJ!O4v2gQovXvPe)zDGTTA&#snk5vxCddIVY=x0_t9@ zTL`m$NKYNndb3ZC<5yQbAT)H3!WJoBDj})e1~p>~5tK389hz||soqQv235Pdopr#7%zz1k`NlED-V_^wba5?X89u9FXYdd{8 zdo6;}BKA8JqNbE3!I{ghwYLUdd@Wc1Or187&jCl4{hX$p0YDY&Ne9+sA*6&ohuL>f z2Pzan;hqmBEcc65hTErSuW8xZ=NRf>2fG`32JASCcs=jG^3bru?Ob`;YqQ%|woxg! z`_jv&M@~KxKmGJrj*^1O|JaU!fyT4C3AAlM?#Az-1N|C)D7rkmF0(!u2sUBV+M(+| zo~a*?L%3QjpM4A}El3*f;inY!hcO(kJ*;W$>?)~8L%iJI*5<>xVaqx0H4EZvF+HE1 z1p2vld1w62uYQ`5P20y~-LP^`oa+0JH5xIWSBceTCj&4!B}Zd-ovUAnk;nvJHH}#l z2-mcaq3cnkT+E9steEXnJ`Tq<63pQnu-YC3Qq@!!Hd4aTRm)( z^HpHw`m@hO4D&15f3&BXEKtx6M91Eu%b3@Kw!f@NW)lY06?_G^-Y>1)ihPLQ9#)&G z1#PGreiciQi87*~)_=G2xjq}FI)v^p> z4T;-rxU+lRK2+V~Psz;Ad1D2(y1odFPA)t(6)Bof;fBBwP_cAQu$jD;`^;|J88wSd z{@L`OHNlZx|4gkOX%W+zbPl79bdNQ&bfa^!gK<&WqcxVl*USx`+5sMU^0utkN8?TObL}W4+0G)byUT##_Naz z8q5qka||?p*_Aqe(aSf}Xg0Bbz*$R2=o;1dX|MBSvXi}ljZ=NRCZWYZ1@L&BAYaWE zr#J0bZFB(W%K*-UilAmN9;)gei&dN|m2KjmG44@sTs(}k8uy?Km?Ws2fmmdAStGc$ zAry9#cxxHrzYRdhRZ^=;{_%!;;M)4!+~r5}`+zR{_3d;i7)+haTKFqz7_?zl7OQMi zH^fXBz-x`(k;63@vj#1{MXWQbKfPsgLUuTr+sk01vso4y%Z3<|$1L8Jpo~{YXDGyZ z-rtqKx2Pul+dKH;8(pi^z&@M1rNmsM-(2kNwu$}$w<#5 zj`c~PfyOnHpUI3~Xtz-4*#sq*rYXD8rn5(fW8?Y9llgp-3XZmlv*HoRVvsTGmIzmvy8l@zR$O-B!no`OT?i5BOR9t>C3JAPOhAEvNJ3}<1!)N#LPyq8K?no{q=lvd0wfTmO8`;n zT?irc-g~c#U-rHCoW1V3d!Ogq`=0N7_uR)nc$g(~&i5U2&fk2?Z;WBF>anSipIcE` z5HmztqoS(x&s8Jzt)X0&iZhfhD2W)w=ar@~W258{KH9#b|NHFLN!fRH#uGaY%B$N6 zRpxfKs-5q2mDZyfn5rUB=M-W0N}{xD_ zeT%My6}hKRLXwaeACZ%mJ4-V*j4-3u<=77KdR z@pJ5sti;VJ>02&0>dL=b=^8~W-W1DX&VmL@Nom~e&qvP~FZNdenpgO9$vLNt^x4k_ z@Oex26YcC{l{Mt&ZJB;?Jc}7mA2^%;QIdI!QW+Go%rGIAGhdf%rv=U%>V|sFWp+#P zBZ!*}(Y$tOsF@QYd7nqT#Bw5B{-^x}vePctd}hWMnn8YN`dJXuk+@SoI~wUldwE;d zo9eA-y{GTmym#f6m+9^tWx_ou`lKB-mpN3Yw=y+E07ZfkT4n91)H|DI(&a}xMC^fM zt`3$5r;hQW3BmJ(AA)$B9CESvGD9yIM6)D532%R2m*wooKYvvI&GLzl_N&qs7i0I^ zIJD)h(-XSY#7E~ceeC0_U+a>-v#jxV@-DTf!lJ!7KgUks(j|8QKR5AKEK*a*F-%D* zX0ESwCDSt07~HTXNRZ($N*F3(vv4iX7klMv7EV`cclQckplr%1+xQFl#4EeUba)hU zpsoE$Vh^*E>WqQvQZJ=U>_+hq2XDT4^M?X$UpZ4t>1B1Vj7#v2hrd);kas2d&=Ds@ zwDac{TCz-@j;hFFxta3sRp{T;@4xKoKWTS&Ey7l#NL)_8&itACx6^|QkF=$r1res&Unjx{mKX`nwQ>SDVO$P{a z#vUHE*b=ZeHR!Vp!1MLXI|#Jc=Yd9gbOk$rUYE6;?z^|O;+#T^@0>JO7K}eef zWhNz^wzt0;}X*R3E3G)Cl zvw)`ZzOu-KUYdV4Gh>JBnW!HB?E7rNI{~+?#5C}v>FQcEK$!2@mMkVfbD@fgqR>La z9$wNaKWlw4?p-F@+!kX&c6Igu0eSQ(mQdjlxXYmu7zr>!8Yuq@4%G^JuKPB~^yW$D zN`G<@8{%gcDem9@6^Vau;itysxb#Z3S7g8X>s?nSbwh>U10T{lT!}f%Hj%JarCEe< zyNAY_KKU6ly9qKmS^1Nw+G*EYMaKNQRRa?}UiJ`Amx66E99c0r<#y3&fJkWihp`tc zQrbO+^wn}x67ML*&#Xy>N+dNBw@O`@S}wycE}uxaa@PKYb*e^K4?Z|Z1k=%4L3jI8 zCNRsNJ0btD>f&Fjdv;F!XZRfvDVS`>rFN6)D6LHVF3F()W_bad3b^v+@(K7B+QxLe zrdH0|rMBf+(OrQLi`@Pp*>7W*RK`zClgWPQ%Qo=4<{wYDwan z3X=*D<>4VGou(tn)Ug_M1Q-yTDp=>vAcLUJeDO+pVrKK*8}Kim_v(PFAjG~HB^O_) zCLoHPMiCq+n)FzGL8Sxd<|^J)K$C`iT^Dy+MnLhjBfY2m_nBM#sF_ZC!$YMLQx}~l z!aDYvPEnyezV3ngJz7CMK{TV(#a7(}atW;4LsV2b=Sc;)zVRK)C4pc6#`AZwu`$?h zZ|n@*PmI51%I0?U5mQUDIu4f*D5Ac8pni!sU^K+`hdOX9Y04rJ_otO8hEKX0x_7_z z+R5s4%-Q+GpsjJ&-;EFMHOnw5dJztdk5gmn=#C;});kI@+Cn3IQVOogT|v;_h*h1C z`0FEVa2{$Oku+mUBOv#>{`hdhd`3vv@})FKR{0EMjZ^Ymd_`4VUY~v|jn>#}6D&WS zvi;WeWmBVhWtB-1QS?0{ppc^juJxgrP9z5{ zAAlK-9n^0-9%8OAM(GQ&Qtw8S=faY@xP0F~WY6$L-J2wNj!&Z;hIdBL>Ai4t62-W} z55S2KblHU}D?4ph)L~kj{O+om6~tY(fP zW+66=10B<#H*!C)|uM7N2jL(YwAo|O9V#qay|??O3U5lQ`c!8QGoiF z0enep2F3<$khVqKNi=YM$mjTgpHs}U3-#7}{asxEPh%^5KUUuryV zj(i`x1MVl*jtHAcs9zN=nDL_b)Tl|~s^MzV#!8{PdAGP~yV)BsoPjeHk3-vcvfr6b z_J~-rru$T`c?2xqGy2A!+)`jMav7~RWgnD<)=Y{zH?Yui)m88DivE_hTx)(N(~YKR zr;(_Zk`w>L8M?Y>x#Rgrn>0@fZ|H=fVK3B|Gv5#aqf9C6qx@-O|V^1yy84fxU)co=&tJ(fTXcf7;AP-7t^w}xhpuQvLss=*?-Um9d9@4m# zc(zV!CL`IpkY5eA#((y%*^%KHjfQ>OLjB*U-2l&&Z_1)tg2&jG!H;VdDm;~%t2{Yf z1N_G%9rMu@1G1`Hjg5*#$+1yGRhoozX;;~I76ISOIkU;haa=>eEszFKzimo|+Dw{r zY5aw-y!*foo=Ru>_ze0gbhL4^3=Uv3^y+fVKp$(a^BHu=+t_}sded=fy-wL|<0q)o z{V^nxCk9Y__avWSGaAt@(B+baSKoi;x3 zq$#Csi1{Ee9JdU1)9(N!F`h?fg0Z*C=X<>R;5megD^Gnw=b5UvzdaidL?mMpRP&QR zmcTW6AG_tuI4t-lqq0ycI2@8Bs8!WWflTxYk_du{OMg19)=TAGywn(|(3e8F*8Kh{ ztxAuSYJ-0}-?6>6=^X!It9Mc9c6jF5%A+Lg0=A+|uiikqL*r0zQXId*rsrN|!TM$3 znXVVyG&;$s$&{(Ol3DU`q#04xcArTJItp*9==4pl{Ic=>alVRa*k;$YUdyaE;X7B& zmh!qw+IY-JdF)f;d+Xy3D0Dy43sU=L_U4ES8oJu11d4(R>APH^1KkozXqf6)41P(^y3ZHb&kqKztB}~Jab%0 zvbIwKSWE5aTFz$n#9muyg#l$wd$@w~A>$Od<;@02mI_-5@sYFGQ%aRccW**2ij!u( zf};9R?J+uiAUK}_nXBP5V$g;uNIMF_#bstc`=9 zV{X$P=1jIr;R7V?vJ}?dOBElvXwkng3|ndddY9oS4QdXYr^13EyU_0eh>^r!_vTMh91VnB!ll4L}0`m7bu z_NjvrwKP;=((fFGtK)*sk;~y$-P^N5$(Hk$jwR3 z%YVOh`M%5nNCbY`NpD5dPOpV?`wo|yv)_tqlfX|A3v3*{9m~-gsiM~kRzL_nz2F2p zQ6X1hecX^t{}_YED=07VLPy$$G3()IG$bF;eJ0a6FoX7XJUfu9#-gqTeXK| z?SkG3P@zoWtha)iFO{s+DjNI?vwHAgQGEn^jncvqBBxg&_Xy)0XYB>WtAQB zv5DDTWKtITGq$lgJ4W}LqOd#Oi!vN2P|fplrP=;g_oV3cYCbj&+G5jLgG-0DIJ_v< zd%bgj<+P2%->>lhHG6(a+1B~6vF;jzQpa)~JDdfR*96Y&8)r7Z&6q23QCp4(+`+V_ za7|>f@TuPX->&t4t{cifU)(c)lGBge__No&M^(v@=m&rQp7p2KuFbRfPLBWmt7u;A z2yF_RM>^FjqIj}-c1Cjwa-M9c!Hg*d{y>?tKu=F#&Xc20yLe)9pP1ukQgTO8f|gmn zk3~cAsPy|Yx>CaQ9s`%e_&-u28L*JWsL_c`vlcE=l|BZlSr9_0Y{I$)H34QX%TY(x zzk$gHPn=sKV@)e~3u2!lEs9BkWu{c-uwoPpjxsP5Bxu#OwjpT z2wnN>L{fklF7kM5?ZYL~roN)-`s=N_>2@d4jiKEH|vSFL574E(90RSSA_>If;7&PLfJ*+((Mq}y>tWAPXc z-mz&C7t?vU^!?D}Oxt`9pL_G%Su+dg4Ud^^$IB8IC+6p(N?WT2>^{_|4=i&XcQa{4 zz4&}v{r_ndGgNh?75(rwHB0a8^Yq|2>GJj6X3OK#cecIpS6*q@$n8zml+1U(W_KNO z+E%*@r|a%1@jwB3R&*_@Od3;uws=&y!a68pT?0vd8!N&`xaibOpKQq+d{sly|Ge1o z7kLGku*);i{D{*QZeZ=*<4Ct78OHesZ9!GP;H9#PPQ{YQc3E!%gJuu86~D6tSfK9Q zRTbv)G-X}8Y*)a0VNn(DdLM1kw;pAuviaMb_a6R${X5I+v{H!*&M;!5BM1E}tX*5P zWna<85ntdm>3d-H4xni}v-6z)PRj9f=hg6dUA+W;M2yF}SHN+&%kEN)5t2P6`Eq7| zi))qjaR)O|F&goR_n_DylwG(;q!DPIc51WZ$&3X~Cs){`X1xrNu2o~XqCzhmPx~!V zIX=~XVALE}Y3;JWCZ9vkshK?HHwfTSltdDMv;u97$b_SEndPx#hxlE$ffH4lQ);0y zdY{cV8D?Y7+qbhVLxx8a#Fh3c?U#-b}B^V5%w0m0>L zYx@nX3M{*7Ps)_z>YB|Eztgg$Dvo~r=)|F5B-tojh>n91=ij z=;dwL=Cox+}WsX%6ys&WS@MS^J?+8kfSZeQh;fSa5x- z!Vj^vIxcTgi`=k;t!>Xfzu(4UM1g^9mbh_MvH5E;>ZP z4DT@B18aNR!RTDsup}=i5M!9m_1A75mD9)!uvhE+EE=;y`YkuD z45p8{tAEjX$Vg!p-^C}pf%;^yZ~2AAL;TU-3XT7L+u7UEva{FP^rXxq-ElptJkA%D z()ZlGqO2-$xH-?^YPP&@gL!EjaPM3~SfBk9u%=$UR`JHxOQm<|I*(c-Z6m}yipb49 z54DfIi{Bc;i)7Uffy^uwF#O?_fxAH2P{CTbvuv7#h_ToQSw3ql(ySB~Z4>hZ4eAct zy^V>a<=K%Ntm@J}_VciorjDC69#FAp5C8z@E^52rMC~!H7TcwB9 zkAI%l=5^QVC)k)Y3WEN^g%58JW7>GI!&Nl-^8uB8J5R3$CT$7^SG^@9rO;jHo+)bv zi*2*0O#lA(LHNID&p$<+`={&wpQ~8$PZyKre^Wy2UoL!t+gTht@~l{Z$7(7iHoiPh z{6-uE{-o@}D_JA3<;?~292?80Oi8C*RQ)KSLmi~2&2$EWoA=|hFE~~5l)TiG7ji(& zb%9tx%s#`>2ubz^m=+pA#l9*B7;j9;r*$e-*w4AmN8!4quo2=vpM#)(4Ycu@t&~ciL{zuSn{0z zrPP1^e?{!t9gs1gnq~w(u)~iT@;X_g<|=JG1O>%ZN$Kz8hy^Q#h#P9AekJ+_b|VoQ z>$al@@%_}1JGvhC#Yp60SluP)un(t3yH=UnBJu6-=5wYU?Tb4~6eErWZl^gqu_LL3 z8=R*E7LqAiRj5~14CH&}x;MYzKpIe6Nf;o-ib+htv?ZO9bQpwY8N`v~eY4It;=&Ut zY8O^giAN(qVu^pz><~d~@1w$vNk#L_JiOV7`t%dKyBLpMb1id)#@%FwrRMEqXcBRG znDIg-kVeRVKNBTWF|=UIG+li+eB;?Ulfqb2KK*Spckd+Aa5*fz0j~cBaBV3C)8O8q zTHcQ4mN&BbO6<^+FEzgU!CJ4h!8-+`lzD(^T>|O-tX*^WLEoCjvKEozX$Z0e=BCBz ze3X*UAFW6Z}!Pm#4tTh=LANiG2msjhf0oBr`8=jqL2twos6|k424+Mj_mIO~Pnjd$GDf>~nvFqecb^CBFXkdf`QXQG~yB*-7>l=1iLs!Q`NyQyC0)k{ zL1wdsn-&Z~6^j1NTx`Ijyrx;Ui2B_Iyx=I_kz<*ruYq@Vsc`kv-_4^Zb2Yu&b+#Sp z^#6LrC9k26-_Qywb<&6Y)>X}1@;qH4?w~s}#*2~1z^It1uMSq6p-CmXdxNr_g0#h~ zPQ^BNHinfHb-JVuqCfWi?4?*?>rv(I%4eNIb?@wY(FFcYVSG}|44Cw!Zqd7-6TF>% z-}B1PG#F)R+=mc!u9l(C22xw?zSvdd{lF$NrA;k9PT;{Eh+8Fc%(B&YkxM=k_c%N( z+7n=2L+1Mg@O7+z#}a~HO{i|VGFZN1p}wJ0Q+Xg$b-4l4;J?oDQ+%bB;&k2hM9wFk zE6PS!EDGVHDLuOL=0U>oS62mZBV1$wgQ9t)g#jVWm+2>(On?=9x49lwt%Q`ho5!ZP zcrWDn*`j(~T|98m6{QqP>R^sjKNpW8Q z-7WcJ@8=q&s=nA7-^zPKYM}4jg5R|v1jWmn9wCpC zGDON6*x-cpHLt`$QrPV5tbHvK9BrdGI+nT2pUH*@WfMr<8*SW~cEsdbcLjYIl2HL) zcF1Lp?P7B)o05lk=Az)pzS_%!60%a%^L}Q!X}IXX!?h(zS123CWy|Q@3`m%3 z`shu=^kFwzCpVqj{`o+&WnFiG(|Yk!-min@bC&JB14WxFGtS<*Bj6cb3wx z54+3kd{q*t*ubE0@fq*j)}~$&cH|J^UfxBG9T+Hy(@M{I=&;Z2wGl$*m>@RVJ?N1~53?;_>CG2Q7HYr@sK8Ab)(4h~@YJuYH?<;AofiFjJ#(W*qSBR9** zvwz2V?WglytoiTk;B>Wf6C_hv7f}4tDdPZt^1*qy>g(hV2n-3o{TwC1C>`}+W(WoI zc}P887&BON>f-RX#bIb*G%V}VP{&t5?EXUwMC2;(>mVa>aht`Q{A6|*R&*CpPR=y% zB!wC0^ZenyJK#%+P$==n>uQ<}Wd|(#`bB#pEyAk#XC}yq8b&133IfEZ558u^pFYh>3QZqyB0P(V ziW0qJU~tNj_dz}L9Fb@*tuiLTflUDny)t|dAh2pR)(us#U+KwFrZG~aqE%XKNBmP6vV&b+IAA51zc^bV-*sIvuq|cdd z$*SWQgUsQBvmtX%&pll7ENw8&4$F|R#1$w3d zUlY4YIAO~%M|SylBL<8CqpQmev1K{1T(bK0Z&mM~-*&E6!8@U)`fbd%NyWALrA&4! z-J2$5Aj>WMDBJqfSHTLTGRmbWv<6#P)K5f_V}*=CaE`_@od?RP?VV0#trtBkWOspC z6`EQS<5`dyAW2Q&)8`S(X-4R7N-nwK0Y!T7B+BW)tMuSvg6u@Qn$cHYpQB>2n>ae# z6ZAAJqNE}J2}NI3=44)5N0?iO292KXGpXACslEhwUxqN_-vb)S)|UP{7z{O}2LDnS znRDfj!-2F8v1Wob>034I$iAO8fGV`j-R(LVPVPv{EH8FSut=)g91jEtf5ln;lAGe; zXA(gN3G0jZ(_ay)VBK9>BtoYtPsugpG+MyDtVwE$t(TAuU9DlGkz_^`MYq6oB;1SM zRtTGO!0U1-a41rho%>pEiich=`h?P z9!SKdJ&#^69+(=&Hyu_45sXifO@^U(p9Bh=t%Y6ok{uS6X2)irQ{Kft-FKT_wQ@P$ zIbEYAKbY(@DDudDMBO#LaKoTutH`kBTu!#ReY6K!U~y#k>*8 zZ{{DmB~JX03$`!AJbn}ZYq{U{6qGbof}(d^j==e6y*57h*EZai|52z7gC9u!c&2{5 zegAk!5YlCu#j;ydyRD?SZ0xcND`46PU3Dk#Z6mE|PySTD?&gStaLJR9WymtPew2cu zCD{27Kx7S0v7FTXH&iSwz>(Y&k-s>uxVIjGAaIMqbiXVcde6NXgi34GFdPoQug;S{ zDf4*NuESHmI!?B?k>p4Y{ku`ubv0e73$dRwd(fXd{le(4q3`Zr18}&><%OxhonY)! zd+W^Dzk4dR9NZTDSo|Oj8+8w&@uzUC`q%gy|NFmO&l{+6gJb(&!||8D#$ST*NviLd zhSg+7@{cmj{=n(S^Yr7r`zK=oAMspUJ3G^~c;z}LYxh9zqPj*y=Lqi|-0Mjt9*{(OB`-ygb%I5C{ReP_`cT3Ga{*xMPyQ5XRS7GJ-` z_1$oea`%}0mbRX{rN`(sdlTC&C)7QZ{?ebx2V|_@zdBF#%&~!(W<}$Qlr5lb>|a58 zUb?ElF(UxWPZGcU{Yw4Adrlc71w5R#GlkKI+^?w+6BfXfCkcz^M&PRVMtvFXfP5bt z?MkYQ<_k5$@(-Hr+?53Zn$xy@hqLR>K@F5?Q*w8K=fKrWGkW(JM#5`uS$x{|+T~CC zh0d3T2o2ZuyM04r1Wff?7q#^Ji8I!a0JCZ1#i~W>0;L)w?ey~5`ll(7W=2pohWVpIP@!+B7CkCJ$E zD?(P$xdzt7!DdXIdufw~nYjVQz%1J`exlWazq6FYmE^hVM3=LMF2o;%JXa)sE~O-x z^XYjn^+Jy=E{~$&0p{(2@5og=-3ckIlM$^eKSWc zM->Q^kqt`Ib~ZxGWj>pBL=dRn26~Q~X|{wedf)H{M&p+gzm5I}q7=wb3jq;_5SV;~ zFo)ZHLtq&QX2VTEvX^|~IAW7m{gq@c+qTe1PhRk!o^pMQwz|`x;9~^ab(T>+8h3NfDA z7sLm%%CfJ~Gp~$K`e9g33;F&B*67En{=Y_mNscnnYKV3#>pE*~W&j?N?p-D3;y58A zmiC~4%MdWr$I_6493VNFGOA_AI%KQYPLA^f3YdnF`Ey_O{e+AGv2zO z1N2DND4U%66l(Yh@i~aML&-7CdPZG#?ZxytCEK(&gidu?Y5w|{mbLSn-ZzWUx9Snzlq?Ra+4yF6Ljz2Z4>-s@Sc-# z`r7d3qY7(KR)UYnQ!$*=YeU)Qs9<13D`{&-{OWzuLT7}$qXw2lkyPX*ZD zbF76msP#{zMVu}PweY7;H*$S8Y7#=H+>1{<6_Zk^lgD@+gU$GY@NgXH4llf_%aUJj zRmkp5W+Tr$)&q3&gc}N@NYWIV<r)Bl7p)xIY%lvb+ zYwD072$JDYz4^&>7dK$H5Fzu$ZudT-{8M!9llxiI#BDVu^Ax(WJ>KFqPO8!EhVu={ zyz3{c;7D%1ixnmMtrF8r-D``|O@s9#IBbbNCwOj&&+k@^2s_KUsc6E+eMy@9BBeZ`5y=cO#XA%zixq zNcxY!_C)>cvGasp;wQLo7oa!zEa$pcX{3iRJ+5%Lfm=p(7aknj3%5MyRAN`PCrHoj z%NzLlK%S$qczn0G%gXfYPvzC>$5xz^&PzeWbgtVkp9fJ;bRk0k!re=Ym})t@MG&8N zs)&h*F?Hrkn4Zt79iHB{9lZC%GxNSmG7ko+8ah8>$PT9mfDt7w#@2y-O>2W)iYYDd zVgBOBRpwqM6FJj;$}_NKP(EBsG>k-Tu7(4gi+qxXGi8dnY{UC7ebY^RhM)BO#rL}8 zA@5V-z0GP;$8uS2Uj2_i=f^qza}i(@ed;vuhv#hjJjJa6RsVD5!`Oq<@>c2&_yyi@ zva!j2;R6a3fPp|5CTf>w`vRTF2!23U3ZM7QPnQC{%9pjZ>Vw}*YOg8<&5t0-zF8im z`*mQr{^@p2-2x&#sKUVEgSoi00zhwiE}I-ua#tc4KdS!2Vfu5t^Hz2ID(a$t`H!*Ic4Xrlr`TevUK1La* z{-++mU7lrh@Mop(EEar8?)ga%*Dj8z6~M0`9(L{^C^(Nyd>GEZsHi5&E~3G_0kK|p zaSkd@Swnf4yNL)3%>Rt1tgJw{G`nJhHw*bLo!_X!)Kl`+$X?|!I5n2*gP}2DM|UW=s?7sG?fj3H|ubo>A1@ijfAq| z`WY0V@Dx0Jr~q+qm4xi==HXvhv(;*QPZpT;w%6>9cdkK_3`Mf);y`=`TKFB-_^>Lx zpkVM%VFgq4H5H4H!oSg9J>B7(!UbZtKWluvy-b>RGiu`qM9n*3Q8lWJVinC`LFFl| zVgoyOqbyqi+6ep?$=hXtFK1O_{{i5B{Ph1I1o-vEJ}23856sr>m)G6(sW52RroU1& zM)!LN=A0F+=EVbLIA9u&Y?;nGvT*sVPqLI2<4ZP0tO?k|B*qQ*Y?@4AJJOt&y=EJW zokj?{&s@ji7dz%;eMJ{Vb5xV#%Rgup<+n?I$Z8J|QP+o1$`(s9Z9H~d0`*2wF7u>? z8QtxeUvvq-=Ysajc(@?zp;kqe-qmy8UN1(A02M*RxtMZHDJq@Z3@ zUMEBB1AT@6vT92tsl7CysPSYe(%#>tz-U|xwop|?(C-k|=gV>H=1gP1r+M&&sd!5? z78#P3Ef@R5I3wG_`wF(XY?BB_5vz*bkRW{{EJ!60E;ssQpK^g*qRAv3FW`WC_X`&N z#D+_M&n=p{HezzwEAIRphRk8uKy9q^j_JZ1FV=d+)qhi4j9n8b<(eyxIxa5E(%^qGwo*mNH5mRI5`t_>qBP)c*M)_w}>thaVpzK4uvmMQy&zVTrnz55c7ci zQU0Ks=32wUy9duTNyQfe;Mi+9N?Y5IIXIn_sekNweaIt>c)J6xu+y0zU_HjMSgyS# z9Miy)9lv689XqGe#-x|1l6Eh|mh%0aU+)r+kd*pe+)isv4is)hCC$K5Wk6x3=17JY z{V3ff_nTn9*--?WaHrIpB0HfO&eySc&dTeI#j#4SwHVH4z@X2;VlP<%!}(GfTn&c& zSPUg-P`i4$3_eQJ90|AQbvA$Hdxq=ULX!94VgiBeD5XvlKs8kXNo>XQw_F^$Xw1w94D9vuy- z7_)ygBTa8IRJA8^UJe=7R9OY7dWt{2*@}C=SRjGtbn1x;Sc!`%$gI1T2e3(T#{^ih zbN34fiju3cQob5;!oj9X_8o85`vN9%;1A2nmmw}-+tDw37_YV2F}rFcccI)CVck-l z*@sYkKCpFls7S*5*}zU`g$>#xe~-tDby0fx*ep{e?Js(oc<|I-Foqgw8#$TY*8ovm zJib5>Op4y5vwf9st7D(HQGnYo8Rl<(?sz6Pu;ri*O5b;+!wQ_M*vwbfg2m!j1B`^me%{H@^o)0sgv6p!VDviI`m z4E^6WF|G+YO1&!T5s^NWo{ke@gCmm7uVVC}oOuw4sj@oXGV^P0orcO7Wq!>QKn&>n zG1zN&QTv(ME44#zAApUA%V4vM*A# zF^9Bqt;o1jk+R-5ED;{6Gw79E%IFbsu}Q1w=v*RFxv3;bKL4Q1B`OVb=NXi1#)<>o7EqvRi`8MyzdRD&G%q)zLvRbU+W)g z%hW?w3Yd|+0}eT_1Jo`%k3k>RG(9gllA`Pb*SN_jpis!>uf2@C7;6uY+y>~Xv5ep=z{JhFb1FWYnaP!m8RCe$^{;;PKf)Ibzv zc=~xDnR-b3qtWvfPa-B&pUg0TDV}|J$y(jdV=?xzBh%->zq>=6ch`( zrz_{()tp+Xf9E}}KcN!du`Lzhk>hR%SFHqe;Hr&M{E!1+n8;%{lSpUtb`5se;SC)8 zFL|!>Y3G=>yjxQe#U42Ort9e!{Bz`=@^}f<8AAt0!mABA4?0I&0}G$NAF^FJe`Xdr zKB!mqxooXRt;U8PZ-LDj5gMac0+cfeAww&Y9a|Y*l{t z9~iQH4`)0arlZpYQ3R61C=grK=`Pjuzw)V`A1YXv_^%GGID!5pPmL96845EEOWQHZ zKi+5gG5PSPhws1YB0s3>^!Uen*Skv;t$z!}P!-)oBed1+SO!`R1G>Nse}rr=uTj z7MAfQ=EMit_jq4vI87#{)sI(?>qcyEak;?+4F$t%5L{lnv4AP1~xl2FVMNp;T{oRE^Q9u%+|y&FW6boaUvB z!JYz{!q%0{0>klkM~UIe_Z;I_TDB#uEM;$jSagCWhcdlBuL_GmWLt>o8Gm{uz)>M+X1EQo#Cfz(S= zI|@`!efa8x-rJIu+r>ikTQicC8Hw(K-&taTH7Kd|vNhu}9Ev=NY=C$UHr1zMz}*}f za;{7x?atPlv`bdjIn^Ex3(GsM_ZFv+y`Fn!wR2`8UWgLdMAKb;nVVJCQT;_Qi?SJ` zh9zxQ`L3QL$UMoX%qbmAU;&!{cUb=Vbe`NGle6Ds<3D^L0#PW35e1swwvCXD5kjTY z@?02G$E2F==Meb-^w-SRWRX&cySGR^t0lC&N;ekbl-fLCdla_64x8LQcKo?YW;b?l zk$NGO7I@&37@id~FitN6m;qHt^CNVPVIF#GSl>Lhc?aG%#~Nor39GlBD>9oQhX$GX zqB4B4iR5nfnoOsf>Yl;2pKXrX2O!1tbmBMvJcLoN^|^s;4GF*0eYme1GC0&flikNS za}PiLO3{13r7rHgw0J$Jpq?p+P#9ahCMVG&rhy3h1+jCFGK!olgndIKb9%*kOi8?x zHZtLPc}wKkMQ53Z3+cV1`0RPSYn$MXfluuxl^8Z6*@+{Bg<}roa zfzr8%Ve~tG{V_71_b2*Zs(@we=7!Xzula1X&j^{q^p5Tpl1oi4o|38nF8MX>MSGF& z`R^=C7Wg3U<@xcwTNFB{+C0ppxWt7w*L(I$thR2kfDT}P zF`w#X$qM;-<#DOyg_sz-#`Z+9h7Kv)bd`aNaEoau;GrFG9`CXlM((0u!_40ptael# zE4?Jt>Vdm86c+erKh!Dg#p?we(ydQ_})-`+Q)Gq9PN9wdS{ z1|{RWCZ%TSH0ICv;+N+ft(|$hbv!qFvNi!%t@gF~9;5xrvkkS>W!)E&iMIYOmFR*E zeG(q%P_<&o4a}KS=ILwYQ5`$5(zb=*rQ!2?{uf_ob{my7tEA+OLVxzQNLU>#7|z6# zP|<b@kv?^j03$IBk2f&bOe3fQv8!|daCbtmJ_XwZPygv z)kK3mErwnL|6;9MRj=aKuWh$ThZ8?1UN{AZ^rWvmpt{ivCivHancb|rjd5=mUKs?W z4@N$$_aJ4OyGLv7#hJth>tqNvLJ_BzV!FVAKqW>dR@L|#`PzgT-t+u^DOUur1WjZts1M zL8S-ygACym>TPYGL@?yr1vM+ND4v}z5ZeK6XH8T!7#!j^X#R_np$EOPDpbVvG6!av z>;qW2`=KU^aWcGmg;5eh_7iuv#n6}OfKp>p6cE1-iO)xEc@h>Hl(!ZZnardCN^kG< z<{&VUkQu*&xR4j`1&56Qx0`p&}dCzNf4^4=rY>%`b<-nDMOw^s11R)Zswq2mF``9G-ir}cKKZxC za=Q1Z?{#Irv-EwYvA4lGg8a4LFT?3$2+a;`wD!AB!A5#Mb#B(zsz{>S7@SE6z&DQ( zL}33cDHLlDSnA}U!KKmK|&BYi_mMxBcn)6c4;<3gDDY}n>P8| zDGOuIs79myRg1K>I057IupTZWJFJ)q?hQ-+-{i#pH9-DY`mc$=IT^WK#g^31`LRcL zP>C1DEb@e0u4#Lmi_MH_5&WF-iChL*jA3i5CXvX5toifG7Is3Xt)A2|6uL5}+E#3s zHX7XU3qdW;i6w!!o@PxO=nNeRlj>XU?gaK+w~eLSjoR3^{H~p*TVLsC(*o*%pn7tf@LU? z9Iaj@<4lCNouiO1D35HB;gOal6_EYB(f3;#aI;`R?}$nG8>aU!WqzVBC*HNIHQC_1 z=;G_Yb=NENX-XLf{8G9YDr~yD9S#|vwtQ*}S-EqBTy@vCzWjP7(#l+m zp$bA(vMHI%n>0-3;6`&(A2Lk-I=1< zToN)DY|zF!v)8cunFGA^Vfv$CtA`g-AHQ(Ox<{6U63&ubg={I|q`aYSbtNTb zU_Pji|D%eyybn+i*VC5V4~?{zNS(9Hi(z9rZ2Ii;W-p;S(w47EVg`zy#2fOiIHVrd zPjoe&snM8T-UTU{f1IRrCal2Kd)vQW?`RbYefUuVv*)^!A*C1ZoOp3$W?9=sM5JsZ zlMd~jiJQ(M(uP?`$7H_9y<+By5^-H^L)(rg9K!NP!^ zSKFK|g|eBR7G21@vJ~HkkG{7#*zMEAnb%#AZ3|E%f9_=I6t{b<8*N(EDnE?vc$ zh8Gq@Th@`KZOfsf0pj<+OY9 zgcDNFG9?OPgyBvmYtkcjc!0AsZ(N;-(C!^$^0=uUu= zc&#;&m#e)))TI`r9da!=2>A`~neYqye5WUmd$!UNlV*laQJf1+GS;EIB;J8ZMzCs$ zXKNF2_b9TIIaUyKKW%M;!8EEleExRjm8{Nya3XtqFT+@Kx*oN@yxJJ?Ej#(lS{4@( z@9j^uQnO^lU0Bn7XWR)p8m0(T!PXpeBrwTJK`RZeyG!jDMO;j|d$C5b;S95NXf0vX z?a>8G4RDknj#w*HdX)HyIP0D?f|ICa(kD`GmbfU3zm#`q<1K%uQQYsb$7*g_Z(P=! zfcJ&xR?lPmMDc02PF+|d|c2LeA3_<_Lx L(FmOVKJfnlgrVJU diff --git a/docs/spring-ai-mcp-uml-classdiagram.svg b/docs/spring-ai-mcp-uml-classdiagram.svg deleted file mode 100644 index 9636008..0000000 --- a/docs/spring-ai-mcp-uml-classdiagram.svg +++ /dev/null @@ -1 +0,0 @@ -McpTransportMono<Void> connect(Function<Mono<JSONRPCMessage>, Mono<JSONRPCMessage>> handler)Mono<Void> sendMessage(JSONRPCMessage message)void close()Mono<Void> closeGracefully()<T> T unmarshalFrom(Object data, TypeReference<T> typeRef)McpSession<T> Mono<T> sendRequest(String method, Object requestParams, TypeReference<T> typeRef)Mono<Void> sendNotification(String method, Map<String, Object> params)Mono<Void> closeGracefully()void close()DefaultMcpSessionMcpTransport transportObjectMapper objectMapperinterface RequestHandlerinterface NotificationHandlerMcpClientBuilder using(McpTransport transport)McpAsyncClient async(McpTransport transport)McpSyncClient sync(McpTransport transport)McpAsyncClientMono<InitializeResult> initialize()Mono<CallToolResult> callTool(CallToolRequest request)Mono<ListToolsResult> listTools()Mono<ListResourcesResult> listResources()Mono<ReadResourceResult> readResource(ReadResourceRequest request)Mono<ListResourceTemplatesResult> listResourceTemplates()Mono<ListPromptsResult> listPrompts()Mono<GetPromptResult> getPrompt(GetPromptRequest request)McpSyncClientInitializeResult initialize()CallToolResult callTool(CallToolRequest request)ListToolsResult listTools()ListResourcesResult listResources()ReadResourceResult readResource(ReadResourceRequest request)ListResourceTemplatesResult listResourceTemplates()ListPromptsResult listPrompts()GetPromptResult getPrompt(GetPromptRequest request)McpServerBuilder using(McpTransport transport)McpAsyncServerinterface ToolHandlerMono<Void> addTool(ToolHandler toolHandler)Mono<Void> removeTool(String toolName)Mono<Void> notifyToolsListChanged()Mono<Void> notifyResourcesListChanged()Mono<Void> notifyPromptsListChanged()McpSyncServervoid addTool(ToolHandler toolHandler)void removeTool(String toolName)void notifyToolsListChanged()void notifyResourcesListChanged()void notifyPromptsListChanged()McpAsyncServer getAsyncServer()StdioClientTransportProcess serverProcessServerParameters parametersSseClientTransportWebClient webClientStdioServerTransportSseServerTransportMcpSchemaclass ErrorCodesinterface Requestinterface JSONRPCMessageinterface ResourceContentsinterface Contentinterface ServerCapabilitiesJSONRPCMessage deserializeJsonRpcMessage()McpErrorint codeString messagecreatescreatescreatescreatesusesthrows \ No newline at end of file diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml b/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml new file mode 100644 index 0000000..7a2dfe2 --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml @@ -0,0 +1,267 @@ +@startuml Core Components + +' Core Interfaces +interface McpTransport { + +Mono connect(Function, Mono> handler) + +Mono sendMessage(JSONRPCMessage message) + +void close() + +Mono closeGracefully() + + T unmarshalFrom(Object data, TypeReference typeRef) +} + +interface McpSession { + + Mono sendRequest(String method, Object requestParams, TypeReference typeRef) + +Mono sendNotification(String method, Map params) + +Mono closeGracefully() + +void close() +} + +' Core Implementation Classes +class DefaultMcpSession { + +interface RequestHandler + +interface NotificationHandler +} + +' Client Classes +class McpClient { + +{static} Builder using(ClientMcpTransport transport) +} + +class McpAsyncClient { + +Mono initialize() + +ServerCapabilities getServerCapabilities() + +Implementation getServerInfo() + +ClientCapabilities getClientCapabilities() + +Implementation getClientInfo() + +void close() + +Mono closeGracefully() + +Mono ping() + +Mono addRoot(Root root) + +Mono removeRoot(String rootUri) + +Mono rootsListChangedNotification() + +Mono callTool(CallToolRequest request) + +Mono listTools() + +Mono listResources() + +Mono readResource(ReadResourceRequest request) + +Mono listResourceTemplates() + +Mono subscribeResource(SubscribeRequest request) + +Mono unsubscribeResource(UnsubscribeRequest request) + +Mono listPrompts() + +Mono getPrompt(GetPromptRequest request) + +Mono setLoggingLevel(LoggingLevel level) +} + +class McpSyncClient { + +InitializeResult initialize() + +ServerCapabilities getServerCapabilities() + +Implementation getServerInfo() + +ClientCapabilities getClientCapabilities() + +Implementation getClientInfo() + +void close() + +boolean closeGracefully() + +Object ping() + +void addRoot(Root root) + +void removeRoot(String rootUri) + +void rootsListChangedNotification() + +CallToolResult callTool(CallToolRequest request) + +ListToolsResult listTools() + +ListResourcesResult listResources() + +ReadResourceResult readResource(ReadResourceRequest request) + +ListResourceTemplatesResult listResourceTemplates() + +void subscribeResource(SubscribeRequest request) + +void unsubscribeResource(UnsubscribeRequest request) + +ListPromptsResult listPrompts() + +GetPromptResult getPrompt(GetPromptRequest request) + +void setLoggingLevel(LoggingLevel level) +} + +' Server Classes +class McpServer { + +{static} Builder using(ServerMcpTransport transport) +} + +class McpAsyncServer { + + +ServerCapabilities getServerCapabilities() + +Implementation getServerInfo() + +ClientCapabilities getClientCapabilities() + +Implementation getClientInfo() + +void close() + +Mono closeGracefully() + + ' Tool Management + +Mono addTool(ToolRegistration toolRegistration) + +Mono removeTool(String toolName) + +Mono notifyToolsListChanged() + + ' Resource Management + +Mono addResource(ResourceRegistration resourceHandler) + +Mono removeResource(String resourceUri) + +Mono notifyResourcesListChanged() + + ' Prompt Management + +Mono addPrompt(PromptRegistration promptRegistration) + +Mono removePrompt(String promptName) + +Mono notifyPromptsListChanged() + + ' Logging + +Mono loggingNotification(LoggingMessageNotification notification) + + ' Sampling + +Mono createMessage(CreateMessageRequest request) +} + +class McpSyncServer { + +McpAsyncServer getAsyncServer() + + +ServerCapabilities getServerCapabilities() + +Implementation getServerInfo() + +ClientCapabilities getClientCapabilities() + +Implementation getClientInfo() + +void close() + +void closeGracefully() + + ' Tool Management + +void addTool(ToolRegistration toolHandler) + +void removeTool(String toolName) + +void notifyToolsListChanged() + + ' Resource Management + +void addResource(ResourceRegistration resourceHandler) + +void removeResource(String resourceUri) + +void notifyResourcesListChanged() + + ' Prompt Management + +void addPrompt(PromptRegistration promptRegistration) + +void removePrompt(String promptName) + +void notifyPromptsListChanged() + + ' Logging + +void loggingNotification(LoggingMessageNotification notification) + + ' Sampling + +CreateMessageResult createMessage(CreateMessageRequest request) +} + +' Transport Implementations +class StdioClientTransport implements ClientMcpTransport { + +void setErrorHandler(Consumer errorHandler) + +Sinks.Many getErrorSink() +} + +class SseClientTransport implements ClientMcpTransport { +} + +class StdioServerTransport implements ServerMcpTransport { +} + +class SseServerTransport implements ServerMcpTransport { + +RouterFunction getRouterFunction() +} + +' Schema and Error Classes +class McpSchema { + +class ErrorCodes + +interface Request + +interface JSONRPCMessage + +interface ResourceContents + +interface Content + +interface ServerCapabilities + +{static} JSONRPCMessage deserializeJsonRpcMessage() +} + +class McpError { +} + +' Relationships +McpTransport <|.. ClientMcpTransport +McpTransport <|.. ServerMcpTransport + +McpSession <|.. DefaultMcpSession +DefaultMcpSession --o McpAsyncClient +DefaultMcpSession --o McpAsyncServer + +McpClient ..> McpAsyncClient : creates +McpClient ..> McpSyncClient : creates +McpSyncClient --> McpAsyncClient : delegates to + +McpServer ..> McpAsyncServer : creates +McpServer ..> McpSyncServer : creates +McpSyncServer o-- McpAsyncServer + +DefaultMcpSession o-- McpTransport +McpSchema <.. McpSession : uses +McpError ..> McpSession : throws + +@enduml + +@startuml Message Flow + +package "MCP Schema" { + interface JSONRPCMessage { + +String jsonrpc() + } + + interface Request { + } + + class InitializeRequest + class CallToolRequest + class ListToolsRequest + class ListResourcesRequest + class ReadResourceRequest + class ListResourceTemplatesRequest + class ListPromptsRequest + class GetPromptRequest +} + +package "Resource Types" { + interface ResourceContents { + +String uri() + +String mimeType() + } + + class TextResourceContents + class BlobResourceContents + + interface Content { + +String type() + } + + class TextContent + class ImageContent + class EmbeddedResource + + interface Annotated { + +Annotations annotations() + } + + interface PromptOrResourceReference { + +String type() + } + + class PromptReference + class ResourceReference +} + +JSONRPCMessage <|.. Request +Request <|.. InitializeRequest +Request <|.. CallToolRequest +Request <|.. ListToolsRequest +Request <|.. ListResourcesRequest +Request <|.. ReadResourceRequest +Request <|.. ListResourceTemplatesRequest +Request <|.. ListPromptsRequest +Request <|.. GetPromptRequest + +ResourceContents <|.. TextResourceContents +ResourceContents <|.. BlobResourceContents + +Content <|.. TextContent +Content <|.. ImageContent +Content <|.. EmbeddedResource + +PromptOrResourceReference <|.. PromptReference +PromptOrResourceReference <|.. ResourceReference + +@enduml diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg index 9636008..ecf2b64 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg +++ b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg @@ -1 +1 @@ -McpTransportMono<Void> connect(Function<Mono<JSONRPCMessage>, Mono<JSONRPCMessage>> handler)Mono<Void> sendMessage(JSONRPCMessage message)void close()Mono<Void> closeGracefully()<T> T unmarshalFrom(Object data, TypeReference<T> typeRef)McpSession<T> Mono<T> sendRequest(String method, Object requestParams, TypeReference<T> typeRef)Mono<Void> sendNotification(String method, Map<String, Object> params)Mono<Void> closeGracefully()void close()DefaultMcpSessionMcpTransport transportObjectMapper objectMapperinterface RequestHandlerinterface NotificationHandlerMcpClientBuilder using(McpTransport transport)McpAsyncClient async(McpTransport transport)McpSyncClient sync(McpTransport transport)McpAsyncClientMono<InitializeResult> initialize()Mono<CallToolResult> callTool(CallToolRequest request)Mono<ListToolsResult> listTools()Mono<ListResourcesResult> listResources()Mono<ReadResourceResult> readResource(ReadResourceRequest request)Mono<ListResourceTemplatesResult> listResourceTemplates()Mono<ListPromptsResult> listPrompts()Mono<GetPromptResult> getPrompt(GetPromptRequest request)McpSyncClientInitializeResult initialize()CallToolResult callTool(CallToolRequest request)ListToolsResult listTools()ListResourcesResult listResources()ReadResourceResult readResource(ReadResourceRequest request)ListResourceTemplatesResult listResourceTemplates()ListPromptsResult listPrompts()GetPromptResult getPrompt(GetPromptRequest request)McpServerBuilder using(McpTransport transport)McpAsyncServerinterface ToolHandlerMono<Void> addTool(ToolHandler toolHandler)Mono<Void> removeTool(String toolName)Mono<Void> notifyToolsListChanged()Mono<Void> notifyResourcesListChanged()Mono<Void> notifyPromptsListChanged()McpSyncServervoid addTool(ToolHandler toolHandler)void removeTool(String toolName)void notifyToolsListChanged()void notifyResourcesListChanged()void notifyPromptsListChanged()McpAsyncServer getAsyncServer()StdioClientTransportProcess serverProcessServerParameters parametersSseClientTransportWebClient webClientStdioServerTransportSseServerTransportMcpSchemaclass ErrorCodesinterface Requestinterface JSONRPCMessageinterface ResourceContentsinterface Contentinterface ServerCapabilitiesJSONRPCMessage deserializeJsonRpcMessage()McpErrorint codeString messagecreatescreatescreatescreatesusesthrows \ No newline at end of file +McpTransportMono<Void> connect(Function<Mono<JSONRPCMessage>, Mono<JSONRPCMessage>> handler)Mono<Void> sendMessage(JSONRPCMessage message)void close()Mono<Void> closeGracefully()<T> T unmarshalFrom(Object data, TypeReference<T> typeRef)McpSession<T> Mono<T> sendRequest(String method, Object requestParams, TypeReference<T> typeRef)Mono<Void> sendNotification(String method, Map<String, Object> params)Mono<Void> closeGracefully()void close()DefaultMcpSessioninterface RequestHandlerinterface NotificationHandlerMcpClientBuilder using(ClientMcpTransport transport)McpAsyncClientMono<InitializeResult> initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully()Mono<Object> ping()Mono<Void> addRoot(Root root)Mono<Void> removeRoot(String rootUri)Mono<Void> rootsListChangedNotification()Mono<CallToolResult> callTool(CallToolRequest request)Mono<ListToolsResult> listTools()Mono<ListResourcesResult> listResources()Mono<ReadResourceResult> readResource(ReadResourceRequest request)Mono<ListResourceTemplatesResult> listResourceTemplates()Mono<Void> subscribeResource(SubscribeRequest request)Mono<Void> unsubscribeResource(UnsubscribeRequest request)Mono<ListPromptsResult> listPrompts()Mono<GetPromptResult> getPrompt(GetPromptRequest request)Mono<Void> setLoggingLevel(LoggingLevel level)McpSyncClientInitializeResult initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()boolean closeGracefully()Object ping()void addRoot(Root root)void removeRoot(String rootUri)void rootsListChangedNotification()CallToolResult callTool(CallToolRequest request)ListToolsResult listTools()ListResourcesResult listResources()ReadResourceResult readResource(ReadResourceRequest request)ListResourceTemplatesResult listResourceTemplates()void subscribeResource(SubscribeRequest request)void unsubscribeResource(UnsubscribeRequest request)ListPromptsResult listPrompts()GetPromptResult getPrompt(GetPromptRequest request)void setLoggingLevel(LoggingLevel level)McpServerBuilder using(ServerMcpTransport transport)McpAsyncServerServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully() Mono<Void> addTool(ToolRegistration toolRegistration)Mono<Void> removeTool(String toolName)Mono<Void> notifyToolsListChanged() Mono<Void> addResource(ResourceRegistration resourceHandler)Mono<Void> removeResource(String resourceUri)Mono<Void> notifyResourcesListChanged() Mono<Void> addPrompt(PromptRegistration promptRegistration)Mono<Void> removePrompt(String promptName)Mono<Void> notifyPromptsListChanged() Mono<Void> loggingNotification(LoggingMessageNotification notification) Mono<CreateMessageResult> createMessage(CreateMessageRequest request)McpSyncServerMcpAsyncServer getAsyncServer() ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()void closeGracefully() void addTool(ToolRegistration toolHandler)void removeTool(String toolName)void notifyToolsListChanged() void addResource(ResourceRegistration resourceHandler)void removeResource(String resourceUri)void notifyResourcesListChanged() void addPrompt(PromptRegistration promptRegistration)void removePrompt(String promptName)void notifyPromptsListChanged() void loggingNotification(LoggingMessageNotification notification) CreateMessageResult createMessage(CreateMessageRequest request)StdioClientTransportvoid setErrorHandler(Consumer<String> errorHandler)Sinks.Many<String> getErrorSink()ClientMcpTransportSseClientTransportStdioServerTransportServerMcpTransportSseServerTransportRouterFunction<?> getRouterFunction()McpSchemaclass ErrorCodesinterface Requestinterface JSONRPCMessageinterface ResourceContentsinterface Contentinterface ServerCapabilitiesJSONRPCMessage deserializeJsonRpcMessage()McpErrorcreatescreatesdelegates tocreatescreatesusesthrows \ No newline at end of file diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index af7ca77..dc3755b 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -41,7 +41,7 @@ image::MCP-layers.svg[width=400,align=center] Following class diagram illustrates the layered architecture of the MCP SDK, showing the relationships between core interfaces (McpTransport, McpSession), their implementations, and the client/server components. It highlights how the transport layer connects to sessions, which in turn support both synchronous and asynchronous client/server implementations. -image::spring-ai-mcp-uml-classdiagram.svg[width=800] +image::spring-ai-mcp-uml-classdiagram.svg[width=1000] Key Interactions: diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index a45d2fd..04fe69f 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -1,16 +1,13 @@ = Java & Spring MCP -Java SDK for the Model Context Protocol (MCP), providing seamless integration between Java and Spring applications and MCP-compliant AI resources and tools. - -== Overview - -Provides Java and Spring Framework integration for the link:https://modelcontextprotocol.org/docs/concepts/architecture[Model Context Protocol]. It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. +Set of tools to provide Java SDK and Spring Framework integration for the link:https://modelcontextprotocol.org/docs/concepts/architecture[Model Context Protocol]. +It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. image::spring-ai-mcp-architecture.jpg[Spring AI MCP Architecture,600] -== Modules +== Projects -The project consists of two main modules: +There are two main projects in this repository: === xref:mcp.adoc[MCP Java SDK] @@ -57,7 +54,8 @@ Maven:: ---- + -This is a milestone release. It is not available on Maven Central. Add this repository to your POM: +This is a milestone release, not available on Maven Central. +Add this repository to your POM: + [source,xml] ---- diff --git a/mcp/README.md b/mcp/README.md index f51b0be..0fcffcb 100644 --- a/mcp/README.md +++ b/mcp/README.md @@ -2,443 +2,4 @@ Java SDK implementation of the Model Context Protocol, enabling seamless integration with language models and AI tools. -## Features - -- Synchronous and Asynchronous MCP Client and MCP Server implementations -- Standard MCP operations support: - - Protocol version compatibility negotiation - - Tool discovery and execution with change notifications - - Tool list change notifications with non-blocking consumer support - - Resource management with URI templates - - Resource subscription system - - Roots list management and notifications - - Prompt handling and management -- Multiple transport implementations: - - Stdio-based transport for process-based communication - - SSE-based transport for HTTP streaming -- Configurable request timeouts - -## Installation - -Add the following dependency to your Maven project: - -```xml - - org.springframework.experimental - mcp - 0.4.0-SNAPSHOT - -``` - -## Architecture - -The SDK follows a layered architecture with clear separation of concerns: - -### Core Components Hierarchy - - - -- **Transport Layer (McpTransport)**: Handles JSON-RPC message serialization/deserialization via StdioTransport (stdin/stdout) and SseTransport (HTTP streaming). -- **Session Layer (McpSession)**: Manages communication patterns and state using DefaultMcpSession implementation. -- **Client/Server Layer**: Both use McpSession for sync/async operations, with McpClient handling client-side protocol operations and McpServer managing server-side protocol operations. - -Following class diagram illustrates the layered architecture of the MCP SDK, showing the relationships between core interfaces (McpTransport, McpSession), their implementations, and the client/server components. It highlights how the transport layer connects to sessions, which in turn support both synchronous and asynchronous client/server implementations. - - - -### Key Interactions - -- **Client/Server Initialization**: Transport setup, protocol compatibility check, capability negotiation, and implementation details exchange. -- **Message Flow**: JSON-RPC message handling with validation, type-safe response processing, and error handling. -- **Resource Management**: Resource discovery, URI template-based access, subscription system, and content retrieval. -- **Prompt System**: Discovery, parameter-based retrieval, change notifications, and content management. -- **Tool Execution**: Discovery, parameter validation, timeout-aware execution, and result processing. - - -## Client Usage Examples - -### MCP Client (Sync API) - -```java -// Create a sync client with custom configuration -McpSyncClient client = McpClient.using(transport) - .requestTimeout(Duration.ofSeconds(10)) - .capabilities(ClientCapabilities.builder() - .roots(true) // Enable roots capability - .sampling() // Enable sampling capability - .build()) - .sync(); - -// Initialize connection -client.initialize(); - -// List available tools -ListToolsResult tools = client.listTools(); - -// Call a tool -CallToolResult result = client.callTool( - new CallToolRequest("calculator", - Map.of("operation", "add", "a", 2, "b", 3)) -); - -// List and read resources -ListResourcesResult resources = client.listResources(); -ReadResourceResult resource = client.readResource( - new ReadResourceRequest("resource://uri") -); - -// List and use prompts -ListPromptsResult prompts = client.listPrompts(); -GetPromptResult prompt = client.getPrompt( - new GetPromptRequest("greeting", Map.of("name", "Spring")) -); - -// Add/remove roots -client.addRoot(new Root("file:///path", "description")); -client.removeRoot("file:///path"); -client.rootsListChangedNotification(); - -// Close client -client.closeGracefully(); -``` - -### MCP Client (Async API) - -```java -// Create an async client with custom configuration -McpAsyncClient client = McpClient.using(transport) - .requestTimeout(Duration.ofSeconds(10)) - .capabilities(ClientCapabilities.builder() - .roots(true) // Enable roots capability - .sampling() // Enable sampling capability - .build()) - .toolsChangeConsumer(tools -> { - logger.info("Tools updated: {}", tools); - }) - .resourcesChangeConsumer(resources -> { - logger.info("Resources updated: {}", resources); - }) - .promptsChangeConsumer(prompts -> { - logger.info("Prompts updated: {}", prompts); - }) - .async(); - -// Initialize connection -client.initialize() - .flatMap(initResult -> { - // List available tools - return client.listTools(); - }) - .flatMap(tools -> { - // Call a tool - return client.callTool(new CallToolRequest( - "calculator", - Map.of("operation", "add", "a", 2, "b", 3) - )); - }) - .flatMap(result -> { - // List and read resources - return client.listResources() - .flatMap(resources -> - client.readResource(new ReadResourceRequest("resource://uri")) - ); - }) - .flatMap(resource -> { - // List and use prompts - return client.listPrompts() - .flatMap(prompts -> - client.getPrompt(new GetPromptRequest( - "greeting", - Map.of("name", "Spring") - )) - ); - }) - .flatMap(prompt -> { - // Add/remove roots - return client.addRoot(new Root("file:///path", "description")) - .then(client.removeRoot("file:///path")) - .then(client.rootsListChangedNotification()); - }) - .doFinally(signalType -> { - // Close client - client.closeGracefully().subscribe(); - }) - .subscribe(); -``` - -### Client Transport Options - -#### StdioClientTransport -```java -// Create transport for process-based communication -ServerParameters params = ServerParameters.builder("npx") - .args("-y", "@modelcontextprotocol/server-everything", "dir") - .build(); -McpTransport transport = new StdioClientTransport(params); -``` - -#### SseClientTransport -```java -// Create transport for HTTP streaming -WebClient.Builder webClientBuilder = WebClient.builder() - .baseUrl("http://your-mcp-server"); -McpTransport transport = new SseClientTransport(webClientBuilder); -``` - - -### Client Capabilities - -The client can be configured with various capabilities: - -```java -var capabilities = ClientCapabilities.builder() - .roots(true) // Enable filesystem roots support with list changes notifications - .sampling() // Enable LLM sampling support - .build(); -``` - -#### Roots Support - -Roots define the boundaries of where servers can operate within the filesystem: - -```java -// Add a root dynamically -client.addRoot(new Root("file:///path", "description")); - -// Remove a root -client.removeRoot("file:///path"); - -// Notify server of roots changes -client.rootsListChangedNotification(); -``` - -The roots capability allows servers to: -- Request the list of accessible filesystem roots -- Receive notifications when the root list changes -- Understand which directories and files they have access to - -#### Sampling Support - -Sampling enables servers to request LLM interactions ("completions" or "generations") through the client: - -```java -// Configure sampling handler -Function samplingHandler = request -> { - // Sampling implementation that interfaces with LLM - return new CreateMessageResult(response); -}; - -// Create client with sampling support -var client = McpClient.using(transport) - .capabilities(ClientCapabilities.builder() - .sampling() - .build()) - .samplingHandler(samplingHandler) - .build(); -``` - -This capability allows: -- Servers to leverage AI capabilities without requiring API keys -- Clients to maintain control over model access and permissions -- Support for both text and image-based interactions -- Optional inclusion of MCP server context in prompts - -## Server Usage Examples - -### MCP Server (Sync API) - -```java -// Create a server with custom configuration -McpSyncServer syncServer = McpServer.using(transport) - .info("my-server", "1.0.0") - .capabilities(ServerCapabilities.builder()...build()) - .tools(new CalculatorTool()) - .resources(resourceRegistration) - .prompts(promptRegistration) - .sync(); - -// Add a tool handler at runtime -syncServer.addTool(new CalculatorTool()); - -// Remove a tool handler at runtime -syncServer.removeTool("calculator"); - -// Add a resource at runtime -syncServer.addResource(resourceRegistration); - -// Remove a resource at runtime -syncServer.removeResource(resourceUri); - -// Add a prompt at runtime -syncServer.addPrompt(promptRegistration); - -// Remove a prompt at runtime -syncServer.removePrompt(promptName); - -// Graceful shutdown -syncServer.closeGracefully(); -``` - -### MCP Server (Async API) - -```java -// Create an async server with custom configuration -McpAsyncServer asyncServer = McpServer.using(transport) - .info("my-server", "1.0.0") - .capabilities(ServerCapabilities.builder()...build()) - .tools(new CalculatorTool()) - .resources(resourceRegistration) - .prompts(promptRegistration) - .async(); - -// Add a tool handler at runtime -asyncServer.addTool(new CalculatorTool()) - .doOnSuccess(v -> logger.info("Tool added")) - .subscribe(); - -// Remove a tool handler at runtime -asyncServer.removeTool("calculator") - .doOnSuccess(v -> logger.info("Tool removed")) - .subscribe(); - -// Add a resource at runtime -asyncServer.addResource(resourceRegistration) - .doOnSuccess(v -> logger.info("Resource added")) - .subscribe(); - -// Remove a resource at runtime -asyncServer.removeResource(resourceUri) - .doOnSuccess(v -> logger.info("Resource removed")) - .subscribe(); - -// Add a prompt at runtime -asyncServer.addPrompt(promptRegistration) - .doOnSuccess(v -> logger.info("Prompt added")) - .subscribe(); - -// Remove a prompt at runtime -asyncServer.removePrompt(promptName) - .doOnSuccess(v -> logger.info("Prompt removed")) - .subscribe(); - -// Notify clients of changes -asyncServer.notifyToolsListChanged().subscribe(); -asyncServer.notifyResourcesListChanged().subscribe(); -asyncServer.notifyPromptsListChanged().subscribe(); - -// Graceful shutdown -asyncServer.closeGracefully().subscribe(); -``` - -### Server Transport Options - -#### StdioServerTransport -```java -// Create transport with custom ObjectMapper -ObjectMapper mapper = new ObjectMapper(); -StdioServerTransport transport = new StdioServerTransport(mapper); -``` - -Provides bidirectional JSON-RPC message handling over standard input/output streams with non-blocking message processing, serialization/deserialization, and graceful shutdown support. - -#### SseServerTransport -```java -// Create SSE transport -ObjectMapper mapper = new ObjectMapper(); -String messageEndpoint = "/mcp/message"; -SseServerTransport transport = new SseServerTransport(mapper, messageEndpoint); - -// Get router function for web server configuration -RouterFunction router = transport.getRouterFunction(); -``` - -Implements the MCP HTTP with SSE transport specification, providing concurrent client connections through SSE endpoints with message routing, session management, and graceful shutdown capabilities. - - -### Server Capabilities - -The server can be configured with various capabilities: - -```java -var capabilities = ServerCapabilities.builder() - .resources(false, true) // Resource support with list changes notifications - .tools(true) // Tool support with list changes notifications - .prompts(true) // Prompt support with list changes notifications - .logging() // Enable logging support (enabled by default with loging level INFO) - .build(); -``` - -#### Logging Support - -The server provides structured logging capabilities that allow sending log messages to clients with different severity levels: - -```java -// Send a log message to clients -server.loggingNotification(LoggingMessageNotification.builder() - .level(LoggingLevel.INFO) - .logger("custom-logger") - .data("Custom log message") - .build()); -``` - -Supported logging levels (in order of increasing severity): -- DEBUG (0) -- INFO (1) -- NOTICE (2) -- WARNING (3) -- ERROR (4) -- CRITICAL (5) -- ALERT (6) -- EMERGENCY (7) - -Clients can control the minimum logging level they receive through the `mcpClient.setLoggingLevel(level)` request. Messages below the set level will be filtered out. - -#### Tool Registration - -```java -var toolRegistration = new ToolRegistration( - new Tool("calculator", "Basic calculator", Map.of( - "operation", "string", - "a", "number", - "b", "number" - )), - arguments -> { - // Tool implementation - return new CallToolResult(result, false); - } -); -``` - -#### Resource Registration - -```java -var resourceRegistration = new ResourceRegistration( - new Resource("custom://resource", "name", "description", "mime-type", null), - request -> { - // Resource read implementation - return new ReadResourceResult(contents); - } -); -``` - -#### Prompt Registration - -```java -var promptRegistration = new PromptRegistration( - new Prompt("greeting", "description", List.of( - new PromptArgument("name", "description", true) - )), - request -> { - // Prompt implementation - return new GetPromptResult(description, messages); - } -); -``` - -## Error Handling - -The SDK provides comprehensive error handling through the McpError class, covering protocol compatibility, transport communication, JSON-RPC messaging, tool execution, resource management, prompt handling, timeouts, and connection issues. This unified error handling approach ensures consistent and reliable error management across both synchronous and asynchronous operations. - -## Contributing - -See [CONTRIBUTING.md](../CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests. +Find more at [Java MCP SDK](https://docs.spring.io/spring-ai-mcp/reference/mcp.html) \ No newline at end of file diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index c4473a4..e1bc8f1 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -30,6 +30,7 @@ import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.DefaultMcpSession; import org.springframework.ai.mcp.spec.DefaultMcpSession.NotificationHandler; import org.springframework.ai.mcp.spec.DefaultMcpSession.RequestHandler; @@ -129,7 +130,7 @@ public class McpAsyncClient { * @param loggingConsumers the logging consumers. * @param samplingHandler the sampling handler. */ - public McpAsyncClient(McpTransport transport, Duration requestTimeout, Implementation clientInfo, + public McpAsyncClient(ClientMcpTransport transport, Duration requestTimeout, Implementation clientInfo, ClientCapabilities clientCapabilities, Map roots, List>> toolsChangeConsumers, List>> resourcesChangeConsumers, diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java index dcd8bd0..cac0001 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; @@ -115,7 +116,7 @@ public interface McpClient { * @return A new builder instance for configuring the client * @throws IllegalArgumentException if transport is null */ - public static Builder using(McpTransport transport) { + public static Builder using(ClientMcpTransport transport) { return new Builder(transport); } @@ -138,7 +139,7 @@ public interface McpClient { */ public static class Builder { - private final McpTransport transport; + private final ClientMcpTransport transport; private Duration requestTimeout = Duration.ofSeconds(20); // Default timeout @@ -158,7 +159,7 @@ public interface McpClient { private Function samplingHandler; - private Builder(McpTransport transport) { + private Builder(ClientMcpTransport transport) { Assert.notNull(transport, "Transport must not be null"); this.transport = transport; } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java index a77528b..906735f 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java @@ -32,10 +32,10 @@ import reactor.core.scheduler.Schedulers; import reactor.util.retry.Retry; import reactor.util.retry.Retry.RetrySignal; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; -import org.springframework.ai.mcp.spec.McpTransport; import org.springframework.ai.mcp.util.Assert; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.MediaType; @@ -71,7 +71,7 @@ import org.springframework.web.reactive.function.client.WebClient; * "https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse">MCP * HTTP with SSE Transport Specification */ -public class SseClientTransport implements McpTransport { +public class SseClientTransport implements ClientMcpTransport { private final static Logger logger = LoggerFactory.getLogger(SseClientTransport.class); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java index 01f59d1..e9aac82 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java @@ -38,10 +38,10 @@ import reactor.core.publisher.Sinks; import reactor.core.scheduler.Scheduler; import reactor.core.scheduler.Schedulers; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; import org.springframework.ai.mcp.util.Assert; -import org.springframework.ai.mcp.spec.McpTransport; /** * Implementation of the MCP Stdio transport that communicates with a server process using @@ -51,7 +51,7 @@ import org.springframework.ai.mcp.spec.McpTransport; * @author Christian Tzolov * @author Dariusz Jędrzejczyk */ -public class StdioClientTransport implements McpTransport { +public class StdioClientTransport implements ClientMcpTransport { private static final Logger logger = LoggerFactory.getLogger(StdioClientTransport.class); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index a79c43c..ca8cb83 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -44,7 +44,7 @@ import org.springframework.ai.mcp.spec.McpSchema.ListRootsResult; import org.springframework.ai.mcp.spec.McpSchema.LoggingLevel; import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.ai.mcp.util.Utils; /** @@ -63,7 +63,7 @@ public class McpAsyncServer { */ private final DefaultMcpSession mcpSession; - private final McpTransport transport; + private final ServerMcpTransport transport; private final McpSchema.ServerCapabilities serverCapabilities; @@ -98,7 +98,7 @@ public class McpAsyncServer { * @param rootsChangeConsumers The list of consumers that will be notified when the * roots list changes */ - public McpAsyncServer(McpTransport mcpTransport, McpSchema.Implementation serverInfo, + public McpAsyncServer(ServerMcpTransport mcpTransport, McpSchema.Implementation serverInfo, McpSchema.ServerCapabilities serverCapabilities, List tools, Map resources, List resourceTemplates, Map prompts, List>> rootsChangeConsumers) { diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java index 63588f4..6ee01a3 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java @@ -28,6 +28,7 @@ import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.ResourceTemplate; import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.ai.mcp.util.Assert; /** @@ -198,7 +199,7 @@ public interface McpServer { * @param transport The transport layer implementation for MCP communication * @return A new builder instance */ - public static Builder using(McpTransport transport) { + public static Builder using(ServerMcpTransport transport) { return new Builder(transport); } @@ -210,7 +211,7 @@ public interface McpServer { private final static McpSchema.Implementation DEFAULT_SERVER_INFO = new McpSchema.Implementation("mcp-server", "1.0.0"); - private final McpTransport transport; + private final ServerMcpTransport transport; private McpSchema.Implementation serverInfo = DEFAULT_SERVER_INFO; @@ -247,7 +248,7 @@ public interface McpServer { private List>> rootsChangeConsumers = new ArrayList<>(); - private Builder(McpTransport transport) { + private Builder(ServerMcpTransport transport) { Assert.notNull(transport, "Transport must not be null"); this.transport = transport; } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java index 88bda2e..6b27476 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java @@ -17,7 +17,7 @@ import reactor.core.publisher.Sinks; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.ai.mcp.util.Assert; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -33,7 +33,7 @@ import org.springframework.web.reactive.function.server.ServerResponse; * * @author Christian Tzolov */ -public class SseServerTransport implements McpTransport { +public class SseServerTransport implements ServerMcpTransport { private final static Logger logger = LoggerFactory.getLogger(SseServerTransport.class); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java index c568233..5f8e78b 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java @@ -38,7 +38,7 @@ import reactor.core.scheduler.Schedulers; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.ai.mcp.util.Assert; /** @@ -48,7 +48,7 @@ import org.springframework.ai.mcp.util.Assert; * * @author Christian Tzolov */ -public class StdioServerTransport implements McpTransport { +public class StdioServerTransport implements ServerMcpTransport { private static final Logger logger = LoggerFactory.getLogger(StdioServerTransport.class); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/ClientMcpTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/ClientMcpTransport.java new file mode 100644 index 0000000..4b5af3b --- /dev/null +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/ClientMcpTransport.java @@ -0,0 +1,25 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.spec; + +/** + * Marker interface for the client-side MCP transport. + * + * @author Christian Tzolov + */ +public interface ClientMcpTransport extends McpTransport { + +} diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/ServerMcpTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/ServerMcpTransport.java new file mode 100644 index 0000000..bb3d829 --- /dev/null +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/ServerMcpTransport.java @@ -0,0 +1,25 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.spec; + +/** + * Marker interface for the server-side MCP transport. + * + * @author Christian Tzolov + */ +public interface ServerMcpTransport extends McpTransport { + +} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java b/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java index a41013b..034a08f 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java @@ -26,14 +26,13 @@ import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; import reactor.core.scheduler.Schedulers; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpTransport; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; import org.springframework.ai.mcp.spec.McpSchema.JSONRPCNotification; import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; @SuppressWarnings("unused") -public class MockMcpTransport implements McpTransport { +public class MockMcpTransport implements ClientMcpTransport { private final AtomicInteger inboundMessageCount = new AtomicInteger(0); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java index acde147..b5a00bf 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java @@ -27,6 +27,7 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import reactor.test.StepVerifier; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; @@ -56,13 +57,13 @@ public abstract class AbstractMcpAsyncClientTests { private McpAsyncClient mcpAsyncClient; - protected McpTransport mcpTransport; + protected ClientMcpTransport mcpTransport; private static final Duration TIMEOUT = Duration.ofSeconds(20); private static final String ECHO_TEST_MESSAGE = "Hello MCP Spring AI!"; - abstract protected McpTransport createMcpTransport(); + abstract protected ClientMcpTransport createMcpTransport(); protected void onStart() { } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java index 7a1939b..9935f7f 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java @@ -24,6 +24,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; @@ -38,7 +39,6 @@ import org.springframework.ai.mcp.spec.McpSchema.SubscribeRequest; import org.springframework.ai.mcp.spec.McpSchema.TextContent; import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.ai.mcp.spec.McpSchema.UnsubscribeRequest; -import org.springframework.ai.mcp.spec.McpTransport; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; @@ -58,9 +58,9 @@ public abstract class AbstractMcpSyncClientTests { private static final String TEST_MESSAGE = "Hello MCP Spring AI!"; - protected McpTransport mcpTransport; + protected ClientMcpTransport mcpTransport; - abstract protected McpTransport createMcpTransport(); + abstract protected ClientMcpTransport createMcpTransport(); abstract protected void onStart(); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientTests.java index 9c5db68..ca37d72 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientTests.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Timeout; import org.springframework.ai.mcp.client.transport.ServerParameters; import org.springframework.ai.mcp.client.transport.StdioClientTransport; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ClientMcpTransport; /** * Tests for the {@link McpAsyncClient} with {@link StdioClientTransport}. @@ -32,7 +32,7 @@ import org.springframework.ai.mcp.spec.McpTransport; class McpAsyncClientTests extends AbstractMcpAsyncClientTests { @Override - protected McpTransport createMcpTransport() { + protected ClientMcpTransport createMcpTransport() { ServerParameters stdioParams = ServerParameters.builder("npx") .args("-y", "@modelcontextprotocol/server-everything", "dir") .build(); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpSyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/McpSyncClientTests.java index d23c39c..3b881d0 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpSyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/McpSyncClientTests.java @@ -23,7 +23,7 @@ import org.junit.jupiter.api.Timeout; import org.springframework.ai.mcp.client.transport.ServerParameters; import org.springframework.ai.mcp.client.transport.StdioClientTransport; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import static org.assertj.core.api.Assertions.assertThat; @@ -37,7 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat; class McpSyncClientTests extends AbstractMcpSyncClientTests { @Override - protected McpTransport createMcpTransport() { + protected ClientMcpTransport createMcpTransport() { ServerParameters stdioParams = ServerParameters.builder("npx") .args("-y", "@modelcontextprotocol/server-everything", "dir") .build(); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpAsyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpAsyncClientTests.java index 84657a6..bce1332 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpAsyncClientTests.java @@ -21,7 +21,7 @@ import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; import org.springframework.ai.mcp.client.transport.SseClientTransport; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.web.reactive.function.client.WebClient; /** @@ -42,7 +42,7 @@ class SseMcpAsyncClientTests extends AbstractMcpAsyncClientTests { .waitingFor(Wait.forHttp("/").forStatusCode(404)); @Override - protected McpTransport createMcpTransport() { + protected ClientMcpTransport createMcpTransport() { return new SseClientTransport(WebClient.builder().baseUrl(host)); } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpSyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpSyncClientTests.java index 55632c3..a0bfacf 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpSyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpSyncClientTests.java @@ -21,7 +21,7 @@ import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; import org.springframework.ai.mcp.client.transport.SseClientTransport; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.web.reactive.function.client.WebClient; /** @@ -42,7 +42,7 @@ class SseMcpSyncClientTests extends AbstractMcpSyncClientTests { .waitingFor(Wait.forHttp("/").forStatusCode(404)); @Override - protected McpTransport createMcpTransport() { + protected ClientMcpTransport createMcpTransport() { return new SseClientTransport(WebClient.builder().baseUrl(host)); } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java index 16a8a73..3ecd854 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java @@ -39,6 +39,7 @@ import org.springframework.ai.mcp.spec.McpSchema.Resource; import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; @@ -58,7 +59,7 @@ public abstract class AbstractMcpAsyncServerTests { private static final String TEST_PROMPT_NAME = "test-prompt"; - abstract protected McpTransport createMcpTransport(); + abstract protected ServerMcpTransport createMcpTransport(); protected void onStart() { } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java index def8527..e9aa970 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java @@ -23,11 +23,11 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.server.McpServer.PromptRegistration; import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; import org.springframework.ai.mcp.server.McpServer.ToolRegistration; import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; import org.springframework.ai.mcp.spec.McpSchema.Prompt; @@ -37,6 +37,7 @@ import org.springframework.ai.mcp.spec.McpSchema.Resource; import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; @@ -56,7 +57,7 @@ public abstract class AbstractMcpSyncServerTests { private static final String TEST_PROMPT_NAME = "test-prompt"; - abstract protected McpTransport createMcpTransport(); + abstract protected ServerMcpTransport createMcpTransport(); protected void onStart() { } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java index 45259a8..8beda36 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java @@ -22,7 +22,7 @@ import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; import org.springframework.ai.mcp.server.transport.SseServerTransport; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.function.server.RouterFunctions; @@ -42,7 +42,7 @@ class SseMcpAsyncServerTests extends AbstractMcpAsyncServerTests { private DisposableServer httpServer; @Override - protected McpTransport createMcpTransport() { + protected ServerMcpTransport createMcpTransport() { var transport = new SseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); HttpHandler httpHandler = RouterFunctions.toHttpHandler(transport.getRouterFunction()); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java index 2426849..af62763 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java @@ -22,7 +22,7 @@ import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; import org.springframework.ai.mcp.server.transport.SseServerTransport; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.function.server.RouterFunctions; @@ -44,7 +44,7 @@ class SseMcpSyncServerTests extends AbstractMcpSyncServerTests { private SseServerTransport transport; @Override - protected McpTransport createMcpTransport() { + protected ServerMcpTransport createMcpTransport() { transport = new SseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); return transport; } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java index 8d8a31d..9f15658 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java @@ -19,7 +19,7 @@ package org.springframework.ai.mcp.server; import org.junit.jupiter.api.Timeout; import org.springframework.ai.mcp.server.transport.StdioServerTransport; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; /** * Tests for {@link McpAsyncServer} using {@link StdioServerTransport}. @@ -30,7 +30,7 @@ import org.springframework.ai.mcp.spec.McpTransport; class StdioMcpAsyncServerTests extends AbstractMcpAsyncServerTests { @Override - protected McpTransport createMcpTransport() { + protected ServerMcpTransport createMcpTransport() { return new StdioServerTransport(); } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java index 2e02f0d..6bcc4be 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java @@ -19,7 +19,7 @@ package org.springframework.ai.mcp.server; import org.junit.jupiter.api.Timeout; import org.springframework.ai.mcp.server.transport.StdioServerTransport; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; /** * Tests for {@link McpSyncServer} using {@link StdioServerTransport}. @@ -30,7 +30,7 @@ import org.springframework.ai.mcp.spec.McpTransport; class StdioMcpSyncServerTests extends AbstractMcpSyncServerTests { @Override - protected McpTransport createMcpTransport() { + protected ServerMcpTransport createMcpTransport() { return new StdioServerTransport(); } diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java index 69904b6..c1af31d 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java @@ -18,6 +18,7 @@ package org.springframework.ai.mcp.sample.client; import java.util.Map; import org.springframework.ai.mcp.client.McpClient; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; @@ -32,9 +33,9 @@ import org.springframework.ai.mcp.spec.McpTransport; public class SampleClient { - private final McpTransport transport; + private final ClientMcpTransport transport; - public SampleClient(McpTransport transport) { + public SampleClient(ClientMcpTransport transport) { this.transport = transport; } diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java index d0b9e44..eee55a0 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java @@ -21,7 +21,7 @@ import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; import org.springframework.ai.mcp.spec.McpSchema.Role; import org.springframework.ai.mcp.spec.McpSchema.TextContent; -import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -55,7 +55,7 @@ public class McpServerConfig { } @Bean - public McpAsyncServer mcpServer(McpTransport transport) { // @formatter:off + public McpAsyncServer mcpServer(ServerMcpTransport transport) { // @formatter:off // Configure server capabilities with resource support var capabilities = McpSchema.ServerCapabilities.builder() diff --git a/spring-ai-mcp/README.md b/spring-ai-mcp/README.md index 07229bd..8ba646f 100644 --- a/spring-ai-mcp/README.md +++ b/spring-ai-mcp/README.md @@ -2,48 +2,4 @@ Spring Integration module for Model Control Protocol (MCP) that provides Spring-specific functionality for working with MCP clients. -## Overview - -The `spring-ai-mcp` module is part of the [Spring AI MCP](https://github.com/spring-projects-experimental/spring-ai-mcp) project. It provides Spring Framework integration for the Model Control Protocol (MCP), enabling seamless integration of MCP functionality within Spring applications. - -## Features - -- Spring integration for MCP clients -- Function callback implementation for tool invocations -- Seamless integration with Spring AI's function calling capabilities - -## Main Components - -### McpFunctionCallback - -The `McpFunctionCallback` class is the primary component of this module. It implements Spring AI's `FunctionCallback` interface and provides: - -- Integration between Spring AI's function calling system and MCP tools -- Automatic conversion between JSON and Java objects for tool arguments -- Synchronous tool execution support - - -## Usage - -To use this module, add the following dependency to your Maven project: - -```xml - - org.springframework.experimental - spring-ai-mcp - 0.4.0-SNAPSHOT - -``` - -## License - -This project is licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). - -## Links - -- [GitHub Repository](https://github.com/spring-projects-experimental/spring-ai-mcp) -- [Issue Tracker](https://github.com/spring-projects-experimental/spring-ai-mcp/issues) - -## Contributing - -This is an experimental Spring project. Contributions are welcome! Please refer to the main project's contribution guidelines. +Find more at [Java MCP SDK](https://docs.spring.io/spring-ai-mcp/reference/spring-mcp.html) \ No newline at end of file From 2748260cdadb8dc1d5500dcab4e9e20df7235004 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 4 Jan 2025 01:11:34 +0100 Subject: [PATCH 025/505] feat: Enhance MCP roots implementation and test coverage - Add proper ListRootsResult wrapping in async client - Implement paginated listRoots methods in server components - Fix roots notification handling in async server - Add roots integration tests - Update architecture diagram and documentation layout The changes improve the roots feature implementation with proper result types, and robust notification handling. Adds thorough test coverage for roots functionality including async notifications and root addition/removal scenarios. Resolves #46 --- .../antora/modules/ROOT/images/MCP-layers.svg | 166 ++++++++++-------- .../main/antora/modules/ROOT/pages/mcp.adoc | 8 +- .../ai/mcp/client/McpAsyncClient.java | 2 +- .../ai/mcp/server/McpAsyncServer.java | 46 ++--- .../ai/mcp/server/McpSyncServer.java | 18 ++ .../ai/mcp/MockMcpTransport.java | 3 +- .../McpAsyncClientResponseHandlerTests.java | 3 +- .../mcp/server/SseAsyncIntegrationTests.java | 60 +++++++ 8 files changed, 204 insertions(+), 102 deletions(-) diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/MCP-layers.svg b/mcp-docs/src/main/antora/modules/ROOT/images/MCP-layers.svg index 2f38d6a..3847eaa 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/images/MCP-layers.svg +++ b/mcp-docs/src/main/antora/modules/ROOT/images/MCP-layers.svg @@ -1,24 +1,24 @@ + id="defs27" /> + inkscape:current-layer="svg27"> + + + id="g27" + transform="translate(-334.47681,-179.33106)"> - + + - - + + diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index dc3755b..de98d5d 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -31,13 +31,13 @@ Add the following dependency to your Maven project: == Architecture +image::mcp-layers.svg[width=400,float=right] + The SDK follows a layered architecture with clear separation of concerns: -image::MCP-layers.svg[width=400,align=center] - -* *Transport Layer (McpTransport)*: Handles JSON-RPC message serialization/deserialization via StdioTransport (stdin/stdout) and SseTransport (HTTP streaming). -* *Session Layer (McpSession)*: Manages communication patterns and state using DefaultMcpSession implementation. * *Client/Server Layer*: Both use McpSession for sync/async operations, with McpClient handling client-side protocol operations and McpServer managing server-side protocol operations. +* *Session Layer (McpSession)*: Manages communication patterns and state using DefaultMcpSession implementation. +* *Transport Layer (McpTransport)*: Handles JSON-RPC message serialization/deserialization via StdioTransport (stdin/stdout) and SseTransport (HTTP streaming). Following class diagram illustrates the layered architecture of the MCP SDK, showing the relationships between core interfaces (McpTransport, McpSession), their implementations, and the client/server components. It highlights how the transport layer connects to sessions, which in turn support both synchronous and asynchronous client/server implementations. diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index e1bc8f1..ae9141f 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -409,7 +409,7 @@ public class McpAsyncClient { List roots = this.roots.values().stream().toList(); - return Mono.just(roots); + return Mono.just(new McpSchema.ListRootsResult(roots)); }; } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index ca8cb83..ee6882d 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -40,7 +40,6 @@ import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.ListRootsResult; import org.springframework.ai.mcp.spec.McpSchema.LoggingLevel; import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.spec.McpSchema.Tool; @@ -251,28 +250,35 @@ public class McpAsyncServer { private static TypeReference LIST_ROOTS_RESULT_TYPE_REF = new TypeReference<>() { }; + /** + * Retrieves the list of all roots provided by the client. + * @return A Mono that emits the list of roots result. + */ + public Mono listRoots() { + return this.listRoots(null); + } + + /** + * Retrieves a paginated list of roots provided by the server. + * @param cursor Optional pagination cursor from a previous list request + * @return A Mono that emits the list of roots result containing + */ + public Mono listRoots(String cursor) { + return this.mcpSession.sendRequest(McpSchema.METHOD_ROOTS_LIST, new McpSchema.PaginatedRequest(cursor), + LIST_ROOTS_RESULT_TYPE_REF); + } + private NotificationHandler rootsListChnagedNotificationHandler( List>> rootsChangeConsumers) { - if (this.clientCapabilities != null && this.clientCapabilities.roots() != null) { - - Mono updatedRootsList = this.mcpSession.sendRequest(McpSchema.METHOD_ROOTS_LIST, null, - LIST_ROOTS_RESULT_TYPE_REF); - - return params -> updatedRootsList // @formatter:off - .flatMap(listRootsResult -> - Mono.fromRunnable(() -> - rootsChangeConsumers.stream().forEach(consumer -> consumer.accept(listRootsResult.roots()))) - .subscribeOn(Schedulers.boundedElastic())) // TODO: Check if this is needed - .onErrorResume(error -> { - logger.error("Error handling roots list change notification", error); - return Mono.empty(); - }) - .then(); // Convert to Mono - // @formatter:on - } - - return params -> Mono.empty(); + return params -> { + return listRoots().flatMap(listRootsResult -> Mono.fromRunnable(() -> { + rootsChangeConsumers.stream().forEach(consumer -> consumer.accept(listRootsResult.roots())); + }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { + logger.error("Error handling roots list change notification", error); + return Mono.empty(); + }).then(); + }; }; // --------------------------------------- diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java index 6096d9e..db564f0 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java @@ -19,6 +19,7 @@ package org.springframework.ai.mcp.server; import org.springframework.ai.mcp.server.McpServer.PromptRegistration; import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; import org.springframework.ai.mcp.server.McpServer.ToolRegistration; +import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; @@ -47,6 +48,23 @@ public class McpSyncServer { this.asyncServer = asyncServer; } + /** + * Retrieves the list of all roots provided by the client. + * @return The list of roots + */ + public McpSchema.ListRootsResult listRoots() { + return this.listRoots(null); + } + + /** + * Retrieves a paginated list of roots provided by the server. + * @param cursor Optional pagination cursor from a previous list request + * @return The list of roots + */ + public McpSchema.ListRootsResult listRoots(String cursor) { + return this.asyncServer.listRoots(cursor).block(); + } + /** * Add a new tool handler. * @param toolHandler The tool handler to add diff --git a/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java b/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java index 034a08f..20736b1 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java @@ -30,9 +30,10 @@ import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.JSONRPCNotification; import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; +import org.springframework.ai.mcp.spec.ServerMcpTransport; @SuppressWarnings("unused") -public class MockMcpTransport implements ClientMcpTransport { +public class MockMcpTransport implements ClientMcpTransport, ServerMcpTransport { private final AtomicInteger inboundMessageCount = new AtomicInteger(0); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java index da18e5f..81e0fd2 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java @@ -100,7 +100,8 @@ class McpAsyncClientResponseHandlerTests { McpSchema.JSONRPCResponse response = (McpSchema.JSONRPCResponse) sentMessage; assertThat(response.id()).isEqualTo("test-id"); - assertThat(response.result()).isEqualTo(List.of(new Root("file:///test/path", "test-root"))); + assertThat(response.result()) + .isEqualTo(new McpSchema.ListRootsResult(List.of(new Root("file:///test/path", "test-root")))); assertThat(response.error()).isNull(); asyncMcpClient.closeGracefully(); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java index 65c7661..8e5caa5 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java @@ -15,8 +15,10 @@ */ package org.springframework.ai.mcp.server; +import java.time.Duration; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import com.fasterxml.jackson.databind.ObjectMapper; @@ -37,12 +39,14 @@ import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; import org.springframework.ai.mcp.spec.McpSchema.InitializeResult; import org.springframework.ai.mcp.spec.McpSchema.Role; +import org.springframework.ai.mcp.spec.McpSchema.Root; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.server.RouterFunctions; import static org.assertj.core.api.Assertions.assertThat; +import static org.awaitility.Awaitility.await; public class SseAsyncIntegrationTests { @@ -156,4 +160,60 @@ public class SseAsyncIntegrationTests { }).verifyComplete(); } + // --------------------------------------- + // Roots Tests + // --------------------------------------- + @Test + void testRootsSuccess() { + + List roots = List.of(new Root("uri1://", "root1"), new Root("uri2://", "root2")); + + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) + .sync(); + + // HttpHandler httpHandler = + // RouterFunctions.toHttpHandler(mcpServerTransport.getRouterFunction()); + // ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); + // HttpServer httpServer = HttpServer.create().port(8080).handle(adapter); + // DisposableServer d = httpServer.bindNow(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(roots) + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + assertThat(rootsRef.get()).isNull(); + + assertThat(mcpServer.listRoots().roots()).containsAll(roots); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(roots); + }); + + // Remove a root + mcpClient.removeRoot(roots.get(0).uri()); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(roots.get(1))); + }); + + // Add a new root + var root3 = new Root("uri3://", "root3"); + mcpClient.addRoot(root3); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(roots.get(1), root3)); + }); + + mcpClient.close(); + + mcpServer.close(); + } + } From 1e2a176c09eead55b64cfcb8557841cd5326f5ed Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 4 Jan 2025 01:19:42 +0100 Subject: [PATCH 026/505] fix doc image link --- .../modules/ROOT/images/{MCP-layers.svg => mcp-stack.svg} | 0 mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename mcp-docs/src/main/antora/modules/ROOT/images/{MCP-layers.svg => mcp-stack.svg} (100%) diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/MCP-layers.svg b/mcp-docs/src/main/antora/modules/ROOT/images/mcp-stack.svg similarity index 100% rename from mcp-docs/src/main/antora/modules/ROOT/images/MCP-layers.svg rename to mcp-docs/src/main/antora/modules/ROOT/images/mcp-stack.svg diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index de98d5d..a693506 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -31,7 +31,7 @@ Add the following dependency to your Maven project: == Architecture -image::mcp-layers.svg[width=400,float=right] +image::mcp-stack.svg[width=400,float=right] The SDK follows a layered architecture with clear separation of concerns: From 94f172a44e2c66d70531197a75d4af951c0e3f8d Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 4 Jan 2025 08:16:02 +0100 Subject: [PATCH 027/505] Enhance roots functionality and improve error handling - Replace Utils.isEmpty check with null check for roots map - Add specialized error messages for method not found errors - Extend McpError to include JSONRPCError information - Add comprehensive tests for roots functionality including: - Empty roots list handling - Missing capability scenarios - Multiple consumers - Server closure with active subscriptions --- .../ai/mcp/client/McpAsyncClient.java | 4 +- .../ai/mcp/spec/DefaultMcpSession.java | 22 ++- .../springframework/ai/mcp/spec/McpError.java | 13 ++ .../mcp/server/SseAsyncIntegrationTests.java | 142 +++++++++++++++--- 4 files changed, 154 insertions(+), 27 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index ae9141f..004cbc7 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -150,13 +150,13 @@ public class McpAsyncClient { this.transport = transport; - this.roots = !Utils.isEmpty(roots) ? new ConcurrentHashMap<>(roots) : new ConcurrentHashMap<>(); + this.roots = roots != null ? new ConcurrentHashMap<>(roots) : new ConcurrentHashMap<>(); // Request Handlers Map requestHanlers = new HashMap<>(); // Roots List Request Handler - if (!Utils.isEmpty(this.roots) && this.clientCapabilities.roots() != null) { + if (this.roots != null && this.clientCapabilities.roots() != null) { requestHanlers.put(McpSchema.METHOD_ROOTS_LIST, rootsListRequestHandler()); } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java index 993b396..8a1dde0 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java @@ -128,9 +128,11 @@ public class DefaultMcpSession implements McpSession { this.requestHandlers.putAll(requestHandlers); this.notificationHandlers.putAll(notificationHandlers); - // TODO: consider mono.transformDeferredContextual where the Context contains the + // TODO: consider mono.transformDeferredContextual where the Context contains + // the // Observation associated with the individual message - it can be used to - // create child Observation and emit it together with the message to the consumer + // create child Observation and emit it together with the message to the + // consumer this.connection = this.transport.connect(mono -> mono.doOnNext(message -> { if (message instanceof McpSchema.JSONRPCResponse response) { logger.info("Received Response: {}", response); @@ -169,9 +171,10 @@ public class DefaultMcpSession implements McpSession { return Mono.defer(() -> { var handler = this.requestHandlers.get(request.method()); if (handler == null) { + MethodNotFoundError error = getMethodNotFoundError(request.method()); return Mono.just(new McpSchema.JSONRPCResponse(McpSchema.JSONRPC_VERSION, request.id(), null, new McpSchema.JSONRPCResponse.JSONRPCError(McpSchema.ErrorCodes.METHOD_NOT_FOUND, - "Method not found: " + request.method(), null))); + error.message(), error.data()))); } return handler.handle(request.params()) @@ -183,6 +186,19 @@ public class DefaultMcpSession implements McpSession { }); } + record MethodNotFoundError(String method, String message, Object data) { + } + + public static MethodNotFoundError getMethodNotFoundError(String method) { + switch (method) { + case McpSchema.METHOD_ROOTS_LIST: + return new MethodNotFoundError(method, "Roots not supported", + Map.of("reason", "Client does not have roots capability")); + default: + return new MethodNotFoundError(method, "Method not found: " + method, null); + } + } + /** * Handles an incoming JSON-RPC notification by routing it to the appropriate handler. * @param notification The incoming JSON-RPC notification diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpError.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpError.java index ad3e91f..94170ff 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpError.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpError.java @@ -15,10 +15,23 @@ */ package org.springframework.ai.mcp.spec; +import org.springframework.ai.mcp.spec.McpSchema.JSONRPCResponse.JSONRPCError; + public class McpError extends RuntimeException { + private JSONRPCError jsonRpcError; + + public McpError(JSONRPCError jsonRpcError) { + super(jsonRpcError.message()); + this.jsonRpcError = jsonRpcError; + } + public McpError(Object error) { super(error.toString()); } + public JSONRPCError getJsonRpcError() { + return jsonRpcError; + } + } \ No newline at end of file diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java index 8e5caa5..fb1f8aa 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java @@ -1,18 +1,18 @@ /* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright 2024 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.ai.mcp.server; import java.time.Duration; @@ -46,6 +46,7 @@ import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.server.RouterFunctions; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.awaitility.Awaitility.await; public class SseAsyncIntegrationTests { @@ -165,7 +166,6 @@ public class SseAsyncIntegrationTests { // --------------------------------------- @Test void testRootsSuccess() { - List roots = List.of(new Root("uri1://", "root1"), new Root("uri2://", "root2")); AtomicReference> rootsRef = new AtomicReference<>(); @@ -173,12 +173,6 @@ public class SseAsyncIntegrationTests { .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) .sync(); - // HttpHandler httpHandler = - // RouterFunctions.toHttpHandler(mcpServerTransport.getRouterFunction()); - // ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); - // HttpServer httpServer = HttpServer.create().port(8080).handle(adapter); - // DisposableServer d = httpServer.bindNow(); - var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) .roots(roots) .sync(); @@ -212,8 +206,112 @@ public class SseAsyncIntegrationTests { }); mcpClient.close(); - mcpServer.close(); } + @Test + void testRootsWithoutCapability() { + var mcpServer = McpServer.using(mcpServerTransport).rootsChangeConsumer(rootsUpdate -> { + }).sync(); + + // Create client without roots capability + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().build()) // No + // roots + // capability + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + // Attempt to list roots should fail + assertThatThrownBy(() -> mcpServer.listRoots().roots()).isInstanceOf(McpError.class) + .hasMessage("Roots not supported"); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsWithEmptyRootsList() { + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(List.of()) // Empty roots list + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).isEmpty(); + }); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsWithMultipleConsumers() { + List roots = List.of(new Root("uri1://", "root1")); + + AtomicReference> rootsRef1 = new AtomicReference<>(); + AtomicReference> rootsRef2 = new AtomicReference<>(); + + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef1.set(rootsUpdate)) + .rootsChangeConsumer(rootsUpdate -> rootsRef2.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(roots) + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef1.get()).containsAll(roots); + assertThat(rootsRef2.get()).containsAll(roots); + }); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsServerCloseWithActiveSubscription() { + List roots = List.of(new Root("uri1://", "root1")); + + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(roots) + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(roots); + }); + + // Close server while subscription is active + mcpServer.close(); + + // Verify client can handle server closure gracefully + mcpClient.close(); + } + } From 30c8fc32ebb414d8130289e3347e5e1eef143757 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 4 Jan 2025 08:41:22 +0100 Subject: [PATCH 028/505] Release version 0.4.0 --- mcp-docs/pom.xml | 2 +- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp-sample/pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index a4b958a..1cd5406 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental mcp-parent - 0.4.0-SNAPSHOT + 0.4.0 mcp-docs Spring AI MCP Docs diff --git a/mcp/pom.xml b/mcp/pom.xml index 6bb5e13..a3d67b3 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0-SNAPSHOT + 0.4.0 mcp jar diff --git a/pom.xml b/pom.xml index ea74ed2..d67d3aa 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0-SNAPSHOT + 0.4.0 pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp-sample/pom.xml b/spring-ai-mcp-sample/pom.xml index 70aa6d8..9716c4c 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/spring-ai-mcp-sample/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0-SNAPSHOT + 0.4.0 spring-ai-mcp-sample diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index 67caf72..3ba5f8f 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0-SNAPSHOT + 0.4.0 spring-ai-mcp Spring AI MCP From b2082a0506519f1dd52911436954030111229f5d Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 4 Jan 2025 08:41:43 +0100 Subject: [PATCH 029/505] Next development version --- mcp-docs/pom.xml | 2 +- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp-sample/pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index 1cd5406..a9dfc71 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental mcp-parent - 0.4.0 + 0.5.0-SNAPSHOT mcp-docs Spring AI MCP Docs diff --git a/mcp/pom.xml b/mcp/pom.xml index a3d67b3..d70fb95 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0 + 0.5.0-SNAPSHOT mcp jar diff --git a/pom.xml b/pom.xml index d67d3aa..c5b4c5b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0 + 0.5.0-SNAPSHOT pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp-sample/pom.xml b/spring-ai-mcp-sample/pom.xml index 9716c4c..fe0cf97 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/spring-ai-mcp-sample/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0 + 0.5.0-SNAPSHOT spring-ai-mcp-sample diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index 3ba5f8f..8b60b10 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.0 + 0.5.0-SNAPSHOT spring-ai-mcp Spring AI MCP From 580f95526fa87447ed6e84e6b4f12dd01a564baf Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 4 Jan 2025 17:49:39 +0100 Subject: [PATCH 030/505] feat(McpAsyncServer): Add non-blocking execution for tools and resources - Execute tool calls, resource reads and prompt handling in a non-blocking manner using Schedulers.boundedElastic(). This prevents blocking operations from impacting server responsiveness. - Added integration tests to verify non-blocking behavior with tools that make HTTP calls to external services. Related to #48 This is a temp patch until #48 is resolved properly. --- README.md | 4 +- .../main/antora/modules/ROOT/pages/mcp.adoc | 2 +- .../antora/modules/ROOT/pages/overview.adoc | 4 +- .../antora/modules/ROOT/pages/spring-mcp.adoc | 2 +- .../ai/mcp/server/McpAsyncServer.java | 15 ++- .../mcp/server/SseAsyncIntegrationTests.java | 112 ++++++++++++++++++ spring-ai-mcp-sample/README.md | 6 +- .../ai/mcp/sample/client/ClientStdio.java | 2 +- 8 files changed, 132 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 0d36311..486e2be 100644 --- a/README.md +++ b/README.md @@ -32,14 +32,14 @@ Add the following dependencies to your Maven project: org.springframework.experimental mcp - 0.4.0-SNAPSHOT + 0.5.0-SNAPSHOT org.springframework.experimental spring-ai-mcp - 0.4.0-SNAPSHOT + 0.5.0-SNAPSHOT ``` diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index a693506..d68726a 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -25,7 +25,7 @@ Add the following dependency to your Maven project: org.springframework.experimental mcp - 0.4.0-SNAPSHOT + 0.5.0-SNAPSHOT ---- diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index 04fe69f..35cbecb 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -40,7 +40,7 @@ Maven:: org.springframework.experimental mcp - 0.4.0-SNAPSHOT + 0.5.0-SNAPSHOT ---- + @@ -50,7 +50,7 @@ Maven:: org.springframework.experimental spring-ai-mcp - 0.4.0-SNAPSHOT + 0.5.0-SNAPSHOT ---- + diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc index fb6ee50..ec762d9 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc @@ -36,6 +36,6 @@ To use this module, add the following dependency to your Maven project: org.springframework.experimental spring-ai-mcp - 0.4.0-SNAPSHOT + 0.5.0-SNAPSHOT ---- diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index ee6882d..2a87b3a 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -374,9 +374,9 @@ public class McpAsyncServer { return Mono.error(new McpError("Tool not found: " + callToolRequest.name())); } - CallToolResult callResponse = toolRegistration.get().call().apply(callToolRequest.arguments()); - - return Mono.just(callResponse); + return Mono.fromCallable(() -> toolRegistration.get().call().apply(callToolRequest.arguments())) + .map(result -> (Object) result) + .subscribeOn(Schedulers.boundedElastic()); }; } @@ -462,7 +462,9 @@ public class McpAsyncServer { }); var resourceUri = resourceRequest.uri(); if (this.resources.containsKey(resourceUri)) { - return Mono.just(this.resources.get(resourceUri).readHandler().apply(resourceRequest)); + return Mono.fromCallable(() -> this.resources.get(resourceUri).readHandler().apply(resourceRequest)) + .map(result -> (Object) result) + .subscribeOn(Schedulers.boundedElastic()); } return Mono.error(new McpError("Resource not found: " + resourceUri)); }; @@ -558,7 +560,10 @@ public class McpAsyncServer { // Implement prompt retrieval logic here if (this.prompts.containsKey(promptRequest.name())) { - return Mono.just(this.prompts.get(promptRequest.name()).promptHandler().apply(promptRequest)); + return Mono + .fromCallable(() -> this.prompts.get(promptRequest.name()).promptHandler().apply(promptRequest)) + .map(result -> (Object) result) + .subscribeOn(Schedulers.boundedElastic()); } return Mono.error(new McpError("Prompt not found: " + promptRequest.name())); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java index fb1f8aa..22e32e7 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java @@ -31,17 +31,22 @@ import reactor.test.StepVerifier; import org.springframework.ai.mcp.client.McpClient; import org.springframework.ai.mcp.client.transport.SseClientTransport; +import org.springframework.ai.mcp.server.McpServer.ToolRegistration; import org.springframework.ai.mcp.server.transport.SseServerTransport; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; import org.springframework.ai.mcp.spec.McpSchema.InitializeResult; import org.springframework.ai.mcp.spec.McpSchema.Role; import org.springframework.ai.mcp.spec.McpSchema.Root; +import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; +import org.springframework.web.client.RestClient; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.server.RouterFunctions; @@ -314,4 +319,111 @@ public class SseAsyncIntegrationTests { mcpClient.close(); } + // --------------------------------------- + // Tools Tests + // --------------------------------------- + @Test + void testToolCallSuccess() { + + var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); + ToolRegistration tool1 = new ToolRegistration( + new McpSchema.Tool("tool1", "tool1 description", Map.of("city", "String")), request -> { + // perform a blocking call to a remote service + String response = RestClient.create() + .get() + .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .retrieve() + .body(String.class); + assertThat(response).isNotBlank(); + return callResponse; + }); + + var mcpServer = McpServer.using(mcpServerTransport) + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tools(tool1) + .sync(); + + var mcpClient = clientBuilder.sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + assertThat(mcpClient.listTools().tools()).contains(tool1.tool()); + + CallToolResult response = mcpClient.callTool(new McpSchema.CallToolRequest("tool1", Map.of())); + + assertThat(response).isNotNull(); + assertThat(response).isEqualTo(callResponse); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testToolListChangeHandlingSuccess() { + + var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); + ToolRegistration tool1 = new ToolRegistration( + new McpSchema.Tool("tool1", "tool1 description", Map.of("city", "String")), request -> { + // perform a blocking call to a remote service + String response = RestClient.create() + .get() + .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .retrieve() + .body(String.class); + assertThat(response).isNotBlank(); + return callResponse; + }); + + var mcpServer = McpServer.using(mcpServerTransport) + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tools(tool1) + .sync(); + + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpClient = clientBuilder.toolsChangeConsumer(toolsUpdate -> { + // perform a blocking call to a remote service + String response = RestClient.create() + .get() + .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .retrieve() + .body(String.class); + assertThat(response).isNotBlank(); + rootsRef.set(toolsUpdate); + }).sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + assertThat(rootsRef.get()).isNull(); + + assertThat(mcpClient.listTools().tools()).contains(tool1.tool()); + + mcpServer.notifyToolsListChanged(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(tool1.tool())); + }); + + // Remove a tool + mcpServer.removeTool("tool1"); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).isEmpty(); + }); + + // Add a new tool + ToolRegistration tool2 = new ToolRegistration( + new McpSchema.Tool("tool2", "tool2 description", Map.of("city", "String")), request -> callResponse); + + mcpServer.addTool(tool2); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(tool2.tool())); + }); + + mcpClient.close(); + mcpServer.close(); + } + } diff --git a/spring-ai-mcp-sample/README.md b/spring-ai-mcp-sample/README.md index 632e253..9cf76f9 100644 --- a/spring-ai-mcp-sample/README.md +++ b/spring-ai-mcp-sample/README.md @@ -28,7 +28,7 @@ The server can be started in two transport modes, controlled by the `transport.m ### Stdio Mode (Default) ```bash -java -Dtransport.mode=stdio -jar target/spring-ai-mcp-sample-0.4.0-SNAPSHOT.jar +java -Dtransport.mode=stdio -jar target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar ``` The Stdio mode server is automatically started by the client - no explicit server startup is needed. @@ -38,7 +38,7 @@ In Stdio mode the server must not emit any messages/logs to the console (e.g. st ### SSE Mode ```bash -java -Dtransport.mode=sse -jar target/spring-ai-mcp-sample-0.4.0-SNAPSHOT.jar +java -Dtransport.mode=sse -jar target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar ``` ## Sample Clients @@ -49,7 +49,7 @@ The project includes example clients for both transport modes: ```java var stdioParams = ServerParameters.builder("java") .args("-Dtransport.mode=stdio", "-jar", - "target/spring-ai-mcp-sample-0.4.0-SNAPSHOT.jar") + "target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar") .build(); var transport = new StdioClientTransport(stdioParams); diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java index ee84037..d510c72 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java @@ -28,7 +28,7 @@ public class ClientStdio { var stdioParams = ServerParameters.builder("java") .args("-Dtransport.mode=stdio", "-jar", - "spring-ai-mcp-sample/target/spring-ai-mcp-sample-0.4.0-SNAPSHOT.jar") + "spring-ai-mcp-sample/target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar") .build(); var transport = new StdioClientTransport(stdioParams); From 68ae2395529ffb1efd3d873637fbafc5bc425a32 Mon Sep 17 00:00:00 2001 From: Thomas Vitale Date: Sat, 4 Jan 2025 16:42:58 +0100 Subject: [PATCH 031/505] Remove Logback from production JAR Move Logback dependency to test scope to make it possible for applications using this library to choose their implementation of the SLF4J API. For example, Spring Boot provides one out of the box already. Fixes gh-49 Signed-off-by: Thomas Vitale --- mcp/pom.xml | 13 +++++++------ mcp/src/{main => test}/resources/logback.xml | 0 pom.xml | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) rename mcp/src/{main => test}/resources/logback.xml (100%) diff --git a/mcp/pom.xml b/mcp/pom.xml index d70fb95..30bb8ce 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -27,12 +27,6 @@ ${slf4j-api.version} - - ch.qos.logback - logback-classic - ${logback.version} - - com.fasterxml.jackson.core jackson-databind @@ -112,6 +106,13 @@ test + + ch.qos.logback + logback-classic + ${logback.version} + test + + diff --git a/mcp/src/main/resources/logback.xml b/mcp/src/test/resources/logback.xml similarity index 100% rename from mcp/src/main/resources/logback.xml rename to mcp/src/test/resources/logback.xml diff --git a/pom.xml b/pom.xml index c5b4c5b..6384d2b 100644 --- a/pom.xml +++ b/pom.xml @@ -73,7 +73,7 @@ 1.20.4 2.0.16 - 1.5.12 + 1.5.15 2.17.0 6.2.1 From 25c9d8cc73234278c96d69847155cc7be73a82ce Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 4 Jan 2025 18:13:02 +0100 Subject: [PATCH 032/505] Release version 0.4.1 --- mcp-docs/pom.xml | 2 +- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp-sample/pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index a9dfc71..b7a83e9 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.4.1 mcp-docs Spring AI MCP Docs diff --git a/mcp/pom.xml b/mcp/pom.xml index 30bb8ce..6b74423 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.4.1 mcp jar diff --git a/pom.xml b/pom.xml index 6384d2b..2ad628a 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.4.1 pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp-sample/pom.xml b/spring-ai-mcp-sample/pom.xml index fe0cf97..722804b 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/spring-ai-mcp-sample/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.4.1 spring-ai-mcp-sample diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index 8b60b10..49ce447 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.4.1 spring-ai-mcp Spring AI MCP From 8334e2ee9679ec8ae0d8a78fbf279d36a7650320 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 4 Jan 2025 18:13:19 +0100 Subject: [PATCH 033/505] Next development version --- mcp-docs/pom.xml | 2 +- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp-sample/pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index b7a83e9..a9dfc71 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental mcp-parent - 0.4.1 + 0.5.0-SNAPSHOT mcp-docs Spring AI MCP Docs diff --git a/mcp/pom.xml b/mcp/pom.xml index 6b74423..30bb8ce 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.1 + 0.5.0-SNAPSHOT mcp jar diff --git a/pom.xml b/pom.xml index 2ad628a..6384d2b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.1 + 0.5.0-SNAPSHOT pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp-sample/pom.xml b/spring-ai-mcp-sample/pom.xml index 722804b..fe0cf97 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/spring-ai-mcp-sample/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.1 + 0.5.0-SNAPSHOT spring-ai-mcp-sample diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index 49ce447..8b60b10 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.1 + 0.5.0-SNAPSHOT spring-ai-mcp Spring AI MCP From aa26cfa848b47470fe2829d31fb247857fc7fab2 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 6 Jan 2025 21:29:06 +0100 Subject: [PATCH 034/505] feat: Improve Tool schema handling - Make McpSchema final and add private constructor - Add JsonSchema record for structured schema representation - Change Tool.inputSchema type from Map to JsonSchema. - Use the String JSON Schema constructor when creating the Tool programaticaly. - Enhance StdioClientTransport error logging with more context - Add ToolHelper utility class for: - Converting Spring AI FunctionCallbacks to MCP tools - Generating JSON schemas for tool input validation - Facilitating integration between Spring AI functions and MCP tools - Update tests and samples to use the new Tool schema format Resolves #52 --- .../transport/StdioClientTransport.java | 4 +- .../ai/mcp/spec/McpSchema.java | 46 +++-- .../ai/mcp/attic/DemoServer.java | 2 +- .../McpAsyncClientResponseHandlerTests.java | 7 +- .../server/AbstractMcpAsyncServerTests.java | 15 +- .../server/AbstractMcpSyncServerTests.java | 14 +- .../mcp/server/SseAsyncIntegrationTests.java | 22 ++- spring-ai-mcp-sample/pom.xml | 2 +- .../ai/mcp/sample/client/SampleClient.java | 7 + .../ai/mcp/sample/server/McpServerConfig.java | 67 ++++++- .../ai/mcp/sample/server/OpenLibrary.java | 74 ++++++++ .../src/main/resources/application.properties | 18 +- .../ai/mcp/spring/ToolHelper.java | 167 ++++++++++++++++++ 13 files changed, 393 insertions(+), 52 deletions(-) create mode 100644 spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java create mode 100644 spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java index e9aac82..74d001a 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java @@ -275,14 +275,14 @@ public class StdioClientTransport implements ClientMcpTransport { JSONRPCMessage message = McpSchema.deserializeJsonRpcMessage(this.objectMapper, line); if (!this.inboundSink.tryEmitNext(message).isSuccess()) { if (!isClosing) { - logger.error("Failed to enqueue inbound message"); + logger.error("Failed to enqueue inbound message: {}", message); } break; } } catch (Exception e) { if (!isClosing) { - logger.error("Error processing inbound message", e); + logger.error("Error processing inbound message for line: " + line, e); } break; } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java index bb3b301..ce274f8 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java @@ -38,7 +38,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; * * @author Christian Tzolov */ -public class McpSchema { +public final class McpSchema { + + private McpSchema() { + } public static final String LATEST_PROTOCOL_VERSION = "2024-11-05"; @@ -95,6 +98,8 @@ public class McpSchema { // Sampling Methods public static final String METHOD_SAMPLING_CREATE_MESSAGE = "sampling/createMessage"; + private static ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + // --------------------------- // JSON-RPC Error Codes // --------------------------- @@ -659,6 +664,15 @@ public class McpSchema { @JsonProperty("nextCursor") String nextCursor) { }// @formatter:on + @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) + record JsonSchema( // @formatter:off + @JsonProperty("type") String type, + @JsonProperty("properties") Map properties, + @JsonProperty("required") List required, + @JsonProperty("additionalProperties") Boolean additionalProperties) { + } // @formatter:on + /** * Represents a tool that the server provides. Tools enable servers to expose * executable functionality to the system. Through these tools, you can interact with @@ -676,7 +690,7 @@ public class McpSchema { public record Tool( // @formatter:off @JsonProperty("name") String name, @JsonProperty("description") String description, - @JsonProperty("inputSchema") Map inputSchema) { + @JsonProperty("inputSchema") JsonSchema inputSchema) { public Tool(String name, String description, String schema) { this(name, description, parseSchema(schema)); @@ -684,9 +698,9 @@ public class McpSchema { } // @formatter:on - public static Map parseSchema(String schema) { + public static JsonSchema parseSchema(String schema) { try { - return new ObjectMapper().readValue(schema, MAP_TYPE_REF); + return OBJECT_MAPPER.readValue(schema, JsonSchema.class); } catch (IOException e) { throw new IllegalArgumentException("Invalid schema: " + schema, e); @@ -724,6 +738,18 @@ public class McpSchema { // --------------------------- // Sampling Interfaces // --------------------------- + @JsonInclude(JsonInclude.Include.NON_ABSENT) + public record ModelPreferences(// @formatter:off + @JsonProperty("hints") List hints, + @JsonProperty("costPriority") Double costPriority, + @JsonProperty("speedPriority") Double speedPriority, + @JsonProperty("intelligencePriority") Double intelligencePriority) { + } // @formatter:on + + @JsonInclude(JsonInclude.Include.NON_ABSENT) + public record ModelHint(@JsonProperty("name") String name) { + } + @JsonInclude(JsonInclude.Include.NON_ABSENT) public record SamplingMessage(// @formatter:off @JsonProperty("role") Role role, @@ -803,18 +829,6 @@ public class McpSchema { } }// @formatter:on - // --------------------------- - // Model Preferences - // --------------------------- - @JsonInclude(JsonInclude.Include.NON_ABSENT) - public record ModelPreferences(List hints, Double costPriority, Double speedPriority, - Double intelligencePriority) { - } - - @JsonInclude(JsonInclude.Include.NON_ABSENT) - public record ModelHint(String name) { - } - // --------------------------- // Pagination Interfaces // --------------------------- diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/DemoServer.java b/mcp/src/test/java/org/springframework/ai/mcp/attic/DemoServer.java index d663f14..df1fc0b 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/attic/DemoServer.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/attic/DemoServer.java @@ -44,7 +44,7 @@ public class DemoServer { var mcpServer = McpServer.using(transport) .serverInfo("Weather Forecast", "1.0.0") - .tool(new McpSchema.Tool("weather", "Weather forecast tool by location", Map.of("city", "String")), + .tool(new McpSchema.Tool("weather", "Weather forecast tool by location", "{ \"type\": \"object\" }"), (arguments) -> { String city = (String) arguments.get("city"); return new CallToolResult(List.of(), false); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java index 81e0fd2..6c67b99 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java @@ -23,7 +23,9 @@ import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.springframework.ai.mcp.MockMcpTransport; @@ -39,7 +41,7 @@ import static org.awaitility.Awaitility.await; class McpAsyncClientResponseHandlerTests { @Test - void testToolsChangeNotificationHandling() { + void testToolsChangeNotificationHandling() throws JsonProcessingException { MockMcpTransport transport = new MockMcpTransport(); // Create a list to store received tools for verification @@ -55,7 +57,8 @@ class McpAsyncClientResponseHandlerTests { // Create a mock tools list that the server will return Map inputSchema = Map.of("type", "object", "properties", Map.of(), "required", List.of()); - McpSchema.Tool mockTool = new McpSchema.Tool("test-tool", "Test Tool Description", inputSchema); + McpSchema.Tool mockTool = new McpSchema.Tool("test-tool", "Test Tool Description", + new ObjectMapper().writeValueAsString(inputSchema)); McpSchema.ListToolsResult mockToolsResult = new McpSchema.ListToolsResult(List.of(mockTool), null); // Simulate server sending tools/list_changed notification diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java index 3ecd854..e51130f 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java @@ -107,10 +107,17 @@ public abstract class AbstractMcpAsyncServerTests { // --------------------------------------- // Tools Tests // --------------------------------------- + String emptyJsonSchema = """ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {} + } + """; @Test void testAddTool() { - Tool newTool = new McpSchema.Tool("new-tool", "New test tool", Map.of("input", "string")); + Tool newTool = new McpSchema.Tool("new-tool", "New test tool", emptyJsonSchema); var mcpAsyncServer = McpServer.using(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) @@ -125,7 +132,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testAddDuplicateTool() { - Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", Map.of("input", "string")); + Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); var mcpAsyncServer = McpServer.using(createMcpTransport()) .serverInfo("test-server", "1.0.0") @@ -146,7 +153,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testRemoveTool() { - Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", Map.of("input", "string")); + Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); var mcpAsyncServer = McpServer.using(createMcpTransport()) .serverInfo("test-server", "1.0.0") @@ -175,7 +182,7 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testNotifyToolsListChanged() { - Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", Map.of("input", "string")); + Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); var mcpAsyncServer = McpServer.using(createMcpTransport()) .serverInfo("test-server", "1.0.0") diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java index e9aa970..73dcc40 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java @@ -116,6 +116,14 @@ public abstract class AbstractMcpSyncServerTests { // Tools Tests // --------------------------------------- + String emptyJsonSchema = """ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {} + } + """; + @Test void testAddTool() { var mcpSyncServer = McpServer.using(createMcpTransport()) @@ -123,7 +131,7 @@ public abstract class AbstractMcpSyncServerTests { .capabilities(ServerCapabilities.builder().tools(true).build()) .sync(); - Tool newTool = new McpSchema.Tool("new-tool", "New test tool", Map.of("input", "string")); + Tool newTool = new McpSchema.Tool("new-tool", "New test tool", emptyJsonSchema); assertThatCode(() -> mcpSyncServer .addTool(new ToolRegistration(newTool, args -> new CallToolResult(List.of(), false)))) .doesNotThrowAnyException(); @@ -133,7 +141,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddDuplicateTool() { - Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", Map.of("input", "string")); + Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); var mcpSyncServer = McpServer.using(createMcpTransport()) .serverInfo("test-server", "1.0.0") @@ -151,7 +159,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemoveTool() { - Tool tool = new McpSchema.Tool(TEST_TOOL_NAME, "Test tool", Map.of("input", "string")); + Tool tool = new McpSchema.Tool(TEST_TOOL_NAME, "Test tool", emptyJsonSchema); var mcpSyncServer = McpServer.using(createMcpTransport()) .serverInfo("test-server", "1.0.0") diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java index 22e32e7..babba8d 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java @@ -322,12 +322,22 @@ public class SseAsyncIntegrationTests { // --------------------------------------- // Tools Tests // --------------------------------------- + + String emptyJsonSchema = """ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {} + } + """; + @Test + void testToolCallSuccess() { var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); - ToolRegistration tool1 = new ToolRegistration( - new McpSchema.Tool("tool1", "tool1 description", Map.of("city", "String")), request -> { + ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), + request -> { // perform a blocking call to a remote service String response = RestClient.create() .get() @@ -363,8 +373,8 @@ public class SseAsyncIntegrationTests { void testToolListChangeHandlingSuccess() { var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); - ToolRegistration tool1 = new ToolRegistration( - new McpSchema.Tool("tool1", "tool1 description", Map.of("city", "String")), request -> { + ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), + request -> { // perform a blocking call to a remote service String response = RestClient.create() .get() @@ -413,8 +423,8 @@ public class SseAsyncIntegrationTests { }); // Add a new tool - ToolRegistration tool2 = new ToolRegistration( - new McpSchema.Tool("tool2", "tool2 description", Map.of("city", "String")), request -> callResponse); + ToolRegistration tool2 = new ToolRegistration(new McpSchema.Tool("tool2", "tool2 description", emptyJsonSchema), + request -> callResponse); mcpServer.addTool(tool2); diff --git a/spring-ai-mcp-sample/pom.xml b/spring-ai-mcp-sample/pom.xml index fe0cf97..edc4671 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/spring-ai-mcp-sample/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental - mcp + spring-ai-mcp ${project.version} diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java index c1af31d..4907e5d 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java @@ -58,6 +58,13 @@ public class SampleClient { .callTool(new CallToolRequest("calculator", Map.of("operation", "multiply", "a", 2.0, "b", 3.0))); System.out.println("Calculator Response = " + calcResponse); + CallToolResult paymentStatus = client.callTool( + new CallToolRequest("paymentTransactionStatus", Map.of("transactionId", "006", "accountName", "John"))); + System.out.println("Payment Status Response = " + paymentStatus); + + CallToolResult parks = client.callTool(new CallToolRequest("getBooks", Map.of("title", "Spring Framework"))); + System.out.println("Books Response = " + parks); + // List and demonstrate resources var resourcesList = client.listResources(); System.out.println("\nAvailable Resources = " + resourcesList); diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java index eee55a0..08deb08 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java @@ -2,6 +2,7 @@ package org.springframework.ai.mcp.sample.server; import java.util.List; import java.util.Map; +import java.util.function.Function; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; @@ -21,10 +22,14 @@ import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; import org.springframework.ai.mcp.spec.McpSchema.Role; import org.springframework.ai.mcp.spec.McpSchema.TextContent; +import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.springframework.ai.mcp.spring.ToolHelper; +import org.springframework.ai.model.function.FunctionCallback; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestClient; import org.springframework.web.reactive.function.server.RouterFunction; @Configuration @@ -55,7 +60,7 @@ public class McpServerConfig { } @Bean - public McpAsyncServer mcpServer(ServerMcpTransport transport) { // @formatter:off + public McpAsyncServer mcpServer(ServerMcpTransport transport, OpenLibrary openLibrary) { // @formatter:off // Configure server capabilities with resource support var capabilities = McpSchema.ServerCapabilities.builder() @@ -71,13 +76,48 @@ public class McpServerConfig { .capabilities(capabilities) .resources(systemInfoResourceRegistration()) .prompts(greetingPromptRegistration()) - .tools(calculatorToolRegistration()) + .tools(calculatorToolRegistration(), + ToolHelper.toToolRegistration( + FunctionCallback.builder() + .description("Get transaction payment status") + .method("paymentTransactionStatus",String.class, String.class) + .targetClass(McpServerConfig.class) + .build()), + ToolHelper.toToolRegistration( + FunctionCallback.builder() + .description("To upper case") + .function("toUpperCase", new Function() { + @Override + public String apply(String s) { + return s.toUpperCase(); + } + }) + .inputType(String.class) + .build())) + .tools(openLibraryToolRegistrations(openLibrary)) .async(); server.addTool(weatherToolRegistration(server)); return server; // @formatter:on } // @formatter:on + public static List openLibraryToolRegistrations(OpenLibrary openLibrary) { + + var books = FunctionCallback.builder() + .description("Get list of Books by title") + .method("getBooks", String.class) + .targetObject(openLibrary) + .build(); + + var bookTitlesByAuthor = FunctionCallback.builder() + .description("Get book titles by author") + .method("getBookTitlesByAuthor", String.class) + .targetObject(openLibrary) + .build(); + + return ToolHelper.toToolRegistration(books, bookTitlesByAuthor); + } + private static ResourceRegistration systemInfoResourceRegistration() { // Create a resource registration for system information @@ -131,8 +171,14 @@ public class McpServerConfig { } private static ToolRegistration weatherToolRegistration(McpAsyncServer server) { - return new ToolRegistration( - new McpSchema.Tool("weather", "Weather forecast tool by location", Map.of("city", "String")), + String emptyJsonSchema = """ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {"city" : "string"} + } + """; + return new ToolRegistration(new McpSchema.Tool("weather", "Weather forecast tool by location", emptyJsonSchema), (arguments) -> { String city = (String) arguments.get("city"); @@ -210,4 +256,17 @@ public class McpServerConfig { }); } + public static String paymentTransactionStatus(String transactionId, String accountName) { + return "The status for " + transactionId + ", by " + accountName + " is PENDING"; + } + + public Function toUpperCase() { + return String::toUpperCase; + } + + @Bean + public OpenLibrary openLibrary() { + return new OpenLibrary(RestClient.builder()); + } + } diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java new file mode 100644 index 0000000..7f96573 --- /dev/null +++ b/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java @@ -0,0 +1,74 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.sample.server; + +import java.util.List; +import java.util.Map; + +import org.springframework.web.client.RestClient; + +/** + * @author Christian Tzolov + */ + +public class OpenLibrary { + + private RestClient restClient; + + public OpenLibrary(RestClient.Builder restClientBuilder) { + this.restClient = restClientBuilder.baseUrl("https://openlibrary.org").build(); + } + + public record Books(Integer numFound, Integer start, Boolean numFoundExact, List> docs) { + } + + public record Book(List isbn, String title, List authorName) { + } + + public List getBooks(String title) { + Books books = restClient.get() + .uri(uriBuilder -> uriBuilder.path("/search.json").queryParam("q", title).build()) + .retrieve() + .body(Books.class); + if (books == null) { + return List.of(); + } + return books.docs.stream() + .map(doc -> new Book((List) doc.get("isbn"), (String) doc.get("title"), + (List) doc.get("author_name"))) + .toList(); + } + + public List getBookTitlesByAuthor(String authorName) { + var books = restClient.get() + .uri(uriBuilder -> uriBuilder.path("/search/authors.json").queryParam("q", authorName).build()) + .retrieve() + .body(Books.class); + if (books == null) { + return List.of(); + } + return books.docs.stream().map(doc -> (String) doc.get("top_work")).toList(); + } + + public static void main(String[] args) { + OpenLibrary openLibrary = new OpenLibrary(RestClient.builder()); + List books = openLibrary.getBooks("Spring Framework"); + System.out.println(books); + List booksByAuthor = openLibrary.getBookTitlesByAuthor("Craig Walls"); + System.out.println(booksByAuthor); + } + +} diff --git a/spring-ai-mcp-sample/src/main/resources/application.properties b/spring-ai-mcp-sample/src/main/resources/application.properties index 8682ce9..4a0226c 100644 --- a/spring-ai-mcp-sample/src/main/resources/application.properties +++ b/spring-ai-mcp-sample/src/main/resources/application.properties @@ -1,16 +1,8 @@ -# Server port -# server.port=8080 - -# Logging -# logging.level.org.springframework.ai.mcp=DEBUG -# logging.level.org.springframework.web=INFO - -spring.main.banner-mode=off -# logging.level.root=OFF # spring.main.web-application-type=none -# logging.pattern.console= -logging.level.org.springframework.ai.mcp.*=OFF -logging.level.org.springframework.ai.mcp.spec.*=OFF -logging.level.org.springframework.**=OFF + +# NOTE: You must disable the banner and the console logging +# to allow the STDIO transport to work !!! +spring.main.banner-mode=off +logging.pattern.console= transport.mode=sse \ No newline at end of file diff --git a/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java b/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java new file mode 100644 index 0000000..943f988 --- /dev/null +++ b/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java @@ -0,0 +1,167 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.spring; + +import java.util.List; +import java.util.Map; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.module.jsonSchema.JsonSchema; +import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator; + +import org.springframework.ai.chat.model.ToolContext; +import org.springframework.ai.mcp.server.McpServer; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.model.ModelOptionsUtils; +import org.springframework.ai.model.function.FunctionCallback; +import org.springframework.util.ClassUtils; + +/** + * Utility class that provides helper methods for working with Model Context Protocol + * (MCP) tools in a Spring AI environment. This class facilitates the integration between + * Spring AI's function callbacks and MCP's tool system. + * + *

    + * The MCP tool system enables servers to expose executable functionality to language + * models, allowing them to interact with external systems, perform computations, and take + * actions in the real world. Each tool is uniquely identified by a name and includes + * metadata describing its schema. + * + *

    + * This helper class provides methods to: + *

      + *
    • Convert Spring AI's {@link FunctionCallback} instances to MCP tool + * registrations
    • + *
    • Generate JSON schemas for tool input validation
    • + *
    + * + * @author Christian Tzolov + * @see org.springframework.ai.model.function.FunctionCallback + * @see org.springframework.ai.mcp.server.McpServer.ToolRegistration + * @see org.springframework.ai.mcp.spec.McpSchema.Tool + */ +public final class ToolHelper { + + private ToolHelper() { + } + + public static List toToolRegistration(List functionCallbacks) { + return functionCallbacks.stream().map(ToolHelper::toToolRegistration).toList(); + } + + public static List toToolRegistration(FunctionCallback... functionCallbacks) { + return toToolRegistration(List.of(functionCallbacks)); + } + + /** + * Converts a Spring AI FunctionCallback to an MCP ToolRegistration. This enables + * Spring AI functions to be exposed as MCP tools that can be discovered and invoked + * by language models. + * + *

    + * The conversion process: + *

      + *
    • Creates an MCP Tool with the function's name and input schema
    • + *
    • Wraps the function's execution in a ToolRegistration that handles the MCP + * protocol
    • + *
    • Provides error handling and result formatting according to MCP + * specifications
    • + *
    + * + * You can use the FunctionCallback builder to create a new instance of + * FunctionCallback using either java.util.function.Function or Method reference. + * @param functionCallback the Spring AI function callback to convert + * @return an MCP ToolRegistration that wraps the function callback + * @throws RuntimeException if there's an error during the function execution + */ + public static McpServer.ToolRegistration toToolRegistration(FunctionCallback functionCallback) { + + var tool = new McpSchema.Tool(functionCallback.getName(), functionCallback.getName(), + functionCallback.getInputTypeSchema()); + + return new McpServer.ToolRegistration(tool, request -> { + try { + String callResult = functionCallback.call(ModelOptionsUtils.toJsonString(request)); + return new McpSchema.CallToolResult(List.of(new McpSchema.TextContent(callResult)), false); + } + catch (Exception e) { + return new McpSchema.CallToolResult(List.of(new McpSchema.TextContent(e.getMessage())), true); + } + }); + } + + /** + * Generates a JSON schema for a map of named classes using the default ObjectMapper. + * This schema can be used to validate tool inputs according to the MCP specification. + * @param namedClasses a map of class names to their corresponding Class objects + * @return a JSON schema string that describes the structure of the named classes + * @throws RuntimeException if schema generation fails + * @see #generateJsonSchema(Map, ObjectMapper) + */ + public static String generateJsonSchema(Map> namedClasses) { + return generateJsonSchema(namedClasses, new ObjectMapper()); + } + + /** + * Generates a JSON schema for a map of named classes using a custom ObjectMapper. The + * generated schema follows the JSON Schema Draft 2020-12 specification and describes + * the structure of the provided classes. + * + *

    + * This method: + *

      + *
    • Creates a schema that validates the structure of tool inputs
    • + *
    • Excludes ToolContext class from schema generation
    • + *
    • Uses Jackson's JsonSchemaGenerator for accurate type representation
    • + *
    + * @param namedClasses a map of class names to their corresponding Class objects + * @param mapper the ObjectMapper to use for JSON processing + * @return a JSON schema string that describes the structure of the named classes + * @throws RuntimeException if schema generation fails + */ + public static String generateJsonSchema(Map> namedClasses, ObjectMapper mapper) { + try { + JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper); + + ObjectNode rootNode = mapper.createObjectNode(); + rootNode.put("$schema", "https://json-schema.org/draft/2020-12/schema"); + rootNode.put("type", "object"); + ObjectNode propertiesNode = rootNode.putObject("properties"); + + for (Map.Entry> entry : namedClasses.entrySet()) { + String className = entry.getKey(); + Class clazz = entry.getValue(); + + if (ClassUtils.isAssignable(clazz, ToolContext.class)) { + // Skip the ToolContext class from the schema generation. + continue; + } + + JsonSchema schema = schemaGen.generateSchema(clazz); + JsonNode schemaNode = mapper.valueToTree(schema); + propertiesNode.set(className, schemaNode); + } + + return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode); + } + catch (Exception e) { + throw new RuntimeException(e); + } + } + +} From a47eace440ef4290112a1f7b44c1022dd015e62b Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 7 Jan 2025 10:54:53 +0100 Subject: [PATCH 035/505] Release version 0.4.2 --- mcp-docs/pom.xml | 2 +- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp-sample/pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index a9dfc71..95ae9d9 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.4.2 mcp-docs Spring AI MCP Docs diff --git a/mcp/pom.xml b/mcp/pom.xml index 30bb8ce..fe007eb 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.4.2 mcp jar diff --git a/pom.xml b/pom.xml index 6384d2b..2c9f180 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.4.2 pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp-sample/pom.xml b/spring-ai-mcp-sample/pom.xml index edc4671..afabf28 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/spring-ai-mcp-sample/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.4.2 spring-ai-mcp-sample diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index 8b60b10..b4bc9fa 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.4.2 spring-ai-mcp Spring AI MCP From 85c4fb871375688cde74fe6707b4efeb323a3a39 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 7 Jan 2025 10:55:08 +0100 Subject: [PATCH 036/505] Next development version --- mcp-docs/pom.xml | 2 +- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp-sample/pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index 95ae9d9..a9dfc71 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental mcp-parent - 0.4.2 + 0.5.0-SNAPSHOT mcp-docs Spring AI MCP Docs diff --git a/mcp/pom.xml b/mcp/pom.xml index fe007eb..30bb8ce 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.2 + 0.5.0-SNAPSHOT mcp jar diff --git a/pom.xml b/pom.xml index 2c9f180..6384d2b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.2 + 0.5.0-SNAPSHOT pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp-sample/pom.xml b/spring-ai-mcp-sample/pom.xml index afabf28..edc4671 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/spring-ai-mcp-sample/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.2 + 0.5.0-SNAPSHOT spring-ai-mcp-sample diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index b4bc9fa..8b60b10 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.4.2 + 0.5.0-SNAPSHOT spring-ai-mcp Spring AI MCP From 611f3258d6b967efa8cb5183e22f12bcdad94540 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Wed, 8 Jan 2025 16:21:21 +0100 Subject: [PATCH 037/505] refactor: Split transport implementations into modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Split the transport implementations into dedicated modules to improve modularity and reduce core dependencies. Added shared test module for common test utilities. Key changes: - Create mcp-transport/mcp-webflux-sse-transport module - Move SseClientTransport → WebFluxSseClientTransport - Move SseServerTransport → WebFluxSseServerTransport - Move related tests and utilities - Create mcp-transport/mcp-webmvc-sse-transport module - Add new WebMvcSseServerTransport implementation - Add corresponding tests and integration tests - Add framework-independent SSE client implementations to core module - Add FlowSseClient using java.net.http - Add HttpClientSseClientTransport using java.net.http - Keep StdioClientTransport/StdioServerTransport in core (no external deps) - Create mcp-test module for shared test infrastructure - Move abstract test base classes - Move shared test utilities and mocks - Update test dependencies The modular approach allows users to choose between: - Framework-specific implementations (WebFlux/WebMVC) - Pure Java implementations (java.net.http) - Basic implementations (STDIO) Add breaking changes readme: 0.5.0-BREAKING-CHANGES.md Resolves #54 --- 0.5.0-BREAKING-CHANGES.md | 105 ++++ README.md | 2 +- docs/CLIENT.SSE.TRANSPORT.md | 144 ------ docs/CLIENT.STDIO.TRANSPORT.md | 123 ----- docs/class-diagrams.puml | 204 -------- docs/ref-client.md | 299 ----------- docs/ref-errors.md | 154 ------ docs/ref-index.md | 91 ---- docs/ref-server.md | 214 -------- docs/ref-session.md | 116 ----- docs/ref-transport.md | 124 ----- .../modules/ROOT/images/class-diagrams.puml | 19 +- .../images/spring-ai-mcp-uml-classdiagram.svg | 2 +- .../main/antora/modules/ROOT/pages/mcp.adoc | 165 +++++- .../antora/modules/ROOT/pages/overview.adoc | 106 +++- .../antora/modules/ROOT/pages/spring-mcp.adoc | 128 ++++- mcp-test/pom.xml | 101 ++++ .../ai/mcp/MockMcpTransport.java | 103 ++++ .../BlaAbstractMcpAsyncClientTests.java | 373 ++++++++++++++ .../client/BlaAbstractMcpSyncClientTests.java | 315 ++++++++++++ .../BlaAbstractMcpAsyncServerTests.java | 478 ++++++++++++++++++ .../server/BlaAbstractMcpSyncServerTests.java | 446 ++++++++++++++++ .../transport/BlaBlockingInputStream.java | 81 +++ .../mcp-webflux-sse-transport/README.md | 1 + .../mcp-webflux-sse-transport/pom.xml | 114 +++++ .../transport/WebFluxSseClientTransport.java | 8 +- .../transport/WebFluxSseServerTransport.java | 6 +- .../client/WebFluxSseMcpAsyncClientTests.java | 8 +- .../client/WebFluxSseMcpSyncClientTests.java | 8 +- .../WebFluxSseClientTransportTests.java | 18 +- .../WebFluxSseAsyncIntegrationTests.java | 439 ++++++++++++++++ .../server/WebFluxSseMcpAsyncServerTests.java | 8 +- .../server/WebFluxSseMcpSyncServerTests.java | 10 +- .../server/transport/BlockingInputStream.java | 81 +++ .../transport/_SseServerTransportTests.java_ | 0 .../mcp-webmvc-sse-transport/README.md | 30 ++ .../mcp-webmvc-sse-transport/pom.xml | 128 +++++ .../transport/WebMvcSseServerTransport.java | 247 +++++++++ .../WebMvcSseAsyncServerTransportTests.java | 129 +++++ .../WebMvcSseSyncServerTransportTests.java | 129 +++++ mcp/pom.xml | 7 +- .../mcp/client/transport/FlowSseClient.java | 202 ++++++++ .../HttpClientSseClientTransport.java | 192 +++++++ .../ai/mcp/client/transport/SSEClient.java | 183 +++++++ .../springframework/ai/mcp/util/Utils.java | 6 +- .../{DemoServer.java => _DemoServer.java_} | 0 .../_HttpServletSseServerTransport.java_ | 297 +++++++++++ .../attic/{MainSSE.java => _MainSSE.java_} | 0 .../HttpClientSseClientTransportTests.java | 290 +++++++++++ .../server/AbstractMcpAsyncServerTests.java | 1 - ...s.java => _SseAsyncIntegrationTests.java_} | 0 pom.xml | 7 +- .../spring-ai-mcp-sample}/README.md | 0 .../spring-ai-mcp-sample}/pom.xml | 27 + .../ai/mcp/sample/client/ClientSse.java | 4 +- .../ai/mcp/sample/client/ClientSse2.java | 32 ++ .../ai/mcp/sample/client/ClientStdio.java | 0 .../ai/mcp/sample/client/SampleClient.java | 0 .../sample/server/McpServerApplication.java | 0 .../ai/mcp/sample/server/McpServerConfig.java | 68 ++- .../ai/mcp/sample/server/OpenLibrary.java | 0 .../src/main/resources/application.properties | 2 +- spring-ai-mcp/pom.xml | 17 + 63 files changed, 5003 insertions(+), 1589 deletions(-) create mode 100644 0.5.0-BREAKING-CHANGES.md delete mode 100644 docs/CLIENT.SSE.TRANSPORT.md delete mode 100644 docs/CLIENT.STDIO.TRANSPORT.md delete mode 100644 docs/class-diagrams.puml delete mode 100644 docs/ref-client.md delete mode 100644 docs/ref-errors.md delete mode 100644 docs/ref-index.md delete mode 100644 docs/ref-server.md delete mode 100644 docs/ref-session.md delete mode 100644 docs/ref-transport.md create mode 100644 mcp-test/pom.xml create mode 100644 mcp-test/src/main/java/org/springframework/ai/mcp/MockMcpTransport.java create mode 100644 mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java create mode 100644 mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java create mode 100644 mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java create mode 100644 mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java create mode 100644 mcp-test/src/main/java/org/springframework/ai/mcp/server/transport/BlaBlockingInputStream.java create mode 100644 mcp-transport/mcp-webflux-sse-transport/README.md create mode 100644 mcp-transport/mcp-webflux-sse-transport/pom.xml rename mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java => mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java (96%) rename mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java => mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java (97%) rename mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpAsyncClientTests.java => mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java (84%) rename mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpSyncClientTests.java => mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java (85%) rename mcp/src/test/java/org/springframework/ai/mcp/client/transport/SseClientTransportTests.java => mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransportTests.java (93%) create mode 100644 mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseAsyncIntegrationTests.java rename mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java => mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java (85%) rename mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java => mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java (83%) create mode 100644 mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/BlockingInputStream.java rename mcp/src/test/java/org/springframework/ai/mcp/server/transport/SseServerTransportTests.java => mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/_SseServerTransportTests.java_ (100%) create mode 100644 mcp-transport/mcp-webmvc-sse-transport/README.md create mode 100644 mcp-transport/mcp-webmvc-sse-transport/pom.xml create mode 100644 mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java create mode 100644 mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java create mode 100644 mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java create mode 100644 mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java create mode 100644 mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java create mode 100644 mcp/src/main/java/org/springframework/ai/mcp/client/transport/SSEClient.java rename mcp/src/test/java/org/springframework/ai/mcp/attic/{DemoServer.java => _DemoServer.java_} (100%) create mode 100644 mcp/src/test/java/org/springframework/ai/mcp/attic/_HttpServletSseServerTransport.java_ rename mcp/src/test/java/org/springframework/ai/mcp/attic/{MainSSE.java => _MainSSE.java_} (100%) create mode 100644 mcp/src/test/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransportTests.java rename mcp/src/test/java/org/springframework/ai/mcp/server/{SseAsyncIntegrationTests.java => _SseAsyncIntegrationTests.java_} (100%) rename {spring-ai-mcp-sample => samples/spring-ai-mcp-sample}/README.md (100%) rename {spring-ai-mcp-sample => samples/spring-ai-mcp-sample}/pom.xml (71%) rename {spring-ai-mcp-sample => samples/spring-ai-mcp-sample}/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse.java (82%) create mode 100644 samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse2.java rename {spring-ai-mcp-sample => samples/spring-ai-mcp-sample}/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java (100%) rename {spring-ai-mcp-sample => samples/spring-ai-mcp-sample}/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java (100%) rename {spring-ai-mcp-sample => samples/spring-ai-mcp-sample}/src/main/java/org/springframework/ai/mcp/sample/server/McpServerApplication.java (100%) rename {spring-ai-mcp-sample => samples/spring-ai-mcp-sample}/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java (85%) rename {spring-ai-mcp-sample => samples/spring-ai-mcp-sample}/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java (100%) rename {spring-ai-mcp-sample => samples/spring-ai-mcp-sample}/src/main/resources/application.properties (87%) diff --git a/0.5.0-BREAKING-CHANGES.md b/0.5.0-BREAKING-CHANGES.md new file mode 100644 index 0000000..7321b16 --- /dev/null +++ b/0.5.0-BREAKING-CHANGES.md @@ -0,0 +1,105 @@ +# Breaking Changes for Spring AI MCP 0.5.0-SNAPSHOT + +## Major Changes + +1. Transport Implementation Modularization + - SSE transport implementations have been moved to dedicated modules: + - `mcp-webflux-sse-transport`: WebFlux-based SSE transport + - `mcp-webmvc-sse-transport`: WebMVC-based SSE transport + - Base MCP module no longer includes transport implementations + +2. Class Renames + - `SseClientTransport` → `WebFluxSseClientTransport` + - `SseServerTransport` → `WebFluxSseServerTransport` + +3. Project Structure + - Test utilities moved to new `mcp-test` module + - Sample application moved to `samples/` directory + +## Migration Guide + +### 1. Update Dependencies + +If using SSE transport, add the appropriate transport module to your pom.xml: + +For WebFlux SSE transport: +```xml + + org.springframework.experimental + mcp-webflux-sse-transport + 0.5.0-SNAPSHOT + +``` + +For WebMVC SSE transport: +```xml + + org.springframework.experimental + mcp-webmvc-sse-transport + 0.5.0-SNAPSHOT + +``` + +### 2. Update Transport Class References + +Replace: +```java +import org.springframework.ai.mcp.client.transport.SseClientTransport; +import org.springframework.ai.mcp.server.transport.SseServerTransport; +``` + +With: +```java +// For WebFlux +import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; +import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; + +// Or for WebMVC +import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; +``` + +### 3. Update Transport Instantiation + +Replace: +```java +var transport = new SseClientTransport(webClientBuilder); +``` + +With: +```java +var transport = new WebFluxSseClientTransport(webClientBuilder); +``` + +Replace: +```java +var serverTransport = new SseServerTransport(objectMapper, messageEndpoint); +``` + +With: +```java +// For WebFlux +var serverTransport = new WebFluxSseServerTransport(objectMapper, messageEndpoint); + +// Or for WebMVC +var serverTransport = new WebMvcSseServerTransport(objectMapper, messageEndpoint); +``` + +### 4. Test Dependencies + +If you're using MCP test utilities, add the test module dependency: + +```xml + + org.springframework.experimental + mcp-test + 0.5.0-SNAPSHOT + test + +``` + +## Other Changes + +- Spring AI dependency updated to 1.0.0-M5 +- Improved dependency management and reduced transitive dependencies +- Sample application restructured under samples/ directory +- New test utilities and base test classes in mcp-test module diff --git a/README.md b/README.md index 486e2be..404d899 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ Explore these MCP examples in the [spring-ai-examples/model-context-protocol](ht - [SQLite Chatbot](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/chatbot) - Interactive chatbot with SQLite database interaction - [Filesystem](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem) - Enables LLM interaction with local filesystem folders and files - [Brave](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave) - Enables natural language interactions with Brave Search, allowing you to perform internet searches. -- [Spring-ai-mcp-sample](./spring-ai-mcp-sample/) - Showcases how to create and use MCP servers and clients with different transport modes and capabilities. +- [Spring-ai-mcp-sample](./samples/spring-ai-mcp-sample/) - Showcases how to create and use MCP servers and clients with different transport modes and capabilities. ## Documentation - [Java MCP SDK documentation](mcp/README.md) diff --git a/docs/CLIENT.SSE.TRANSPORT.md b/docs/CLIENT.SSE.TRANSPORT.md deleted file mode 100644 index e65794f..0000000 --- a/docs/CLIENT.SSE.TRANSPORT.md +++ /dev/null @@ -1,144 +0,0 @@ -# SSE Server Transport Implementation for MCP - -## Overview - -The `SseClientTransport` class implements the Model Context Protocol (MCP) HTTP with SSE transport specification, providing a bidirectional communication channel between clients and servers. This implementation is part of the Spring AI MCP Core library and follows the [MCP HTTP with SSE Transport Specification](https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse). - -## Key Features - -- **Bidirectional Communication**: - - Inbound: Receives messages through SSE connection - - Outbound: Sends messages via HTTP POST requests - -- **Error Handling**: - - Automatic reconnection for transient failures - - Graceful shutdown capabilities - - Comprehensive error reporting - -- **Message Flow**: - 1. Client establishes SSE connection to `/sse` endpoint - 2. Server sends 'endpoint' event with message URI - 3. Client uses provided URI for outbound messages - -## Technical Details - -### Transport Architecture - -The transport consists of two main processing pipelines: - -1. **Inbound Processing**: - - Establishes SSE connection to `/sse` endpoint - - Handles two types of events: - - `message`: JSON-RPC protocol messages - - `endpoint`: Server-provided URI for outbound messages - - Implements automatic retry logic for connection failures - -2. **Outbound Processing**: - - Sends messages via HTTP POST to server-provided endpoint - - Uses dedicated scheduler for sequential message processing - - Handles JSON serialization and HTTP communication - -### Key Components - -- **WebClient**: Handles HTTP communications for both SSE and POST requests -- **ObjectMapper**: Manages JSON serialization/deserialization -- **Scheduler**: Ensures sequential outbound message processing -- **Message Endpoint Sink**: Manages server-provided endpoint URI - -## Usage Example - -```java -// Create WebClient builder with base URL -WebClient.Builder webClientBuilder = WebClient.builder() - .baseUrl("http://localhost:3001"); - -// Initialize transport -SseClientTransport transport = new SseClientTransport(webClientBuilder); - -// Create a JSON-RPC request -JSONRPCRequest request = new JSONRPCRequest( - McpSchema.JSONRPC_VERSION, - "method-name", - "request-id", - Map.of("key", "value") -); - -// Send message -transport.sendMessage(request) - .subscribe( - success -> System.out.println("Message sent successfully"), - error -> System.err.println("Error sending message: " + error) - ); - -// Graceful shutdown when done -transport.closeGracefully() - .subscribe(); -``` - -## Implementation Details - -### Message Processing - -1. **Inbound Messages**: - - Received through SSE connection - - Automatically deserialized from JSON - - Routed to appropriate handlers based on event type - -2. **Outbound Messages**: - - Serialized to JSON - - Sent via HTTP POST - - Processed sequentially on dedicated thread - -### Error Handling - -- **Connection Failures**: - - Automatic retry for transient failures - - Configurable retry policies - - Graceful handling of permanent failures - -- **Message Processing Errors**: - - Comprehensive error reporting - - Clean failure handling - - Maintains system stability - -### Shutdown Process - -The transport implements a graceful shutdown mechanism that: -1. Marks transport as closing -2. Disposes of all subscriptions -3. Cleans up schedulers -4. Completes message endpoint sink - -## Technical Specifications - -- **Protocol**: HTTP with Server-Sent Events (SSE) -- **Message Format**: JSON-RPC 2.0 -- **Content Type**: application/json for outbound, text/event-stream for inbound -- **Endpoints**: - - SSE Connection: `/sse` - - Message Endpoint: Dynamically provided by server - -## Dependencies - -- Spring WebFlux for reactive HTTP client -- Jackson for JSON processing -- Project Reactor for reactive streams -- SLF4J for logging - -## Thread Safety - -The implementation is thread-safe and designed for concurrent use: -- Inbound processing uses SSE event loop -- Outbound processing uses dedicated single-threaded scheduler -- State management uses thread-safe constructs - -## Testing - -The implementation includes comprehensive tests covering: -- Message processing -- Error handling -- Connection management -- Shutdown procedures -- Edge cases and failure scenarios - -For detailed test examples, see `SseClientTransportTests.java`. diff --git a/docs/CLIENT.STDIO.TRANSPORT.md b/docs/CLIENT.STDIO.TRANSPORT.md deleted file mode 100644 index 1c2dc6f..0000000 --- a/docs/CLIENT.STDIO.TRANSPORT.md +++ /dev/null @@ -1,123 +0,0 @@ -# StdioClientTransport - -The `StdioClientTransport` class implements the [MCP Stdio Transport](https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio) specification, providing communication with MCP servers over standard input/output streams. - -## Overview - -The Stdio transport uses standard input/output streams for bidirectional communication between the client and server: -- Messages are sent to the server via stdout -- Messages are received from the server via stdin -- Error and debug information is sent via stderr - -## Message Format - -Messages are exchanged as newline-delimited JSON-RPC messages: -- Each message is a single line of JSON text -- Messages are terminated with a newline character (`\n`) -- Messages follow the JSON-RPC 2.0 specification -- UTF-8 encoding is used for all messages - -### Message Types - -The transport handles three types of JSON-RPC messages: - -1. **Requests** - Messages with both `method` and `id` fields: -```json -{ - "jsonrpc": "2.0", - "id": 1, - "method": "example.method", - "params": {} -} -``` - -2. **Notifications** - Messages with `method` but no `id` field: -```json -{ - "jsonrpc": "2.0", - "method": "example.notification", - "params": {} -} -``` - -3. **Responses** - Messages with either `result` or `error` fields: -```json -{ - "jsonrpc": "2.0", - "id": 1, - "result": {} -} -``` - -## Implementation Details - -### Process Management - -The transport manages a server process with: -- Command and arguments specified via `ServerParameters` -- Environment variables for configuration -- Proper process cleanup on shutdown - -### Threading Model - -The implementation uses three dedicated threads: -1. **Inbound** - Reads and processes messages from stdin -2. **Outbound** - Writes messages to stdout -3. **Error** - Handles stderr messages - -### Error Handling - -Errors are handled at multiple levels: -- Process startup failures -- Stream I/O errors -- Message parsing errors -- Process termination handling - -## Usage Example - -```java -// Create server parameters -ServerParameters params = ServerParameters.builder() - .command("path/to/server") - .args(List.of("--arg1", "value1")) - .env(Map.of("ENV_VAR", "value")) - .build(); - -// Create transport -StdioClientTransport transport = new StdioClientTransport(params); - -// Start transport -transport.start(); - -// Send message -JSONRPCRequest request = new JSONRPCRequest(); -request.setId(1); -request.setMethod("example.method"); -request.setParams(new HashMap<>()); -transport.send(request); - -// Close transport -transport.closeGracefully().block(); -``` - -## Error Messages - -Error messages from the server process are: -- Written to stderr -- Logged at ERROR level -- Emitted through the error sink for handling -- UTF-8 encoded - -## Debugging - -For debugging purposes: -1. Enable DEBUG level logging to see detailed message flow -2. Monitor stderr for server process errors -3. Check process exit codes for abnormal termination - -## Implementation Notes - -- The transport ensures thread safety through dedicated schedulers -- Messages are processed asynchronously using Project Reactor -- Resources are properly cleaned up on shutdown -- The implementation is resilient to various failure modes diff --git a/docs/class-diagrams.puml b/docs/class-diagrams.puml deleted file mode 100644 index e68059c..0000000 --- a/docs/class-diagrams.puml +++ /dev/null @@ -1,204 +0,0 @@ -@startuml Core Components - -' Core Interfaces -interface McpTransport { - +Mono connect(Function, Mono> handler) - +Mono sendMessage(JSONRPCMessage message) - +void close() - +Mono closeGracefully() - + T unmarshalFrom(Object data, TypeReference typeRef) -} - -interface McpSession { - + Mono sendRequest(String method, Object requestParams, TypeReference typeRef) - +Mono sendNotification(String method, Map params) - +Mono closeGracefully() - +void close() -} - -' Core Implementation Classes -class DefaultMcpSession { - -McpTransport transport - -ObjectMapper objectMapper - +interface RequestHandler - +interface NotificationHandler -} - -' Client Classes -class McpClient { - +{static} Builder using(McpTransport transport) - +{static} McpAsyncClient async(McpTransport transport) - +{static} McpSyncClient sync(McpTransport transport) -} - -class McpAsyncClient { - +Mono initialize() - +Mono callTool(CallToolRequest request) - +Mono listTools() - +Mono listResources() - +Mono readResource(ReadResourceRequest request) - +Mono listResourceTemplates() - +Mono listPrompts() - +Mono getPrompt(GetPromptRequest request) -} - -class McpSyncClient { - +InitializeResult initialize() - +CallToolResult callTool(CallToolRequest request) - +ListToolsResult listTools() - +ListResourcesResult listResources() - +ReadResourceResult readResource(ReadResourceRequest request) - +ListResourceTemplatesResult listResourceTemplates() - +ListPromptsResult listPrompts() - +GetPromptResult getPrompt(GetPromptRequest request) -} - -' Server Classes -class McpServer { - +{static} Builder using(McpTransport transport) -} - -class McpAsyncServer { - +Mono addTool(ToolHandler toolHandler) - +Mono removeTool(String toolName) - +Mono notifyToolsListChanged() - +Mono notifyResourcesListChanged() - +Mono notifyPromptsListChanged() - +interface ToolHandler -} - -class McpSyncServer { - +void addTool(ToolHandler toolHandler) - +void removeTool(String toolName) - +void notifyToolsListChanged() - +void notifyResourcesListChanged() - +void notifyPromptsListChanged() - +McpAsyncServer getAsyncServer() -} - -' Transport Implementations -class StdioClientTransport { - -Process serverProcess - -ServerParameters parameters -} - -class SseClientTransport { - -WebClient webClient -} - -class StdioServerTransport { -} - -class SseServerTransport { -} - -' Schema and Error Classes -class McpSchema { - +class ErrorCodes - +interface Request - +interface JSONRPCMessage - +interface ResourceContents - +interface Content - +interface ServerCapabilities - +{static} JSONRPCMessage deserializeJsonRpcMessage() -} - -class McpError { - -int code - -String message -} - -' Relationships -McpTransport <|.. StdioClientTransport -McpTransport <|.. SseClientTransport -McpTransport <|.. StdioServerTransport -McpTransport <|.. SseServerTransport - -McpSession <|.. DefaultMcpSession -DefaultMcpSession --o McpAsyncClient -DefaultMcpSession --o McpAsyncServer - -McpClient ..> McpAsyncClient : creates -McpClient ..> McpSyncClient : creates -McpSyncClient o-- McpAsyncClient - -McpServer ..> McpAsyncServer : creates -McpServer ..> McpSyncServer : creates -McpSyncServer o-- McpAsyncServer - -DefaultMcpSession o-- McpTransport -McpSchema <.. McpSession : uses -McpError ..> McpSession : throws - -@enduml - -@startuml Message Flow - -package "MCP Schema" { - interface JSONRPCMessage { - +String jsonrpc() - } - - interface Request { - } - - class InitializeRequest - class CallToolRequest - class ListToolsRequest - class ListResourcesRequest - class ReadResourceRequest - class ListResourceTemplatesRequest - class ListPromptsRequest - class GetPromptRequest -} - -package "Resource Types" { - interface ResourceContents { - +String uri() - +String mimeType() - } - - class TextResourceContents - class BlobResourceContents - - interface Content { - +String type() - } - - class TextContent - class ImageContent - class EmbeddedResource - - interface Annotated { - +Annotations annotations() - } - - interface PromptOrResourceReference { - +String type() - } - - class PromptReference - class ResourceReference -} - -JSONRPCMessage <|.. Request -Request <|.. InitializeRequest -Request <|.. CallToolRequest -Request <|.. ListToolsRequest -Request <|.. ListResourcesRequest -Request <|.. ReadResourceRequest -Request <|.. ListResourceTemplatesRequest -Request <|.. ListPromptsRequest -Request <|.. GetPromptRequest - -ResourceContents <|.. TextResourceContents -ResourceContents <|.. BlobResourceContents - -Content <|.. TextContent -Content <|.. ImageContent -Content <|.. EmbeddedResource - -PromptOrResourceReference <|.. PromptReference -PromptOrResourceReference <|.. ResourceReference - -@enduml diff --git a/docs/ref-client.md b/docs/ref-client.md deleted file mode 100644 index f0767bd..0000000 --- a/docs/ref-client.md +++ /dev/null @@ -1,299 +0,0 @@ -# MCP Client Reference - -## McpClient Factory - -`org.springframework.ai.mcp.client.McpClient` - -The `McpClient` class serves as a factory for creating Model Context Protocol (MCP) clients. It provides the main entry point for establishing connections with MCP servers, offering both synchronous and asynchronous client implementations. - -### Overview - -The client factory uses a builder pattern for flexible configuration, allowing you to customize various aspects of the client including timeout durations, notification handlers, and more. - -### Client Types - -The factory can create two types of clients: -- `McpAsyncClient` for non-blocking operations -- `McpSyncClient` for blocking operations - -### Builder Configuration - -#### Basic Usage -```java -McpClient.using(transport) - .requestTimeout(Duration.ofSeconds(5)) - .sync(); // or .async() -``` - -#### Builder Methods - -##### using(McpTransport transport) -```java -public static Builder using(McpTransport transport) -``` -Start building an MCP client with the specified transport. - -##### requestTimeout(Duration requestTimeout) -```java -public Builder requestTimeout(Duration requestTimeout) -``` -Set the request timeout duration (default is 20 seconds). - -##### capabilities(ClientCapabilities capabilities) -```java -public Builder capabilities(ClientCapabilities capabilities) -``` -Set the client capabilities that define what features the client supports. - -##### clientInfo(Implementation clientInfo) -```java -public Builder clientInfo(Implementation clientInfo) -``` -Set the client implementation information (name and version). - -##### roots(List roots) -```java -public Builder roots(List roots) -``` -Add a list of roots that define filesystem boundaries for server operations. - -##### roots(Root... roots) -```java -public Builder roots(Root... roots) -``` -Add roots that define filesystem boundaries for server operations. - -##### toolsChangeConsumer(Consumer> consumer) -```java -public Builder toolsChangeConsumer(Consumer> toolsChangeConsumer) -``` -Add a consumer for tool changes notifications. - -##### resourcesChangeConsumer(Consumer> consumer) -```java -public Builder resourcesChangeConsumer(Consumer> resourcesChangeConsumer) -``` -Add a consumer for resource changes notifications. - -##### promptsChangeConsumer(Consumer> consumer) -```java -public Builder promptsChangeConsumer(Consumer> promptsChangeConsumer) -``` -Add a consumer for prompt changes notifications. - -##### sync() -```java -public McpSyncClient sync() -``` -Build and return a synchronous MCP client. - -##### async() -```java -public McpAsyncClient async() -``` -Build and return an asynchronous MCP client. - -### Usage Examples - -#### Creating a Synchronous Client -```java -McpTransport transport = // obtain transport instance - -// Configure client capabilities -ClientCapabilities capabilities = ClientCapabilities.builder() - .experimental(Map.of("feature", "value")) - .roots(true) - .sampling() - .build(); - -McpSyncClient client = McpClient.using(transport) - .requestTimeout(Duration.ofSeconds(10)) - .rootsListChangedNotification(true) - .toolsChangeConsumer(tools -> { - System.out.println("Tools updated: " + tools); - }) - .sync(); - -// Initialize client with capabilities -client.initialize(LATEST_PROTOCOL_VERSION, capabilities, - new Implementation("client-name", "1.0.0")); -``` - -#### Creating an Asynchronous Client -```java -McpTransport transport = // obtain transport instance -McpAsyncClient client = McpClient.using(transport) - .requestTimeout(Duration.ofSeconds(5)) - .resourcesChangeConsumer(resources -> { - System.out.println("Resources updated: " + resources); - }) - .async(); -``` - -#### Using Multiple Change Consumers -```java -McpClient.using(transport) - .toolsChangeConsumer(tools -> { - // Handle tool changes - }) - .toolsChangeConsumer(tools -> { - // Additional tool change handling - }) - .resourcesChangeConsumer(resources -> { - // Handle resource changes - }) - .sync(); -``` - -### Client Capabilities - -The `ClientCapabilities` class represents features that clients can implement to enrich connected MCP servers. It uses a builder pattern for easy configuration. - -#### ClientCapabilities Builder - -```java -ClientCapabilities capabilities = ClientCapabilities.builder() - .experimental(experimentalMap) - .roots(true) - .sampling() - .build(); -``` - -##### Builder Methods - -###### experimental(Map experimental) -```java -public Builder experimental(Map experimental) -``` -Set experimental features map for work-in-progress capabilities. - -###### roots(Boolean listChanged) -```java -public Builder roots(Boolean listChanged) -``` -Configure root capabilities with listChanged parameter. Roots define the boundaries of where servers can operate within the filesystem. - -###### sampling() -```java -public Builder sampling() -``` -Add sampling capabilities that allow servers to request LLM sampling from language models via clients. - -### Client Operations - -#### Root Management - -Both synchronous and asynchronous clients provide methods for managing filesystem roots: - -##### Synchronous API -```java -void addRoot(Root root) // Add a new root -void removeRoot(String rootUri) // Remove a root by URI -void rootsListChangedNotification() // Notify about roots list changes -``` - -##### Asynchronous API -```java -Mono addRoot(Root root) // Add a new root -Mono removeRoot(String rootUri) // Remove a root by URI -Mono rootsListChangedNotification() // Notify about roots list changes -``` - -#### Tools API - -Methods for interacting with server tools: - -##### Synchronous API -```java -CallToolResult callTool(CallToolRequest request) // Execute a tool -ListToolsResult listTools() // List all available tools -ListToolsResult listTools(String cursor) // List tools with pagination -``` - -##### Asynchronous API -```java -Mono callTool(CallToolRequest request) -Mono listTools() -Mono listTools(String cursor) -``` - -#### Resources API - -Methods for working with server resources: - -##### Synchronous API -```java -ListResourcesResult listResources() // List all resources -ListResourcesResult listResources(String cursor) // List resources with pagination -ReadResourceResult readResource(Resource resource) // Read a resource -ReadResourceResult readResource(ReadResourceRequest request) // Read a resource by request -ListResourceTemplatesResult listResourceTemplates() // List resource templates -void subscribeResource(SubscribeRequest request) // Subscribe to resource updates -void unsubscribeResource(UnsubscribeRequest request) // Unsubscribe from updates -void sendResourcesListChanged() // Notify about resource changes -``` - -##### Asynchronous API -```java -Mono listResources() -Mono listResources(String cursor) -Mono readResource(Resource resource) -Mono readResource(ReadResourceRequest request) -Mono listResourceTemplates() -Mono subscribeResource(SubscribeRequest request) -Mono unsubscribeResource(UnsubscribeRequest request) -Mono sendResourcesListChanged() -``` - -#### Prompts API - -Methods for working with server prompts: - -##### Synchronous API -```java -ListPromptsResult listPrompts() // List all prompts -ListPromptsResult listPrompts(String cursor) // List prompts with pagination -GetPromptResult getPrompt(GetPromptRequest request) // Get a specific prompt -void promptListChangedNotification() // Notify about prompt changes -``` - -##### Asynchronous API -```java -Mono listPrompts() -Mono listPrompts(String cursor) -Mono getPrompt(GetPromptRequest request) -Mono promptListChangedNotification() -``` - -#### Lifecycle Management - -Methods for managing client lifecycle: - -##### Synchronous API -```java -InitializeResult initialize() // Initialize client connection -void close() // Close client immediately -boolean closeGracefully() // Close client with graceful shutdown -Object ping() // Send ping request -``` - -##### Asynchronous API -```java -Mono initialize() -void close() -Mono closeGracefully() -Mono ping() -``` - -### Implementation Notes - -- The client factory uses a builder pattern for configuration -- Default request timeout is 20 seconds -- Multiple consumers can be registered for tools, resources, and prompts changes -- The builder validates that the transport is not null -- Deprecated static factory methods are available but using the builder pattern is recommended -- The synchronous client is implemented as a wrapper around the asynchronous client -- ClientCapabilities uses a builder pattern for configuring client features -- The synchronous client blocks on async operations with the configured request timeout -- Resource subscriptions require server support for the subscribe capability -- Root management requires client to be configured with root capabilities diff --git a/docs/ref-errors.md b/docs/ref-errors.md deleted file mode 100644 index 14d37c9..0000000 --- a/docs/ref-errors.md +++ /dev/null @@ -1,154 +0,0 @@ -# MCP Error Handling Reference - -## McpError Class - -`org.springframework.ai.mcp.spec.McpError` - -The `McpError` class is a runtime exception that represents errors that occur during Model Context Protocol (MCP) operations. It extends `RuntimeException` and provides a way to encapsulate error information from the MCP protocol. - -### Overview - -The McpError class is designed to handle various error scenarios that can occur during MCP communication, including protocol errors, transport errors, and application-specific errors. - -### Class Definition - -```java -public class McpError extends RuntimeException { - public McpError(Object error) { - super(error.toString()); - } -} -``` - -### Common Error Scenarios - -1. **Transport Errors** - - Connection failures - - Timeout errors - - Protocol violations - -2. **Protocol Errors** - - Invalid JSON-RPC messages - - Missing required fields - - Invalid method names - -3. **Application Errors** - - Tool execution failures - - Resource access errors - - Invalid parameters - -### Error Handling Best Practices - -#### Client-Side Error Handling - -```java -McpClient client = McpClient.using(transport) - .async(); - -client.sendRequest("method", params) - .onErrorResume(McpError.class, error -> { - // Handle MCP-specific errors - logger.error("MCP error occurred: {}", error.getMessage()); - return Mono.empty(); - }) - .onErrorResume(Exception.class, error -> { - // Handle other exceptions - logger.error("Unexpected error: {}", error.getMessage()); - return Mono.empty(); - }); -``` - -#### Server-Side Error Handling - -```java -McpServer.using(transport) - .tool(new McpSchema.Tool("example", "Example tool", inputSchema), - args -> { - try { - // Tool implementation - return new McpSchema.CallToolResult(result); - } - catch (Exception e) { - // Convert to MCP error - throw new McpError("Tool execution failed: " + e.getMessage()); - } - }) - .async(); -``` - -### Implementation Notes - -- McpError is a runtime exception, so it doesn't require explicit declaration in method signatures -- The error message is created by calling toString() on the provided error object -- Error handling should be implemented at both client and server sides -- Reactive error handling using Project Reactor's error operators is recommended -- Consider logging errors for debugging and monitoring purposes - -### Error Recovery Strategies - -1. **Retry Logic** -```java -client.sendRequest("method", params) - .retry(3) // Retry up to 3 times - .onErrorResume(McpError.class, error -> { - // Handle failure after retries - return Mono.empty(); - }); -``` - -2. **Fallback Values** -```java -client.sendRequest("method", params) - .onErrorReturn(McpError.class, fallbackValue); -``` - -3. **Circuit Breaking** -```java -// Using Resilience4j or similar library -CircuitBreaker circuitBreaker = CircuitBreaker.ofDefaults("mcpClient"); -client.sendRequest("method", params) - .transform(CircuitBreakerOperator.of(circuitBreaker)); -``` - -### Error Logging and Monitoring - -```java -client.sendRequest("method", params) - .doOnError(McpError.class, error -> { - // Log error details - logger.error("MCP error: {}", error.getMessage()); - // Update metrics - errorCounter.increment(); - }); -``` - -### Integration with Spring Error Handling - -```java -@ControllerAdvice -public class McpErrorHandler { - @ExceptionHandler(McpError.class) - public ResponseEntity handleMcpError(McpError error) { - ErrorResponse response = new ErrorResponse( - "MCP_ERROR", - error.getMessage() - ); - return ResponseEntity - .status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(response); - } -} -``` - -### Testing Error Scenarios - -```java -@Test -void testMcpError() { - McpError error = new McpError("Test error"); - assertEquals("Test error", error.getMessage()); - - assertThrows(McpError.class, () -> { - throw new McpError("Test error"); - }); -} diff --git a/docs/ref-index.md b/docs/ref-index.md deleted file mode 100644 index 13c860a..0000000 --- a/docs/ref-index.md +++ /dev/null @@ -1,91 +0,0 @@ -# Spring AI MCP Reference Documentation - -This documentation covers the Spring AI implementation of the Model Context Protocol (MCP) specification. The implementation follows the [official MCP specification](https://spec.modelcontextprotocol.io/specification/). - -## Component Hierarchy - -### 1. Transport Layer -[Transport](ref-transport.md) -- McpTransport Interface -- Transport Implementations (SSE, STDIO) -- Message Serialization/Deserialization - -### 2. Session Layer -[Session Management](ref-session.md) -- McpSession Interface -- DefaultMcpSession Implementation -- Uses McpTransport for communication - -### 3. High-Level Components -Both components operate at the same level, using McpSession internally: - -[Client](ref-client.md) -- McpClient Factory -- Synchronous and Asynchronous Implementations -- Client Configuration and Builder Pattern - -[Server](ref-server.md) -- McpServer Factory -- Synchronous and Asynchronous Implementations -- Server Configuration and Builder Pattern - -### 4. Supporting Components - -[Error Handling](ref-errors.md) -- McpError -- Error Codes and Handling -- Exception Hierarchy - - -## Component Relationships - -``` -┌─────────────┐ ┌─────────────┐ -│ McpClient │ │ McpServer │ -└─────────────┘ └─────────────┘ - │ │ - └─────────┬────────┘ - │ - ┌───────────────┐ - │ McpSession │ - └───────────────┘ - │ - ┌───────────────┐ - │ McpTransport │ - └───────────────┘ -``` - -## Package Organization - -The implementation is organized under the `org.springframework.ai.mcp` package with the following structure: - -- `org.springframework.ai.mcp.spec` - Core interfaces and classes - - McpTransport - - McpSession - - McpSchema - - McpError -- `org.springframework.ai.mcp.client` - Client implementations - - McpClient - - McpAsyncClient - - McpSyncClient - - Client-specific transports -- `org.springframework.ai.mcp.server` - Server implementations - - McpServer - - McpAsyncServer - - McpSyncServer - - Server-specific transports -- `org.springframework.ai.mcp.util` - Utility classes - - Assert - - Utils - -## Key Features - -- Synchronous and Asynchronous implementations -- Multiple transport options (SSE, STDIO) -- Comprehensive error handling -- Builder pattern for configuration -- Reactive programming support with Project Reactor -- Type-safe message handling -- Resource and prompt management -- Tool discovery and execution -- Change notification system diff --git a/docs/ref-server.md b/docs/ref-server.md deleted file mode 100644 index 5ee6739..0000000 --- a/docs/ref-server.md +++ /dev/null @@ -1,214 +0,0 @@ -# MCP Server Reference - -## McpServer Factory - -`org.springframework.ai.mcp.server.McpServer` - -The `McpServer` class serves as a factory for creating Model Context Protocol (MCP) servers. It provides the main entry point for establishing MCP servers, offering both synchronous and asynchronous server implementations. - -### Overview - -The server factory uses a builder pattern for flexible configuration, allowing you to customize various aspects of the server including server information, capabilities, tools, resource providers, and prompt providers. - -### Server Types - -The factory can create two types of servers: -- `McpAsyncServer` for non-blocking operations -- `McpSyncServer` for blocking operations - -### Builder Configuration - -#### Basic Usage -```java -McpServer.using(transport) - .serverInfo("my-server", "1.0.0") - .addTool(new MyToolHandler()) - .async(); // or .sync() -``` - -#### Builder Methods - -##### using(McpTransport transport) -```java -public static Builder using(McpTransport transport) -``` -Start building an MCP server with the specified transport. - -##### serverInfo(Implementation serverInfo) -```java -public Builder serverInfo(McpSchema.Implementation serverInfo) -``` -Set the server implementation information. - -##### serverInfo(String name, String version) -```java -public Builder serverInfo(String name, String version) -``` -Set the server implementation information using name and version. - -##### serverCapabilities(ServerCapabilities capabilities) -```java -public Builder serverCapabilities(McpSchema.ServerCapabilities serverCapabilities) -``` -Set the server capabilities configuration. - -##### addTool(ToolHandler handler) -```java -public Builder addTool(T toolHandler) -``` -Add a tool handler to the server. - -##### tool(Tool tool, Function, CallToolResult> handler) -```java -public Builder tool(McpSchema.Tool tool, Function, McpSchema.CallToolResult> handler) -``` -Add a tool with its handler function. - -##### addTools(List handlers) -```java -public Builder addTools(List toolHandlers) -``` -Add multiple tool handlers to the server. - -##### resourcesProvider(Function> provider) -```java -public Builder resourcesProvider(Function> resourcesProvider) -``` -Set the resources provider function. - -##### promptsProvider(Function> provider) -```java -public Builder promptsProvider(Function> promptsProvider) -``` -Set the prompts provider function. - -##### sync() -```java -public McpSyncServer sync() -``` -Build and return a synchronous MCP server. - -##### async() -```java -public AsyncServerBuilder async() -``` -Build and return an asynchronous server builder. - -### Usage Examples - -#### Creating a Basic Server -```java -McpTransport transport = // obtain transport instance -McpServer.using(transport) - .serverInfo("my-server", "1.0.0") - .sync(); -``` - -#### Creating a Server with Tools -```java -McpServer.using(transport) - .serverInfo("calculation-server", "1.0.0") - .tool( - new McpSchema.Tool("calculate", "Performs calculations", Map.of( - "operation", Map.of("type", "string"), - "numbers", Map.of("type", "array") - )), - args -> { - // Handle calculation - return new McpSchema.CallToolResult(/* result */); - } - ) - .async(); -``` - -#### Creating a Server with Resources and Prompts -```java -McpServer.using(transport) - .serverInfo("content-server", "1.0.0") - .resourcesProvider(cursor -> { - // Return list of resources based on cursor - return List.of(/* resources */); - }) - .promptsProvider(cursor -> { - // Return list of prompts based on cursor - return List.of(/* prompts */); - }) - .sync(); -``` - -- Tool handlers must be thread-safe as they may be called concurrently -- The synchronous server is implemented as a wrapper around the asynchronous server -- Resource and prompt providers use cursor-based pagination -- The AsyncServerBuilder allows adding tools after server creation - -### Tool Handler Interface - -```java -public interface ToolHandler { - String getName(); - String getDescription(); - Map getInputSchema(); - McpSchema.CallToolResult call(Map arguments); -} -``` - -Tool handlers implement this interface to define: -- Tool name and description -- Input schema for validation -- Execution logic in the call method - -### Logging Capabilities - -The MCP Server supports logging functionality that allows sending log messages with different severity levels to the Client. This feature can be enabled through server capabilities configuration. - -#### Enabling Logging - -```java -McpServer.using(transport) - .serverInfo("my-server", "1.0.0") - .capabilities(ServerCapabilities.builder().logging().build()) - .sync(); // or .async() -``` - -#### Logging Levels - -The server supports the following logging levels: -- TRACE -- DEBUG -- INFO -- WARN -- ERROR -- FATAL - -#### Sending Log Messages - -For synchronous servers: -```java -LoggingMessageNotification notification = McpSchema.LoggingMessageNotification.builder() - .level(McpSchema.LoggingLevel.INFO) - .logger("my-logger") - .data("Log message") - .build(); - -mcpSyncServer.loggingNotification(notification); -``` - -For asynchronous servers: -```java -LoggingMessageNotification notification = McpSchema.LoggingMessageNotification.builder() - .level(McpSchema.LoggingLevel.INFO) - .logger("my-logger") - .data("Log message") - .build(); - -mcpAsyncServer.loggingNotification(notification) - .subscribe(); -``` - -- Logging works even if the logging capability is not enabled -- Null notifications are rejected with a McpError -- Log messages include: - - Level: The severity level of the message - - Logger: The name of the logger (typically identifies the source) - - Data: The actual log message content -- The server implementation is transport-agnostic, allowing different transport mechanisms to handle the log messages diff --git a/docs/ref-session.md b/docs/ref-session.md deleted file mode 100644 index 8896dae..0000000 --- a/docs/ref-session.md +++ /dev/null @@ -1,116 +0,0 @@ -# MCP Session Reference - -## McpSession Interface - -`org.springframework.ai.mcp.spec.McpSession` - -The MCP (Model Context Protocol) session components implement the [MCP specification](https://spec.modelcontextprotocol.io/) for managing bidirectional JSON-RPC communication between clients and model servers. -The implementation provides a foundation for request-response patterns and notification handling, as well as managing the session lifecycle. - -### Overview - -The session operates asynchronously using Project Reactor's `Mono` type for non-blocking operations. It supports both request-response patterns and one-way notifications. - -### Methods - -#### Request-Response - -```java - Mono sendRequest(String method, Object requestParams, TypeReference typeRef) -``` - -Sends a request to the model server and expects a response of type T. - -**Parameters:** -- `method`: The name of the method to be called on the server -- `requestParams`: The parameters to be sent with the request -- `typeRef`: The TypeReference describing the expected response type - -**Returns:** -- A `Mono` that will emit the response when received - -#### Notification - -```java -Mono sendNotification(String method, Map params) -``` - -Sends a notification to the model server with parameters. - -**Parameters:** -- `method`: The name of the notification method to be called on the server -- `params`: A map of parameters to be sent with the notification - -**Returns:** -- A `Mono` that completes when the notification has been sent - -#### Close Gracefully -```java -Mono closeGracefully() -``` - -Closes the session and releases any associated resources asynchronously. - -**Returns:** -- A `Mono` that completes when the session has been closed - -#### Close -```java -void close() -``` - -Closes the session and releases any associated resources synchronously. - -### DefaultMcpSession Implementation - -The `DefaultMcpSession` provides the concrete implementation of the MCP session with the following key features: - -#### 1. Message Correlation -- Uses unique request IDs combining session UUID prefix and atomic counter -- Maintains thread-safe tracking of pending responses -- Implements timeout management for requests - -#### 2. Handler Registration -```java -public interface RequestHandler { - Mono handle(Object params); -} - -public interface NotificationHandler { - Mono handle(Object params); -} -``` - - -### Usage Example - -```java -McpSession session = // obtain session instance - -// Send a request -TypeReference typeRef = new TypeReference() {}; -Mono response = session.sendRequest("method.name", requestParams, typeRef); - -// Send a notification without parameters -Mono notificationResult = session.sendNotification("notification.method"); - -// Send a notification with parameters -Map params = new HashMap<>(); -params.put("key", "value"); -Mono paramNotificationResult = session.sendNotification("notification.method", params); - -// Close the session gracefully -session.closeGracefully() - .subscribe( - null, - error -> System.err.println("Error closing session: " + error), - () -> System.out.println("Session closed successfully") - ); -``` - -### Implementation Notes - -- The interface is designed to be transport-agnostic, allowing different transport implementations (SSE, STDIO) to be used. -- All operations except `close()` are non-blocking and return `Mono` instances. -- The `sendRequest` method uses Jackson's `TypeReference` for type-safe deserialization of responses. -- The default implementation of `sendNotification(String)` delegates to `sendNotification(String, Map)` with null parameters. diff --git a/docs/ref-transport.md b/docs/ref-transport.md deleted file mode 100644 index dd21da7..0000000 --- a/docs/ref-transport.md +++ /dev/null @@ -1,124 +0,0 @@ -# MCP Transport Reference - -## McpTransport Interface - -`org.springframework.ai.mcp.spec.McpTransport` - -The `McpTransport` interface defines the asynchronous transport layer for the Model Context Protocol (MCP). It provides the foundation for implementing custom transport mechanisms, handling bidirectional communication between client and server components using JSON-RPC format. - -### Overview - -The transport layer is designed to be protocol-agnostic, allowing for various implementations such as WebSocket, HTTP, or custom protocols. It manages the lifecycle of connections and handles message exchange between components. - -### Key Responsibilities - -- Managing the lifecycle of the transport connection -- Handling incoming messages and errors from the server -- Sending outbound messages to the server -- Message serialization and deserialization - -### Methods - -#### Connect -```java -Mono connect(Function, Mono> handler) -``` - -Initializes and starts the transport connection. - -**Parameters:** -- `handler`: A function that processes incoming messages and returns response messages - -**Returns:** -- A `Mono` that completes when the connection is established - -#### Send Message -```java -Mono sendMessage(JSONRPCMessage message) -``` - -Sends a message to the server asynchronously. - -**Parameters:** -- `message`: The JSON-RPC message to be sent to the server - -**Returns:** -- A `Mono` that completes when the message has been sent - -#### Close Gracefully -```java -Mono closeGracefully() -``` - -Closes the transport connection and releases any associated resources asynchronously. - -**Returns:** -- A `Mono` that completes when the connection has been closed - -#### Close -```java -default void close() -``` - -Synchronously closes the transport connection. By default, this method delegates to `closeGracefully()` and subscribes to the result. - -#### Unmarshal From -```java - T unmarshalFrom(Object data, TypeReference typeRef) -``` - -Deserializes data into the specified type. - -**Parameters:** -- `data`: The data to deserialize -- `typeRef`: The TypeReference describing the target type - -**Returns:** -- The deserialized object of type T - -### Implementation Notes - -- The transport layer uses Project Reactor's `Mono` type for non-blocking operations -- Messages are exchanged using the JSON-RPC format as specified by the MCP protocol -- The interface is designed to be extensible, allowing for different transport implementations -- Current implementations include: - - SSE (Server-Sent Events) Transport - - STDIO Transport (Standard Input/Output) - -### Usage Example - -```java -McpTransport transport = // obtain transport instance - -// Connect and handle messages -transport.connect(message -> { - // Process incoming message - return processMessage(message); -}).subscribe(); - -// Send a message -JSONRPCMessage message = new JSONRPCMessage(); -// ... configure message -transport.sendMessage(message) - .subscribe( - null, - error -> System.err.println("Error sending message: " + error), - () -> System.out.println("Message sent successfully") - ); - -// Close the transport -transport.closeGracefully() - .subscribe( - null, - error -> System.err.println("Error closing transport: " + error), - () -> System.out.println("Transport closed successfully") - ); -``` - -### Transport Implementations - -#### SSE Transport -The SSE (Server-Sent Events) transport implementation provides a unidirectional communication channel from the server to the client using HTTP streaming. - -#### STDIO Transport -The STDIO transport implementation uses standard input/output streams for communication, making it suitable for command-line applications and process-based communication. diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml b/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml index 7a2dfe2..92812df 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml +++ b/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml @@ -149,16 +149,27 @@ class StdioClientTransport implements ClientMcpTransport { +Sinks.Many getErrorSink() } -class SseClientTransport implements ClientMcpTransport { -} - class StdioServerTransport implements ServerMcpTransport { } -class SseServerTransport implements ServerMcpTransport { + +class HttpClientSseClientTransport implements ClientMcpTransport { +} + + +class WebFluxSseClientTransport implements ClientMcpTransport { +} + + +class WebFluxSseServerTransport implements ServerMcpTransport { +RouterFunction getRouterFunction() } +class WebMvcSseServerTransport implements ServerMcpTransport { + +RouterFunction getRouterFunction() +} + + ' Schema and Error Classes class McpSchema { +class ErrorCodes diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg index ecf2b64..1843faa 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg +++ b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg @@ -1 +1 @@ -McpTransportMono<Void> connect(Function<Mono<JSONRPCMessage>, Mono<JSONRPCMessage>> handler)Mono<Void> sendMessage(JSONRPCMessage message)void close()Mono<Void> closeGracefully()<T> T unmarshalFrom(Object data, TypeReference<T> typeRef)McpSession<T> Mono<T> sendRequest(String method, Object requestParams, TypeReference<T> typeRef)Mono<Void> sendNotification(String method, Map<String, Object> params)Mono<Void> closeGracefully()void close()DefaultMcpSessioninterface RequestHandlerinterface NotificationHandlerMcpClientBuilder using(ClientMcpTransport transport)McpAsyncClientMono<InitializeResult> initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully()Mono<Object> ping()Mono<Void> addRoot(Root root)Mono<Void> removeRoot(String rootUri)Mono<Void> rootsListChangedNotification()Mono<CallToolResult> callTool(CallToolRequest request)Mono<ListToolsResult> listTools()Mono<ListResourcesResult> listResources()Mono<ReadResourceResult> readResource(ReadResourceRequest request)Mono<ListResourceTemplatesResult> listResourceTemplates()Mono<Void> subscribeResource(SubscribeRequest request)Mono<Void> unsubscribeResource(UnsubscribeRequest request)Mono<ListPromptsResult> listPrompts()Mono<GetPromptResult> getPrompt(GetPromptRequest request)Mono<Void> setLoggingLevel(LoggingLevel level)McpSyncClientInitializeResult initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()boolean closeGracefully()Object ping()void addRoot(Root root)void removeRoot(String rootUri)void rootsListChangedNotification()CallToolResult callTool(CallToolRequest request)ListToolsResult listTools()ListResourcesResult listResources()ReadResourceResult readResource(ReadResourceRequest request)ListResourceTemplatesResult listResourceTemplates()void subscribeResource(SubscribeRequest request)void unsubscribeResource(UnsubscribeRequest request)ListPromptsResult listPrompts()GetPromptResult getPrompt(GetPromptRequest request)void setLoggingLevel(LoggingLevel level)McpServerBuilder using(ServerMcpTransport transport)McpAsyncServerServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully() Mono<Void> addTool(ToolRegistration toolRegistration)Mono<Void> removeTool(String toolName)Mono<Void> notifyToolsListChanged() Mono<Void> addResource(ResourceRegistration resourceHandler)Mono<Void> removeResource(String resourceUri)Mono<Void> notifyResourcesListChanged() Mono<Void> addPrompt(PromptRegistration promptRegistration)Mono<Void> removePrompt(String promptName)Mono<Void> notifyPromptsListChanged() Mono<Void> loggingNotification(LoggingMessageNotification notification) Mono<CreateMessageResult> createMessage(CreateMessageRequest request)McpSyncServerMcpAsyncServer getAsyncServer() ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()void closeGracefully() void addTool(ToolRegistration toolHandler)void removeTool(String toolName)void notifyToolsListChanged() void addResource(ResourceRegistration resourceHandler)void removeResource(String resourceUri)void notifyResourcesListChanged() void addPrompt(PromptRegistration promptRegistration)void removePrompt(String promptName)void notifyPromptsListChanged() void loggingNotification(LoggingMessageNotification notification) CreateMessageResult createMessage(CreateMessageRequest request)StdioClientTransportvoid setErrorHandler(Consumer<String> errorHandler)Sinks.Many<String> getErrorSink()ClientMcpTransportSseClientTransportStdioServerTransportServerMcpTransportSseServerTransportRouterFunction<?> getRouterFunction()McpSchemaclass ErrorCodesinterface Requestinterface JSONRPCMessageinterface ResourceContentsinterface Contentinterface ServerCapabilitiesJSONRPCMessage deserializeJsonRpcMessage()McpErrorcreatescreatesdelegates tocreatescreatesusesthrows \ No newline at end of file +McpTransportMono<Void> connect(Function<Mono<JSONRPCMessage>, Mono<JSONRPCMessage>> handler)Mono<Void> sendMessage(JSONRPCMessage message)void close()Mono<Void> closeGracefully()<T> T unmarshalFrom(Object data, TypeReference<T> typeRef)McpSession<T> Mono<T> sendRequest(String method, Object requestParams, TypeReference<T> typeRef)Mono<Void> sendNotification(String method, Map<String, Object> params)Mono<Void> closeGracefully()void close()DefaultMcpSessioninterface RequestHandlerinterface NotificationHandlerMcpClientBuilder using(ClientMcpTransport transport)McpAsyncClientMono<InitializeResult> initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully()Mono<Object> ping()Mono<Void> addRoot(Root root)Mono<Void> removeRoot(String rootUri)Mono<Void> rootsListChangedNotification()Mono<CallToolResult> callTool(CallToolRequest request)Mono<ListToolsResult> listTools()Mono<ListResourcesResult> listResources()Mono<ReadResourceResult> readResource(ReadResourceRequest request)Mono<ListResourceTemplatesResult> listResourceTemplates()Mono<Void> subscribeResource(SubscribeRequest request)Mono<Void> unsubscribeResource(UnsubscribeRequest request)Mono<ListPromptsResult> listPrompts()Mono<GetPromptResult> getPrompt(GetPromptRequest request)Mono<Void> setLoggingLevel(LoggingLevel level)McpSyncClientInitializeResult initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()boolean closeGracefully()Object ping()void addRoot(Root root)void removeRoot(String rootUri)void rootsListChangedNotification()CallToolResult callTool(CallToolRequest request)ListToolsResult listTools()ListResourcesResult listResources()ReadResourceResult readResource(ReadResourceRequest request)ListResourceTemplatesResult listResourceTemplates()void subscribeResource(SubscribeRequest request)void unsubscribeResource(UnsubscribeRequest request)ListPromptsResult listPrompts()GetPromptResult getPrompt(GetPromptRequest request)void setLoggingLevel(LoggingLevel level)McpServerBuilder using(ServerMcpTransport transport)McpAsyncServerServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully() Mono<Void> addTool(ToolRegistration toolRegistration)Mono<Void> removeTool(String toolName)Mono<Void> notifyToolsListChanged() Mono<Void> addResource(ResourceRegistration resourceHandler)Mono<Void> removeResource(String resourceUri)Mono<Void> notifyResourcesListChanged() Mono<Void> addPrompt(PromptRegistration promptRegistration)Mono<Void> removePrompt(String promptName)Mono<Void> notifyPromptsListChanged() Mono<Void> loggingNotification(LoggingMessageNotification notification) Mono<CreateMessageResult> createMessage(CreateMessageRequest request)McpSyncServerMcpAsyncServer getAsyncServer() ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()void closeGracefully() void addTool(ToolRegistration toolHandler)void removeTool(String toolName)void notifyToolsListChanged() void addResource(ResourceRegistration resourceHandler)void removeResource(String resourceUri)void notifyResourcesListChanged() void addPrompt(PromptRegistration promptRegistration)void removePrompt(String promptName)void notifyPromptsListChanged() void loggingNotification(LoggingMessageNotification notification) CreateMessageResult createMessage(CreateMessageRequest request)StdioClientTransportvoid setErrorHandler(Consumer<String> errorHandler)Sinks.Many<String> getErrorSink()ClientMcpTransportStdioServerTransportServerMcpTransportHttpClientSseClientTransportWebFluxSseClientTransportWebFluxSseServerTransportRouterFunction<?> getRouterFunction()WebMvcSseServerTransportRouterFunction<?> getRouterFunction()McpSchemaclass ErrorCodesinterface Requestinterface JSONRPCMessageinterface ResourceContentsinterface Contentinterface ServerCapabilitiesJSONRPCMessage deserializeJsonRpcMessage()McpErrorcreatescreatesdelegates tocreatescreatesusesthrows \ No newline at end of file diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index d68726a..ef76335 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -1,25 +1,35 @@ = Java MCP SDK -Java SDK implementation of the Model Context Protocol, enabling seamless integration with language models and AI tools. +Java SDK implementation of the link:https://modelcontextprotocol.io/introduction[Model Context Protocol], enabling seamless integration with language models and AI tools. == Features * Synchronous and Asynchronous MCP Client and MCP Server implementations * Standard MCP operations support: -** Protocol version compatibility negotiation -** Tool discovery, execution, list change notifications -** Resource management with URI templates -** Roots list management and notifications -** Prompt handling and management -** Smampling support for AI model interactions +** Protocol link:https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/lifecycle/#initialization[version compatibility negotiation] +** link:https://spec.modelcontextprotocol.io/specification/2024-11-05/server/tools/[Tool] discovery, execution, list change notifications +** link:https://spec.modelcontextprotocol.io/specification/2024-11-05/server/resources/[Resource] management with URI templates +** link:https://spec.modelcontextprotocol.io/specification/2024-11-05/client/roots/[Roots] list management and notifications +** link:https://spec.modelcontextprotocol.io/specification/2024-11-05/server/prompts/[Prompt] handling and management +** link:https://spec.modelcontextprotocol.io/specification/2024-11-05/client/sampling/[Sampling] support for AI model interactions * Multiple transport implementations: -** Stdio-based transport for process-based communication -** SSE-based transport for HTTP streaming +** Core transports: +*** Stdio-based transport for process-based communication +*** Java HttpClient-based SSE transport for HTTP streaming +** Spring-based transports: +*** WebFlux SSE transport for reactive HTTP streaming +*** WebMVC SSE transport for servlet-based HTTP streaming === Dependencies Add the following dependency to your Maven project: +[tabs] +====== +Maven:: ++ +The core MCP functionality: ++ [source,xml] ---- @@ -28,6 +38,51 @@ Add the following dependency to your Maven project: 0.5.0-SNAPSHOT ---- ++ +For HTTP SSE transport implementations, add one of the following dependencies +(Note that you already have HTTP Client SSE client transport in the core module): ++ +[source,xml] +---- + + + org.springframework.experimental + mcp-webflux-sse-transport + 0.5.0-SNAPSHOT + + + + + org.springframework.experimental + mcp-webmvc-sse-transport + 0.5.0-SNAPSHOT + +---- + +Gradle:: ++ +The core MCP functionality: ++ +[source,groovy] +---- +dependencies { + implementation 'org.springframework.experimental:mcp' +} +---- ++ +For HTTP SSE transport implementations, add one of the following dependencies +(note that you already have HTTP Client SSE client transport in the core module): ++ +[source,groovy] +---- +// Spring WebFlux-based SSE client and server transport +implementation 'org.springframework.experimental:mcp-webflux-sse-transport' + +// Spring WebMVC-based SSE server transport +implementation 'org.springframework.experimental:mcp-webmvc-sse-transport' +---- +====== + == Architecture @@ -37,7 +92,9 @@ The SDK follows a layered architecture with clear separation of concerns: * *Client/Server Layer*: Both use McpSession for sync/async operations, with McpClient handling client-side protocol operations and McpServer managing server-side protocol operations. * *Session Layer (McpSession)*: Manages communication patterns and state using DefaultMcpSession implementation. -* *Transport Layer (McpTransport)*: Handles JSON-RPC message serialization/deserialization via StdioTransport (stdin/stdout) and SseTransport (HTTP streaming). +* *Transport Layer (McpTransport)*: Handles JSON-RPC message serialization/deserialization via: +** StdioTransport (stdin/stdout) in the core module +** HTTP SSE transports in dedicated transport modules (Java HttpClient, Spring WebFlux, Spring WebMVC) Following class diagram illustrates the layered architecture of the MCP SDK, showing the relationships between core interfaces (McpTransport, McpSession), their implementations, and the client/server components. It highlights how the transport layer connects to sessions, which in turn support both synchronous and asynchronous client/server implementations. @@ -187,23 +244,36 @@ The transport layer handles the communication between MCP clients and servers, p ====== STDIO:: + +Creates transport for in-process based communication ++ [source,java] ---- -// Create transport for process-based communication ServerParameters params = ServerParameters.builder("npx") .args("-y", "@modelcontextprotocol/server-everything", "dir") .build(); McpTransport transport = new StdioClientTransport(params); ---- - -SSE:: ++ +SSE (HttpClient):: ++ +Creates a framework agnostic (pure Java API) SSE client transport. +Included in the core `mcp` module. ++ +[source,java] +---- +McpTransport transport = new HttpClientSseClientTransport("http://your-mcp-server"); +---- ++ +SSE (WebFlux):: ++ +Creates WebFlux-based SSE client transport. +Requires the `mcp-webflux-sse-transport` dependency. + [source,java] ---- -// Create transport for HTTP streaming WebClient.Builder webClientBuilder = WebClient.builder() .baseUrl("http://your-mcp-server"); -McpTransport transport = new SseClientTransport(webClientBuilder); +McpTransport transport = new WebFluxSseClientTransport(webClientBuilder); ---- ====== @@ -381,29 +451,72 @@ The server transport layer implements the server-side communication protocols, e ====== STDIO:: + +Create in-process based transport ++ [source,java] ---- -// Create transport with custom ObjectMapper -ObjectMapper mapper = new ObjectMapper(); -StdioServerTransport transport = new StdioServerTransport(mapper); +StdioServerTransport transport = new StdioServerTransport(new ObjectMapper()); ---- + Provides bidirectional JSON-RPC message handling over standard input/output streams with non-blocking message processing, serialization/deserialization, and graceful shutdown support. -SSE:: +SSE (WebFlux):: ++ +Creates WebFlux-based SSE server transport. +Requires the `mcp-webflux-sse-transport` dependency. + [source,java] ---- -// Create SSE transport -ObjectMapper mapper = new ObjectMapper(); -String messageEndpoint = "/mcp/message"; -SseServerTransport transport = new SseServerTransport(mapper, messageEndpoint); +@Configuration +class McpConfig { + @Bean + WebFluxSseServerTransport webFluxSseServerTransport(ObjectMapper mapper) { + return new WebFluxSseServerTransport(mapper, "/mcp/message"); + } -// Get router function for web server configuration -RouterFunction router = transport.getRouterFunction(); + @Bean + RouterFunction mcpRouterFunction(WebFluxSseServerTransport transport) { + return transport.getRouterFunction(); + } +} ---- + -Implements the MCP HTTP with SSE transport specification, providing concurrent client connections through SSE endpoints with message routing, session management, and graceful shutdown capabilities. +Implements the MCP HTTP with SSE transport specification, providing: ++ +* Reactive HTTP streaming with WebFlux +* Concurrent client connections through SSE endpoints +* Message routing and session management +* Graceful shutdown capabilities + +SSE (WebMvc):: ++ +Creates WebMvc-based SSE server transport. +Requires the `mcp-webmvc-sse-transport` dependency. ++ +[source,java] +---- +@Configuration +@EnableWebMvc +class McpConfig { + @Bean + WebMvcSseServerTransport webMvcSseServerTransport(ObjectMapper mapper) { + return new WebMvcSseServerTransport(mapper, "/mcp/message"); + } + + @Bean + RouterFunction mcpRouterFunction(WebMvcSseServerTransport transport) { + return transport.getRouterFunction(); + } +} +---- ++ +Implements the MCP HTTP with SSE transport specification, providing: ++ +* Servlet-based HTTP streaming with Spring MVC +* Concurrent client connections through SSE endpoints +* Message routing and session management +* Graceful shutdown capabilities + ====== === Server Capabilities diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index 35cbecb..d3b66e9 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -13,19 +13,38 @@ There are two main projects in this repository: Java implementation of the Model Context Protocol specification. It includes: -* Synchronous and asynchronous link:https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#client-usage-examples[MCP Client] and link:https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#server-usage-examples[MCP Server] implementations -* Standard MCP operations support (tool discovery, resource management, prompt handling, structured logging). Support for request and notification handling. -* link:https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio[Stdio] and link:https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse[SSE] transport implementations. +* Synchronous and asynchronous xref:mcp.adoc#mcp-client[MCP Client] and xref:mcp.adoc#mcp-server[MCP Server] implementations +* Standard MCP operations support: +** Tool discovery and execution +** Resource management with URI templates +** Prompt handling and management +** Structured logging +** Request and notification handling +* Multiple transport implementations: +** Core transports: +*** Stdio-based transport for process-based communication +*** Java HttpClient-based SSE transport for HTTP streaming +** Spring-based transports: +*** WebFlux SSE transport for reactive HTTP streaming +*** WebMVC SSE transport for servlet-based HTTP streaming + +==== WebFlux SSE Transport +The link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webflux-sse-transport[mcp-webflux-sse-transport] project provides WebFlux-based implementation for the SSE client and server transports, enabling reactive HTTP streaming with Spring WebFlux. + +==== WebMvc SSE Transport +The link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webmvc-sse-transport[mcp-webmvc-sse-transport] project provides WebMvc-based implementation for the SSE server transport. The core module's HttpClientSseClientTransport can be used for client-side communication. === xref:spring-mcp.adoc[Spring AI MCP] The Spring integration module provides Spring-specific functionality: * Integration with Spring AI's function calling system +* Bidirectional conversion between Spring AI function callbacks and MCP tools +* JSON schema generation for tool input validation +* Automatic type conversion and error handling * Spring-friendly abstractions for MCP clients * Auto-configurations (WIP) - == Installation Add the following dependencies to your Maven project: @@ -34,9 +53,10 @@ Add the following dependencies to your Maven project: ====== Maven:: + +The core MCP functionality: ++ [source,xml] ---- - org.springframework.experimental mcp @@ -44,9 +64,29 @@ Maven:: ---- + +For HTTP SSE transport implementations, add one or more of the following dependencies: ++ +[source,xml] +---- + + + org.springframework.experimental + mcp-webflux-sse-transport + 0.5.0-SNAPSHOT + + + + + org.springframework.experimental + mcp-webmvc-sse-transport + 0.5.0-SNAPSHOT + +---- ++ +For Spring AI integration: ++ [source,xml] ---- - org.springframework.experimental spring-ai-mcp @@ -55,31 +95,45 @@ Maven:: ---- + This is a milestone release, not available on Maven Central. -Add this repository to your POM: +Add the Spring milestone repository to your POM: + [source,xml] ---- - - spring-milestones - Spring Milestones - https://repo.spring.io/libs-milestone-local - - false - - + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + ---- Gradle:: + +The core MCP functionality: ++ [source,groovy] ---- dependencies { implementation 'org.springframework.experimental:mcp' } ---- -Or for Spring AI integration: ++ +For HTTP SSE transport implementations, add one or more of the following dependencies: ++ +[source,groovy] +---- +// Spring WebFlux-based SSE client and server transport +implementation 'org.springframework.experimental:mcp-webflux-sse-transport' + +// Spring WebMVC-based SSE server transport +implementation 'org.springframework.experimental:mcp-webmvc-sse-transport' +---- ++ +For Spring AI integration: + [source,groovy] ---- @@ -87,6 +141,16 @@ dependencies { implementation 'org.springframework.experimental:spring-ai-mcp' } ---- ++ +This is a milestone release, not available on Maven Central. +Add the Spring milestone repository to your build: ++ +[source,groovy] +---- +repositories { + maven { url 'https://repo.spring.io/milestone' } +} +---- ====== == Examples @@ -96,14 +160,14 @@ Explore these MCP examples in the link:https://github.com/spring-projects/spring * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/simple[SQLite Simple] - Demonstrates LLM integration with a database * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/chatbot[SQLite Chatbot] - Interactive chatbot with SQLite database interaction * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem[Filesystem] - Enables LLM interaction with local filesystem folders and files -* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave[Brave] - Enables natural language interactions with Brave Search, allowing you to perform internet searches. -* link:./spring-ai-mcp-sample/[Spring-ai-mcp-sample] - Showcases how to create and use MCP servers and clients with different transport modes and capabilities. +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave[Brave] - Enables natural language interactions with Brave Search +* link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/samples/spring-ai-mcp-sample[Spring-ai-mcp-sample] - Showcases MCP servers and clients with different transport modes and capabilities +* link:https://github.com/habuma/spring-ai-examples/tree/main/spring-ai-mcp[Theme Park API Example] - Shows how to create an MCP server and client with Spring AI, exposing Theme Park API tools == Documentation -* link:mcp/README.md[Java MCP SDK documentation] -** link:docs/ref-index.md[Reference documentation] -* link:spring-ai-mcp/README.md[Spring Integration documentation] +* xref:mcp.adoc[Java MCP SDK Documentation] +* xref:spring-mcp.adoc[Spring Integration Documentation] == Development diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc index ec762d9..d1bd57e 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc @@ -14,18 +14,100 @@ The `spring-ai-mcp` module is part of the https://github.com/spring-projects-exp == Features * Spring integration for MCP clients -* Function callback implementation for tool invocations -* Seamless integration with Spring AI's function calling capabilities +* Bidirectional conversion between Spring AI function callbacks and MCP tools +* JSON schema generation for tool input validation +* Automatic type conversion and error handling +* Integration with Spring AI's function calling capabilities == Main Components === McpFunctionCallback -The `McpFunctionCallback` class is the primary component of this module. It implements Spring AI's `FunctionCallback` interface and provides: +The `McpFunctionCallback` class implements Spring AI's `FunctionCallback` interface and provides integration between Spring AI's function calling system and MCP tools. Key features include: -* Integration between Spring AI's function calling system and MCP tools * Automatic conversion between JSON and Java objects for tool arguments * Synchronous tool execution support +* Error handling and result formatting +* Integration with Spring AI's function calling system + +Example usage: + +[source,java] +---- +// Create an MCP client +McpSyncClient mcpClient = McpClient.using(transport) + .sync(); + +// Create a function callback for an MCP tool +Tool calculatorTool = new Tool("calculator", "Basic calculator", + Map.of("operation", "string", "a", "number", "b", "number")); +FunctionCallback callback = new McpFunctionCallback(mcpClient, calculatorTool); + +// Use the callback with Spring AI +String result = callback.call("{\"operation\": \"add\", \"a\": 2, \"b\": 3}"); +---- + +=== ToolHelper + +The `ToolHelper` utility class facilitates the integration between Spring AI's function callbacks and MCP's tool system. It provides methods for: + +* Converting Spring AI's `FunctionCallback` instances to MCP tool registrations +* Generating JSON schemas for tool input validation +* Handling error cases and result formatting + +Example usage: + +[source,java] +---- +// Convert Spring AI function callbacks to MCP tool registrations +List callbacks = List.of( + new CalculatorFunction(), + new WeatherFunction() +); +List tools = ToolHelper.toToolRegistration(callbacks); + +// Generate JSON schema for tool inputs +Map> inputTypes = Map.of( + "calculator", CalculatorInput.class, + "weather", WeatherInput.class +); +String schema = ToolHelper.generateJsonSchema(inputTypes); +---- + +==== Converting Function Callbacks to Tools + +The `ToolHelper` provides several methods to convert Spring AI function callbacks to MCP tools: + +[source,java] +---- +// Convert a single function callback +ToolRegistration tool = ToolHelper.toToolRegistration(myCallback); + +// Convert multiple callbacks +List tools = ToolHelper.toToolRegistration(callback1, callback2); + +// Convert a list of callbacks +List tools = ToolHelper.toToolRegistration(callbackList); +---- + +==== JSON Schema Generation + +The `ToolHelper` can generate JSON schemas for tool input validation: + +[source,java] +---- +// Using default ObjectMapper +String schema = ToolHelper.generateJsonSchema(inputTypes); + +// Using custom ObjectMapper +ObjectMapper mapper = new ObjectMapper(); +String schema = ToolHelper.generateJsonSchema(inputTypes, mapper); +---- + +The generated schema follows the JSON Schema Draft 2020-12 specification and: +* Validates the structure of tool inputs +* Excludes ToolContext class from schema generation +* Uses Jackson's JsonSchemaGenerator for accurate type representation == Usage @@ -39,3 +121,41 @@ To use this module, add the following dependency to your Maven project: 0.5.0-SNAPSHOT ---- + +=== Example: Creating an MCP Tool Server with Spring AI Functions + +[source,java] +---- +@Configuration +class McpConfig { + + @Bean + McpServer mcpServer(List callbacks) { + // Convert Spring AI callbacks to MCP tools + List tools = ToolHelper.toToolRegistration(callbacks); + + return McpServer.using(transport) + .info("spring-ai-server", "1.0.0") + .tools(tools) + .sync(); + } + + @Bean + FunctionCallback calculatorFunction() { + return FunctionCallback.builder() + .name("calculator") + .description("Basic calculator") + .function(input -> { + // Function implementation + return result; + }) + .build(); + } +} +---- + +This configuration: +1. Creates Spring AI function callbacks +2. Converts them to MCP tools using ToolHelper +3. Registers the tools with an MCP server +4. Makes the tools available for discovery and execution by MCP clients diff --git a/mcp-test/pom.xml b/mcp-test/pom.xml new file mode 100644 index 0000000..f3aa5db --- /dev/null +++ b/mcp-test/pom.xml @@ -0,0 +1,101 @@ + + + 4.0.0 + + org.springframework.experimental + mcp-parent + 0.5.0-SNAPSHOT + + mcp-test + jar + Tests for the Java MCP SDK + Provides some shared test fasilities for the MCP Java SDK + https://github.com/spring-projects-experimental/spring-ai-mcp + + + https://github.com/spring-projects-experimental/spring-ai-mcp + git://github.com/spring-projects-experimental/spring-ai-mcp.git + git@github.com:spring-projects-experimental/spring-ai-mcp.git + + + + + org.springframework.experimental + mcp + 0.5.0-SNAPSHOT + + + + org.slf4j + slf4j-api + ${slf4j-api.version} + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + io.projectreactor + reactor-core + + + + org.assertj + assertj-core + ${assert4j.version} + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + + + org.mockito + mockito-core + ${mockito.version} + + + io.projectreactor + reactor-test + + + org.testcontainers + junit-jupiter + ${testcontainers.version} + + + + org.awaitility + awaitility + 4.2.0 + + + + ch.qos.logback + logback-classic + ${logback.version} + + + + + + + + \ No newline at end of file diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/MockMcpTransport.java b/mcp-test/src/main/java/org/springframework/ai/mcp/MockMcpTransport.java new file mode 100644 index 0000000..20736b1 --- /dev/null +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/MockMcpTransport.java @@ -0,0 +1,103 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp; + +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.core.publisher.Sinks; +import reactor.core.scheduler.Schedulers; + +import org.springframework.ai.mcp.spec.ClientMcpTransport; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.JSONRPCNotification; +import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; +import org.springframework.ai.mcp.spec.ServerMcpTransport; + +@SuppressWarnings("unused") +public class MockMcpTransport implements ClientMcpTransport, ServerMcpTransport { + + private final AtomicInteger inboundMessageCount = new AtomicInteger(0); + + private final Sinks.Many outgoing = Sinks.many().multicast().onBackpressureBuffer(); + + private final Sinks.Many inbound = Sinks.many().unicast().onBackpressureBuffer(); + + private final Flux outboundView = outgoing.asFlux().cache(1); + + public void simulateIncomingMessage(McpSchema.JSONRPCMessage message) { + if (inbound.tryEmitNext(message).isFailure()) { + throw new RuntimeException("Failed to emit message " + message); + } + inboundMessageCount.incrementAndGet(); + } + + @Override + public Mono sendMessage(McpSchema.JSONRPCMessage message) { + if (outgoing.tryEmitNext(message).isFailure()) { + return Mono.error(new RuntimeException("Can't emit outgoing message " + message)); + } + return Mono.empty(); + } + + public McpSchema.JSONRPCRequest getLastSentMessageAsRequest() { + return (JSONRPCRequest) outboundView.blockFirst(); + } + + public McpSchema.JSONRPCNotification getLastSentMessageAsNotifiation() { + return (JSONRPCNotification) outboundView.blockFirst(); + } + + public McpSchema.JSONRPCMessage getLastSentMessage() { + return outboundView.blockFirst(); + } + + private volatile boolean connected = false; + + @Override + public Mono connect(Function, Mono> handler) { + if (connected) { + return Mono.error(new IllegalStateException("Already connected")); + } + connected = true; + return inbound.asFlux() + .publishOn(Schedulers.boundedElastic()) + .flatMap(message -> Mono.just(message).transform(handler)) + .doFinally(signal -> connected = false) + .then(); + } + + @Override + public Mono closeGracefully() { + return Mono.defer(() -> { + connected = false; + outgoing.tryEmitComplete(); + inbound.tryEmitComplete(); + return Mono.empty(); + }); + } + + @Override + public T unmarshalFrom(Object data, TypeReference typeRef) { + return new ObjectMapper().convertValue(data, typeRef); + } + +} \ No newline at end of file diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java new file mode 100644 index 0000000..9477f6b --- /dev/null +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java @@ -0,0 +1,373 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.client; + +import java.time.Duration; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Function; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import reactor.test.StepVerifier; + +import org.springframework.ai.mcp.spec.ClientMcpTransport; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; +import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; +import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; +import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; +import org.springframework.ai.mcp.spec.McpSchema.Prompt; +import org.springframework.ai.mcp.spec.McpSchema.Resource; +import org.springframework.ai.mcp.spec.McpSchema.Root; +import org.springframework.ai.mcp.spec.McpSchema.SubscribeRequest; +import org.springframework.ai.mcp.spec.McpSchema.Tool; +import org.springframework.ai.mcp.spec.McpSchema.UnsubscribeRequest; +import org.springframework.ai.mcp.spec.McpTransport; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * Test suite for the {@link McpAsyncClient} that can be used with different + * {@link McpTransport} implementations. + * + * @author Christian Tzolov + * @author Dariusz Jędrzejczyk + */ +public abstract class BlaAbstractMcpAsyncClientTests { + + private McpAsyncClient mcpAsyncClient; + + protected ClientMcpTransport mcpTransport; + + private static final Duration TIMEOUT = Duration.ofSeconds(20); + + private static final String ECHO_TEST_MESSAGE = "Hello MCP Spring AI!"; + + abstract protected ClientMcpTransport createMcpTransport(); + + protected void onStart() { + } + + protected void onClose() { + } + + @BeforeEach + void setUp() { + onStart(); + this.mcpTransport = createMcpTransport(); + + assertThatCode(() -> { + mcpAsyncClient = McpClient.using(mcpTransport) + .requestTimeout(TIMEOUT) + .capabilities(ClientCapabilities.builder().roots(true).build()) + .async(); + mcpAsyncClient.initialize().block(Duration.ofSeconds(10)); + }).doesNotThrowAnyException(); + } + + @AfterEach + void tearDown() { + if (mcpAsyncClient != null) { + assertThatCode(() -> mcpAsyncClient.closeGracefully().block(Duration.ofSeconds(10))) + .doesNotThrowAnyException(); + } + onClose(); + } + + @Test + void testConstructorWithInvalidArguments() { + assertThatThrownBy(() -> McpClient.using(null).sync()).isInstanceOf(IllegalArgumentException.class) + .hasMessage("Transport must not be null"); + + assertThatThrownBy(() -> McpClient.using(mcpTransport).requestTimeout(null).sync()) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Request timeout must not be null"); + } + + @Test + void testListTools() { + StepVerifier.create(mcpAsyncClient.listTools(null)).consumeNextWith(result -> { + assertThat(result.tools()).isNotNull().isNotEmpty(); + + Tool firstTool = result.tools().get(0); + assertThat(firstTool.name()).isNotNull(); + assertThat(firstTool.description()).isNotNull(); + }).verifyComplete(); + } + + @Test + void testPing() { + assertThatCode(() -> mcpAsyncClient.ping().block()).doesNotThrowAnyException(); + } + + @Test + void testCallTool() { + CallToolRequest callToolRequest = new CallToolRequest("echo", Map.of("message", ECHO_TEST_MESSAGE)); + + StepVerifier.create(mcpAsyncClient.callTool(callToolRequest)).consumeNextWith(callToolResult -> { + assertThat(callToolResult).isNotNull().satisfies(result -> { + assertThat(result.content()).isNotNull(); + assertThat(result.isError()).isNull(); + }); + }).verifyComplete(); + } + + @Test + void testCallToolWithInvalidTool() { + CallToolRequest invalidRequest = new CallToolRequest("nonexistent_tool", Map.of("message", ECHO_TEST_MESSAGE)); + + assertThatThrownBy(() -> mcpAsyncClient.callTool(invalidRequest).block()).isInstanceOf(Exception.class); + } + + @Test + void testListResources() { + StepVerifier.create(mcpAsyncClient.listResources(null)).consumeNextWith(resources -> { + assertThat(resources).isNotNull().satisfies(result -> { + assertThat(result.resources()).isNotNull(); + + if (!result.resources().isEmpty()) { + Resource firstResource = result.resources().get(0); + assertThat(firstResource.uri()).isNotNull(); + assertThat(firstResource.name()).isNotNull(); + } + }); + }).verifyComplete(); + } + + @Test + void testMcpAsyncClientState() { + assertThat(mcpAsyncClient).isNotNull(); + } + + @Test + void testListPrompts() { + StepVerifier.create(mcpAsyncClient.listPrompts(null)).consumeNextWith(prompts -> { + assertThat(prompts).isNotNull().satisfies(result -> { + assertThat(result.prompts()).isNotNull(); + + if (!result.prompts().isEmpty()) { + Prompt firstPrompt = result.prompts().get(0); + assertThat(firstPrompt.name()).isNotNull(); + assertThat(firstPrompt.description()).isNotNull(); + } + }); + }).verifyComplete(); + } + + @Test + void testGetPrompt() { + StepVerifier.create(mcpAsyncClient.getPrompt(new GetPromptRequest("simple_prompt", Map.of()))) + .consumeNextWith(prompt -> { + assertThat(prompt).isNotNull().satisfies(result -> { + assertThat(result.messages()).isNotEmpty(); + assertThat(result.messages()).hasSize(1); + }); + }) + .verifyComplete(); + } + + @Test + void testRootsListChanged() { + assertThatCode(() -> mcpAsyncClient.rootsListChangedNotification().block()).doesNotThrowAnyException(); + } + + @Test + void testInitializeWithRootsListProviders() { + var transport = createMcpTransport(); + + var client = McpClient.using(transport) + .requestTimeout(TIMEOUT) + .roots(new Root("file:///test/path", "test-root")) + .async(); + + assertThatCode(() -> client.initialize().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); + + assertThatCode(() -> client.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); + } + + @Test + void testAddRoot() { + Root newRoot = new Root("file:///new/test/path", "new-test-root"); + assertThatCode(() -> mcpAsyncClient.addRoot(newRoot).block()).doesNotThrowAnyException(); + } + + @Test + void testAddRootWithNullValue() { + assertThatThrownBy(() -> mcpAsyncClient.addRoot(null).block()).hasMessageContaining("Root must not be null"); + } + + @Test + void testRemoveRoot() { + Root root = new Root("file:///test/path/to/remove", "root-to-remove"); + assertThatCode(() -> { + mcpAsyncClient.addRoot(root).block(); + mcpAsyncClient.removeRoot(root.uri()).block(); + }).doesNotThrowAnyException(); + } + + @Test + void testRemoveNonExistentRoot() { + assertThatThrownBy(() -> mcpAsyncClient.removeRoot("nonexistent-uri").block()) + .hasMessageContaining("Root with uri 'nonexistent-uri' not found"); + } + + @Test + @Disabled + void testReadResource() { + StepVerifier.create(mcpAsyncClient.listResources()).consumeNextWith(resources -> { + if (!resources.resources().isEmpty()) { + Resource firstResource = resources.resources().get(0); + StepVerifier.create(mcpAsyncClient.readResource(firstResource)).consumeNextWith(result -> { + assertThat(result).isNotNull(); + assertThat(result.contents()).isNotNull(); + }).verifyComplete(); + } + }).verifyComplete(); + } + + @Test + void testListResourceTemplates() { + StepVerifier.create(mcpAsyncClient.listResourceTemplates()).consumeNextWith(result -> { + assertThat(result).isNotNull(); + assertThat(result.resourceTemplates()).isNotNull(); + }).verifyComplete(); + } + + // @Test + void testResourceSubscription() { + StepVerifier.create(mcpAsyncClient.listResources()).consumeNextWith(resources -> { + if (!resources.resources().isEmpty()) { + Resource firstResource = resources.resources().get(0); + + // Test subscribe + StepVerifier.create(mcpAsyncClient.subscribeResource(new SubscribeRequest(firstResource.uri()))) + .verifyComplete(); + + // Test unsubscribe + StepVerifier.create(mcpAsyncClient.unsubscribeResource(new UnsubscribeRequest(firstResource.uri()))) + .verifyComplete(); + } + }).verifyComplete(); + } + + @Test + void testNotificationHandlers() { + AtomicBoolean toolsNotificationReceived = new AtomicBoolean(false); + AtomicBoolean resourcesNotificationReceived = new AtomicBoolean(false); + AtomicBoolean promptsNotificationReceived = new AtomicBoolean(false); + + var transport = createMcpTransport(); + var client = McpClient.using(transport) + .requestTimeout(TIMEOUT) + .toolsChangeConsumer(tools -> toolsNotificationReceived.set(true)) + .resourcesChangeConsumer(resources -> resourcesNotificationReceived.set(true)) + .promptsChangeConsumer(prompts -> promptsNotificationReceived.set(true)) + .async(); + + assertThatCode(() -> { + client.initialize().block(); + // Trigger notifications + client.sendResourcesListChanged().block(); + client.promptListChangedNotification().block(); + client.closeGracefully().block(); + }).doesNotThrowAnyException(); + } + + @Test + void testInitializeWithSamplingCapability() { + var transport = createMcpTransport(); + + var capabilities = ClientCapabilities.builder().sampling().build(); + + var client = McpClient.using(transport).requestTimeout(TIMEOUT).capabilities(capabilities).sampling(request -> { + return CreateMessageResult.builder().message("test").model("test-model").build(); + }).async(); + + assertThatCode(() -> { + client.initialize().block(Duration.ofSeconds(10)); + client.closeGracefully().block(Duration.ofSeconds(10)); + }).doesNotThrowAnyException(); + } + + @Test + void testInitializeWithAllCapabilities() { + var transport = createMcpTransport(); + + var capabilities = ClientCapabilities.builder() + .experimental(Map.of("feature", "test")) + .roots(true) + .sampling() + .build(); + + Function samplingHandler = request -> { + return CreateMessageResult.builder().message("test").model("test-model").build(); + }; + var client = McpClient.using(transport) + .requestTimeout(TIMEOUT) + .capabilities(capabilities) + .sampling(samplingHandler) + .async(); + + assertThatCode(() -> { + var result = client.initialize().block(Duration.ofSeconds(10)); + assertThat(result).isNotNull(); + assertThat(result.capabilities()).isNotNull(); + client.closeGracefully().block(Duration.ofSeconds(10)); + }).doesNotThrowAnyException(); + } + + // --------------------------------------- + // Logging Tests + // --------------------------------------- + + @Test + void testLoggingLevels() { + // Test all logging levels + for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { + StepVerifier.create(mcpAsyncClient.setLoggingLevel(level)).verifyComplete(); + } + } + + @Test + void testLoggingConsumer() { + AtomicBoolean logReceived = new AtomicBoolean(false); + var transport = createMcpTransport(); + + var client = McpClient.using(transport) + .requestTimeout(TIMEOUT) + .loggingConsumer(notification -> logReceived.set(true)) + .async(); + + assertThatCode(() -> { + client.initialize().block(Duration.ofSeconds(10)); + client.closeGracefully().block(Duration.ofSeconds(10)); + }).doesNotThrowAnyException(); + } + + @Test + void testLoggingWithNullNotification() { + assertThatThrownBy(() -> mcpAsyncClient.setLoggingLevel(null).block()) + .hasMessageContaining("Logging level must not be null"); + } + +} diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java new file mode 100644 index 0000000..59d1896 --- /dev/null +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java @@ -0,0 +1,315 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.client; + +import java.time.Duration; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import org.springframework.ai.mcp.spec.ClientMcpTransport; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; +import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; +import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.ListResourceTemplatesResult; +import org.springframework.ai.mcp.spec.McpSchema.ListResourcesResult; +import org.springframework.ai.mcp.spec.McpSchema.ListToolsResult; +import org.springframework.ai.mcp.spec.McpSchema.ReadResourceResult; +import org.springframework.ai.mcp.spec.McpSchema.Resource; +import org.springframework.ai.mcp.spec.McpSchema.Root; +import org.springframework.ai.mcp.spec.McpSchema.SubscribeRequest; +import org.springframework.ai.mcp.spec.McpSchema.TextContent; +import org.springframework.ai.mcp.spec.McpSchema.Tool; +import org.springframework.ai.mcp.spec.McpSchema.UnsubscribeRequest; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * Unit tests for MCP Client Session functionality. + * + * @author Christian Tzolov + * @author Dariusz Jędrzejczyk + */ +public abstract class BlaAbstractMcpSyncClientTests { + + private McpSyncClient mcpSyncClient; + + private static final Duration TIMEOUT = Duration.ofSeconds(10); + + private static final String TEST_MESSAGE = "Hello MCP Spring AI!"; + + protected ClientMcpTransport mcpTransport; + + abstract protected ClientMcpTransport createMcpTransport(); + + abstract protected void onStart(); + + abstract protected void onClose(); + + @BeforeEach + void setUp() { + onStart(); + this.mcpTransport = createMcpTransport(); + + assertThatCode(() -> { + mcpSyncClient = McpClient.using(mcpTransport) + .requestTimeout(TIMEOUT) + .capabilities(ClientCapabilities.builder().roots(true).build()) + .sync(); + mcpSyncClient.initialize(); + }).doesNotThrowAnyException(); + } + + @AfterEach + void tearDown() { + if (mcpSyncClient != null) { + assertThatCode(() -> mcpSyncClient.close()).doesNotThrowAnyException(); + } + onClose(); + } + + @Test + void testConstructorWithInvalidArguments() { + assertThatThrownBy(() -> McpClient.using(null).sync()).isInstanceOf(IllegalArgumentException.class) + .hasMessage("Transport must not be null"); + + assertThatThrownBy(() -> McpClient.using(mcpTransport).requestTimeout(null).sync()) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Request timeout must not be null"); + } + + @Test + void testListTools() { + ListToolsResult tools = mcpSyncClient.listTools(null); + + assertThat(tools).isNotNull().satisfies(result -> { + assertThat(result.tools()).isNotNull().isNotEmpty(); + + Tool firstTool = result.tools().get(0); + assertThat(firstTool.name()).isNotNull(); + assertThat(firstTool.description()).isNotNull(); + }); + } + + @Test + void testCallTools() { + CallToolResult toolResult = mcpSyncClient.callTool(new CallToolRequest("add", Map.of("a", 3, "b", 4))); + + assertThat(toolResult).isNotNull().satisfies(result -> { + + assertThat(result.content()).hasSize(1); + + TextContent content = (TextContent) result.content().get(0); + + assertThat(content).isNotNull(); + assertThat(content.text()).isNotNull(); + assertThat(content.text()).contains("7"); + }); + } + + @Test + void testPing() { + assertThatCode(() -> mcpSyncClient.ping()).doesNotThrowAnyException(); + } + + @Test + void testCallTool() { + CallToolRequest callToolRequest = new CallToolRequest("echo", Map.of("message", TEST_MESSAGE)); + + CallToolResult callToolResult = mcpSyncClient.callTool(callToolRequest); + + assertThat(callToolResult).isNotNull().satisfies(result -> { + assertThat(result.content()).isNotNull(); + assertThat(result.isError()).isNull(); + }); + } + + @Test + void testCallToolWithInvalidTool() { + CallToolRequest invalidRequest = new CallToolRequest("nonexistent_tool", Map.of("message", TEST_MESSAGE)); + + assertThatThrownBy(() -> mcpSyncClient.callTool(invalidRequest)).isInstanceOf(Exception.class); + } + + @Test + void testRootsListChanged() { + assertThatCode(() -> mcpSyncClient.rootsListChangedNotification()).doesNotThrowAnyException(); + } + + @Test + void testListResources() { + ListResourcesResult resources = mcpSyncClient.listResources(null); + + assertThat(resources).isNotNull().satisfies(result -> { + assertThat(result.resources()).isNotNull(); + + if (!result.resources().isEmpty()) { + Resource firstResource = result.resources().get(0); + assertThat(firstResource.uri()).isNotNull(); + assertThat(firstResource.name()).isNotNull(); + } + }); + } + + @Test + void testClientSessionState() { + assertThat(mcpSyncClient).isNotNull(); + } + + @Test + void testInitializeWithRootsListProviders() { + var transport = createMcpTransport(); + + var client = McpClient.using(transport) + .requestTimeout(TIMEOUT) + .roots(new Root("file:///test/path", "test-root")) + .sync(); + + assertThatCode(() -> { + client.initialize(); + client.close(); + }).doesNotThrowAnyException(); + } + + @Test + void testAddRoot() { + Root newRoot = new Root("file:///new/test/path", "new-test-root"); + assertThatCode(() -> mcpSyncClient.addRoot(newRoot)).doesNotThrowAnyException(); + } + + @Test + void testAddRootWithNullValue() { + assertThatThrownBy(() -> mcpSyncClient.addRoot(null)).hasMessageContaining("Root must not be null"); + } + + @Test + void testRemoveRoot() { + Root root = new Root("file:///test/path/to/remove", "root-to-remove"); + assertThatCode(() -> { + mcpSyncClient.addRoot(root); + mcpSyncClient.removeRoot(root.uri()); + }).doesNotThrowAnyException(); + } + + @Test + void testRemoveNonExistentRoot() { + assertThatThrownBy(() -> mcpSyncClient.removeRoot("nonexistent-uri")) + .hasMessageContaining("Root with uri 'nonexistent-uri' not found"); + } + + @Test + void testReadResource() { + ListResourcesResult resources = mcpSyncClient.listResources(null); + + if (!resources.resources().isEmpty()) { + Resource firstResource = resources.resources().get(0); + ReadResourceResult result = mcpSyncClient.readResource(firstResource); + + assertThat(result).isNotNull(); + assertThat(result.contents()).isNotNull(); + } + } + + @Test + void testListResourceTemplates() { + ListResourceTemplatesResult result = mcpSyncClient.listResourceTemplates(null); + + assertThat(result).isNotNull(); + assertThat(result.resourceTemplates()).isNotNull(); + } + + // @Test + void testResourceSubscription() { + ListResourcesResult resources = mcpSyncClient.listResources(null); + + if (!resources.resources().isEmpty()) { + Resource firstResource = resources.resources().get(0); + + // Test subscribe + assertThatCode(() -> mcpSyncClient.subscribeResource(new SubscribeRequest(firstResource.uri()))) + .doesNotThrowAnyException(); + + // Test unsubscribe + assertThatCode(() -> mcpSyncClient.unsubscribeResource(new UnsubscribeRequest(firstResource.uri()))) + .doesNotThrowAnyException(); + } + } + + @Test + void testNotificationHandlers() { + AtomicBoolean toolsNotificationReceived = new AtomicBoolean(false); + AtomicBoolean resourcesNotificationReceived = new AtomicBoolean(false); + AtomicBoolean promptsNotificationReceived = new AtomicBoolean(false); + + var transport = createMcpTransport(); + var client = McpClient.using(transport) + .requestTimeout(TIMEOUT) + .toolsChangeConsumer(tools -> toolsNotificationReceived.set(true)) + .resourcesChangeConsumer(resources -> resourcesNotificationReceived.set(true)) + .promptsChangeConsumer(prompts -> promptsNotificationReceived.set(true)) + .sync(); + + assertThatCode(() -> { + client.initialize(); + // Trigger notifications + client.sendResourcesListChanged(); + client.promptListChangedNotification(); + client.close(); + }).doesNotThrowAnyException(); + } + + // --------------------------------------- + // Logging Tests + // --------------------------------------- + + @Test + void testLoggingLevels() { + // Test all logging levels + for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { + assertThatCode(() -> mcpSyncClient.setLoggingLevel(level)).doesNotThrowAnyException(); + } + } + + @Test + void testLoggingConsumer() { + AtomicBoolean logReceived = new AtomicBoolean(false); + var transport = createMcpTransport(); + + var client = McpClient.using(transport) + .requestTimeout(TIMEOUT) + .loggingConsumer(notification -> logReceived.set(true)) + .sync(); + + assertThatCode(() -> { + client.initialize(); + client.close(); + }).doesNotThrowAnyException(); + } + + @Test + void testLoggingWithNullNotification() { + assertThatThrownBy(() -> mcpSyncClient.setLoggingLevel(null)) + .hasMessageContaining("Logging level must not be null"); + } + +} diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java new file mode 100644 index 0000000..d765e05 --- /dev/null +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java @@ -0,0 +1,478 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.server; + +import java.time.Duration; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import reactor.test.StepVerifier; + +import org.springframework.ai.mcp.server.McpServer.PromptRegistration; +import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; +import org.springframework.ai.mcp.server.McpServer.ToolRegistration; +import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; +import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; +import org.springframework.ai.mcp.spec.McpSchema.Prompt; +import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; +import org.springframework.ai.mcp.spec.McpSchema.ReadResourceResult; +import org.springframework.ai.mcp.spec.McpSchema.Resource; +import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.Tool; +import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * Test suite for the {@link McpAsyncServer} that can be used with different + * {@link McpTransport} implementations. + * + * @author Christian Tzolov + */ +public abstract class BlaAbstractMcpAsyncServerTests { + + private static final String TEST_TOOL_NAME = "test-tool"; + + private static final String TEST_RESOURCE_URI = "test://resource"; + + private static final String TEST_PROMPT_NAME = "test-prompt"; + + abstract protected ServerMcpTransport createMcpTransport(); + + protected void onStart() { + } + + protected void onClose() { + } + + @BeforeEach + void setUp() { + } + + @AfterEach + void tearDown() { + onClose(); + } + + // --------------------------------------- + // Server Lifecycle Tests + // --------------------------------------- + + @Test + void testConstructorWithInvalidArguments() { + assertThatThrownBy(() -> McpServer.using(null)).isInstanceOf(IllegalArgumentException.class) + .hasMessage("Transport must not be null"); + + assertThatThrownBy(() -> McpServer.using(createMcpTransport()).serverInfo((McpSchema.Implementation) null)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Server info must not be null"); + } + + @Test + void testGracefulShutdown() { + var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + + StepVerifier.create(mcpAsyncServer.closeGracefully()).verifyComplete(); + } + + @Test + void testImmediateClose() { + var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + + assertThatCode(() -> mcpAsyncServer.close()).doesNotThrowAnyException(); + } + + // --------------------------------------- + // Tools Tests + // --------------------------------------- + String emptyJsonSchema = """ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {} + } + """; + + @Test + void testAddTool() { + Tool newTool = new McpSchema.Tool("new-tool", "New test tool", emptyJsonSchema); + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().tools(true).build()) + .async(); + + StepVerifier + .create(mcpAsyncServer.addTool(new ToolRegistration(newTool, args -> new CallToolResult(List.of(), false)))) + .verifyComplete(); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + } + + @Test + void testAddDuplicateTool() { + Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); + + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tool(duplicateTool, args -> new CallToolResult(List.of(), false)) + .async(); + + StepVerifier + .create(mcpAsyncServer + .addTool(new ToolRegistration(duplicateTool, args -> new CallToolResult(List.of(), false)))) + .verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Tool with name '" + TEST_TOOL_NAME + "' already exists"); + }); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + } + + @Test + void testRemoveTool() { + Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); + + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tool(too, args -> new CallToolResult(List.of(), false)) + .async(); + + StepVerifier.create(mcpAsyncServer.removeTool(TEST_TOOL_NAME)).verifyComplete(); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + } + + @Test + void testRemoveNonexistentTool() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().tools(true).build()) + .async(); + + StepVerifier.create(mcpAsyncServer.removeTool("nonexistent-tool")).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class).hasMessage("Tool with name 'nonexistent-tool' not found"); + }); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + } + + @Test + void testNotifyToolsListChanged() { + Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); + + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tool(too, args -> new CallToolResult(List.of(), false)) + .async(); + + StepVerifier.create(mcpAsyncServer.notifyToolsListChanged()).verifyComplete(); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + } + + // --------------------------------------- + // Resources Tests + // --------------------------------------- + + @Test + void testNotifyResourcesListChanged() { + var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + + StepVerifier.create(mcpAsyncServer.notifyResourcesListChanged()).verifyComplete(); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + } + + @Test + void testAddResource() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().resources(true, false).build()) + .async(); + + Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", + null); + ResourceRegistration registration = new ResourceRegistration(resource, + req -> new ReadResourceResult(List.of())); + + StepVerifier.create(mcpAsyncServer.addResource(registration)).verifyComplete(); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); + } + + @Test + void testAddResourceWithNullRegistration() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().resources(true, false).build()) + .async(); + + StepVerifier.create(mcpAsyncServer.addResource(null)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class).hasMessage("Resource must not be null"); + }); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); + } + + @Test + void testAddResourceWithoutCapability() { + // Create a server without resource capabilities + McpAsyncServer serverWithoutResources = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .async(); + + Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", + null); + ResourceRegistration registration = new ResourceRegistration(resource, + req -> new ReadResourceResult(List.of())); + + StepVerifier.create(serverWithoutResources.addResource(registration)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Server must be configured with resource capabilities"); + }); + } + + @Test + void testRemoveResourceWithoutCapability() { + // Create a server without resource capabilities + McpAsyncServer serverWithoutResources = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .async(); + + StepVerifier.create(serverWithoutResources.removeResource(TEST_RESOURCE_URI)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Server must be configured with resource capabilities"); + }); + } + + // --------------------------------------- + // Prompts Tests + // --------------------------------------- + + @Test + void testNotifyPromptsListChanged() { + var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + + StepVerifier.create(mcpAsyncServer.notifyPromptsListChanged()).verifyComplete(); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + } + + @Test + void testAddPromptWithNullRegistration() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().prompts(false).build()) + .async(); + + StepVerifier.create(mcpAsyncServer.addPrompt(null)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class).hasMessage("Prompt registration must not be null"); + }); + } + + @Test + void testAddPromptWithoutCapability() { + // Create a server without prompt capabilities + McpAsyncServer serverWithoutPrompts = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .async(); + + Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); + PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( + "Test prompt description", + List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + + StepVerifier.create(serverWithoutPrompts.addPrompt(registration)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Server must be configured with prompt capabilities"); + }); + } + + @Test + void testRemovePromptWithoutCapability() { + // Create a server without prompt capabilities + McpAsyncServer serverWithoutPrompts = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .async(); + + StepVerifier.create(serverWithoutPrompts.removePrompt(TEST_PROMPT_NAME)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Server must be configured with prompt capabilities"); + }); + } + + @Test + void testRemovePrompt() { + String TEST_PROMPT_NAME_TO_REMOVE = "TEST_PROMPT_NAME678"; + + Prompt prompt = new Prompt(TEST_PROMPT_NAME_TO_REMOVE, "Test Prompt", List.of()); + PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( + "Test prompt description", + List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().prompts(true).build()) + .prompts(registration) + .async(); + + StepVerifier.create(mcpAsyncServer.removePrompt(TEST_PROMPT_NAME_TO_REMOVE)).verifyComplete(); + + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); + } + + @Test + void testRemoveNonexistentPrompt() { + var mcpAsyncServer2 = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().prompts(true).build()) + .async(); + + StepVerifier.create(mcpAsyncServer2.removePrompt("nonexistent-prompt")).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Prompt with name 'nonexistent-prompt' not found"); + }); + + assertThatCode(() -> mcpAsyncServer2.closeGracefully().block(Duration.ofSeconds(10))) + .doesNotThrowAnyException(); + } + + // --------------------------------------- + // Roots Tests + // --------------------------------------- + + @Test + void testRootsChangeConsumers() { + // Test with single consumer + var rootsReceived = new McpSchema.Root[1]; + var consumerCalled = new boolean[1]; + + var singleConsumerServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + consumerCalled[0] = true; + if (!roots.isEmpty()) { + rootsReceived[0] = roots.get(0); + } + })) + .async(); + + assertThat(singleConsumerServer).isNotNull(); + assertThatCode(() -> singleConsumerServer.closeGracefully().block(Duration.ofSeconds(10))) + .doesNotThrowAnyException(); + onClose(); + + // Test with multiple consumers + var consumer1Called = new boolean[1]; + var consumer2Called = new boolean[1]; + var rootsContent = new List[1]; + + var multipleConsumersServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + consumer1Called[0] = true; + rootsContent[0] = roots; + }, roots -> consumer2Called[0] = true)) + .async(); + + assertThat(multipleConsumersServer).isNotNull(); + assertThatCode(() -> multipleConsumersServer.closeGracefully().block(Duration.ofSeconds(10))) + .doesNotThrowAnyException(); + onClose(); + + // Test error handling + var errorHandlingServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + throw new RuntimeException("Test error"); + })) + .async(); + + assertThat(errorHandlingServer).isNotNull(); + assertThatCode(() -> errorHandlingServer.closeGracefully().block(Duration.ofSeconds(10))) + .doesNotThrowAnyException(); + onClose(); + + // Test without consumers + var noConsumersServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + + assertThat(noConsumersServer).isNotNull(); + assertThatCode(() -> noConsumersServer.closeGracefully().block(Duration.ofSeconds(10))) + .doesNotThrowAnyException(); + } + + // --------------------------------------- + // Logging Tests + // --------------------------------------- + + @Test + void testLoggingLevels() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().logging().build()) + .async(); + + // Test all logging levels + for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { + var notification = McpSchema.LoggingMessageNotification.builder() + .level(level) + .logger("test-logger") + .data("Test message with level " + level) + .build(); + + StepVerifier.create(mcpAsyncServer.loggingNotification(notification)).verifyComplete(); + } + } + + @Test + void testLoggingWithoutCapability() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().build()) // No logging capability + .async(); + + var notification = McpSchema.LoggingMessageNotification.builder() + .level(McpSchema.LoggingLevel.INFO) + .logger("test-logger") + .data("Test log message") + .build(); + + StepVerifier.create(mcpAsyncServer.loggingNotification(notification)).verifyComplete(); + } + + @Test + void testLoggingWithNullNotification() { + var mcpAsyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().logging().build()) + .async(); + + StepVerifier.create(mcpAsyncServer.loggingNotification(null)).verifyError(McpError.class); + } + +} diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java new file mode 100644 index 0000000..069dc83 --- /dev/null +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java @@ -0,0 +1,446 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.server; + +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import org.springframework.ai.mcp.server.McpServer.PromptRegistration; +import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; +import org.springframework.ai.mcp.server.McpServer.ToolRegistration; +import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; +import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; +import org.springframework.ai.mcp.spec.McpSchema.Prompt; +import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; +import org.springframework.ai.mcp.spec.McpSchema.ReadResourceResult; +import org.springframework.ai.mcp.spec.McpSchema.Resource; +import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.Tool; +import org.springframework.ai.mcp.spec.McpTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * Test suite for the {@link McpSyncServer} that can be used with different + * {@link McpTransport} implementations. + * + * @author Christian Tzolov + */ +public abstract class BlaAbstractMcpSyncServerTests { + + private static final String TEST_TOOL_NAME = "test-tool"; + + private static final String TEST_RESOURCE_URI = "test://resource"; + + private static final String TEST_PROMPT_NAME = "test-prompt"; + + abstract protected ServerMcpTransport createMcpTransport(); + + protected void onStart() { + } + + protected void onClose() { + } + + @BeforeEach + void setUp() { + // onStart(); + } + + @AfterEach + void tearDown() { + onClose(); + } + + // --------------------------------------- + // Server Lifecycle Tests + // --------------------------------------- + + @Test + void testConstructorWithInvalidArguments() { + assertThatThrownBy(() -> McpServer.using(null)).isInstanceOf(IllegalArgumentException.class) + .hasMessage("Transport must not be null"); + + assertThatThrownBy(() -> McpServer.using(createMcpTransport()).serverInfo((McpSchema.Implementation) null)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Server info must not be null"); + } + + @Test + void testGracefulShutdown() { + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testImmediateClose() { + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + assertThatCode(() -> mcpSyncServer.close()).doesNotThrowAnyException(); + } + + @Test + void testGetAsyncServer() { + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + assertThat(mcpSyncServer.getAsyncServer()).isNotNull(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + // --------------------------------------- + // Tools Tests + // --------------------------------------- + + String emptyJsonSchema = """ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {} + } + """; + + @Test + void testAddTool() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().tools(true).build()) + .sync(); + + Tool newTool = new McpSchema.Tool("new-tool", "New test tool", emptyJsonSchema); + assertThatCode(() -> mcpSyncServer + .addTool(new ToolRegistration(newTool, args -> new CallToolResult(List.of(), false)))) + .doesNotThrowAnyException(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testAddDuplicateTool() { + Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); + + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tool(duplicateTool, args -> new CallToolResult(List.of(), false)) + .sync(); + + assertThatThrownBy(() -> mcpSyncServer + .addTool(new ToolRegistration(duplicateTool, args -> new CallToolResult(List.of(), false)))) + .isInstanceOf(McpError.class) + .hasMessage("Tool with name '" + TEST_TOOL_NAME + "' already exists"); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testRemoveTool() { + Tool tool = new McpSchema.Tool(TEST_TOOL_NAME, "Test tool", emptyJsonSchema); + + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tool(tool, args -> new CallToolResult(List.of(), false)) + .sync(); + + assertThatCode(() -> mcpSyncServer.removeTool(TEST_TOOL_NAME)).doesNotThrowAnyException(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testRemoveNonexistentTool() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().tools(true).build()) + .sync(); + + assertThatThrownBy(() -> mcpSyncServer.removeTool("nonexistent-tool")).isInstanceOf(McpError.class) + .hasMessage("Tool with name 'nonexistent-tool' not found"); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testNotifyToolsListChanged() { + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + assertThatCode(() -> mcpSyncServer.notifyToolsListChanged()).doesNotThrowAnyException(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + // --------------------------------------- + // Resources Tests + // --------------------------------------- + + @Test + void testNotifyResourcesListChanged() { + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + assertThatCode(() -> mcpSyncServer.notifyResourcesListChanged()).doesNotThrowAnyException(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testAddResource() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().resources(true, false).build()) + .sync(); + + Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", + null); + ResourceRegistration registration = new ResourceRegistration(resource, + req -> new ReadResourceResult(List.of())); + + assertThatCode(() -> mcpSyncServer.addResource(registration)).doesNotThrowAnyException(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testAddResourceWithNullRegistration() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().resources(true, false).build()) + .sync(); + + assertThatThrownBy(() -> mcpSyncServer.addResource(null)).isInstanceOf(McpError.class) + .hasMessage("Resource must not be null"); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testAddResourceWithoutCapability() { + var serverWithoutResources = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", + null); + ResourceRegistration registration = new ResourceRegistration(resource, + req -> new ReadResourceResult(List.of())); + + assertThatThrownBy(() -> serverWithoutResources.addResource(registration)).isInstanceOf(McpError.class) + .hasMessage("Server must be configured with resource capabilities"); + } + + @Test + void testRemoveResourceWithoutCapability() { + var serverWithoutResources = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + assertThatThrownBy(() -> serverWithoutResources.removeResource(TEST_RESOURCE_URI)).isInstanceOf(McpError.class) + .hasMessage("Server must be configured with resource capabilities"); + } + + // --------------------------------------- + // Prompts Tests + // --------------------------------------- + + @Test + void testNotifyPromptsListChanged() { + var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + assertThatCode(() -> mcpSyncServer.notifyPromptsListChanged()).doesNotThrowAnyException(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testAddPromptWithNullRegistration() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().prompts(false).build()) + .sync(); + + assertThatThrownBy(() -> mcpSyncServer.addPrompt(null)).isInstanceOf(McpError.class) + .hasMessage("Prompt registration must not be null"); + } + + @Test + void testAddPromptWithoutCapability() { + var serverWithoutPrompts = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); + PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( + "Test prompt description", + List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + + assertThatThrownBy(() -> serverWithoutPrompts.addPrompt(registration)).isInstanceOf(McpError.class) + .hasMessage("Server must be configured with prompt capabilities"); + } + + @Test + void testRemovePromptWithoutCapability() { + var serverWithoutPrompts = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + assertThatThrownBy(() -> serverWithoutPrompts.removePrompt(TEST_PROMPT_NAME)).isInstanceOf(McpError.class) + .hasMessage("Server must be configured with prompt capabilities"); + } + + @Test + void testRemovePrompt() { + Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); + PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( + "Test prompt description", + List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().prompts(true).build()) + .prompts(registration) + .sync(); + + assertThatCode(() -> mcpSyncServer.removePrompt(TEST_PROMPT_NAME)).doesNotThrowAnyException(); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + @Test + void testRemoveNonexistentPrompt() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().prompts(true).build()) + .sync(); + + assertThatThrownBy(() -> mcpSyncServer.removePrompt("nonexistent-prompt")).isInstanceOf(McpError.class) + .hasMessage("Prompt with name 'nonexistent-prompt' not found"); + + assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); + } + + // --------------------------------------- + // Roots Tests + // --------------------------------------- + + @Test + void testRootsChangeConsumers() { + // Test with single consumer + var rootsReceived = new McpSchema.Root[1]; + var consumerCalled = new boolean[1]; + + var singleConsumerServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + consumerCalled[0] = true; + if (!roots.isEmpty()) { + rootsReceived[0] = roots.get(0); + } + })) + .sync(); + + assertThat(singleConsumerServer).isNotNull(); + assertThatCode(() -> singleConsumerServer.closeGracefully()).doesNotThrowAnyException(); + onClose(); + + // Test with multiple consumers + var consumer1Called = new boolean[1]; + var consumer2Called = new boolean[1]; + var rootsContent = new List[1]; + + var multipleConsumersServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + consumer1Called[0] = true; + rootsContent[0] = roots; + }, roots -> consumer2Called[0] = true)) + .sync(); + + assertThat(multipleConsumersServer).isNotNull(); + assertThatCode(() -> multipleConsumersServer.closeGracefully()).doesNotThrowAnyException(); + onClose(); + + // Test error handling + var errorHandlingServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .rootsChangeConsumers(List.of(roots -> { + throw new RuntimeException("Test error"); + })) + .sync(); + + assertThat(errorHandlingServer).isNotNull(); + assertThatCode(() -> errorHandlingServer.closeGracefully()).doesNotThrowAnyException(); + onClose(); + + // Test without consumers + var noConsumersServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + + assertThat(noConsumersServer).isNotNull(); + assertThatCode(() -> noConsumersServer.closeGracefully()).doesNotThrowAnyException(); + } + + // --------------------------------------- + // Logging Tests + // --------------------------------------- + + @Test + void testLoggingLevels() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().logging().build()) + .sync(); + + // Test all logging levels + for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { + var notification = McpSchema.LoggingMessageNotification.builder() + .level(level) + .logger("test-logger") + .data("Test message with level " + level) + .build(); + + assertThatCode(() -> mcpSyncServer.loggingNotification(notification)).doesNotThrowAnyException(); + } + } + + @Test + void testLoggingWithoutCapability() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().build()) // No logging capability + .sync(); + + var notification = McpSchema.LoggingMessageNotification.builder() + .level(McpSchema.LoggingLevel.INFO) + .logger("test-logger") + .data("Test log message") + .build(); + + assertThatCode(() -> mcpSyncServer.loggingNotification(notification)).doesNotThrowAnyException(); + } + + @Test + void testLoggingWithNullNotification() { + var mcpSyncServer = McpServer.using(createMcpTransport()) + .serverInfo("test-server", "1.0.0") + .capabilities(ServerCapabilities.builder().logging().build()) + .sync(); + + assertThatThrownBy(() -> mcpSyncServer.loggingNotification(null)).isInstanceOf(McpError.class); + } + +} diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/server/transport/BlaBlockingInputStream.java b/mcp-test/src/main/java/org/springframework/ai/mcp/server/transport/BlaBlockingInputStream.java new file mode 100644 index 0000000..270eaae --- /dev/null +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/server/transport/BlaBlockingInputStream.java @@ -0,0 +1,81 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.server.transport; + +import java.io.IOException; +import java.io.InputStream; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; + +public class BlaBlockingInputStream extends InputStream { + + private final BlockingQueue queue = new LinkedBlockingQueue<>(); + + private volatile boolean completed = false; + + private volatile boolean closed = false; + + @Override + public int read() throws IOException { + if (closed) { + throw new IOException("Stream is closed"); + } + + try { + Integer value = queue.poll(); + if (value == null) { + if (completed) { + return -1; + } + value = queue.take(); // Blocks until data is available + if (value == null && completed) { + return -1; + } + } + return value; + } + catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new IOException("Read interrupted", e); + } + } + + public void write(int b) { + if (!closed && !completed) { + queue.offer(b); + } + } + + public void write(byte[] data) { + if (!closed && !completed) { + for (byte b : data) { + queue.offer((int) b & 0xFF); + } + } + } + + public void complete() { + this.completed = true; + } + + @Override + public void close() { + this.closed = true; + this.completed = true; + this.queue.clear(); + } + +} \ No newline at end of file diff --git a/mcp-transport/mcp-webflux-sse-transport/README.md b/mcp-transport/mcp-webflux-sse-transport/README.md new file mode 100644 index 0000000..d60d62b --- /dev/null +++ b/mcp-transport/mcp-webflux-sse-transport/README.md @@ -0,0 +1 @@ +# WebFlux SSE Transport diff --git a/mcp-transport/mcp-webflux-sse-transport/pom.xml b/mcp-transport/mcp-webflux-sse-transport/pom.xml new file mode 100644 index 0000000..a4150e2 --- /dev/null +++ b/mcp-transport/mcp-webflux-sse-transport/pom.xml @@ -0,0 +1,114 @@ + + + 4.0.0 + + org.springframework.experimental + mcp-parent + 0.5.0-SNAPSHOT + ../../pom.xml + + mcp-webflux-sse-transport + jar + WebFlux implementation of the Java MCP SSE transport + + https://github.com/spring-projects-experimental/spring-ai-mcp + + + https://github.com/spring-projects-experimental/spring-ai-mcp + git://github.com/spring-projects-experimental/spring-ai-mcp.git + git@github.com:spring-projects-experimental/spring-ai-mcp.git + + + + + org.springframework.experimental + mcp + 0.5.0-SNAPSHOT + + + + org.springframework.experimental + mcp-test + 0.5.0-SNAPSHOT + test + + + + org.springframework + spring-webflux + ${springframework.version} + + + + io.projectreactor.netty + reactor-netty-http + test + + + + + org.springframework + spring-context + ${springframework.version} + test + + + + org.springframework + spring-test + ${springframework.version} + test + + + + org.assertj + assertj-core + ${assert4j.version} + test + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + io.projectreactor + reactor-test + test + + + org.testcontainers + junit-jupiter + ${testcontainers.version} + test + + + + org.awaitility + awaitility + 4.2.0 + test + + + + ch.qos.logback + logback-classic + ${logback.version} + test + + + + + + \ No newline at end of file diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java similarity index 96% rename from mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java rename to mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java index 906735f..ed24f6f 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SseClientTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java @@ -71,9 +71,9 @@ import org.springframework.web.reactive.function.client.WebClient; * "https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse">MCP * HTTP with SSE Transport Specification */ -public class SseClientTransport implements ClientMcpTransport { +public class WebFluxSseClientTransport implements ClientMcpTransport { - private final static Logger logger = LoggerFactory.getLogger(SseClientTransport.class); + private final static Logger logger = LoggerFactory.getLogger(WebFluxSseClientTransport.class); /** * Event type for JSON-RPC messages received through the SSE connection. The server @@ -137,7 +137,7 @@ public class SseClientTransport implements ClientMcpTransport { * instance * @throws IllegalArgumentException if webClientBuilder is null */ - public SseClientTransport(WebClient.Builder webClientBuilder) { + public WebFluxSseClientTransport(WebClient.Builder webClientBuilder) { this(webClientBuilder, new ObjectMapper()); } @@ -149,7 +149,7 @@ public class SseClientTransport implements ClientMcpTransport { * @param objectMapper the ObjectMapper to use for JSON processing * @throws IllegalArgumentException if either parameter is null */ - public SseClientTransport(WebClient.Builder webClientBuilder, ObjectMapper objectMapper) { + public WebFluxSseClientTransport(WebClient.Builder webClientBuilder, ObjectMapper objectMapper) { Assert.notNull(objectMapper, "ObjectMapper must not be null"); Assert.notNull(webClientBuilder, "WebClient.Builder must not be null"); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java similarity index 97% rename from mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java rename to mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java index 6b27476..0159258 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/SseServerTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java @@ -33,9 +33,9 @@ import org.springframework.web.reactive.function.server.ServerResponse; * * @author Christian Tzolov */ -public class SseServerTransport implements ServerMcpTransport { +public class WebFluxSseServerTransport implements ServerMcpTransport { - private final static Logger logger = LoggerFactory.getLogger(SseServerTransport.class); + private final static Logger logger = LoggerFactory.getLogger(WebFluxSseServerTransport.class); /** * Event type for JSON-RPC messages sent through the SSE connection. @@ -75,7 +75,7 @@ public class SseServerTransport implements ServerMcpTransport { * @param objectMapper The ObjectMapper to use for JSON serialization/deserialization * @param messageEndpoint The endpoint URI where clients should send messages */ - public SseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { + public WebFluxSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { Assert.notNull(objectMapper, "ObjectMapper must not be null"); Assert.notNull(messageEndpoint, "Message endpoint must not be null"); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpAsyncClientTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java similarity index 84% rename from mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpAsyncClientTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java index bce1332..0a15af2 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpAsyncClientTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java @@ -20,17 +20,17 @@ import org.junit.jupiter.api.Timeout; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; -import org.springframework.ai.mcp.client.transport.SseClientTransport; +import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.web.reactive.function.client.WebClient; /** - * Tests for the {@link McpAsyncClient} with {@link SseClientTransport}. + * Tests for the {@link McpAsyncClient} with {@link WebFluxSseClientTransport}. * * @author Christian Tzolov */ @Timeout(15) // Giving extra time beyond the client timeout -class SseMcpAsyncClientTests extends AbstractMcpAsyncClientTests { +class WebFluxSseMcpAsyncClientTests extends BlaAbstractMcpAsyncClientTests { static String host = "http://localhost:3001"; @@ -43,7 +43,7 @@ class SseMcpAsyncClientTests extends AbstractMcpAsyncClientTests { @Override protected ClientMcpTransport createMcpTransport() { - return new SseClientTransport(WebClient.builder().baseUrl(host)); + return new WebFluxSseClientTransport(WebClient.builder().baseUrl(host)); } @Override diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpSyncClientTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java similarity index 85% rename from mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpSyncClientTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java index a0bfacf..2e1a4d9 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/SseMcpSyncClientTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java @@ -20,17 +20,17 @@ import org.junit.jupiter.api.Timeout; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; -import org.springframework.ai.mcp.client.transport.SseClientTransport; +import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.web.reactive.function.client.WebClient; /** - * Tests for the {@link McpSyncClient} with {@link SseClientTransport}. + * Tests for the {@link McpSyncClient} with {@link WebFluxSseClientTransport}. * * @author Christian Tzolov */ @Timeout(15) // Giving extra time beyond the client timeout -class SseMcpSyncClientTests extends AbstractMcpSyncClientTests { +class WebFluxSseMcpSyncClientTests extends BlaAbstractMcpSyncClientTests { static String host = "http://localhost:3001"; @@ -43,7 +43,7 @@ class SseMcpSyncClientTests extends AbstractMcpSyncClientTests { @Override protected ClientMcpTransport createMcpTransport() { - return new SseClientTransport(WebClient.builder().baseUrl(host)); + return new WebFluxSseClientTransport(WebClient.builder().baseUrl(host)); } @Override diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/transport/SseClientTransportTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransportTests.java similarity index 93% rename from mcp/src/test/java/org/springframework/ai/mcp/client/transport/SseClientTransportTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransportTests.java index 2ab13ff..a75f851 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/transport/SseClientTransportTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransportTests.java @@ -43,12 +43,12 @@ import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; /** - * Tests for the {@link SseClientTransport} class. + * Tests for the {@link WebFluxSseClientTransport} class. * * @author Christian Tzolov */ @Timeout(15) -class SseClientTransportTests { +class WebFluxSseClientTransportTests { static String host = "http://localhost:3001"; @@ -58,20 +58,20 @@ class SseClientTransportTests { .withExposedPorts(3001) .waitingFor(Wait.forHttp("/").forStatusCode(404)); - private TestSseServerTransport transport; + private TestSseClientTransport transport; private WebClient.Builder webClientBuilder; private ObjectMapper objectMapper; // Test class to access protected methods - static class TestSseServerTransport extends SseClientTransport { + static class TestSseClientTransport extends WebFluxSseClientTransport { private final AtomicInteger inboundMessageCount = new AtomicInteger(0); private Sinks.Many> events = Sinks.many().unicast().onBackpressureBuffer(); - public TestSseServerTransport(WebClient.Builder webClientBuilder, ObjectMapper objectMapper) { + public TestSseClientTransport(WebClient.Builder webClientBuilder, ObjectMapper objectMapper) { super(webClientBuilder, objectMapper); } @@ -118,7 +118,7 @@ class SseClientTransportTests { startContainer(); webClientBuilder = WebClient.builder().baseUrl(host); objectMapper = new ObjectMapper(); - transport = new TestSseServerTransport(webClientBuilder, objectMapper); + transport = new TestSseClientTransport(webClientBuilder, objectMapper); transport.connect(Function.identity()).block(); } @@ -141,10 +141,10 @@ class SseClientTransportTests { @Test void constructorValidation() { - assertThatThrownBy(() -> new SseClientTransport(null)).isInstanceOf(IllegalArgumentException.class) + assertThatThrownBy(() -> new WebFluxSseClientTransport(null)).isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("WebClient.Builder must not be null"); - assertThatThrownBy(() -> new SseClientTransport(webClientBuilder, null)) + assertThatThrownBy(() -> new WebFluxSseClientTransport(webClientBuilder, null)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("ObjectMapper must not be null"); } @@ -252,7 +252,7 @@ class SseClientTransportTests { // Create a WebClient that simulates connection failures WebClient.Builder failingWebClientBuilder = WebClient.builder().baseUrl("http://non-existent-host"); - SseClientTransport failingTransport = new SseClientTransport(failingWebClientBuilder); + WebFluxSseClientTransport failingTransport = new WebFluxSseClientTransport(failingWebClientBuilder); // Verify that the transport attempts to reconnect StepVerifier.create(Mono.delay(Duration.ofSeconds(2))).expectNextCount(1).verifyComplete(); diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseAsyncIntegrationTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseAsyncIntegrationTests.java new file mode 100644 index 0000000..d9d601f --- /dev/null +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseAsyncIntegrationTests.java @@ -0,0 +1,439 @@ +/* + * Copyright 2024 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.mcp.server; + +import java.time.Duration; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Function; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import reactor.netty.DisposableServer; +import reactor.netty.http.server.HttpServer; +import reactor.test.StepVerifier; + +import org.springframework.ai.mcp.client.McpClient; +import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; +import org.springframework.ai.mcp.server.McpServer.ToolRegistration; +import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; +import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; +import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; +import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; +import org.springframework.ai.mcp.spec.McpSchema.InitializeResult; +import org.springframework.ai.mcp.spec.McpSchema.Role; +import org.springframework.ai.mcp.spec.McpSchema.Root; +import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.Tool; +import org.springframework.http.server.reactive.HttpHandler; +import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; +import org.springframework.web.client.RestClient; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.server.RouterFunctions; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.awaitility.Awaitility.await; + +public class WebFluxSseAsyncIntegrationTests { + + private static final int PORT = 8182; + + private static final String MESSAGE_ENDPOINT = "/mcp/message"; + + private DisposableServer httpServer; + + private WebFluxSseServerTransport mcpServerTransport; + + McpClient.Builder clientBuilder; + + @BeforeEach + public void before() { + this.mcpServerTransport = new WebFluxSseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); + + HttpHandler httpHandler = RouterFunctions.toHttpHandler(mcpServerTransport.getRouterFunction()); + ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); + this.httpServer = HttpServer.create().port(PORT).handle(adapter).bindNow(); + + this.clientBuilder = McpClient + .using(new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:" + PORT))); + } + + @AfterEach + public void after() { + if (httpServer != null) { + httpServer.disposeNow(); + } + } + + // --------------------------------------- + // Sampling Tests + // --------------------------------------- + @Test + void testCreateMessageWithoutInitialization() { + var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + + var messages = List + .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); + var modelPrefs = new McpSchema.ModelPreferences(List.of(), 1.0, 1.0, 1.0); + + var request = new McpSchema.CreateMessageRequest(messages, modelPrefs, null, + McpSchema.CreateMessageRequest.ContextInclusionStrategy.NONE, null, 100, List.of(), Map.of()); + + StepVerifier.create(mcpAsyncServer.createMessage(request)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Client must be initialized. Call the initialize method first!"); + }); + } + + @Test + void testCreateMessageWithoutSamplingCapabilities() { + + var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + + var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")).sync(); + + InitializeResult initResult = client.initialize(); + assertThat(initResult).isNotNull(); + + var messages = List + .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); + var modelPrefs = new McpSchema.ModelPreferences(List.of(), 1.0, 1.0, 1.0); + + var request = new McpSchema.CreateMessageRequest(messages, modelPrefs, null, + McpSchema.CreateMessageRequest.ContextInclusionStrategy.NONE, null, 100, List.of(), Map.of()); + + StepVerifier.create(mcpAsyncServer.createMessage(request)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Client must be configured with sampling capabilities"); + }); + } + + @Test + void testCreateMessageSuccess() throws InterruptedException { + + var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + + Function samplingHandler = request -> { + assertThat(request.messages()).hasSize(1); + assertThat(request.messages().get(0).content()).isInstanceOf(McpSchema.TextContent.class); + + return new CreateMessageResult(Role.USER, new McpSchema.TextContent("Test message"), "MockModelName", + CreateMessageResult.StopReason.STOP_SEQUENCE); + }; + + var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")) + .capabilities(ClientCapabilities.builder().sampling().build()) + .sampling(samplingHandler) + .sync(); + + InitializeResult initResult = client.initialize(); + assertThat(initResult).isNotNull(); + + var messages = List + .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); + var modelPrefs = new McpSchema.ModelPreferences(List.of(), 1.0, 1.0, 1.0); + + var request = new McpSchema.CreateMessageRequest(messages, modelPrefs, null, + McpSchema.CreateMessageRequest.ContextInclusionStrategy.NONE, null, 100, List.of(), Map.of()); + + StepVerifier.create(mcpAsyncServer.createMessage(request)).consumeNextWith(result -> { + assertThat(result).isNotNull(); + assertThat(result.role()).isEqualTo(Role.USER); + assertThat(result.content()).isInstanceOf(McpSchema.TextContent.class); + assertThat(((McpSchema.TextContent) result.content()).text()).isEqualTo("Test message"); + assertThat(result.model()).isEqualTo("MockModelName"); + assertThat(result.stopReason()).isEqualTo(CreateMessageResult.StopReason.STOP_SEQUENCE); + }).verifyComplete(); + } + + // --------------------------------------- + // Roots Tests + // --------------------------------------- + @Test + void testRootsSuccess() { + List roots = List.of(new Root("uri1://", "root1"), new Root("uri2://", "root2")); + + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(roots) + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + assertThat(rootsRef.get()).isNull(); + + assertThat(mcpServer.listRoots().roots()).containsAll(roots); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(roots); + }); + + // Remove a root + mcpClient.removeRoot(roots.get(0).uri()); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(roots.get(1))); + }); + + // Add a new root + var root3 = new Root("uri3://", "root3"); + mcpClient.addRoot(root3); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(roots.get(1), root3)); + }); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsWithoutCapability() { + var mcpServer = McpServer.using(mcpServerTransport).rootsChangeConsumer(rootsUpdate -> { + }).sync(); + + // Create client without roots capability + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().build()) // No + // roots + // capability + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + // Attempt to list roots should fail + assertThatThrownBy(() -> mcpServer.listRoots().roots()).isInstanceOf(McpError.class) + .hasMessage("Roots not supported"); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsWithEmptyRootsList() { + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(List.of()) // Empty roots list + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).isEmpty(); + }); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsWithMultipleConsumers() { + List roots = List.of(new Root("uri1://", "root1")); + + AtomicReference> rootsRef1 = new AtomicReference<>(); + AtomicReference> rootsRef2 = new AtomicReference<>(); + + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef1.set(rootsUpdate)) + .rootsChangeConsumer(rootsUpdate -> rootsRef2.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(roots) + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef1.get()).containsAll(roots); + assertThat(rootsRef2.get()).containsAll(roots); + }); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsServerCloseWithActiveSubscription() { + List roots = List.of(new Root("uri1://", "root1")); + + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(roots) + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(roots); + }); + + // Close server while subscription is active + mcpServer.close(); + + // Verify client can handle server closure gracefully + mcpClient.close(); + } + + // --------------------------------------- + // Tools Tests + // --------------------------------------- + + String emptyJsonSchema = """ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {} + } + """; + + @Test + + void testToolCallSuccess() { + + var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); + ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), + request -> { + // perform a blocking call to a remote service + String response = RestClient.create() + .get() + .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .retrieve() + .body(String.class); + assertThat(response).isNotBlank(); + return callResponse; + }); + + var mcpServer = McpServer.using(mcpServerTransport) + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tools(tool1) + .sync(); + + var mcpClient = clientBuilder.sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + assertThat(mcpClient.listTools().tools()).contains(tool1.tool()); + + CallToolResult response = mcpClient.callTool(new McpSchema.CallToolRequest("tool1", Map.of())); + + assertThat(response).isNotNull(); + assertThat(response).isEqualTo(callResponse); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testToolListChangeHandlingSuccess() { + + var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); + ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), + request -> { + // perform a blocking call to a remote service + String response = RestClient.create() + .get() + .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .retrieve() + .body(String.class); + assertThat(response).isNotBlank(); + return callResponse; + }); + + var mcpServer = McpServer.using(mcpServerTransport) + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tools(tool1) + .sync(); + + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpClient = clientBuilder.toolsChangeConsumer(toolsUpdate -> { + // perform a blocking call to a remote service + String response = RestClient.create() + .get() + .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .retrieve() + .body(String.class); + assertThat(response).isNotBlank(); + rootsRef.set(toolsUpdate); + }).sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + assertThat(rootsRef.get()).isNull(); + + assertThat(mcpClient.listTools().tools()).contains(tool1.tool()); + + mcpServer.notifyToolsListChanged(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(tool1.tool())); + }); + + // Remove a tool + mcpServer.removeTool("tool1"); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).isEmpty(); + }); + + // Add a new tool + ToolRegistration tool2 = new ToolRegistration(new McpSchema.Tool("tool2", "tool2 description", emptyJsonSchema), + request -> callResponse); + + mcpServer.addTool(tool2); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(tool2.tool())); + }); + + mcpClient.close(); + mcpServer.close(); + } + +} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java similarity index 85% rename from mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java index 8beda36..753216a 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpAsyncServerTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java @@ -21,19 +21,19 @@ import org.junit.jupiter.api.Timeout; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; -import org.springframework.ai.mcp.server.transport.SseServerTransport; +import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.function.server.RouterFunctions; /** - * Tests for {@link McpAsyncServer} using {@link SseServerTransport}. + * Tests for {@link McpAsyncServer} using {@link WebFluxSseServerTransport}. * * @author Christian Tzolov */ @Timeout(15) // Giving extra time beyond the client timeout -class SseMcpAsyncServerTests extends AbstractMcpAsyncServerTests { +class WebFluxSseMcpAsyncServerTests extends BlaAbstractMcpAsyncServerTests { private static final int PORT = 8181; @@ -43,7 +43,7 @@ class SseMcpAsyncServerTests extends AbstractMcpAsyncServerTests { @Override protected ServerMcpTransport createMcpTransport() { - var transport = new SseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); + var transport = new WebFluxSseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); HttpHandler httpHandler = RouterFunctions.toHttpHandler(transport.getRouterFunction()); ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java similarity index 83% rename from mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java index af62763..097ed77 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/SseMcpSyncServerTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java @@ -21,19 +21,19 @@ import org.junit.jupiter.api.Timeout; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; -import org.springframework.ai.mcp.server.transport.SseServerTransport; +import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.function.server.RouterFunctions; /** - * Tests for {@link McpSyncServer} using {@link SseServerTransport}. + * Tests for {@link McpSyncServer} using {@link WebFluxSseServerTransport}. * * @author Christian Tzolov */ @Timeout(15) // Giving extra time beyond the client timeout -class SseMcpSyncServerTests extends AbstractMcpSyncServerTests { +class WebFluxSseMcpSyncServerTests extends BlaAbstractMcpSyncServerTests { private static final int PORT = 8182; @@ -41,11 +41,11 @@ class SseMcpSyncServerTests extends AbstractMcpSyncServerTests { private DisposableServer httpServer; - private SseServerTransport transport; + private WebFluxSseServerTransport transport; @Override protected ServerMcpTransport createMcpTransport() { - transport = new SseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); + transport = new WebFluxSseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); return transport; } diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/BlockingInputStream.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/BlockingInputStream.java new file mode 100644 index 0000000..96690db --- /dev/null +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/BlockingInputStream.java @@ -0,0 +1,81 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.server.transport; + +import java.io.IOException; +import java.io.InputStream; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; + +public class BlockingInputStream extends InputStream { + + private final BlockingQueue queue = new LinkedBlockingQueue<>(); + + private volatile boolean completed = false; + + private volatile boolean closed = false; + + @Override + public int read() throws IOException { + if (closed) { + throw new IOException("Stream is closed"); + } + + try { + Integer value = queue.poll(); + if (value == null) { + if (completed) { + return -1; + } + value = queue.take(); // Blocks until data is available + if (value == null && completed) { + return -1; + } + } + return value; + } + catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new IOException("Read interrupted", e); + } + } + + public void write(int b) { + if (!closed && !completed) { + queue.offer(b); + } + } + + public void write(byte[] data) { + if (!closed && !completed) { + for (byte b : data) { + queue.offer((int) b & 0xFF); + } + } + } + + public void complete() { + this.completed = true; + } + + @Override + public void close() { + this.closed = true; + this.completed = true; + this.queue.clear(); + } + +} \ No newline at end of file diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/SseServerTransportTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/_SseServerTransportTests.java_ similarity index 100% rename from mcp/src/test/java/org/springframework/ai/mcp/server/transport/SseServerTransportTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/_SseServerTransportTests.java_ diff --git a/mcp-transport/mcp-webmvc-sse-transport/README.md b/mcp-transport/mcp-webmvc-sse-transport/README.md new file mode 100644 index 0000000..a7c9941 --- /dev/null +++ b/mcp-transport/mcp-webmvc-sse-transport/README.md @@ -0,0 +1,30 @@ +# WebMVC SSE Server Transport + +```xml + + org.springframework.experimental + mcp-webmvc-sse-transport + 0.5.0-SNAPSHOT + +``` + + + +```java +String MESSAGE_ENDPOINT = "/mcp/message"; + +@Configuration +@EnableWebMvc +static class MyConfig { + + @Bean + public WebMvcSseServerTransport webMvcSseServerTransport() { + return new WebMvcSseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); + } + + @Bean + public RouterFunction routerFunction(WebMvcSseServerTransport transport) { + return transport.getRouterFunction(); + } +} +``` diff --git a/mcp-transport/mcp-webmvc-sse-transport/pom.xml b/mcp-transport/mcp-webmvc-sse-transport/pom.xml new file mode 100644 index 0000000..d86eb42 --- /dev/null +++ b/mcp-transport/mcp-webmvc-sse-transport/pom.xml @@ -0,0 +1,128 @@ + + + 4.0.0 + + org.springframework.experimental + mcp-parent + 0.5.0-SNAPSHOT + ../../pom.xml + + mcp-webmvc-sse-transport + jar + Spring Web MVC implementation of the Java MCP SSE transport + + https://github.com/spring-projects-experimental/spring-ai-mcp + + + https://github.com/spring-projects-experimental/spring-ai-mcp + git://github.com/spring-projects-experimental/spring-ai-mcp.git + git@github.com:spring-projects-experimental/spring-ai-mcp.git + + + + + org.springframework.experimental + mcp + 0.5.0-SNAPSHOT + + + + org.springframework.experimental + mcp-test + 0.5.0-SNAPSHOT + test + + + + org.springframework + spring-webmvc + ${springframework.version} + + + + + + org.springframework + spring-context + ${springframework.version} + test + + + + org.springframework + spring-test + ${springframework.version} + test + + + + org.assertj + assertj-core + ${assert4j.version} + test + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + org.testcontainers + junit-jupiter + ${testcontainers.version} + test + + + + org.awaitility + awaitility + 4.2.0 + test + + + + ch.qos.logback + logback-classic + ${logback.version} + test + + + + io.projectreactor.netty + reactor-netty-http + test + + + io.projectreactor + reactor-test + test + + + jakarta.servlet + jakarta.servlet-api + 5.0.0 + provided + + + + org.apache.tomcat.embed + tomcat-embed-core + 10.1.18 + test + + + + + + \ No newline at end of file diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java new file mode 100644 index 0000000..3305da5 --- /dev/null +++ b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java @@ -0,0 +1,247 @@ +package org.springframework.ai.mcp.server.transport; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import reactor.core.publisher.Mono; + +import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.springframework.ai.mcp.util.Assert; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; +import org.springframework.web.servlet.function.RouterFunction; +import org.springframework.web.servlet.function.RouterFunctions; +import org.springframework.web.servlet.function.ServerRequest; +import org.springframework.web.servlet.function.ServerResponse; + +import java.io.IOException; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; + +/** + * Server-side implementation of the MCP HTTP with SSE transport specification using + * Spring WebMVC. This implementation wraps synchronous WebMVC operations in reactive + * types to maintain compatibility with the reactive transport interface. + * + * @author Christian Tzolov + */ +public class WebMvcSseServerTransport implements ServerMcpTransport { + + private final static Logger logger = LoggerFactory.getLogger(WebMvcSseServerTransport.class); + + /** + * Event type for JSON-RPC messages sent through the SSE connection. + */ + public final static String MESSAGE_EVENT_TYPE = "message"; + + /** + * Event type for sending the message endpoint URI to clients. + */ + public final static String ENDPOINT_EVENT_TYPE = "endpoint"; + + /** + * Default SSE endpoint path as specified by the MCP transport specification. + */ + public final static String SSE_ENDPOINT = "/sse"; + + private final ObjectMapper objectMapper; + + private final String messageEndpoint; + + private final RouterFunction routerFunction; + + /** + * Map of active client sessions, keyed by session ID. + */ + private final ConcurrentHashMap sessions = new ConcurrentHashMap<>(); + + /** + * Flag indicating if the transport is shutting down. + */ + private volatile boolean isClosing = false; + + private Function, Mono> connectHandler; + + /** + * Constructs a new FunctionalSseServerTransport. + * @param objectMapper The ObjectMapper to use for JSON serialization/deserialization + * @param messageEndpoint The endpoint URI where clients should send messages + */ + public WebMvcSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { + Assert.notNull(objectMapper, "ObjectMapper must not be null"); + Assert.notNull(messageEndpoint, "Message endpoint must not be null"); + + this.objectMapper = objectMapper; + this.messageEndpoint = messageEndpoint; + this.routerFunction = RouterFunctions.route() + .GET(SSE_ENDPOINT, this::handleSseConnection) + .POST(messageEndpoint, this::handleMessage) + .build(); + } + + @Override + public Mono connect(Function, Mono> handler) { + this.connectHandler = handler; + // Server-side transport doesn't initiate connections + return Mono.empty(); + } + + @Override + public Mono sendMessage(McpSchema.JSONRPCMessage message) { + return Mono.fromRunnable(() -> { + if (sessions.isEmpty()) { + logger.debug("No active sessions to broadcast message to"); + return; + } + + try { + String jsonText = objectMapper.writeValueAsString(message); + logger.debug("Attempting to broadcast message to {} active sessions", sessions.size()); + + sessions.values().forEach(session -> { + try { + session.messageSink.send(SseEmitter.event().name(MESSAGE_EVENT_TYPE).data(jsonText)); + } + catch (IOException e) { + logger.error("Failed to send message to session {}: {}", session.id, e.getMessage()); + } + }); + } + catch (IOException e) { + logger.error("Failed to serialize message: {}", e.getMessage()); + } + }); + } + + @Override + public T unmarshalFrom(Object data, TypeReference typeRef) { + return this.objectMapper.convertValue(data, typeRef); + } + + @Override + public Mono closeGracefully() { + return Mono.fromRunnable(() -> { + isClosing = true; + logger.debug("Initiating graceful shutdown with {} active sessions", sessions.size()); + + sessions.values().forEach(session -> { + String sessionId = session.id; + session.close(); + sessions.remove(sessionId); + }); + + logger.info("Graceful shutdown completed"); + }); + } + + /** + * Get the router function for configuring the web server. + */ + public RouterFunction getRouterFunction() { + return this.routerFunction; + } + + /** + * Handles new SSE connection requests from clients. + */ + private ServerResponse handleSseConnection(ServerRequest request) { + if (isClosing) { + return ServerResponse.status(HttpStatus.SERVICE_UNAVAILABLE).body("Server is shutting down"); + } + + String sessionId = UUID.randomUUID().toString(); + logger.debug("Creating new SSE connection for session: {}", sessionId); + + ClientSession session = new ClientSession(sessionId); + this.sessions.put(sessionId, session); + + // Send initial endpoint event + try { + session.messageSink.send(SseEmitter.event().name(ENDPOINT_EVENT_TYPE).data(messageEndpoint)); + } + catch (IOException e) { + logger.error("Failed to send initial endpoint event to session {}: {}", sessionId, e.getMessage()); + sessions.remove(sessionId); + return ServerResponse.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + + session.messageSink.onCompletion(() -> { + logger.debug("Session {} completed", sessionId); + sessions.remove(sessionId); + }); + + session.messageSink.onError(error -> { + logger.error("Error in session {}: {}", sessionId, error.getMessage()); + sessions.remove(sessionId); + }); + + session.messageSink.onTimeout(() -> { + logger.debug("Session {} timed out", sessionId); + sessions.remove(sessionId); + }); + + return ServerResponse.ok().contentType(MediaType.TEXT_EVENT_STREAM).body(session.messageSink); + } + + /** + * Handles incoming messages from clients. + */ + private ServerResponse handleMessage(ServerRequest request) { + if (isClosing) { + return ServerResponse.status(HttpStatus.SERVICE_UNAVAILABLE).body("Server is shutting down"); + } + + try { + String body = request.body(String.class); + McpSchema.JSONRPCMessage message = McpSchema.deserializeJsonRpcMessage(objectMapper, body); + + // Convert the message to a Mono, apply the handler, and block for the + // response + McpSchema.JSONRPCMessage response = Mono.just(message).transform(connectHandler).block(); + + return ServerResponse.ok().build(); + } + catch (IllegalArgumentException | IOException e) { + logger.error("Failed to deserialize message: {}", e.getMessage()); + return ServerResponse.badRequest().body(new McpError("Invalid message format")); + } + catch (Exception e) { + logger.error("Error handling message: {}", e.getMessage()); + return ServerResponse.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new McpError(e.getMessage())); + } + } + + /** + * Represents an active client session. + */ + private static class ClientSession { + + private final String id; + + private final SseEmitter messageSink; + + ClientSession(String id) { + this.id = id; + this.messageSink = new SseEmitter(0L); // No timeout + logger.debug("Session {} initialized with SSE emitter", id); + } + + void close() { + logger.debug("Closing session: {}", id); + try { + messageSink.complete(); + logger.debug("Successfully completed SSE emitter for session {}", id); + } + catch (Exception e) { + logger.warn("Failed to complete SSE emitter for session {}: {}", id, e.getMessage()); + } + } + + } + +} diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java new file mode 100644 index 0000000..18dcd16 --- /dev/null +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java @@ -0,0 +1,129 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.server; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.catalina.Context; +import org.apache.catalina.LifecycleException; +import org.apache.catalina.startup.Tomcat; +import org.junit.jupiter.api.Timeout; + +import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.function.RouterFunction; +import org.springframework.web.servlet.function.ServerResponse; + +@Timeout(15) +class WebMvcSseAsyncServerTransportTests extends BlaAbstractMcpAsyncServerTests { + + private static final String MESSAGE_ENDPOINT = "/mcp/message"; + + private static final int PORT = 8181; + + private Tomcat tomcat; + + private WebMvcSseServerTransport transport; + + @Configuration + @EnableWebMvc + static class TestConfig { + + @Bean + public WebMvcSseServerTransport webMvcSseServerTransport() { + return new WebMvcSseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); + } + + @Bean + public RouterFunction routerFunction(WebMvcSseServerTransport transport) { + return transport.getRouterFunction(); + } + + } + + private AnnotationConfigWebApplicationContext appContext; + + @Override + protected ServerMcpTransport createMcpTransport() { + // Set up Tomcat first + tomcat = new Tomcat(); + tomcat.setPort(PORT); + + // Set Tomcat base directory to java.io.tmpdir to avoid permission issues + String baseDir = System.getProperty("java.io.tmpdir"); + tomcat.setBaseDir(baseDir); + + // Use the same directory for document base + Context context = tomcat.addContext("", baseDir); + + // Create and configure Spring WebMvc context + appContext = new AnnotationConfigWebApplicationContext(); + appContext.register(TestConfig.class); + appContext.setServletContext(context.getServletContext()); + appContext.refresh(); + + // Get the transport from Spring context + transport = appContext.getBean(WebMvcSseServerTransport.class); + + // Create DispatcherServlet with our Spring context + DispatcherServlet dispatcherServlet = new DispatcherServlet(appContext); + // dispatcherServlet.setThrowExceptionIfNoHandlerFound(true); + + // Add servlet to Tomcat and get the wrapper + var wrapper = Tomcat.addServlet(context, "dispatcherServlet", dispatcherServlet); + wrapper.setLoadOnStartup(1); + context.addServletMappingDecoded("/*", "dispatcherServlet"); + + try { + tomcat.start(); + tomcat.getConnector(); // Create and start the connector + } + catch (LifecycleException e) { + throw new RuntimeException("Failed to start Tomcat", e); + } + + return transport; + } + + @Override + protected void onStart() { + } + + @Override + protected void onClose() { + if (transport != null) { + transport.closeGracefully().block(); + } + if (appContext != null) { + appContext.close(); + } + if (tomcat != null) { + try { + tomcat.stop(); + tomcat.destroy(); + } + catch (LifecycleException e) { + throw new RuntimeException("Failed to stop Tomcat", e); + } + } + } + +} diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java new file mode 100644 index 0000000..fb3926d --- /dev/null +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java @@ -0,0 +1,129 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.server; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.catalina.Context; +import org.apache.catalina.LifecycleException; +import org.apache.catalina.startup.Tomcat; +import org.junit.jupiter.api.Timeout; + +import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.function.RouterFunction; +import org.springframework.web.servlet.function.ServerResponse; + +@Timeout(15) +class WebMvcSseSyncServerTransportTests extends BlaAbstractMcpSyncServerTests { + + private static final String MESSAGE_ENDPOINT = "/mcp/message"; + + private static final int PORT = 8181; + + private Tomcat tomcat; + + private WebMvcSseServerTransport transport; + + @Configuration + @EnableWebMvc + static class TestConfig { + + @Bean + public WebMvcSseServerTransport webMvcSseServerTransport() { + return new WebMvcSseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); + } + + @Bean + public RouterFunction routerFunction(WebMvcSseServerTransport transport) { + return transport.getRouterFunction(); + } + + } + + private AnnotationConfigWebApplicationContext appContext; + + @Override + protected ServerMcpTransport createMcpTransport() { + // Set up Tomcat first + tomcat = new Tomcat(); + tomcat.setPort(PORT); + + // Set Tomcat base directory to java.io.tmpdir to avoid permission issues + String baseDir = System.getProperty("java.io.tmpdir"); + tomcat.setBaseDir(baseDir); + + // Use the same directory for document base + Context context = tomcat.addContext("", baseDir); + + // Create and configure Spring WebMvc context + appContext = new AnnotationConfigWebApplicationContext(); + appContext.register(TestConfig.class); + appContext.setServletContext(context.getServletContext()); + appContext.refresh(); + + // Get the transport from Spring context + transport = appContext.getBean(WebMvcSseServerTransport.class); + + // Create DispatcherServlet with our Spring context + DispatcherServlet dispatcherServlet = new DispatcherServlet(appContext); + // dispatcherServlet.setThrowExceptionIfNoHandlerFound(true); + + // Add servlet to Tomcat and get the wrapper + var wrapper = Tomcat.addServlet(context, "dispatcherServlet", dispatcherServlet); + wrapper.setLoadOnStartup(1); + context.addServletMappingDecoded("/*", "dispatcherServlet"); + + try { + tomcat.start(); + tomcat.getConnector(); // Create and start the connector + } + catch (LifecycleException e) { + throw new RuntimeException("Failed to start Tomcat", e); + } + + return transport; + } + + @Override + protected void onStart() { + } + + @Override + protected void onClose() { + if (transport != null) { + transport.closeGracefully().block(); + } + if (appContext != null) { + appContext.close(); + } + if (tomcat != null) { + try { + tomcat.stop(); + tomcat.destroy(); + } + catch (LifecycleException e) { + throw new RuntimeException("Failed to stop Tomcat", e); + } + } + } + +} diff --git a/mcp/pom.xml b/mcp/pom.xml index 30bb8ce..86d4ff4 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -21,6 +21,7 @@ + org.slf4j slf4j-api @@ -38,11 +39,11 @@ reactor-core - org.springframework - spring-webflux + spring-webmvc ${springframework.version} + test @@ -116,4 +117,4 @@ - + \ No newline at end of file diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java new file mode 100644 index 0000000..c337e5d --- /dev/null +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java @@ -0,0 +1,202 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.client.transport; + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.time.Duration; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Flow; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Function; +import java.util.regex.Pattern; + +/** + * @author Christian Tzolov + */ +public class FlowSseClient { + + private final HttpClient httpClient; + + private static final Pattern EVENT_DATA_PATTERN = Pattern.compile("^data:(.+)$", Pattern.MULTILINE); + + private static final Pattern EVENT_ID_PATTERN = Pattern.compile("^id:(.+)$", Pattern.MULTILINE); + + private static final Pattern EVENT_TYPE_PATTERN = Pattern.compile("^event:(.+)$", Pattern.MULTILINE); + + public FlowSseClient(HttpClient httpClient) { + this.httpClient = httpClient; + } + + public void subscribe(String url, SSEEventHandler eventHandler) { + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(url)) + .header("Accept", "text/event-stream") + .header("Cache-Control", "no-cache") + .GET() + .build(); + + StringBuilder eventBuilder = new StringBuilder(); + AtomicReference currentEventId = new AtomicReference<>(); + AtomicReference currentEventType = new AtomicReference<>("message"); + + Flow.Subscriber lineSubscriber = new Flow.Subscriber<>() { + private Flow.Subscription subscription; + + @Override + public void onSubscribe(Flow.Subscription subscription) { + this.subscription = subscription; + subscription.request(Long.MAX_VALUE); + } + + @Override + public void onNext(String line) { + if (line.isEmpty()) { + // Empty line means end of event + if (eventBuilder.length() > 0) { + String eventData = eventBuilder.toString(); + SSEEvent event = new SSEEvent(currentEventId.get(), currentEventType.get(), eventData.trim()); + eventHandler.onEvent(event); + eventBuilder.setLength(0); + } + } + else { + if (line.startsWith("data:")) { + var matcher = EVENT_DATA_PATTERN.matcher(line); + if (matcher.find()) { + eventBuilder.append(matcher.group(1).trim()).append("\n"); + } + } + else if (line.startsWith("id:")) { + var matcher = EVENT_ID_PATTERN.matcher(line); + if (matcher.find()) { + currentEventId.set(matcher.group(1).trim()); + } + } + else if (line.startsWith("event:")) { + var matcher = EVENT_TYPE_PATTERN.matcher(line); + if (matcher.find()) { + currentEventType.set(matcher.group(1).trim()); + } + } + } + subscription.request(1); + } + + @Override + public void onError(Throwable throwable) { + eventHandler.onError(throwable); + } + + @Override + public void onComplete() { + // Handle any remaining event data + if (eventBuilder.length() > 0) { + String eventData = eventBuilder.toString(); + SSEEvent event = new SSEEvent(currentEventId.get(), currentEventType.get(), eventData.trim()); + eventHandler.onEvent(event); + } + } + }; + + Function, HttpResponse.BodySubscriber> subscriberFactory = subscriber -> HttpResponse.BodySubscribers + .fromLineSubscriber(subscriber); + + CompletableFuture> future = this.httpClient.sendAsync(request, + info -> subscriberFactory.apply(lineSubscriber)); + + future.thenAccept(response -> { + if (response.statusCode() != 200) { + throw new RuntimeException("Failed to connect to SSE stream: " + response.statusCode()); + } + }).exceptionally(throwable -> { + eventHandler.onError(throwable); + return null; + }); + } + + // Event handler interface + public interface SSEEventHandler { + + void onEvent(SSEEvent event); + + void onError(Throwable error); + + } + + // SSE Event class + public static class SSEEvent { + + private final String id; + + private final String type; + + private final String data; + + public SSEEvent(String id, String type, String data) { + this.id = id; + this.type = type; + this.data = data; + } + + public String getId() { + return id; + } + + public String getType() { + return type; + } + + public String getData() { + return data; + } + + @Override + public String toString() { + return "SSEEvent{" + "id='" + id + '\'' + ", type='" + type + '\'' + ", data='" + data + '\'' + '}'; + } + + } + + public static void main(String[] args) { + + FlowSseClient sseClient = new FlowSseClient( + HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build()); + + var eventHandler = new SSEEventHandler() { + @Override + public void onEvent(SSEEvent event) { + System.out.println("Received event: " + event); + } + + @Override + public void onError(Throwable error) { + System.out.println("Error: " + error); + } + }; + sseClient.subscribe("http://localhost:8080/sse", eventHandler); + + try { + Thread.sleep(100000); + } + catch (InterruptedException e) { + e.printStackTrace(); + } + } + +} diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java new file mode 100644 index 0000000..6423682 --- /dev/null +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java @@ -0,0 +1,192 @@ +/* + * Copyright 2024 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.mcp.client.transport; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.ai.mcp.client.transport.FlowSseClient.SSEEvent; +import org.springframework.ai.mcp.spec.ClientMcpTransport; +import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; +import org.springframework.ai.mcp.util.Assert; + +import reactor.core.publisher.Mono; + +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.time.Duration; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Function; + +/** + * Server-Sent Events (SSE) implementation of the + * {@link org.springframework.ai.mcp.spec.McpTransport} that follows the MCP HTTP with SSE + * transport specification, using Java's HttpClient. + * + * @author Christian Tzolov + */ +public class HttpClientSseClientTransport implements ClientMcpTransport { + + private final static Logger logger = LoggerFactory.getLogger(HttpClientSseClientTransport.class); + + private final static String MESSAGE_EVENT_TYPE = "message"; + + private final static String ENDPOINT_EVENT_TYPE = "endpoint"; + + private final static String SSE_ENDPOINT = "/sse"; + + private final String baseUri; + + private final FlowSseClient sseClient; + + private final HttpClient httpClient; + + protected ObjectMapper objectMapper; + + private volatile boolean isClosing = false; + + private CountDownLatch closeLatch = new CountDownLatch(1); + + private final AtomicReference messageEndpoint = new AtomicReference<>(); + + private final AtomicReference> connectionFuture = new AtomicReference<>(); + + public HttpClientSseClientTransport(String baseUri) { + this(HttpClient.newBuilder(), baseUri, new ObjectMapper()); + } + + public HttpClientSseClientTransport(HttpClient.Builder clientBuilder, String baseUri, ObjectMapper objectMapper) { + Assert.notNull(objectMapper, "ObjectMapper must not be null"); + Assert.notNull(clientBuilder, "clientBuilder must not be null"); + this.baseUri = baseUri; + this.objectMapper = objectMapper; + this.httpClient = clientBuilder.connectTimeout(Duration.ofSeconds(10)).build(); + this.sseClient = new FlowSseClient(this.httpClient); + } + + @Override + public Mono connect(Function, Mono> handler) { + CompletableFuture future = new CompletableFuture<>(); + connectionFuture.set(future); + + sseClient.subscribe(this.baseUri + SSE_ENDPOINT, new FlowSseClient.SSEEventHandler() { + @Override + public void onEvent(SSEEvent event) { + if (isClosing) { + return; + } + + try { + if (ENDPOINT_EVENT_TYPE.equals(event.getType())) { + String endpoint = event.getData(); + messageEndpoint.set(endpoint); + closeLatch.countDown(); + future.complete(null); + } + else if (MESSAGE_EVENT_TYPE.equals(event.getType())) { + JSONRPCMessage message = McpSchema.deserializeJsonRpcMessage(objectMapper, event.getData()); + handler.apply(Mono.just(message)).subscribe(); + } + else { + logger.error("Received unrecognized SSE event type: " + event.getType()); + } + } + catch (IOException e) { + logger.error("Error processing SSE event", e); + future.completeExceptionally(e); + } + } + + @Override + public void onError(Throwable error) { + if (!isClosing) { + logger.error("SSE connection error", error); + future.completeExceptionally(error); + } + } + }); + + return Mono.fromFuture(future); + } + + @Override + public Mono sendMessage(JSONRPCMessage message) { + if (isClosing) { + return Mono.empty(); + } + + try { + closeLatch.await(10, TimeUnit.SECONDS); + } + catch (InterruptedException e) { + return Mono.error(new McpError("Failed to wait for the message endpoint")); + } + + String endpoint = messageEndpoint.get(); + if (endpoint == null) { + return Mono.error(new McpError("No message endpoint available")); + } + + try { + String jsonText = this.objectMapper.writeValueAsString(message); + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(this.baseUri + endpoint)) + .header("Content-Type", "application/json") + .POST(HttpRequest.BodyPublishers.ofString(jsonText)) + .build(); + + return Mono.fromFuture( + httpClient.sendAsync(request, HttpResponse.BodyHandlers.discarding()).thenAccept(response -> { + if (response.statusCode() != 200) { + logger.error("Error sending message: {}", response.statusCode()); + } + })); + } + catch (IOException e) { + if (!isClosing) { + return Mono.error(new RuntimeException("Failed to serialize message", e)); + } + return Mono.empty(); + } + } + + @Override + public Mono closeGracefully() { + return Mono.fromRunnable(() -> { + isClosing = true; + CompletableFuture future = connectionFuture.get(); + if (future != null && !future.isDone()) { + future.cancel(true); + } + }); + } + + @Override + public T unmarshalFrom(Object data, TypeReference typeRef) { + return this.objectMapper.convertValue(data, typeRef); + } + +} diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SSEClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SSEClient.java new file mode 100644 index 0000000..ec8c8eb --- /dev/null +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SSEClient.java @@ -0,0 +1,183 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.client.transport; + +/** + * @author Christian Tzolov + * @since 1.0.0 + */ + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.time.Duration; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicReference; +import java.util.regex.Pattern; +import java.util.stream.Stream; + +public class SSEClient { + + private final HttpClient httpClient; + + private static final Pattern EVENT_DATA_PATTERN = Pattern.compile("^data:(.+)$", Pattern.MULTILINE); + + private static final Pattern EVENT_ID_PATTERN = Pattern.compile("^id:(.+)$", Pattern.MULTILINE); + + private static final Pattern EVENT_TYPE_PATTERN = Pattern.compile("^event:(.+)$", Pattern.MULTILINE); + + public SSEClient() { + this.httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build(); + } + + public void subscribe(String url, SSEEventHandler eventHandler) { + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(url)) + .header("Accept", "text/event-stream") + .header("Cache-Control", "no-cache") + .GET() + .build(); + + CompletableFuture future = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofLines()) + .thenAccept(response -> { + if (response.statusCode() == 200) { + processSSEStream(response, eventHandler); + } + else { + throw new RuntimeException("Failed to connect to SSE stream: " + response.statusCode()); + } + }); + + // Handle errors + future.exceptionally(throwable -> { + eventHandler.onError(throwable); + return null; + }); + } + + private void processSSEStream(HttpResponse> response, SSEEventHandler eventHandler) { + StringBuilder eventBuilder = new StringBuilder(); + AtomicReference currentEventId = new AtomicReference<>(); + AtomicReference currentEventType = new AtomicReference<>("message"); // default + // event + // type + + response.body().forEach(line -> { + if (line.isEmpty()) { + // Empty line means end of event + if (eventBuilder.length() > 0) { + String eventData = eventBuilder.toString(); + SSEEvent event = parseEvent(eventData, currentEventId.get(), currentEventType.get()); + eventHandler.onEvent(event); + eventBuilder.setLength(0); + } + } + else { + if (line.startsWith("data:")) { + var matcher = EVENT_DATA_PATTERN.matcher(line); + if (matcher.find()) { + eventBuilder.append(matcher.group(1).trim()).append("\n"); + } + } + else if (line.startsWith("id:")) { + var matcher = EVENT_ID_PATTERN.matcher(line); + if (matcher.find()) { + currentEventId.set(matcher.group(1).trim()); + } + } + else if (line.startsWith("event:")) { + var matcher = EVENT_TYPE_PATTERN.matcher(line); + if (matcher.find()) { + currentEventType.set(matcher.group(1).trim()); + } + } + } + }); + } + + private SSEEvent parseEvent(String eventData, String eventId, String eventType) { + return new SSEEvent(eventId, eventType, eventData.trim()); + } + + // Event handler interface + public interface SSEEventHandler { + + void onEvent(SSEEvent event); + + void onError(Throwable error); + + } + + // SSE Event class + public static class SSEEvent { + + private final String id; + + private final String type; + + private final String data; + + public SSEEvent(String id, String type, String data) { + this.id = id; + this.type = type; + this.data = data; + } + + public String getId() { + return id; + } + + public String getType() { + return type; + } + + public String getData() { + return data; + } + + @Override + public String toString() { + return "SSEEvent{" + "id='" + id + '\'' + ", type='" + type + '\'' + ", data='" + data + '\'' + '}'; + } + + } + + public static void main(String[] args) { + SSEClient sseClient = new SSEClient(); + + var eventHandler = new SSEEventHandler() { + @Override + public void onEvent(SSEEvent event) { + System.out.println("Received event: " + event); + } + + @Override + public void onError(Throwable error) { + System.out.println("Error: " + error); + } + }; + sseClient.subscribe("http://localhost:8080/sse", eventHandler); + + try { + Thread.sleep(100000); + } + catch (InterruptedException e) { + e.printStackTrace(); + } + } + +} \ No newline at end of file diff --git a/mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java b/mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java index 47e38c7..622ad26 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java @@ -21,11 +21,9 @@ import java.util.Map; import reactor.util.annotation.Nullable; -import org.springframework.lang.Contract; - /** * Miscellaneous utility methods. - * + * * @author Christian Tzolov */ @@ -52,7 +50,6 @@ public final class Utils { * @param collection the Collection to check * @return whether the given Collection is empty */ - @Contract("null -> true") public static boolean isEmpty(@Nullable Collection collection) { return (collection == null || collection.isEmpty()); } @@ -63,7 +60,6 @@ public final class Utils { * @param map the Map to check * @return whether the given Map is empty */ - @Contract("null -> true") public static boolean isEmpty(@Nullable Map map) { return (map == null || map.isEmpty()); } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/DemoServer.java b/mcp/src/test/java/org/springframework/ai/mcp/attic/_DemoServer.java_ similarity index 100% rename from mcp/src/test/java/org/springframework/ai/mcp/attic/DemoServer.java rename to mcp/src/test/java/org/springframework/ai/mcp/attic/_DemoServer.java_ diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/_HttpServletSseServerTransport.java_ b/mcp/src/test/java/org/springframework/ai/mcp/attic/_HttpServletSseServerTransport.java_ new file mode 100644 index 0000000..3bededd --- /dev/null +++ b/mcp/src/test/java/org/springframework/ai/mcp/attic/_HttpServletSseServerTransport.java_ @@ -0,0 +1,297 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.server.transport; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Function; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import reactor.core.publisher.Mono; + +import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.ServerMcpTransport; + +/** + * A Servlet-based implementation of the MCP HTTP with SSE transport specification. This + * implementation provides similar functionality to FunctionalSseServerTransport but uses + * the traditional Servlet API instead of WebFlux. + * + * @author Christian Tzolov + * @since 1.0.0 + */ + +@WebServlet(asyncSupported = true) +public class HttpServletSseServerTransport extends HttpServlet implements ServerMcpTransport { + + private static final Logger logger = LoggerFactory.getLogger(HttpServletSseServerTransport.class); + + public static final String SSE_ENDPOINT = "/sse"; + + public static final String MESSAGE_EVENT_TYPE = "message"; + + public static final String ENDPOINT_EVENT_TYPE = "endpoint"; + + private final ObjectMapper objectMapper; + + private final String messageEndpoint; + + private final Map sessions = new ConcurrentHashMap<>(); + + private final AtomicBoolean isClosing = new AtomicBoolean(false); + + private Function, Mono> connectHandler; + + public HttpServletSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { + this.objectMapper = objectMapper; + this.messageEndpoint = messageEndpoint; + } + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + String pathInfo = request.getPathInfo(); + if (!SSE_ENDPOINT.equals(pathInfo)) { + response.sendError(HttpServletResponse.SC_NOT_FOUND); + return; + } + + if (isClosing.get()) { + response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "Server is shutting down"); + return; + } + + response.setContentType("text/event-stream"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Cache-Control", "no-cache"); + response.setHeader("Connection", "keep-alive"); + response.setHeader("Access-Control-Allow-Origin", "*"); + + String sessionId = UUID.randomUUID().toString(); + AsyncContext asyncContext = request.startAsync(); + asyncContext.setTimeout(0); + + PrintWriter writer = response.getWriter(); + ClientSession session = new ClientSession(sessionId, asyncContext, writer); + sessions.put(sessionId, session); + + // Send initial endpoint event + sendEvent(writer, ENDPOINT_EVENT_TYPE, messageEndpoint); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + if (isClosing.get()) { + response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "Server is shutting down"); + return; + } + + String pathInfo = request.getPathInfo(); + if (!messageEndpoint.equals(pathInfo)) { + response.sendError(HttpServletResponse.SC_NOT_FOUND); + return; + } + + try { + BufferedReader reader = request.getReader(); + StringBuilder body = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + body.append(line); + } + + McpSchema.JSONRPCMessage message = McpSchema.deserializeJsonRpcMessage(objectMapper, body.toString()); + + if (connectHandler != null) { + connectHandler.apply(Mono.just(message)).subscribe(responseMessage -> { + try { + response.setContentType("application/json"); + response.setCharacterEncoding("UTF-8"); + String jsonResponse = objectMapper.writeValueAsString(responseMessage); + PrintWriter writer = response.getWriter(); + writer.write(jsonResponse); + writer.flush(); + } + catch (Exception e) { + logger.error("Error sending response: {}", e.getMessage()); + try { + response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, + "Error processing response: " + e.getMessage()); + } + catch (IOException ex) { + logger.error("Failed to send error response: {}", ex.getMessage()); + } + } + }, error -> { + try { + logger.error("Error processing message: {}", error.getMessage()); + McpError mcpError = new McpError(error.getMessage()); + response.setContentType("application/json"); + response.setCharacterEncoding("UTF-8"); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + String jsonError = objectMapper.writeValueAsString(mcpError); + PrintWriter writer = response.getWriter(); + writer.write(jsonError); + writer.flush(); + } + catch (IOException e) { + logger.error("Failed to send error response: {}", e.getMessage()); + try { + response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, + "Error sending error response: " + e.getMessage()); + } + catch (IOException ex) { + logger.error("Failed to send error response: {}", ex.getMessage()); + } + } + }); + } + else { + response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "No message handler configured"); + } + } + catch (Exception e) { + logger.error("Invalid message format: {}", e.getMessage()); + try { + McpError mcpError = new McpError("Invalid message format: " + e.getMessage()); + response.setContentType("application/json"); + response.setCharacterEncoding("UTF-8"); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + String jsonError = objectMapper.writeValueAsString(mcpError); + PrintWriter writer = response.getWriter(); + writer.write(jsonError); + writer.flush(); + } + catch (IOException ex) { + logger.error("Failed to send error response: {}", ex.getMessage()); + response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid message format"); + } + } + } + + @Override + public Mono connect(Function, Mono> handler) { + this.connectHandler = handler; + return Mono.empty(); + } + + @Override + public Mono sendMessage(McpSchema.JSONRPCMessage message) { + if (sessions.isEmpty()) { + logger.debug("No active sessions to broadcast message to"); + return Mono.empty(); + } + + return Mono.create(sink -> { + try { + String jsonText = objectMapper.writeValueAsString(message); + + sessions.values().forEach(session -> { + try { + sendEvent(session.writer, MESSAGE_EVENT_TYPE, jsonText); + } + catch (IOException e) { + logger.error("Failed to send message to session {}: {}", session.id, e.getMessage()); + removeSession(session); + } + }); + + sink.success(); + } + catch (Exception e) { + logger.error("Failed to process message: {}", e.getMessage()); + sink.error(new McpError("Failed to process message: " + e.getMessage())); + } + }); + } + + @Override + public void close() { + ServerMcpTransport.super.close(); + } + + @Override + public T unmarshalFrom(Object data, TypeReference typeRef) { + return objectMapper.convertValue(data, typeRef); + } + + @Override + public Mono closeGracefully() { + isClosing.set(true); + logger.debug("Initiating graceful shutdown with {} active sessions", sessions.size()); + + return Mono.create(sink -> { + sessions.values().forEach(this::removeSession); + sink.success(); + }); + } + + private void sendEvent(PrintWriter writer, String eventType, String data) throws IOException { + writer.write("event: " + eventType + "\n"); + writer.write("data: " + data + "\n\n"); + writer.flush(); + + if (writer.checkError()) { + throw new IOException("Client disconnected"); + } + } + + private void removeSession(ClientSession session) { + sessions.remove(session.id); + session.asyncContext.complete(); + } + + private static class ClientSession { + + private final String id; + + private final AsyncContext asyncContext; + + private final PrintWriter writer; + + ClientSession(String id, AsyncContext asyncContext, PrintWriter writer) { + this.id = id; + this.asyncContext = asyncContext; + this.writer = writer; + } + + } + + @Override + public void destroy() { + closeGracefully().block(); + super.destroy(); + } + +} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/MainSSE.java b/mcp/src/test/java/org/springframework/ai/mcp/attic/_MainSSE.java_ similarity index 100% rename from mcp/src/test/java/org/springframework/ai/mcp/attic/MainSSE.java rename to mcp/src/test/java/org/springframework/ai/mcp/attic/_MainSSE.java_ diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransportTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransportTests.java new file mode 100644 index 0000000..f50aeb3 --- /dev/null +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransportTests.java @@ -0,0 +1,290 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.client.transport; + +import java.time.Duration; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; +import reactor.core.publisher.Mono; +import reactor.core.publisher.Sinks; +import reactor.test.StepVerifier; + +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; +import org.springframework.http.codec.ServerSentEvent; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; + +/** + * Tests for the {@link HttpClientSseClientTransport} class. + * + * @author Christian Tzolov + */ +@Timeout(15) +class HttpClientSseClientTransportTests { + + static String host = "http://localhost:3001"; + + @SuppressWarnings("resource") + GenericContainer container = new GenericContainer<>("docker.io/tzolov/mcp-everything-server:v1") + .withLogConsumer(outputFrame -> System.out.println(outputFrame.getUtf8String())) + .withExposedPorts(3001) + .waitingFor(Wait.forHttp("/").forStatusCode(404)); + + private TestHttpClientSseClientTransport transport; + + // Test class to access protected methods + static class TestHttpClientSseClientTransport extends HttpClientSseClientTransport { + + private final AtomicInteger inboundMessageCount = new AtomicInteger(0); + + private Sinks.Many> events = Sinks.many().unicast().onBackpressureBuffer(); + + public TestHttpClientSseClientTransport(String baseUri) { + super(baseUri); + } + + public int getInboundMessageCount() { + return inboundMessageCount.get(); + } + + public void simulateEndpointEvent(String jsonMessage) { + events.tryEmitNext(ServerSentEvent.builder().event("endpoint").data(jsonMessage).build()); + inboundMessageCount.incrementAndGet(); + } + + public void simulateMessageEvent(String jsonMessage) { + events.tryEmitNext(ServerSentEvent.builder().event("message").data(jsonMessage).build()); + inboundMessageCount.incrementAndGet(); + } + + } + + void startContainer() { + container.start(); + int port = container.getMappedPort(3001); + host = "http://" + container.getHost() + ":" + port; + } + + @BeforeEach + void setUp() { + startContainer(); + transport = new TestHttpClientSseClientTransport(host); + transport.connect(Function.identity()).block(); + } + + @AfterEach + void afterEach() { + if (transport != null) { + assertThatCode(() -> transport.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); + } + cleanup(); + } + + void cleanup() { + container.stop(); + } + + @Test + void testMessageProcessing() { + // Create a test message + JSONRPCRequest testMessage = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "test-method", "test-id", + Map.of("key", "value")); + + // Simulate receiving the message + transport.simulateMessageEvent(""" + { + "jsonrpc": "2.0", + "method": "test-method", + "id": "test-id", + "params": {"key": "value"} + } + """); + + // Subscribe to messages and verify + StepVerifier.create(transport.sendMessage(testMessage)).verifyComplete(); + + assertThat(transport.getInboundMessageCount()).isEqualTo(1); + } + + @Test + void testResponseMessageProcessing() { + // Simulate receiving a response message + transport.simulateMessageEvent(""" + { + "jsonrpc": "2.0", + "id": "test-id", + "result": {"status": "success"} + } + """); + + // Create and send a request message + JSONRPCRequest testMessage = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "test-method", "test-id", + Map.of("key", "value")); + + // Verify message handling + StepVerifier.create(transport.sendMessage(testMessage)).verifyComplete(); + + assertThat(transport.getInboundMessageCount()).isEqualTo(1); + } + + @Test + void testErrorMessageProcessing() { + // Simulate receiving an error message + transport.simulateMessageEvent(""" + { + "jsonrpc": "2.0", + "id": "test-id", + "error": { + "code": -32600, + "message": "Invalid Request" + } + } + """); + + // Create and send a request message + JSONRPCRequest testMessage = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "test-method", "test-id", + Map.of("key", "value")); + + // Verify message handling + StepVerifier.create(transport.sendMessage(testMessage)).verifyComplete(); + + assertThat(transport.getInboundMessageCount()).isEqualTo(1); + } + + @Test + void testNotificationMessageProcessing() { + // Simulate receiving a notification message (no id) + transport.simulateMessageEvent(""" + { + "jsonrpc": "2.0", + "method": "update", + "params": {"status": "processing"} + } + """); + + // Verify the notification was processed + assertThat(transport.getInboundMessageCount()).isEqualTo(1); + } + + @Test + void testGracefulShutdown() { + // Test graceful shutdown + StepVerifier.create(transport.closeGracefully()).verifyComplete(); + + // Create a test message + JSONRPCRequest testMessage = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "test-method", "test-id", + Map.of("key", "value")); + + // Verify message is not processed after shutdown + StepVerifier.create(transport.sendMessage(testMessage)).verifyComplete(); + + // Message count should remain 0 after shutdown + assertThat(transport.getInboundMessageCount()).isEqualTo(0); + } + + @Test + void testRetryBehavior() { + // Create a client that simulates connection failures + HttpClientSseClientTransport failingTransport = new HttpClientSseClientTransport("http://non-existent-host"); + + // Verify that the transport attempts to reconnect + StepVerifier.create(Mono.delay(Duration.ofSeconds(2))).expectNextCount(1).verifyComplete(); + + // Clean up + failingTransport.closeGracefully().block(); + } + + @Test + void testMultipleMessageProcessing() { + // Simulate receiving multiple messages in sequence + transport.simulateMessageEvent(""" + { + "jsonrpc": "2.0", + "method": "method1", + "id": "id1", + "params": {"key": "value1"} + } + """); + + transport.simulateMessageEvent(""" + { + "jsonrpc": "2.0", + "method": "method2", + "id": "id2", + "params": {"key": "value2"} + } + """); + + // Create and send corresponding messages + JSONRPCRequest message1 = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "method1", "id1", + Map.of("key", "value1")); + + JSONRPCRequest message2 = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "method2", "id2", + Map.of("key", "value2")); + + // Verify both messages are processed + StepVerifier.create(transport.sendMessage(message1).then(transport.sendMessage(message2))).verifyComplete(); + + // Verify message count + assertThat(transport.getInboundMessageCount()).isEqualTo(2); + } + + @Test + void testMessageOrderPreservation() { + // Simulate receiving messages in a specific order + transport.simulateMessageEvent(""" + { + "jsonrpc": "2.0", + "method": "first", + "id": "1", + "params": {"sequence": 1} + } + """); + + transport.simulateMessageEvent(""" + { + "jsonrpc": "2.0", + "method": "second", + "id": "2", + "params": {"sequence": 2} + } + """); + + transport.simulateMessageEvent(""" + { + "jsonrpc": "2.0", + "method": "third", + "id": "3", + "params": {"sequence": 3} + } + """); + + // Verify message count and order + assertThat(transport.getInboundMessageCount()).isEqualTo(3); + } + +} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java index e51130f..7da6775 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java @@ -18,7 +18,6 @@ package org.springframework.ai.mcp.server; import java.time.Duration; import java.util.List; -import java.util.Map; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/_SseAsyncIntegrationTests.java_ similarity index 100% rename from mcp/src/test/java/org/springframework/ai/mcp/server/SseAsyncIntegrationTests.java rename to mcp/src/test/java/org/springframework/ai/mcp/server/_SseAsyncIntegrationTests.java_ diff --git a/pom.xml b/pom.xml index 6384d2b..29aee45 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ 17 17 - 1.0.0-M4 + 1.0.0-M5 3.26.3 5.10.2 5.11.0 @@ -100,9 +100,12 @@ mcp + mcp-transport/mcp-webflux-sse-transport + mcp-transport/mcp-webmvc-sse-transport spring-ai-mcp - spring-ai-mcp-sample mcp-docs + mcp-test + samples/spring-ai-mcp-sample diff --git a/spring-ai-mcp-sample/README.md b/samples/spring-ai-mcp-sample/README.md similarity index 100% rename from spring-ai-mcp-sample/README.md rename to samples/spring-ai-mcp-sample/README.md diff --git a/spring-ai-mcp-sample/pom.xml b/samples/spring-ai-mcp-sample/pom.xml similarity index 71% rename from spring-ai-mcp-sample/pom.xml rename to samples/spring-ai-mcp-sample/pom.xml index edc4671..578f803 100644 --- a/spring-ai-mcp-sample/pom.xml +++ b/samples/spring-ai-mcp-sample/pom.xml @@ -18,6 +18,11 @@ + + org.springframework.experimental + mcp-webflux-sse-transport + ${project.version} + org.springframework.experimental spring-ai-mcp @@ -29,6 +34,28 @@ spring-boot-starter-webflux ${spring-boot.version} + + + + org.springframework.boot diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse.java similarity index 82% rename from spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse.java rename to samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse.java index 50b47e3..d159755 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse.java +++ b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse.java @@ -15,7 +15,7 @@ */ package org.springframework.ai.mcp.sample.client; -import org.springframework.ai.mcp.client.transport.SseClientTransport; +import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; import org.springframework.web.reactive.function.client.WebClient; /** @@ -25,7 +25,7 @@ import org.springframework.web.reactive.function.client.WebClient; public class ClientSse { public static void main(String[] args) { - var transport = new SseClientTransport(WebClient.builder().baseUrl("http://localhost:8080")); + var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080")); new SampleClient(transport).run(); } diff --git a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse2.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse2.java new file mode 100644 index 0000000..174721f --- /dev/null +++ b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse2.java @@ -0,0 +1,32 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.sample.client; + +import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; + +/** + * @author Christian Tzolov + */ + +public class ClientSse2 { + + public static void main(String[] args) { + var transport = new HttpClientSseClientTransport("http://localhost:8080"); + + new SampleClient(transport).run(); + } + +} diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java similarity index 100% rename from spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java rename to samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java similarity index 100% rename from spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java rename to samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerApplication.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerApplication.java similarity index 100% rename from spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerApplication.java rename to samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerApplication.java diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java similarity index 85% rename from spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java rename to samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java index 08deb08..de7a95c 100644 --- a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java +++ b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java @@ -13,8 +13,8 @@ import org.springframework.ai.mcp.server.McpServer; import org.springframework.ai.mcp.server.McpServer.PromptRegistration; import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; import org.springframework.ai.mcp.server.McpServer.ToolRegistration; -import org.springframework.ai.mcp.server.transport.SseServerTransport; import org.springframework.ai.mcp.server.transport.StdioServerTransport; +import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; @@ -22,7 +22,6 @@ import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; import org.springframework.ai.mcp.spec.McpSchema.Role; import org.springframework.ai.mcp.spec.McpSchema.TextContent; -import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.ai.mcp.spring.ToolHelper; import org.springframework.ai.model.function.FunctionCallback; @@ -47,18 +46,55 @@ public class McpServerConfig { // SSE transport @Bean @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") - public SseServerTransport sseServerTransport() { - return new SseServerTransport(new ObjectMapper(), "/mcp/message"); + public WebFluxSseServerTransport sseServerTransport() { + return new WebFluxSseServerTransport(new ObjectMapper(), "/mcp/message"); } // Router function for SSE transport used by Spring WebFlux to start an HTTP // server. @Bean @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") - public RouterFunction mcpRouterFunction(SseServerTransport transport) { + public RouterFunction mcpRouterFunction(WebFluxSseServerTransport transport) { return transport.getRouterFunction(); } + // SSE transport + // @Bean + // @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse2") + // public HttpServletSseServerTransport sseServerTransport2() { + // var httpTransport = new HttpServletSseServerTransport(new ObjectMapper(), + // "/mcp/message"); + + // // Create and configure Jetty server + // Server server = new Server(8080); + + // ServletContextHandler context = new + // ServletContextHandler(ServletContextHandler.SESSIONS); + // context.setContextPath("/"); + // server.setHandler(context); + + // // Add our SSE servlet + // context.addServlet(new ServletHolder(httpTransport), "/sse"); + + // // Start the server + // try { + // server.start(); + // System.out.println("Server started on http://localhost:8080/sse"); + // server.join(); + // } + // catch (Exception e) { + // e.printStackTrace(); + // try { + // server.stop(); + // } + // catch (Exception e1) { + // e1.printStackTrace(); + // } + // } + + // return httpTransport; + // } + @Bean public McpAsyncServer mcpServer(ServerMcpTransport transport, OpenLibrary openLibrary) { // @formatter:off @@ -79,20 +115,20 @@ public class McpServerConfig { .tools(calculatorToolRegistration(), ToolHelper.toToolRegistration( FunctionCallback.builder() - .description("Get transaction payment status") .method("paymentTransactionStatus",String.class, String.class) + .description("Get transaction payment status") .targetClass(McpServerConfig.class) .build()), ToolHelper.toToolRegistration( FunctionCallback.builder() - .description("To upper case") - .function("toUpperCase", new Function() { - @Override - public String apply(String s) { - return s.toUpperCase(); - } - }) - .inputType(String.class) + .function("toUpperCase", new Function() { + @Override + public String apply(String s) { + return s.toUpperCase(); + } + }) + .description("To upper case") + .inputType(String.class) .build())) .tools(openLibraryToolRegistrations(openLibrary)) .async(); @@ -104,14 +140,14 @@ public class McpServerConfig { public static List openLibraryToolRegistrations(OpenLibrary openLibrary) { var books = FunctionCallback.builder() - .description("Get list of Books by title") .method("getBooks", String.class) + .description("Get list of Books by title") .targetObject(openLibrary) .build(); var bookTitlesByAuthor = FunctionCallback.builder() - .description("Get book titles by author") .method("getBookTitlesByAuthor", String.class) + .description("Get book titles by author") .targetObject(openLibrary) .build(); diff --git a/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java similarity index 100% rename from spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java rename to samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java diff --git a/spring-ai-mcp-sample/src/main/resources/application.properties b/samples/spring-ai-mcp-sample/src/main/resources/application.properties similarity index 87% rename from spring-ai-mcp-sample/src/main/resources/application.properties rename to samples/spring-ai-mcp-sample/src/main/resources/application.properties index 4a0226c..2530c58 100644 --- a/spring-ai-mcp-sample/src/main/resources/application.properties +++ b/samples/spring-ai-mcp-sample/src/main/resources/application.properties @@ -3,6 +3,6 @@ # NOTE: You must disable the banner and the console logging # to allow the STDIO transport to work !!! spring.main.banner-mode=off -logging.pattern.console= +# logging.pattern.console= transport.mode=sse \ No newline at end of file diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index 8b60b10..67c9404 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -24,12 +24,29 @@ org.springframework.ai spring-ai-core ${spring-ai.version} + + + org.springframework + spring-context + + + org.springframework + spring-messaging + + org.springframework.experimental mcp ${project.version} + + + org.springframework + spring-core + ${springframework.version} + + From 6311794bcd98419c4acab1b3e076ce532c1ec4f7 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 9 Jan 2025 16:48:36 +0100 Subject: [PATCH 038/505] Improve the samples code --- pom.xml | 1 + .../.mvn/wrapper/maven-wrapper.properties | 19 ++ samples/spring-ai-mcp-sample/README.md | 2 +- samples/spring-ai-mcp-sample/mvnw | 259 ++++++++++++++++ samples/spring-ai-mcp-sample/mvnw.cmd | 149 +++++++++ samples/spring-ai-mcp-sample/pom.xml | 50 +--- .../ai/mcp/sample/client/ClientStdio.java | 6 +- .../{ClientSse.java => ClientWebFluxSse.java} | 3 +- .../src/main/resources/application.properties | 2 +- .../.mvn/wrapper/maven-wrapper.properties | 19 ++ samples/spring-ai-mcp-webmvc-sample/README.md | 257 ++++++++++++++++ samples/spring-ai-mcp-webmvc-sample/mvnw | 259 ++++++++++++++++ samples/spring-ai-mcp-webmvc-sample/mvnw.cmd | 149 +++++++++ samples/spring-ai-mcp-webmvc-sample/pom.xml | 77 +++++ .../mcp/sample/webmvc/client/ClientStdio.java | 39 +++ .../sample/webmvc/client/HttpClientSse.java} | 5 +- .../sample/webmvc/client/SampleClient.java | 87 ++++++ .../webmvc/server/McpServerApplication.java | 13 + .../sample/webmvc/server/McpServerConfig.java | 282 ++++++++++++++++++ .../mcp/sample/webmvc/server/OpenLibrary.java | 74 +++++ .../src/main/resources/application.properties | 8 + spring-ai-mcp/pom.xml | 1 + 22 files changed, 1718 insertions(+), 43 deletions(-) create mode 100644 samples/spring-ai-mcp-sample/.mvn/wrapper/maven-wrapper.properties create mode 100755 samples/spring-ai-mcp-sample/mvnw create mode 100644 samples/spring-ai-mcp-sample/mvnw.cmd rename samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/{ClientSse.java => ClientWebFluxSse.java} (96%) create mode 100644 samples/spring-ai-mcp-webmvc-sample/.mvn/wrapper/maven-wrapper.properties create mode 100644 samples/spring-ai-mcp-webmvc-sample/README.md create mode 100755 samples/spring-ai-mcp-webmvc-sample/mvnw create mode 100644 samples/spring-ai-mcp-webmvc-sample/mvnw.cmd create mode 100644 samples/spring-ai-mcp-webmvc-sample/pom.xml create mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientStdio.java rename samples/{spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse2.java => spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/HttpClientSse.java} (91%) create mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/SampleClient.java create mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerApplication.java create mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java create mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/OpenLibrary.java create mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties diff --git a/pom.xml b/pom.xml index 29aee45..e72d9cf 100644 --- a/pom.xml +++ b/pom.xml @@ -106,6 +106,7 @@ mcp-docs mcp-test samples/spring-ai-mcp-sample + samples/spring-ai-mcp-webmvc-sample diff --git a/samples/spring-ai-mcp-sample/.mvn/wrapper/maven-wrapper.properties b/samples/spring-ai-mcp-sample/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..d58dfb7 --- /dev/null +++ b/samples/spring-ai-mcp-sample/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +wrapperVersion=3.3.2 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/samples/spring-ai-mcp-sample/README.md b/samples/spring-ai-mcp-sample/README.md index 9cf76f9..526bede 100644 --- a/samples/spring-ai-mcp-sample/README.md +++ b/samples/spring-ai-mcp-sample/README.md @@ -56,7 +56,7 @@ var transport = new StdioClientTransport(stdioParams); var client = McpClient.using(transport).sync(); ``` -### SSE Client (ClientSse.java) +### SSE Client (ClientWebFluxSse.java) ```java var transport = new SseClientTransport(WebClient.builder().baseUrl("http://localhost:8080")); var client = McpClient.using(transport).sync(); diff --git a/samples/spring-ai-mcp-sample/mvnw b/samples/spring-ai-mcp-sample/mvnw new file mode 100755 index 0000000..19529dd --- /dev/null +++ b/samples/spring-ai-mcp-sample/mvnw @@ -0,0 +1,259 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.3.2 +# +# Optional ENV vars +# ----------------- +# JAVA_HOME - location of a JDK home dir, required when download maven via java source +# MVNW_REPOURL - repo url base for downloading maven distribution +# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output +# ---------------------------------------------------------------------------- + +set -euf +[ "${MVNW_VERBOSE-}" != debug ] || set -x + +# OS specific support. +native_path() { printf %s\\n "$1"; } +case "$(uname)" in +CYGWIN* | MINGW*) + [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" + native_path() { cygpath --path --windows "$1"; } + ;; +esac + +# set JAVACMD and JAVACCMD +set_java_home() { + # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched + if [ -n "${JAVA_HOME-}" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACCMD="$JAVA_HOME/jre/sh/javac" + else + JAVACMD="$JAVA_HOME/bin/java" + JAVACCMD="$JAVA_HOME/bin/javac" + + if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then + echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; + esac +done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/samples/spring-ai-mcp-sample/mvnw.cmd b/samples/spring-ai-mcp-sample/mvnw.cmd new file mode 100644 index 0000000..249bdf3 --- /dev/null +++ b/samples/spring-ai-mcp-sample/mvnw.cmd @@ -0,0 +1,149 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.2 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' +$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" +if ($env:MAVEN_USER_HOME) { + $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" +} +$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/samples/spring-ai-mcp-sample/pom.xml b/samples/spring-ai-mcp-sample/pom.xml index 578f803..fc3c40b 100644 --- a/samples/spring-ai-mcp-sample/pom.xml +++ b/samples/spring-ai-mcp-sample/pom.xml @@ -3,64 +3,45 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - org.springframework.experimental - mcp-parent - 0.5.0-SNAPSHOT - + + org.springframework.boot + spring-boot-starter-parent + 3.4.1 + + + org.springframework.experimental spring-ai-mcp-sample - Spring AI MCP Sample + 0.5.0-SNAPSHOT + + Spring AI MCP StdIO and WebFluxSSE Sample Sample Spring Boot application demonstrating MCP server usage - 3.4.1 + 0.5.0-SNAPSHOT org.springframework.experimental mcp-webflux-sse-transport - ${project.version} + ${spring-ai-mcp.version} + org.springframework.experimental spring-ai-mcp - ${project.version} + ${spring-ai-mcp.version} org.springframework.boot spring-boot-starter-webflux - ${spring-boot.version} - - - - org.springframework.boot spring-boot-starter-test - ${spring-boot.version} test @@ -69,8 +50,7 @@ org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} + spring-boot-maven-plugin diff --git a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java index d510c72..74d0e44 100644 --- a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java +++ b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java @@ -15,6 +15,8 @@ */ package org.springframework.ai.mcp.sample.client; +import java.io.File; + import org.springframework.ai.mcp.client.transport.ServerParameters; import org.springframework.ai.mcp.client.transport.StdioClientTransport; @@ -26,9 +28,11 @@ public class ClientStdio { public static void main(String[] args) { + System.out.println(new File(".").getAbsolutePath()); + var stdioParams = ServerParameters.builder("java") .args("-Dtransport.mode=stdio", "-jar", - "spring-ai-mcp-sample/target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar") + "samples/spring-ai-mcp-sample/target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar") .build(); var transport = new StdioClientTransport(stdioParams); diff --git a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientWebFluxSse.java similarity index 96% rename from samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse.java rename to samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientWebFluxSse.java index d159755..de0b211 100644 --- a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse.java +++ b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientWebFluxSse.java @@ -21,8 +21,7 @@ import org.springframework.web.reactive.function.client.WebClient; /** * @author Christian Tzolov */ - -public class ClientSse { +public class ClientWebFluxSse { public static void main(String[] args) { var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080")); diff --git a/samples/spring-ai-mcp-sample/src/main/resources/application.properties b/samples/spring-ai-mcp-sample/src/main/resources/application.properties index 2530c58..4a0226c 100644 --- a/samples/spring-ai-mcp-sample/src/main/resources/application.properties +++ b/samples/spring-ai-mcp-sample/src/main/resources/application.properties @@ -3,6 +3,6 @@ # NOTE: You must disable the banner and the console logging # to allow the STDIO transport to work !!! spring.main.banner-mode=off -# logging.pattern.console= +logging.pattern.console= transport.mode=sse \ No newline at end of file diff --git a/samples/spring-ai-mcp-webmvc-sample/.mvn/wrapper/maven-wrapper.properties b/samples/spring-ai-mcp-webmvc-sample/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..d58dfb7 --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +wrapperVersion=3.3.2 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/samples/spring-ai-mcp-webmvc-sample/README.md b/samples/spring-ai-mcp-webmvc-sample/README.md new file mode 100644 index 0000000..9cf76f9 --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/README.md @@ -0,0 +1,257 @@ +# Spring AI MCP Sample Project + +This sample project demonstrates the usage of the Spring AI Model Context Protocol (MCP) implementation. It showcases how to create and use MCP servers and clients with different transport modes and capabilities. + +## Overview + +The sample provides: +- Two transport mode implementations: Stdio and SSE (Server-Sent Events) +- Server capabilities: + - Tools support with list changes notifications + - Resources support with list changes notifications (no subscribe support) + - Prompts support with list changes notifications +- Sample implementations: + - Two MCP tools: Weather and Calculator + - One MCP resource: System Information + - One MCP prompt: Greeting + +## Building the Project + +```bash +./mvnw clean package +``` + +## Running the Server + +The server can be started in two transport modes, controlled by the `transport.mode` property: + +### Stdio Mode (Default) + +```bash +java -Dtransport.mode=stdio -jar target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar +``` + +The Stdio mode server is automatically started by the client - no explicit server startup is needed. +But you have to build the server jar first: `./mvnw clean install -DskipTests`. + +In Stdio mode the server must not emit any messages/logs to the console (e.g. standard out) but the JSON messages produced by the server. + +### SSE Mode +```bash +java -Dtransport.mode=sse -jar target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar +``` + +## Sample Clients + +The project includes example clients for both transport modes: + +### Stdio Client (ClientStdio.java) +```java +var stdioParams = ServerParameters.builder("java") + .args("-Dtransport.mode=stdio", "-jar", + "target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar") + .build(); + +var transport = new StdioClientTransport(stdioParams); +var client = McpClient.using(transport).sync(); +``` + +### SSE Client (ClientSse.java) +```java +var transport = new SseClientTransport(WebClient.builder().baseUrl("http://localhost:8080")); +var client = McpClient.using(transport).sync(); +``` + +## Available Tools + +### Weather Tool +- Name: `weather` +- Description: Weather forecast tool by location +- Parameters: + - `city`: String - The city to get weather for +- Example: +```java +CallToolResult response = client.callTool( + new CallToolRequest("weather", Map.of("city", "Sofia")) +); +``` + +### Calculator Tool +- Name: `calculator` +- Description: Performs basic arithmetic operations +- Parameters (JSON Schema): + ```json + { + "operation": { + "type": "string", + "enum": ["add", "subtract", "multiply", "divide"], + "description": "The arithmetic operation to perform" + }, + "a": { + "type": "number", + "description": "First operand" + }, + "b": { + "type": "number", + "description": "Second operand" + } + } + ``` +- Example: +```java +CallToolResult response = client.callTool( + new CallToolRequest("calculator", + Map.of("operation", "multiply", "a", 2.0, "b", 3.0)) +); +``` + +## Available Resources + +### System Information Resource +- URI: `system://info` +- Description: Provides basic system information including Java version, OS, etc. +- MIME Type: application/json +- Returns: JSON object containing: javaVersion, osName, osVersion, osArch, processors, timestamp + +## Available Prompts + +### Greeting Prompt +- Name: `greeting` +- Description: A friendly greeting prompt +- Parameters: + - `name`: String (required) - The name to greet +- Returns: A personalized greeting message from an assistant + +## Client Usage Example + +```java +// Initialize client +client.initialize(); + +// Test connection +client.ping(); + +// List available tools +ListToolsResult tools = client.listTools(); +System.out.println("Available tools: " + tools); + +// Call weather tool +CallToolResult weather = client.callTool( + new CallToolRequest("weather", Map.of("city", "Sofia")) +); +System.out.println("Weather: " + weather); + +// Call calculator tool +CallToolResult calc = client.callTool( + new CallToolRequest("calculator", + Map.of("operation", "multiply", "a", 2.0, "b", 3.0)) +); +System.out.println("Calculation: " + calc); + +// Access system info resource +ReadResourceResult sysInfo = client.readResource( + new ReadResourceRequest("system://info") +); +System.out.println("System Info: " + sysInfo); + +// Use greeting prompt +GetPromptResult greeting = client.getPrompt( + new GetPromptRequest("greeting", Map.of("name", "John")) +); +System.out.println("Greeting: " + greeting); + +// Close client +client.closeGracefully(); +``` + +## Server Usage Example + +```java +@Configuration +public class CustomMcpServerConfig { + @Bean + public McpAsyncServer mcpServer(McpTransport transport) { + // Configure server capabilities + var capabilities = McpSchema.ServerCapabilities.builder() + .resources(false, true) // Resource support with list changes notifications + .tools(true) // Tool support with list changes notifications + .prompts(true) // Prompt support with list changes notifications + .build(); + + // Create custom tool + var customTool = new ToolRegistration( + new McpSchema.Tool("custom-tool", "Description", Map.of("param", "String")), + (arguments) -> { + String param = (String) arguments.get("param"); + return new CallToolResult( + List.of(new TextContent("Result: " + param)), + false + ); + } + ); + + // Create custom resource + var customResource = new ResourceRegistration( + new McpSchema.Resource( + "custom://resource", + "Custom Resource", + "Description", + "application/json", + null + ), + (request) -> new ReadResourceResult( + List.of(new TextResourceContents( + request.uri(), + "application/json", + "{\"data\": \"example\"}" + )) + ) + ); + + // Create custom prompt + var customPrompt = new PromptRegistration( + new McpSchema.Prompt( + "custom-prompt", + "Description", + List.of(new McpSchema.PromptArgument("input", "Description", true)) + ), + request -> { + String input = (String) request.arguments().get("input"); + var message = new PromptMessage( + Role.ASSISTANT, + new TextContent("Response to: " + input) + ); + return new GetPromptResult("Result", List.of(message)); + } + ); + + // Create and configure the server + return McpServer.using(transport) + .info("Custom MCP Server", "1.0.0") + .capabilities(capabilities) + .tools(List.of(customTool)) + .resources(Map.of("custom://resource", customResource)) + .prompts(List.of(customPrompt)) + .async(); + } +} +``` + +## Configuration + +The application can be configured through `application.properties`: + +- `transport.mode`: Transport mode to use (stdio/sse) +- `server.port`: Server port for SSE mode (default: 8080) +- Various logging configurations are available for debugging + +## Implementation Details + +The sample demonstrates: +- Creating an MCP server with custom tools, resources, and prompts +- Configuring different transport modes +- Implementing tool handlers with JSON schema validation +- Resource implementations with dynamic content generation +- Prompt implementations with parameter handling +- Error handling and response formatting +- Synchronous client usage patterns diff --git a/samples/spring-ai-mcp-webmvc-sample/mvnw b/samples/spring-ai-mcp-webmvc-sample/mvnw new file mode 100755 index 0000000..19529dd --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/mvnw @@ -0,0 +1,259 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.3.2 +# +# Optional ENV vars +# ----------------- +# JAVA_HOME - location of a JDK home dir, required when download maven via java source +# MVNW_REPOURL - repo url base for downloading maven distribution +# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output +# ---------------------------------------------------------------------------- + +set -euf +[ "${MVNW_VERBOSE-}" != debug ] || set -x + +# OS specific support. +native_path() { printf %s\\n "$1"; } +case "$(uname)" in +CYGWIN* | MINGW*) + [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" + native_path() { cygpath --path --windows "$1"; } + ;; +esac + +# set JAVACMD and JAVACCMD +set_java_home() { + # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched + if [ -n "${JAVA_HOME-}" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACCMD="$JAVA_HOME/jre/sh/javac" + else + JAVACMD="$JAVA_HOME/bin/java" + JAVACCMD="$JAVA_HOME/bin/javac" + + if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then + echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; + esac +done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/samples/spring-ai-mcp-webmvc-sample/mvnw.cmd b/samples/spring-ai-mcp-webmvc-sample/mvnw.cmd new file mode 100644 index 0000000..249bdf3 --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/mvnw.cmd @@ -0,0 +1,149 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.2 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' +$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" +if ($env:MAVEN_USER_HOME) { + $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" +} +$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/samples/spring-ai-mcp-webmvc-sample/pom.xml b/samples/spring-ai-mcp-webmvc-sample/pom.xml new file mode 100644 index 0000000..f99d2b3 --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.4.1 + + + + org.springframework.experimental + spring-ai-mcp-webmvc-sample + 0.5.0-SNAPSHOT + + Spring AI MCP Sample + Sample Spring Boot application demonstrating MCP server usage + + + 0.5.0-SNAPSHOT + + + + + org.springframework.experimental + mcp-webmvc-sse-transport + ${spring-ai-mcp.version} + + + org.springframework.experimental + spring-ai-mcp + ${spring-ai-mcp.version} + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + io.spring.javaformat + spring-javaformat-maven-plugin + 0.0.43 + + + validate + true + + validate + + + + + + + \ No newline at end of file diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientStdio.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientStdio.java new file mode 100644 index 0000000..2a6b3bf --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientStdio.java @@ -0,0 +1,39 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.sample.webmvc.client; + +import org.springframework.ai.mcp.client.transport.ServerParameters; +import org.springframework.ai.mcp.client.transport.StdioClientTransport; + +/** + * With stdio transport, the MCP server is automatically started by the client. But you + * have to build the server jar first:
    ./mvnw clean install -DskipTests
    + */ +public class ClientStdio { + + public static void main(String[] args) { + + var stdioParams = ServerParameters.builder("java") + .args("-Dtransport.mode=stdio", "-jar", + "spring-ai-mcp-webmvc-sample/target/spring-ai-mcp-webmvc-sample-0.5.0-SNAPSHOT.jar") + .build(); + + var transport = new StdioClientTransport(stdioParams); + + new SampleClient(transport).run(); + } + +} diff --git a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse2.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/HttpClientSse.java similarity index 91% rename from samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse2.java rename to samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/HttpClientSse.java index 174721f..27f7964 100644 --- a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientSse2.java +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/HttpClientSse.java @@ -13,15 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.sample.client; +package org.springframework.ai.mcp.sample.webmvc.client; import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; /** * @author Christian Tzolov */ - -public class ClientSse2 { +public class HttpClientSse { public static void main(String[] args) { var transport = new HttpClientSseClientTransport("http://localhost:8080"); diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/SampleClient.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/SampleClient.java new file mode 100644 index 0000000..d9a29f6 --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/SampleClient.java @@ -0,0 +1,87 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.sample.webmvc.client; + +import java.util.Map; + +import org.springframework.ai.mcp.client.McpClient; +import org.springframework.ai.mcp.spec.ClientMcpTransport; +import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; +import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; +import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; +import org.springframework.ai.mcp.spec.McpSchema.ListPromptsResult; +import org.springframework.ai.mcp.spec.McpSchema.ListToolsResult; +import org.springframework.ai.mcp.spec.McpSchema.ReadResourceRequest; + +/** + * @author Christian Tzolov + */ + +public class SampleClient { + + private final ClientMcpTransport transport; + + public SampleClient(ClientMcpTransport transport) { + this.transport = transport; + } + + public void run() { + + var client = McpClient.using(this.transport).sync(); + + client.initialize(); + + client.ping(); + + // List and demonstrate tools + ListToolsResult toolsList = client.listTools(); + System.out.println("Available Tools = " + toolsList); + + CallToolResult weatherResponse = client.callTool(new CallToolRequest("weather", Map.of("city", "Sofia"))); + System.out.println("Weather Response = " + weatherResponse); + + CallToolResult calcResponse = client + .callTool(new CallToolRequest("calculator", Map.of("operation", "multiply", "a", 2.0, "b", 3.0))); + System.out.println("Calculator Response = " + calcResponse); + + CallToolResult paymentStatus = client.callTool( + new CallToolRequest("paymentTransactionStatus", Map.of("transactionId", "006", "accountName", "John"))); + System.out.println("Payment Status Response = " + paymentStatus); + + CallToolResult parks = client.callTool(new CallToolRequest("getBooks", Map.of("title", "Spring Framework"))); + System.out.println("Books Response = " + parks); + + // List and demonstrate resources + var resourcesList = client.listResources(); + System.out.println("\nAvailable Resources = " + resourcesList); + + // Read the system info resource + var systemInfo = client.readResource(new ReadResourceRequest("system://info")); + System.out.println("System Info = " + systemInfo); + + // List and demonstrate prompts + ListPromptsResult promptsList = client.listPrompts(); + System.out.println("\nAvailable Prompts = " + promptsList); + + // Try the greeting prompt + var greetingResponse = client.getPrompt(new GetPromptRequest("greeting", Map.of("name", "Spring"))); + System.out.println("Greeting Response = " + greetingResponse); + + client.closeGracefully(); + + } + +} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerApplication.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerApplication.java new file mode 100644 index 0000000..82f80de --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerApplication.java @@ -0,0 +1,13 @@ +package org.springframework.ai.mcp.sample.webmvc.server; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class McpServerApplication { + + public static void main(String[] args) { + SpringApplication.run(McpServerApplication.class, args); + } + +} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java new file mode 100644 index 0000000..be2ea57 --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java @@ -0,0 +1,282 @@ +package org.springframework.ai.mcp.sample.webmvc.server; + +import java.util.List; +import java.util.Map; +import java.util.function.Function; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.ai.mcp.server.McpAsyncServer; +import org.springframework.ai.mcp.server.McpServer; +import org.springframework.ai.mcp.server.McpServer.PromptRegistration; +import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; +import org.springframework.ai.mcp.server.McpServer.ToolRegistration; +import org.springframework.ai.mcp.server.transport.StdioServerTransport; +import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; +import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; +import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; +import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; +import org.springframework.ai.mcp.spec.McpSchema.Role; +import org.springframework.ai.mcp.spec.McpSchema.TextContent; +import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.springframework.ai.mcp.spring.ToolHelper; +import org.springframework.ai.model.function.FunctionCallback; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestClient; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.servlet.function.RouterFunction; +import org.springframework.web.servlet.function.ServerResponse; + +@Configuration +@EnableWebMvc +public class McpServerConfig implements WebMvcConfigurer { + + @Override + public void configureMessageConverters(List> converters) { + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); + converter.setSupportedMediaTypes(List.of(org.springframework.http.MediaType.APPLICATION_JSON, + org.springframework.http.MediaType.TEXT_EVENT_STREAM)); + converters.add(converter); + } + + private static final Logger logger = LoggerFactory.getLogger(McpServerConfig.class); + + @Bean + @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") + public WebMvcSseServerTransport webMvcSseServerTransport() { + return new WebMvcSseServerTransport(new ObjectMapper(), "/mcp/message"); + } + + @Bean + @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") + public RouterFunction routerFunction(WebMvcSseServerTransport transport) { + return transport.getRouterFunction(); + } + + // STDIO transport + @Bean + @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "stdio") + public StdioServerTransport stdioServerTransport() { + return new StdioServerTransport(); + } + + @Bean + public McpAsyncServer mcpServer(ServerMcpTransport transport, OpenLibrary openLibrary) { // @formatter:off + + // Configure server capabilities with resource support + var capabilities = McpSchema.ServerCapabilities.builder() + .resources(false, true) // No subscribe support, but list changes notifications + .tools(true) // Tool support with list changes notifications + .prompts(true) // Prompt support with list changes notifications + .logging() // Logging support + .build(); + + // Create the server with both tool and resource capabilities + var server = McpServer.using(transport) + .serverInfo("MCP Demo Server", "1.0.0") + .capabilities(capabilities) + .resources(systemInfoResourceRegistration()) + .prompts(greetingPromptRegistration()) + .tools(calculatorToolRegistration(), + ToolHelper.toToolRegistration( + FunctionCallback.builder() + .method("paymentTransactionStatus",String.class, String.class) + .description("Get transaction payment status") + .targetClass(McpServerConfig.class) + .build()), + ToolHelper.toToolRegistration( + FunctionCallback.builder() + .function("toUpperCase", new Function() { + @Override + public String apply(String s) { + return s.toUpperCase(); + } + }) + .description("To upper case") + .inputType(String.class) + .build())) + .tools(openLibraryToolRegistrations(openLibrary)) + .async(); + + server.addTool(weatherToolRegistration(server)); + return server; // @formatter:on + } // @formatter:on + + public static List openLibraryToolRegistrations(OpenLibrary openLibrary) { + + var books = FunctionCallback.builder() + .method("getBooks", String.class) + .description("Get list of Books by title") + .targetObject(openLibrary) + .build(); + + var bookTitlesByAuthor = FunctionCallback.builder() + .method("getBookTitlesByAuthor", String.class) + .description("Get book titles by author") + .targetObject(openLibrary) + .build(); + + return ToolHelper.toToolRegistration(books, bookTitlesByAuthor); + } + + private static ResourceRegistration systemInfoResourceRegistration() { + + // Create a resource registration for system information + var systemInfoResource = new McpSchema.Resource( // @formatter:off + "system://info", + "System Information", + "Provides basic system information including Java version, OS, etc.", + "application/json", null + ); + + var resourceRegistration = new ResourceRegistration(systemInfoResource, (request) -> { + try { + var systemInfo = Map.of( + "javaVersion", System.getProperty("java.version"), + "osName", System.getProperty("os.name"), + "osVersion", System.getProperty("os.version"), + "osArch", System.getProperty("os.arch"), + "processors", Runtime.getRuntime().availableProcessors(), + "timestamp", System.currentTimeMillis()); + + String jsonContent = new ObjectMapper().writeValueAsString(systemInfo); + + return new McpSchema.ReadResourceResult( + List.of(new McpSchema.TextResourceContents(request.uri(), "application/json", jsonContent))); + } + catch (Exception e) { + throw new RuntimeException("Failed to generate system info", e); + } + }); // @formatter:on + + return resourceRegistration; + } + + private static PromptRegistration greetingPromptRegistration() { + + var prompt = new McpSchema.Prompt("greeting", "A friendly greeting prompt", + List.of(new McpSchema.PromptArgument("name", "The name to greet", true))); + + return new PromptRegistration(prompt, getPromptRequest -> { + + String nameArgument = (String) getPromptRequest.arguments().get("name"); + if (nameArgument == null) { + nameArgument = "friend"; + } + + var userMessage = new PromptMessage(Role.USER, + new TextContent("Hello " + nameArgument + "! How can I assist you today?")); + + return new GetPromptResult("A personalized greeting message", List.of(userMessage)); + }); + } + + private static ToolRegistration weatherToolRegistration(McpAsyncServer server) { + String emptyJsonSchema = """ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {"city" : "string"} + } + """; + return new ToolRegistration(new McpSchema.Tool("weather", "Weather forecast tool by location", emptyJsonSchema), + (arguments) -> { + String city = (String) arguments.get("city"); + + // Create the result + var result = new CallToolResult( + List.of(new TextContent("Weather forecast for " + city + " is sunny")), false); + + // Send the logging notification and ignore its completion + server + .loggingNotification(LoggingMessageNotification.builder() + .data("This is a log message from the weather tool") + .build()) + .subscribe(null, error -> { + // Log any errors but don't fail the operation + logger.error("Failed to send logging notification", error); + }); + + return result; + }); + } + + private static ToolRegistration calculatorToolRegistration() { + return new ToolRegistration(new McpSchema.Tool("calculator", + "Performs basic arithmetic operations (add, subtract, multiply, divide)", """ + { + "type": "object", + "properties": { + "operation": { + "type": "string", + "enum": ["add", "subtract", "multiply", "divide"], + "description": "The arithmetic operation to perform" + }, + "a": { + "type": "number", + "description": "First operand" + }, + "b": { + "type": "number", + "description": "Second operand" + } + }, + "required": ["operation", "a", "b"] + } + """), arguments -> { + String operation = (String) arguments.get("operation"); + double a = (Double) arguments.get("a"); + double b = (Double) arguments.get("b"); + + double result; + switch (operation) { + case "add": + result = a + b; + break; + case "subtract": + result = a - b; + break; + case "multiply": + result = a * b; + break; + case "divide": + if (b == 0) { + return new McpSchema.CallToolResult( + java.util.List.of(new McpSchema.TextContent("Division by zero")), true); + } + result = a / b; + break; + default: + return new McpSchema.CallToolResult( + java.util.List.of(new McpSchema.TextContent("Unknown operation: " + operation)), + true); + } + + return new McpSchema.CallToolResult( + java.util.List.of(new McpSchema.TextContent(String.valueOf(result))), false); + }); + } + + public static String paymentTransactionStatus(String transactionId, String accountName) { + return "The status for " + transactionId + ", by " + accountName + " is PENDING"; + } + + public Function toUpperCase() { + return String::toUpperCase; + } + + @Bean + public OpenLibrary openLibrary() { + return new OpenLibrary(RestClient.builder()); + } + +} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/OpenLibrary.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/OpenLibrary.java new file mode 100644 index 0000000..3dfe835 --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/OpenLibrary.java @@ -0,0 +1,74 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.sample.webmvc.server; + +import java.util.List; +import java.util.Map; + +import org.springframework.web.client.RestClient; + +/** + * @author Christian Tzolov + */ + +public class OpenLibrary { + + private RestClient restClient; + + public OpenLibrary(RestClient.Builder restClientBuilder) { + this.restClient = restClientBuilder.baseUrl("https://openlibrary.org").build(); + } + + public record Books(Integer numFound, Integer start, Boolean numFoundExact, List> docs) { + } + + public record Book(List isbn, String title, List authorName) { + } + + public List getBooks(String title) { + Books books = restClient.get() + .uri(uriBuilder -> uriBuilder.path("/search.json").queryParam("q", title).build()) + .retrieve() + .body(Books.class); + if (books == null) { + return List.of(); + } + return books.docs.stream() + .map(doc -> new Book((List) doc.get("isbn"), (String) doc.get("title"), + (List) doc.get("author_name"))) + .toList(); + } + + public List getBookTitlesByAuthor(String authorName) { + var books = restClient.get() + .uri(uriBuilder -> uriBuilder.path("/search/authors.json").queryParam("q", authorName).build()) + .retrieve() + .body(Books.class); + if (books == null) { + return List.of(); + } + return books.docs.stream().map(doc -> (String) doc.get("top_work")).toList(); + } + + public static void main(String[] args) { + OpenLibrary openLibrary = new OpenLibrary(RestClient.builder()); + List books = openLibrary.getBooks("Spring Framework"); + System.out.println(books); + List booksByAuthor = openLibrary.getBookTitlesByAuthor("Craig Walls"); + System.out.println(booksByAuthor); + } + +} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties b/samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties new file mode 100644 index 0000000..2530c58 --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties @@ -0,0 +1,8 @@ +# spring.main.web-application-type=none + +# NOTE: You must disable the banner and the console logging +# to allow the STDIO transport to work !!! +spring.main.banner-mode=off +# logging.pattern.console= + +transport.mode=sse \ No newline at end of file diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index 67c9404..b19e570 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -35,6 +35,7 @@ + org.springframework.experimental mcp From 37029523cb5aa8b3cc720587d66afc5b083b50c8 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 9 Jan 2025 18:30:34 +0100 Subject: [PATCH 039/505] imporve test logging configuraitons --- .../src/test/resources/logback.xml | 25 +++++++++++++++++++ .../src/test/resources/logback.xml | 24 ++++++++++++++++++ mcp/src/test/resources/logback.xml | 7 ------ 3 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 mcp-transport/mcp-webflux-sse-transport/src/test/resources/logback.xml create mode 100644 mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/resources/logback.xml b/mcp-transport/mcp-webflux-sse-transport/src/test/resources/logback.xml new file mode 100644 index 0000000..5ad7337 --- /dev/null +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/resources/logback.xml @@ -0,0 +1,25 @@ + + + + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + + + + + diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml b/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml new file mode 100644 index 0000000..0246d6c --- /dev/null +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml @@ -0,0 +1,24 @@ + + + + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + + + + diff --git a/mcp/src/test/resources/logback.xml b/mcp/src/test/resources/logback.xml index 84e350d..0246d6c 100644 --- a/mcp/src/test/resources/logback.xml +++ b/mcp/src/test/resources/logback.xml @@ -13,17 +13,10 @@ - - - - - - - From 05b572b8550a175af81c041421dc1d3b273f2b8d Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 9 Jan 2025 19:32:28 +0100 Subject: [PATCH 040/505] Update tomcat test version --- mcp-transport/mcp-webmvc-sse-transport/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcp-transport/mcp-webmvc-sse-transport/pom.xml b/mcp-transport/mcp-webmvc-sse-transport/pom.xml index d86eb42..c612a4c 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/pom.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/pom.xml @@ -118,7 +118,7 @@ org.apache.tomcat.embed tomcat-embed-core - 10.1.18 + 11.0.2 test From 5058b0840632a74fc4eb21a5f569cad16cd9dc0e Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 9 Jan 2025 19:50:38 +0100 Subject: [PATCH 041/505] Make samples self-contained boot projects --- pom.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pom.xml b/pom.xml index e72d9cf..1b63284 100644 --- a/pom.xml +++ b/pom.xml @@ -105,8 +105,6 @@ spring-ai-mcp mcp-docs mcp-test - samples/spring-ai-mcp-sample - samples/spring-ai-mcp-webmvc-sample From edbd78465c37fbce9c89f0c904f0d71efb8aaa1b Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 11 Jan 2025 14:55:52 +0100 Subject: [PATCH 042/505] refactor(transport): Replace SseEmitter with queue-based SSE implementation in WebMvc transport Replaces Spring's SseEmitter with a custom BlockingQueue-based SSE implementation in WebMvcSseServerTransport for improved event delivery control and connection management. The new implementation: - Uses BlockingQueue for reliable event queuing and delivery - Adds proper session management with dedicated SSEEvent record - Improves error handling and timeout management - Adds comprehensive integration tests Resolves #57 --- .../mcp-webflux-sse-transport/pom.xml | 9 +- ...s.java => WebFluxSseIntegrationTests.java} | 81 ++- .../transport/WebMvcSseServerTransport.java | 142 +++-- .../mcp/server/WebMvcSseIntegrationTests.java | 524 ++++++++++++++++++ .../src/test/resources/logback.xml | 9 +- .../HttpClientSseClientTransport.java | 4 +- .../ai/mcp/attic}/SSEClient.java | 2 +- pom.xml | 2 + samples/spring-ai-mcp-webmvc-sample/pom.xml | 7 + .../webmvc/client/ClientWebFluxSse.java | 32 ++ ...tion.java => McpMvcServerApplication.java} | 4 +- .../sample/webmvc/server/McpServerConfig.java | 10 - .../src/main/resources/application.properties | 4 +- 13 files changed, 726 insertions(+), 104 deletions(-) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/{server/WebFluxSseAsyncIntegrationTests.java => WebFluxSseIntegrationTests.java} (84%) create mode 100644 mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java rename mcp/src/{main/java/org/springframework/ai/mcp/client/transport => test/java/org/springframework/ai/mcp/attic}/SSEClient.java (98%) create mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientWebFluxSse.java rename samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/{McpServerApplication.java => McpMvcServerApplication.java} (71%) diff --git a/mcp-transport/mcp-webflux-sse-transport/pom.xml b/mcp-transport/mcp-webflux-sse-transport/pom.xml index a4150e2..1dae71c 100644 --- a/mcp-transport/mcp-webflux-sse-transport/pom.xml +++ b/mcp-transport/mcp-webflux-sse-transport/pom.xml @@ -108,7 +108,14 @@ test + + org.junit.jupiter + junit-jupiter-params + ${junit-jupiter.version} + test + + - \ No newline at end of file + diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseAsyncIntegrationTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/WebFluxSseIntegrationTests.java similarity index 84% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseAsyncIntegrationTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/WebFluxSseIntegrationTests.java index d9d601f..1e3c11a 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseAsyncIntegrationTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/WebFluxSseIntegrationTests.java @@ -13,11 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.springframework.ai.mcp; import java.time.Duration; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; @@ -25,12 +26,16 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; import reactor.test.StepVerifier; import org.springframework.ai.mcp.client.McpClient; +import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; +import org.springframework.ai.mcp.server.McpServer; import org.springframework.ai.mcp.server.McpServer.ToolRegistration; import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; import org.springframework.ai.mcp.spec.McpError; @@ -54,7 +59,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.awaitility.Awaitility.await; -public class WebFluxSseAsyncIntegrationTests { +public class WebFluxSseIntegrationTests { private static final int PORT = 8182; @@ -64,18 +69,21 @@ public class WebFluxSseAsyncIntegrationTests { private WebFluxSseServerTransport mcpServerTransport; - McpClient.Builder clientBuilder; + ConcurrentHashMap clientBulders = new ConcurrentHashMap<>(); @BeforeEach public void before() { + this.mcpServerTransport = new WebFluxSseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); HttpHandler httpHandler = RouterFunctions.toHttpHandler(mcpServerTransport.getRouterFunction()); ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); this.httpServer = HttpServer.create().port(PORT).handle(adapter).bindNow(); - this.clientBuilder = McpClient - .using(new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:" + PORT))); + clientBulders.put("httpclient", McpClient.using(new HttpClientSseClientTransport("http://localhost:" + PORT))); + clientBulders.put("webflux", McpClient + .using(new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:" + PORT)))); + } @AfterEach @@ -105,11 +113,14 @@ public class WebFluxSseAsyncIntegrationTests { }); } - @Test - void testCreateMessageWithoutSamplingCapabilities() { + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { "httpclient", "webflux" }) + void testCreateMessageWithoutSamplingCapabilities(String clientType) { var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + var clientBuilder = clientBulders.get(clientType); + var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")).sync(); InitializeResult initResult = client.initialize(); @@ -128,8 +139,11 @@ public class WebFluxSseAsyncIntegrationTests { }); } - @Test - void testCreateMessageSuccess() throws InterruptedException { + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { "httpclient", "webflux" }) + void testCreateMessageSuccess(String clientType) throws InterruptedException { + + var clientBuilder = clientBulders.get(clientType); var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); @@ -169,8 +183,11 @@ public class WebFluxSseAsyncIntegrationTests { // --------------------------------------- // Roots Tests // --------------------------------------- - @Test - void testRootsSuccess() { + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { "httpclient", "webflux" }) + void testRootsSuccess(String clientType) { + var clientBuilder = clientBulders.get(clientType); + List roots = List.of(new Root("uri1://", "root1"), new Root("uri2://", "root2")); AtomicReference> rootsRef = new AtomicReference<>(); @@ -214,8 +231,11 @@ public class WebFluxSseAsyncIntegrationTests { mcpServer.close(); } - @Test - void testRootsWithoutCapability() { + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { "httpclient", "webflux" }) + void testRootsWithoutCapability(String clientType) { + var clientBuilder = clientBulders.get(clientType); + var mcpServer = McpServer.using(mcpServerTransport).rootsChangeConsumer(rootsUpdate -> { }).sync(); @@ -236,8 +256,11 @@ public class WebFluxSseAsyncIntegrationTests { mcpServer.close(); } - @Test - void testRootsWithEmptyRootsList() { + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { "httpclient", "webflux" }) + void testRootsWithEmptyRootsList(String clientType) { + var clientBuilder = clientBulders.get(clientType); + AtomicReference> rootsRef = new AtomicReference<>(); var mcpServer = McpServer.using(mcpServerTransport) .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) @@ -260,8 +283,11 @@ public class WebFluxSseAsyncIntegrationTests { mcpServer.close(); } - @Test - void testRootsWithMultipleConsumers() { + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { "httpclient", "webflux" }) + void testRootsWithMultipleConsumers(String clientType) { + var clientBuilder = clientBulders.get(clientType); + List roots = List.of(new Root("uri1://", "root1")); AtomicReference> rootsRef1 = new AtomicReference<>(); @@ -290,8 +316,12 @@ public class WebFluxSseAsyncIntegrationTests { mcpServer.close(); } - @Test - void testRootsServerCloseWithActiveSubscription() { + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { "httpclient", "webflux" }) + void testRootsServerCloseWithActiveSubscription(String clientType) { + + var clientBuilder = clientBulders.get(clientType); + List roots = List.of(new Root("uri1://", "root1")); AtomicReference> rootsRef = new AtomicReference<>(); @@ -331,9 +361,11 @@ public class WebFluxSseAsyncIntegrationTests { } """; - @Test + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { "httpclient", "webflux" }) + void testToolCallSuccess(String clientType) { - void testToolCallSuccess() { + var clientBuilder = clientBulders.get(clientType); var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), @@ -369,8 +401,11 @@ public class WebFluxSseAsyncIntegrationTests { mcpServer.close(); } - @Test - void testToolListChangeHandlingSuccess() { + @ParameterizedTest(name = "{0} : {displayName} ") + @ValueSource(strings = { "httpclient", "webflux" }) + void testToolListChangeHandlingSuccess(String clientType) { + + var clientBuilder = clientBulders.get(clientType); var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java index 3305da5..7e675a7 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java @@ -1,5 +1,29 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.springframework.ai.mcp.server.transport; +import java.io.IOException; +import java.util.UUID; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.TimeUnit; +import java.util.function.Function; + import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; @@ -11,18 +35,11 @@ import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.ai.mcp.util.Assert; import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.web.servlet.function.RouterFunction; import org.springframework.web.servlet.function.RouterFunctions; import org.springframework.web.servlet.function.ServerRequest; import org.springframework.web.servlet.function.ServerResponse; -import java.io.IOException; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Function; - /** * Server-side implementation of the MCP HTTP with SSE transport specification using * Spring WebMVC. This implementation wraps synchronous WebMVC operations in reactive @@ -105,9 +122,10 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { sessions.values().forEach(session -> { try { - session.messageSink.send(SseEmitter.event().name(MESSAGE_EVENT_TYPE).data(jsonText)); + var event = new SSEEvent(session.id, MESSAGE_EVENT_TYPE, jsonText); + session.queue.put(event); } - catch (IOException e) { + catch (Exception e) { logger.error("Failed to send message to session {}: {}", session.id, e.getMessage()); } }); @@ -118,39 +136,11 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { }); } - @Override - public T unmarshalFrom(Object data, TypeReference typeRef) { - return this.objectMapper.convertValue(data, typeRef); - } - - @Override - public Mono closeGracefully() { - return Mono.fromRunnable(() -> { - isClosing = true; - logger.debug("Initiating graceful shutdown with {} active sessions", sessions.size()); - - sessions.values().forEach(session -> { - String sessionId = session.id; - session.close(); - sessions.remove(sessionId); - }); - - logger.info("Graceful shutdown completed"); - }); - } - - /** - * Get the router function for configuring the web server. - */ - public RouterFunction getRouterFunction() { - return this.routerFunction; - } - /** * Handles new SSE connection requests from clients. */ private ServerResponse handleSseConnection(ServerRequest request) { - if (isClosing) { + if (this.isClosing) { return ServerResponse.status(HttpStatus.SERVICE_UNAVAILABLE).body("Server is shutting down"); } @@ -162,37 +152,36 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { // Send initial endpoint event try { - session.messageSink.send(SseEmitter.event().name(ENDPOINT_EVENT_TYPE).data(messageEndpoint)); + session.queue.put(new SSEEvent(session.id, ENDPOINT_EVENT_TYPE, messageEndpoint)); + return ServerResponse.sse(sseBuilder -> { + // new Thread(() -> { + while (!this.isClosing) { + try { + SSEEvent sseEvent = session.queue.poll(100, TimeUnit.MILLISECONDS); + if (sseEvent != null) { + sseBuilder.id(sseEvent.id).event(sseEvent.type()).data(sseEvent.data()); + } + } + catch (Exception e) { + logger.error("Failed to poll event from session queue: {}", e.getMessage()); + sseBuilder.error(e); + } + } + // }).start(); + }); } - catch (IOException e) { + catch (Exception e) { logger.error("Failed to send initial endpoint event to session {}: {}", sessionId, e.getMessage()); sessions.remove(sessionId); return ServerResponse.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } - - session.messageSink.onCompletion(() -> { - logger.debug("Session {} completed", sessionId); - sessions.remove(sessionId); - }); - - session.messageSink.onError(error -> { - logger.error("Error in session {}: {}", sessionId, error.getMessage()); - sessions.remove(sessionId); - }); - - session.messageSink.onTimeout(() -> { - logger.debug("Session {} timed out", sessionId); - sessions.remove(sessionId); - }); - - return ServerResponse.ok().contentType(MediaType.TEXT_EVENT_STREAM).body(session.messageSink); } /** * Handles incoming messages from clients. */ private ServerResponse handleMessage(ServerRequest request) { - if (isClosing) { + if (this.isClosing) { return ServerResponse.status(HttpStatus.SERVICE_UNAVAILABLE).body("Server is shutting down"); } @@ -216,6 +205,9 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { } } + record SSEEvent(String id, String type, String data) { + } + /** * Represents an active client session. */ @@ -223,18 +215,18 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { private final String id; - private final SseEmitter messageSink; + private final BlockingQueue queue; ClientSession(String id) { this.id = id; - this.messageSink = new SseEmitter(0L); // No timeout + this.queue = new LinkedBlockingQueue<>(); logger.debug("Session {} initialized with SSE emitter", id); } void close() { logger.debug("Closing session: {}", id); try { - messageSink.complete(); + queue.remove(); logger.debug("Successfully completed SSE emitter for session {}", id); } catch (Exception e) { @@ -244,4 +236,32 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { } + @Override + public T unmarshalFrom(Object data, TypeReference typeRef) { + return this.objectMapper.convertValue(data, typeRef); + } + + @Override + public Mono closeGracefully() { + return Mono.fromRunnable(() -> { + this.isClosing = true; + logger.debug("Initiating graceful shutdown with {} active sessions", sessions.size()); + + sessions.values().forEach(session -> { + String sessionId = session.id; + session.close(); + sessions.remove(sessionId); + }); + + logger.info("Graceful shutdown completed"); + }); + } + + /** + * Get the router function for configuring the web server. + */ + public RouterFunction getRouterFunction() { + return this.routerFunction; + } + } diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java new file mode 100644 index 0000000..6658386 --- /dev/null +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java @@ -0,0 +1,524 @@ +/* + * Copyright 2024 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.mcp.server; + +import java.time.Duration; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Function; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.catalina.Context; +import org.apache.catalina.LifecycleException; +import org.apache.catalina.LifecycleState; +import org.apache.catalina.startup.Tomcat; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import reactor.test.StepVerifier; + +import org.springframework.ai.mcp.client.McpClient; +import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; +import org.springframework.ai.mcp.server.McpServer.ToolRegistration; +import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; +import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; +import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; +import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; +import org.springframework.ai.mcp.spec.McpSchema.InitializeResult; +import org.springframework.ai.mcp.spec.McpSchema.Role; +import org.springframework.ai.mcp.spec.McpSchema.Root; +import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; +import org.springframework.ai.mcp.spec.McpSchema.Tool; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestClient; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.function.RouterFunction; +import org.springframework.web.servlet.function.ServerResponse; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.awaitility.Awaitility.await; + +public class WebMvcSseIntegrationTests { + + private static final Logger logger = LoggerFactory.getLogger(WebMvcSseIntegrationTests.class); + + private static final int PORT = 8183; + + private static final String MESSAGE_ENDPOINT = "/mcp/message"; + + private WebMvcSseServerTransport mcpServerTransport; + + McpClient.Builder clientBuilder; + + @Configuration + @EnableWebMvc + static class TestConfig { + + @Bean + public WebMvcSseServerTransport webMvcSseServerTransport() { + return new WebMvcSseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); + } + + @Bean + public RouterFunction routerFunction(WebMvcSseServerTransport transport) { + return transport.getRouterFunction(); + } + + } + + private Tomcat tomcat; + + private AnnotationConfigWebApplicationContext appContext; + + @BeforeEach + public void before() { + + // Set up Tomcat first + tomcat = new Tomcat(); + tomcat.setPort(PORT); + + // Set Tomcat base directory to java.io.tmpdir to avoid permission issues + String baseDir = System.getProperty("java.io.tmpdir"); + tomcat.setBaseDir(baseDir); + + // Use the same directory for document base + Context context = tomcat.addContext("", baseDir); + + // Create and configure Spring WebMvc context + appContext = new AnnotationConfigWebApplicationContext(); + appContext.register(TestConfig.class); + appContext.setServletContext(context.getServletContext()); + appContext.refresh(); + + // Get the transport from Spring context + mcpServerTransport = appContext.getBean(WebMvcSseServerTransport.class); + + // Create DispatcherServlet with our Spring context + DispatcherServlet dispatcherServlet = new DispatcherServlet(appContext); + // dispatcherServlet.setThrowExceptionIfNoHandlerFound(true); + + // Add servlet to Tomcat and get the wrapper + var wrapper = Tomcat.addServlet(context, "dispatcherServlet", dispatcherServlet); + wrapper.setLoadOnStartup(1); + wrapper.setAsyncSupported(true); + context.addServletMappingDecoded("/*", "dispatcherServlet"); + + try { + // Configure and start the connector with async support + var connector = tomcat.getConnector(); + connector.setAsyncTimeout(3000); // 3 seconds timeout for async requests + tomcat.start(); + assertThat(tomcat.getServer().getState() == LifecycleState.STARTED); + } + catch (Exception e) { + throw new RuntimeException("Failed to start Tomcat", e); + } + + this.clientBuilder = McpClient.using(new HttpClientSseClientTransport("http://localhost:" + PORT)); + } + + @AfterEach + public void after() { + if (mcpServerTransport != null) { + mcpServerTransport.closeGracefully().block(); + } + if (appContext != null) { + appContext.close(); + } + if (tomcat != null) { + try { + tomcat.stop(); + tomcat.destroy(); + } + catch (LifecycleException e) { + throw new RuntimeException("Failed to stop Tomcat", e); + } + } + } + + // --------------------------------------- + // Sampling Tests + // --------------------------------------- + @Test + void testCreateMessageWithoutInitialization() { + var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + + var messages = List + .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); + var modelPrefs = new McpSchema.ModelPreferences(List.of(), 1.0, 1.0, 1.0); + + var request = new McpSchema.CreateMessageRequest(messages, modelPrefs, null, + McpSchema.CreateMessageRequest.ContextInclusionStrategy.NONE, null, 100, List.of(), Map.of()); + + StepVerifier.create(mcpAsyncServer.createMessage(request)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Client must be initialized. Call the initialize method first!"); + }); + } + + @Test + void testCreateMessageWithoutSamplingCapabilities() { + + var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + + var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")).sync(); + + InitializeResult initResult = client.initialize(); + assertThat(initResult).isNotNull(); + + var messages = List + .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); + var modelPrefs = new McpSchema.ModelPreferences(List.of(), 1.0, 1.0, 1.0); + + var request = new McpSchema.CreateMessageRequest(messages, modelPrefs, null, + McpSchema.CreateMessageRequest.ContextInclusionStrategy.NONE, null, 100, List.of(), Map.of()); + + StepVerifier.create(mcpAsyncServer.createMessage(request)).verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class) + .hasMessage("Client must be configured with sampling capabilities"); + }); + } + + @Test + void testCreateMessageSuccess() throws InterruptedException { + + var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + + Function samplingHandler = request -> { + assertThat(request.messages()).hasSize(1); + assertThat(request.messages().get(0).content()).isInstanceOf(McpSchema.TextContent.class); + + return new CreateMessageResult(Role.USER, new McpSchema.TextContent("Test message"), "MockModelName", + CreateMessageResult.StopReason.STOP_SEQUENCE); + }; + + var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")) + .capabilities(ClientCapabilities.builder().sampling().build()) + .sampling(samplingHandler) + .sync(); + + InitializeResult initResult = client.initialize(); + assertThat(initResult).isNotNull(); + + var messages = List + .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); + var modelPrefs = new McpSchema.ModelPreferences(List.of(), 1.0, 1.0, 1.0); + + var request = new McpSchema.CreateMessageRequest(messages, modelPrefs, null, + McpSchema.CreateMessageRequest.ContextInclusionStrategy.NONE, null, 100, List.of(), Map.of()); + + StepVerifier.create(mcpAsyncServer.createMessage(request)).consumeNextWith(result -> { + assertThat(result).isNotNull(); + assertThat(result.role()).isEqualTo(Role.USER); + assertThat(result.content()).isInstanceOf(McpSchema.TextContent.class); + assertThat(((McpSchema.TextContent) result.content()).text()).isEqualTo("Test message"); + assertThat(result.model()).isEqualTo("MockModelName"); + assertThat(result.stopReason()).isEqualTo(CreateMessageResult.StopReason.STOP_SEQUENCE); + }).verifyComplete(); + } + + // --------------------------------------- + // Roots Tests + // --------------------------------------- + @Test + void testRootsSuccess() { + List roots = List.of(new Root("uri1://", "root1"), new Root("uri2://", "root2")); + + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(roots) + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + assertThat(rootsRef.get()).isNull(); + + assertThat(mcpServer.listRoots().roots()).containsAll(roots); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(roots); + }); + + // Remove a root + mcpClient.removeRoot(roots.get(0).uri()); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(roots.get(1))); + }); + + // Add a new root + var root3 = new Root("uri3://", "root3"); + mcpClient.addRoot(root3); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(roots.get(1), root3)); + }); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsWithoutCapability() { + var mcpServer = McpServer.using(mcpServerTransport).rootsChangeConsumer(rootsUpdate -> { + }).sync(); + + // Create client without roots capability + // No roots capability + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().build()).sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + // Attempt to list roots should fail + assertThatThrownBy(() -> mcpServer.listRoots().roots()).isInstanceOf(McpError.class) + .hasMessage("Roots not supported"); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsWithEmptyRootsList() { + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(List.of()) // Empty roots list + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).isEmpty(); + }); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsWithMultipleConsumers() { + List roots = List.of(new Root("uri1://", "root1")); + + AtomicReference> rootsRef1 = new AtomicReference<>(); + AtomicReference> rootsRef2 = new AtomicReference<>(); + + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef1.set(rootsUpdate)) + .rootsChangeConsumer(rootsUpdate -> rootsRef2.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(roots) + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef1.get()).containsAll(roots); + assertThat(rootsRef2.get()).containsAll(roots); + }); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testRootsServerCloseWithActiveSubscription() { + List roots = List.of(new Root("uri1://", "root1")); + + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpServer = McpServer.using(mcpServerTransport) + .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) + .sync(); + + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) + .roots(roots) + .sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.rootsListChangedNotification(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(roots); + }); + + // Close server while subscription is active + mcpServer.close(); + + // Verify client can handle server closure gracefully + mcpClient.close(); + } + + // --------------------------------------- + // Tools Tests + // --------------------------------------- + + String emptyJsonSchema = """ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {} + } + """; + + @Test + void testToolCallSuccess() { + + var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); + ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), + request -> { + // perform a blocking call to a remote service + String response = RestClient.create() + .get() + .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .retrieve() + .body(String.class); + assertThat(response).isNotBlank(); + return callResponse; + }); + + var mcpServer = McpServer.using(mcpServerTransport) + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tools(tool1) + .sync(); + + var mcpClient = clientBuilder.sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + assertThat(mcpClient.listTools().tools()).contains(tool1.tool()); + + CallToolResult response = mcpClient.callTool(new McpSchema.CallToolRequest("tool1", Map.of())); + + assertThat(response).isNotNull(); + assertThat(response).isEqualTo(callResponse); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testToolListChangeHandlingSuccess() { + + var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); + ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), + request -> { + // perform a blocking call to a remote service + String response = RestClient.create() + .get() + .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .retrieve() + .body(String.class); + assertThat(response).isNotBlank(); + return callResponse; + }); + + var mcpServer = McpServer.using(mcpServerTransport) + .capabilities(ServerCapabilities.builder().tools(true).build()) + .tools(tool1) + .sync(); + + AtomicReference> rootsRef = new AtomicReference<>(); + var mcpClient = clientBuilder.toolsChangeConsumer(toolsUpdate -> { + // perform a blocking call to a remote service + String response = RestClient.create() + .get() + .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .retrieve() + .body(String.class); + assertThat(response).isNotBlank(); + rootsRef.set(toolsUpdate); + }).sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + assertThat(rootsRef.get()).isNull(); + + assertThat(mcpClient.listTools().tools()).contains(tool1.tool()); + + mcpServer.notifyToolsListChanged(); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(tool1.tool())); + }); + + // Remove a tool + mcpServer.removeTool("tool1"); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).isEmpty(); + }); + + // Add a new tool + ToolRegistration tool2 = new ToolRegistration(new McpSchema.Tool("tool2", "tool2 description", emptyJsonSchema), + request -> callResponse); + + mcpServer.addTool(tool2); + + await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + assertThat(rootsRef.get()).containsAll(List.of(tool2.tool())); + }); + + mcpClient.close(); + mcpServer.close(); + } + + @Test + void testInitialize() { + + var mcpServer = McpServer.using(mcpServerTransport).sync(); + + var mcpClient = clientBuilder.sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.close(); + mcpServer.close(); + } + +} diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml b/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml index 0246d6c..517af52 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml @@ -9,13 +9,16 @@ - + - + + + + - + diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java index 6423682..3f457a4 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java @@ -139,7 +139,9 @@ public class HttpClientSseClientTransport implements ClientMcpTransport { } try { - closeLatch.await(10, TimeUnit.SECONDS); + if (!closeLatch.await(10, TimeUnit.SECONDS)) { + return Mono.error(new McpError("Failed to wait for the message endpoint")); + } } catch (InterruptedException e) { return Mono.error(new McpError("Failed to wait for the message endpoint")); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SSEClient.java b/mcp/src/test/java/org/springframework/ai/mcp/attic/SSEClient.java similarity index 98% rename from mcp/src/main/java/org/springframework/ai/mcp/client/transport/SSEClient.java rename to mcp/src/test/java/org/springframework/ai/mcp/attic/SSEClient.java index ec8c8eb..3b75999 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/SSEClient.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/attic/SSEClient.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.client.transport; +package org.springframework.ai.mcp.attic; /** * @author Christian Tzolov diff --git a/pom.xml b/pom.xml index 1b63284..c906585 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,7 @@ 1.0.0-alpha.4 0.0.4 1.6.2 + 5.10.5 @@ -105,6 +106,7 @@ spring-ai-mcp mcp-docs mcp-test + diff --git a/samples/spring-ai-mcp-webmvc-sample/pom.xml b/samples/spring-ai-mcp-webmvc-sample/pom.xml index f99d2b3..ba29714 100644 --- a/samples/spring-ai-mcp-webmvc-sample/pom.xml +++ b/samples/spring-ai-mcp-webmvc-sample/pom.xml @@ -27,6 +27,13 @@ mcp-webmvc-sse-transport ${spring-ai-mcp.version} + + + + org.springframework.experimental + mcp-webflux-sse-transport + ${spring-ai-mcp.version} + org.springframework.experimental spring-ai-mcp diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientWebFluxSse.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientWebFluxSse.java new file mode 100644 index 0000000..60f5609 --- /dev/null +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientWebFluxSse.java @@ -0,0 +1,32 @@ +/* +* Copyright 2024 - 2024 the original author or authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.springframework.ai.mcp.sample.webmvc.client; + +import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; +import org.springframework.web.reactive.function.client.WebClient; + +/** + * @author Christian Tzolov + */ +public class ClientWebFluxSse { + + public static void main(String[] args) { + var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080")); + + new SampleClient(transport).run(); + } + +} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerApplication.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpMvcServerApplication.java similarity index 71% rename from samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerApplication.java rename to samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpMvcServerApplication.java index 82f80de..cfff5e0 100644 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerApplication.java +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpMvcServerApplication.java @@ -4,10 +4,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class McpServerApplication { +public class McpMvcServerApplication { public static void main(String[] args) { - SpringApplication.run(McpServerApplication.class, args); + SpringApplication.run(McpMvcServerApplication.class, args); } } diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java index be2ea57..573dc31 100644 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java @@ -31,8 +31,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestClient; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.springframework.http.converter.HttpMessageConverter; -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.function.RouterFunction; import org.springframework.web.servlet.function.ServerResponse; @@ -40,14 +38,6 @@ import org.springframework.web.servlet.function.ServerResponse; @EnableWebMvc public class McpServerConfig implements WebMvcConfigurer { - @Override - public void configureMessageConverters(List> converters) { - MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); - converter.setSupportedMediaTypes(List.of(org.springframework.http.MediaType.APPLICATION_JSON, - org.springframework.http.MediaType.TEXT_EVENT_STREAM)); - converters.add(converter); - } - private static final Logger logger = LoggerFactory.getLogger(McpServerConfig.class); @Bean diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties b/samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties index 2530c58..4bc4fbf 100644 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties +++ b/samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties @@ -1,8 +1,8 @@ -# spring.main.web-application-type=none +spring.main.web-application-type=SERVLET # NOTE: You must disable the banner and the console logging # to allow the STDIO transport to work !!! spring.main.banner-mode=off -# logging.pattern.console= +logging.pattern.console= transport.mode=sse \ No newline at end of file From de95c00ce86c9e51ac2a2ddf92fabb953edd102f Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 11 Jan 2025 17:35:41 +0100 Subject: [PATCH 043/505] Move the WebMvc SSE Server + Http SSE Client sample to spring-ai-examples --- README.md | 1 + pom.xml | 1 - .../.mvn/wrapper/maven-wrapper.properties | 19 -- samples/spring-ai-mcp-webmvc-sample/README.md | 257 ----------------- samples/spring-ai-mcp-webmvc-sample/mvnw | 259 ----------------- samples/spring-ai-mcp-webmvc-sample/mvnw.cmd | 149 ---------- samples/spring-ai-mcp-webmvc-sample/pom.xml | 84 ------ .../mcp/sample/webmvc/client/ClientStdio.java | 39 --- .../webmvc/client/ClientWebFluxSse.java | 32 --- .../sample/webmvc/client/HttpClientSse.java | 31 -- .../sample/webmvc/client/SampleClient.java | 87 ------ .../server/McpMvcServerApplication.java | 13 - .../sample/webmvc/server/McpServerConfig.java | 272 ------------------ .../mcp/sample/webmvc/server/OpenLibrary.java | 74 ----- .../src/main/resources/application.properties | 8 - 15 files changed, 1 insertion(+), 1325 deletions(-) delete mode 100644 samples/spring-ai-mcp-webmvc-sample/.mvn/wrapper/maven-wrapper.properties delete mode 100644 samples/spring-ai-mcp-webmvc-sample/README.md delete mode 100755 samples/spring-ai-mcp-webmvc-sample/mvnw delete mode 100644 samples/spring-ai-mcp-webmvc-sample/mvnw.cmd delete mode 100644 samples/spring-ai-mcp-webmvc-sample/pom.xml delete mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientStdio.java delete mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientWebFluxSse.java delete mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/HttpClientSse.java delete mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/SampleClient.java delete mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpMvcServerApplication.java delete mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java delete mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/OpenLibrary.java delete mode 100644 samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties diff --git a/README.md b/README.md index 404d899..328ebfa 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,7 @@ Explore these MCP examples in the [spring-ai-examples/model-context-protocol](ht - [Filesystem](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem) - Enables LLM interaction with local filesystem folders and files - [Brave](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave) - Enables natural language interactions with Brave Search, allowing you to perform internet searches. - [Spring-ai-mcp-sample](./samples/spring-ai-mcp-sample/) - Showcases how to create and use MCP servers and clients with different transport modes and capabilities. +- [Http SSE Client + WebMvc SSE Server sample](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server) - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities. ## Documentation - [Java MCP SDK documentation](mcp/README.md) diff --git a/pom.xml b/pom.xml index c906585..e2a87c5 100644 --- a/pom.xml +++ b/pom.xml @@ -106,7 +106,6 @@ spring-ai-mcp mcp-docs mcp-test - diff --git a/samples/spring-ai-mcp-webmvc-sample/.mvn/wrapper/maven-wrapper.properties b/samples/spring-ai-mcp-webmvc-sample/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index d58dfb7..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 -distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/samples/spring-ai-mcp-webmvc-sample/README.md b/samples/spring-ai-mcp-webmvc-sample/README.md deleted file mode 100644 index 9cf76f9..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/README.md +++ /dev/null @@ -1,257 +0,0 @@ -# Spring AI MCP Sample Project - -This sample project demonstrates the usage of the Spring AI Model Context Protocol (MCP) implementation. It showcases how to create and use MCP servers and clients with different transport modes and capabilities. - -## Overview - -The sample provides: -- Two transport mode implementations: Stdio and SSE (Server-Sent Events) -- Server capabilities: - - Tools support with list changes notifications - - Resources support with list changes notifications (no subscribe support) - - Prompts support with list changes notifications -- Sample implementations: - - Two MCP tools: Weather and Calculator - - One MCP resource: System Information - - One MCP prompt: Greeting - -## Building the Project - -```bash -./mvnw clean package -``` - -## Running the Server - -The server can be started in two transport modes, controlled by the `transport.mode` property: - -### Stdio Mode (Default) - -```bash -java -Dtransport.mode=stdio -jar target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar -``` - -The Stdio mode server is automatically started by the client - no explicit server startup is needed. -But you have to build the server jar first: `./mvnw clean install -DskipTests`. - -In Stdio mode the server must not emit any messages/logs to the console (e.g. standard out) but the JSON messages produced by the server. - -### SSE Mode -```bash -java -Dtransport.mode=sse -jar target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar -``` - -## Sample Clients - -The project includes example clients for both transport modes: - -### Stdio Client (ClientStdio.java) -```java -var stdioParams = ServerParameters.builder("java") - .args("-Dtransport.mode=stdio", "-jar", - "target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar") - .build(); - -var transport = new StdioClientTransport(stdioParams); -var client = McpClient.using(transport).sync(); -``` - -### SSE Client (ClientSse.java) -```java -var transport = new SseClientTransport(WebClient.builder().baseUrl("http://localhost:8080")); -var client = McpClient.using(transport).sync(); -``` - -## Available Tools - -### Weather Tool -- Name: `weather` -- Description: Weather forecast tool by location -- Parameters: - - `city`: String - The city to get weather for -- Example: -```java -CallToolResult response = client.callTool( - new CallToolRequest("weather", Map.of("city", "Sofia")) -); -``` - -### Calculator Tool -- Name: `calculator` -- Description: Performs basic arithmetic operations -- Parameters (JSON Schema): - ```json - { - "operation": { - "type": "string", - "enum": ["add", "subtract", "multiply", "divide"], - "description": "The arithmetic operation to perform" - }, - "a": { - "type": "number", - "description": "First operand" - }, - "b": { - "type": "number", - "description": "Second operand" - } - } - ``` -- Example: -```java -CallToolResult response = client.callTool( - new CallToolRequest("calculator", - Map.of("operation", "multiply", "a", 2.0, "b", 3.0)) -); -``` - -## Available Resources - -### System Information Resource -- URI: `system://info` -- Description: Provides basic system information including Java version, OS, etc. -- MIME Type: application/json -- Returns: JSON object containing: javaVersion, osName, osVersion, osArch, processors, timestamp - -## Available Prompts - -### Greeting Prompt -- Name: `greeting` -- Description: A friendly greeting prompt -- Parameters: - - `name`: String (required) - The name to greet -- Returns: A personalized greeting message from an assistant - -## Client Usage Example - -```java -// Initialize client -client.initialize(); - -// Test connection -client.ping(); - -// List available tools -ListToolsResult tools = client.listTools(); -System.out.println("Available tools: " + tools); - -// Call weather tool -CallToolResult weather = client.callTool( - new CallToolRequest("weather", Map.of("city", "Sofia")) -); -System.out.println("Weather: " + weather); - -// Call calculator tool -CallToolResult calc = client.callTool( - new CallToolRequest("calculator", - Map.of("operation", "multiply", "a", 2.0, "b", 3.0)) -); -System.out.println("Calculation: " + calc); - -// Access system info resource -ReadResourceResult sysInfo = client.readResource( - new ReadResourceRequest("system://info") -); -System.out.println("System Info: " + sysInfo); - -// Use greeting prompt -GetPromptResult greeting = client.getPrompt( - new GetPromptRequest("greeting", Map.of("name", "John")) -); -System.out.println("Greeting: " + greeting); - -// Close client -client.closeGracefully(); -``` - -## Server Usage Example - -```java -@Configuration -public class CustomMcpServerConfig { - @Bean - public McpAsyncServer mcpServer(McpTransport transport) { - // Configure server capabilities - var capabilities = McpSchema.ServerCapabilities.builder() - .resources(false, true) // Resource support with list changes notifications - .tools(true) // Tool support with list changes notifications - .prompts(true) // Prompt support with list changes notifications - .build(); - - // Create custom tool - var customTool = new ToolRegistration( - new McpSchema.Tool("custom-tool", "Description", Map.of("param", "String")), - (arguments) -> { - String param = (String) arguments.get("param"); - return new CallToolResult( - List.of(new TextContent("Result: " + param)), - false - ); - } - ); - - // Create custom resource - var customResource = new ResourceRegistration( - new McpSchema.Resource( - "custom://resource", - "Custom Resource", - "Description", - "application/json", - null - ), - (request) -> new ReadResourceResult( - List.of(new TextResourceContents( - request.uri(), - "application/json", - "{\"data\": \"example\"}" - )) - ) - ); - - // Create custom prompt - var customPrompt = new PromptRegistration( - new McpSchema.Prompt( - "custom-prompt", - "Description", - List.of(new McpSchema.PromptArgument("input", "Description", true)) - ), - request -> { - String input = (String) request.arguments().get("input"); - var message = new PromptMessage( - Role.ASSISTANT, - new TextContent("Response to: " + input) - ); - return new GetPromptResult("Result", List.of(message)); - } - ); - - // Create and configure the server - return McpServer.using(transport) - .info("Custom MCP Server", "1.0.0") - .capabilities(capabilities) - .tools(List.of(customTool)) - .resources(Map.of("custom://resource", customResource)) - .prompts(List.of(customPrompt)) - .async(); - } -} -``` - -## Configuration - -The application can be configured through `application.properties`: - -- `transport.mode`: Transport mode to use (stdio/sse) -- `server.port`: Server port for SSE mode (default: 8080) -- Various logging configurations are available for debugging - -## Implementation Details - -The sample demonstrates: -- Creating an MCP server with custom tools, resources, and prompts -- Configuring different transport modes -- Implementing tool handlers with JSON schema validation -- Resource implementations with dynamic content generation -- Prompt implementations with parameter handling -- Error handling and response formatting -- Synchronous client usage patterns diff --git a/samples/spring-ai-mcp-webmvc-sample/mvnw b/samples/spring-ai-mcp-webmvc-sample/mvnw deleted file mode 100755 index 19529dd..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/mvnw +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.2 -# -# Optional ENV vars -# ----------------- -# JAVA_HOME - location of a JDK home dir, required when download maven via java source -# MVNW_REPOURL - repo url base for downloading maven distribution -# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output -# ---------------------------------------------------------------------------- - -set -euf -[ "${MVNW_VERBOSE-}" != debug ] || set -x - -# OS specific support. -native_path() { printf %s\\n "$1"; } -case "$(uname)" in -CYGWIN* | MINGW*) - [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" - native_path() { cygpath --path --windows "$1"; } - ;; -esac - -# set JAVACMD and JAVACCMD -set_java_home() { - # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched - if [ -n "${JAVA_HOME-}" ]; then - if [ -x "$JAVA_HOME/jre/sh/java" ]; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - JAVACCMD="$JAVA_HOME/jre/sh/javac" - else - JAVACMD="$JAVA_HOME/bin/java" - JAVACCMD="$JAVA_HOME/bin/javac" - - if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then - echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 - echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 - return 1 - fi - fi - else - JAVACMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v java - )" || : - JAVACCMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v javac - )" || : - - if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then - echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 - return 1 - fi - fi -} - -# hash string like Java String::hashCode -hash_string() { - str="${1:-}" h=0 - while [ -n "$str" ]; do - char="${str%"${str#?}"}" - h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) - str="${str#?}" - done - printf %x\\n $h -} - -verbose() { :; } -[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } - -die() { - printf %s\\n "$1" >&2 - exit 1 -} - -trim() { - # MWRAPPER-139: - # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. - # Needed for removing poorly interpreted newline sequences when running in more - # exotic environments such as mingw bash on Windows. - printf "%s" "${1}" | tr -d '[:space:]' -} - -# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties -while IFS="=" read -r key value; do - case "${key-}" in - distributionUrl) distributionUrl=$(trim "${value-}") ;; - distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; - esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" - -case "${distributionUrl##*/}" in -maven-mvnd-*bin.*) - MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ - case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in - *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; - :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; - :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; - :Linux*x86_64*) distributionPlatform=linux-amd64 ;; - *) - echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 - distributionPlatform=linux-amd64 - ;; - esac - distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" - ;; -maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; -esac - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" -distributionUrlName="${distributionUrl##*/}" -distributionUrlNameMain="${distributionUrlName%.*}" -distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" -MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" - -exec_maven() { - unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : - exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" -} - -if [ -d "$MAVEN_HOME" ]; then - verbose "found existing MAVEN_HOME at $MAVEN_HOME" - exec_maven "$@" -fi - -case "${distributionUrl-}" in -*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; -*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; -esac - -# prepare tmp dir -if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then - clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } - trap clean HUP INT TERM EXIT -else - die "cannot create temp dir" -fi - -mkdir -p -- "${MAVEN_HOME%/*}" - -# Download and Install Apache Maven -verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -verbose "Downloading from: $distributionUrl" -verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -# select .zip or .tar.gz -if ! command -v unzip >/dev/null; then - distributionUrl="${distributionUrl%.zip}.tar.gz" - distributionUrlName="${distributionUrl##*/}" -fi - -# verbose opt -__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' -[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v - -# normalize http auth -case "${MVNW_PASSWORD:+has-password}" in -'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; -has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; -esac - -if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then - verbose "Found wget ... using wget" - wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" -elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then - verbose "Found curl ... using curl" - curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" -elif set_java_home; then - verbose "Falling back to use Java to download" - javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" - targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" - cat >"$javaSource" <<-END - public class Downloader extends java.net.Authenticator - { - protected java.net.PasswordAuthentication getPasswordAuthentication() - { - return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); - } - public static void main( String[] args ) throws Exception - { - setDefault( new Downloader() ); - java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); - } - } - END - # For Cygwin/MinGW, switch paths to Windows format before running javac and java - verbose " - Compiling Downloader.java ..." - "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" - verbose " - Running Downloader.java ..." - "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" -fi - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -if [ -n "${distributionSha256Sum-}" ]; then - distributionSha256Result=false - if [ "$MVN_CMD" = mvnd.sh ]; then - echo "Checksum validation is not supported for maven-mvnd." >&2 - echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - elif command -v shasum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - else - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 - echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - fi - if [ $distributionSha256Result = false ]; then - echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 - echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 - exit 1 - fi -fi - -# unzip and move -if command -v unzip >/dev/null; then - unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" -else - tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" -fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" - -clean || : -exec_maven "$@" diff --git a/samples/spring-ai-mcp-webmvc-sample/mvnw.cmd b/samples/spring-ai-mcp-webmvc-sample/mvnw.cmd deleted file mode 100644 index 249bdf3..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/mvnw.cmd +++ /dev/null @@ -1,149 +0,0 @@ -<# : batch portion -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.2 -@REM -@REM Optional ENV vars -@REM MVNW_REPOURL - repo url base for downloading maven distribution -@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output -@REM ---------------------------------------------------------------------------- - -@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) -@SET __MVNW_CMD__= -@SET __MVNW_ERROR__= -@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% -@SET PSModulePath= -@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( - IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) -) -@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% -@SET __MVNW_PSMODULEP_SAVE= -@SET __MVNW_ARG0_NAME__= -@SET MVNW_USERNAME= -@SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) -@echo Cannot start maven from wrapper >&2 && exit /b 1 -@GOTO :EOF -: end batch / begin powershell #> - -$ErrorActionPreference = "Stop" -if ($env:MVNW_VERBOSE -eq "true") { - $VerbosePreference = "Continue" -} - -# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties -$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl -if (!$distributionUrl) { - Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" -} - -switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { - "maven-mvnd-*" { - $USE_MVND = $true - $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" - $MVN_CMD = "mvnd.cmd" - break - } - default { - $USE_MVND = $false - $MVN_CMD = $script -replace '^mvnw','mvn' - break - } -} - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" -} -$distributionUrlName = $distributionUrl -replace '^.*/','' -$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" -if ($env:MAVEN_USER_HOME) { - $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" -} -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' -$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" - -if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { - Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" - Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" - exit $? -} - -if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { - Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" -} - -# prepare tmp dir -$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile -$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" -$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null -trap { - if ($TMP_DOWNLOAD_DIR.Exists) { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } - } -} - -New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null - -# Download and Install Apache Maven -Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -Write-Verbose "Downloading from: $distributionUrl" -Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -$webclient = New-Object System.Net.WebClient -if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { - $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) -} -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum -if ($distributionSha256Sum) { - if ($USE_MVND) { - Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." - } - Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash - if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { - Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." - } -} - -# unzip and move -Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null -try { - Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null -} catch { - if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { - Write-Error "fail to move MAVEN_HOME" - } -} finally { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } -} - -Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/samples/spring-ai-mcp-webmvc-sample/pom.xml b/samples/spring-ai-mcp-webmvc-sample/pom.xml deleted file mode 100644 index ba29714..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/pom.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 3.4.1 - - - - org.springframework.experimental - spring-ai-mcp-webmvc-sample - 0.5.0-SNAPSHOT - - Spring AI MCP Sample - Sample Spring Boot application demonstrating MCP server usage - - - 0.5.0-SNAPSHOT - - - - - org.springframework.experimental - mcp-webmvc-sse-transport - ${spring-ai-mcp.version} - - - - - org.springframework.experimental - mcp-webflux-sse-transport - ${spring-ai-mcp.version} - - - org.springframework.experimental - spring-ai-mcp - ${spring-ai-mcp.version} - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - - - - io.spring.javaformat - spring-javaformat-maven-plugin - 0.0.43 - - - validate - true - - validate - - - - - - - \ No newline at end of file diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientStdio.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientStdio.java deleted file mode 100644 index 2a6b3bf..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientStdio.java +++ /dev/null @@ -1,39 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.sample.webmvc.client; - -import org.springframework.ai.mcp.client.transport.ServerParameters; -import org.springframework.ai.mcp.client.transport.StdioClientTransport; - -/** - * With stdio transport, the MCP server is automatically started by the client. But you - * have to build the server jar first:
    ./mvnw clean install -DskipTests
    - */ -public class ClientStdio { - - public static void main(String[] args) { - - var stdioParams = ServerParameters.builder("java") - .args("-Dtransport.mode=stdio", "-jar", - "spring-ai-mcp-webmvc-sample/target/spring-ai-mcp-webmvc-sample-0.5.0-SNAPSHOT.jar") - .build(); - - var transport = new StdioClientTransport(stdioParams); - - new SampleClient(transport).run(); - } - -} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientWebFluxSse.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientWebFluxSse.java deleted file mode 100644 index 60f5609..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/ClientWebFluxSse.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.sample.webmvc.client; - -import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; -import org.springframework.web.reactive.function.client.WebClient; - -/** - * @author Christian Tzolov - */ -public class ClientWebFluxSse { - - public static void main(String[] args) { - var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080")); - - new SampleClient(transport).run(); - } - -} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/HttpClientSse.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/HttpClientSse.java deleted file mode 100644 index 27f7964..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/HttpClientSse.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.sample.webmvc.client; - -import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; - -/** - * @author Christian Tzolov - */ -public class HttpClientSse { - - public static void main(String[] args) { - var transport = new HttpClientSseClientTransport("http://localhost:8080"); - - new SampleClient(transport).run(); - } - -} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/SampleClient.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/SampleClient.java deleted file mode 100644 index d9a29f6..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/client/SampleClient.java +++ /dev/null @@ -1,87 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.sample.webmvc.client; - -import java.util.Map; - -import org.springframework.ai.mcp.client.McpClient; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; -import org.springframework.ai.mcp.spec.McpSchema.ListPromptsResult; -import org.springframework.ai.mcp.spec.McpSchema.ListToolsResult; -import org.springframework.ai.mcp.spec.McpSchema.ReadResourceRequest; - -/** - * @author Christian Tzolov - */ - -public class SampleClient { - - private final ClientMcpTransport transport; - - public SampleClient(ClientMcpTransport transport) { - this.transport = transport; - } - - public void run() { - - var client = McpClient.using(this.transport).sync(); - - client.initialize(); - - client.ping(); - - // List and demonstrate tools - ListToolsResult toolsList = client.listTools(); - System.out.println("Available Tools = " + toolsList); - - CallToolResult weatherResponse = client.callTool(new CallToolRequest("weather", Map.of("city", "Sofia"))); - System.out.println("Weather Response = " + weatherResponse); - - CallToolResult calcResponse = client - .callTool(new CallToolRequest("calculator", Map.of("operation", "multiply", "a", 2.0, "b", 3.0))); - System.out.println("Calculator Response = " + calcResponse); - - CallToolResult paymentStatus = client.callTool( - new CallToolRequest("paymentTransactionStatus", Map.of("transactionId", "006", "accountName", "John"))); - System.out.println("Payment Status Response = " + paymentStatus); - - CallToolResult parks = client.callTool(new CallToolRequest("getBooks", Map.of("title", "Spring Framework"))); - System.out.println("Books Response = " + parks); - - // List and demonstrate resources - var resourcesList = client.listResources(); - System.out.println("\nAvailable Resources = " + resourcesList); - - // Read the system info resource - var systemInfo = client.readResource(new ReadResourceRequest("system://info")); - System.out.println("System Info = " + systemInfo); - - // List and demonstrate prompts - ListPromptsResult promptsList = client.listPrompts(); - System.out.println("\nAvailable Prompts = " + promptsList); - - // Try the greeting prompt - var greetingResponse = client.getPrompt(new GetPromptRequest("greeting", Map.of("name", "Spring"))); - System.out.println("Greeting Response = " + greetingResponse); - - client.closeGracefully(); - - } - -} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpMvcServerApplication.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpMvcServerApplication.java deleted file mode 100644 index cfff5e0..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpMvcServerApplication.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.springframework.ai.mcp.sample.webmvc.server; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class McpMvcServerApplication { - - public static void main(String[] args) { - SpringApplication.run(McpMvcServerApplication.class, args); - } - -} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java deleted file mode 100644 index 573dc31..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/McpServerConfig.java +++ /dev/null @@ -1,272 +0,0 @@ -package org.springframework.ai.mcp.sample.webmvc.server; - -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.ai.mcp.server.McpAsyncServer; -import org.springframework.ai.mcp.server.McpServer; -import org.springframework.ai.mcp.server.McpServer.PromptRegistration; -import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; -import org.springframework.ai.mcp.server.transport.StdioServerTransport; -import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; -import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; -import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; -import org.springframework.ai.mcp.spec.McpSchema.Role; -import org.springframework.ai.mcp.spec.McpSchema.TextContent; -import org.springframework.ai.mcp.spec.ServerMcpTransport; -import org.springframework.ai.mcp.spring.ToolHelper; -import org.springframework.ai.model.function.FunctionCallback; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.client.RestClient; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.springframework.web.servlet.function.RouterFunction; -import org.springframework.web.servlet.function.ServerResponse; - -@Configuration -@EnableWebMvc -public class McpServerConfig implements WebMvcConfigurer { - - private static final Logger logger = LoggerFactory.getLogger(McpServerConfig.class); - - @Bean - @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") - public WebMvcSseServerTransport webMvcSseServerTransport() { - return new WebMvcSseServerTransport(new ObjectMapper(), "/mcp/message"); - } - - @Bean - @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") - public RouterFunction routerFunction(WebMvcSseServerTransport transport) { - return transport.getRouterFunction(); - } - - // STDIO transport - @Bean - @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "stdio") - public StdioServerTransport stdioServerTransport() { - return new StdioServerTransport(); - } - - @Bean - public McpAsyncServer mcpServer(ServerMcpTransport transport, OpenLibrary openLibrary) { // @formatter:off - - // Configure server capabilities with resource support - var capabilities = McpSchema.ServerCapabilities.builder() - .resources(false, true) // No subscribe support, but list changes notifications - .tools(true) // Tool support with list changes notifications - .prompts(true) // Prompt support with list changes notifications - .logging() // Logging support - .build(); - - // Create the server with both tool and resource capabilities - var server = McpServer.using(transport) - .serverInfo("MCP Demo Server", "1.0.0") - .capabilities(capabilities) - .resources(systemInfoResourceRegistration()) - .prompts(greetingPromptRegistration()) - .tools(calculatorToolRegistration(), - ToolHelper.toToolRegistration( - FunctionCallback.builder() - .method("paymentTransactionStatus",String.class, String.class) - .description("Get transaction payment status") - .targetClass(McpServerConfig.class) - .build()), - ToolHelper.toToolRegistration( - FunctionCallback.builder() - .function("toUpperCase", new Function() { - @Override - public String apply(String s) { - return s.toUpperCase(); - } - }) - .description("To upper case") - .inputType(String.class) - .build())) - .tools(openLibraryToolRegistrations(openLibrary)) - .async(); - - server.addTool(weatherToolRegistration(server)); - return server; // @formatter:on - } // @formatter:on - - public static List openLibraryToolRegistrations(OpenLibrary openLibrary) { - - var books = FunctionCallback.builder() - .method("getBooks", String.class) - .description("Get list of Books by title") - .targetObject(openLibrary) - .build(); - - var bookTitlesByAuthor = FunctionCallback.builder() - .method("getBookTitlesByAuthor", String.class) - .description("Get book titles by author") - .targetObject(openLibrary) - .build(); - - return ToolHelper.toToolRegistration(books, bookTitlesByAuthor); - } - - private static ResourceRegistration systemInfoResourceRegistration() { - - // Create a resource registration for system information - var systemInfoResource = new McpSchema.Resource( // @formatter:off - "system://info", - "System Information", - "Provides basic system information including Java version, OS, etc.", - "application/json", null - ); - - var resourceRegistration = new ResourceRegistration(systemInfoResource, (request) -> { - try { - var systemInfo = Map.of( - "javaVersion", System.getProperty("java.version"), - "osName", System.getProperty("os.name"), - "osVersion", System.getProperty("os.version"), - "osArch", System.getProperty("os.arch"), - "processors", Runtime.getRuntime().availableProcessors(), - "timestamp", System.currentTimeMillis()); - - String jsonContent = new ObjectMapper().writeValueAsString(systemInfo); - - return new McpSchema.ReadResourceResult( - List.of(new McpSchema.TextResourceContents(request.uri(), "application/json", jsonContent))); - } - catch (Exception e) { - throw new RuntimeException("Failed to generate system info", e); - } - }); // @formatter:on - - return resourceRegistration; - } - - private static PromptRegistration greetingPromptRegistration() { - - var prompt = new McpSchema.Prompt("greeting", "A friendly greeting prompt", - List.of(new McpSchema.PromptArgument("name", "The name to greet", true))); - - return new PromptRegistration(prompt, getPromptRequest -> { - - String nameArgument = (String) getPromptRequest.arguments().get("name"); - if (nameArgument == null) { - nameArgument = "friend"; - } - - var userMessage = new PromptMessage(Role.USER, - new TextContent("Hello " + nameArgument + "! How can I assist you today?")); - - return new GetPromptResult("A personalized greeting message", List.of(userMessage)); - }); - } - - private static ToolRegistration weatherToolRegistration(McpAsyncServer server) { - String emptyJsonSchema = """ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": {"city" : "string"} - } - """; - return new ToolRegistration(new McpSchema.Tool("weather", "Weather forecast tool by location", emptyJsonSchema), - (arguments) -> { - String city = (String) arguments.get("city"); - - // Create the result - var result = new CallToolResult( - List.of(new TextContent("Weather forecast for " + city + " is sunny")), false); - - // Send the logging notification and ignore its completion - server - .loggingNotification(LoggingMessageNotification.builder() - .data("This is a log message from the weather tool") - .build()) - .subscribe(null, error -> { - // Log any errors but don't fail the operation - logger.error("Failed to send logging notification", error); - }); - - return result; - }); - } - - private static ToolRegistration calculatorToolRegistration() { - return new ToolRegistration(new McpSchema.Tool("calculator", - "Performs basic arithmetic operations (add, subtract, multiply, divide)", """ - { - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": ["add", "subtract", "multiply", "divide"], - "description": "The arithmetic operation to perform" - }, - "a": { - "type": "number", - "description": "First operand" - }, - "b": { - "type": "number", - "description": "Second operand" - } - }, - "required": ["operation", "a", "b"] - } - """), arguments -> { - String operation = (String) arguments.get("operation"); - double a = (Double) arguments.get("a"); - double b = (Double) arguments.get("b"); - - double result; - switch (operation) { - case "add": - result = a + b; - break; - case "subtract": - result = a - b; - break; - case "multiply": - result = a * b; - break; - case "divide": - if (b == 0) { - return new McpSchema.CallToolResult( - java.util.List.of(new McpSchema.TextContent("Division by zero")), true); - } - result = a / b; - break; - default: - return new McpSchema.CallToolResult( - java.util.List.of(new McpSchema.TextContent("Unknown operation: " + operation)), - true); - } - - return new McpSchema.CallToolResult( - java.util.List.of(new McpSchema.TextContent(String.valueOf(result))), false); - }); - } - - public static String paymentTransactionStatus(String transactionId, String accountName) { - return "The status for " + transactionId + ", by " + accountName + " is PENDING"; - } - - public Function toUpperCase() { - return String::toUpperCase; - } - - @Bean - public OpenLibrary openLibrary() { - return new OpenLibrary(RestClient.builder()); - } - -} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/OpenLibrary.java b/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/OpenLibrary.java deleted file mode 100644 index 3dfe835..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/java/org/springframework/ai/mcp/sample/webmvc/server/OpenLibrary.java +++ /dev/null @@ -1,74 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.sample.webmvc.server; - -import java.util.List; -import java.util.Map; - -import org.springframework.web.client.RestClient; - -/** - * @author Christian Tzolov - */ - -public class OpenLibrary { - - private RestClient restClient; - - public OpenLibrary(RestClient.Builder restClientBuilder) { - this.restClient = restClientBuilder.baseUrl("https://openlibrary.org").build(); - } - - public record Books(Integer numFound, Integer start, Boolean numFoundExact, List> docs) { - } - - public record Book(List isbn, String title, List authorName) { - } - - public List getBooks(String title) { - Books books = restClient.get() - .uri(uriBuilder -> uriBuilder.path("/search.json").queryParam("q", title).build()) - .retrieve() - .body(Books.class); - if (books == null) { - return List.of(); - } - return books.docs.stream() - .map(doc -> new Book((List) doc.get("isbn"), (String) doc.get("title"), - (List) doc.get("author_name"))) - .toList(); - } - - public List getBookTitlesByAuthor(String authorName) { - var books = restClient.get() - .uri(uriBuilder -> uriBuilder.path("/search/authors.json").queryParam("q", authorName).build()) - .retrieve() - .body(Books.class); - if (books == null) { - return List.of(); - } - return books.docs.stream().map(doc -> (String) doc.get("top_work")).toList(); - } - - public static void main(String[] args) { - OpenLibrary openLibrary = new OpenLibrary(RestClient.builder()); - List books = openLibrary.getBooks("Spring Framework"); - System.out.println(books); - List booksByAuthor = openLibrary.getBookTitlesByAuthor("Craig Walls"); - System.out.println(booksByAuthor); - } - -} diff --git a/samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties b/samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties deleted file mode 100644 index 4bc4fbf..0000000 --- a/samples/spring-ai-mcp-webmvc-sample/src/main/resources/application.properties +++ /dev/null @@ -1,8 +0,0 @@ -spring.main.web-application-type=SERVLET - -# NOTE: You must disable the banner and the console logging -# to allow the STDIO transport to work !!! -spring.main.banner-mode=off -logging.pattern.console= - -transport.mode=sse \ No newline at end of file From 69e934e31eff1d6f377cd508e9bc5451f55ee1c6 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 11 Jan 2025 17:37:00 +0100 Subject: [PATCH 044/505] Update overview docs --- mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index d3b66e9..26c3866 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -163,6 +163,8 @@ Explore these MCP examples in the link:https://github.com/spring-projects/spring * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave[Brave] - Enables natural language interactions with Brave Search * link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/samples/spring-ai-mcp-sample[Spring-ai-mcp-sample] - Showcases MCP servers and clients with different transport modes and capabilities * link:https://github.com/habuma/spring-ai-examples/tree/main/spring-ai-mcp[Theme Park API Example] - Shows how to create an MCP server and client with Spring AI, exposing Theme Park API tools +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server[Http SSE Client + WebMvc SSE Server sample] - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities + == Documentation From 59992d10c8196a4b28f485572230aae2c77f1d70 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 11 Jan 2025 17:52:59 +0100 Subject: [PATCH 045/505] Move samples to the spring-ai-examples project - All samples moved to the the https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol - Documentation references are updated. --- 0.5.0-BREAKING-CHANGES.md | 2 +- README.md | 5 +- .../antora/modules/ROOT/pages/overview.adoc | 2 +- .../.mvn/wrapper/maven-wrapper.properties | 19 -- samples/spring-ai-mcp-sample/README.md | 257 --------------- samples/spring-ai-mcp-sample/mvnw | 259 --------------- samples/spring-ai-mcp-sample/mvnw.cmd | 149 --------- samples/spring-ai-mcp-sample/pom.xml | 78 ----- .../ai/mcp/sample/client/ClientStdio.java | 43 --- .../mcp/sample/client/ClientWebFluxSse.java | 32 -- .../ai/mcp/sample/client/SampleClient.java | 88 ----- .../sample/server/McpServerApplication.java | 13 - .../ai/mcp/sample/server/McpServerConfig.java | 308 ------------------ .../ai/mcp/sample/server/OpenLibrary.java | 74 ----- .../src/main/resources/application.properties | 8 - 15 files changed, 6 insertions(+), 1331 deletions(-) delete mode 100644 samples/spring-ai-mcp-sample/.mvn/wrapper/maven-wrapper.properties delete mode 100644 samples/spring-ai-mcp-sample/README.md delete mode 100755 samples/spring-ai-mcp-sample/mvnw delete mode 100644 samples/spring-ai-mcp-sample/mvnw.cmd delete mode 100644 samples/spring-ai-mcp-sample/pom.xml delete mode 100644 samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java delete mode 100644 samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientWebFluxSse.java delete mode 100644 samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java delete mode 100644 samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerApplication.java delete mode 100644 samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java delete mode 100644 samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java delete mode 100644 samples/spring-ai-mcp-sample/src/main/resources/application.properties diff --git a/0.5.0-BREAKING-CHANGES.md b/0.5.0-BREAKING-CHANGES.md index 7321b16..298c917 100644 --- a/0.5.0-BREAKING-CHANGES.md +++ b/0.5.0-BREAKING-CHANGES.md @@ -14,7 +14,7 @@ 3. Project Structure - Test utilities moved to new `mcp-test` module - - Sample application moved to `samples/` directory + - All samples moved to the the https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol ## Migration Guide diff --git a/README.md b/README.md index 328ebfa..a3c2b37 100644 --- a/README.md +++ b/README.md @@ -68,8 +68,11 @@ Explore these MCP examples in the [spring-ai-examples/model-context-protocol](ht - [SQLite Chatbot](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/chatbot) - Interactive chatbot with SQLite database interaction - [Filesystem](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem) - Enables LLM interaction with local filesystem folders and files - [Brave](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave) - Enables natural language interactions with Brave Search, allowing you to perform internet searches. -- [Spring-ai-mcp-sample](./samples/spring-ai-mcp-sample/) - Showcases how to create and use MCP servers and clients with different transport modes and capabilities. +- [Theme Park API Example](https://github.com/habuma/spring-ai-examples/tree/main/spring-ai-mcp) - Shows how to create an MCP server and client with Spring AI, exposing Theme Park API tools - [Http SSE Client + WebMvc SSE Server sample](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server) - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities. +* [Http SSE Client + WebMvc SSE Server sample](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server) - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities + + ## Documentation - [Java MCP SDK documentation](mcp/README.md) diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index 26c3866..8f8993c 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -161,8 +161,8 @@ Explore these MCP examples in the link:https://github.com/spring-projects/spring * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/chatbot[SQLite Chatbot] - Interactive chatbot with SQLite database interaction * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem[Filesystem] - Enables LLM interaction with local filesystem folders and files * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave[Brave] - Enables natural language interactions with Brave Search -* link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/samples/spring-ai-mcp-sample[Spring-ai-mcp-sample] - Showcases MCP servers and clients with different transport modes and capabilities * link:https://github.com/habuma/spring-ai-examples/tree/main/spring-ai-mcp[Theme Park API Example] - Shows how to create an MCP server and client with Spring AI, exposing Theme Park API tools +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webflux-server[WebFlux SSE Client + Server sample] - Showcases how to create and use MCP WebFlux servers and clients with different capabilities * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server[Http SSE Client + WebMvc SSE Server sample] - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities diff --git a/samples/spring-ai-mcp-sample/.mvn/wrapper/maven-wrapper.properties b/samples/spring-ai-mcp-sample/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index d58dfb7..0000000 --- a/samples/spring-ai-mcp-sample/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 -distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/samples/spring-ai-mcp-sample/README.md b/samples/spring-ai-mcp-sample/README.md deleted file mode 100644 index 526bede..0000000 --- a/samples/spring-ai-mcp-sample/README.md +++ /dev/null @@ -1,257 +0,0 @@ -# Spring AI MCP Sample Project - -This sample project demonstrates the usage of the Spring AI Model Context Protocol (MCP) implementation. It showcases how to create and use MCP servers and clients with different transport modes and capabilities. - -## Overview - -The sample provides: -- Two transport mode implementations: Stdio and SSE (Server-Sent Events) -- Server capabilities: - - Tools support with list changes notifications - - Resources support with list changes notifications (no subscribe support) - - Prompts support with list changes notifications -- Sample implementations: - - Two MCP tools: Weather and Calculator - - One MCP resource: System Information - - One MCP prompt: Greeting - -## Building the Project - -```bash -./mvnw clean package -``` - -## Running the Server - -The server can be started in two transport modes, controlled by the `transport.mode` property: - -### Stdio Mode (Default) - -```bash -java -Dtransport.mode=stdio -jar target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar -``` - -The Stdio mode server is automatically started by the client - no explicit server startup is needed. -But you have to build the server jar first: `./mvnw clean install -DskipTests`. - -In Stdio mode the server must not emit any messages/logs to the console (e.g. standard out) but the JSON messages produced by the server. - -### SSE Mode -```bash -java -Dtransport.mode=sse -jar target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar -``` - -## Sample Clients - -The project includes example clients for both transport modes: - -### Stdio Client (ClientStdio.java) -```java -var stdioParams = ServerParameters.builder("java") - .args("-Dtransport.mode=stdio", "-jar", - "target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar") - .build(); - -var transport = new StdioClientTransport(stdioParams); -var client = McpClient.using(transport).sync(); -``` - -### SSE Client (ClientWebFluxSse.java) -```java -var transport = new SseClientTransport(WebClient.builder().baseUrl("http://localhost:8080")); -var client = McpClient.using(transport).sync(); -``` - -## Available Tools - -### Weather Tool -- Name: `weather` -- Description: Weather forecast tool by location -- Parameters: - - `city`: String - The city to get weather for -- Example: -```java -CallToolResult response = client.callTool( - new CallToolRequest("weather", Map.of("city", "Sofia")) -); -``` - -### Calculator Tool -- Name: `calculator` -- Description: Performs basic arithmetic operations -- Parameters (JSON Schema): - ```json - { - "operation": { - "type": "string", - "enum": ["add", "subtract", "multiply", "divide"], - "description": "The arithmetic operation to perform" - }, - "a": { - "type": "number", - "description": "First operand" - }, - "b": { - "type": "number", - "description": "Second operand" - } - } - ``` -- Example: -```java -CallToolResult response = client.callTool( - new CallToolRequest("calculator", - Map.of("operation", "multiply", "a", 2.0, "b", 3.0)) -); -``` - -## Available Resources - -### System Information Resource -- URI: `system://info` -- Description: Provides basic system information including Java version, OS, etc. -- MIME Type: application/json -- Returns: JSON object containing: javaVersion, osName, osVersion, osArch, processors, timestamp - -## Available Prompts - -### Greeting Prompt -- Name: `greeting` -- Description: A friendly greeting prompt -- Parameters: - - `name`: String (required) - The name to greet -- Returns: A personalized greeting message from an assistant - -## Client Usage Example - -```java -// Initialize client -client.initialize(); - -// Test connection -client.ping(); - -// List available tools -ListToolsResult tools = client.listTools(); -System.out.println("Available tools: " + tools); - -// Call weather tool -CallToolResult weather = client.callTool( - new CallToolRequest("weather", Map.of("city", "Sofia")) -); -System.out.println("Weather: " + weather); - -// Call calculator tool -CallToolResult calc = client.callTool( - new CallToolRequest("calculator", - Map.of("operation", "multiply", "a", 2.0, "b", 3.0)) -); -System.out.println("Calculation: " + calc); - -// Access system info resource -ReadResourceResult sysInfo = client.readResource( - new ReadResourceRequest("system://info") -); -System.out.println("System Info: " + sysInfo); - -// Use greeting prompt -GetPromptResult greeting = client.getPrompt( - new GetPromptRequest("greeting", Map.of("name", "John")) -); -System.out.println("Greeting: " + greeting); - -// Close client -client.closeGracefully(); -``` - -## Server Usage Example - -```java -@Configuration -public class CustomMcpServerConfig { - @Bean - public McpAsyncServer mcpServer(McpTransport transport) { - // Configure server capabilities - var capabilities = McpSchema.ServerCapabilities.builder() - .resources(false, true) // Resource support with list changes notifications - .tools(true) // Tool support with list changes notifications - .prompts(true) // Prompt support with list changes notifications - .build(); - - // Create custom tool - var customTool = new ToolRegistration( - new McpSchema.Tool("custom-tool", "Description", Map.of("param", "String")), - (arguments) -> { - String param = (String) arguments.get("param"); - return new CallToolResult( - List.of(new TextContent("Result: " + param)), - false - ); - } - ); - - // Create custom resource - var customResource = new ResourceRegistration( - new McpSchema.Resource( - "custom://resource", - "Custom Resource", - "Description", - "application/json", - null - ), - (request) -> new ReadResourceResult( - List.of(new TextResourceContents( - request.uri(), - "application/json", - "{\"data\": \"example\"}" - )) - ) - ); - - // Create custom prompt - var customPrompt = new PromptRegistration( - new McpSchema.Prompt( - "custom-prompt", - "Description", - List.of(new McpSchema.PromptArgument("input", "Description", true)) - ), - request -> { - String input = (String) request.arguments().get("input"); - var message = new PromptMessage( - Role.ASSISTANT, - new TextContent("Response to: " + input) - ); - return new GetPromptResult("Result", List.of(message)); - } - ); - - // Create and configure the server - return McpServer.using(transport) - .info("Custom MCP Server", "1.0.0") - .capabilities(capabilities) - .tools(List.of(customTool)) - .resources(Map.of("custom://resource", customResource)) - .prompts(List.of(customPrompt)) - .async(); - } -} -``` - -## Configuration - -The application can be configured through `application.properties`: - -- `transport.mode`: Transport mode to use (stdio/sse) -- `server.port`: Server port for SSE mode (default: 8080) -- Various logging configurations are available for debugging - -## Implementation Details - -The sample demonstrates: -- Creating an MCP server with custom tools, resources, and prompts -- Configuring different transport modes -- Implementing tool handlers with JSON schema validation -- Resource implementations with dynamic content generation -- Prompt implementations with parameter handling -- Error handling and response formatting -- Synchronous client usage patterns diff --git a/samples/spring-ai-mcp-sample/mvnw b/samples/spring-ai-mcp-sample/mvnw deleted file mode 100755 index 19529dd..0000000 --- a/samples/spring-ai-mcp-sample/mvnw +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.2 -# -# Optional ENV vars -# ----------------- -# JAVA_HOME - location of a JDK home dir, required when download maven via java source -# MVNW_REPOURL - repo url base for downloading maven distribution -# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output -# ---------------------------------------------------------------------------- - -set -euf -[ "${MVNW_VERBOSE-}" != debug ] || set -x - -# OS specific support. -native_path() { printf %s\\n "$1"; } -case "$(uname)" in -CYGWIN* | MINGW*) - [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" - native_path() { cygpath --path --windows "$1"; } - ;; -esac - -# set JAVACMD and JAVACCMD -set_java_home() { - # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched - if [ -n "${JAVA_HOME-}" ]; then - if [ -x "$JAVA_HOME/jre/sh/java" ]; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - JAVACCMD="$JAVA_HOME/jre/sh/javac" - else - JAVACMD="$JAVA_HOME/bin/java" - JAVACCMD="$JAVA_HOME/bin/javac" - - if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then - echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 - echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 - return 1 - fi - fi - else - JAVACMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v java - )" || : - JAVACCMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v javac - )" || : - - if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then - echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 - return 1 - fi - fi -} - -# hash string like Java String::hashCode -hash_string() { - str="${1:-}" h=0 - while [ -n "$str" ]; do - char="${str%"${str#?}"}" - h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) - str="${str#?}" - done - printf %x\\n $h -} - -verbose() { :; } -[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } - -die() { - printf %s\\n "$1" >&2 - exit 1 -} - -trim() { - # MWRAPPER-139: - # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. - # Needed for removing poorly interpreted newline sequences when running in more - # exotic environments such as mingw bash on Windows. - printf "%s" "${1}" | tr -d '[:space:]' -} - -# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties -while IFS="=" read -r key value; do - case "${key-}" in - distributionUrl) distributionUrl=$(trim "${value-}") ;; - distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; - esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" - -case "${distributionUrl##*/}" in -maven-mvnd-*bin.*) - MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ - case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in - *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; - :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; - :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; - :Linux*x86_64*) distributionPlatform=linux-amd64 ;; - *) - echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 - distributionPlatform=linux-amd64 - ;; - esac - distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" - ;; -maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; -esac - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" -distributionUrlName="${distributionUrl##*/}" -distributionUrlNameMain="${distributionUrlName%.*}" -distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" -MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" - -exec_maven() { - unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : - exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" -} - -if [ -d "$MAVEN_HOME" ]; then - verbose "found existing MAVEN_HOME at $MAVEN_HOME" - exec_maven "$@" -fi - -case "${distributionUrl-}" in -*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; -*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; -esac - -# prepare tmp dir -if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then - clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } - trap clean HUP INT TERM EXIT -else - die "cannot create temp dir" -fi - -mkdir -p -- "${MAVEN_HOME%/*}" - -# Download and Install Apache Maven -verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -verbose "Downloading from: $distributionUrl" -verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -# select .zip or .tar.gz -if ! command -v unzip >/dev/null; then - distributionUrl="${distributionUrl%.zip}.tar.gz" - distributionUrlName="${distributionUrl##*/}" -fi - -# verbose opt -__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' -[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v - -# normalize http auth -case "${MVNW_PASSWORD:+has-password}" in -'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; -has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; -esac - -if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then - verbose "Found wget ... using wget" - wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" -elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then - verbose "Found curl ... using curl" - curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" -elif set_java_home; then - verbose "Falling back to use Java to download" - javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" - targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" - cat >"$javaSource" <<-END - public class Downloader extends java.net.Authenticator - { - protected java.net.PasswordAuthentication getPasswordAuthentication() - { - return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); - } - public static void main( String[] args ) throws Exception - { - setDefault( new Downloader() ); - java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); - } - } - END - # For Cygwin/MinGW, switch paths to Windows format before running javac and java - verbose " - Compiling Downloader.java ..." - "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" - verbose " - Running Downloader.java ..." - "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" -fi - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -if [ -n "${distributionSha256Sum-}" ]; then - distributionSha256Result=false - if [ "$MVN_CMD" = mvnd.sh ]; then - echo "Checksum validation is not supported for maven-mvnd." >&2 - echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - elif command -v shasum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - else - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 - echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - fi - if [ $distributionSha256Result = false ]; then - echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 - echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 - exit 1 - fi -fi - -# unzip and move -if command -v unzip >/dev/null; then - unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" -else - tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" -fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" - -clean || : -exec_maven "$@" diff --git a/samples/spring-ai-mcp-sample/mvnw.cmd b/samples/spring-ai-mcp-sample/mvnw.cmd deleted file mode 100644 index 249bdf3..0000000 --- a/samples/spring-ai-mcp-sample/mvnw.cmd +++ /dev/null @@ -1,149 +0,0 @@ -<# : batch portion -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.2 -@REM -@REM Optional ENV vars -@REM MVNW_REPOURL - repo url base for downloading maven distribution -@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output -@REM ---------------------------------------------------------------------------- - -@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) -@SET __MVNW_CMD__= -@SET __MVNW_ERROR__= -@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% -@SET PSModulePath= -@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( - IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) -) -@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% -@SET __MVNW_PSMODULEP_SAVE= -@SET __MVNW_ARG0_NAME__= -@SET MVNW_USERNAME= -@SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) -@echo Cannot start maven from wrapper >&2 && exit /b 1 -@GOTO :EOF -: end batch / begin powershell #> - -$ErrorActionPreference = "Stop" -if ($env:MVNW_VERBOSE -eq "true") { - $VerbosePreference = "Continue" -} - -# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties -$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl -if (!$distributionUrl) { - Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" -} - -switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { - "maven-mvnd-*" { - $USE_MVND = $true - $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" - $MVN_CMD = "mvnd.cmd" - break - } - default { - $USE_MVND = $false - $MVN_CMD = $script -replace '^mvnw','mvn' - break - } -} - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" -} -$distributionUrlName = $distributionUrl -replace '^.*/','' -$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" -if ($env:MAVEN_USER_HOME) { - $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" -} -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' -$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" - -if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { - Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" - Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" - exit $? -} - -if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { - Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" -} - -# prepare tmp dir -$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile -$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" -$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null -trap { - if ($TMP_DOWNLOAD_DIR.Exists) { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } - } -} - -New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null - -# Download and Install Apache Maven -Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -Write-Verbose "Downloading from: $distributionUrl" -Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -$webclient = New-Object System.Net.WebClient -if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { - $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) -} -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum -if ($distributionSha256Sum) { - if ($USE_MVND) { - Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." - } - Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash - if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { - Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." - } -} - -# unzip and move -Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null -try { - Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null -} catch { - if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { - Write-Error "fail to move MAVEN_HOME" - } -} finally { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } -} - -Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/samples/spring-ai-mcp-sample/pom.xml b/samples/spring-ai-mcp-sample/pom.xml deleted file mode 100644 index fc3c40b..0000000 --- a/samples/spring-ai-mcp-sample/pom.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 3.4.1 - - - - org.springframework.experimental - spring-ai-mcp-sample - 0.5.0-SNAPSHOT - - Spring AI MCP StdIO and WebFluxSSE Sample - Sample Spring Boot application demonstrating MCP server usage - - - 0.5.0-SNAPSHOT - - - - - org.springframework.experimental - mcp-webflux-sse-transport - ${spring-ai-mcp.version} - - - - org.springframework.experimental - spring-ai-mcp - ${spring-ai-mcp.version} - - - - org.springframework.boot - spring-boot-starter-webflux - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - - - - io.spring.javaformat - spring-javaformat-maven-plugin - 0.0.43 - - - validate - true - - validate - - - - - - - \ No newline at end of file diff --git a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java deleted file mode 100644 index 74d0e44..0000000 --- a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientStdio.java +++ /dev/null @@ -1,43 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.sample.client; - -import java.io.File; - -import org.springframework.ai.mcp.client.transport.ServerParameters; -import org.springframework.ai.mcp.client.transport.StdioClientTransport; - -/** - * With stdio transport, the MCP server is automatically started by the client. But you - * have to build the server jar first:
    ./mvnw clean install -DskipTests
    - */ -public class ClientStdio { - - public static void main(String[] args) { - - System.out.println(new File(".").getAbsolutePath()); - - var stdioParams = ServerParameters.builder("java") - .args("-Dtransport.mode=stdio", "-jar", - "samples/spring-ai-mcp-sample/target/spring-ai-mcp-sample-0.5.0-SNAPSHOT.jar") - .build(); - - var transport = new StdioClientTransport(stdioParams); - - new SampleClient(transport).run(); - } - -} diff --git a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientWebFluxSse.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientWebFluxSse.java deleted file mode 100644 index de0b211..0000000 --- a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/ClientWebFluxSse.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.sample.client; - -import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; -import org.springframework.web.reactive.function.client.WebClient; - -/** - * @author Christian Tzolov - */ -public class ClientWebFluxSse { - - public static void main(String[] args) { - var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080")); - - new SampleClient(transport).run(); - } - -} diff --git a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java deleted file mode 100644 index 4907e5d..0000000 --- a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/client/SampleClient.java +++ /dev/null @@ -1,88 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.sample.client; - -import java.util.Map; - -import org.springframework.ai.mcp.client.McpClient; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; -import org.springframework.ai.mcp.spec.McpSchema.ListPromptsResult; -import org.springframework.ai.mcp.spec.McpSchema.ListToolsResult; -import org.springframework.ai.mcp.spec.McpSchema.ReadResourceRequest; -import org.springframework.ai.mcp.spec.McpTransport; - -/** - * @author Christian Tzolov - */ - -public class SampleClient { - - private final ClientMcpTransport transport; - - public SampleClient(ClientMcpTransport transport) { - this.transport = transport; - } - - public void run() { - - var client = McpClient.using(this.transport).sync(); - - client.initialize(); - - client.ping(); - - // List and demonstrate tools - ListToolsResult toolsList = client.listTools(); - System.out.println("Available Tools = " + toolsList); - - CallToolResult weatherResponse = client.callTool(new CallToolRequest("weather", Map.of("city", "Sofia"))); - System.out.println("Weather Response = " + weatherResponse); - - CallToolResult calcResponse = client - .callTool(new CallToolRequest("calculator", Map.of("operation", "multiply", "a", 2.0, "b", 3.0))); - System.out.println("Calculator Response = " + calcResponse); - - CallToolResult paymentStatus = client.callTool( - new CallToolRequest("paymentTransactionStatus", Map.of("transactionId", "006", "accountName", "John"))); - System.out.println("Payment Status Response = " + paymentStatus); - - CallToolResult parks = client.callTool(new CallToolRequest("getBooks", Map.of("title", "Spring Framework"))); - System.out.println("Books Response = " + parks); - - // List and demonstrate resources - var resourcesList = client.listResources(); - System.out.println("\nAvailable Resources = " + resourcesList); - - // Read the system info resource - var systemInfo = client.readResource(new ReadResourceRequest("system://info")); - System.out.println("System Info = " + systemInfo); - - // List and demonstrate prompts - ListPromptsResult promptsList = client.listPrompts(); - System.out.println("\nAvailable Prompts = " + promptsList); - - // Try the greeting prompt - var greetingResponse = client.getPrompt(new GetPromptRequest("greeting", Map.of("name", "Spring"))); - System.out.println("Greeting Response = " + greetingResponse); - - client.closeGracefully(); - - } - -} diff --git a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerApplication.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerApplication.java deleted file mode 100644 index 586f8d8..0000000 --- a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerApplication.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.springframework.ai.mcp.sample.server; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class McpServerApplication { - - public static void main(String[] args) { - SpringApplication.run(McpServerApplication.class, args); - } - -} diff --git a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java deleted file mode 100644 index de7a95c..0000000 --- a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/McpServerConfig.java +++ /dev/null @@ -1,308 +0,0 @@ -package org.springframework.ai.mcp.sample.server; - -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.ai.mcp.server.McpAsyncServer; -import org.springframework.ai.mcp.server.McpServer; -import org.springframework.ai.mcp.server.McpServer.PromptRegistration; -import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; -import org.springframework.ai.mcp.server.transport.StdioServerTransport; -import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; -import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; -import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; -import org.springframework.ai.mcp.spec.McpSchema.Role; -import org.springframework.ai.mcp.spec.McpSchema.TextContent; -import org.springframework.ai.mcp.spec.ServerMcpTransport; -import org.springframework.ai.mcp.spring.ToolHelper; -import org.springframework.ai.model.function.FunctionCallback; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.client.RestClient; -import org.springframework.web.reactive.function.server.RouterFunction; - -@Configuration -public class McpServerConfig { - - private static final Logger logger = LoggerFactory.getLogger(McpServerConfig.class); - - // STDIO transport - @Bean - @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "stdio") - public StdioServerTransport stdioServerTransport() { - return new StdioServerTransport(); - } - - // SSE transport - @Bean - @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") - public WebFluxSseServerTransport sseServerTransport() { - return new WebFluxSseServerTransport(new ObjectMapper(), "/mcp/message"); - } - - // Router function for SSE transport used by Spring WebFlux to start an HTTP - // server. - @Bean - @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse") - public RouterFunction mcpRouterFunction(WebFluxSseServerTransport transport) { - return transport.getRouterFunction(); - } - - // SSE transport - // @Bean - // @ConditionalOnProperty(prefix = "transport", name = "mode", havingValue = "sse2") - // public HttpServletSseServerTransport sseServerTransport2() { - // var httpTransport = new HttpServletSseServerTransport(new ObjectMapper(), - // "/mcp/message"); - - // // Create and configure Jetty server - // Server server = new Server(8080); - - // ServletContextHandler context = new - // ServletContextHandler(ServletContextHandler.SESSIONS); - // context.setContextPath("/"); - // server.setHandler(context); - - // // Add our SSE servlet - // context.addServlet(new ServletHolder(httpTransport), "/sse"); - - // // Start the server - // try { - // server.start(); - // System.out.println("Server started on http://localhost:8080/sse"); - // server.join(); - // } - // catch (Exception e) { - // e.printStackTrace(); - // try { - // server.stop(); - // } - // catch (Exception e1) { - // e1.printStackTrace(); - // } - // } - - // return httpTransport; - // } - - @Bean - public McpAsyncServer mcpServer(ServerMcpTransport transport, OpenLibrary openLibrary) { // @formatter:off - - // Configure server capabilities with resource support - var capabilities = McpSchema.ServerCapabilities.builder() - .resources(false, true) // No subscribe support, but list changes notifications - .tools(true) // Tool support with list changes notifications - .prompts(true) // Prompt support with list changes notifications - .logging() // Logging support - .build(); - - // Create the server with both tool and resource capabilities - var server = McpServer.using(transport) - .serverInfo("MCP Demo Server", "1.0.0") - .capabilities(capabilities) - .resources(systemInfoResourceRegistration()) - .prompts(greetingPromptRegistration()) - .tools(calculatorToolRegistration(), - ToolHelper.toToolRegistration( - FunctionCallback.builder() - .method("paymentTransactionStatus",String.class, String.class) - .description("Get transaction payment status") - .targetClass(McpServerConfig.class) - .build()), - ToolHelper.toToolRegistration( - FunctionCallback.builder() - .function("toUpperCase", new Function() { - @Override - public String apply(String s) { - return s.toUpperCase(); - } - }) - .description("To upper case") - .inputType(String.class) - .build())) - .tools(openLibraryToolRegistrations(openLibrary)) - .async(); - - server.addTool(weatherToolRegistration(server)); - return server; // @formatter:on - } // @formatter:on - - public static List openLibraryToolRegistrations(OpenLibrary openLibrary) { - - var books = FunctionCallback.builder() - .method("getBooks", String.class) - .description("Get list of Books by title") - .targetObject(openLibrary) - .build(); - - var bookTitlesByAuthor = FunctionCallback.builder() - .method("getBookTitlesByAuthor", String.class) - .description("Get book titles by author") - .targetObject(openLibrary) - .build(); - - return ToolHelper.toToolRegistration(books, bookTitlesByAuthor); - } - - private static ResourceRegistration systemInfoResourceRegistration() { - - // Create a resource registration for system information - var systemInfoResource = new McpSchema.Resource( // @formatter:off - "system://info", - "System Information", - "Provides basic system information including Java version, OS, etc.", - "application/json", null - ); - - var resourceRegistration = new ResourceRegistration(systemInfoResource, (request) -> { - try { - var systemInfo = Map.of( - "javaVersion", System.getProperty("java.version"), - "osName", System.getProperty("os.name"), - "osVersion", System.getProperty("os.version"), - "osArch", System.getProperty("os.arch"), - "processors", Runtime.getRuntime().availableProcessors(), - "timestamp", System.currentTimeMillis()); - - String jsonContent = new ObjectMapper().writeValueAsString(systemInfo); - - return new McpSchema.ReadResourceResult( - List.of(new McpSchema.TextResourceContents(request.uri(), "application/json", jsonContent))); - } - catch (Exception e) { - throw new RuntimeException("Failed to generate system info", e); - } - }); // @formatter:on - - return resourceRegistration; - } - - private static PromptRegistration greetingPromptRegistration() { - - var prompt = new McpSchema.Prompt("greeting", "A friendly greeting prompt", - List.of(new McpSchema.PromptArgument("name", "The name to greet", true))); - - return new PromptRegistration(prompt, getPromptRequest -> { - - String nameArgument = (String) getPromptRequest.arguments().get("name"); - if (nameArgument == null) { - nameArgument = "friend"; - } - - var userMessage = new PromptMessage(Role.USER, - new TextContent("Hello " + nameArgument + "! How can I assist you today?")); - - return new GetPromptResult("A personalized greeting message", List.of(userMessage)); - }); - } - - private static ToolRegistration weatherToolRegistration(McpAsyncServer server) { - String emptyJsonSchema = """ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": {"city" : "string"} - } - """; - return new ToolRegistration(new McpSchema.Tool("weather", "Weather forecast tool by location", emptyJsonSchema), - (arguments) -> { - String city = (String) arguments.get("city"); - - // Create the result - var result = new CallToolResult( - List.of(new TextContent("Weather forecast for " + city + " is sunny")), false); - - // Send the logging notification and ignore its completion - server - .loggingNotification(LoggingMessageNotification.builder() - .data("This is a log message from the weather tool") - .build()) - .subscribe(null, error -> { - // Log any errors but don't fail the operation - logger.error("Failed to send logging notification", error); - }); - - return result; - }); - } - - private static ToolRegistration calculatorToolRegistration() { - return new ToolRegistration(new McpSchema.Tool("calculator", - "Performs basic arithmetic operations (add, subtract, multiply, divide)", """ - { - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": ["add", "subtract", "multiply", "divide"], - "description": "The arithmetic operation to perform" - }, - "a": { - "type": "number", - "description": "First operand" - }, - "b": { - "type": "number", - "description": "Second operand" - } - }, - "required": ["operation", "a", "b"] - } - """), arguments -> { - String operation = (String) arguments.get("operation"); - double a = (Double) arguments.get("a"); - double b = (Double) arguments.get("b"); - - double result; - switch (operation) { - case "add": - result = a + b; - break; - case "subtract": - result = a - b; - break; - case "multiply": - result = a * b; - break; - case "divide": - if (b == 0) { - return new McpSchema.CallToolResult( - java.util.List.of(new McpSchema.TextContent("Division by zero")), true); - } - result = a / b; - break; - default: - return new McpSchema.CallToolResult( - java.util.List.of(new McpSchema.TextContent("Unknown operation: " + operation)), - true); - } - - return new McpSchema.CallToolResult( - java.util.List.of(new McpSchema.TextContent(String.valueOf(result))), false); - }); - } - - public static String paymentTransactionStatus(String transactionId, String accountName) { - return "The status for " + transactionId + ", by " + accountName + " is PENDING"; - } - - public Function toUpperCase() { - return String::toUpperCase; - } - - @Bean - public OpenLibrary openLibrary() { - return new OpenLibrary(RestClient.builder()); - } - -} diff --git a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java b/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java deleted file mode 100644 index 7f96573..0000000 --- a/samples/spring-ai-mcp-sample/src/main/java/org/springframework/ai/mcp/sample/server/OpenLibrary.java +++ /dev/null @@ -1,74 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.sample.server; - -import java.util.List; -import java.util.Map; - -import org.springframework.web.client.RestClient; - -/** - * @author Christian Tzolov - */ - -public class OpenLibrary { - - private RestClient restClient; - - public OpenLibrary(RestClient.Builder restClientBuilder) { - this.restClient = restClientBuilder.baseUrl("https://openlibrary.org").build(); - } - - public record Books(Integer numFound, Integer start, Boolean numFoundExact, List> docs) { - } - - public record Book(List isbn, String title, List authorName) { - } - - public List getBooks(String title) { - Books books = restClient.get() - .uri(uriBuilder -> uriBuilder.path("/search.json").queryParam("q", title).build()) - .retrieve() - .body(Books.class); - if (books == null) { - return List.of(); - } - return books.docs.stream() - .map(doc -> new Book((List) doc.get("isbn"), (String) doc.get("title"), - (List) doc.get("author_name"))) - .toList(); - } - - public List getBookTitlesByAuthor(String authorName) { - var books = restClient.get() - .uri(uriBuilder -> uriBuilder.path("/search/authors.json").queryParam("q", authorName).build()) - .retrieve() - .body(Books.class); - if (books == null) { - return List.of(); - } - return books.docs.stream().map(doc -> (String) doc.get("top_work")).toList(); - } - - public static void main(String[] args) { - OpenLibrary openLibrary = new OpenLibrary(RestClient.builder()); - List books = openLibrary.getBooks("Spring Framework"); - System.out.println(books); - List booksByAuthor = openLibrary.getBookTitlesByAuthor("Craig Walls"); - System.out.println(booksByAuthor); - } - -} diff --git a/samples/spring-ai-mcp-sample/src/main/resources/application.properties b/samples/spring-ai-mcp-sample/src/main/resources/application.properties deleted file mode 100644 index 4a0226c..0000000 --- a/samples/spring-ai-mcp-sample/src/main/resources/application.properties +++ /dev/null @@ -1,8 +0,0 @@ -# spring.main.web-application-type=none - -# NOTE: You must disable the banner and the console logging -# to allow the STDIO transport to work !!! -spring.main.banner-mode=off -logging.pattern.console= - -transport.mode=sse \ No newline at end of file From fa278726ae27c845e0b540d6ac464a0c2e9f6871 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 11 Jan 2025 18:05:51 +0100 Subject: [PATCH 046/505] update doc diagrams --- .../ROOT/images/spring-ai-mcp-architecture.jpg | Bin 753882 -> 0 bytes .../ROOT/images/spring-ai-mcp-architecture.png | Bin 0 -> 123606 bytes .../antora/modules/ROOT/pages/overview.adoc | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg create mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.png diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg deleted file mode 100644 index 7463b847256e5ffd25bd93f5216070ea4ab67a0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 753882 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:p1i{1GmV{2_*N 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%0AC5Q%TxdBm@fxiO1SS4yyX!=?T!@xWtc3lQA~5 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 z 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 L(FmOVKJfnlgrVJU diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.png b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..77227f8b59e63bea11defd2ecf658d00b585d6a0 GIT binary patch literal 123606 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 Of0ClIB9%h=f&T~pVl(jo literal 0 HcmV?d00001 diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index 8f8993c..673ccaf 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -3,7 +3,7 @@ Set of tools to provide Java SDK and Spring Framework integration for the link:https://modelcontextprotocol.org/docs/concepts/architecture[Model Context Protocol]. It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. -image::spring-ai-mcp-architecture.jpg[Spring AI MCP Architecture,600] +image::spring-ai-mcp-architecture.png[Spring AI MCP Architecture,600] == Projects From bfd07b4cdaf00b316283cbb31fbbdeee897b8706 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 11 Jan 2025 18:25:17 +0100 Subject: [PATCH 047/505] refactor(transport): Simplify WebMvc SSE transport with native Spring SseBuilder Replaces custom BlockingQueue-based SSE implementation with Spring's native SseBuilder for simpler and more reliable event handling. This change: - Removes custom SSEEvent and queue implementation - Uses Spring's SseBuilder directly for SSE event management - Improves error handling with direct error reporting - Reduces complexity in session management --- .../transport/WebMvcSseServerTransport.java | 47 +++++++------------ 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java index 7e675a7..cedd4b6 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java @@ -18,10 +18,7 @@ package org.springframework.ai.mcp.server.transport; import java.io.IOException; import java.util.UUID; -import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.TimeUnit; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; @@ -39,6 +36,7 @@ import org.springframework.web.servlet.function.RouterFunction; import org.springframework.web.servlet.function.RouterFunctions; import org.springframework.web.servlet.function.ServerRequest; import org.springframework.web.servlet.function.ServerResponse; +import org.springframework.web.servlet.function.ServerResponse.SseBuilder; /** * Server-side implementation of the MCP HTTP with SSE transport specification using @@ -122,11 +120,11 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { sessions.values().forEach(session -> { try { - var event = new SSEEvent(session.id, MESSAGE_EVENT_TYPE, jsonText); - session.queue.put(event); + session.sseBuilder.id(session.id).event(MESSAGE_EVENT_TYPE).data(jsonText); } catch (Exception e) { logger.error("Failed to send message to session {}: {}", session.id, e.getMessage()); + session.sseBuilder.error(e); } }); } @@ -147,27 +145,20 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { String sessionId = UUID.randomUUID().toString(); logger.debug("Creating new SSE connection for session: {}", sessionId); - ClientSession session = new ClientSession(sessionId); - this.sessions.put(sessionId, session); - // Send initial endpoint event try { - session.queue.put(new SSEEvent(session.id, ENDPOINT_EVENT_TYPE, messageEndpoint)); return ServerResponse.sse(sseBuilder -> { - // new Thread(() -> { - while (!this.isClosing) { - try { - SSEEvent sseEvent = session.queue.poll(100, TimeUnit.MILLISECONDS); - if (sseEvent != null) { - sseBuilder.id(sseEvent.id).event(sseEvent.type()).data(sseEvent.data()); - } - } - catch (Exception e) { - logger.error("Failed to poll event from session queue: {}", e.getMessage()); - sseBuilder.error(e); - } + + ClientSession session = new ClientSession(sessionId, sseBuilder); + this.sessions.put(sessionId, session); + + try { + session.sseBuilder.id(session.id).event(ENDPOINT_EVENT_TYPE).data(messageEndpoint); + } + catch (Exception e) { + logger.error("Failed to poll event from session queue: {}", e.getMessage()); + sseBuilder.error(e); } - // }).start(); }); } catch (Exception e) { @@ -205,9 +196,6 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { } } - record SSEEvent(String id, String type, String data) { - } - /** * Represents an active client session. */ @@ -215,22 +203,23 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { private final String id; - private final BlockingQueue queue; + private final SseBuilder sseBuilder; - ClientSession(String id) { + ClientSession(String id, SseBuilder sseBuilder) { this.id = id; - this.queue = new LinkedBlockingQueue<>(); + this.sseBuilder = sseBuilder; logger.debug("Session {} initialized with SSE emitter", id); } void close() { logger.debug("Closing session: {}", id); try { - queue.remove(); + sseBuilder.complete(); logger.debug("Successfully completed SSE emitter for session {}", id); } catch (Exception e) { logger.warn("Failed to complete SSE emitter for session {}: {}", id, e.getMessage()); + // sseBuilder.error(e); } } From 2a612360b32bc22846c5cb6eb3f6f875cb8d276a Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sat, 11 Jan 2025 19:08:39 +0100 Subject: [PATCH 048/505] Minor documentation links corrections --- README.md | 2 +- mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a3c2b37..d8d9d6e 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Explore these MCP examples in the [spring-ai-examples/model-context-protocol](ht - [Brave](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave) - Enables natural language interactions with Brave Search, allowing you to perform internet searches. - [Theme Park API Example](https://github.com/habuma/spring-ai-examples/tree/main/spring-ai-mcp) - Shows how to create an MCP server and client with Spring AI, exposing Theme Park API tools - [Http SSE Client + WebMvc SSE Server sample](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server) - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities. -* [Http SSE Client + WebMvc SSE Server sample](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server) - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities +* [WebFlux SSE Client + WebFlux SSE Server sample](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webflux-server) - Showcases how to create and use MCP WebFlux servers and clients with different capabilities ## Documentation diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index 673ccaf..dc077ce 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -162,7 +162,7 @@ Explore these MCP examples in the link:https://github.com/spring-projects/spring * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem[Filesystem] - Enables LLM interaction with local filesystem folders and files * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave[Brave] - Enables natural language interactions with Brave Search * link:https://github.com/habuma/spring-ai-examples/tree/main/spring-ai-mcp[Theme Park API Example] - Shows how to create an MCP server and client with Spring AI, exposing Theme Park API tools -* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webflux-server[WebFlux SSE Client + Server sample] - Showcases how to create and use MCP WebFlux servers and clients with different capabilities +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webflux-server[WebFlux SSE Client + WebFlux SSE Server sample] - Showcases how to create and use MCP WebFlux servers and clients with different capabilities * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server[Http SSE Client + WebMvc SSE Server sample] - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities From 299eee944a5e37841379fe6165a5fe3d4426dca3 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 12 Jan 2025 08:46:39 +0100 Subject: [PATCH 049/505] docs: improve transport layer documentation and code cleanup - Add comprehensive Javadoc for SSE transport implementations - Document key features and implementation details for WebFlux/WebMVC transports - Refactor FlowSseClient to use records for better immutability - Fix typo in prompt property name - Remove unused code and improve readability --- .../transport/WebFluxSseClientTransport.java | 55 +++++- .../transport/WebFluxSseServerTransport.java | 141 ++++++++++++++- .../transport/WebMvcSseServerTransport.java | 132 ++++++++++++-- .../mcp/client/transport/FlowSseClient.java | 170 +++++++++++------- .../HttpClientSseClientTransport.java | 100 ++++++++++- .../ai/mcp/server/McpAsyncServer.java | 10 +- .../ai/mcp/server/McpServer.java | 6 +- 7 files changed, 507 insertions(+), 107 deletions(-) diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java index ed24f6f..0505372 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java @@ -61,10 +61,9 @@ import org.springframework.web.reactive.function.client.WebClient; *

  • The client establishes an SSE connection to the server's /sse endpoint
  • *
  • The server sends an 'endpoint' event containing the URI for sending messages
  • * - * - * This implementation handles automatic reconnection for transient failures and provides - * graceful shutdown capabilities. It uses {@link WebClient} for HTTP communications and - * supports JSON serialization/deserialization of messages. + * + * This implementation uses {@link WebClient} for HTTP communications and supports JSON + * serialization/deserialization of messages. * * @author Christian Tzolov * @see + * The connection process follows these steps: + *
      + *
    1. Establishes an SSE connection to the server's /sse endpoint
    2. + *
    3. Waits for the server to send an 'endpoint' event with the message posting + * URI
    4. + *
    5. Sets up message handling for incoming JSON-RPC messages
    6. + *
    + * + *

    + * The connection is considered established only after receiving the endpoint event + * from the server. + * @param handler a function that processes incoming JSON-RPC messages and returns + * responses + * @return a Mono that completes when the connection is fully established + * @throws McpError if there's an error processing SSE events or if an unrecognized + * event type is received + */ @Override public Mono connect(Function, Mono> handler) { Flux> events = eventStream(); @@ -190,6 +211,18 @@ public class WebFluxSseClientTransport implements ClientMcpTransport { return messageEndpointSink.asMono().then(); } + /** + * Sends a JSON-RPC message to the server using the endpoint provided during + * connection. + * + *

    + * Messages are sent via HTTP POST requests to the server-provided endpoint URI. The + * message is serialized to JSON before transmission. If the transport is in the + * process of closing, the message send operation is skipped gracefully. + * @param message the JSON-RPC message to send + * @return a Mono that completes when the message has been sent successfully + * @throws RuntimeException if message serialization fails + */ @Override public Mono sendMessage(JSONRPCMessage message) { // The messageEndpoint is the endpoint URI to send the messages @@ -281,6 +314,20 @@ public class WebFluxSseClientTransport implements ClientMcpTransport { .subscribeOn(Schedulers.boundedElastic()); } // @formatter:on + /** + * Unmarshals data from a generic Object into the specified type using the configured + * ObjectMapper. + * + *

    + * This method is particularly useful when working with JSON-RPC parameters or result + * objects that need to be converted to specific Java types. It leverages Jackson's + * type conversion capabilities to handle complex object structures. + * @param the target type to convert the data into + * @param data the source object to convert + * @param typeRef the TypeReference describing the target type + * @return the unmarshaled object of type T + * @throws IllegalArgumentException if the conversion cannot be performed + */ @Override public T unmarshalFrom(Object data, TypeReference typeRef) { return this.objectMapper.convertValue(data, typeRef); diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java index 0159258..88812ad 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java @@ -28,10 +28,37 @@ import org.springframework.web.reactive.function.server.ServerRequest; import org.springframework.web.reactive.function.server.ServerResponse; /** - * Server-side implementation of the MCP HTTP with SSE transport specification. Provides - * endpoints for SSE connections and message handling. + * Server-side implementation of the MCP (Model Context Protocol) HTTP transport using + * Server-Sent Events (SSE). This implementation provides a bidirectional communication + * channel between MCP clients and servers using HTTP POST for client-to-server messages + * and SSE for server-to-client messages. + * + *

    + * Key features: + *

      + *
    • Implements the {@link ServerMcpTransport} interface for MCP server transport + * functionality
    • + *
    • Uses WebFlux for non-blocking request handling and SSE support
    • + *
    • Maintains client sessions for reliable message delivery
    • + *
    • Supports graceful shutdown with session cleanup
    • + *
    • Thread-safe message broadcasting to multiple clients
    • + *
    + * + *

    + * The transport sets up two main endpoints: + *

      + *
    • SSE endpoint (/sse) - For establishing SSE connections with clients
    • + *
    • Message endpoint (configurable) - For receiving JSON-RPC messages from clients
    • + *
    + * + *

    + * This implementation is thread-safe and can handle multiple concurrent client + * connections. It uses {@link ConcurrentHashMap} for session management and Reactor's + * {@link Sinks} for thread-safe message broadcasting. * * @author Christian Tzolov + * @see ServerMcpTransport + * @see ServerSentEvent */ public class WebFluxSseServerTransport implements ServerMcpTransport { @@ -71,9 +98,13 @@ public class WebFluxSseServerTransport implements ServerMcpTransport { private Function, Mono> connectHandler; /** - * Constructs a new SseServerTransport. + * Constructs a new WebFlux SSE server transport instance. * @param objectMapper The ObjectMapper to use for JSON serialization/deserialization - * @param messageEndpoint The endpoint URI where clients should send messages + * of MCP messages. Must not be null. + * @param messageEndpoint The endpoint URI where clients should send their JSON-RPC + * messages. This endpoint will be communicated to clients during SSE connection + * setup. Must not be null. + * @throws IllegalArgumentException if either parameter is null */ public WebFluxSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { Assert.notNull(objectMapper, "ObjectMapper must not be null"); @@ -87,6 +118,16 @@ public class WebFluxSseServerTransport implements ServerMcpTransport { .build(); } + /** + * Configures the message handler for this transport. In the WebFlux SSE + * implementation, this method stores the handler for processing incoming messages but + * doesn't establish any connections since the server accepts connections rather than + * initiating them. + * @param handler A function that processes incoming JSON-RPC messages and returns + * responses. This handler will be called for each message received through the + * message endpoint. + * @return An empty Mono since the server doesn't initiate connections + */ @Override public Mono connect(Function, Mono> handler) { this.connectHandler = handler; @@ -94,6 +135,23 @@ public class WebFluxSseServerTransport implements ServerMcpTransport { return Mono.empty().then(); } + /** + * Broadcasts a JSON-RPC message to all connected clients through their SSE + * connections. The message is serialized to JSON and sent as a server-sent event to + * each active session. + * + *

    + * The method: + *

      + *
    • Serializes the message to JSON
    • + *
    • Creates a server-sent event with the message data
    • + *
    • Attempts to send the event to all active sessions
    • + *
    • Tracks and reports any delivery failures
    • + *
    + * @param message The JSON-RPC message to broadcast + * @return A Mono that completes when the message has been sent to all sessions, or + * errors if any session fails to receive the message + */ @Override public Mono sendMessage(McpSchema.JSONRPCMessage message) { if (sessions.isEmpty()) { @@ -133,11 +191,35 @@ public class WebFluxSseServerTransport implements ServerMcpTransport { }); } + /** + * Converts data from one type to another using the configured ObjectMapper. This + * method is primarily used for converting between different representations of + * JSON-RPC message data. + * @param The target type to convert to + * @param data The source data to convert + * @param typeRef Type reference describing the target type + * @return The converted data + * @throws IllegalArgumentException if the conversion fails + */ @Override public T unmarshalFrom(Object data, TypeReference typeRef) { return this.objectMapper.convertValue(data, typeRef); } + /** + * Initiates a graceful shutdown of the transport. This method ensures all active + * sessions are properly closed and cleaned up. + * + *

    + * The shutdown process: + *

      + *
    • Marks the transport as closing to prevent new connections
    • + *
    • Closes each active session
    • + *
    • Removes closed sessions from the sessions map
    • + *
    • Times out after 5 seconds if shutdown takes too long
    • + *
    + * @return A Mono that completes when all sessions have been closed + */ @Override public Mono closeGracefully() { return Mono.fromRunnable(() -> { @@ -155,14 +237,36 @@ public class WebFluxSseServerTransport implements ServerMcpTransport { } /** - * Get the router function for configuring the web server. + * Returns the WebFlux router function that defines the transport's HTTP endpoints. + * This router function should be integrated into the application's web configuration. + * + *

    + * The router function defines two endpoints: + *

      + *
    • GET {SSE_ENDPOINT} - For establishing SSE connections
    • + *
    • POST {messageEndpoint} - For receiving client messages
    • + *
    + * @return The configured {@link RouterFunction} for handling HTTP requests */ public RouterFunction getRouterFunction() { return this.routerFunction; } /** - * Handles new SSE connection requests from clients. + * Handles new SSE connection requests from clients. Creates a new session for each + * connection and sets up the SSE event stream. + * + *

    + * The handler performs the following steps: + *

      + *
    • Generates a unique session ID
    • + *
    • Creates a new ClientSession instance
    • + *
    • Sends the message endpoint URI as an initial event
    • + *
    • Sets up message forwarding for the session
    • + *
    • Handles connection cleanup on completion or errors
    • + *
    + * @param request The incoming server request + * @return A response with the SSE event stream */ private Mono handleSseConnection(ServerRequest request) { if (isClosing) { @@ -208,7 +312,19 @@ public class WebFluxSseServerTransport implements ServerMcpTransport { } /** - * Handles incoming messages from clients. + * Handles incoming JSON-RPC messages from clients. Deserializes the message and + * processes it through the configured message handler. + * + *

    + * The handler: + *

      + *
    • Deserializes the incoming JSON-RPC message
    • + *
    • Passes it through the message handler chain
    • + *
    • Returns appropriate HTTP responses based on processing results
    • + *
    • Handles various error conditions with appropriate error responses
    • + *
    + * @param request The incoming server request containing the JSON-RPC message + * @return A response indicating the message processing result */ private Mono handleMessage(ServerRequest request) { if (isClosing) { @@ -239,7 +355,16 @@ public class WebFluxSseServerTransport implements ServerMcpTransport { } /** - * Represents an active client session. + * Represents an active client SSE connection session. Manages the message sink for + * sending events to the client and handles session lifecycle. + * + *

    + * Each session: + *

      + *
    • Has a unique identifier
    • + *
    • Maintains its own message sink for event broadcasting
    • + *
    • Supports clean shutdown through the close method
    • + *
    */ private static class ClientSession { diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java index cedd4b6..cc01f36 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java @@ -39,11 +39,39 @@ import org.springframework.web.servlet.function.ServerResponse; import org.springframework.web.servlet.function.ServerResponse.SseBuilder; /** - * Server-side implementation of the MCP HTTP with SSE transport specification using - * Spring WebMVC. This implementation wraps synchronous WebMVC operations in reactive - * types to maintain compatibility with the reactive transport interface. + * Server-side implementation of the Model Context Protocol (MCP) transport layer using + * HTTP with Server-Sent Events (SSE) through Spring WebMVC. This implementation provides + * a bridge between synchronous WebMVC operations and reactive programming patterns to + * maintain compatibility with the reactive transport interface. + * + *

    + * Key features: + *

      + *
    • Implements bidirectional communication using HTTP POST for client-to-server + * messages and SSE for server-to-client messages
    • + *
    • Manages client sessions with unique IDs for reliable message delivery
    • + *
    • Supports graceful shutdown with proper session cleanup
    • + *
    • Provides JSON-RPC message handling through configured endpoints
    • + *
    • Includes built-in error handling and logging
    • + *
    + * + *

    + * The transport operates on two main endpoints: + *

      + *
    • {@code /sse} - The SSE endpoint where clients establish their event stream + * connection
    • + *
    • A configurable message endpoint where clients send their JSON-RPC messages via HTTP + * POST
    • + *
    + * + *

    + * This implementation uses {@link ConcurrentHashMap} to safely manage multiple client + * sessions in a thread-safe manner. Each client session is assigned a unique ID and + * maintains its own SSE connection. * * @author Christian Tzolov + * @see ServerMcpTransport + * @see RouterFunction */ public class WebMvcSseServerTransport implements ServerMcpTransport { @@ -80,12 +108,19 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { */ private volatile boolean isClosing = false; + /** + * The function to process incoming JSON-RPC messages and produce responses. + */ private Function, Mono> connectHandler; /** - * Constructs a new FunctionalSseServerTransport. + * Constructs a new WebMvcSseServerTransport instance. * @param objectMapper The ObjectMapper to use for JSON serialization/deserialization - * @param messageEndpoint The endpoint URI where clients should send messages + * of messages. + * @param messageEndpoint The endpoint URI where clients should send their JSON-RPC + * messages via HTTP POST. This endpoint will be communicated to clients through the + * SSE connection's initial endpoint event. + * @throws IllegalArgumentException if either objectMapper or messageEndpoint is null */ public WebMvcSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { Assert.notNull(objectMapper, "ObjectMapper must not be null"); @@ -99,13 +134,30 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { .build(); } + /** + * Sets up the message handler for this transport. In the WebMVC SSE implementation, + * this method only stores the handler for later use, as connections are initiated by + * clients rather than the server. + * @param connectionHandler The function to process incoming JSON-RPC messages and + * produce responses + * @return An empty Mono since the server doesn't initiate connections + */ @Override - public Mono connect(Function, Mono> handler) { - this.connectHandler = handler; + public Mono connect( + Function, Mono> connectionHandler) { + this.connectHandler = connectionHandler; // Server-side transport doesn't initiate connections return Mono.empty(); } + /** + * Broadcasts a message to all connected clients through their SSE connections. The + * message is serialized to JSON and sent as an SSE event with type "message". If any + * errors occur during sending to a particular client, they are logged but don't + * prevent sending to other clients. + * @param message The JSON-RPC message to broadcast to all connected clients + * @return A Mono that completes when the broadcast attempt is finished + */ @Override public Mono sendMessage(McpSchema.JSONRPCMessage message) { return Mono.fromRunnable(() -> { @@ -135,7 +187,18 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { } /** - * Handles new SSE connection requests from clients. + * Handles new SSE connection requests from clients by creating a new session and + * establishing an SSE connection. This method: + *

      + *
    • Generates a unique session ID
    • + *
    • Creates a new ClientSession with an SSE builder
    • + *
    • Sends an initial endpoint event to inform the client where to send + * messages
    • + *
    • Maintains the session in the sessions map
    • + *
    + * @param request The incoming server request + * @return A ServerResponse configured for SSE communication, or an error response if + * the server is shutting down or the connection fails */ private ServerResponse handleSseConnection(ServerRequest request) { if (this.isClosing) { @@ -169,7 +232,15 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { } /** - * Handles incoming messages from clients. + * Handles incoming JSON-RPC messages from clients. This method: + *
      + *
    • Deserializes the request body into a JSON-RPC message
    • + *
    • Processes the message through the configured connect handler
    • + *
    • Returns appropriate HTTP responses based on the processing result
    • + *
    + * @param request The incoming server request containing the JSON-RPC message + * @return A ServerResponse indicating success (200 OK) or appropriate error status + * with error details in case of failures */ private ServerResponse handleMessage(ServerRequest request) { if (this.isClosing) { @@ -197,7 +268,13 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { } /** - * Represents an active client session. + * Represents an active client session with its associated SSE connection. Each + * session maintains: + *
      + *
    • A unique session identifier
    • + *
    • An SSE builder for sending server events to the client
    • + *
    • Logging of session lifecycle events
    • + *
    */ private static class ClientSession { @@ -205,12 +282,22 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { private final SseBuilder sseBuilder; + /** + * Creates a new client session with the specified ID and SSE builder. + * @param id The unique identifier for this session + * @param sseBuilder The SSE builder for sending server events to the client + */ ClientSession(String id, SseBuilder sseBuilder) { this.id = id; this.sseBuilder = sseBuilder; logger.debug("Session {} initialized with SSE emitter", id); } + /** + * Closes this session by completing the SSE connection. Any errors during + * completion are logged but do not prevent the session from being marked as + * closed. + */ void close() { logger.debug("Closing session: {}", id); try { @@ -225,11 +312,28 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { } + /** + * Converts data from one type to another using the configured ObjectMapper. This is + * particularly useful for handling complex JSON-RPC parameter types. + * @param data The source data object to convert + * @param typeRef The target type reference + * @return The converted object of type T + * @param The target type + */ @Override public T unmarshalFrom(Object data, TypeReference typeRef) { return this.objectMapper.convertValue(data, typeRef); } + /** + * Initiates a graceful shutdown of the transport. This method: + *
      + *
    • Sets the closing flag to prevent new connections
    • + *
    • Closes all active SSE connections
    • + *
    • Removes all session records
    • + *
    + * @return A Mono that completes when all cleanup operations are finished + */ @Override public Mono closeGracefully() { return Mono.fromRunnable(() -> { @@ -247,7 +351,13 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { } /** - * Get the router function for configuring the web server. + * Returns the RouterFunction that defines the HTTP endpoints for this transport. The + * router function handles two endpoints: + *
      + *
    • GET /sse - For establishing SSE connections
    • + *
    • POST [messageEndpoint] - For receiving JSON-RPC messages from clients
    • + *
    + * @return The configured RouterFunction for handling HTTP requests */ public RouterFunction getRouterFunction() { return this.routerFunction; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java index c337e5d..3fa932a 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java @@ -19,7 +19,6 @@ import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; -import java.time.Duration; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Flow; import java.util.concurrent.atomic.AtomicReference; @@ -27,23 +26,101 @@ import java.util.function.Function; import java.util.regex.Pattern; /** + * A Server-Sent Events (SSE) client implementation using Java's Flow API for reactive + * stream processing. This client establishes a connection to an SSE endpoint and + * processes the incoming event stream, parsing SSE-formatted messages into structured + * events. + * + *

    + * The client supports standard SSE event fields including: + *

      + *
    • event - The event type (defaults to "message" if not specified)
    • + *
    • id - The event ID
    • + *
    • data - The event payload data
    • + *
    + * + *

    + * Events are delivered to a provided {@link SseEventHandler} which can process events and + * handle any errors that occur during the connection. + * * @author Christian Tzolov + * @see SseEventHandler + * @see SseEvent */ public class FlowSseClient { private final HttpClient httpClient; + /** + * Pattern to extract the data content from SSE data field lines. Matches lines + * starting with "data:" and captures the remaining content. + */ private static final Pattern EVENT_DATA_PATTERN = Pattern.compile("^data:(.+)$", Pattern.MULTILINE); + /** + * Pattern to extract the event ID from SSE id field lines. Matches lines starting + * with "id:" and captures the ID value. + */ private static final Pattern EVENT_ID_PATTERN = Pattern.compile("^id:(.+)$", Pattern.MULTILINE); + /** + * Pattern to extract the event type from SSE event field lines. Matches lines + * starting with "event:" and captures the event type. + */ private static final Pattern EVENT_TYPE_PATTERN = Pattern.compile("^event:(.+)$", Pattern.MULTILINE); + /** + * Record class representing a Server-Sent Event with its standard fields. + * + * @param id the event ID (may be null) + * @param type the event type (defaults to "message" if not specified in the stream) + * @param data the event payload data + */ + public static record SseEvent(String id, String type, String data) { + } + + /** + * Interface for handling SSE events and errors. Implementations can process received + * events and handle any errors that occur during the SSE connection. + */ + public interface SseEventHandler { + + /** + * Called when an SSE event is received. + * @param event the received SSE event containing id, type, and data + */ + void onEvent(SseEvent event); + + /** + * Called when an error occurs during the SSE connection. + * @param error the error that occurred + */ + void onError(Throwable error); + + } + + /** + * Creates a new FlowSseClient with the specified HTTP client. + * @param httpClient the {@link HttpClient} instance to use for SSE connections + */ public FlowSseClient(HttpClient httpClient) { this.httpClient = httpClient; } - public void subscribe(String url, SSEEventHandler eventHandler) { + /** + * Subscribes to an SSE endpoint and processes the event stream. + * + *

    + * This method establishes a connection to the specified URL and begins processing the + * SSE stream. Events are parsed and delivered to the provided event handler. The + * connection remains active until either an error occurs or the server closes the + * connection. + * @param url the SSE endpoint URL to connect to + * @param eventHandler the handler that will receive SSE events and error + * notifications + * @throws RuntimeException if the connection fails with a non-200 status code + */ + public void subscribe(String url, SseEventHandler eventHandler) { HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .header("Accept", "text/event-stream") @@ -70,7 +147,7 @@ public class FlowSseClient { // Empty line means end of event if (eventBuilder.length() > 0) { String eventData = eventBuilder.toString(); - SSEEvent event = new SSEEvent(currentEventId.get(), currentEventType.get(), eventData.trim()); + SseEvent event = new SseEvent(currentEventId.get(), currentEventType.get(), eventData.trim()); eventHandler.onEvent(event); eventBuilder.setLength(0); } @@ -108,7 +185,7 @@ public class FlowSseClient { // Handle any remaining event data if (eventBuilder.length() > 0) { String eventData = eventBuilder.toString(); - SSEEvent event = new SSEEvent(currentEventId.get(), currentEventType.get(), eventData.trim()); + SseEvent event = new SseEvent(currentEventId.get(), currentEventType.get(), eventData.trim()); eventHandler.onEvent(event); } } @@ -130,73 +207,30 @@ public class FlowSseClient { }); } - // Event handler interface - public interface SSEEventHandler { + // public static void main(String[] args) { - void onEvent(SSEEvent event); + // FlowSseClient sseClient = new FlowSseClient( + // HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build()); - void onError(Throwable error); + // var eventHandler = new SSEEventHandler() { + // @Override + // public void onEvent(SSEEvent event) { + // System.out.println("Received event: " + event); + // } - } + // @Override + // public void onError(Throwable error) { + // System.out.println("Error: " + error); + // } + // }; + // sseClient.subscribe("http://localhost:8080/sse", eventHandler); - // SSE Event class - public static class SSEEvent { - - private final String id; - - private final String type; - - private final String data; - - public SSEEvent(String id, String type, String data) { - this.id = id; - this.type = type; - this.data = data; - } - - public String getId() { - return id; - } - - public String getType() { - return type; - } - - public String getData() { - return data; - } - - @Override - public String toString() { - return "SSEEvent{" + "id='" + id + '\'' + ", type='" + type + '\'' + ", data='" + data + '\'' + '}'; - } - - } - - public static void main(String[] args) { - - FlowSseClient sseClient = new FlowSseClient( - HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build()); - - var eventHandler = new SSEEventHandler() { - @Override - public void onEvent(SSEEvent event) { - System.out.println("Received event: " + event); - } - - @Override - public void onError(Throwable error) { - System.out.println("Error: " + error); - } - }; - sseClient.subscribe("http://localhost:8080/sse", eventHandler); - - try { - Thread.sleep(100000); - } - catch (InterruptedException e) { - e.printStackTrace(); - } - } + // try { + // Thread.sleep(100000); + // } + // catch (InterruptedException e) { + // e.printStackTrace(); + // } + // } } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java index 3f457a4..9284806 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java @@ -20,7 +20,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.ai.mcp.client.transport.FlowSseClient.SSEEvent; +import org.springframework.ai.mcp.client.transport.FlowSseClient.SseEvent; import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; @@ -46,40 +46,86 @@ import java.util.function.Function; * {@link org.springframework.ai.mcp.spec.McpTransport} that follows the MCP HTTP with SSE * transport specification, using Java's HttpClient. * + *

    + * This transport implementation establishes a bidirectional communication channel between + * client and server using SSE for server-to-client messages and HTTP POST requests for + * client-to-server messages. The transport: + *

      + *
    • Establishes an SSE connection to receive server messages
    • + *
    • Handles endpoint discovery through SSE events
    • + *
    • Manages message serialization/deserialization using Jackson
    • + *
    • Provides graceful connection termination
    • + *
    + * + *

    + * The transport supports two types of SSE events: + *

      + *
    • 'endpoint' - Contains the URL for sending client messages
    • + *
    • 'message' - Contains JSON-RPC message payload
    • + *
    + * * @author Christian Tzolov + * @see org.springframework.ai.mcp.spec.McpTransport + * @see org.springframework.ai.mcp.spec.ClientMcpTransport */ public class HttpClientSseClientTransport implements ClientMcpTransport { private final static Logger logger = LoggerFactory.getLogger(HttpClientSseClientTransport.class); + /** SSE event type for JSON-RPC messages */ private final static String MESSAGE_EVENT_TYPE = "message"; + /** SSE event type for endpoint discovery */ private final static String ENDPOINT_EVENT_TYPE = "endpoint"; + /** Default SSE endpoint path */ private final static String SSE_ENDPOINT = "/sse"; + /** Base URI for the MCP server */ private final String baseUri; + /** SSE client for handling server-sent events. Uses the /sse endpoint */ private final FlowSseClient sseClient; + /** + * HTTP client for sending messages to the server. Uses HTTP POST over the message + * endpoint + */ private final HttpClient httpClient; + /** JSON object mapper for message serialization/deserialization */ protected ObjectMapper objectMapper; + /** Flag indicating if the transport is in closing state */ private volatile boolean isClosing = false; + /** Latch for coordinating endpoint discovery */ private CountDownLatch closeLatch = new CountDownLatch(1); + /** Holds the discovered message endpoint URL */ private final AtomicReference messageEndpoint = new AtomicReference<>(); + /** Holds the SSE connection future */ private final AtomicReference> connectionFuture = new AtomicReference<>(); + /** + * Creates a new transport instance with default HTTP client and object mapper. + * @param baseUri the base URI of the MCP server + */ public HttpClientSseClientTransport(String baseUri) { this(HttpClient.newBuilder(), baseUri, new ObjectMapper()); } + /** + * Creates a new transport instance with custom HTTP client builder and object mapper. + * @param clientBuilder the HTTP client builder to use + * @param baseUri the base URI of the MCP server + * @param objectMapper the object mapper for JSON serialization/deserialization + * @throws IllegalArgumentException if objectMapper or clientBuilder is null + */ public HttpClientSseClientTransport(HttpClient.Builder clientBuilder, String baseUri, ObjectMapper objectMapper) { Assert.notNull(objectMapper, "ObjectMapper must not be null"); + Assert.hasText(baseUri, "baseUri must not be empty"); Assert.notNull(clientBuilder, "clientBuilder must not be null"); this.baseUri = baseUri; this.objectMapper = objectMapper; @@ -87,31 +133,44 @@ public class HttpClientSseClientTransport implements ClientMcpTransport { this.sseClient = new FlowSseClient(this.httpClient); } + /** + * Establishes the SSE connection with the server and sets up message handling. + * + *

    + * This method: + *

      + *
    • Initiates the SSE connection
    • + *
    • Handles endpoint discovery events
    • + *
    • Processes incoming JSON-RPC messages
    • + *
    + * @param handler the function to process received JSON-RPC messages + * @return a Mono that completes when the connection is established + */ @Override public Mono connect(Function, Mono> handler) { CompletableFuture future = new CompletableFuture<>(); connectionFuture.set(future); - sseClient.subscribe(this.baseUri + SSE_ENDPOINT, new FlowSseClient.SSEEventHandler() { + sseClient.subscribe(this.baseUri + SSE_ENDPOINT, new FlowSseClient.SseEventHandler() { @Override - public void onEvent(SSEEvent event) { + public void onEvent(SseEvent event) { if (isClosing) { return; } try { - if (ENDPOINT_EVENT_TYPE.equals(event.getType())) { - String endpoint = event.getData(); + if (ENDPOINT_EVENT_TYPE.equals(event.type())) { + String endpoint = event.data(); messageEndpoint.set(endpoint); closeLatch.countDown(); future.complete(null); } - else if (MESSAGE_EVENT_TYPE.equals(event.getType())) { - JSONRPCMessage message = McpSchema.deserializeJsonRpcMessage(objectMapper, event.getData()); + else if (MESSAGE_EVENT_TYPE.equals(event.type())) { + JSONRPCMessage message = McpSchema.deserializeJsonRpcMessage(objectMapper, event.data()); handler.apply(Mono.just(message)).subscribe(); } else { - logger.error("Received unrecognized SSE event type: " + event.getType()); + logger.error("Received unrecognized SSE event type: " + event.type()); } } catch (IOException e) { @@ -132,6 +191,16 @@ public class HttpClientSseClientTransport implements ClientMcpTransport { return Mono.fromFuture(future); } + /** + * Sends a JSON-RPC message to the server. + * + *

    + * This method waits for the message endpoint to be discovered before sending the + * message. The message is serialized to JSON and sent as an HTTP POST request. + * @param message the JSON-RPC message to send + * @return a Mono that completes when the message is sent + * @throws McpError if the message endpoint is not available or the wait times out + */ @Override public Mono sendMessage(JSONRPCMessage message) { if (isClosing) { @@ -175,6 +244,14 @@ public class HttpClientSseClientTransport implements ClientMcpTransport { } } + /** + * Gracefully closes the transport connection. + * + *

    + * Sets the closing flag and cancels any pending connection future. This prevents new + * messages from being sent and allows ongoing operations to complete. + * @return a Mono that completes when the closing process is initiated + */ @Override public Mono closeGracefully() { return Mono.fromRunnable(() -> { @@ -186,6 +263,13 @@ public class HttpClientSseClientTransport implements ClientMcpTransport { }); } + /** + * Unmarshals data to the specified type using the configured object mapper. + * @param data the data to unmarshal + * @param typeRef the type reference for the target type + * @param the target type + * @return the unmarshalled object + */ @Override public T unmarshalFrom(Object data, TypeReference typeRef) { return this.objectMapper.convertValue(data, typeRef); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index 2a87b3a..fa8c512 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -487,14 +487,14 @@ public class McpAsyncServer { return Mono.error(new McpError("Server must be configured with prompt capabilities")); } - if (this.prompts.containsKey(promptRegistration.propmpt().name())) { + if (this.prompts.containsKey(promptRegistration.prompt().name())) { return Mono - .error(new McpError("Prompt with name '" + promptRegistration.propmpt().name() + "' already exists")); + .error(new McpError("Prompt with name '" + promptRegistration.prompt().name() + "' already exists")); } - this.prompts.put(promptRegistration.propmpt().name(), promptRegistration); + this.prompts.put(promptRegistration.prompt().name(), promptRegistration); - logger.info("Added prompt handler: {}", promptRegistration.propmpt().name()); + logger.info("Added prompt handler: {}", promptRegistration.prompt().name()); // Servers that declared the listChanged capability SHOULD send a notification, // when the list of available prompts changes @@ -546,7 +546,7 @@ public class McpAsyncServer { // new TypeReference() { // }); - var promptList = this.prompts.values().stream().map(PromptRegistration::propmpt).toList(); + var promptList = this.prompts.values().stream().map(PromptRegistration::prompt).toList(); return Mono.just(new McpSchema.ListPromptsResult(promptList, null)); }; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java index 6ee01a3..362491b 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java @@ -190,7 +190,7 @@ public interface McpServer { * @param promptHandler The function that processes prompt requests and returns * formatted templates */ - public static record PromptRegistration(McpSchema.Prompt propmpt, + public static record PromptRegistration(McpSchema.Prompt prompt, Function promptHandler) { } @@ -498,7 +498,7 @@ public interface McpServer { */ public Builder prompts(List prompts) { for (PromptRegistration prompt : prompts) { - this.prompts.put(prompt.propmpt().name(), prompt); + this.prompts.put(prompt.prompt().name(), prompt); } return this; } @@ -521,7 +521,7 @@ public interface McpServer { */ public Builder prompts(PromptRegistration... prompts) { for (PromptRegistration prompt : prompts) { - this.prompts.put(prompt.propmpt().name(), prompt); + this.prompts.put(prompt.prompt().name(), prompt); } return this; } From fbcd51b3322c113f498e89baa2831a6a63fdbb7e Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 12 Jan 2025 09:18:54 +0100 Subject: [PATCH 050/505] docs: improve documentation clarity and add WebFlux SSE transport example - Streamline overview documentation structure and content - Consolidate installation instructions - Simplify examples section descriptions - Add WebFlux SSE transport dependency and configuration example --- .../antora/modules/ROOT/pages/overview.adoc | 131 ++++++------------ .../mcp-webflux-sse-transport/README.md | 55 ++++++++ 2 files changed, 95 insertions(+), 91 deletions(-) diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index dc077ce..f38e3bd 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -1,92 +1,72 @@ = Java & Spring MCP -Set of tools to provide Java SDK and Spring Framework integration for the link:https://modelcontextprotocol.org/docs/concepts/architecture[Model Context Protocol]. -It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. +Java SDK and Spring Framework integration for the link:https://modelcontextprotocol.org/docs/concepts/architecture[Model Context Protocol], enabling standardized interaction with AI models and tools through both synchronous and asynchronous communication. image::spring-ai-mcp-architecture.png[Spring AI MCP Architecture,600] -== Projects - -There are two main projects in this repository: +== Core Components === xref:mcp.adoc[MCP Java SDK] +Core implementation of the Model Context Protocol specification, providing: -Java implementation of the Model Context Protocol specification. It includes: +* Synchronous and asynchronous xref:mcp.adoc#mcp-client[Client] and xref:mcp.adoc#mcp-server[Server] implementations +* Tool discovery and execution +* Resource management with URI templates +* Prompt handling and management +* Structured logging +* Request and Notification handling -* Synchronous and asynchronous xref:mcp.adoc#mcp-client[MCP Client] and xref:mcp.adoc#mcp-server[MCP Server] implementations -* Standard MCP operations support: -** Tool discovery and execution -** Resource management with URI templates -** Prompt handling and management -** Structured logging -** Request and notification handling -* Multiple transport implementations: -** Core transports: -*** Stdio-based transport for process-based communication -*** Java HttpClient-based SSE transport for HTTP streaming -** Spring-based transports: -*** WebFlux SSE transport for reactive HTTP streaming -*** WebMVC SSE transport for servlet-based HTTP streaming +=== MCP Transports -==== WebFlux SSE Transport -The link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webflux-sse-transport[mcp-webflux-sse-transport] project provides WebFlux-based implementation for the SSE client and server transports, enabling reactive HTTP streaming with Spring WebFlux. +* *Core Transports* +** Stdio-based (`StdioClientTransport`, `StdioServerTransport`) for process-based communication +** Java HttpClient-based SSE client (`HttpClientSseClientTransport`) for HTTP streaming -==== WebMvc SSE Transport -The link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webmvc-sse-transport[mcp-webmvc-sse-transport] project provides WebMvc-based implementation for the SSE server transport. The core module's HttpClientSseClientTransport can be used for client-side communication. +* *Optional SSE Transports* +** link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webflux-sse-transport[WebFlux SSE Transport] - Reactive HTTP streaming with Spring WebFlux (Client & Server) +** link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webmvc-sse-transport[WebMvc SSE Transport] - Servlet-based HTTP streaming (Server only). +Use the core `HttpClientSseClientTransport` for SSE clients. === xref:spring-mcp.adoc[Spring AI MCP] +Spring integration features: -The Spring integration module provides Spring-specific functionality: - -* Integration with Spring AI's function calling system +* Spring AI tool/function calling system integration * Bidirectional conversion between Spring AI function callbacks and MCP tools * JSON schema generation for tool input validation * Automatic type conversion and error handling -* Spring-friendly abstractions for MCP clients +* Spring-friendly MCP client abstractions * Auto-configurations (WIP) == Installation -Add the following dependencies to your Maven project: - [tabs] ====== Maven:: + -The core MCP functionality: -+ [source,xml] ---- + org.springframework.experimental mcp 0.5.0-SNAPSHOT ----- -+ -For HTTP SSE transport implementations, add one or more of the following dependencies: -+ -[source,xml] ----- - + + org.springframework.experimental mcp-webflux-sse-transport 0.5.0-SNAPSHOT - + org.springframework.experimental mcp-webmvc-sse-transport 0.5.0-SNAPSHOT ----- -+ -For Spring AI integration: -+ -[source,xml] ----- + + org.springframework.experimental spring-ai-mcp @@ -94,8 +74,7 @@ For Spring AI integration: ---- + -This is a milestone release, not available on Maven Central. -Add the Spring milestone repository to your POM: +Add Spring milestone repository: + [source,xml] ---- @@ -113,40 +92,15 @@ Add the Spring milestone repository to your POM: Gradle:: + -The core MCP functionality: -+ [source,groovy] ---- dependencies { - implementation 'org.springframework.experimental:mcp' + implementation 'org.springframework.experimental:mcp' // Core + implementation 'org.springframework.experimental:mcp-webflux-sse-transport' // Optional + implementation 'org.springframework.experimental:mcp-webmvc-sse-transport' // Optional + implementation 'org.springframework.experimental:spring-ai-mcp' // Optional } ----- -+ -For HTTP SSE transport implementations, add one or more of the following dependencies: -+ -[source,groovy] ----- -// Spring WebFlux-based SSE client and server transport -implementation 'org.springframework.experimental:mcp-webflux-sse-transport' -// Spring WebMVC-based SSE server transport -implementation 'org.springframework.experimental:mcp-webmvc-sse-transport' ----- -+ -For Spring AI integration: -+ -[source,groovy] ----- -dependencies { - implementation 'org.springframework.experimental:spring-ai-mcp' -} ----- -+ -This is a milestone release, not available on Maven Central. -Add the Spring milestone repository to your build: -+ -[source,groovy] ----- repositories { maven { url 'https://repo.spring.io/milestone' } } @@ -155,16 +109,13 @@ repositories { == Examples -Explore these MCP examples in the link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol[spring-ai-examples/model-context-protocol] repository: - -* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/simple[SQLite Simple] - Demonstrates LLM integration with a database -* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/chatbot[SQLite Chatbot] - Interactive chatbot with SQLite database interaction -* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem[Filesystem] - Enables LLM interaction with local filesystem folders and files -* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave[Brave] - Enables natural language interactions with Brave Search -* link:https://github.com/habuma/spring-ai-examples/tree/main/spring-ai-mcp[Theme Park API Example] - Shows how to create an MCP server and client with Spring AI, exposing Theme Park API tools -* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webflux-server[WebFlux SSE Client + WebFlux SSE Server sample] - Showcases how to create and use MCP WebFlux servers and clients with different capabilities -* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server[Http SSE Client + WebMvc SSE Server sample] - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities - +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/simple[SQLite Simple] - Basic LLM-database integration +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/chatbot[SQLite Chatbot] - Interactive database chatbot +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem[Filesystem] - LLM interaction with local files +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave[Brave] - Natural language Brave Search integration +* link:https://github.com/habuma/spring-ai-examples/tree/main/spring-ai-mcp[Theme Park API] - MCP server/client with Theme Park API tools +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webflux-server[WebFlux SSE] - WebFlux server/client implementation +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server[WebMvc SSE] - WebMvc server with HttpClient implementation == Documentation @@ -173,15 +124,13 @@ Explore these MCP examples in the link:https://github.com/spring-projects/spring == Development -=== Building from Source - +Build from source: [source,bash] ---- mvn clean install ---- -=== Running Tests - +Run tests: [source,bash] ---- mvn test diff --git a/mcp-transport/mcp-webflux-sse-transport/README.md b/mcp-transport/mcp-webflux-sse-transport/README.md index d60d62b..dd14397 100644 --- a/mcp-transport/mcp-webflux-sse-transport/README.md +++ b/mcp-transport/mcp-webflux-sse-transport/README.md @@ -1 +1,56 @@ # WebFlux SSE Transport + +```xml + + org.springframework.experimental + mcp-webflux-sse-transport + 0.5.0-SNAPSHOT + +``` + +```java +String MESSAGE_ENDPOINT = "/mcp/message"; + +@Configuration +static class MyConfig { + + // SSE transport + @Bean + public WebFluxSseServerTransport sseServerTransport() { + return new WebFluxSseServerTransport(new ObjectMapper(), "/mcp/message"); + } + + // Router function for SSE transport used by Spring WebFlux to start an HTTP + // server. + @Bean + public RouterFunction mcpRouterFunction(WebFluxSseServerTransport transport) { + return transport.getRouterFunction(); + } + + @Bean + public McpAsyncServer mcpServer(ServerMcpTransport transport, OpenLibrary openLibrary) { + + // Configure server capabilities with resource support + var capabilities = McpSchema.ServerCapabilities.builder() + .resources(false, true) // No subscribe support, but list changes notifications + .tools(true) // Tool support with list changes notifications + .prompts(true) // Prompt support with list changes notifications + .logging() // Logging support + .build(); + + // Create the server with both tool and resource capabilities + var server = McpServer.using(transport) + .serverInfo("MCP Demo Server", "1.0.0") + .capabilities(capabilities) + .resources(systemInfoResourceRegistration()) + .prompts(greetingPromptRegistration()) + .tools(openLibraryToolRegistrations(openLibrary)) + .async(); + + return server; + } + + // ... + +} +``` From 830fc1b5cfac928da0fcbe20b1796c885e527fed Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 12 Jan 2025 09:42:00 +0100 Subject: [PATCH 051/505] Fix broken README link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d8d9d6e..3034034 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Set of projects that provide Java SDK and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. - + ## Projects From 3725c3f7c9729462681c58e83520abe50f619344 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 12 Jan 2025 09:46:40 +0100 Subject: [PATCH 052/505] Update main README --- README.md | 46 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3034034..27c810a 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,17 @@ Java implementation of the Model Context Protocol specification. It includes: - Synchronous and asynchronous [MCP Client](https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#client-usage-examples) and [MCP Server](https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#server-usage-examples) implementations - Standard MCP operations support (tool discovery, resource management, prompt handling, structured logging). Support for request and notification handling. - [Stdio](https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio) and [SSE](https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse) transport implementations. -- [Find more](./mcp/README.md). + +### MCP Transports + +#### Core Transports +- Stdio-based (`StdioClientTransport`, `StdioServerTransport`) for process-based communication +- Java HttpClient-based SSE client (`HttpClientSseClientTransport`) for HTTP streaming + +#### Optional SSE Transports +- [WebFlux SSE Transport](https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webflux-sse-transport) - Reactive HTTP streaming with Spring WebFlux (Client & Server) +- [WebMvc SSE Transport](https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webmvc-sse-transport) - Servlet-based HTTP streaming (Server only). +Use the core `HttpClientSseClientTransport` for SSE clients. ### [Spring AI MCP](https://docs.spring.io/spring-ai-mcp/reference/spring-mcp.html) @@ -28,14 +38,28 @@ The Spring integration module provides Spring-specific functionality: Add the following dependencies to your Maven project: ```xml - + org.springframework.experimental mcp 0.5.0-SNAPSHOT - + + + org.springframework.experimental + mcp-webflux-sse-transport + 0.5.0-SNAPSHOT + + + + + org.springframework.experimental + mcp-webmvc-sse-transport + 0.5.0-SNAPSHOT + + + org.springframework.experimental spring-ai-mcp @@ -48,14 +72,14 @@ Add this repository to your POM: ```xml - - spring-milestones - Spring Milestones - https://repo.spring.io/libs-milestone-local - - false - - + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + ``` From dd065dd6fc12fcbe31f2e5629a5d53e5e84f57ac Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 12 Jan 2025 10:01:46 +0100 Subject: [PATCH 053/505] Add CI/CD build status badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 27c810a..de37b94 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Java & Spring MCP +[![Build Status](https://github.com/spring-projects-experimental/spring-ai-mcp/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/spring-projects-experimental/spring-ai-mcp/actions/workflows/continuous-integration.yml) + Set of projects that provide Java SDK and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. From 42b5931dd5e13253a46b9963c4743c544f31f264 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 12 Jan 2025 12:18:30 +0100 Subject: [PATCH 054/505] Add Bill of Materials (BOM) for dependency management Introduces a new mcp-bom module to simplify dependency version management across Spring AI MCP projects. The BOM allows users to import a single dependency that manages versions of all MCP components, ensuring version compatibility and reducing maintenance overhead. - Adds mcp-bom module with managed versions for all Spring AI MCP dependencies - Provides centralized version control through a single BOM import - Removes explicit version declarations from documentation examples - Adds dependency management documentation and updates existing docs to reference the new BOM Resolves #59 --- mcp-bom/pom.xml | 61 ++++++++++ .../src/main/antora/modules/ROOT/nav.adoc | 3 +- .../ROOT/pages/dependency-management.adoc | 109 ++++++++++++++++++ .../main/antora/modules/ROOT/pages/mcp.adoc | 4 +- .../antora/modules/ROOT/pages/overview.adoc | 10 +- .../antora/modules/ROOT/pages/spring-mcp.adoc | 3 +- pom.xml | 1 + 7 files changed, 179 insertions(+), 12 deletions(-) create mode 100644 mcp-bom/pom.xml create mode 100644 mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc diff --git a/mcp-bom/pom.xml b/mcp-bom/pom.xml new file mode 100644 index 0000000..abae513 --- /dev/null +++ b/mcp-bom/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + + org.springframework.experimental + mcp-parent + 0.5.0-SNAPSHOT + ../pom.xml + + + mcp-bom + pom + Spring AI MCP BOM + Spring AI MCP Bill of Materials + + + ${basedir}/.. + + + + + + + org.springframework.experimental + mcp + ${project.version} + + + + + org.springframework.experimental + mcp-test + ${project.version} + + + + + org.springframework.experimental + mcp-webflux-sse-transport + ${project.version} + + + + + org.springframework.experimental + mcp-webmvc-sse-transport + ${project.version} + + + + + org.springframework.experimental + spring-ai-mcp + ${project.version} + + + + diff --git a/mcp-docs/src/main/antora/modules/ROOT/nav.adoc b/mcp-docs/src/main/antora/modules/ROOT/nav.adoc index 2bc05df..115ff34 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/nav.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/nav.adoc @@ -1,5 +1,4 @@ * xref:overview.adoc[Overview] +** xref:dependency-management.adoc[Dependency Management] * xref:mcp.adoc[MCP Java SDK] * xref:spring-mcp.adoc[Spring AI MCP] -// ** xref:concepts.adoc[AI Concepts] -// * xref:getting-started.adoc[Getting Started] diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc new file mode 100644 index 0000000..36d327f --- /dev/null +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc @@ -0,0 +1,109 @@ +[[dependency-management]] += Dependency Management + +[[mcp-bom]] +== Bill of Materials (BOM) + +The Bill of Materials (BOM) declares the recommended versions of all the dependencies used by a given release. +Using the BOM from your application’s build script avoids the need for you to specify and maintain the dependency versions yourself. +Instead, the version of the BOM you’re using determines the utilized dependency versions. +It also ensures that you’re using supported and tested versions of the dependencies by default, unless you choose to override them. + +Add the BOM to your project: + +[tabs] +====== +Maven:: ++ +[source,xml,indent=0,subs="verbatim,quotes"] +---- + + + + org.springframework.experimental + mcp-bom + 0.5.0-SNAPSHOT + pom + import + + + +---- + +Gradle:: ++ +[source,groovy,indent=0,subs="verbatim,quotes"] +---- +dependencies { + implementation platform("org.springframework.experimental:mcp-bom:0.5.0-SNAPSHOT") + // Replace the following with the starter dependencies of specific modules you wish to use + //... +} +---- +Gradle users can also use the Spring AI MCP BOM by leveraging Gradle (5.0+) native support for declaring dependency constraints using a Maven BOM. +This is implemented by adding a 'platform' dependency handler method to the dependencies section of your Gradle build script. +As shown in the snippet below this can then be followed by version-less declarations of the Starter Dependencies for the one or more spring-ai modules you wish to use, e.g. spring-ai-openai. +====== + +[[dependencies]] +== Available Dependencies + +The following dependencies are available and managed by the BOM: + +=== Core Dependencies + +* `org.springframework.experimental:mcp` - Core MCP library providing the base functionality and APIs for Model Context Protocol implementation. +* `org.springframework.experimental:spring-ai-mcp` - Spring AI integration with MCP, providing Spring-specific features and utilities. + +=== Transport Dependencies + +* `org.springframework.experimental:mcp-webflux-sse-transport` - WebFlux-based Server-Sent Events (SSE) transport implementation for reactive applications. +* `org.springframework.experimental:mcp-webmvc-sse-transport` - WebMVC-based Server-Sent Events (SSE) transport implementation for servlet-based applications. + +=== Testing Dependencies + +* `org.springframework.experimental:mcp-test` - Testing utilities and support for MCP-based applications. + +[[repositories]] +=== Milestone and Snapshot Repositories + +To use the Milestone and Snapshot version, you need to add references to the Spring Milestone and/or Snapshot repositories in your build file. +Add the following repository definitions to your Maven or Gradle build file: + +[tabs] +====== +Maven:: ++ +[source,xml,indent=0,subs="verbatim,quotes"] +---- + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + false + + + +---- + +Gradle:: ++ +[source,groovy,indent=0,subs="verbatim,quotes"] +---- +repositories { + mavenCentral() + maven { url 'https://repo.spring.io/milestone' } + maven { url 'https://repo.spring.io/snapshot' } +} +---- +====== diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index ef76335..b1a98cc 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -35,7 +35,6 @@ The core MCP functionality: org.springframework.experimental mcp - 0.5.0-SNAPSHOT ---- + @@ -48,14 +47,12 @@ For HTTP SSE transport implementations, add one of the following dependencies org.springframework.experimental mcp-webflux-sse-transport - 0.5.0-SNAPSHOT org.springframework.experimental mcp-webmvc-sse-transport - 0.5.0-SNAPSHOT ---- @@ -83,6 +80,7 @@ implementation 'org.springframework.experimental:mcp-webmvc-sse-transport' ---- ====== +Reffer to the xref:dependency-management.adoc[Dependency Management] page for more information. == Architecture diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index f38e3bd..b6a0cda 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -37,7 +37,7 @@ Spring integration features: * Spring-friendly MCP client abstractions * Auto-configurations (WIP) -== Installation +== Getting Started [tabs] ====== @@ -48,29 +48,25 @@ Maven:: org.springframework.experimental - mcp - 0.5.0-SNAPSHOT + mcp org.springframework.experimental mcp-webflux-sse-transport - 0.5.0-SNAPSHOT org.springframework.experimental mcp-webmvc-sse-transport - 0.5.0-SNAPSHOT org.springframework.experimental spring-ai-mcp - 0.5.0-SNAPSHOT ---- + @@ -107,6 +103,8 @@ repositories { ---- ====== +Reffer to the xref:dependency-management.adoc[Dependency Management] page for more information. + == Examples * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/sqlite/simple[SQLite Simple] - Basic LLM-database integration diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc index d1bd57e..fd28fa9 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc @@ -118,10 +118,11 @@ To use this module, add the following dependency to your Maven project: org.springframework.experimental spring-ai-mcp - 0.5.0-SNAPSHOT ---- +Reffer to the xref:dependency-management.adoc[Dependency Management] page for more information. + === Example: Creating an MCP Tool Server with Spring AI Functions [source,java] diff --git a/pom.xml b/pom.xml index e2a87c5..81d7a14 100644 --- a/pom.xml +++ b/pom.xml @@ -100,6 +100,7 @@ + mcp-bom mcp mcp-transport/mcp-webflux-sse-transport mcp-transport/mcp-webmvc-sse-transport From 0c8968044ce93c68213102106449b54ac9567210 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Sun, 12 Jan 2025 16:46:19 +0100 Subject: [PATCH 055/505] refactor: Add HttpServletSseServerTransport for generic Servlet integration Introduces a new Server-Sent Events (SSE) Server transport implementation based on the Servlet API that enables MCP integration with any Java HTTP server application supporting Servlets. This implementation complements the existing WebFlux and WebMvc transports by providing a generic Servlet-based option that works with any Java web server, not just Spring applications. Key changes: - Add HttpServletSseServerTransport with async Servlet 6.0 support - Add integration tests with embedded Tomcat - Add servlet dependencies with externalized versions: - jakarta.servlet-api 6.1.0 (provided) - tomcat-embed-core 11.0.2 (test) - tomcat-embed-websocket 11.0.2 (test) Resolves #61 --- .../modules/ROOT/images/class-diagrams.puml | 4 + .../images/spring-ai-mcp-uml-classdiagram.svg | 2 +- .../main/antora/modules/ROOT/pages/mcp.adoc | 38 ++- .../antora/modules/ROOT/pages/overview.adoc | 4 +- mcp-test/pom.xml | 17 +- .../mcp-webflux-sse-transport/pom.xml | 2 +- .../mcp-webmvc-sse-transport/pom.xml | 6 +- mcp/pom.xml | 26 +- .../HttpServletSseServerTransport.java} | 124 ++++++++- ...etSseServerTransportIntegrationTests.java} | 251 ++++++------------ pom.xml | 3 + 11 files changed, 272 insertions(+), 205 deletions(-) rename mcp/src/{test/java/org/springframework/ai/mcp/attic/_HttpServletSseServerTransport.java_ => main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java} (65%) rename mcp/src/test/java/org/springframework/ai/mcp/server/{_SseAsyncIntegrationTests.java_ => transport/HttpServletSseServerTransportIntegrationTests.java} (62%) diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml b/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml index 92812df..5b08c73 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml +++ b/mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml @@ -153,6 +153,10 @@ class StdioServerTransport implements ServerMcpTransport { } +class HttpServletSseServerTransport implements ServerMcpTransport { +} + + class HttpClientSseClientTransport implements ClientMcpTransport { } diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg index 1843faa..f83a586 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg +++ b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg @@ -1 +1 @@ -McpTransportMono<Void> connect(Function<Mono<JSONRPCMessage>, Mono<JSONRPCMessage>> handler)Mono<Void> sendMessage(JSONRPCMessage message)void close()Mono<Void> closeGracefully()<T> T unmarshalFrom(Object data, TypeReference<T> typeRef)McpSession<T> Mono<T> sendRequest(String method, Object requestParams, TypeReference<T> typeRef)Mono<Void> sendNotification(String method, Map<String, Object> params)Mono<Void> closeGracefully()void close()DefaultMcpSessioninterface RequestHandlerinterface NotificationHandlerMcpClientBuilder using(ClientMcpTransport transport)McpAsyncClientMono<InitializeResult> initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully()Mono<Object> ping()Mono<Void> addRoot(Root root)Mono<Void> removeRoot(String rootUri)Mono<Void> rootsListChangedNotification()Mono<CallToolResult> callTool(CallToolRequest request)Mono<ListToolsResult> listTools()Mono<ListResourcesResult> listResources()Mono<ReadResourceResult> readResource(ReadResourceRequest request)Mono<ListResourceTemplatesResult> listResourceTemplates()Mono<Void> subscribeResource(SubscribeRequest request)Mono<Void> unsubscribeResource(UnsubscribeRequest request)Mono<ListPromptsResult> listPrompts()Mono<GetPromptResult> getPrompt(GetPromptRequest request)Mono<Void> setLoggingLevel(LoggingLevel level)McpSyncClientInitializeResult initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()boolean closeGracefully()Object ping()void addRoot(Root root)void removeRoot(String rootUri)void rootsListChangedNotification()CallToolResult callTool(CallToolRequest request)ListToolsResult listTools()ListResourcesResult listResources()ReadResourceResult readResource(ReadResourceRequest request)ListResourceTemplatesResult listResourceTemplates()void subscribeResource(SubscribeRequest request)void unsubscribeResource(UnsubscribeRequest request)ListPromptsResult listPrompts()GetPromptResult getPrompt(GetPromptRequest request)void setLoggingLevel(LoggingLevel level)McpServerBuilder using(ServerMcpTransport transport)McpAsyncServerServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully() Mono<Void> addTool(ToolRegistration toolRegistration)Mono<Void> removeTool(String toolName)Mono<Void> notifyToolsListChanged() Mono<Void> addResource(ResourceRegistration resourceHandler)Mono<Void> removeResource(String resourceUri)Mono<Void> notifyResourcesListChanged() Mono<Void> addPrompt(PromptRegistration promptRegistration)Mono<Void> removePrompt(String promptName)Mono<Void> notifyPromptsListChanged() Mono<Void> loggingNotification(LoggingMessageNotification notification) Mono<CreateMessageResult> createMessage(CreateMessageRequest request)McpSyncServerMcpAsyncServer getAsyncServer() ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()void closeGracefully() void addTool(ToolRegistration toolHandler)void removeTool(String toolName)void notifyToolsListChanged() void addResource(ResourceRegistration resourceHandler)void removeResource(String resourceUri)void notifyResourcesListChanged() void addPrompt(PromptRegistration promptRegistration)void removePrompt(String promptName)void notifyPromptsListChanged() void loggingNotification(LoggingMessageNotification notification) CreateMessageResult createMessage(CreateMessageRequest request)StdioClientTransportvoid setErrorHandler(Consumer<String> errorHandler)Sinks.Many<String> getErrorSink()ClientMcpTransportStdioServerTransportServerMcpTransportHttpClientSseClientTransportWebFluxSseClientTransportWebFluxSseServerTransportRouterFunction<?> getRouterFunction()WebMvcSseServerTransportRouterFunction<?> getRouterFunction()McpSchemaclass ErrorCodesinterface Requestinterface JSONRPCMessageinterface ResourceContentsinterface Contentinterface ServerCapabilitiesJSONRPCMessage deserializeJsonRpcMessage()McpErrorcreatescreatesdelegates tocreatescreatesusesthrows \ No newline at end of file +McpTransportMono<Void> connect(Function<Mono<JSONRPCMessage>, Mono<JSONRPCMessage>> handler)Mono<Void> sendMessage(JSONRPCMessage message)void close()Mono<Void> closeGracefully()<T> T unmarshalFrom(Object data, TypeReference<T> typeRef)McpSession<T> Mono<T> sendRequest(String method, Object requestParams, TypeReference<T> typeRef)Mono<Void> sendNotification(String method, Map<String, Object> params)Mono<Void> closeGracefully()void close()DefaultMcpSessioninterface RequestHandlerinterface NotificationHandlerMcpClientBuilder using(ClientMcpTransport transport)McpAsyncClientMono<InitializeResult> initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully()Mono<Object> ping()Mono<Void> addRoot(Root root)Mono<Void> removeRoot(String rootUri)Mono<Void> rootsListChangedNotification()Mono<CallToolResult> callTool(CallToolRequest request)Mono<ListToolsResult> listTools()Mono<ListResourcesResult> listResources()Mono<ReadResourceResult> readResource(ReadResourceRequest request)Mono<ListResourceTemplatesResult> listResourceTemplates()Mono<Void> subscribeResource(SubscribeRequest request)Mono<Void> unsubscribeResource(UnsubscribeRequest request)Mono<ListPromptsResult> listPrompts()Mono<GetPromptResult> getPrompt(GetPromptRequest request)Mono<Void> setLoggingLevel(LoggingLevel level)McpSyncClientInitializeResult initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()boolean closeGracefully()Object ping()void addRoot(Root root)void removeRoot(String rootUri)void rootsListChangedNotification()CallToolResult callTool(CallToolRequest request)ListToolsResult listTools()ListResourcesResult listResources()ReadResourceResult readResource(ReadResourceRequest request)ListResourceTemplatesResult listResourceTemplates()void subscribeResource(SubscribeRequest request)void unsubscribeResource(UnsubscribeRequest request)ListPromptsResult listPrompts()GetPromptResult getPrompt(GetPromptRequest request)void setLoggingLevel(LoggingLevel level)McpServerBuilder using(ServerMcpTransport transport)McpAsyncServerServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully() Mono<Void> addTool(ToolRegistration toolRegistration)Mono<Void> removeTool(String toolName)Mono<Void> notifyToolsListChanged() Mono<Void> addResource(ResourceRegistration resourceHandler)Mono<Void> removeResource(String resourceUri)Mono<Void> notifyResourcesListChanged() Mono<Void> addPrompt(PromptRegistration promptRegistration)Mono<Void> removePrompt(String promptName)Mono<Void> notifyPromptsListChanged() Mono<Void> loggingNotification(LoggingMessageNotification notification) Mono<CreateMessageResult> createMessage(CreateMessageRequest request)McpSyncServerMcpAsyncServer getAsyncServer() ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()void closeGracefully() void addTool(ToolRegistration toolHandler)void removeTool(String toolName)void notifyToolsListChanged() void addResource(ResourceRegistration resourceHandler)void removeResource(String resourceUri)void notifyResourcesListChanged() void addPrompt(PromptRegistration promptRegistration)void removePrompt(String promptName)void notifyPromptsListChanged() void loggingNotification(LoggingMessageNotification notification) CreateMessageResult createMessage(CreateMessageRequest request)StdioClientTransportvoid setErrorHandler(Consumer<String> errorHandler)Sinks.Many<String> getErrorSink()ClientMcpTransportStdioServerTransportServerMcpTransportHttpServletSseServerTransportHttpClientSseClientTransportWebFluxSseClientTransportWebFluxSseServerTransportRouterFunction<?> getRouterFunction()WebMvcSseServerTransportRouterFunction<?> getRouterFunction()McpSchemaclass ErrorCodesinterface Requestinterface JSONRPCMessageinterface ResourceContentsinterface Contentinterface ServerCapabilitiesJSONRPCMessage deserializeJsonRpcMessage()McpErrorcreatescreatesdelegates tocreatescreatesusesthrows \ No newline at end of file diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index b1a98cc..c743410 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -15,7 +15,8 @@ Java SDK implementation of the link:https://modelcontextprotocol.io/introduction * Multiple transport implementations: ** Core transports: *** Stdio-based transport for process-based communication -*** Java HttpClient-based SSE transport for HTTP streaming +*** Java HttpClient-based SSE client transport for HTTP SSE Client-side streaming +*** Servlet-based SSE server transport for HTTP SSE Server streaming ** Spring-based transports: *** WebFlux SSE transport for reactive HTTP streaming *** WebMVC SSE transport for servlet-based HTTP streaming @@ -515,6 +516,41 @@ Implements the MCP HTTP with SSE transport specification, providing: * Message routing and session management * Graceful shutdown capabilities +SSE (Servlet):: ++ +Creates a Servlet-based SSE server transport. +Included in the core `mcp` module. +The `HttpServletSseServerTransport` can be used with any Servlet container. +To using it with a Spring Web application, you can register it as a Servlet bean: ++ +[source,java] +---- +@Configuration +@EnableWebMvc +public class McpServerConfig implements WebMvcConfigurer { + + @Bean + public HttpServletSseServerTransport servletSseServerTransport() { + return new HttpServletSseServerTransport(new ObjectMapper(), "/mcp/message"); + } + + @Bean + public ServletRegistrationBean customServletBean(HttpServletSseServerTransport servlet) { + return new ServletRegistrationBean(servlet); + } +} +---- ++ +Implements the MCP HTTP with SSE transport specification using the traditional Servlet API, providing: ++ +* Asynchronous message handling using Servlet 6.0 async support +* Session management for multiple client connections +* Two types of endpoints: +** SSE endpoint (/sse) for server-to-client events +** Message endpoint (configurable) for client-to-server requests +* Error handling and response formatting +* Graceful shutdown support + ====== === Server Capabilities diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index b6a0cda..34bc9b9 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -20,7 +20,8 @@ Core implementation of the Model Context Protocol specification, providing: * *Core Transports* ** Stdio-based (`StdioClientTransport`, `StdioServerTransport`) for process-based communication -** Java HttpClient-based SSE client (`HttpClientSseClientTransport`) for HTTP streaming +** Java HttpClient-based SSE client (`HttpClientSseClientTransport`) for HTTP SSE Client-side streaming +** Servlet-based SSE server (`HttpServletSseServerTransport`) for HTTP SSE Server streaming using traditional Servlet API * *Optional SSE Transports* ** link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webflux-sse-transport[WebFlux SSE Transport] - Reactive HTTP streaming with Spring WebFlux (Client & Server) @@ -114,6 +115,7 @@ Reffer to the xref:dependency-management.adoc[Dependency Management] page for mo * link:https://github.com/habuma/spring-ai-examples/tree/main/spring-ai-mcp[Theme Park API] - MCP server/client with Theme Park API tools * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webflux-server[WebFlux SSE] - WebFlux server/client implementation * link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server[WebMvc SSE] - WebMvc server with HttpClient implementation +* link:https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-servlet-server[Servlet SSE] - SSE Servlet server with HttpClient implementation == Documentation diff --git a/mcp-test/pom.xml b/mcp-test/pom.xml index f3aa5db..9da326a 100644 --- a/mcp-test/pom.xml +++ b/mcp-test/pom.xml @@ -72,7 +72,7 @@ org.awaitility awaitility - 4.2.0 + ${awaitility.version} @@ -80,21 +80,6 @@ logback-classic ${logback.version} - - - diff --git a/mcp-transport/mcp-webflux-sse-transport/pom.xml b/mcp-transport/mcp-webflux-sse-transport/pom.xml index 1dae71c..dfb94e6 100644 --- a/mcp-transport/mcp-webflux-sse-transport/pom.xml +++ b/mcp-transport/mcp-webflux-sse-transport/pom.xml @@ -97,7 +97,7 @@ org.awaitility awaitility - 4.2.0 + ${awaitility.version} test diff --git a/mcp-transport/mcp-webmvc-sse-transport/pom.xml b/mcp-transport/mcp-webmvc-sse-transport/pom.xml index c612a4c..7833d52 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/pom.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/pom.xml @@ -87,7 +87,7 @@ org.awaitility awaitility - 4.2.0 + ${awaitility.version} test @@ -111,14 +111,14 @@ jakarta.servlet jakarta.servlet-api - 5.0.0 + ${jakarta.servlet.version} provided org.apache.tomcat.embed tomcat-embed-core - 11.0.2 + ${tomcat.version} test diff --git a/mcp/pom.xml b/mcp/pom.xml index 86d4ff4..2f8272f 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -103,7 +103,7 @@ org.awaitility awaitility - 4.2.0 + ${awaitility.version} test @@ -114,7 +114,29 @@ test + + + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet.version} + provided + + + + + org.apache.tomcat.embed + tomcat-embed-core + ${tomcat.version} + test + + + org.apache.tomcat.embed + tomcat-embed-websocket + ${tomcat.version} + test + + - \ No newline at end of file + diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/_HttpServletSseServerTransport.java_ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java similarity index 65% rename from mcp/src/test/java/org/springframework/ai/mcp/attic/_HttpServletSseServerTransport.java_ rename to mcp/src/main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java index 3bededd..4857a60 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/attic/_HttpServletSseServerTransport.java_ +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java @@ -41,40 +41,84 @@ import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.ServerMcpTransport; /** - * A Servlet-based implementation of the MCP HTTP with SSE transport specification. This - * implementation provides similar functionality to FunctionalSseServerTransport but uses - * the traditional Servlet API instead of WebFlux. + * A Servlet-based implementation of the MCP HTTP with Server-Sent Events (SSE) transport + * specification. This implementation provides similar functionality to + * WebFluxSseServerTransport but uses the traditional Servlet API instead of WebFlux. + * + *

    + * The transport handles two types of endpoints: + *

      + *
    • SSE endpoint (/sse) - Establishes a long-lived connection for server-to-client + * events
    • + *
    • Message endpoint (configurable) - Handles client-to-server message requests
    • + *
    + * + *

    + * Features: + *

      + *
    • Asynchronous message handling using Servlet 6.0 async support
    • + *
    • Session management for multiple client connections
    • + *
    • Graceful shutdown support
    • + *
    • Error handling and response formatting
    • + *
    * * @author Christian Tzolov - * @since 1.0.0 + * @see ServerMcpTransport + * @see HttpServlet */ @WebServlet(asyncSupported = true) public class HttpServletSseServerTransport extends HttpServlet implements ServerMcpTransport { + /** Logger for this class */ private static final Logger logger = LoggerFactory.getLogger(HttpServletSseServerTransport.class); + /** The endpoint path for SSE connections */ public static final String SSE_ENDPOINT = "/sse"; + /** Event type for regular messages */ public static final String MESSAGE_EVENT_TYPE = "message"; + /** Event type for endpoint information */ public static final String ENDPOINT_EVENT_TYPE = "endpoint"; + /** JSON object mapper for serialization/deserialization */ private final ObjectMapper objectMapper; + /** The endpoint path for handling client messages */ private final String messageEndpoint; + /** Map of active client sessions, keyed by session ID */ private final Map sessions = new ConcurrentHashMap<>(); + /** Flag indicating if the transport is in the process of shutting down */ private final AtomicBoolean isClosing = new AtomicBoolean(false); + /** Handler for processing incoming messages */ private Function, Mono> connectHandler; + /** + * Creates a new HttpServletSseServerTransport instance. + * @param objectMapper The JSON object mapper to use for message + * serialization/deserialization + * @param messageEndpoint The endpoint path where clients will send their messages + */ public HttpServletSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { this.objectMapper = objectMapper; this.messageEndpoint = messageEndpoint; } + /** + * Handles GET requests to establish SSE connections. + *

    + * This method sets up a new SSE connection when a client connects to the SSE + * endpoint. It configures the response headers for SSE, creates a new session, and + * sends the initial endpoint information to the client. + * @param request The HTTP servlet request + * @param response The HTTP servlet response + * @throws ServletException If a servlet-specific error occurs + * @throws IOException If an I/O error occurs + */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { @@ -102,12 +146,23 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server PrintWriter writer = response.getWriter(); ClientSession session = new ClientSession(sessionId, asyncContext, writer); - sessions.put(sessionId, session); + this.sessions.put(sessionId, session); // Send initial endpoint event - sendEvent(writer, ENDPOINT_EVENT_TYPE, messageEndpoint); + this.sendEvent(writer, ENDPOINT_EVENT_TYPE, messageEndpoint); } + /** + * Handles POST requests for client messages. + *

    + * This method processes incoming messages from clients, routes them through the + * connect handler if configured, and sends back the appropriate response. It handles + * error cases and formats error responses according to the MCP specification. + * @param request The HTTP servlet request + * @param response The HTTP servlet response + * @throws ServletException If a servlet-specific error occurs + * @throws IOException If an I/O error occurs + */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { @@ -200,12 +255,25 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server } } + /** + * Sets up the message handler for processing client requests. + * @param handler The function to process incoming messages and produce responses + * @return A Mono that completes when the handler is set up + */ @Override public Mono connect(Function, Mono> handler) { this.connectHandler = handler; return Mono.empty(); } + /** + * Broadcasts a message to all connected clients. + *

    + * This method serializes the message and sends it to all active client sessions. If a + * client is disconnected, its session is removed. + * @param message The message to broadcast + * @return A Mono that completes when the message has been sent to all clients + */ @Override public Mono sendMessage(McpSchema.JSONRPCMessage message) { if (sessions.isEmpty()) { @@ -219,7 +287,7 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server sessions.values().forEach(session -> { try { - sendEvent(session.writer, MESSAGE_EVENT_TYPE, jsonText); + this.sendEvent(session.writer, MESSAGE_EVENT_TYPE, jsonText); } catch (IOException e) { logger.error("Failed to send message to session {}: {}", session.id, e.getMessage()); @@ -236,16 +304,35 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server }); } + /** + * Closes the transport. + *

    + * This implementation delegates to the super class's close method. + */ @Override public void close() { ServerMcpTransport.super.close(); } + /** + * Unmarshals data from one type to another using the object mapper. + * @param The target type + * @param data The source data + * @param typeRef The type reference for the target type + * @return The unmarshaled data + */ @Override public T unmarshalFrom(Object data, TypeReference typeRef) { return objectMapper.convertValue(data, typeRef); } + /** + * Initiates a graceful shutdown of the transport. + *

    + * This method marks the transport as closing and closes all active client sessions. + * New connection attempts will be rejected during shutdown. + * @return A Mono that completes when all sessions have been closed + */ @Override public Mono closeGracefully() { isClosing.set(true); @@ -257,6 +344,13 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server }); } + /** + * Sends an SSE event to a client. + * @param writer The writer to send the event through + * @param eventType The type of event (message or endpoint) + * @param data The event data + * @throws IOException If an error occurs while writing the event + */ private void sendEvent(PrintWriter writer, String eventType, String data) throws IOException { writer.write("event: " + eventType + "\n"); writer.write("data: " + data + "\n\n"); @@ -267,11 +361,21 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server } } + /** + * Removes a client session and completes its async context. + * @param session The session to remove + */ private void removeSession(ClientSession session) { sessions.remove(session.id); session.asyncContext.complete(); } + /** + * Represents a client connection session. + *

    + * This class holds the necessary information about a client's SSE connection, + * including its ID, async context, and output writer. + */ private static class ClientSession { private final String id; @@ -288,6 +392,12 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server } + /** + * Cleans up resources when the servlet is being destroyed. + *

    + * This method ensures a graceful shutdown by closing all client connections before + * calling the parent's destroy method. + */ @Override public void destroy() { closeGracefully().block(); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/_SseAsyncIntegrationTests.java_ b/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java similarity index 62% rename from mcp/src/test/java/org/springframework/ai/mcp/server/_SseAsyncIntegrationTests.java_ rename to mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java index babba8d..71338a9 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/_SseAsyncIntegrationTests.java_ +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.springframework.ai.mcp.server.transport; import java.time.Duration; import java.util.List; @@ -22,17 +22,21 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.catalina.Context; +import org.apache.catalina.LifecycleException; +import org.apache.catalina.LifecycleState; +import org.apache.catalina.startup.Tomcat; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import reactor.netty.DisposableServer; -import reactor.netty.http.server.HttpServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import reactor.test.StepVerifier; import org.springframework.ai.mcp.client.McpClient; -import org.springframework.ai.mcp.client.transport.SseClientTransport; +import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; +import org.springframework.ai.mcp.server.McpServer; import org.springframework.ai.mcp.server.McpServer.ToolRegistration; -import org.springframework.ai.mcp.server.transport.SseServerTransport; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; @@ -44,50 +48,76 @@ import org.springframework.ai.mcp.spec.McpSchema.Role; import org.springframework.ai.mcp.spec.McpSchema.Root; import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.http.server.reactive.HttpHandler; -import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.client.RestClient; -import org.springframework.web.reactive.function.client.WebClient; -import org.springframework.web.reactive.function.server.RouterFunctions; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.awaitility.Awaitility.await; -public class SseAsyncIntegrationTests { +public class HttpServletSseServerTransportIntegrationTests { - private static final int PORT = 8181; + private static final Logger logger = LoggerFactory.getLogger(HttpServletSseServerTransportIntegrationTests.class); + + private static final int PORT = 8184; private static final String MESSAGE_ENDPOINT = "/mcp/message"; - private DisposableServer httpServer; - - private SseServerTransport mcpServerTransport; + private HttpServletSseServerTransport mcpServerTransport; McpClient.Builder clientBuilder; + private Tomcat tomcat; + @BeforeEach public void before() { - this.mcpServerTransport = new SseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); + tomcat = new Tomcat(); + tomcat.setPort(PORT); - HttpHandler httpHandler = RouterFunctions.toHttpHandler(mcpServerTransport.getRouterFunction()); - ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); - this.httpServer = HttpServer.create().port(PORT).handle(adapter).bindNow(); + String baseDir = System.getProperty("java.io.tmpdir"); + tomcat.setBaseDir(baseDir); - this.clientBuilder = McpClient - .using(new SseClientTransport(WebClient.builder().baseUrl("http://localhost:" + PORT))); + Context context = tomcat.addContext("", baseDir); + + // Create and configure the transport + mcpServerTransport = new HttpServletSseServerTransport(new ObjectMapper(), MESSAGE_ENDPOINT); + + // Add transport servlet to Tomcat + org.apache.catalina.Wrapper wrapper = context.createWrapper(); + wrapper.setName("mcpServlet"); + wrapper.setServlet(mcpServerTransport); + wrapper.setLoadOnStartup(1); + wrapper.setAsyncSupported(true); + context.addChild(wrapper); + context.addServletMappingDecoded("/*", "mcpServlet"); + + try { + var connector = tomcat.getConnector(); + connector.setAsyncTimeout(3000); + tomcat.start(); + assertThat(tomcat.getServer().getState() == LifecycleState.STARTED); + } + catch (Exception e) { + throw new RuntimeException("Failed to start Tomcat", e); + } + + this.clientBuilder = McpClient.using(new HttpClientSseClientTransport("http://localhost:" + PORT)); } @AfterEach public void after() { - if (httpServer != null) { - httpServer.disposeNow(); + if (mcpServerTransport != null) { + mcpServerTransport.closeGracefully().block(); + } + if (tomcat != null) { + try { + tomcat.stop(); + tomcat.destroy(); + } + catch (LifecycleException e) { + throw new RuntimeException("Failed to stop Tomcat", e); + } } } - // --------------------------------------- - // Sampling Tests - // --------------------------------------- @Test void testCreateMessageWithoutInitialization() { var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); @@ -107,7 +137,6 @@ public class SseAsyncIntegrationTests { @Test void testCreateMessageWithoutSamplingCapabilities() { - var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")).sync(); @@ -129,8 +158,7 @@ public class SseAsyncIntegrationTests { } @Test - void testCreateMessageSuccess() throws InterruptedException { - + void testCreateMessageSuccess() { var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); Function samplingHandler = request -> { @@ -166,9 +194,6 @@ public class SseAsyncIntegrationTests { }).verifyComplete(); } - // --------------------------------------- - // Roots Tests - // --------------------------------------- @Test void testRootsSuccess() { List roots = List.of(new Root("uri1://", "root1"), new Root("uri2://", "root2")); @@ -195,150 +220,23 @@ public class SseAsyncIntegrationTests { assertThat(rootsRef.get()).containsAll(roots); }); - // Remove a root - mcpClient.removeRoot(roots.get(0).uri()); - - await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { - assertThat(rootsRef.get()).containsAll(List.of(roots.get(1))); - }); - - // Add a new root - var root3 = new Root("uri3://", "root3"); - mcpClient.addRoot(root3); - - await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { - assertThat(rootsRef.get()).containsAll(List.of(roots.get(1), root3)); - }); - mcpClient.close(); mcpServer.close(); } - @Test - void testRootsWithoutCapability() { - var mcpServer = McpServer.using(mcpServerTransport).rootsChangeConsumer(rootsUpdate -> { - }).sync(); - - // Create client without roots capability - var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().build()) // No - // roots - // capability - .sync(); - - InitializeResult initResult = mcpClient.initialize(); - assertThat(initResult).isNotNull(); - - // Attempt to list roots should fail - assertThatThrownBy(() -> mcpServer.listRoots().roots()).isInstanceOf(McpError.class) - .hasMessage("Roots not supported"); - - mcpClient.close(); - mcpServer.close(); - } - - @Test - void testRootsWithEmptyRootsList() { - AtomicReference> rootsRef = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) - .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) - .sync(); - - var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) - .roots(List.of()) // Empty roots list - .sync(); - - InitializeResult initResult = mcpClient.initialize(); - assertThat(initResult).isNotNull(); - - mcpClient.rootsListChangedNotification(); - - await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { - assertThat(rootsRef.get()).isEmpty(); - }); - - mcpClient.close(); - mcpServer.close(); - } - - @Test - void testRootsWithMultipleConsumers() { - List roots = List.of(new Root("uri1://", "root1")); - - AtomicReference> rootsRef1 = new AtomicReference<>(); - AtomicReference> rootsRef2 = new AtomicReference<>(); - - var mcpServer = McpServer.using(mcpServerTransport) - .rootsChangeConsumer(rootsUpdate -> rootsRef1.set(rootsUpdate)) - .rootsChangeConsumer(rootsUpdate -> rootsRef2.set(rootsUpdate)) - .sync(); - - var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) - .roots(roots) - .sync(); - - InitializeResult initResult = mcpClient.initialize(); - assertThat(initResult).isNotNull(); - - mcpClient.rootsListChangedNotification(); - - await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { - assertThat(rootsRef1.get()).containsAll(roots); - assertThat(rootsRef2.get()).containsAll(roots); - }); - - mcpClient.close(); - mcpServer.close(); - } - - @Test - void testRootsServerCloseWithActiveSubscription() { - List roots = List.of(new Root("uri1://", "root1")); - - AtomicReference> rootsRef = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) - .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) - .sync(); - - var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) - .roots(roots) - .sync(); - - InitializeResult initResult = mcpClient.initialize(); - assertThat(initResult).isNotNull(); - - mcpClient.rootsListChangedNotification(); - - await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { - assertThat(rootsRef.get()).containsAll(roots); - }); - - // Close server while subscription is active - mcpServer.close(); - - // Verify client can handle server closure gracefully - mcpClient.close(); - } - - // --------------------------------------- - // Tools Tests - // --------------------------------------- - String emptyJsonSchema = """ { - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": {} + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {} } """; @Test - void testToolCallSuccess() { - var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { - // perform a blocking call to a remote service String response = RestClient.create() .get() .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") @@ -371,11 +269,9 @@ public class SseAsyncIntegrationTests { @Test void testToolListChangeHandlingSuccess() { - var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { - // perform a blocking call to a remote service String response = RestClient.create() .get() .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") @@ -390,50 +286,59 @@ public class SseAsyncIntegrationTests { .tools(tool1) .sync(); - AtomicReference> rootsRef = new AtomicReference<>(); + AtomicReference> toolsRef = new AtomicReference<>(); var mcpClient = clientBuilder.toolsChangeConsumer(toolsUpdate -> { - // perform a blocking call to a remote service String response = RestClient.create() .get() .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); - rootsRef.set(toolsUpdate); + toolsRef.set(toolsUpdate); }).sync(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); - assertThat(rootsRef.get()).isNull(); + assertThat(toolsRef.get()).isNull(); assertThat(mcpClient.listTools().tools()).contains(tool1.tool()); mcpServer.notifyToolsListChanged(); await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { - assertThat(rootsRef.get()).containsAll(List.of(tool1.tool())); + assertThat(toolsRef.get()).containsAll(List.of(tool1.tool())); }); - // Remove a tool mcpServer.removeTool("tool1"); await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { - assertThat(rootsRef.get()).isEmpty(); + assertThat(toolsRef.get()).isEmpty(); }); - // Add a new tool ToolRegistration tool2 = new ToolRegistration(new McpSchema.Tool("tool2", "tool2 description", emptyJsonSchema), request -> callResponse); mcpServer.addTool(tool2); await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { - assertThat(rootsRef.get()).containsAll(List.of(tool2.tool())); + assertThat(toolsRef.get()).containsAll(List.of(tool2.tool())); }); mcpClient.close(); mcpServer.close(); } + @Test + void testInitialize() { + var mcpServer = McpServer.using(mcpServerTransport).sync(); + var mcpClient = clientBuilder.sync(); + + InitializeResult initResult = mcpClient.initialize(); + assertThat(initResult).isNotNull(); + + mcpClient.close(); + mcpServer.close(); + } + } diff --git a/pom.xml b/pom.xml index 81d7a14..ea037cf 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,9 @@ 0.0.4 1.6.2 5.10.5 + 11.0.2 + 6.1.0 + 4.2.0 From 5a73a304a83f4f9af4356f8cfc411d167ceb0611 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 13 Jan 2025 09:06:56 +0100 Subject: [PATCH 056/505] Update arch diagrams --- README.md | 9 ++++----- .../ROOT/images/spring-ai-mcp-architecture.png | Bin 123606 -> 0 bytes .../spring-ai-mcp-clinet-architecture.jpg | Bin 0 -> 702970 bytes .../spring-ai-mcp-server-architecture.jpg | Bin 0 -> 801473 bytes .../antora/modules/ROOT/pages/overview.adoc | 3 ++- 5 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.png create mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-clinet-architecture.jpg create mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-server-architecture.jpg diff --git a/README.md b/README.md index de37b94..866712b 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,9 @@ Set of projects that provide Java SDK and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. - + + + ## Projects @@ -44,28 +46,24 @@ Add the following dependencies to your Maven project: org.springframework.experimental mcp - 0.5.0-SNAPSHOT org.springframework.experimental mcp-webflux-sse-transport - 0.5.0-SNAPSHOT org.springframework.experimental mcp-webmvc-sse-transport - 0.5.0-SNAPSHOT org.springframework.experimental spring-ai-mcp - 0.5.0-SNAPSHOT ``` @@ -85,6 +83,7 @@ Add this repository to your POM: ``` +Reffer to the [Dependency Management](https://docs.spring.io/spring-ai-mcp/reference/dependency-management.html) page for more information. ## Example Demos diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.png b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.png deleted file mode 100644 index 77227f8b59e63bea11defd2ecf658d00b585d6a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123606 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 Of0ClIB9%h=f&T~pVl(jo diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-clinet-architecture.jpg b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-clinet-architecture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f858b8d5ca623cca605b1e0c2ba6c86a4d29fbe6 GIT binary patch literal 702970 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 z zQ--G%;qX}qj6MvVOM31jS&C=qfRDwE29z?H?S4R(o6lPD;Ce5?TN(}Ok6#Z}Cz-s# zT7tEHek0oCc8|Vkyd1|Ei|T3-Br*=)fSmDhvA3U!RfIN$)xE;#f_Ar#X|W_ZIjqMM zAbM3Wxf4;NZLqRU8-~{=;9GWzZ^eX-d<8plu;+)4l6tRu4j$roMoJ&xOg|BpXv3Z3 zkW@RcphA4sk$gYPf;8)9)1FK@W-Cyg0xQmeeF~+%%spy0QY`53o|JPC!wofCR5l&( z+{&IYj$?q2(CL@}-8>F;0NUO2I>{!h!YW~8Uz80FbQs;g_W zjri7yqX9hBvJqm0U(nmAMUUC^&k5=g&cQ;UPZcfi8SwzOO_Jc)vKwU0*J58;4{x^ z)E#VoZ22L%mr)6Zz-x!{M8hjNxCvNuXGJR7{h~X)5NRz^{7jKTqWhZOlw0{v<)L3A zV_FuQ%>{B=O0mkBcx|x-MV{`rKIsO&rTIhbo*~QR@U>JyFbWf!#`U2bjm(Tc9|wW# z^JU+kC20K|fp^bWq@npY1j?&>d&Dd8SyW7lmi{c+>U2L6!PnVsK;LUI@G})jM9$aF z$9IF4XlMGBE}LG9wcB|ig3$Qao1}HKdfX#>}LG9uHQI^6I$Eq_pYTU1x!(G;;}HNvFoiSOUWc< zioB1Ua5V;^C8w~nx6a(8T{V=HkgyV3+dVX0UUM5T)g%{SKpalX zUI->Gr=##<=la?fLS*yNsM|m|i3;G9dO4MM{-x~Kc&|H=DcJGS(VX;O#`z32eeZZI zIU>>~;ENv^-`3*k@ziXba}3&TtMhyj4%Wc-Lak!D>H%oh4s|s-*FMkrDLlbzKhWOT zfpAdfV>aj?WH>jA-(tsW9p}rW$?wuJgx=Z`tBy5yv;(c%sPC@q0<5v?DNI;`>R#u@ z#evx(k6aM9@{LB|j5Ypg_l{+JJ3&+8vG{B+=TPI*Q0=xTOYxd~jWRGy+al83 z#1dq{$oz{HJ7Tff`iy>|jR5~!fhc&2^7---^w&#Q_0#~C7BTB0%;CQJH?EM&A=>?F z1vSmnFU@@~=uP>*@%a2v((!s*1a2;hrM$#bE^MeOout75;ZLf`N$JY9)2$l3L z&o|P3rpTu8Ebf2@?aUs3euTeZUd2l*uL8d0nO7*BkAtNO13%BO?)2=Pu%6hjHPzw$neR$PP@8tk7B9&)1Qj+h=$+ zIPPsK$cI#p274?j)%GNlv#+>fQs|aM6pBCWw)n_4X3+0ZEKjq?68lr~_eZS311icIF8j?#QO}mwJ^7lnVMgooJrM$SP=&a}sPC(RwRnw4< z?BigEx8?kn4NQYNcxv$iCF+eC?QRz*@DurYYs*9XM0X>NSwTSup(b73?x;MGZg%WO zWwiO&Z52RUL7z6YAgL~@*05f^h3Z+fVUV9CT&FspoAJ)0J}{jhpK%?1Aa3YQXeI*fN(X*^aE|2Gz1Y`llMGp&b_gGy4Et+wV~ zzP5T$(W+qU7Q=6PSCC8UPF%s9{~$xwAIkWoy@hp<$Hv=rl|)=;)G9 zuVb1I^Km~jDRbK7Vydn?1@Xq`x%_;&bXD2`cm_M6Zd=kr4x^+jzJ@t<3nZNX07oFJ zBu7h>J^^6cNS>VJMO%#DNMm$?(8r-%=P2&NG~-qS(m2FG6d&Hq^y7+@Cqxppa{21M zCyi6DRaBOqzZGR7h@6Z|?y6}3=>fIxy0Q}AuJIwN8D+5g6E&k9q16Rw{G3Vete)P} zi1?2ldF7o%8T%m(SzZPaa?MWl+J~62W#0sdYZb(Y{+IaYj}U3NN$+xqq0rzHy(dEr z`##Cu!_iST>0tzsZj+06B`O%lUR!>FPmEX3C!f3)-v^)OX2WuqlZG99f=UWr8Lw

    2Y} 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
    CS?oAGQYS-KrP>J>k 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ΞfZ3(ExoJXd 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 !!OSj~P(uHLIot{k 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
    IHRT4@!`+)d_1 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

    xa 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

    #QZtWYiW0MEl<;K}@Y} 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 z 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

    0T3CILl%)Yu4fnBjV8_p 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%0Dy?WEn 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

    7754Q56)kxoqL<%vG|`nh2{n@<^xDTA%E{N7 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 zΜ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%0AoGep#R5{Cho&Fx1F)&Q#0}j@1e}Kqyj% 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

    =Dd5RD|XEF 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

    2Uo+bG<0QGR@jr$=F2 z!tL;f0x9>OYE%fmALPaoSfuXePM_^GDsZ*nm{f0Uazpg5+MlJNQaDp1Rvg~c5^?YL zsAO%v0W!irfGEcZ(%OKbUgbg+^U!1ud{dZSq08{X!dCP7&buufUUlnp+FiO=*Xd8{ zgrrsGDNbU*lZJyd(^5-)UcA~c@4?!##|XlCgKXPHbKB|*ku8(xgrugx4C2QYzj+GV(tSu6bx%~(?)1HEh-Sj;(C?QTC57ZiO?;#kYFQoe^&dIvd!TaxVo1c?bmB zyqzigql2F>*Ba1Ul5Vc#!L^HCstAvur_;D1B8pSrhtv9w9?a81+DwU0B@yeD)PThj zsLK)T{P^*J4ur^1a7jj9lvZDSlkB*7o90X(O#+lu;A;DBUPR{pE7bw(i>mH5TWMX) z&p15B*WR^Wur(%0Uu3V6pA*L3NvJ6et_!h=j*mENXob~k+S<~Cq21EcBk^edkUjtd+I)FkSQbJxIhy@ zw*!hVf0le4R0zPX{d7wxmX_=+uzwpe~(A)q#PX};JqIA~5NUzsmFE6iZCOb0y)M5D=b1eARcPC@@& zFAP%z=@8V?%)L070u~f^91Dmq7exogw_;34<8<6L8!gIqHYjD+^Z@+Pm~3K(6Io7p zOu>*|i3^2J3fk(tbLZWi8aX)-t+23=Z7_qWsX$~NDqXJ!d7hp8$9GV9cXe(3Mb5pzdhzv)#}d!VTUGR;Pz;;OT&UXY?aehKymX*mqT+<9xrn+c zpW&HlmNz^-;iUS+W^K{eVVV-VXbd~jBv^f*jk#D)UxvLkTO#`cVl##G9|2*nKM3V)budPIfvaTZQ|ZXzS?j!6#8(DXg0sxpCd@9u`I6`D z!JymQ!0Gpq@b|MQ;^XWv8tkM1wf4kA)wio9FpPQ4Pp;Vo76)udXCAvQ1y5_;CH>1S zknnsKzhV1or;mUx)Rb__ynU74eOxgjw)^&gRXQdsq2ieWhh~eDcN0P3`k*x4o@lMy zACc%8pRf*P;*w4BsH|@3qJg>NBe{i$`}_tU0ml~)g!~nvd%>r*&5xflcV#Ssh^UF% zYG)KWRx)EiY>YEW_sUzzUXyB^?3;4(y`XJ|6p;ALjBwPSbC!Npn zlUboBCZ%TvXAOq|+4(ne2aCCzcA&%2yi_21Ql{!1r@;-rU5 z(YpLr7p%M}02&?>nqAV*9+|6+7B-C-DH8^1dn)k&8ta2M`N?Rtl%M!dH?MA(Ir_O9FELaxaQu|B7&XVfs>c zfcyQ4l+xQjeHVHCE9L(E>F-SYM$r*6Uf7Vmdt`}h%7amLAAac&a#*RDAI-4zw*caQ zZ%hgfeX-RWemlwsN*@6|7hDO_8Vrk-8mkC(sg~4(XMU07-tMW{gO32450!Y&DXW1U z5c44B*S`y@1)MmPn5W=@I~&F7tyF6`jalOtsQkQ^OE2<==JSgbI&tI*xrHR$pwxN( zB9yqa%Uhbw(thbqKtqVs-)}CW2-#L&q1*ywd2B7wx7#HTR~HR#Ax)!#_SlSd1J|Th zYZ6Mjz%*MjuL`KAJl-v|HxX9B-NZLbw*lv%h5yc|EMO5&=;*Z*3o^Nv`r9ZrW~H93 z>1b!Mfi0US*(i6{JeH02YXO4Z*0_F#61c`}r$4b947l`{!?Wq@J1z$KTq-tJ;S@xL5_5VOGUeGYzQ|$xWE_ZGW6a+AsxxX_lKgyo*p#LIwW(Dw_}93KQ2#Ov*Zo>2ypD%75@lm)o^Qy_L4>)MHDye zR&cJ7HOI#;pk(F^0|dC(ed!HkpJLr)+*F2`lBO@GJ|24S=2k)tCn|Iq8D1D1yh^K` zw$PDNe3J>(2Qq$#) zKi9;x0DNf*;;`mH?gzDf(CfFI@9pp;eFU7uuM-%x#C&<~z9ij6h$>x%|C%@NbU)Wg zfLarrujZv>Zp4wuy8EKK*KX7aS^m1uauP`H65HAz&1(jhMhRcS>;>IU zhWpza8(vvA4xEeD!sxGdDROmt&v<4w+2lS2;^H6eCTP3pW-8%RcnnhAG=YmP9{~xP zv?%i1#IrU3bdz{yQ(7bWVyU^}k7{Qh*fRLu>L}v#=fcb_t$1^%ZNQ;}8VT9=yr3gC z8i80HS2fwE{B9yO$K=fQB$T-nfn^Ae-%T|>$Jje?%pKI;8Xtt17Q5bnQ$5qX8jX>KWApw*O&0Yg(>+y8B86cd{0#oyn zSKr|rT5fcWl!K(@)x&kN@0#_lb+kGuc0(YuK%RF6I8H0UU&49)@$T7+g=$)ILP5LC z9kaL->}kL>b~GAjorS5z$Ld)g@uCeV@;Y0sACKmUikpd%3I(%$_mpWD?J`S$wqbdpatwvy1joEa{LK*!l7 z*7h=mQA5VDaVVsFVldU~XG1eRFS}#G;w-fhnFWx_w^cX9+cf4lO7LFP>e}-}khdeI zVdg-N5nfc0Uk1|D=2H3fnV`%Mz~UF_ndkuV7l_&W;kU+M;y76GQ7!bf^Jz%BfZeDV zaev(>hTsIXgg9N`m=1|gvwrNcOL^6?z`!K00Te3SZ0}MCuSnF3R~;iEg&RGCSMNyV z19@1!69_uD8!K-&!vQzcHo8g=J}V6wy{^TtDL;=*Xfm@=1XrDbhqmt0&17-gY8FI< z{UZ0+!AG!D#hb@6Xu3Y!{0s=Pm)#X_t=FwsL`_X2FF(sRB?0?i)V*g|8`-|~Nq5`r z9AuJBu)E0_6GRT}29X5@Nr;S1Mk426plvrvB$GiTTYv--!DJ-Bn4G}^gvb~$IcG4z zqjTT;p7xpN_Bk^j=9wA3NTrfWMX7ex-g~X}`wNp@+oDs*I*iz6K?jA!)#aSgP9}>rv(P zg-qIgS4MqGo?OP&nDLM4Yr|OIp?R^zfoy0&nEZ8=R&CEO5?4fBFIL365u|Y=i*g7l z1uV!vbR^=+d=)K{bHyBDt}l01olp@$K0Y4w3*aHy0g(|iOL5`q#rh}=P2;*>2VGNb zhpD;}?rIGaPjW_TGgK^JbKqv+o!MF*B9>wvK6rd!NskwP`A!23njY0E@4OHD74=f;H9+eC*MHMFs z76>0@*upMDcndt=;zP+A!^VvIuo6`$<)#&?UJrJY0}zoytp0ouGL)J?XMjO;e_oo$;( zjz&Nr&d*4rvMqdPBq;(dLMUa*wB=cX(fIxAa0^9*7O*N80OjMV7 zrqmo($Q_GEx70n_Oisuhgly-UYhR`B>tzP>*r!)FQ9E7D4eQP_+VCc6ZW0FSNGzGPcimz#hlv7RZ5*Ak; zu-nSd24*y=Wpu`=!od0v%XGaSN2k&c)`7O9^RPm5xT)jp17ShQnG|LRQbqY9A$UQC z>hCoVX3l5`Z3y&Cn!u!wL`3$)*&GV2RhaiNGeB7V6*sce`+^j75g1Gvp5~X!0a)UYFzIA^Rca)>w4=R>?aqrgYA42|BQeIl zb&*U5FB5squ|dfJkI2aAihl8#IpbM(FRR=|)%BVFNAG@J6iR+Dl%qe33{pvmMcY)1 ztLa$MOkn&Bt3dfHnD=6=}uG4O|W&NA$7n7 zX_s)#3c-n?09H{sM9}nCmVBLHU{VrgKk?JZ?_gwYh*<*10?WqxoR5aybqo>tbtJ@+2)VN zWJ!1K(*t5(B_j2c&r3_{1BTb*&6GeLhKn#FtK5Hi@gu}=`ZYGPW z%6VT@&gHxRaXX0!S78{^-M?h{Pa*HdZ}AnpSFJjh9{$oOebYS4Y0%OCfG^J^s5K7? zcSF0Z&^$FsXb+kWdV}y_!6(!%8H>P9)4XpQtJ?!U z(FSZ#sDd~CAIvF0`W~Nl{83jjyZF0P#y#)Hp9dBm?Ojh~T}%s_|7cEi+xt}t{Ff_j zY+iYMG^8@;Y#bUSP~y_=_?OC7yx;?@u&!q{a-EO@AM)RgAs$hK|lr5+eD%kr0d<`U3UWJ!DI0K`(F6@30ALJM9t#dB{%b2h38YrXy}CfW%Z1SDJ?)WHjM8 zy4yS}b>ToS5DaNji`8&$iz<(uV6w1_y-%qBG%lGJ2HyN}R<+&TO%yq#2`E5w$a{Bn z;tMg{VbWI&SKJKUjTEpOBr9~`fJ?v3@jzn=fNU8Em!vkxTUkW?2qrAP`Lf18xq6c| z8kp&j+qJGp}R_KD-a@45g z)7#<)r?u$Q{8cQTXy=&|<%70L>rT6dLtmqfPSWXWSnTlmVF#LS8LAXNX(xubJp=r1m)x~Y3Vn&G52CD^2q({ z{$wsmUvd|FVP7JX+i25z479gbejXTI&2xWp3H*D{Hb~7G6aO?b7%eTSQ?)O_|`)vJMKeecU~f8|yy8AB_^ihycKP zjS!>0zyXDwD_$UowJ}*Y7wmB3cv5wK-^*9qS86@2pT~DEHaKPlG1dwJDfTaRh5lik z@yuIlK6d`~h?Tgkf3A$yLQwUXTehkBYKA5JmIStT1f*4#I~_Bv)}FBCSjtm?{Obb( zkH1PV=awD2e9eWMkUXa6@UpzcK)3_ZrPz4DT5{3NE2+^BqQ9DimFT;>auoK0HSb_N z*Y0m#FZdWjat)zSZkgtQLK7=1f%IQ)E7=N&d^N&nlXx0`D4GsAABGG#r&l8j#_zHH zzAE%0Ex?q%P=BZR`mkGHI`@=MA*UqS%ES9a&%kAbbYlTu-Q|VTTrOeQH5hK))Z~cA zQ>%iLU@E;|;v{_-`y&Y%PTuVU&^R1Q(>DX``wq?-FFh2QD6NLaqKbTtdwrV+C#wb4 zKW}~BP6kOY2^0-vp#$S-1n#}bx=yHo;w;-I5Z1l2MUfy?aA7M zAxmVX*JU<8Q_Ji(?akb5370+$IbkZn?zS+H zlDJX^%}8FfmzaNBX4_?HwfvsF1n;IN=Ssyly0trAzNaA%2Gr-mYn0;E8_qq!A)jmq zwl`;HHDE;ELHi&4#E=IXU0Z0emoC(^x|ZYq3AL{gZWO29;z_U}p8!kiETghVTx1Mv z%@t>AE_b1^v6On>RB+u$@1gNly!qqvONL*9Zb^F5Ebzi=s$bw56mKcKEPs5mY=R}NB!yEirFV(?4E;6Fi- zShN7@fJbV}cFo29fn6x^o!{3A`gtdbgxbJhtQNPeGfY7n-({-5%|AbM1df407PD?Y z>?-e{kg*%Pm3V7@d;(0$34EFNuC1c!W?(;D-a8tKKrGQh)$Mo!RSBF@EY1G5x`1TY z|0~XOMHqN*CJ%W*Z=K#hnHz3-B$GLV&fK@z+>cEv^&BZ$?qQ&1lXbn3Y9Vqo`i&yw z7OPJ#K*Fam2hy84IaY%hcjAOcc}m}b7baFl#&CTAYB}lOW=lSkg6q z{I3CsF^)i33F539Rp8%K(a>FIcV0{oA3u6}_{mI=tEEComn*(pmR(&b6HW9JQL3_nzrUL~bU_ zBp<*{LG0ct#+Izsv)rL^J`wS&k%Uy$;nf#Imit7{GuFoALBYr!c(LK$)9ve&g0H=Ui6XSbl z8BJL~_;5lgA7yW<@f->?1RnH3dL$%9Ca`FS=)&l1FJ};?#(Hz&PR;{W=hNXG;~9jg ztmX_tq`2;p&*+QeZcf)}9IF3R-@n@zE)&Gqr}u^Y|B}w(TB&RZn`pk_nu}A^P^cMy zL=f1Ry<9^c%FbiYUJZ_Xd8+&mC8MJ>r;?7%+UtK$j{e8TAHIt>Jkb3o-{zL-UlX}W z>wk51>#DvWb7+){!kgRVK1DZL6%&qU|M5Hi?hTjPDmq{fUmTe;A9q6XzF)|1&-`i@ z$n=fwGN0Q8?}vbo{~=%_#$F<4IuUqs=WXUhv^p|2<#75!Wtmq%@+i^OQ?fFSj9d(o z=l6P_`k~?^K7&8TDSxop;_JYoniJOKPS;3KT43%)lq;I<2gJXJE5&4=bMD<~(yl4& z_D#&SZ`3$z**4f%^~jJB&6_yPEshBm`rA5Ve~!afj?PJq4F5H|{lj<2EE<(xsCsp` zuk^~sMd|NO%h`7r4GjB|G7TBA&h?FslXh{x-SNZ4SX-di!KWeOK3cX8{tMlF#vgz88~xYo zw{QGUnguJ5!f{+g-4J})%sTMefz+scN#lr(i1UBfxl#GQUFW8Vj$!5B?Z{8x9r3I$ z%VS%E%8$<&>H;#c{Wn&m&I{J8Eu;8w-)k33;S#P`Ebn$ukR9izy?0YN$%I8*Vd?A7 zZ|T?w4*%|dmc#xPuB*!WPS#Lj4bRP%8>P(k$c!cyhW{MG_l+(Mnh_ti{++HdF{GqV zgF{{XuOu1W4<>K^-FN->x*z^Uys%pI_xiJ7`&B9VcN#BdS)njwJV_?_diJyb0E_wl zi|p$D2lk2lhyRhT1*gB5uQ>GlMu*PcO6EHZgkGgvP5pjj|L*yB*|H9~?}%E$u}s;1 z{_?%9&y}zfSG=iTdqaQJoA~Fs!bczS-vej9|0=zwm4Q6->$-D&XviShSire-XP!$z zP!FsHCT{VO`{17oV>w^v_?i&t7z#iByWRPhbpSodmaT_BZq|jTUn~DheA03KpB=6C z(ckEh&o2i5x1p6~guCfj{lQ?HO7!C@%qjR%rqI*L0xP_YD;eTn9FLD631AC5Foj1G z#UrPn%Zm7+Cwd@|ChKz?78hC8cGDTm(k@mIF@m9`8XZ_6R^jwl`(^Ofw-n2%pv&y+Tsp6^ zv$G{*`K%Efz-XjCpjegm2L{~zN{3!WTSaEYx7xC9vfle#&mQwjSjPQXdEg<7ebJi^ z&$p<;G9m=zX`qG&!epvc-c(NrS0jTIu>-Eyckl9I${<4!)lp1n1e(*R9mA5cctFJ|H*V8$ zd1dUT^H-KuRh7+4sqXNtb~qAET(mF#0s+f^T1$H^yt~CTX;p7kbUEA=xUDv7g|9XF zT#z1L)xB6%8jt^?>X}&(K|;bf?hS<$li#X=l9sz)h-YQU|SOT?<4V3XM=|z6@^nWJ4BbIJlUQuGSty@Ng+o#?MrJt zsGQ|TI*uvm4V8CbFc(mz&(9gb5}B?IGqzh};r7&lf!p0WGI7*E)qGXgeaPnv@a?1U z$JxwH`;V-)v)QVR3l6A%yv?I&0}aVY006!u`&7@DIiiuJ28qt4N(fn@94GG1mWkYI zI_}SAQFtCIbTrC8U9Q5|A0~iRJC~eBXi!wm|A*6%1Bb;%mVs^nB-P4dRMjxv@$@Py zmmnTQEMNK@S^K?)etfJ(rH*wb^-~=HD1; z73(*1lUz+x%Bt2q5V4>+DAWQffsV=WxQ(sI$?p~tNmwh1u2E}8(trihr?=fKu#E3^@PLcyu7@~H;|zw7IikUDnPL{3!2k}mO6=SjR@a! zubwDnU}PdxT~>5vG;;~Vps_q%3}m9D=fe(;Tr|zbRfx&a;26m~s2D$Jn$5iR$_;{e zKvU5Yn#ZdU!`$UFw*+*Gsos`NRnnEyKImOULt-Y~A!(H;N9p%m^9KORe=0Wj7!cl~ z=C!8wHnzZ7>&!a1gUqql@cPEsx$P3GI>TkO`;G&eJ?SCYqs}vnUaVI~b*olL?~iRI zDHGdvBk{Ii6U7UkQ(l)a!poVVK+iuBn`@*guZ1byrXDhR&~)XOw{P>q&?#uCmP>cb z9=V(_Y06-@G?)e`X$rK%Z30bv$+R^>vrz<6OUOmzEA1paqkBY8@yD&$X zv*y;qOg^XNN3pE7Ih7z981a$VsJ0O?;l_Y$LHP~P62JO)gaG0vU%^t%=W~VW-32|A zs$0hqRfcA$A6t%MrzYQ=M9}DH|0IU*Vj5Wt+PCS%0@A9PPCL>cvW)mg)9f;%rdtnf z{E)_rk8#>D$_s)YHVbIwk3Rp0p2xr3Q0N|-Zrq_H`)t3OSY8=0xFdWRzS>>q_r!VM zYpL*xJt+tCEO=lyKR+Yaehr&JGWCY?8{E}>uEZT zBWT#l|MTuCvfP*ITd)H9=DN;T5{-Nygzx*x=xb|~sOid4{rIK#@nEV$#8 zQXjT8Hqnd}kz4;BRwu{fu(-+E!;1J&tx6#2w3(P(o!Xuzxy!Ddsv!#7>yaH8kw0ak zK}EvEx`3j>SSe-^eY^A$V)w68c!Xm?;TJ+t0qQCTf~3hE0E|X>(@-3DJ9ff`({9|+ z7G_6X&p3y^&{$^V#KP8a*Ee9nDOFv2X&~=4DT%KaU*&wDl;${OLc(Q3eR35%(tJc0 zbgT>WSSBGmk;l9?lgh46-hQjgr^RaM4++Wrs4V8P#x~B2q{*-H3Y9A{ocUNsvd@9T z-s)LnLc!LguDC}tB*}m1Y{Q<~hnEo85WQ^uYQ_N?9o-A7-!p}FG{Y-e;!reAL%#fz0 zj(FH+CS=nDsbj}3_?v=HAeaSvOh%CYeco}vB$Pm*;!8nU!J?+Je5(9G1&64tMt*s zvgH}v=YvG>_2XI5QNgQoKE&GBwedS}CJ1!EL zp|)-EQ=X50l%x?JFJe{}v$mFq8J{-_+&n&kJ>fKaHgs+Q^!Np`+>X5zrB!sx8$AZY6DujM#*R~? z2wI7Z9IdT$c2BOFIkwTUi*xqsif|mxvt|k;k)UN#K<>ep`H@K_jn_!>F~Ie!Lo6yF z7{iLTKY3~Bgf^x@>z=oMUJ^2w?Z|r6-}e4?e9D80aEaeXD<60pC^meIb7B0(e=8zAc)rc8E2X7t|t-ez@nn+$(39}URFUt zg6d%|dV>)F`A6^sqzh7o^f=>+;5XGP59O=J=Vp143xuh)BDbepgN|e7ol_Vet-AD$ zbcaedyxoJ%ut5!|}Y9+ot@kjWEW6I(_DwlnnU%Q~TG zfv1T1vG$>=NPJxd$f7=3f7{YErAWfIv=u(yZeUuRGzg>g@53}Ov?(unRS=8}@QY`J z7X^JO?z`IC=rIOU|DymQjV$vvT<@gJYsoN{CdSAD)tm#>> zin{L930}a~i5AQ6$y`uXJ)!8p?>ZM(ggq)i$BZ7WM{moTEKV%*W}zB4JEK2O=E$2B zs1wuEh^f^+u5Ev~$uHVHbk@FTBP;f>0e)*GQ>sjOMbM=z0yX~khvA~l*!Q9mM_i8& zs%3VfeTCp|hPYdj6b}QH2I}Yemwld)MbF7b*&4$z@>c;0&=HyJtCg#$CEm|Tl{gKk zc+Om6p1!GHkz!ubRGr;-^fj$uEKT@rw(S%Wxs3S5O7wJ4Hj@>y1m|F7WIyb2uc*0e z>Qb3p-O;)-1_uk;h3;TU#1bpKtW0X6#qZATnFCIVjRtj-S>X8_6pZN4%XoA6?Zz!} zTetvk?_ox0?$5@%TLS5?gaDgQ$BK3hTJaIF@dnba8XL+^OM;n=@<~M<<78UPes*SPqFs|Sk2K;um6pfGqN)-8EVBn!rko~zvYV(cWE64yq_$uV#OD`c^_Ehk zFaVx5qUawLIHoyPL#3Kw*pO*4dHA)0g`x3>HkLe zycl{O1})SoFxfiF4RDoJvI&GQiAsi{KFP_`%a~F{+VoRqGQ?`o634&P_?&lpuS7tY zqWW^~n$Fc3xm5ZJJQxZPKxjD(>JytPN1XWOjZr&Hr;gl)xe2jZB)7z65~hw8q+yPN!RDvPUT#M6Bo%-zORqi5 zvUiDcbFD;p2nZeWyrJNcA+T?!&|x@XvxdnR*~1o+{h9xWWarr$sKfQ!^-VO|9S}^s z+u%&?IcEoz!*0kEY2U`p#Mu5omMKqc_>7*kYmFAtd_)}zQSAbj5D|n1g@n%7N$b>j z7~=pf=z?$|4(CnWSf>cHKqM}~S~z$zw|g2)IvbT@{tU^zHPKJ9*^Qz%cAG<);e%pXY{CbAW3et1t2;1$@umuo|omnS`t z8k9FPD`$ONY{V0H31Y!nYx--g97b#D_eH^_6ya8c*kmRXX^r}2PSz}Sbm>Q%?B_7+ z9`4!Fhsed_hKcF?jfxA0sFR;{Xl7O_~4$V%p!=pTMynw5@3A44wp zd1_7A-L8kO8SBK0V}Bk}jN;OYg+W1qewi`8kABr876-!O5H!V=kr4>`T_dl{Ics<8 zhsA|&bo^xvieEQiueKh4$g063rrojL@|lZeWgN1s^&>ocw0;J?1#pC*YT8UGh8+_u zXb{wziUF6Jy=37Pyf|fgA_F>lR9JJ#m+PW}zx@7mM+3N)lgN9JuDgTUvlem#>d9K) z40%>Tamgi)m&`JFx|DKkBkIOqe7)<)3Y#93Ua6s%C^bBsInkbg09?|uHGG=C;|uW| z{JF;|y0dgOO_XI!)FrfTu>2KCHiyN>Yy?k$tf*Z63q{1!9#dnE7lTsi=_hd^_Gio1 zK2~;-v6i%nLK!2ml3V!Jd(Y*ZOzqGox9hpf<&Luq`{-dbSMyf~R8&`|+i`}hN5;>F zAI4Cgk8Ya^TAz|kqN2g+In8nAU(O0(knjd`lS*2Bn-g34E^I+eg~*rNcW%rV(Z^s? zUa&^3*R(&uU9VnU#>*)BOV_Z~k(TR8Y*n_->@+LnX{ecG56`I`6V;)Faeao(#WB8SiZ zSAtnRiFP;RXeqa|Go3SiEqveeu^VNCr0SWj4f1*AZ$^uL>PH9QF}y50OeQL-R+7Qk zdYv^0qpNQ3-k4Ht4?^CzkeF>ol;@+vYdy%5SO3zdW-S5*Md$kPXmval=9SZpUJAqD zJDNA$0>?49sUT|8!kp~cNJpjd^HiDF52-GKPWyUj9z`!rd&}21Lw5dw5#j7|C=i=s zEKgK2))!cdw7lVRozx)WUX{$Za6>R`5I25s)t(@F96)r``*2if`-{Yet~JD* z7`>epf80fO_v;edeqha_)TJ`(42xCBG;JbjQXSc(2$^jsj9HWWEVJ-F66r)20<4d* z9YUY9*J8)RBM~O%J;7>!gL|;N&$HJnto#*5%Ov8Wl`8LHNV}?iO^vRdVyD0J3!fse6XY+{n!IF7s?3i%#p8Pz@S9KwfJD_G( zIxeZOG;<(2lsKfxUg&-~+Z&PR@x-z@*L(!#RP0kY2Bw{YK!f~Q5m=*_ZDgJ^mnGUA^IGMJSbm}y^LsqSoO#hgQfVzTh#UV3 zyW*DqYkqF%0exoyfyl~ILbE&o$u!p7?qP{gNEuVGiaO(*RyWT!P~1(hsm-@qaTOI8 z1Jf@#76$^U-WwD~2*^^i;?{bih`Z!JytHG2W)xiz=;fKMZt|z$<o=M_}U99Me7&dxEq=IF3hk3mI{nP;OG|J!$JgmOApEZ>w+ zDe`_RT(;jF0FZ^ji@fS5`py^=jt$J<(VJ`xA=i?U%Fg)LcvLAIkqzGK_~nsZJmz75 zoy8~F*(yV>qZ_X`sy>I8$QaBPOatu}f#$&1X^fLZA_@xwF_J%XYAyLH zYU?*bw*rX)MBB^jAgOBC0glGr^O{|4Q7(M-gp0>qMzNd#w<1CPNptW5<;FJslHnHK z2RO%*Y1wzbFN4%~8_*)fru-B2P`Z;k0#!rvGMy%ul|F1d`_N$>N3^{ok#ETcf3egm zVnvirAUnnbUHgP+b~0_F9F^|U%QhBI7dE&UMj@h3N#zi13?Yb<2k(0iL%;lAa>hXi+i^qAwIvmXIgyQYN_ZxFVK)abeGs^H-V>cUQ=@Y`1F;;Y$ra_%X}Et~SJ%DWi0+Q0B!bR@e<*IQE4iPo zabE>cLnS3gE}`Xq>CJgl1)0~^EDKx?SB}#m>hiXBv{)@>M;17bST3m7ity-2mUiN= z)NQXVkso$V811gfmlt7h)r#_ND>mP}HIB3N4!$wou^bCk)fN9VR_An+JL~Dt^GvnM z5g~^!&?SbM&w{?DgdE)^Bxbkt(vlz<;05Opz{Vy`PW1|xoHkLWoOavKJQun;6lEo< zB2h~QwcXIibc?LN{q01;{}*(k+ZAcXaj(m3Zb9dIo&8ZWD!Q2_XZ$=NCNgQ6t{!;Y zy&yrFf8X9^$`^?eZugWY-{G<1l=ZQ`*BA8O1J1wt2wBq56I7>$ALA41vsIb%wNfW! zu*#g6Hq_@3Idx{nOQoy-Y`ylX{4iz3sbWOqm|vKw;m8nP6XTuLJMXcH#kZeb0((yn z`F#=(PapFo4K)Syv#G8@JveQ&K^5KySEDd^ZHaiJwgvDA=SlDiqoh2mX;!ntgnJ0s zoH7uA^8H4aIict*+Y0ybcIs$ovvzUVv^F=?cr0?K(&!ftmuiz5QnlBdhbzZ&JFg%N zV6?#~a}=+$xs(%VY8OPpPuJ*xysN3d9oyq-Msq*gyxf3#vc;=xql<&1@FfL>CH3m> z{Fv=uB=w|?ZNf#00lIC|TBJ1MYCdy$BDnr=7nuvAUzB{l8xDH5B*b)`S46IS0AF~V zwdK?J@I!d~v7=OCcX!Rq<97PCG?#z~lemKL+j6&=7(E2_Vb96Ea1M9Td-z|cg=n2R z{?{(o)FTPYoBcS$?WEK|?Oy|crmd*=d9J$L>KrA6lBo7f?UkmsnfKKX+Mp}yk=qL; zTR(E5(R`?ywJ?Cj-CU?QWpVx_gJLJ@%rkjpgVXpJ~vVSEO0qS?yxX=ZX4l z(>;l6u+c}HlhjE*iz=^PFvNQxPBpm@TToYUKmq70F~t;ahsib_e;t|VzuD>~9UzT7 z@Z8nrd$I!ak`^#VImK$Jl{10RC;vsI$~3opC<_zvUwCmyJeZ8-G?4^fm{WcL%aa z{JzqFmLpdA_7MX7YcA*&I=maK|BRkbd5EQj`Es0Z{Oqi){mOmvsj-+zSy_|x)ktlx z;E0^EHQW_}(rpW=3eDXK=Mpwn>cE+gi@jvR?|7(+vTFcum>7gB2+1#sW*=sMPNhShM=nOaP zRp@Dvb#^q3Im89{v(&Gtvtat3ej!UDyyJmjvwF?Fl8Ewljt=6x9C+n>lNFqnrrA`F zEobsCRvfEw>1!B~sE+y#0HaL&buceZ$YCW)vb|w!8Y_K%mKBT*6Mf`*OD=wokj>{> zOLY{gYc}Xo0qFyGt0D@D-cA{zzpTl@%$0K+aL+nKCyeG#UuX7klc%#tSsq z&8)01JU+y+voUGYPt=A01*pU0L?JLJBGyFfii>Ji3UM`qHYyJHU6C@AO|9j_Kj|DhON(HDNoE4f#-|Wn7IfX zWSn4Kij}SD0l9lGE~!Xu-MHyf`8g*y9%5K72_pA`zCJw@O4V8WC~!DdTr(kW$)Th% zI9OyogJaq=e;Cy^_WQz>L?SZL(wo3&M(ydK=Cm!n5 zrFdHi!_Dev%_Jf)34$B1W-P``NecxyYpQNFst_;Woh&m{WK%m}tHT=LMX5C;VLA-< zDeptD*y)ASizs_9pq-}{<}6m>r3x%h8Bl>UEJ=lZVpwm>;_!g9V{!_P1qos{7@t)Gi7 zZGy0=Us2kuGNj{&{PDN@^8Jb{kAhpJgoKgVCy}BIK6OFjuG$c|yj4t&c4k3NVu^K~ znzQliU8bMM#=wV228wF=6K9kv@)-ixl<;n{2vN#OqqyRXWjdXcE-1ibVH!dPyuy}=toI@bdZxNppRUnEO)8f39!Wc$Rv^t=+vp2*>;)3V zWHH9};kM}4bh8sF{DqOHkr2)VR7}??me{$%jya%BKpiA~6ni*x`kU4DwE6c+UC%+F zn6gh33BC>eWB|EiSAAn7y0V!%Q_TYhYX#HPetRKg~4cw6Huf-jkoQC}Ly zm6!-NqajL<_ze7zbf2AAS=9f0@0>tmdQLg;alC|sy(mV*uv46S>1JwqevFBV=eYFZ z^CIv{tXvHar`&S&G@D~_9N&|^&@V{Z(9W2gOC#K|TGtx4pwApVlUXrov#c`&zF#SA znl}d?D~s*VPL7RN@NWRdg_7^5v>@NcYNl%gLnHNmVjKvZj80)hLi`6jO3+CBK^**t z_047q)K}nr5*X0dMoIm+B^%iQ4)|y;TDl zt#!F*JqTgHsZtJ?q*ycOiTLA1KVd316+?OK;|NF53}F<{S1w;^OZZJ0ljHdI#0;%b5;eEV$Nx65MaN217hSnx`LwJxV83BEX8BPEb6vlFOXE!%|yAf0q8 zg&lZb;jgY1+QmB9{htDn?yJG!DSlVvDkf~4^rS8~OyoH;D%1n*9@cJ>cm;>fxg?~` zr~LKFL?c3b!NwgGaaV=M4}E8=Egy&WD+NTxES=hvs^T&6kWGtz7^0-ERPWUWGl;@? z52w8u2*AvVs2mlMdmZuDy}PFaul}h@E|>>P=Er=dvpNuS53WeMqq2TeTomLWRn8dgv}!AQKOuoc*yz2)bJYqUOTxifLk*0 z*%=Ct#G=&I;SrDME&7G^O?9XoxmD)Oq0k{cB8b9f`#`T;#BJ%ox@-|h(zC0c%s0jo zr}TG6M%KEI=R9&VqeeU_g*cwWaPwD_eNyX3(<#Ks;vMxf+*BJ`Vif_8>@U{V&pcx( zdFH9f5z_-s9=#DdIlM$i=RozAEZ8rDDU+-L06z?ucu_Po&(FAsJs zW^%}>Yt2L*YH|d1mri+4jm&9_ibx4}M%PUh2D2sJgI8_D3zWt>tF7XU%Q#K%@zlR? zhMf#gI3M;nW0I4Y2thzbNsSmA$sH*vAWfbAhi!%opkG$y$&z@xtt@@*PwD~nbS+pX zFy`wa)xvCmOGGBbA>(}Yg|*j5qw){S2^|VY58Ngbv=VqCI%L;w7c^c504>TLeEEDz z$A^BXinrKdC%@T_MX38%fC$-9_?n;{&V#uj@TM^Q&B6UM#0tOQN?vYBJ_>UU;-iso zr5LB%jM?GO3M{P%5pcgRCxDf1FdJ*Fk7gUHMlaqCzOtBT#o}*;>vj6@t|&Y~i=fc| zN)2cKD%pZsYAZdS8F1DHPpSjiDtZ0Z{&`ZH)kUlCM3}MQ4O|_AXe`6yH6k)gVl0NK zF}k8+)q0)vy|J1iwE}3W**H;5C-yVw)b77Z*SJvz2J; zmP7xEydrP)64jHWHGKzU{oo>gqWb{cFRA7|yqgi2Go&m&?H8EXQ=Oij*?41ehskH4 zKRoyC-pnsPtF5B~B|;Cf+0MPInrKN~?Tp-im^EmTv?|vA>EuE@hSrCn_dV=swUiRv z$e}l0-ud}aZIh)-X=KF^^yB%WR@)b-kH+B7bw$pxiw#xO^jORl+8k=#8v&Y%owISy=OZ`B<^* z6emkO4xtPE5&$cC5&BBK7p=@!3zk>`RN{s6T6lEv@e=pN;}p;;#N4QXgyu|{&+jhkvB{nyj5LFDVm zyYnx84V8uf=Cp$vwocO)vkEysc-c=0xZ@sXd15HevPnt1+ip{92vdycHO89}Gr6<5 z@Y9=m*PS}jM&FscwTib`qhN3XfvtR41CQQvbG8ssGCu+a+e(_;dgGSoR#u~9>{F1; zJWIMdABxWrmwklWD}=D9>&`3rJi5aG`9{|hQX+?Tj~ryKo~U8yC_Q1 zLhry;ONL@GC@>9BU8L@KamByoc;>2A9;l@@Va8%fI`DOvPZ4c;u%zfTZwN|-&JA}U z4}WVO6zf8^QB8bH>InJ_o*X_vwOrtZ*IAf1%E!64{z3lI?f!`t$Egq0iOfY9t>RUJ z63n7~ju`x0PF?reyeWM+YULZP}(h zS<7|!L+qI@bSPNbqpGV^AmpXE?c$Ih?&ffZUB{aqZ%oV@TOv`i=yhD2xtIEKgS|te zvQeRs?}QR}wTl1y$zO{x1t6ovNbi3b1J*H^9RX1mrqNscuZN@-(bC5&Sr@S~F0(s6 z?!tw^=etskrv!rHv38N%IOSU7%SGhU1yHWbUxLaGS_dm~n{>~jt8FY9CeP+LLJ8F6Y^jbmw#By`b*l~QkBAu^;@xr2`z$Kr z{m22`5o%hKdKHU~Kr@QRpt2zz_pum518xNIMV&F%oDaU*ARURKqN*!06+NpJ#x7hv z+PmhGy}c+Hmo_iwD#J665M|qscVfvtZ$FH$xJr@21~iT7?ZVVb>CuJwV2f_=q|@6Y zXiNdBa60*mj*dMY-N7>5PXo19s9=Y)_j;^0G+r;cAr@@1SX|awP)G%VWE8My^E9cR z!Y0P@4}!wYRfjN7D%6|XplaVkpp>a#;kEyiYgkrdb{;K+%2~I;dxDH@>SON-Z(j#y zRCgwqSe=K~DrRa$ZRg`cXcR9q)YfO-XJ1353rYdj>eD--&sT6WHT-Km)Pzz)D|Ct4 zIZ$g(VY>rSr|(<_4z;%MZ>heX_ck@kP?(*CunL38R3=yeA~s1%;!(ka0G`h5b4}<# zg-GRI0xwge?ZIc@)Vf<^x#MZ9gw&$PLPf#$#V>t?Oo1w9{|{|XHTI9qE+OL5mm9oZ zWW;=Z4#_4PB0r5f8Om*Tuk=qT4bw!@ko+>Af(DqR+WtniovXb^9h&bvU^F4WaGzU( ztXy`TiY!urhxvH4Q?Ea$mBnIWUoy(Vk|jERA}fE6Z%wrQMrV|nO%DsG>&|s%H9Im# zmqkO#LJ311n$UA6nfd(!S~290P>gzgU$lz0eyU%^b>PZ?Bs12GZOZS6_ho!l zNOpSLpZc2^WR`HCWs015^oMKPL|?v6nMv@D$J(UCS82BR_Bq$6REyaha&2zSe21L> z^ppBN*SOJ^`t7eaqJkG(Eyo69!fW(1e8Q5nB9?iD#RWEEz<{oLT0x>fcF%6%tX)fX zd(g!i@?#nv-KOu7>#Vv*(^cJ~J;?>bMreHfix)w!{c84P#HI$zc-l_NoUP%TdANLZ z3FxHJ#w%o?a9^10u<r=Y^nhGtygW@<105g1>skGlP!7y4-V$vf{mQV;v&pEMYdyl@+ilE}s`IuSMbcX~J2|wwXIN7QJO% zpPPC}2C>UEbbX^^FyQ?nee_^|B2h1fX|*Ru=6TExr{el_qUkc<29#l>&Rc?ig>TkY z;ch!xN@jEzX%aa?8yYITK0~4pb4R~;nxQe6Ra92uxh#KrdcW!OB}+*a-1LKOmqaQe z4s=KE1jDYhJ@DEqyAJAY8oiqr2=oTJXVQ~ZdW2Jy7t;s6(M>m>T-;OyE0m8}UpUeV zQJ=4i=6r6kr%j)zw0)!dO54ZxZGQWK6J{qHZe8Y)Za44Sy?Z~Wqsa*4zJx~?OX?KF z+hqa#lKa%f3P-&n>H{3=Zx5W_l?HBC%BE-3Vh(gu_f5Lx5SlE>2JH(J0iG1YMhp7Q zcmU84FKga`u{s%m8=Mt&p_yqzZ8lkBA;(gt(@lEL%9DL-<@b|rQxK3$`(fYaOf~P^rt9SY^RB22xay|gq)jq6Cqrvaw zIlWBVU7Q{~o_H+aC_9c_2`wEE{FUI=%~o@eu9n^vJmKtR9?7+>7207ONsn`MzygUqah! zbulTPJd4k{hAK8UIxM|+aLQ$bpIeNmlgSu1YXnO?AVYOl`=I?(n+mlb#JkhF_Ytja zvOBxwLI(}jtPe+wNV#+)BL*}0k_6M`84Z%o67;t>g7+KjWw~hXElC)SjHwF6y!Vv| zzalrlsAe;tv0=XHvz@GLWrO0oe=rYK*QTH1i8{5NqNb{fkMVI3Jyi{|U5R#lnnTC> zza>bY8inU_2WJl+XFamNWq-r4sE=f4C*JSl6n(SxWGt2=Y=X+d*IPRJN>w&pwq}1$lUu~ z)ntZdV9dzaybX!OZCGV?sED89wjAHZhyr9hb;c<*3u~2N10A_L>e2%@Yk7_@MawU#Q8p3U>sA&xygK^(nkQ< zF#R(5ZqGefkymk+HO!;EXxidh-ONuQikIq|X}W${u;G_O8BE70;*`d>Ww?o!$t}g> zUI-+pEl=X3U&g}7J-Frt9w#*IVr@IoY^J@uIsnqFf#vO_5NfQV5*et7%=uJ>y%p;} zt5jPlV%1!97d8np)?VceMb-ebC0Q>uj0e8d_%`DQ)JZNet#YJZF)3w*8d?%E78PYe zD81BX_*>h0ZccNZE=>jaFy-T{=46*{(0yy|oV`j^BVyQ?X%*dn$Z&f??a4U%E z!xT-<+m+#N?)WVrBmDdx58>S!3$2DAt*Fj`OXE+|qZeB`FDA;0x4zM(x;B)(CKkII z`el1Nl~Rg>HwjyL{>#qo3oaF(`aJ6<`3oFY#!Jx{tYI62^E$B~s``IW_uf%WrF+{y zGmhif2N6)3GgJvpO6X-q2|X|vLTCY{lTajd5O7qK&H&OvQ%WESBtod6jr5KogwT=R zd$0cXyzg(FGv__$dDr{r^W?AWy%y}OUG9C~-|uyOE~8A7?ev>-B+;IjTu;fHpO}l{ z2cqtkE~5y!Qmw)AL>&@zk%lA`u$Do(m%3M4ENvop9Q%uyQ+n;opjpkM1ZYoa=GEfQ z&Zjp-Sl#Ev*fTLYPOT%LvbX73gQ4ZV;P)fk&iX!y5}d1f&we#}>%0&F zjwShEwUxC%nAX@7=sHA8EHT2zM$@xL%o)@0qp@`7Jbef>4Y7u6(W}AdO-k*-38j<# z%ePLnmZRnc%my_|lZsK#?$6RXzH@2e0$~Wm%p8J;GvQ5o>Y0?Zb^to~LMN|8-p3)r z=Ai*!aPMGy+GJW<^um`c2DK2tdxRJ}$v&F-UUgmhrn>FkzqI}X0IY{N@+(WhX4BZc z3oI=2mOuTkW#u=towo`fv-F;HMmt1_U`mL8_CMA>Pc8*UzY=NnV0JhFyI?n2PwcxW zehUtV@;qp4NzfI+PG){oqjkv1H-yK>{kCrXEn^P8!CksEZ`Gqybw z*Cf5dY|I|2oosR_orA_Lr;KLPSo1yE#+}4Ww0w++iIa?s_s!PpCaaT~3+%Ve8!D1L z>P&U{$boh6<++?vng<}`->asch$wKcHCCTz4)P^Zzz2GuGVQYPbw1QZ- z%<=Wv@bU33yG=nb2U?&|C^ru4k`-<53Rs?%fTYXtNCL4r{7q{Hof4PY_*B5OMTK7= zj;Zl3#MRYoJygA}Tz_BD01>kpa`F9%Xmp7hsY^dMsT2X1;XNB*7>Cb60=Ej-e5~c5 zitX9X67}ogBzAuzLAFd$yTI1dNBn4^M{q*qADa8;t>Hw14z=1F%34cIdV)-nkLXiw zX}zqTbDIfw6NNBX=oMV)9M8BVH4_k}6+`bXf z^*EIg+3Vw`g`s%Vc&^Ua7y5|%x8mmaC0CN)jH?V~)W&&PFny{n zGT|W?o<1Tzh-c>n5*cTLQj*l&k(}XuuBtr-Lf2(Z3c5$@?3ZI`&i8Y0c8EBWLo|O) zae)Z`zPF*_T=!^awO>fnOf3S6OCQ@Vqpx(4(o19wD|e)vBCQX`>NFInW7*a=Ge@d} zErw$s>c2cc>=|I`~=fca^G~ zftAyXQ*Z=Kvn7w{#R{H4^Uc{&kIV1Xbx?t^SJ8kxLQ(O3-q7{ha~$lmJgyIFg1gk} z?Ba2zgq%$_6}Sf%2BZ`jPUT0}My01T&A9c9vxZ0lQ|r6Kh`Fusg@8MR!VEGjvA%lG6;MDrrZrND7V$aXuY05EtZamL(Kt|%PlqX^l@J=pHmPcpot>$l8m z)1a1vTr;a#qjhl*!kJ`lz_Bz3hgdd&WP>g&sNZn}{dpi_^espm29-5Vx}C5@z9a@l zaxOqj$ska{-BH4lD0<29JsB5?!{QVk$;nFdb=;Yy^>`s7jQ_XuM=$1XzI5OPHo0z~ zOS~)+R~jI)4fSQ*i44q_b@eOaklfuJ?(GWK>>y`J`vScN!u%o@uXvczCL-0Sxho|= zu^7)dLc6rRlWzNtVPJ;Fr>?F05}a%>z`%8lvIGF^iJv(7)EM{;~D9hEeoCos@4n;?xDEC3hLeoPWcMUQM^wso8%Q z!u7fDDi8e#FohVTN!vG=T6-S|UCIpyG8~1DOLq#Y@2l}Zl&xIq`Qj**hoX<{TCxIG zSS~6*`Nu*3^~)t>_qE_RGF_LMGpaVv+=Qr;TyGS+VEwgP?I6@Gr8dmXmx(r3YeTc~FeKA?*XvGg__$Tn=0I76OS`2c%%@Nw&@wpS!5YTRPI zx;NVg97ZxaH$joK3T$G=NU+*QIvO){r)4~POTliw`72ASQc$3h1-rpC38fvyeO|c{ zucG*c=PjjJE%IimLS(FRO^XS1AtH3lF?(?aKzVX5!L4OYHIx=!CSL{-aItru+I9#g zC~*yf+2BAZ2tU6kA>NS2{X96TDCP1j1R?~Ro`@xUWdUnk=C&Eix2wOpiww07vT8Xa zD9L&DOg-~I`#kOF(n}}^!B4~nOz&w1eW1X7H+R>Dud>~;?Us5~+*>o<4RNCw%O(dd z<9_K0`hjf1@TbWcg5i&No4MUrXP%^Irp4q_^&-P}D@PZSiUBo)AEVf=IutcW^G|sw z(P*jQCRB!`NrxRP5B_SE-WAlGBxS1>(K-+l8JpBYL-=`SaA8p4?uUM91#f?j=!)`E zpF;@L&s8knSsLk8r?xLCG^A-j*DSanI&Y-MHTS@`ja!x{vSW2r%1_eW=#)VkzT#wf zA|M%<8c=<6mKt@@f#v??%r6A86sL$(Ppk9cBj=*HHjE69Y+ADJLcDR&%Yfu$C(wEh zzqX8Y7oiRhWN-Up2-V)xDG6zqu;*;&_orG=8 z@e9R&n$T((GbGm}{S%>Wi zIt(cU0w3Zabgt7^`#Qk`wezt z3nq}N=0QS{JD}oXk8!U7P9+$As6$vD(E;L!A!1znYV0I*;$JpJla(wdx8MILPrI8c z2ZT3X0Q3rPNDQ~a4++^366I^~z(%adpGGgqF)BaI8dXWjIVuCl$@8oIZ0C8}-Q+lI zXu2Kq?)w_eDZ+ZiLDke!s!S%2h0r^N=V%q^${`LW-<2vYOGY8uK-!-G;%;uUu_@9)mPBWe#vinscqhYdnP)+^p< za4MqsvGPpQ_O%dy%d0b)?>);HOs-)YE+t;14L_(wAE@nfb9ay>SJ)Qd(+s_Z3tz6u zrX;_nOcD4llW0y^5N+shvu9tdgO>c+ew!mjXl?wUZJM`~vgw zUBs+4K)`ww&#J_F!(tBep7Pnqn+k8y*VSuDaLMzHv4bVS4dm3{R^~ddA1qj`t`YFl zbKzOlGj=aO!NLltR-;xMT}z7T`{GS^tR=ZwZ5AbZXzaIgd`o(nNCgWbv6?epxob%H zw0$IY&o^^0qcURmb}Y1|2z%QijhB>NQVBp193Z z?_+Dvu*Lu;8G7Mo+vg)H!H6Y>`m3el;j7=*@$PHfwtfOXNlN2SF_f&2ajy+MSM$2D zK~*{$?+xDz1)UBZKt)u1T;|X9&70D~UV8c#H&p=)R86RcxSR<(1p=rgv_V@SVIr;}>(U741DW$Lqc^}W z2@4Rz-N?YeL86!oecr2z0ZZ{YUg;nP7`d&-u5(nC=Zp8${xveXoO>D673eZig}Izs zWOCF|f00yG2*4UE9p1WFab;PlY$DQe8C$?#fMi$h#DZ=KyUhum+?R^Cb(Mz0_kX5) z^qXq#={nD@XdQ@%bgu*5p`wkU9Uj+d_y(GY;NjWP=Lkks#HG~7a4pY z=5}%VWe~DI0YuQliF-W~@IjB%78aT(02@QshR1>HX&+=&@?(`WUbGRsaa2;nuPSq3|2lu3W>C$rL5JWqo{?pNSe;WUA9u9^Vbc*U$1 zYifBro@@h!24Bo0O%8st-M6l6Sc$cnKkt}<6W$Zu z{n6q3Z>wikwGwpo-R+G3(8M>I7#s-L#bEasomjFtYws*X^-ITCb?d0L6Vg$jrCc&A zqWl5VR&Q3*R_11PY?d745VYT1LNTgF!~GAut+TyGK)nJs_hN@_C%&?f0#pLL!e>y^ zl08b6xveSE6vH0HMCVgoM5@v&Pm(*Ao8=_Z>WCdhD%Y#&jfwRo;)t8GM+cT|gv$PF z5@8P}E|)x>$`EqME4NrotG*7Fb8b~AB{IE|{25(<-r=v0(L{?aWhz~b?_SgX;(dt$ zR{1L^=eyMQ)Qs?muPnoJ@EO>fZiCKG=I}T3EoSpa7paj_ueg+al5?P7ooT0WoxN3H z-Aq^vCtyb`^{2hp`S0h5AOf)hr3wpQSqg`G8CX|X#>Q4x8Sgz_C*Q|&d3|}Uhvzgj z(f+v@{+`0+$I)~X>x=3Ao;jY+`P4NTI&2CRpL$NWY85U!)PV;-p^Cn;BsQVTs_6)( zO5A#044!{OAzAo2FBmd8rzGAmbV0GCVsGXia_K=X$fmI-D<5tx)FB{HFt6{;P75kmmYnD8?ZbTq-Yxj)DBii_}RZ? z@XK3Ejcle9+s?Ot-nZ~w8m2CYTr!RpbL%8h89-!>b8V*o(5#^~oF4C^%v+OIp0p(+ zSTi#Qd%SBjY?_|=MVstUxHwreI0sk1dLV0gvFF$~th zv8AO27uD9*9yD>1Oq@Tkj9)p2{k4Aen7fjDXa%b)|CJdhg(_Nn7ZS z`ex*O@C{8B)_IO6uCL0z*M%$Gp3-%yp+A;=b0YfIDM1;F9GHN6yW|zqeGmcZJ%Fyu z81bmy^{ldI=H^a4M{jx7nmg2zcUyjg(U@tU7IB`2Kgl}`&fHctoU18LYhEOl1g1^{ z-qlbgc_aLqVo`zVs)Lw_{IZ&E5%RAy|Ivd zA-|=vDgVU^HOcKBh&KOIAK*n4AJN5xTJ+7ckDo#1lqAE?5O^aHgGZsEy z%}I)kjC@MvWi^ayU>^b&sugLcbz@c^4{iog=}DGb^=E%xQva`(t$!OQFE{-Iq-H!j zRk;CcaSAT1os%fL`EE7HbMP(eCwTXJaSi{q@s69RZzrB}+^h9npMBf?Xalsel`rnW za)A>c_0*#_AbzUYDYY?ESR$-`YhL?Jd6wN3?<)HF5eVqx8jXo@k(uz3lNi1O`(Y2;AVc=N z_uV|>mGYH867nHJIc~g053$eL)2J?jcoJ3WlkHM73HrFbL%9h)stbhq3NL+Sk12#2%|%5)p-6G zb;`P8CP*M)6`zJh2`1>wqRj@N@J^tN7tu;^Fe9VJvmZE^3@BvuRCK@%_hL3bms&6Y zfl)F1cQQ)KGRBw{XyO~|+?b2Z$D+`=IAken`I~zT9we2@H~Ei;A%PbGa^bR0I@aogJ-& zrT#*B!qYX8rchQ;``DT3DY>y)g2J~^qfWTC344`@_QrMFgC5+Tcb|A`U(*oU7C-t< zZ~O!K1J$_6v%>TfLjSksgu7qj0q-hV06Pyjrj+kh&q3YUM!f8arIVsF)L~JpeZizM z_l0zahXmp1ln6Wc42^X$iXgcmoF71OA5rvB5Xt|PI`V_KV)3e$=5C;T!i+H0y_tkG z=ihSSS|P8&1FowHR7VY=)%ISKBuC~7LX>7a8Uv>9jyAWz@Kz2|WEZ!%XIbu_$E2-q ze}x<5)2T z>>uQMyttHu`pTk$%`h~So1r1-Iml5zC)0UDHml}F4qU@+GXaE&_IIEqcRA+_S6Z!m zkopp!G@9T0Jp4J(F>2ReO!ssJ?i!JK>=fl8A|fKoz3-T|UQuBnn(ol~a>p&d)`G}S z%ptv0#-hTlV(n>ah4X5JjKX4I5!;xpdv!-ccHSh*HMWKGx}DcO#M@b{=Ak5H(86@3 ziy)SV@~O06&EfnNlE3TF!xlxnZar4fyxn$t|Cl~p!|6Qug2hzm-yZk>u;YKUFzhlN zZRI}Xyfz%Fo73?d-m}Oz+lxyqoej2xQ9_W?i&sP;@rDuz$E*+|cZ)EKz|k7F)evf~ z%QQxdgbKYF>ziRg*f*K4G>#xm+pWqy+t%&GZZL9QSDfetzDe{d;q?>v~jb!Z5@bL(cpNd#rghpEQYSABiMk zPTRu?A@Km1UFMFRt7q!~`py8Y7zGf}MELK>4=RqJkuP6eG}iDr@DtzDi-r3Cz)-L( zkc#uOkX z3^|0)VVUM~&;y4$p~P#IJY%9mCrRU+nHjSXGtqcBn~x8YeL0fYPIb;q#E5y{hyt3G zr^yNnNV2O_3y*o=ajuh?rS_EUR~ClNDAF?EJqxei5X(0ij=g$MSG)5P%8T9DkM9H0 z8cR|vJw72Pm>xK?jjOfT7GFyCUp|Yk+Qzj+2w+tLd;Ubau(B>QG!JDcaYBl)i@$*Z``P0wdXWE9Eh-1_j)@FE_h_CZKEvY*igC%YB#y4{R=po<%`(V#i4Y)M;5H?PXyK=|pu%X=JntXD zIrrbOK`D#uzx&EkswLw9#V!1fvd8pk?NvQqrWSm=Hdu!r(rSPl+dmHDudNO?HCyNb zW6c@n7yI=!dok;RB|394B%5@&9ewfPfLx_i1Y!MZmDN^pH+^_`{ns4#9$%GA%iZ2z zSe7_mu-w#e(HPWOKhZt6nC|FZt$7Q^5N|y}ln~WgBf7KzJX$9Xq1=CAx=e$V|{J->$-NTde%6qV63J zkESd*1{wnVXc-*G&IcYj9$QLmMOg0N0g1kflOElDf=dRc?qg-69JoEV_p!;0FbL$X z^LY=44vL7pW>}MUK3i!&shBR(z%(hO`lGIv3l6}=nGo;C(q^-e70Jk2M`QicSma}; zN0fe*R({JJVjkJT$>dY-bAh2ElkqQp2i_P``e|KANg0=ghpt5{)3!*puR90p6y=JM zEpc~_%poZSIK3s`{k=poXy8|`_X(t=@a4epGPCI#%d9m^ad)IKr-?Q{u7-rhHdH*^ z{1k++zoAf}{Vcyb3WC!H^9o5U=f7jqoI4|I5@Ij~4zZZ$3(vZ(h=1NKan$EiZ!)R0 z@I`&BTP((AcHu~oS_HL7sxVcG4=agpHcSa|+=s(W)GgKJns-^N;g3Z*F4G!hBxevt z1@NOTm1BL)rB2c6JaF+ucqa-c8(BBm8=wuXsSpthdRj6qf%gq++}u34HuP~o#Jpl@ zu&%QKqO2C0v4KD>TjH)4Re$bkguzDzvpClY9?~>1ELDmN6`7GYY&-8|KUe=DiL*#I zV!haQ`J?#eC+>5HvAEEqj4;(MiEF0vQ;T;N3)6Jo8K9KlJrQ@S!Xv3$IX=wCiTAW( zC~|%=K5(VAwD9mfhgR&^c*frJ&lkPG^%{0JcAA#{*!{7s^pQh%L%T{{=gzD3!W(uDxk3(Wm#Ob3o3x^XPs~ zIcrb`y!dc>E>=<7cMOShd1qWYKbmS9b=7ivN0D@Ebh+45KKae|;kcmepA*6|ZUYGE zH7IvOPI)`F+Sq>_s-m$i@rPIE0^ij!dXQ#4U99ZZHc0(fjGe-s( z@;Sn?siPTf#KHYFPRS8Q=6-L0LuuP79mt708M4v%^cJ7jU=IB6SuKnCSWqKpGz5XL z`F-Q|EtxskckvYpu8~a>Z#?P3SZ(TuE3254TxRQ_qfzo$kwLu^P05v6H)!Uyn!6@oi3ko9= zS|r#X3C65xgV!w5;*E{{lh~Epplv}c_BiosecuuzzsBwEIWPR$cF8W4%tf?|Clt@D zfZGRVH6M1d=6zHot>l&^d)~Gpxezj|olF+k?)CZV;LDLpR+Vk68DQ@7ex<8#7PDm+I4PFzSsNflWwJy8V5(~8;z#t zn6l9aa~DM4PucL7^Rlyz6SDw~hF3-{n)y>X8Zy#kYj+VtSXuYV=yte^hHdnzrWuT5 z@yzh>zU^cq$azVM|05}U)$T8?Il~Ak{@(mP$MLNzlgTBF+ST$Oy|RBO5l5wGaGYZ$ z8~nOXTRY)PJwH3$lUIoil^K`oQxz(4Ck760bqda>1+R5Y&a8*HNgK~1bb0DFP3g<= zJdy#cYcG9YyzDcICizk2hwrH@4Gyas6O&DBRYG6K9DilWb;r6e=Tz3&n%*g@Ts8j~ zQ))h!TQa(|R<@DZzJ$CjT_I0o6awr}6sj;ByZ49fZdm$=$jw&;YJtM|EGR|kwk1Id zZndG`OBL64?HI34Z7Yp)S>T35`;&F`b9}1MRA`v`{wMgbpY|>el{*>&OD&EL)6FO^#K_UI} z=p$LRbs5PGULoyEUd_b)TXB#>orH3Kr+t`Cf+l1|sYk(1xKASefput~bIRSx5_WF! zqO`KlqoAK-!RGLqb&M_>1G&kSp_id!yhuz9GVAh_wic4jSnUgP)z%9tF`-Foorul{ zI22UZmQ*?N`lzotiV?;N;D&O!1qf-X4?Pf)geZ-%-M>;hy;;Fs{$v%5ZuC{m2_s$o(0tY_g5RvzSD% z+wRDK+58FjGcU{5GKyr0QrD1u!$tLgp11Z^-3NW`qwK+O?WR-&+DygSAE2h6s`2`=nSD0mNUfnDWPx z5;vvdM*9!s+lR_0;pnGz%A9@d{W*8dxpO8py>2O{=?JMleA%7#w>swiW?0FgzWX_;qZC)ir)vyUT4ePj(!7R# zxABC<tH+ea~FQU+7F7q`X$`~|UF=vZVU)EL|%dSvyH8~XV+Ao5Y*6b9k16FfWvO!tl zR~7^-*l*@urg@c$|QzPj30G$rESFz9CQ_1``9XL zt6!B{(YCWYpW6eqOyNwdk*#&bs4d)1My;W(3*W-WeYp^hI&ft4p1d(nIc6W@mL*aZ zNvJk4&y5SlyB3u66i7OYmJB+LERpV1c&TA%f!{CaEhVu39T~#z<^900;@cst+ zUY<0U-sxmBJflxjTM+Zeah&P~BkHiorM>aW7`~cPJ!5a_E>#W|`x3MEp89ALnMt)xaonM$%d)pfOUEE)QHAs#g02)7@=s8G#8#Aye%DyGEnVZWfqs)>Bkz6 zfsjJfqYEo*tIs3yz|ShpS!3X{&voW}vE)^WX?lPmlNV2gawVH zburEYYB@k_U_-1fr!@K6VrNk6byv^gj-rK8%{UXo8-VU0F2)}l2k~~drr2Y)Gly86MUmW#kxf!(ydBJLyp=8X{98cWIRrjLhb|LdulkVOtmvH~-V{Sah zj8UXBcELS|s;h{ge32}iU@uiL6dFH`EOEE4>c8Wv6<%EjFsqkS&$hF@>sqwE2m|~%d>#%HT z%(SS~ACX8NVYqJ#Qlv-wL7~-LIzR)Gy?wxjDsR`9<#IzVxQXv+(WQ%zlCP>&A6y<{ zKIh~6usonGf;9f49QH9mGJ|04?sb9dk*;OA)$^fIRa)hY(!*=e-UWBZdkERe`_57+ zLA~yiqWt*SE`Cc1gZS`S2aEDjeHnE7ytJJb`AjS&!uWQ>HM-;K)$ft^vA2L~q&lzL zYB4d$BBIXN_(Tp%UaN$kgx9^PjF;0qtw`>3lqz;)37sQ?7mYXXRyq ziqSc5#g{lWi*oQaBu5${s*Rg7ViDiEztlb%HsOmH${BvM_@%9yZugS9Cz^8llY-K!v~paR+_B5VtO}-_cq&-017<`0KFoq1ZlR= z7&(Mk(3Q7&LcJMn^bfABZ)iKo#yiU~M`_c2WX3zphZ2t(_&6!(#Wzg~FIadL53Z{9erB^njn}mtC2a|`W%|4 z7W#T)3i2LL$x2IeA(LV)WMWDltJ-_gBmb%+O5NX~E`+`4jr`b@9l>=E-MoydDEKsU z)^t9#bdmzv&V?&O`<6P(e0mR>pRcg55=30Jo_ii`w~>V__}jc=P|uw))f(w$mdYO? zlJboSI)Ak96%cSq8uod3v;{fr%)vw(Yz&Jq?y;`kov*jH*s+xI@V~M_9U_(W#)`th zUqp<;ZsSima}f(P80pubD~=9*5<8J(F^?@EL_j#GF#q>8q>KA+9_}C@cu6p3L#ivUN7Lj%j%y{&~X1zh}Fp2_J%plx|4Skzrn z&v&P7+iooCvaBWp<)5+0GGqDTKR)_@PpaW9T27<%lkfU#c<#Ae-W*fo*&1vmbC|a_ zXBsHV9%-L8=8Z)w*c#$^?w;nJKYi@3HIcR*D=An>= zJ-L3BYe-_3MyL2t`ExBINLVu0HiC_CdvEBS&RBYq1llu%|QiC5-XR zWqIwL{DbNqJNO0$40w&<-kOFTd<*i<);pH$!q*$0OF(i!@7^R_@rGM0!J=OKIRIcj zC051rm|PbF|J9#==XK6WGPen5-;F0=N^fgUWuEq;LuZ&p-aYTOr*GrZW!%fC-3wIg z0EzjfoYhhsKZu0GBZkI9?Yp4Jn!FNk=V;YAwuAGGKgtE#XhB5?r3)pNt}egcCJ{U^V#CrbclE#cq}OsNzmom1{6Bw;|>hY zq;~T`m7eeUDKr~5%w}2Arc4f}&jH{r10Xj_fW9X3jZ>MgHGTT@rrLJ$y>qdrc7&&1 zmTiKfZQ^Jq-G{wnr*Z+7;~Ez|H|1V+qx1ujt8z7r&1&Oy?6hmKhlBdm2)ZRV1;T(U zL3zQ8YCnG&Sx|wmWlK-Z7Y=U{*wOS86p!?wr$$dv~d?Zy_xMwUC(sWOftt1(CM-I_M}*-FOo zTA&D-Ty;TWm{lk0YLQRRIEsI#HZso3m(kSl5R+DE= zv}lOVCm?J!P z@XmRjxM|YH`l+v`82;jl$(R4|(EcC0F6{`$w{Yhtt=Zj)1RM`J{30O2-iw_LtSHvY zS~`g+S}1}setJ0ij2y!gnE>zZ8``5G*7^N73ZqVBtBsBIqU=wz4$?cXx)G-I0ph_i zQu3sSwwk4dTNPs(UJoAxLglyBVC&&9P+`Fc8yaPq-%<+(cb7*5_I-vjJLk}{U&HYsQvdxCZ%sJ;PBE-cJ0-lC>!!Te} zKz?a`$h7#2Zc&*w>1BuaO>Beu`knRh^K zxP~-509C`sboNoy&|Esuzr)k_#g|lhxje4lHCQDniKG-bk%YOb0&xs4Te8;&uScap ztG!&63)itJ7B#|a7nz>59(h3xw(+6A3siM6R{#vLgn|mJiqD8 z%>>^bUAguAB-TFWDE-q1?U`$`zs5YsU-$v(mk_)6tJ-(#DB&G*G4{y$6(-cjDD%f1 zFWcH*%~QDbKZTKYv~~B5lTt&LmIZ8MoC&h9z16|)B!gjB(3I(Ak zJNWrgC7-tXtMOwVbSn>d$PRij1$0_F-`Mj5&VF^dpim}o*#O&2?=+l^pnNT*d>+i z7J0%5NA}OpRD>!7;dgTO$uH?f0)FXSV7AwV@fw&Oi}36UFD%xj7Jt`ug+h8TVs{5_ zcN&UBuKQ&TqLVtEq;6uek;rR?HuGMI5rEb|kpG$g{!Z{nuFF8B<+5OLe)V`r^GLGB z%RfeP;=3A!0VreqW}-@j|JWQY;HJ?tch-_8;u5Z(hER!_#mQJ-I;@pQSO*Z&b$%cq z34lZ(cuZDvzoYG%Q|=u{m1M%&3^3Xzfje26-fh8S*n*ZpuV0K~1Xmh4*ISB8 z%CQ@KS;!}bQ67nfV&;|DNk(bE?R24I;+MBONzZ$`xO8p8CPl8BYu_LW;UGxA^a8FX zGXHjoKXBdE?r2;&=2FSO4k?|1@{&}BU)F6K?3KOoe20pelfoC(|nia;6}J;RAm zW~^kfWJrPxxXhZMiE=&d^O;b-Cy z3aXw0O;&`$bf1l;?z6(u?Ip@Y2<6sOiDfR(a`NOVrbN#5mSB3nW~K-5@(q19?`xzh zvvK#cBj3f3GeNeMFY11KgrG)7eX8q$9x@@;@+twuwoZn~xwDpyut*2h)d_kPY5p2L zESp7L=}o#al#k*M?f0rl`4|nGp7*hf@TfNO{p17NOn4fEExJB^7Mq;Up;fS8`5X20 zD~ohp9$~ZoWqE97`ADWk0i*6X&>^gFU12^}bcFclrCa|`aXbH`Ek|WppGEiT9OdNMJmz@bOyuyFG@xxqV(fzGxyS3EpSAj-qapS0ihKLu6_jXvM89 zo|P2{&2qWKhY1Qv>D?v_b?<>bOwG@0N;aW|4WDfYD|v;v!CY-}P_!{A=w2Pc2M9jV zJT1`3f55qwx(e^w`kjR^2b?I~2jo)x z8^Lqk6HJ<;@2`h)0ss>GvT*9mr$=Rt%H)7(1538@S^D{J3>2x(9ddkKZSeGj!_9CH z-Wtj`z-8w~y+4ipU_V+Y>SlV3cDSa?3+54j$-(a&W5*SP3IX^HFK&?dMWa7>vL?5) zTms%J&r>XYz|%}~=OSD6ENYgXi$!f@Te-#TxdUwFQj#Y8uHjBccxtC{@-GaNDb-aR z#e`7aUr%8E7JjBk<0*{FS!}o=zlCa$uZ3VCseS}q^|rG%DmJEX`p|Es>wLXIV@^W$ z-PpV3DbmO^uDUCSor~LnusBOFj_sGb_tfiUDfRXYF%nx|xGu-I6K!2jMRSqo#3PlH z2Os}x+N0nUQz{%qaGqtRkUJff(*KZm?QS+`hF2bsh??tly5G1zG*1BcB7uTp*x8#n z`!LbfvfFDI0z{vU6+zBrz23wAqV84ev^(OivDE^1uota9`|?{-%Skz$8b2MI0w+QmdWGoM078Ckphp0FzD(3e(dn9is zb<50B<;mhEpYD@Y#pno%4D&ivuX&u+DNWH_d4&`kh^q?*PtWRTU@tW7J~V22mY)4| zu}Wgidz|)_#cRjI1LL!&CfH{vgX zFn-}2et-4(%3gQ%Pv5jE`~qB^3tc=8T4^E`_LFwGkz7I6;y7|F2hpsxe?TqqnGPW` z#_)<;kN2TyTjyJRTk?rlXs3Ki^N+CeE`HeP%$QT7?{gty(=`|0<9{E8n$w@fd!T(=npB+8wawu5_Aqk{lt(m)NV;i2bB z@SXk7qY6X&Z(g=sT=SSLOi}N38t0O0E^Me$kqC))^4Le3VSABffZAl1p3l?XWuGAq^m72rv z_vbf+?!Rv3fBXC`dh~C#-$(Xs*{oZffvB^qf3wVn^^gUTCwdy!ot?sBT~6Qqz=AVK zEwv#^DF-FIqBR3d#)LET0Q%TFzF7WDNx8|J+QXx#w?C9j_o?o^_%EwG0Ul)uHGFHo z`;?mM@_&K_RSsjBYQ}fDWbPz!cTpp2dZz&{8q{R(C+uWNGGC1omy?63A~ioqn&0MD zROV2L$0JyM`$3XlrMDf-y6xxwbtj#vUF1q7xfdp9pw*E{kyf?pafMPz%`hWSLagF+ zOo?V|Nwg-~VgQ)i#j`3mtMrJsU<#^=ZeF8pqWcgQsk;#0ZTFTd+nypkXCWHxVeJ8P zJwh={*gMv6yZG3T?zv^taJ>j0Xowr^=yMl_W2riSt;fpPb?f<5UQpQ~ewY}YJCxvGtk zIgeYhDnOeG3YfN4KI!MVGlK5=&IRq5>=jgUm1%1K1hi#d0GAQ4SX2AdP1f{1n>kVs z*|8NVY>(a5%!pzc32NH$PH2=c{)F@x%UEUBOX)GI?1~{mU`X5yF!`urSz*`1#&%WuA|K;DFguizD z&$d^7XP#nAVP9j_hY2s|L$*mXn~71T;)w-zai+LzC6_eeZ-=M5e)sgg(Dr`zwlH2Uu~-yv+~5m8Vz-`~qsOpkxC|XdCVp>rH|%3(?u`=l16s=kpc5PjR$y+| zz)$lc$}U)pZPye(GUoSw2O{hqf+l>!*!>U7rft?F9_jz8?bB~ITJF(e9z@A%|26kK z1a#)rkcA9>!Low*>&o2R>Oqeb1sV5XoC^W&weJt)Yub`lYnSz1afv!h9z+iaf}fw> zy%)niW)a*(gUihsN+>;M@OJ}^+hn(^W}TsL7A8dbHD?*^@d}0-nKz7lJja%rCJS0| zRbAxmF!hw968Bk;7MtFDoUWy%<*oF4mLvn{t%{*$zgxkhf`L-|VgaE52@#($PtqUR zF(pkRp4FQCraZ|LU-^3k36TpR8xSQ0oc;O9iw_j!-h5A#w^OD>#7e5S4#qbzB1+_p zxqVgCS*oZTzdzgS)h6cQ%lkX{$&$y-;~Q%O3%&P#Fz0^rv8U#ywsLoutEgTFyBwlC zvKV5rx)?$3^}2}T14YR}f{wJFAIYyZx3IE%%(7hmUqiuP=jXrrT)OxV%mL5Rr+@VM znky770;Xm+r0f1x{L^s#XHxxp=$XQtxOOGNDwpz!-t*1h;-umB_=<+M=sz}#)xe_i z3$?l0V4IgX#n>Cc%;mhAi<0aw8+9* zd@Y{b?PrH~tiSQ<0p@t?C5VuZdvn0!{TRw-+!sSm3MXk=3(*vNq6KM&{1MgD3wL*% z%3}hSdv%=BKH26L_gFm&DTFQ+`$A&BCwPMUyPFYb_Xov7-r^V2B3E}P*IzjiYUUiW z*~TO{>e{|D(o0R_(ux;jM){=x%$imC9Huw+;b1~PyG@A_?VYBlhqk-($HBiufyD>O zidmUQT@_(&r4>4v7u)Xayc!qt!!GN&JQjp94Aq{7v2x*YRG>qXRlsNMIbFg8QP8R`;`VDrwGy~hDa#FM>R%^n z*}VLFRy?48>w9!T0 z)nO%TZ5BM*7ZEZqKAz1~`U$Gr-V4|?3)vd2Nw_C{vzAD1eOFQo)Gcs-H$eSM!tIRF zk={lP;m4^%#s3S><8MDLM(O`!@4Mrg%C@#+9}6NPAYG}_MS6FnDN@8F^dcZN5Ttjo z(VK|$ra=NE5Ttid>74+f_uhMNe#bjAl9`{*o%_f8-h01y_=kN?l5_UnXP>>+Ui(?k zlN5nDapqB)NJVYzfek8s7%P6h;HT)O37vYIYTtcE_H4>tdLuMV>*3U4ERG zTDdvEbiM{{XN^y@p7*HJh2DSosMC>=ao@1UIzBj?rHykq~;R87?a`W zz$JIzYFyxSM^}We#?sVIgJ}1FMLovUB~z7DnW{&UiowtbbgU`wHqhBbOT3|HZxw?^ z%q=K2D>UG*HHSK(K?t!0cUxI-uEeNr?Bd=@eWw-D7F!6E*>&b$eZ zuJ`G|5`TzhRs+PC)!L1n7d8u_@Hd*MpmymYAftb5v@5ed;m!u9(U4q;(#Y}M99iQ8 zhyHxPa(Ff+wCpA&jgID7Rk*bjlh82MX<3J_kYp1>LB)VuJeDX7|YKs1qOS z=Q>9CI!3(uY|ZtUlIG5sgMkPQcab(jDk6MabM zBw3EoAr7$GF7dYDiihMQiP6p@x1XMq`uL+O|I_nl{f&cAqC1O4Tq~~tHXXc!`+-91 z1)CfIgk)r2$@Rwzh7&s>zVuX80JuwAN(GD}c-4bG|Aco*a?v1#Lrm@k@zO>KLkKo((@+jOk7!; zCsHe}io4#o@-;wJvQc5VJz(-3Is_i0LpEiera2^gQJM3bx)?|Y1M=n(Maow z)OXZyXfqOXgcWC~3T3w^pGGYx^V&prmVyt~+aY7(V(3*b`LVi&r0{_gNu?T4&d%^$ z@hf3Oe7%*v0GEwzfYkV)4T;lP0X_B=Z%%GExbo=1tndX{H5@YB0e$)PsPCs`xPCI( z*+g>Gbjl<*S%iN+GWf!x^Nswx3E#mnT;Gm6X+VorrLhQ3> z;&e+2y6>z4=Z~Dy9`311SLwm%@;mtGH5*tRnL98)X^@W?M0+qE2eE`Qu}91{G{=v> zUAF?%*zx$g?gt7~U^nf*fKJ^ocg$`Pd-OvUCE7~m_X;Y>+RYAYC_qK(@!`kg43l9a z%ysZjj*Fzl)@NreNX~cS7VhaQMR^#+%#6;H_QX$ZY5*J{oYy}oOA^naOv7Q;^%F2n zb=uGVP-z7|YkH^?5fuQ`yWD5OZfPm$tINi^jO%HG3`3rn#W=H5T#D`$+;`E z7Q;sc#~y)%CO?8e#{w7b$J>{LG&o0lb-;WqtrYG(PL{T2OTrSZvF0jkbYp>lDk~?d zLs1)SaNeshpj5%1I}WO-yuV?UiAh03p&sP5<_k;(;c`3gpA1o;)*g%?z=|`^*1&~6 z6z=Vn#4`W100?^v354+JK790?RgE6`tT?l>(tr|$36#PT2dq^@?YzmSQjQEGFSQMl z&eOw?o-@@cTC4i3wxt#8S{zb~(T!UH9QpReqK#q)_US!vta>t+>%@+fZSIp09%5_9 zaS6eZAm;i_CV!r-fi=vmz&?fd^u?bGel*yq!Tiq9F|IR<;_26Wn^R-NSXUxmY|*N` zN+77fwosd!tr*6d-|MJ&A@RnekyW9#!k%GP?^8m(#3TvRxW!DujZrax?($0J*Hsb- zlz#U|_rX6OSs1TE>TlGGT~I zo408ltEU`ArIE><&PAn^Jd~P{rQ-yUQT`1XwAgg!2*;4f;uGrJ#D*iZ>arA#OS?wM z`P3bnF6MFJAgmy%mT5#TacgFCMwSq4*uY~a00w0=inHs-f&HN>2xiu(`1+lQQx{ez zsyd|%%*O2$iey>ooxL0Sb^s)u_jR-KQ>OLPg<1Y9u}WV+T!(8jo*cx3k-LZt z(#b7}HSsWEknlz;&Se~;6NzU>5~5wigNC?-SF9UfDvwm zu}QhE?h0I8V}JzgFOyq-;5p8pj?89_xu~ap(=abnyg?^2ASzJTlZ0Zf481QVz^emM z)5z^3cTn-oh>nkh90 z?b&hZC@3mkBC{k^+z>I|*&llF^uz~kiApI&1}VkD!>9Pq?FZ%mK(NiR{nEe?0UZE5 zC9;Z`P3ZMr2kO4s!b|EJ)JFkeL7?Y*6eRt~-Qn}F#8fked;I}YkU=T)AS0h5Go17| zxFcmeNUe`u3D&(X%h#l>tn5TWhLLu~ipEbhXlDzXca&%KZE-lHSFe7Y@~E5C$^YaM z&IiS*zVsEMaA@*c>kQ_$UcFFS0_2iCi4&GCq}ykWK8@mM(d_BRWfo^Hleo_>;NXs%pQAxk_iceX1Dvtt^ARnI1eic%3wyQQ&VsV?78D4t6Tfyi;o1ua8Xaw28OxoL=UinnO+2uMm^V0*V=j z*)v{mTI?&OWHvZz51D+KyzWA6?@^?8Wuj=i1;eL*FoJ$}T9MLyLsZ3~*T4B;Fy30% z;;n14L0?dgV9+^?;W53v8u;Q}*GloV;iILls%{{Qfg|W@sl4WSx3R`x0+?tuVE^!B zlai_vR>OuIAlECFpMZYs4dK`4Sp34-m$O!7_YCCuq-yR#!6xx?CcV*Vp;EEz=8C*~ z$uga@Xao#3S8H-RylVEtmT9Tt0S__FOw)vNI`QST_NY&R;#HHJ^dE5~$~6R=-MzJH zhpHW53E#A_iQ&nx`e>^}zOLbwT~a4lyrcM5)*u$Ee}UzMsmbfi{JG2As?P!0UWb_o ze_x7}ZCnYgAiZlbSNE=U4flsd^G7jo;m>PA9jaG1)Z)`eSjMHXD|dZRK9d=j52Y0u zrG=Y1M-Uqg&MMV?4*LA7@-pjtMM-KwdNYj(*Q#Zi8)AIE{+7NvA}#biJ9Sah4! zz$@~61S!r#8F(R?bC_{%?yJ>vYkVo*uw<5H6`xGR?8?*>Zg!}rUC5)YE%Pva7PDe0 zx%BJ1g#T2(U&aRslPi7`(j(A3vXO7_{ITNPaae+>>`3Z`Wo(n!lef1|(LMV9h5y3Y zlU3O@P#V`QZL;lJU@HmlAgMZbSIdR;tJC)6kh$znvI{^U3159b$Ak;myu0IO0B5CH z7ax#nNft&pe~ilbG;}B{^m0Dgh&q!WmQjg7R{1ze*h^abAv2er5CytE_I^!6&iJNB zkJUIN@BCh$q)%9J3@TbuCABNixmicMYCk$U_w$gXJtDf#CeaHO{?4yXFUn_94BZLP z4>83y^yrkuBVc)&wLLT1=)-Cy&et_-GFw(cB0o(?@AO-3t-JHw(M6La8fXmY@KGm( zYZ|=PyKh6_a?Bb&Vjyhn9$zK;6RIVqupw+MtH&xj`-K5C9Z}L=+JvPlu~0QR;KK>V zC9g5XExs_9>*P)^dUTh`gLG|Xu9J5MM=>d~le>?^1p;8T9uHyGF<;;KwB2_crQF_V z!^W8eEqj)?@)6V@76}8Javo_oGIR}>Aq(4((aCHY)f>47`MQ&1)A{C|&8}Thn=sd0 zORsmeT@QL$!U7bO9b?CFdng}NaWiBTI!B{BpmRJp#y}*@N=m9mNB5`KlaUqG4Nf@m zlm)m`X%1uX$xq6UD~Khn%S{W4(WL}*D6Y@W$;7~((lH6nSpVS1&8mX{9Gdf1RqR(d zbXYXT+4CzLI{1a9Az!2tza3rHJlVZYXEIh+*Szf&Jm zUUcVGe&4hO?}I*zH&5Ey+B3dn0bGMB*cpBC>O7=a%%wUsNC zFW|P50^={no1FFMC@RT@ecJOtw*u~;VZLg(g`{Xv~n7O6AmAth*U8xxt7=5F`@Swm#RhWYPSe&Y&ZDG|O0n_yq7fmHm zlh}KZEmruws^qgt3%L4iNW&IkTep9?L$Qf~%b$dQKUViC($JWy33_n9T@l~Mp0 z2!(>AR?W_JIt@z2M_-QM>dp97bwoE z30%+9rNV{i8`DXH_YBRfOqnSVRwBN9T(=(f((AbjMTQaU_ous&QkB=E8KIO|O-YTV z0XjaiXU-eA)S?np2UL~IAkns(n9>tqT;Eq)fsG~aG%UsiisZo%m^ovQAQE}vPtcQg zkZf6irkx?^ZhsK0Hx(sBA{YjQ(q)8@dE*a#p!i1i_?+>CrRvj^T0?btd_tibY~sE2{twV1-$eN@mO| z%0Zq4GJpVJHuM$ZPOoc>iH}-bRp;gg60w3qD(ZQ95J+A_eUf!%6M((Pb74u-SWbAa4Yz zqa@gSpaHp*?a`CX0|@ISdJfK%$_P@N_GDl)BD-CT6yacsb|`dYVx9Keva%;?sB~KS z0-Ex$a2@&rIxMVjkS+y;)(+PO4&oZv_$iw9v1#&3QMk1cXNvsg_Ip-?@iX8Iij0#J zIKL7TG+Rh*5$D*evRhrO%S_56nL|O zPI5*St_rD!HCq=pbdF(prKCizoguWIP=&>WHQR_7IT@A`5s}{p-E{uZEAd|+hd7y# zu*0G43AdR%O>Ewh*U`ZtEpJ7))LM_is3MmboL9LPRHf!gp6%bi0JDxDPr%LuRk<9X8`XS4>9yv!2v}og=l9$zniz%kb zMlU(tnd^*d#$|dOv5Z6(8o||GX(=@qRm}dgI(vj`emJXfvFbgG6zBJ5CFPl7?o->G zqdQo^fX@R#*~!d?hFR%d6mlle)|z|PzHQ)*u!np)96~^bkX44E+<6TH%6EwcruS{2 z+@)F;EeSisvvC`CSNpbU*H>&CYvO2I2F#!9<}G+S`CYLXJE;u4pG=vGrab|5_vZTo zlF-_PZC0jQ3+0uZr6jX+&{fvS*w(OO%}rBe(8()td&6#EC(LQuQsk0rHgCSIc{bd6 z=0M}lN(yd_mvd%c@im~ZCDj*|AncI1Ix`(!>MXO!b|6a4(;}+dGA@kK9d=bu zxHsKQSZKrv zcd_{hGb*7Utkl3CLBszFU3RQ*e zcxLfifJfzNwbhl(H6kEtoK0i0vh_Lb?zm@VaLzjD=@Wc1$b&$S`Y@>1$}Q5m*!IhD<~%@nn?^1h;S0!XdZZ; ziM&*RWUM1cS=w*bRq%VZ^9%1X)8|^AUQlL~8U^kmnS})0e1`p{yMXVu)F5P;VagD6V}LyacC}Jfs9Bqc z2w2#s$@VEOls~TMAn7J!TC~V0E7ewlI(ZUxtShw3KH(gHt(Yam2Xj(}I=;536iUsR z?0^z}XuGv!pJ>MRK2M#6nuJnWa3jLO*SYrz1|SPnmL#_obD zyFG<5mq@O1eV}VLUu~9Iw1^c^YF!CNK|`abwSeG6IQ{*8KXl-n?LtdJ#Lye(i7SJJ z9+SNRiD6iN{vPL*Aj@_2mdKn{#-Q-Tgc~fgedUau?*P?1`z`jnOP;8MzR*lm#yjt+ zlb0TTqUK=duDHN{cPxlMQKK4R68Mh*CI?~bWKLOlDUzGIcd<4wgi4vVX~(=Lo75Ed z6a@WCRFD5@aP}Jefyr_|i z%KeF+CEI}~?{=e$7b)-_Mm%7cZfFWJ<%M-Ay-+?;&>J*>Rh~iX3=nykP3}e;?o4Et zfm&j2J=E7weW;z9sM4y#qT#EoP@jV9^1HhM#Rbh{W^)@#;>2IJhc9e=u(A;E7T@2rZUaSc(Ont^Yx=R^u!kn0Bbg}Q z+v@F*Mv(QGM|x%=xaSxyCZ-I*eNbrHj|#T-sh?IeNPVI?Cl2ZqnMBHbixujb{Y8;t zT5&=)H#mpjUE39|DN-`#BNaNd`y~^#D~lVxfcT+`V!Vpt(6Q06*{d1R zLeT?XDazx1#Z4>H%DR_Qc~UL>~sLpIlwV8qeE@HT6tj zdHj8Wq^Ch#dNLwNfJ33vR`&%%034O#zeR*BFVgiy2t2FUf#ocAM3~I6O_U9=2y9Cg z4zV)$4af&eX&VeG4DhO8#@Vf>0pe+^2+kJG8^c<@o)K?Ub*vz*d|_m)Ub&iz6K08h z@&kNa;hN(>96=L zycw3!nKTSYvoW@H0=cGfv-Fb`iLb*j0M|6HteCQ`Dm^&xs$b5{GvtBQgKcE9mAbLB z=$$vt?+T@f;E~8zAhYZr+Xnnk{;RWTerbp+4p55kBtaHw&Y-XBs7?81351b_)TY+^ z?pFdGdh$~N_*CDLpv{H8g^l1MS-F{O&nSWd^`q+jh6*PP9M`-2-y~j;g$0Fg4jxKQ zGqVW%Y&4)DzF-F?=B8xk_|V!00SlVVM)qAAwYU5z$VNPDtZQ|eEU%xs>k*e~O{B!xC##_yBbFI~V*7Im0h+b$Z<5 zF}&5vZ-IT9tIb;}-%j4FX}B1Kh^$bC$n-n~Y2`n~e?)&MpGY(=zq?YppbQE9N?X*sj|b5Im!b-TbTHA+K(Mn~2dN z>^snT2|!|wfF9T-Xm;`YM-WJmDKi1yEtwu#XLHi+k#@OS=Htx6R4 zr~-9V3NbhmaYKnGF2vkIA7eJ-YfIwtA8&G0la}Otc%Z}4p@>4F5);kO_1KwNvZ*I( zca2)J0%=c?oS(=|pYq7LS||rEdt%o2B)Xfe<$Q=J$O$$vNL-wsF+-Bsx%~^dcw3=G+pcyy@JZ1WkqGMG(NTBQ-#{3L#8;oe@Qz0 zvj>Bh>t4M{JZtg6LE9s();#jNaDu|zasP54e4Tz_IkQRP^)t|wx=_;l8-`O#)(@No z{cQ1b8KH_?TD2Z z5nH8a3T5LiWAbKS-VkdWdX$lYL?yp_%oXHlsxv*XOvH!PzyYdMio9Sud{j(nV#YwW zZ(<>iJ5IS&$m&C(JXC(_Cmy}nvoCC9Z!UGlx_Mc2`N`d9?U20Ev0!#fk%no>l|XPE zswiGJ?N0GAlKHgMs}U-CqpaMknSc<{4gF_OR0_&3O$v%rCb64(`JS5CW zt8}KZrOYa|<_%NHO;)|p6W_F`FqwBTa?wi20(6G1|91`j!@)(o4fF+LNK<^6W5cJt zVDw!juaW7gpgcautY&_^4RpQY%XT-1TPA4N&V^d@ueZFhq8ae;Q|lR?nFOe)-~Zw2 z-#wJqYTteC}iR6P5cZ2qsh&d44Vfy z!ZrC`GbU$in557_q*NY$tc^jy5GEap3aUFTIVV0KBayd|w>&$fqzwNdl>Wy?e)kw} z<UQYnx4ofrCx_bIA6B~9+0~1D<%YS81hfHY zZb^R5S?@?v!CO;>!d>clZJ^t%20p`61D&Xkr&ynSw;ta)Il8p1d116jrBy#x2v*Y0 z4Q=uok)@U-g7QLTN=bxBz|-J2rvYMW#ax~@q2x<%IZCrCxNbH3|J1)sLy)U(T%@E* zqALRCBd0eomuq=il*>ElKtabkSCfh|fA(5k+IN-bf`RM32-5TEvm-72Ys#8Zb!`gu zbqLFOOKE+R+TK_NMFl4))H#B;Vu|MXVzGDB*{mZ}h~gNTUpZxTrafDnDMsH|sM%m@ zz9sZA?+sw0L){vkx3J~C!e6iQpwHy(dt|V7?V~_?13M@bn~GpUp~~eF3eFJl@CY@y zf@r?e_V1kf&r0(DrGjT3RH;jbMGmS$^!rOIwlut9>C)0=0t(f!9$BX42c@2K)FqcS zi-BzT&e_NW$oQ&0^W&1lW^*p@o0xXh3nw0BDYtb$DtXXWBm0RSOBeDA-B-4tQ-mI< z!IT&$ZaZAJ);wE3Gf%GTHG}kE$Gi3ESl zAj7mFC{L4aL(yR@Vr)L42tZOwlRS}8n9|rspplr5-|5uvpTeKe>g~T-6tkXh{7Dy* z^~8~VXY9Im8$Aay=(WBk$lW#e3NoGZ1fXcd-@oi%Im^TmFPySARWw~*eFu>2z&qgN zooXBF{wh4_y&|^O`A;_Tk9k{|Z;5bP)Mg5$Zo+B!AngYy4?G2kiF(J9O7qKK?Vha< z6dUjBZ{na|*VsuYtGBc^e3O1ReteHbc!>^~U`5-KnjP6$ug%W5ly>;osNV4Hew=ZS zcag+&jt%HI?uXE-uZ^U}+bUaPmT7Sh+3_Au>g$-`f1-OYe?eB0Vqe`(0na%KoIgT+ zp3TWVg9oWvToiujdX1JTC+A(BKyNbO~{6*LD_~x zv#H?PEsx!Mhd|uDlRD_cL9X9s>fF0zn;BjkdkjAcWtOh8U+?jj%I43fH@v9TzbW(b zmqBRDz7w`kC;C|*TsyACX1{Hcj+GdHy{W1@FEWG89(wPtx6NX|A*2vX)@HG%+*w^t zsw}|sT(%}!ElU0T1oQ)|3C@yiAHgZkCy6Efwe?P8jeRqzzWcPg>OSkD(+V8>-?#rx2Lc2lkH=;>luTZ?Jh>n-o^T%0erQM7l8W8@Ib@-t`&sJw z{@A_C|9G+1Fv-rn0`Hrz1HAsu{mgf}zko&uuPsiOlGp1S0A&#gV~L&A#hr)2#<{nd zDXdLA-coA}|5^9pe}?A^Pbr?Kah0vq2ILVq88bh(w-7Qr;R9>m-rGBx#Ex6el(XoI z6%|cT|6{uvY~c}1etks4+3X=2j}hu#zSsnX5Ne-@=A z#Z=CH_>>NAsuldY=IPe(YcbZj!x_z*D&5u!=nMcrFREUMYDS;WHH_OPNZjv z>OAtfPNN1Uu&-Qqtqzz|iR5;ORom;x8aDvG_vfh-gRKYZs+K=-lm*3ZT$|qlugeqm z971wFl!>_>yakQ@rO5g(6~TWe|66UK&w^FkVBb)!+sVm(eGx6&{JgDI+Mk7#lS^V; zqLSXb`|I+|^xRK+S-O$X7|W1LeLqiKV9|xM*#MJc^rSm-;fq5f(3bySIueuJvRvrHB(PBK9N2wmQaifXS2rv^$=#J~HWm;Ic+Yf%hb z+X+h?&lfGyJZ7rPWCmZnaH#wRbTd^%)Ob&ma5MA^C`K+g3EI@%|Mbk&fj_^+(Wn1$ z`zc?mc5I>y-(0K?nYgE+^Iwt<$tpU(vUf?{WjX^$F0yK<>C%+Bw}Pw!ze4%{+TR(x zD3GDZx2Mc!-ZP^bP(oXa1gp+pI@yo7LpwFQE0%{opU4 zG!d#Zd&VRS?Ol?JQ*9=b3tCTqL0Nz2`TTYY&r|)kMs5EJ(Gw!xXh=a`X?SdaZ?kyE;euNw_`Iz~Y|FdQ_#vrjq8%8A{rH%}VM4 zvP2;*rM;k*o|Z#1moi9V&%%RiCs0~Pm-_S4e!U-&X2q zHjsU39o~DU-d?O=PSR%>HTmF30apAx;h>0vwdCaWtuVXows3)`$NW30KI9LI)-HEu zH|hcNBHpq^%M_Rqw72Z;P)VEt{V+H3do}#M$pA>5Bvhb%pU+z+CX3w_5$iZ0KC$T$ z#=*`NtSeyx60H79nK1vj&wq8Y`ma5Ox8lgZ8q`J2u~542-Kq#NU1A!XG&Q9~bT#hU zKb+Cyax-3|=Lb{ZtweHYL(}$dZpj{y4)OlC2HV~&e1D;#-1noHTDITj%(s}@?PE0p z-y3pA=ctahEASjie)(_2*LY?{t9Mm;C?|2b)5}q9GNBHjGk9F*&$yelmRxv4j7k~^ zEaGWgj43RyyTz4%lB1+yUu#kOXB)71@lBDs9|X^ocr1}f=4CfGBl_00mW%k-M6y_d zO|?l0tb69uZIF=4pZZvMCc_&hjQqyjaK}}EP*&6~6I~T<^*fV6fHwohgybV#6MZ)4 ze)SeW$8)b8_2v&t$Mq+jY+t4p(M<(Nqlc2?3$BO!p8JEy~ixU$fH2rq(DxW}YZXDT+gj3#2)WwC@*DmeV7wwzg zr~C-2n$_>tT%vjG2veWD3HT9s!s493rso^XUeUXYv@f3ilP&V2Dt#^e-e3UacC={L zg^^SF*!KAM)bX?KzR&g~>chjyYBCaXKvV`_Q$zpSAO0%+KR2bVd-AabxnzW6R`R(f zPh*T551n&kZ%!bYo6iF8fR2I-v)XiJ-u}zfmCe1=7CAKvbIB`L$~=*3uCTj{!T0o5 zA}llu!+3Grlq`e3lQxcV%zpXKMJ(vY@+)^@zy0z=;^n^8%gHr;^Tbzq%OEql_YQJ4 zuPx_sHE+x6fB$Q=thO2N4|`n*&+G3my|ia(4!CbwE0;iP`9YYQqx?Fnt6SM8?q{pX za=S_k$shi{)PGZ7SvdxqmXQ0KL|Ifu>CAcZTECz7GaFZV@8jpQ$Yeb|#XQ0M#6V{z zC#>Emdd}B(0vTTuW-1R=4ucv~VY?9@4%@dS&b7MvR}?;)J*Th{@!YF01?N12I;i2g z?7>}UtFP&P2eQ5A_T1ojV7sY^Z56L75z!Y=b^K>u3~OXPYflrkpUt-+dGXuGl7G}N zp%}KF(5GZD^!Kp)zxiIBF>l~_mtsSIh37(r=hR!5;n$C&aQEl{OjFLl9Ra?k2w_F8d>wObPW%OeJ6Ge*~(h zS1fBGEty?q7vz_JM#*JQ;L2()R^>ev*~v6%X=#JpE;otDejlD_y{)xl4vZBoFGFo2 z*@PwUV!bP6Y@3~`Z78ukm1{)WDho}JrNW^+J%a^V?Flcp2YW`O;vIH_YR0%rCgM@6 zl9Ibzi|AbSp@>4~h={(MnVX52)e7+xx9sz@X2MJCJhMK$gs&-Ru^x8X$?iH6vpTxw zpKE%9iW@HMzT0eMcT1To`Ot#8)+&D2#6$W3XCJrY5|Qe3^mFf{YreR>bN$@`*%q|d zVPa7yY2xVTwBN3YAUHAZ<-M*uplbSemHzj8$x8pCiPyO*6|)jCA8R>eS)VTLDX;>^ z0IE*CTerK+;N{0+i}6Eso2>$lxWmtGuZIhl;^0k+lrIMR2Rr%3hujlBKNLI}QfNW0 zP?&o~F>R^3R9#8bXsry>I2Au=@}t2c``b8N`g@4|{UR>vBqO36nn2k`r-d^g`DE4S z`EJ#3n`l0mOJukkE=#XmKS;pWuA}fEosc%qa%StP=(WW46qn;qT+*?Q+GIZYmgg1I z6oi_4;w7{iJkHvqa~iuij{ppKoVAop-(ZS(>wY#4C%UCxXS71?n8Ti!E39g?sy1#Fpm!vnxBRR9-#Ny37qEMPs_O z*AEQ{j^^Nt-&Ssy2}Bf{;SRE<1k{#9KKXIrc$?Vj^+v1v_lbN9;p6S{^FMldbX;Gx z9{TU07JmMF#{A!(G5>9*E^)lrMrJu|6Q^lVJYJ;@JyjhqCzrxdoNcf67@#iE?Jgui zrS9B)L{mL(E6o$DnNSLtREI+6@Y6r_2{5eo79pmd*~1N^Q7F#irm2{8S#dGtJ`|c_ z#muKX9D==qYRLvO-Q;6^-*?6L64YUhWB+LJ*o z%HB)`MVOd)<@waR*wnJg8APt#Ug$$c>I`ua^;^IS(B0uhcliZj$+q)e#$);TCGZnurn4f*S?AZXqFk#g;4+}Bxzc2OwNng3m znFVn9EQG3OL|JeclE^HbKN+^5Qf^l}-Zg9&+o4VJODr3*rQ+pDy9$X;ScrQ*ZSjMDAL|cGZw{Sj2kKi$x!o0w~ zYnkUnz5QNP+tomNPs}7!+9Yd(Grf^=Z5dWACNc&L?P<2ze+#0f_$D-j2kZFX2O!Il z$K;oyIk-30j&)4LY1@Wt1QymXRDj9s(U3|ktHVO1+MaTklU@QuyvH**m)aqmd_#)j;@+>( z4wz&)m-WVvJStiSUJ1nEY_Z~gX+uXz*|!Tw9$oe4x4$g|L{_)B9YoZqHl%E`}(7kGPpf#ku4(d;MFcY1$4#4eO~y z$JP7G0#N-L(ab6Wi8>`kJatoU+AX4+Yj=JyIG%I;8tBV#`FjZc{i0cKh~4YygWZR> zszpzEr7SBbgl*1VbXPaTm`|^dP&5q?1-36@?REn90ov{Sb};d_cv&{lw9}eJ+pxLG z!gXkXsG+=+RpU}kx}g^a9ln7Y0-ZYX=r^AnkD69C^eB7ce^!R&%-JArUPrc5Lo07` z;AlgyE~t&2h;BjFdm>?JeG%z)?EyZlZAZw_Y$z=fe?Y%R`00LrYQ5vIgUjpINDdaG z2}cwkl8KJL(aIS~Ay|y-jr3#uK_KAg&i!A*Gp1YrhoTdI?+qMnf&5_yMI|CI-TKTW zeRb}@IitI1F0f*KL}!D&bVwVILKp1QM!sfptGD}+{k~+vSXk&rZcoRl%tKTfXQ!yu zXD=E6?H>Gb1cvUn2+Y>sCj5Wjg#W<2{u_NSaCgb8CKH}y&S{&|(G83!;TdD!oQyao z8%H6kCTMNv>f&6jLmPhDL;_P=_>Bq!OZ8lGumYH<>2iK91SciG3Oey~WNy~KD@Wjsuu;wpZ!*P+%8}ty8_%TY)lakt;DAKB&RH z7g5LY7$@o6T6Q0sZKF+i(l17}(mBogpCA=-GBJ0m1}5NKz7`LyJSy9`q^%lit#qQ> zX{F;G9}S>&KFAA37~6cmtDKh^F+0H_~uy>qfoxZkhair$<;Q7gU}W}W&P z5qSO$?EP4hkpKrS=-43ov}#1 zwRlbVZt(G&-35fa0?nEfGtmf~W9W#~q}2-D>IyaIANj$>;ryO>Tc0E~^i|PIATW3Fft=s98;} zyR8n-1b11y5^L?}Eb!F9HKM}aTstbI|N2$;n!?23| zeWv>Dw$uXqIwgzn)ZRRPdX(w7^CrdABD%{zghbw7bX9ZkGbVb-hM!u7zXBFGy7ms)pWmNdUnK)R=Bi*cgdzxNMOssd0rc82VeB9jovRT zn|}&F7gp#-P`KsQQFQ^HY+Ji2pslm?vPg&*9=&pa-5Q}neiTqhFypSW3w&If)nlD% zp(G|hz~H;a04oUYAC(dCR}>R$nm>J>_<5C9t|w-|rhn4NCMqC1V6`E5xVxgeSbqVc zfr?I6u^9^}27eSPA+$&=8Pk$5DX99~rmD@tk{s-$Sxz|t(~3s=MI$mOtllha8Oi5c z%u@C?&xz9_kgCvjMt~vrv9pk>TU-4^ztPg==~6g{klX<6yG&uZ0abIuFdibIW}QQm zF|&~m0#=YF`_=A{PhfCW7Nh(^#R^Bh+oB9Zu$=*AhOLN{)Xvtru$SvNWA@43(w;|C z^5LEJ-Lo?c?q5J6i4iiTK{|Y9#WE;X)a>|Jd#C|X;ofE%)F;>4KSc2`ZHjyOo{g*) zqQ4)Jf};0eX<@o_(c}1|zHsp>UNxQ0@yB6GI+s}` z9U<(ne8g2%`>5o8| z6miD-89Mct*Y**dlJ-B*H_MVqO=2zmpo`;SZUB5$jLb_Lr{Dl35poP8lZ25J?iFZB zxZ>>l+pEIB`7uU4TS>)<=v>R9Cfi0Ui=oNxs*k6R7jAX4=SBu?{j8UtONty(rsj2C zrH>z1P@Pn;gU-{1!*ABP((6Wq6&O`{TeNmn-04)t@kjGF&lpIlSl&Z!VpI@9c4M-F z)%HrCh77q4;WttKYV04DA+sq(98!RWHy7Pvwg==3$PHyuAi=Nh*s?F_MJ>#6VVVEA zzqUvF!zDJXa4&0_T^A8;`9W z2B@?dTFcKbR?fduqT*if`7?X38jJmYrdgow`vUR>&(y}!VRl`6?*?Oq>xztOsQoH% zFUz(4wq~L{8Ru+_#{1CjB&XX8B+jbc+8ol<|GepMA-ULEIg@%L(Q{G1;uad(WX6h2 z@lS4iS*Eh5VVj+|HB0!j5Cd5Z3K8QhV~V&Hkm#hBG~;I_BxMDp@8qieey%@SR9pz? z;@6tVQ0nIsHzRc>tLFzmm=?qCp|Yavi9aHiOz!`cFDWmhDguI+_Iq`(rc|MTzL0q% zO5s(E+=2KPP`>JDIKQK?(_1F?yxG;Jj57;|8DH~tjxvH3;)p+umeqSuUw|*Qx9rHp zU28V=9%?+*A3-R7c@6J?*u|Pg?W>PH5`MMpv`4H-3dk)^?)MG**N(88c!)2@gKQ6_ zl4B#MXpceOK&*EAl9-kZW>qr+#a`Mv~Xv&OGET|M!nLdmNSt{soMrC;Zs zRx-0FM<`1K_ zg6`+yAK|6)oRx*O1a-nUJf=j^zDMQBE%ovG!m)H!q`1H6@~4ky>ZzXo;hrbld-mwr z3oso8V-(UYS1yJ$BHoXXq=#BTX&L;YIcEX!N0WvO~cql+mOflNVH#~O8`&!K8ncCgsiFX3>st>`kHqhsm3=x5CeveKa!d9!w}WIA>dZo| zr@Q$2QB~TM%LQ1dV3!VO;OlL8lYjQDChyEsbhro5wHgAlpC&Eg?X{cxOei67Vr9pO zG!-4JT7dYiSdwlZRH{#qLiQU)*Fd@D2#!I267#5r7})#c=maAzlG9uTx|pn_;w@hw6R!RMT?7eqXliS)aip#bv z=tc}GMV3^h8X$CVyQB&MAqk-clul?8dJ`K6p-G3(mZ2vkNC}Y8l-@Cf(2Mlmd-Z02 z-!ASw&KY-n=ZfSgz=&fcU2(X)Q4gvDdz@Ie9Qd{C z*u@GnAUMK7XoB1h<_v{N`4wdW(k2DE% zLUed$ZmQqxG_vh18HphPJVV=NptNp<<5s(yYHrI%ADm<@wA~VQq95dEI&SswwJYl6 zGL~E|Ryu4%BX5Qd15j{6_Sgwo)K^p^yiG*OHi)mFF!^36z+DA4gDNy)0m00QdEyO6 z?}U6Y4_6xKvh@=!lG_A{PdHDkddX)xu30xtJ%;qnsQqpYz{dF3r)$MKu9{ub%n;iq zs(`1hfMOvHlSc%1I>?Ki+mq$1pOlR|t@4@?PeRUx%-I~x#r(0pO&4butPnB}Qw~*y z_Qzi__L6+%5C%e&-x55PG#G!cBGw%qOYlu z&gYk4IGtQTUv?uIaTY)g>7(gpt#5Dc9|Me)_grxlWV(`37jM{uK@LwBsUkMP>tKy;Bxv(g$0L_i{mFosEJ>oF#>%TQs|%vz5QRjpRH(k+%0!p;{Wu_~i} z3XA>r{c5sN7lZM4UWMIsp#!;V$q^|K-x=wJsd%mrn~;mtnH_0XilJyBF=lKY>EJUY z(-m8dui0(MuU*qLCm z8(R9pnM=93QKO6!;XxHb0*XP9f-0vswbF%>T)6eX0aGVk^n=VE%*nN4ArBmnibG9= zVNqdMWwSYjQ<;M$D5XN9y@H;vIH)%6zPw<%AZ$Q1?knNsTxC$=SSa zVK=%cf?FHryzBad>5j(tvnjBDo$aMK-!4=K|6qzr{8mNQaQKbl@}hQXW?NhgvfvkX z2zWKJ^CbV9|9MjeVU&qsxcaxX;(x2q!*yQi{KXH=0lR@1TEApVC(ifN#&|%+Z0V}k z#qHsm<~e50z);R*Mhv9){~*)M#6*+Tk%vcnc+-i%oZ`;wUr4yWckVw5>}&?MIs$D6=3p%jF}CEJW3c_Dn zV#J|Q5@_m}mRj3UtyQ2jcdrGo@3F^IP(&twpq5 z6_ekTxF=#7BA=3-9-7|WM!JG;ka~puxKZ1OfM<~d&278Q9GrXAdISdu3}&XHB4X-t zF6pezg5wUlWf5EY*d;n-dI|$`;8WXuwXn3!lRrBrxhh-j!m95!H=I~6sb-t+_vjYf zWh*<{F_|V&ShaO%sGEyiHaB_M1l?DbkAKPmQxNb6!&E#}LWx_I@<7ATfiW+ugEH-f zWcZlRiHP9&(kLB;wRL+X<9jm5a`FJ$wuv0KWi5HYYD&xG;f*Y)m9{b%xS0PtzN$P* z^O+{U(`(;2p~`me?f7$ki4$u94Cq@CRgwQy$Ejwe$f4zg&dIk!&zpDqy$&fNa+dX< zpB4l!Kt#5%Vks*@cPR9O@+?(aaqlwgtkHIJUE0y7?PclCqSLiY0e~M&2N!(hDS6+# z^K%oD7Lr2umFi(q-^I02&C@C9U7Tvoa$%h*z{<@Lj4-9(3WQS7`0XY-9}ne^MW~mz z%~q-U8^8^D(^j-8J*G*l$hE4V`5H?~p+~wKi$sC$7*gWPlBY)dG#T=PL6vQRjkhZ<# z94xGrp0Jvohk1|X_ag;xjMt4u8~7BZ?wS@IaamLjAp$C3Ut+=R&W-HqO=Bz`>aJvl z426oBDjlNI7r+fpbq*#r@et?0fQBXOR9i(O7e>SkQIygPJP)gk#oz4mIn^$-G67Av zg2(^FuSg&jkCjHod#EXUX>wqCm*n&cJSiw-2Ia{gb2|urXO~I2y!8I2L2M|jDwX$M zM3ipJF8SI@=$ zy4(_Bs6rv!PH#_-Y=`J=4&O&tp#3cJGy@~2;bI=ojXxU3NIG{@LHT`cZprO}n`cHh zZ7&>=JG5X}JMX8mR&#B=PV(KQ2N%Eq6^tCpnPKaL6>u$hkS3JJXVZ_Jrco-w9CgH z-x4}*qlwPvcZ&aDa@)rosk>y0+hN4?f+`WN(iS`*RJ&4&XT!>jxy8~~8cZ6G%j+Gy zV}0CNu%h*zEAWf^KK8N~KLQPnQQIUxn4uQxi0Z+(z7nfKLMBy3I+8nX*(zVH8Y(h{ zuHqxiHH|o#4WysiC*}3q4yxz5_uzo&A@biMYf#9hR4peVH53Plf6}rl+#ra4T zvyxa<-Q;J4QKd@n(DJMT?{Z#of5+j~!Bymfu{~L8lCTEjzJ2Ns5a>%2S*bpJ_f1Fh zybCE;OTp#UAKR=kkJ*;|vz0r5G;Ym3Mk*-&U(){nP6hqP;`Z-UkT&hVX)36~y2ftO zv6v!HX%*(r$xvaWP+@3y9UUEMG6=z$njw!2Qyr9Cx?ds`n&9a4Sl1;%RmIq^0GyB# zSUgxd>YPDA0sYQ}TuI~31scnz&uBM7eMnAG!}#8@ddsyJnflVSR)scm$z6+5<$h`2 zb~!7D%uw4S&IL9bod$5=3*W_+866cEO2Ld@r-maT0Jxs}YCb^Wvbt4UW$*rtn#()! zy$|7dI|L67%R>UJI9EleyKcB5=WeSKN(tR7?iD5Rbx9SocY1*`|5Q+=m{m#C^ z&H~E9Aky>F^L)?hA{c$*=-R!YNO$SQwRT*z)@x+8C$@zg-_Q&yk zy?aB$YDUFqwDa|4LY^VtiB8Fj_IN%&s;HN|)0_fqLm<(CR z>v%WgNaK(xw=^tY7fzA zF=3?5KqnN>A!!xeWwCop9Rx8mQ)0kcC#8)`%y3)$iN5!J&mt_mqt5+dNS zFcfLXlO5kDlBkI1=gYm>QZ5S&6%w8gyernXz zJy$Kp6Anr>_avJ^?&uIr+@`yI`aQD>u((bmi!9pv>_2jYKS2rw>jIN@@30*88_-Aa zf)(&yWnWA(msC%+hZ`etW{Mw#LDprDJq2rlph<~#V;hwIq}ZMx$#mx9XHVNYi5LFm zi7c8b3&LweSd)HRL@ zhHTh{XQulo`FIqR!lZ`!8coM?ZEFHE*aY2MMs_RBg^B<=Hx2q>bmgK=iK(ZfgPb#- zgpY6A>>pat_%L!{ud$M&tK{3J$$$EZS8~sWQUkcO?in z8LWjzal2AUdP_uAL@K|bd=6d;2Jap$7oWBNl_)8kZpO`=4O78c)q#c@ewDo z%|N?EZ$m6hSFp~4r%)`U5?7s&uWAF=?-ci0J`IpF`Bc#Vp*)ggb|M91UF{^i!8*}i zq01+ek9%a9W^R7}=RGJB^TmH;Z}iz)#8L)a_74KCw8tHqO`Zmsmn%J6bmu+;e>B6y zw0!H&f4%u9dyD_qO=%?3P(7gYR z>DrFj-&*>=a^2zn$w%U!ymr42{Z+@?+~_~dy+k6J-xItIXQ0iAbmAJX^PZif(<;1&<4CzPCN15W zADFS;a@6zqM5%yuILHe_PtPf;O%OE;+ZNU#q*SU8uXzfk-b(D%fAU0+TLFyVl~tOT zqFSPr4M?q6;Yf@^gQk-2|}!^zz#? z>4>~gOg_d|S+hOH(z*V6Xd$yCjMFutU+xVNYT)niVRi3L1^ZKuY<}%cXM8!YRVO3( z;K9v@;ITaUc`L$612PY}Kfr$-lRLS8qcHu^^kyTu_Nz0)-oe46-*p7DdHW+9W` zNoNg>2QEpIYUTA-ged>W=tfSMzea!mMP^xPzq(!8>VW9rzFCHFV` zb-z094os`2v3-i^7M6qYYA|xIRTwe^>_K&>`swsl^w9M*9lw;qSh|gLA>DMlW`{3! z&7g3v7hRg16cm<69C00pps`|C$9kmg%c0i!Kt}Y{ToQPo7&Pio@pP$ydb7hCU-AHK zvrrN&-L8E`(~C0MeyBICXSRfFF%E=Uv8+%1hWK7MBc zt&ZS!+)(5$8@F^HRTu;TfthSli@6`#OKfqen|tLOih@2XCy?fwAGs5+quQjX{>;$GZ$ z8y>rE*)(#)VcE?3RNTpq`O7t*kaoqBmsro>&hRslpFzwSSIiG~i#bwZ*Q3&GqBMH$ z7~}B+p>4A{n58D2FL&*^?s;jBukK-aP$7fWCF$0)f~;mjbMA$Ky-ds(D*kC^X8Ly~ z=0C>c-Iu9=u$(!M6geoP!;wXUz2jERmf8@io0LfV}{t%33)-S{mOJOB_ggTju0 zLXu;IO1`^$*$2DIVL|~eF={^xwY2RVlP53arD~Q1@oc2b^4?F*b#6?x7b*@Rj!FWX zALam8dj>3Mma$i@RWB?SXkCRx!e=Ez(oQ|nA92G{!BFr` zdICemW|+q$J;0WJP3{lvd+#}928e)S7`=sVK^KM_6cNm%EW{!i^FA)LAtd9T~ zO-X!bb~F>Jayl%!#lwS4-F4xq_QdZA%$RIqrM)}-&%Al56p#ThC$|+lq>@;gyGpdG z+3Q*LJS;g=3sCmNDwQ8hkA;6D=BC4_(QVCS_h}UD1mbed|0$h&;MY$YOy|GYM`ge z5@(&NJ;NcHx;J-!ti5-*eq?R9uV8HO=JG(##w^lmhv?#FxQczdW~50ep#?-5C#Vag zI$$#~451(|ADH}{K~9HLf`8}?G`>XJD0D7#$&>37%98m-n5eS+ zS3Q0u&RA)AoQ+0dn5OKY2ogsTsCtT7SWn5ph*g|{tcZsecsq#COLPrB>!)jVEq`Y@ z>IzP{38n|WfEhP{ecVwyq0j#qO^HUQn-Xko z9kpJ+bmlK?Nb1{+gFM#$_zYxko#N9Co46asfuQ8|WqNPZ`5*z*Zh7&!sh53&vu_#ZPKur;OTUi_UKg{1Zjzvf4zFnE7CGP4b&AHY% z&YVpBwy+MP{9vjZOLi)wQBu-uoMTkx4OGSrcxB7Enu%e#Y*~v}jJIbFiDs2}ZSar> za!@hZmc#4N#4U;pf}81WO+6T2VLC6Y^3PER)4%Cc|1uyyRsT(&`e`u!TKqSC>VHU| zVvNp3(V!xw@r&m9uKZ{lRfKx&SEY?is!YhlFy4 z`1E3hh@2WM8VBf;TbOZoarrh&%(IL0)0jQsm6fqDTx12a*kFTTkAy&gK(QPP=9JqV zI=5bvrM9%|OuSYHzb_`uCcN|N?ijB6a%h}tsdrU(=BY+zE-K)9MBetP+aH>|Gk)3e ztA1m+Ik|Qmj&adFt&UxE3itN_r(i$@z&{ z(6p zc}uTX>49y~g$r)l%BRo8rYn5b6O(_cqzr%DY%Dyiz52OvUGjKJ_0MOQ7ysqR{4bsS zCBKz97%qou>P|X6eDvb9UG#Uii~$|*@B0s?!%hShB@y0AuV$qBb(BC-MThFlnWBx$ zFyqpWnQF;$#|@QDzH(=LN&KJU-@I(?Xp6s%XY&AcE%AO{4Lv^I%z>o%G24t88RLq$ zh{hriyG)l$k}LDObX9i2I=??qNP17i8zwD<*cz~} z08{JSnQnzJn(0<%dMN_Pl`t2weA{5bl{A=CY%2U9-<%IhP{YStp#&mSkU|Wg0;Z7V z>unkWq}?c)+Vq1de-*+cqV#t2ov52UH5}=>%92^F^%$bcC5dA|Z;C*j@us2JTp?^A zP~1kTIJiB@8{6rSt8sr`99G)9!Gp_kmGB}F=pHaC3v2kd`UM5=aO)8OP`+=o%R5)L z+u|t!ET!sCq%eu-{nIbzUn)`oDTe{yum5`gMCk69^hb{4v^6I0$Lb5ucF!GnuDwch z7(DJvx_-lFTU<{h88x9WAbLYTOO z4ga|}=ebJynj^alY6;Dv9V$fx{w4=seL`-!*S>7#t5Zhg*9n@CqItN}5OBn$hTfvc z`bpwQ39?|ZJPvk8r{iGCd5={-50`|__5JgivM+yo_=U!gm147O0j>N2$@VJ-myKfB zQ%DvXoAmTQLKjDex zqKI;2u7Xqcl-*qz@v!NE`f7T(QhRh7u;}bBWu4BpjJWd5gh|fB`h#dEir(P-Tp=D! ziP%O--%ct-0gV?}R;g7Ql_B_kzF4m_S)VC7q2!=KW8OfkW;1Ou6I}0%Dbrb>+YEO{ zeaFmVv+Lbem;4%&Qdmdx1hXn?hBcXgX$WbSzCAs`H*Oi zHmv88@@~)%N~@KuEA!=UCoK^7xqe8t%QU1{4RDl zt28vd{L3)Sxp=d(zo-P2u$ZqCdd3~9iulX>pglFR$RvU~PthVq4uC^rP}oIFm^%#! z(19q7m6NqAemfKU_d)*8!TxX0nqdq>fM-gYb;5$WPkBo??vK34oQuMGErYkG-QcQ| zW>Px5(-%uSXmU+Q1IeLXT!mb-&Y~S&dI~rDo;(`Zj{Z&KyQ5#_QRUETF87GcL1f+; z{-u5(ptGF>hUs#yB*6M%Z6ti^G!x6i{~Yn_eF;QdaE^SNP_q5vJ(RMXg>TU^3MC{b zOVw?;+t8u&a?dBr#51IG$x-jih~Z+$r1K&_SVTe&GUrvkWD6Pa&ju;Y*EqsKO6Y3f4`xw8RnLIK1!K)Qf!-kc8L97_-q`i6?cX+r3%C>6;Op^jDXYCS~RJ zJaC`SJWc)ES2Ma2K9q~&=Gq%Pb61toTgM9oRZcoHa$=k}5uyTACGZl{}>mrJz z20y^w+F3P3)R$lGt-xnZ=-W*vGPngExok_`r8Jdq!4b^dSt|?dM4GdJLK;MSuAMVf z%s9oBRnax+|7Jz|?{G?cR;`6I!*sJldEcd5JXK0cxCV9b|!a!8|Tn{Ak5x5_Jfr$ORc z*sm{d>HIcp*CYSHs&24Qm`@GY%v{$O>5$f^uF=Zsq3mvPa?UGR_LsHzfw866h4eT8 zY&Z1I&CPFZ3%|LgahR{0&XT;NTf%TWSZuE0mij`~wK$wzU4LqWEikTOX6@|^dc_IH zWyfTUW%Nf1ks;AEoN82V*}l}+;}8I7wDsTmGhrgW==TFy(Hc+A=BhmoJC7lT<%9u_ zwqFonzH?#P+TBu4)?i6!c3pjHc|A@o9p(V28IX8|5L@(zB{|Qh{4nSaDCEm zj=<*h59S1W`cIUKgClL9-~YmTHm&Gz>2Y>r*fa_o|M62pt{HR(xvJfZ)O>l$K`|Y? z5?w4G8L1hKt_s05AZ{Lu?JD$f=Q{xoyAe)#em4vn;X3OuW1MciN+ka=?`-s zn>8p6Ur)+iA{pFzd-RUry*XSdJ}^g$(dd*45E*i=G^6nDNu2_9GNzB=*s6P~5Ri4c zSzc-`R+`|?#rl2?W9xiswq0$|DAvQ*=4D)7RlXn>YwbSKR~CF8PsPA%C&F7RIG za5-#fa+D>tV}^6HASaoamy>o7=uY;F!slZN*f0BUvFV=D8ae1e$w6KKNFCHN3INDb zpMB@-2evhnjAw~xG)Cyb{0xttex?)D$;v4!SjtfZd_#7Bs6jX7yU;6!o47)S0BX@P_FhICe6H%2oOELu@UE*{-RVA_po&%b+Me zN@n{k1wo2iIM74KBITa%kYz9iyS#H>61{kGYCqEo+K)TvI@vHSh^ihxzqR6LUDk3d zw1M#5#$_RK_6OC*o;3{{+F=28o|HV&)Kg8qH!T@j@$>El>z%%)v}%(@r#M#qXTuBe z;f^cFrweA3YM3#8-5V2v*@^cieS60dM0FoXsnDW<)Xb$Vw+0U~YaK4J?G*G&D#l*R zbpBE?wxQ0|M0-~lUmEN1wOiK(qcM)fiA6fVZmFv3X5Ty+PZ$j2@XGok8I#C})Wri~EvTu#Z+5U?#G!{G8s?u?ARFL|~fn z)T`?2nJ@dC;OJVIBmxKzOF#Ba0X+X)mWRbNjtKHX$8>k%U%+KwLO z(i7J7VbX-nFUNG{&U++pei@E({(BA@iiGKD8y{R#q@!~3aT+Kx&G6+82$?Ey)$BYXY~y@W#Zu(0raESgBasduMiIXF$K z)9og$R!kxx0Y|~gKNYe^3dXk#OopQOsz=|eOu-a9?t*R7+=ZoNZ>;u}N9fzJ3BFRR zRW+Y|FsGhiB0V9XJrCP~30Fj^k?8T80+qE1GC$t>$r_b!lJQ2LFEXY5YB7o_pTjiTOqC#IL)(6!D=DMaM1r+?g z8rCv5*PE|5_KdUbE^6s%?5g1h)P?M7qjhveHdiN-D}uF^oGT#IR)Fwg8sGek^O9-b zd`Mb=S;ml~^Uy?mh3Ax((fe_*M@;fYkLFE6LYfsyh&R2TM~KIPm~jOmH7VcKnkFf9 z)cq*?{oAp#>iv-=HjS-hRkv~*2zQs2`^5T=#eM9kaW8{%!YbW7AYI60K^b{~fHOmT zHQ6bK(R#%3h(a)n_W{?ZBR%UJxrzx**J`%A7!y8Gzj0`k?MM;q?zBZ^fH67@hqc3q zztHLYJB5gM_4CSEgk@VRYP7;rF3Uqyl@rzu!Ai@)7I8(Z8#osRVuKcIrlW-XJRs~n zyz2@8OF;-XXUZLQ7(fVy`ok<8?J|O$?ohE!RMctGICBDu^otHhlDiNr45qMtGWPWG zHhtJx>eqhwGbkJ{^+H;Ns_z zS1*zU1A4^2GG-b!CE3Hp=d&}%%p=No`*^CCl4sgWY{vX|1;`(8bcz_g+Q7%}^_i^K zKP?JO|3?e{U02_f_R06jAkn30$`7#hhVdIM&BCV5eDP?8M2cNrwOiNOo{037TOyA? zyDhUJ;n4n(g4^iGgbO&HcBxocQMf8hMHMb2$iC2oGAT+57fr_dQD}6C+r=q*r?~RG zq$F?!^|G(yOG6y$)#8=XjlwO`yjjW>r?cT(`skx~z@66qr$?O6da3;_y_(s%C_HB? zfJG*rsD_jCK&=sRlpASmjYnE=CH9VD3?H0FIH!Wz6mhUW)35vKW{I?Yi?3+>XC0m< zxu{UP8#Tq!VAs6RRbyizL$CM(htys-1|S9Q>Pnn44$C3ZM%9E>$G^~>dua#;?v~zW zt2h-)?`gjR9&+e%3(+1Zv8r5sv2rO{R#H?<*0=xsTUgR{;pvG9vs@lfQER%&-oDf)ApZ-pkv}Kfsj;TudFwt@o<@7WTA!hz3QOm$#uh}+niR%Ln}?Dlns_t?Ts~E?T5Hg zz%Y&?Gx_S*)XbRyZY84+_t&WH!87R;S#BYqFc7N~@o8+`y?U7>(Yco&EHP_Qf)&G_N@*-R4(Wicf`m*-FCo8{czu07U6R@#&S z30QpSw_XU;9GQi-8^Op$S*GXB;=~w1(gXEB2n$+C1=>{4v_uKK?0C{(NsPpp?kgwN zn{%8dY}}HM)~+e7wq2L7eCXMD(4HbY2bjb>_45esHhEQuiOE?Jp7Ma|jUP`LWZzyE<85C|l z0x8H&ZVL%*!i6w^dA4j$@E&RGQP@K|PQ8fpBWMe%6qY+utrya3{+-;qm0#@m=;cyHDJ6Np=w#_TrqT!rXX9&a7RC)FDBU9$u;fZUC5$XZ_?Px zhx@Xs##$cf#ZL{tM<~w_-I0;;qaJSY9td|8FncsS%RM2k2~lr1n1dGWg243B-C9|W zXSyAq43s<5Szw(diaP4j(&AnI`6b<i6byP z?f|BF!Pm_FZmg(>xt^S63Y7>gCd!xV*WhR`lk;NR8Qu~%gj|)pU}pV74w-k+_;vS` zvM+7J&X75$E}BJdB!=eoR-utu(LVEeB+Sj6U62RFABpJIQCrP59H9C_ZjHy!kMgpN z@_?{;V>pGtSKx|Kl3Es`yy{@V6V`DQtP8OP7xht=5EklRO!CbY%kKbo9_aLy@r8M` z*W^)ncW85yQi}IFHo8o9YJ`LDRSvvdyV^OOoo?IxtgB9m7g_X(m+p5THY{PjG61ov zl0!SM`Pn({B8Luhft6hv*aWX?J^3XHee$=Fx}kQ(jh#ck64#x{uNreWn#nS~SpUhn z0GlOtQjfTGH-kQ1XBUbH>XEm6YF_)H9xO$3CP&zZ@7l(xs8`BmOt-@-rSo%eC8<+B z-8Kmg$+Y-g_EbF)gM!D7nGQ3!7^-4a0){OI&lla&q~O5{Lv*gN0N^TMZKiFn7o2NN za)b}AcW*ZL3yv;+KBUQ~mwnQsfpsM`=#i?liPZw*H3hi%C2Zl1KP9+MESd_Y$hI?^ zESP}Roof0aJ#}>YowK%q7eaq9U0AUFRGJ{RDzqEbY&|MEBiFRu@PldZ*FqEQgRnRk zt=!kwA_{&EBmT4ee-eQ1V&-x8-H$R+zb+{mCvCmn4osfvxv(+8Ws8U0eaV^rW;5r} zP%cBHa`g1_c8k0nYcp7$ zP+V+p^*z_kxRr(LiZOw{Jf-fjGkyQmUYYAt#+eBblP^U=3u0^Kd?6W^EHJlP^6>pC zhAfaG+%9z4kJm!M(|ftqJV7?{lNE-ptIUa~w-od9MHecxF!U5G%h{`w08f`vu#K=x zM|*i59#Ap)j;n2gYwJ;VxRO#29@1JgOU<-O_=_lc)) zy>!PPgIx=lqy$i|Nj*~BL;oc*M*3}Xq((~a3Q4V<*L_CwBbhd&PvCm9+9%x)ZGbeV zcCTQrD&>*QU@mHhY#p3Ajd#3~S*>A?abAAg5;RDbXRfBCHO3Q2ZR(r_b)nWHz%oAY zCzf?p-Bkw-H}&9%j1TLJ8msbtK@J%TCP##UJG_BB)wfDMy|dtSdevY!Tl+8pAj!l?`arS z#g%TgGHZtwvIC2Ow<&_$98`D#W}%?oNFDBiPk&p3F-BtSxvqX|YqXq-#%E$?3)zJj zA90>f){f$(*DTE?fd?)TK&Q47X9`tUNtg(`mWR2V6wSSE?Tg<7M7%11(GUQsss4w< zxy(H;RKYHas!J013_m~pP}8&OS!78OrCdAHy&0Y%F3q8Urr04QRukWXBd?>$@%X?m~Uc!B?a6 zTuKVuV5f>ctb7d8wvY?-dnME+rAx)F=9iN1#MMO?&#KPZfSFYZtEAZbMUMvV2o2Xa zYVvH2QV{_Iq zQTa!5N{q*HcC$19o#3?!G0jh_qxOoSDbgw`)FB??R5XzaqUlJImc0_#MtZxiSQj6G zxnQ`?bBUNCA6A2|mUx0CKn{QxiFV=H5cY~CdeG2cCtk)+iOl53(Is_EJbf$nF_?I| zsh+}GxzMg~S87km*HE6!@`)p`35TfEo{u@lBCnZxGb{Vtd_ERSW{+g}dqbxbM*EYi zQ=~RBm-lIx`^X&lWXZ+f5Pr-(GCZfSCtAZMNPm+=nM23IcCA=Z`ohz;O2XG@($E@XEYb(so@GBUZg0xy-mgAYJlLyj#PsJkd7-r+#7Z!G3Tq}`3s{l1WE z@+6~fZ1h4b>2@VdPZi{plN_3sYSaZeo(yi(`#_S9Wfd#=u$c+4;H25;Hk3lk_e^t0 zk3M7=@}%>llsNaPLs((1rd~+3ndjp!Ei+r1wGuyb&5CFGTZPnkDamTPh5QWOfv5zd z+nu9a92KQ7Gd|}{;)l*+5&~9l?|;YKM2~L=AfqXOG2*IPxI3Q(mxB{=IDEdRlWm6H z^fgw7#6sTvnZ|*512kF_JEr#d8qvLww%P+qQ7eLj7vkL+38(h#(waw?qDXJ+ApjUc zdBt(gMM}jsw%x#~-`N3gqaWv*@Wm(e?L*Ni_EFa|_GpnfR#Tw|pCdDnTek|Tv;y7CL zg0@;L)mNf&0JlJ_wrihV4w+4glqt(6c`mC0f!F278ZAefQ6$*Sv7&^A!SVMu>RR$e z;fvu~X&vpo$4PWBYqm=@=~OXO0=Od{UGB`;IxX9;c&k0s5ZzmlDtMmR zAu~s{KQ?VR%h-RIa*L=wMG+Ekb2w0EMBDOuD`{^A;AxJGXn)FDBJ2j|d?#T>fS67Bs(jLF(6 zOJEL}GNUbu8(f@Hrjz7p=|g_3G#pgPi3dbp8_KCFscqoy|6J&9-EN7 zRZ-Bi*%My5WpL8%E%xSfvdtXkYt$Zc*PC*MIJ)MIO7IL)V}^0^3Zi}f@QbIRJn*Iw z+7+e>+vrf!`$i+$Cm&RPVH$k?b0o_757UB|wsLQj6<@3#_W0UFk9}X9O)RR}{k)i5 z(o=ZH`;qI8{k6WIIF}#hMr5w5D|%2a|9`=q_5O;_#!%;2;qhF&>p#k=V@rz3a77Q? zb~DvB{kAOA!IO_acmCS%-5(0~gN=UsY`A($j>q{pJTu3?%hH1eQ{$P(r25n@zu8Ft z!8F2h_#{y6`9kyLd_7D~)%4Z!@NE-dNHsV=wZsCRDjBlASeNwf`UoL)qx#F%4By9> zDHIpyHLOEUJ~0*ZsVTveYG`)VIsuj_#5{;|l%NzvI%8IwaIM3IFIYHnX-VJ0!D%4u zF(71BPmTs;Wj)@>ZhoQAwVI{l3QW~-OBi8}aFKEyaoktlLuiUsac=h=WJeq_^aW>0 zdhSr@;j<~xvcpPJQv&_*tt$`{$p;g*t66^01l=~=hd+|cI-Tnb6bx9fe(u;zjlo82 zOZccdV;8nKhpbhIh&cO+SBq}iZ$OZmDeqS_@770fzg`=}8>2#&d^X^W&;^$eT$6xA zCfzM+zuIA-EF&mvN}p2Ismll*Ey3rM39Rn@V0z0{VtbtY?%|S6!|j*{%3q%;@oEgM z(D50eFib8xkOkrcQQg-FsiN4KQ2SkPw|*TMmg{iWIVR=T!#$4&%FEo6=53_4MMH~t z(?^s(tjdTn>)kDlD`WufTB``ED#y9c^IOAvv)>5ue<`;GK@hwj-g|AEFo60mp3Dk- z^M;7zn%;X~@Ufr%E%!X%GxELcEa*w@SJg3;E3#KbWx5{cp^F@( znjCa?h6l5XPQ=Qg@wDobHPZ7c%Ydw>M*^%>BM;)+8ZZfOjV#A>pkod&&=Zxek+sZD zVFb3{p;Y$?KzI}aja`*9aFQ_&N4etl03*my9M091L%D+{Dy_R!C*xy*$Gu8RlhWs8 z3#prO-Fe}JNXGIiIg%@?mqnfv%p1TsMkrCz&G&_Do3zkG4h&^I5DI)gAtqg!hW%tO z*0+dzKm{4%?zy|r=21K;qsjv^O|`~VfXBQFEcEKI7KYRVD7`6|T5+&ysHodLiOx^zK3JR8bU7c?pp%_a zs}S?z=DQLbo$H>zH1(T`#83?LW>nv*qiSxE?lzk7sUrG$#8Qp1X;!nuAqJkF0KWs4 z1S+oMh@s_Bs=@Ka?IvaQGT9-bTRaOvg%0!k_0?{>lgH!~*uD%x@ujqyoMR+?*HH7J z&0F~|{x9<0GpebqZy#pHHWqXM0R@4PDxnP}^fIFq5dvZoLJKIJ(0hlmAp`;g2tsH| zNk{^r21o!==>dWPLhrpJz2lqv`QP{4KI>iYhyUl7d^mfv);{MXD>-}b>vxrBakt+c zYdqbzwfa-|iPaOuDh$bjxvGF_eeKO%$_1=2716nfIl6LDrFBe+J_rgj(V>JPupzu= zhJ0qY^lpG%1X!fup1kJb*pb!MAl)UrWFPG{r=|x7DDv(%YoC3-XN&f@`e#?`@34iB zZavX@;n{Pl6j?dwnPFpl8^HLzpR*d=3#3Mqy2E-jD4Wu8zH9`n<&?`1IJwL{lD%0- zR`G_7=?c1J~5%X0~qWZrzZ-^{Enc24tz){zlqX8ViRDRs)&TzDsr;P$sr zV&Qx1s4Oz;ddJ@bS7JYgS$L2_Gd0|H8SLvop0WMj&N(_qA`m*QQd~^2A35&0 zfz4#(owF@wvzC#`;aqMyDvy^50k~Oa^1*7Ri|R*i({6Pb`ov>Nh1i;1;_#jQzbythR`E}w} z7+kKCAF0$*UKQKiw2F_)#9#lB0$O%ug=N8H4& z*58qZNJ6eC9@}f;N~SjrEw3>iGo?i2u)oR0HXop@_hPb2Uy8q@GKpO0j_d@4dXxtj z$Q`*r93G!j48P!i4ozJaUmBfd;3N^vkW~zpY-CRadB~# zB@W$$S`RgGN}RahkHAoX2@K$AIj@-{UuT41rbh8m(qM(D;H*VngxRD@n9TzN*XDP% z4%e(Wfg&xKU(E5u6{_)dGCYR}-zl$&bhAWj$ zY;GNKzZ3s41~**BJMw8#*A_$nx&oQ}&y`tznssDoJU-a?*u8BLGXF#1O%`qPEF*C6WGXLV zQz$EiT}T;SB6wa&9{o0b%B#I`U;w5_}@+G!&JQkB4(w6jBf|&D(e9 z+m|nnsCc6)9^7-k75S5yXzl244ZZ#P=by+T2Q5L584)GStm=g_rv1P2DIMl9p7eAC_OR-)4Xc#n zje_#tcH*wXmpS9lttX;Q3+*SJHf?4#FKVx@x>l%poxqy1S6KOUG)Nn^UMU0mi8NS# zxbyJ7r!?W4S)UFx06nmd-n(>r)cvU_x}?kdZSUJoJ)+&fI}1Yvn69sHa|eohGCaXo zPgd@8I^i`j%?C3fr2*OeS`1mT*#BdJL>FS`bUZ3@r65naO*b(Z9?Lq~wXR8g8JEeZ z7`;Mls1_l!-W#AAg&?%xGp{Cc?8}L3xErKK?3#~6dz}K6&bbw3tQM59754j9E)#Xj zIQEJnFY`ol*-ZMS9QFk6L`X>GsG`!Hj2BY9=~5wUy`wm?aedF$jLZgeEm0hF^_qy* zkVIvCJU2wcoP({%cYGf&hzIht0v3^VRu3^Vil1(eaS0VPmW_TZFu=S<01!`W^gq+} zh;il?2N{AJcn#i~fylgoS_bt>BWSr&CMSil19e>Pen--OfCHWgsREi!Z zTQ?Eq!t)egw(J+}G%JN&j`vJ;4Ofq=08<8hQqx6Wq*(X)6d8f`ib}F|nZX$17uN2^ zH!rEBNwPwk6_?`X?X=rH@w%OTJSWwvj!5c}zD>yW6()BG zyZNi%O#0lx%g?O)k%D?FT8E;2OC0XBw1olnkY(W`H=y+X0mTVkcaprm;G@Oy9jLyb zt;Z5?4IP$XB-l2xz%^aRm)viV&DJ#F%4c5_pM4o1MJfkBI_OU=pf>w?=$PV31Pley zXI-|CD%=^@)B^Dy*^JO=3Z$Aj=;ytd^UKC7>gQsP6!ic?l~52kLC3n?oXq3*x)Z2m zJEzfY;Tw~XrC$4FdVUltn>z45=x1d4TykHX0VdJow~w_W58Z(9sLt*JmqF8%N~>$^E&(qPT?8csDmwvDpy3|JR}byM~ccOnZ>; zP5AiUYNU6ayE4w;FX?vSb^L-gE#e0Y$alsdw z75*rTCGPSCrljPVf;NNB&t8jc9{SX!&^rc5#}{_T`$WfA!9w4fXpfGRb4%O0*$!7LG!Z^(6?QmE_o_@ z=sH66MJ+Kw`E{QCV*1VIj?kW?@(iJEA=UMAOD{eYLI`8JJ?6GCiE}XtR+_b@>@v+s z0D^eIMa*{=Zh2P)zWe2%1g}~Nh3VJ0$BVmX@-KD1vrtTKQMa82TOC6lg{kT21ADSc zzk99z%>MMnMqg#q%%YmQc@n%8?l$wQ7AMqhVYI#e{%GO zJ?{+l=s)BQZd6Io0co`Gxd%q+@BoGNltQjxlu)-$!I0jhhbbm(3fkLf!VS}Bk}Vlm ztoR3@=AItawE1vq`?V9^6is)Fg7~POflc4Qt8p0dde=y)rFij#1u+G^5Qc&Sl(&bm zncaMQ;+4$aHQ)u-ieF8q`GfqlY{e2cd#m_wgl{wV;co7yDHH$^Nx@1-*KZ{=5ia(T zF`y&xOXV&SU7l4^7z$ifHDXmbK|P@i2dX%>triwF_Yc~lH=rh*RsHR0#Mo?MJ+aa4ZPH9Tu-EUu|i@4Psh4chn>NTMG=|3 zK@lqm{Jm(Jd>Rdr?Qt)fs+A#9>(PuX&z#$FQtToZBznBayKU)$t%7RYjau?daV!YK zGpt#mU9N*`Y<_wq$|A)zH{E-wOIjqu8IF{$d3p0|Z=cn2>F(!VAR8Nzm}jo6lE|Tr zAb%?dal|N9&Z@Ua?_5uANXVV5gJ@e-LwZ#_jZ2DIk0B#z=)imy?k=zYOrHN7|No(1 zyczH*{P7Naxp@26W0eo#TDBV(1oG1k_RcN8$=!f@ro9>Jy1I1C9dz$hxK#*toUPfh z?V(2xUk#M-0n7QOPH9}UnHm_VO0;`Kc}Hz~kI}=g6UKM7S5yMQ%%AWg(zEhT*XT&9 zIG;~T%_Fon$j<%=go>1kU zD9l(J4-wr`p=b<~f-29}E%lrj!}Cn$rl)O{(Za@huhks(HMe!8tc0ERVIqY~c_hSf z?I`am{HA4GIZYIiZFNvhH&L|B$>NZklh1HC>2Di$_DCy#fh_M;8)3IvOQs+KsFWq% zee^(CP)!OGA=8G!AJ59!*^f4LTSFT{Dms-9Cen#%?d$@@1*CeJ3Pdb_AIuCftiECaF6sn z2hAIkJG*P<=G=}e)5?=0vIzKGQ*d5(pHW3%t~qIyV3zeF7bTzX;e4WFu5Ddr3V!Rv z!PcO0dq*@wae7YEUEg-bv$%2;;0^;g^)l$4MF9Fmj-9`CIaA0K(y~&mX?gsrTXm(GPwA3Jb7|Ga6%rDq&j>{D zmcToNOm)swuKT8Mztdcrp6bIPW>qe!%#zmb?Opbw#xj%m_?cTS<>t zt0*|IMq*!8KV9~#Ch^RgN?GoNKS(YutWCrRJX1C09kCx(mo zXBbyJJxRrSu}5zig;1eEOi6dpr~T-=#kT9IO^YKi_b!e8`if!>wwp9xUZDiZbOx78 zt*pu%tF;HS!YTK>{4=WbZAwnn>mEpz!jbS~3T%sXxmT{df!BdwB>9S6ty-Z3n#Lod zmp5Jb8fsGBvbU*%FSf~Il1JD~9hErl{ODNdl~Ub?zZrRa z`8xrcG;Tg9kRGTU6HT?X`_58x_CP$B(cuf_73DKd&vL8QhbC-Xck?KDq2@1tr|7`s z%Wf7;n`udeLSs*P!dh;V0-PQBrD>ApPn+K12iH@@#%Op`7qsKrTR|y$O#@ z{RnJ#&r+=WVC5d=eeG(HS=zu@(Kb*F#G7{;b}kuiqA(q5$rMeFYimC+xE-LNm{B4S zS1pgIiALtiGt#0H0`|2;L(S=Y!%ddC0j=B;-Rc4vhk1VigbF_&?CrZfOyRtXEM7TR zIjeVn&TKqK9$n}^GPk@GBLh5$+BaLSMbR*isN~V;Sjiq0t9^i=pePUN6O3Uq{<@DC{Bf5Fw&VtaBc+hcJ})Es)W;d`=jN>#P5} zw;ww)%$}#P!k;MPl~p6)kzaxAA}7Tvb&6UBOYOw7pIxdEV)vM?Cqg=cROpX0}r3-!XejY2tAi_-_~ zq<-IX{%8QDPQ)C3zUN%rV+=$TTZMij*-a*LcHn^~M4t^6HsGA9uDxTta#!u@tz?1m zkL{x_OSd1~89nc{boI`Hphru8^?LT)fDw6F^n6qQHI54Y>n($+3jVAwFOEoGhd24s zJ3pYjPI})%9Q9_qe(Ez zC8B=&ICXr!LO%H3T&n&8D)h$WNKI_}zD%IZtX!Pb+grQjlk`7dmO)wh0q;xj1us^N zVd}rO0@a`B3s#xRze42d?rkc;gUHIXKz{ec9Od3$4FYmoQqn?VL?#NVEpk5VoKs;V z`iSlj2B1t|5~gh%S}?qp5ALBfR#e)&z5x?~`hUq?fkM?|2?gj!JXnpDZ9)n(A}NSq z@a$Xlrt)%OW+C1-4Yd@VKGMN|7<`rj?FF%^tz#=qt>--~XBLaiE08lyO4OAw=#m9> zX?gc`cOnY$(UCNq+p;dDpxygmbXNB@{@8hHU1jwt+~k{$lr!ocRKP2Q`%rllfXjz5Q5P1uT6$t{+0 zBlUL-aTTDz`IvE#N_eTL-;5emV|ibLaJ9FO#7_;4owcZEfK1>VJcTrwVRDy`KmA6B zY}GYd5vxn#$Kfp3=9_Q3VC|e`TfQS^(Rkvdb>GD7tX<~Z%H0+xkAcIIgw2#MhC(P} zO(bh?UprrUHbZT3{D5apS6^bVa9^V>8jqxiQUt|p+y@g7hEB2GPW96EWxU5B*1bmj zl-f)uTC7*VuT9GP9G2fAINvXf6w{zc^mVqf4KkY*g}jW?*4BYTLs|>W?^c8#ODcvo z-}dw(R&~V4LNz`+qQ%HA(@BVki=qdNRtB6 zJt3VL#G{hKi+Dt)GO?oE>!UU1CUsIzLt$hRt3NIKOFA)Y%2 zVKm&vNSc=_dQYxO1vd|dRZLd-ilxt=gnR2VVodZOpw$WYPG8eG=Xw5WdUF;U%=1fievJ(hNp4U zR5^qdS~SAmo`rSi=|8LBe>HBH>~So+mj=Qki`xFTh*FdF-&j}5Zua$TXO;^VkN+8Y z>4zM=A8bE?ZbM73xH^HFqskvVLhr8+Bof051fufg8}$@+zdUET8S~dar~1EbaBy|= zL4vo({A_0KGBX2z=)B|cUGiSFWQx)o53&zebTa;H02+n;!5K6nqL=@1!y02iTAp_& zBXhf-Akz_gJI2T7axy0Z%asc9Pq43@4UTHSV<-1)|b{oqqL2x zmZeuBg5n#>zOyv1J{T)KMEXhPlqHah#&DH=AhKR$s)bT+t!{qXuAkB20NgC6Md1FY z>7~YJ-xNkSU6D&UVJ$Xy>S@V0LZmDkn=Kix%tdk{+?^EQng!3E61W6?p#HX32_9(8 zB!%bDkdJwVrp~99Z^YwgKvc)mgaV%>%yFWC#776+b^;Vpe8|w^B*{S0V-NP;~f5xV=k~f z1wZFgp^&xjEL=^7+lTeCRXk}{3ePry1HK{SzJsggva#W#rgoD0caTTHp6VBv#BY&$+o#HizKysQAfAVn~OS1Y?frCgwi&>gO|m1a0VPR+SFKtt(C241$w-I7iM zWV>{bY!w2y*1C>J^Wj@|D;a5)Kt_WKp=i2BNlH#5fiyqX}VtTZ#*LD zp6I{2nfUyfyUCwYt$-nOqr$~SX~?cI#9FG^bw=kb*g_A(OGM}Kff^2a4IMVmLerMg z(;9AWYU}>NG6%gfbKYMZvLC;;KzlfslPo{9R25#`H_cVnUsFiPu^4D6L3~O!EYU#- z5|RV0rIcxu&XytD(HITBRJw2?@i@@!IxH6}iahAmIl%_z`}x;-@Lq*79jK^dnhI-K ziFJ#z$_US463`0igHf8`YD@Fkc;NAIT9xW@H@Bwf*B+HoeYuu$PcjEFny9TaI}of& zwKZ?|&##-07cR-2dF=}4fECT5*nvJ_)MBV{I>{iSr80v*$F zEzCEfE+-2zNyITHvuf!WbY%gP8utxjvRD(-OwTF7n-l4`a`V_7QM3!`a06#Zb#Fz{ zSkr0pRuS?{^NZNiPTEYS;!v@90a6^np{Kb3d=z;R=2gsucXm|0;rRsOyxba0X%|~u zjAX)I13=G(yQF_Icnl%K|0L{)(q3$(|FXYFRU1~=Mizw{8>bLB$`-R@w6N^Z8^sJ zVt_{zKcyx$luuU2Z$=?kRCH$h_zK(}*4*#$3Cw6$RXa>TR( zLpeEyf@Q~VP94kAbzm6~dHoJO1F)Jh(<`-%p!Ip#^L9n*p%bd4k5Mzi+kwDi^W9{@ ziZjMPdxfsUPltF2cs$;<{TsM6n0z7<@QqtGRZy*nRxEF7uI)w(*jx+FD`FV&6ZWQo z+f?~!uOJDRFxdo8wkdUk*AcCHzCPgl~+qMb7KmMb^30_xED*;ijiod3P0|18)F)QU;5VYX}D#$$+psc;xb6y z2UXc==(K{$p}iVdBnMu#2{#0pREf%UPo61iBgMT?r{%f>LMy`qh)mpPG44Iwj!ne_ zses7db5oLXN5`+_Z+9aG@*fdR^Aa7>E%5tzfOIr6hL~yLoRiw7b#tSB(=*pa*)C*Y zv@GkWei={VR!t8YNQj3?zvA{og(zu1Bb2d~s5BWeUryDMhXFz*9H!hC5QGSYh3e!K z)46`XsXL2F*k5dZ?-fVb$MpDSfk(g>wB38*0}_^m>*HjhV@rhwr1H9S*ezkA7XNUVU= z+W-!!JD=pfqyda?ob;-8howN9%~!D=<_^sjkui!Ae9_f!NN}J#UQ8o#d6(tfE8oc< zX11S*ZscC;oEk(}pPc-EO^D1FZSD>2Wb>aIoDtW|VC-`KS}qW*5r8t2h}yo73;0c;8)O=lE>Q25C0*FAwpw@)1IZVx2(s zQT=7+bZzM$>^Sgpj~Q0{LDA3n67pF5#80-i!B}e!;P+AmBM|vJw~v+jfkEdF9ne}^ zuy`l;&jzBopzx0Y(vu+v$Uyz^iWyVo z_4T}f?%L^a><9XgK&ZP7PDq30SXhf(^O8+EI;roulFFNF5=U= z?cnoHr&F!Y0BQn(r!dSBPh9GzE&OgaSx%2(!A*?<{r7`?dGf+oLBGk6i7v ze(}((xLcijQjeO?!{35W-rKKjX&rlFCPZ1-bpbh{LA^>>_FsqFJ`f!|#v7auv^pym zFWT0pI8IrAD=B&?YqM@C;H2SyGn|JQu<#NazgBvUM%one(xHmzZZ0pT%i9}Mi@fKb zd%3aYR9#Us9O6Z}PGS5QGO5iX28n_>ufMbC>$f(=!)K6dIG~k|`phcBdHY{>9uXrm5dIZjBM)Zq;`Ly?)qr zH}#SezrgFlOo`w7jF{jCg#_iroyMNbe`l%K>ox=1uWAH$hP5_V-l)~r|7;2qB#7U` zCAQ5WrDpZo7MSs`emXvRJpC)g9r4QRZU$Mm2|=w=NHb?gUzg(2N4R=UVV7DS>CE^* z-cdA>saxfIoN+E9OBUV69|j6TmQ}i4PO3TYh4{yW(*aH)Wc?*7qYDI{Pq8O z^sovzp5+9c`*KC=(VJ4Sgb}5k<4^p*njAqio@>HuCklr5B7vB5P1%9}wXnH0{*Ubg zYchYBUK4zYup=#7{}0vR&RmHw{P>X;t9$yC9Xe9vXBP2fQOS499klG(_dDLq90dCY zQ)|C{kxO~eSOb(&BYiL6JIjT8Zb22@8qQesv;Bmh0^yCFuU;B-{LnEj^mx#=*RXu@ zgwXu0_hg#o(xd+W{eD8UIyaZj1$~RJVBiw8O1W6c^IQt$ld)=P)Y>sOh>c>GP=RfRsO8 z$xCc+L5q^3j92fE;yzX=Z1>(8%y4bIZV=~Jne=dxbMr*BUA-KLW;#w3wva|Tasf*O z_=A_^51Y3%4|||pBilJ$=>+xdAvU(uvu>DN$n-97c{mQYul7#iWq$L^FVPxL3bXcD zI~%+X2e^2Oag%E`UoKQ@+?jP{$5B3JbqqlRPMovSk(bayaDCslA{n3eSrtzh(*X0S zl)3~|pTD$g@;n3r?hb|1K6d!#*9|Y*fGq!1_gCnZU(ZX4*OP7E&drsXm9AEKiRF8b z_`)=m7ssn$k>S0h>!KeQqLF!hggt88%Ikohs*BGKOcfo$OEdAHE^|Iht2QTiACtPv zC2rNQK?XT_blP}ysH4gpuJiV!R~JM@DO;AT1`I2fL4ih06Nepir%?hzudOL!BJu z>9QJRu5;-;KT}%P^#gNxb>nIzaVqxIIEb zC`2V=7%#(~E4`j+L7abE>v)!4a-%>Rq-dLlwo{4DTHWp#$k9FKHGwMH5=^qJ+;2FI zRUmvjWOF~gJ+$gjkkHexN^!6C{n9i@S72mb1?u>sGwXf4=U@AsCDbWIgcZnC1azkv zI6fLi#5u(l@77G*a&^yh3#n2BqRj21&O^pSWG==tF(d3}R3Qp_;H#$~f!zt8%G;g; z?g&54Gd6y?L>WF`yqhX9Qh>lhHcfjm!f_9c@pF?NCeoQ$j?Yz)l+$5mcm)g z2uk+u*v9os)pd0arB2;}#d*HMIYWo_feI<|)c(CEO4?1(!<40+EI!NJuQdc;&`6?e zE2s9Zp}VUt|E_%I{VeJU++p}TixYlu(;+wevd3kO+@iBK9VabFHe zQ$#oSKxEs7hCGwR0M7AF%Adx-^9&->b>vF|sOrT~_Z4@jU4VNakz!VktymxzYP#M?QA-&gB22T%tl`L9KRn>ppvxsNo|Q(U_QJrXql z*ZT7$RUa?cJ8_^0_x;vGKlKsZcb3eK6Q#(QRS(-KH@<}OQ=bi9)AHf}vpb2_>zUk|L@*Fyn31jCYu? zg0t&Pyz#cOlY0 z)`sFI&XLH6T{BtE*|-_LTyf3~R54O)+7ai^t=OuhEb_o287`e9b|>C0(wQ+fkTBWO zQXLEfd5v+UeOWRTe(D8u9q_Rg6w=7>9ck;h;Yfh)8)OLnYAT$aO>kK$0EuRvAKVHS z>`nIexPm)HLvFE3SK1xpGh&mEMxWTzA0@OLBN@Y zTW--KCv$dAYN;z2rMbB@#cRt$zOr)st)5M{Xfw|Wv1BMEUet2gA#p847EVaqEMwzj z3+9B)%We}JZHs24nnyTwAX|-3@QyLmLYDKZfBdkTIG6b;hyVBea2E}Eqig>)iR@7u z<+JM9QyTC8(bH;}hRe_ZY`%NBFJSuj$#K-w;zE4&pRicT8CxUFo!cjQXV0E^=<=3{ zfv;aXGx^T)J5EW+)9_G_ZEfJ70QG+mYQ&FM|KUddSMz*x=ho6?lc@_fxv#MLvFUR? z?971N2A#`B?|9#D6?|twJf1oL1poDuQQCjTiSU(Zs+rd^tv)lih(C0;Gsc{f0SnBK zwzMP3?Z!(i0{49WGv;5%pMFp@uqd7Wttmfo{6gy?d_9nw8oYqFJd$7Xi&REqVAIha zX(a+ruOh3gnW!G*^Bp8I0h>-ulI18(V89M~3|kK@tT^L{2e$AzcUFT8j!X*SgUxH+ zcMGN}ghLR&q}{rZi)+fbOO2`uaoeOHP^<4so3X@G+kU4T*@dHIg4}3qHkz}pCX6`+G7n0O$0CIn$ z1Ls^kd(7jDUISbS%>BPxAmtN#wg|AGr!@b2f{#)nyD$=loz+#Qf8AEFEgNv&oR;XoL@GypysGLk zErE>?^jXsL(HHJfHMeK7HYG9_r15jsQ0NNoSl1Ts44HZS~h$hyM`!*a%Z>8V6 z5kc(waA8k+eO8~7fL-wQ{?W+t6hVop3iEtxIM=6rnbU(EWh-}*`&IXZ%DJv2XAx6L z!y5q}xbY^$%DY~aJKkZzQb)p?iRv!R9Xuio9o*s1Lcz)vbqjSJS!wBk;MWyx zv(Pz4g-%mWBJ41p!==`(PlfD_Ptj!kf<|MsCiC^VvpC|Bj_&I|YB?vwu#E)@mwA_} z{QM@P`fxq!35$x(1N|S;>FtL{FrbFI(xYHn^?#F7FEv)#?Lyl17Z5AG>1xSZt?_}5z(ae(Xc)Q7y+y%0#-U@i(r$ljMmA;OmN z(Wborgrt7<0YqJmcb~$CLu)T zq$4xz*#nE;_gID+&$mX)^sVCS9-@#Isk#Yhmr-=lV?yPat#dufgi^vE?KSA>dQC07 zw$-^Q2)aiBV1=!ANG@u;_{B^iD2iU6q61gEpSN3qqoCYsbtyecj`=#PTp)R4uqbL zQ!FyMW2v}Z!&*>|9D1DvLV1y{`Mu@z*{*j`0QD$4K%jPmebcVYjZq<55Fnc4=M%~Y zBtVfV7DyZ)kKodFXW+HnhRNm3bh3GI4SvWAhjr)u%}ydW$%V6`1xW!04Fm?mv{$np z*p(d8B+jH`PaGA5ZaB6qu7Tpp@uEJc#Vm{5kP6p*RjDOawd|diP?ds_G7q&5$-fBb zF~`Qt!!WYOE{Qc(x1LvM6!*oju(o&r;>yOY4e|r|+iXbhy=qkX;BUnn-Y8%rAM%PBL=n#@rbC%*7abis81AQ&C7(Tgj6v9jq;o>ey^^wkt2+5Er*RKvsqOY} z1Kt8KL6YofGxUm|(8KjR6Un`Xl2#O(MdY zdzHvUIWF#c>}6hABBGb@$w*7byH1p9-FndA2g#Jj`kjyUNgGmZRJstH=L7g@*ZXqpGa6&Rj|b_tPT- z2OW3l^i|&xuh(0;iJF&Zq1twXwZl#08h*XjLR33C&AH)W2KVcm**H`0k^BlzwtO!| zVvAoF)Jedf>5t}8ZPkiXw^n(d@y94L!C6Q2PG#G={^A;bp?Xn2M<_B2|Lj&T|BPf) zUG1-SVfygk5+9Fz(i1|G;tFwwcVE&2PoVT^&sYmRzohq?o~C|t<=Gn8aI49EX~LBe zKsj;g8u3XMV9a^gPpyXQCio1km`lh4JOj~qD_Qo09DG*T2ed79l~Jh?BDOqg;b&c8_^ zi}Ni>YK!Ul*2ZKj4ewV3-q6;12t$3;CbLzo6KYa&Q+HR5ALXm3`p`^W9J8xhK?C=7 ze*GNKRk9aQ+40)bZ)X>1wGmVe0+d|fv%7UL8|BXAIZmX+_d;Eh;e41_RwqU3?c~Iu zCmGx`5~%{&@xNR)n7W#S6VZV%79&&CoYjC!>`OU>M=8pxIrS~GxSYKt~r)qKp z$L&4R?@b#foupu45F+*sup^;g%=NoK<7R-s&G}+5cRz%)bei7O^RIZhPST? z=W)zFo06_z3I7aF3?UO&KTo>wrD`n}N2~_C>4Wx(F}BDylR?9?9+7_;Ng-*tSEpQo5oxsm3Nt%}ROXvh$sVQ+-Y2 z#(a_=u2J(>EWt2%(#=D@U16Ki-+KE?2mLf%HCmc)t>HUM+(PE1ykj~4U#-+eBEPfT z?pD4QsIt=;IBaZ{mcu^rJBw<|`~N?uP90dZeT$j@ zP+C2%-uA7(qVt*2JDx}?EPU+on;V}$v55chtXEYG-AU-wx*$D{6`y&&8u4Rqm-W*r z&pwIoQD-EIg=GUe`R_aZKZh%7Pc;ieq<2l3caZt@V@_G%i-aD-u+X1&AJ7Bw)twJk z=U?xf#@5}8NU}>LoOTO1999c0e%vdo=3ipZM7aH3gjzySE<+sJSDLOB^0soekKV`Ydx@<01 zM!Mgk(01J2(N#Q)zyW_7UV2-6Zwdi}%<_XiU{J1DeJq`g68~iG4Zon%aLHn&h;*4F zag-125@gP{uB}VaF*oTp-Si~4Q2+q3#OBnQMUvI@Qf^!!I`3YNqAyiU>xsI3C&G|6 zkbCSp)nVrTjeYahmgBxyd2|4jW^_uF7Mt`zKHJzH~B5GsGt; z1BS2V&B)xfo$X|9Sg%zatYtGpD%d78OORsaBiM{-I$F*TdD_L@cBk0gk-8{U-@kP2Nnej1%p5My#-)EZ9_HmGTicE& zfwg^2pfpH7ce|mJ{yQ@1)n-=nNTq3Q5j&&S+qwt~^PtWmyzzN=m^E1qlN*0l5r@WS zDpOvv+WammTBQd=xRrx_JL4@LQA1v#M!J#|0+5-!P^OXKY#_i}Jd$ECoHnY-%Vssw z$l%Cq>6}-}byTjVSR5dHbMd&iW&8N~#F51;T3Vz~UVIjzma96o1)t^l7u8?;hz+t4 zMsM~lS8O7BEE53*P-c2lLM`(X>%L`r>V$U(UFcwY-2a5u2ho3)6op$2VHy!jK)Dmj z!3bxH-$yP5xSC)|mZ`rXvw-L%-@xnS1aMpLLe~;#GaF^oSNCq!v<5W>;*X(Ws`>s9 z=#3Yqt{r)Ug}9SB&I+S;Q@-~;B-XLMUnRtcG_)@M-EwNfL$D%36Ty%W zL6D(R(2EdWmV;xVqtTdfQ_y$aP;3fVFRG+H;Un zZX8QP;-cP_1uz*ma^8~ZHtC$djv~m^M+E;~@3L;e7F_+cVuX;*H%_YrI`^bnXfO=Y zzW3_WL8P=ItFN`4_aXx9X$%p~_Xkk75l*+T(Bq5ZgVC>^-YSH96li zN5|_*?+eL_sHgr0JDA++ra925fZ+1JiV3c+a9qlSBjJh6@EfHi`FF}hv#PcwcDnwZ zfEDm)v)zO-7vT%j_uBK}5`T0dGI~}AWMbs0V`9gRk%8seNpR>w4Rs+a#=?=xhn7l? zc*!QK%?jvfPe@3s!$%H+-9VPzM@bPsW2Q-w`cR>+Yb`s5&SU9WSQ;}Yq;YL>Fx#s!`^ImUpI3^#5 zggVv{*zeEk^cH`_Z6|pI8a%5s= z0s`_q!$m$M_-n5Yn9hpC;_m%FhaddL?bP|FV`I7P+m8mm)x~Z}1p;bSN?!4f)1t>I z;K{Ac@C(72Ok8QZDo83yL*#ZDW>c{&Wm0A+a|yrdpm{K7=a`-=4K_V9Rsprz8sS#| zh5Fe%dDb#hCI;F2AJk6hA*jN35g;~fcTq$YFCknMn!*9U^%lHR(vxZPc5FNL zscWiyGf;U#bkiZm9kwLkEn?_y2%E8O9%=LF}AR z2!DN^HJOZl~Q04yri>6`JzG# z3VAuDmY@)y90>Pg_G~28YgageR*^Xf&=#|>KIXG}-D~0la*Y+&F(X86k-z3}n?P~Yb*Z!u7YF}2w zn0!^{wiy{5QNF-sLgcN}5H5U?C>3~*4t|Bm^NY71AQtxdsDYHw>z@^7PO@9b;Wp~f zJ>2qIC)A9nuqp8&RFygh3IeW@hP_uXxZIMTUdu+@{j3zdk%pKN;RCao;iHj5x9W=i zANJlms;Ttf7shdHV;e+3sv{sOO(_9Foza9|CL|%Wfb&XpT-8CgqK{&r9lAAc#z*l@q62nh!f`Or}BZYfgZ&~S@wK&pz^wE7x#C#FR` zO(9Lg^;h?vuxxn= zZZyx(CWergZml~ha~{fzt2teq_CYY=sZ=cQ^SixM7-xvxqnv1QAZk{Ed}P@Jb?$Ra zk%fe-{!T*?ZIX!{{d$MO1Q|eSEwtcZG4- z4k5*d-JkDvv;hkfF@K6*MjNN*QEdGagNyPgK)v4t}`vw z%|vUs>+x3)`T~-qjb5wju&u>q5mn$6D*m@Rvjng;PxDIK1Qy@t`e47!1q} zw=LhniT#A9?^(Vd=^mKRz>_pdc9{qELwy z*O98UZOUe5r>>r!2v;%GwT_WNrp;0NAjDZxnu=o2kXU55_qPAwoR5m))5$DerL%AsLIvD9*!COMselxz7Djc=b~pbDkFj7* zq}e&!v%2<6Y-FKsKyjQ{X3W@dc4xTWs>S;uyh}Wj?W<#{ocLSht+B9)F-VU~L(~=T zoMG);LhK8H83x?Fxa=VP;8s`J8CY#s)ybJeoq6KPDm`sQ`Ja)oeDXbon5GVBgO|oclwH0>h4`Ck%PlTNs%wSrc{H# z2%4Icbyzb1obK>jy%P3IllhYMj(Q%W&e=9-{H^TKUTznY6NvL!{7@BrBP%m~l^A=A zesRE#9=>|FRqIr4aK!SUMC8uSB4Bu;PrzXr!HtE^aRH!Ued=sS$n=XHiLLj$~yco%qcdEA8IUIW!OmQ zmg~>(bx#SrAKKrSkJ8b?D>>YDjDn)I$5kq6$MrwS4AzD*`Z22OF8;AIGf54f_rlFZ z!Bb+#J@LPdFrMT-*+|UuP#X@u`l`F@?9I8s z)gJ9ThnFiuvxy;Jr(br3`Fp$$V13Kfb!WEn-_Ed4Rp_g5@6#*#M=o$D$(~wMfC}}` z3i_FNS!Pu!rtTn$`tim5SDvvvu8_6h;*z}PdqS04n_tX`dWrz3aPwHu_4=+~t3G_S zF**{RCL6`xbAEdJm%Ld)DXy!oW)Ht!x%{Jj%JF4;c4N8yti6!8RzpDAjYgRZ6enTJ#DksCAeJwwHUPJ6oZ+u7u`yBp2iI!HL!sE;86~MNq!x`q zer8lY6K>=UKkro^#T6`)GdXoHr0F2?(>e9WQ||}QK3wo(pKh)*1VM!_zX;Hq`h&~x zGB;y*A&x@o7w54BjUJ@V1oYj|vx{51qRz9KFB_7%hsNPGjpNdaq(!Wd}22&c-LwmgH+`T&Ds_gxQSc?&5o$>EpsQK^;f2sA$}J1)rc-kZo!2dd0K;6Y|TGYe}ZN6h^;Q(PbK z=Qg8P2tkzrq(NayTpWp+`BswggdX^oHqEUl1c)Qv*^r`$-%Qth>ib2#&WQBvgz}&tE>+Teky)%ak~QSP#I#VdL1;8G0>Ngp6?zf9dh;$g6m?8|gvsdiTL%a) z6v{es+R_`M!88QVHqE8)Qk#D}$&FoD5v<_Q=4; z#KcS_K9h6_Y@^p_g5!;&QK#XPOS-&I90JZ_ocjWMWW13m#b0#2frLMWfRh7m!%$RpSD__75&-${L?LPzOREWev;O+&A!!I|t1V zD{131cYi9F{%V8Rt8#5B%x*jK7II?G{fjTx@dC`(6UfQ3N6O}1!p-jk54|3(C7`5@ zTQdJ1lLJt;!CWN*N_YEx4wWJ@0GC^R-yZ zazx^2N^QP)BIPZ+<^(cvn-zZAJ`u@{#C~#Qhkh=;KPHNt!mqmRRfh2*kbzUP=GLR6q)h$DC7ae; ziNCGv-B#c9zkSQnr;ZUFRu0pl6uxpcsL6?=Qm77*g-|3K2~+J#7jl_#nNhdqQ*B0N zHJtO)YYmMf%A61Nh?$C2a!`jN*gUq1k?Td&TCKuJleceN?q} z&~1&gD_|$593MFg{)ilL!Qt|JH;R^!NcEoC6@g!pRtA!U?fsjATC%Qcs<5FJM1P6D5xNLH1eDaLH-1L*pJmuF&C4?#p(E2D(xr|6k6H2IBY3R4T znTm`(Y}WQ4igz#JJ?=KCgD3Sw;fd8j=CN<4Lao(Ai&Hch~soZu|*}4$bra4;vX!_fD8RQH0#kk;6=EBSe zwyxNEvEXf+19>@x#=TCwV7qcDb5K1?HwgSYNQe_QGuOOb9> zOwv-x?6f@PP#=<)v#>|_hpn);5l=Zn7?8mS_ z-{?iYJfbC%j=_Jv;m}A^o&Dce0z!^Q7bLd!H^<)0ZWfy>LcAga3Y@JWA5dWy%lc{H zt`|GmB9F6z4HIRDa7+aCm8X&3psAwBTJj=gRc~w=%u#$&9i?}lW=(Lxc~HSqU8o4U z%Uc4+SFxsHIm~4FnCnYJET88D?~^M1`rfrw$db>8q#(P}#{CPivGV3Onp9M5eZ8-} z9R>WW9D4hEYeKk56jHB08!3pR#boP~8z1fT@mzEv(>UCKuPyhbM;HpJ)k!_@bjL_% zTOd>Be3B1eu;_N`*4DP%C(&()@hpT%M?oNLxUD$pkzpFC+N1ywcS&(n4dGGhe6aj> zQMpuFk?(SIM$ddmQfBL(Jt=GF$_N?Hpc4|HtayZRfZA{0a40e?vUf(zR7~rc%*@Uo zk7d34dQSWsT*-P2Za=d=c`>N(IZG*N_Y_L0I&rrw`YXPEU@66=%b?2n(@`_~mA2OS z+feXi(MRM&o9e)Ga`efln}2X+AhMF5F6sByKh}N`)h=cHVVI=_YY4-Bx#jpLqJry~ z)o))P{Xb|QllRwP-bDoegqnK^q`_uF0)8c}Ju2?L3omGz(;!C;y-{?E>GA4^q1g&_DwYqnwT7@6}tIMB%eGYyIcdgz1HuAT3 z=a1jmwDiNz+xZ4_wK`7-Pa3S=J1&n_gW){o5v&ix?>K}` zG2CJ{{_4pGTiuN!n^~Q=4!>VC4|Xc!1=ftxQ;|ynshyaz<0N+w#T$*e8IjK3Kc3TmB%J8c65eHN8~0`6Wta zNULw4?6*djcS>?PAfBZshJrXT5Xeb(VuE!fMhWkLPY-Oa=H39(hMm7P`p(=gY|bd3 zjHBA?T}6vYU(;QcfR%9WgiZTAu$OT+U|G!bY6gn&Xd0 zP;$%_b#zdTqk5<xHR=`W}DNhv%HYX&KFN|6UF1|H}W-f(&?q6b*(SPaSbz_i*X{XKn zjt(~O;kc^FMIdyJE#ADgZs`-`2@W7uTP#lJ7ZpSv!XZp))FI%Qn#vywL-Hd)cS5a{ zB9n`GAQ%{eo$bd`%v)W%=O{3`hodzOxwzt;f1gQ%OjMo0l5+dKD2##JS*={k={{XZ zCwefs%FCR{x06L}AU9JaeGH-2Xf-&@%owJa4oSMnUO|55N%;LiUw^t(sN4LyEpJ?j zIU$LhpZ5qAz9^Iox9v=VEQtv(n+#m>N?z1`Of#!B(RWQ!>Yq1WT~m?!6d)%?TXf}7 zf@`niTwF9^hq(dl@imnjw((4Qi@bK{o5A4v;OGl$XQJr+!{!B)Ju_O)T478)o+6$M zT8vWT_3k*jPFRWSTDu$B(LPkz5teu!4aEt0n(vJX!%C2;fDIId28d7|wfc#PM9c2{ zVpCIRW`EI7->z1o%OEN0)0=Ug=l+j_ZuB_f70;cix! z2E`jQz94+>iR2?pfw0YW>Eva-MfcIH;g~PRA;OJFRw685lr8SB+h()VWa)F(>%~gk zw41JUN?ZYIM>Dwpaj0)8a?!UU5oL^mzw8z?z39;qd@jIfsMy=LmZxnkDRI8T`B9@a zo?{UX32&{rG|ykC8Bw2V2#qZ5vz~<_M#xXPDf9it@ISKpDH9-|B-! z+^pdV;b)F89whq%?wSs4`IqRt3l-;te4nDVW(1!aa3WK6ig$!ft_>|q%@OnIpNg6R zr7C^OB1mTe7g2BBd?cYr)pZN?FRs~4y4ed9rE=$-RXs0ztqg;S%GiGw8k$*SGkH7g z(AB$f%n?AUWvkllYoD+4S#8++vWOjWuPqka5Ki)%LDl45CpKu?M>ajUY?S{gWcF!4 zb~O-4Q$z**nWWH@os@yUq`o({)53Jg5W{Xxj!sPL8Xx#RqO^B)_I2Gh|M_=igL(IW z)!xzKW1#6#2^a2WJ|kTP$~~y1&@94xV@;~E#4QIqf^rMWF6gQa9RVSuBU&S#&*J*~ z9*i8lTUpf=QV9xH!F+j!#x7=F%T?F2qMrSg&}iB3qp@Ss(kThveVgeZuVhS>_m0GZ zXV*|+deiK-J9nl_xySYT#^D&<+FyQwwZV+VK*)C13c%_?K&Ex&fcIaC(Hr)i&Nrp- z7U7P-g{B!PFh89rMN#)@uxFt|y}yl@@LLM)M+=?MVc!HrRkfJb%n zy^fLHw=+34xotb&6<5M;(DrDslrmT^Cc+My&%+M6Obco)C^xftGfh+B0WoqeLj8iu<pYPK6##Rz$s^29tm!#8!>%Ui!)=@#O}GsJH(e|33M~ zbog(uDNmH~z9BatAarwSEnxFUgDlKpaLdK-SS+(tODV77^+^d0X;WhZW5(*u?he!^ za+3JtydWzo*Jbj%zfSr1hYm{U%k{B{yqP!K?Hh_7xuo!*G1vVf^_;pR958q$A*yS8E@Y|Qa6`v9!T1SUM6b<^a~Yk%PT;j9-0E;soWou{4fM2 z7)}GyXGo@W289%xF}khUd7n!_<03@)VjH_nm{>d0r+~5+ucb>1mI>17*0(ZtB^Kgv zcuhO;vMF;=lF1DL(I01b+JdjjF7*jFwm!A-)g*gd$IZPBj4NP)*_ZVBmb#)&(=ftK zcm_955CqMA@tJ!>ImO@SV#~vloo=*a{kFkq6q)LOiAImbuc;TJlvTHCu?<-r zL01b70Ln@G++v_heCU`OBcs(lc4BtS+j1o^sux$9t8)T3uu-bGdG-6rp;2y;5L!xb zres$4k9jAr^qbuNMaW`o&xCZWZ>Yi;C&uA^0fFc$fh1jA!GQ_9IB{P=kgg{rCWZ%$6~$GO zg{O4gDdMSW3jrT>RjqmaD~-8}+FrP_YIdy(OS&BYk5fKp+$*303k^CxK=3@$C(yLV zI-##Ipw4ewsDK0&lqp80i7Do4DT3Q>bbB*wym&v3EQ7W$BVTmsUn3DyyW4o4 zCwKTGd8wOt99pZl@-FM=h@@xA#fyA6AAJS=+p{)te{dZ%S)4Am_jFLm>V;bRHJDlt zP$)qKyJNlp2KBOyQbRu)lS^`m{LTWVa2*aV!PLa_*d!nVsTB8S z%ECX=Xm}U*n1tOUr}oZ0E`{K~9*w^mw2-U_ki7Qe#YK71=-gm`<&ew+KN~cq4uGOzS;QB7$-M@~>b>S<$mEccdSN~RD3H}su?}4^X^|G#6>D9>}xzySJ z<~oDUy>9jN%~oMnfgj5HqDF4c<=IKxCMTVDzzj5Y_eiOr=LKlCys4885q?d-gjT=#T!s{vZ4d+eL=Mb)3ID;>9N4nNR;36* z&%;&06K{ITbGm%csS|K-AE%fIB_W(77rnM@)~E4h1^{a=6uX^I6ntbD8Gw z8xLq@*k}dliF}RxyRsF=r*>FC2~w}uDdi(l>qIh%xl)UThcMUYm@h|e4;##OUjN?c*Of+m!8TU*;?!6`S9+fy$XymRChdl{7%n9>L}gu$6^foaCM;ge6E1V;kS5 z%!d^@>7VuR2Bjcclkt>%?hPs0f^;?$LloRGkr54&0v!-wMQv%L&%td!tYk>5`8&#y zhoO&3zuET4$D}U5iYq{yBq7QqKqQ?R6?TKEB1GxNI~_#4&6->Df73dg8{oOT`*S-<$Hb zLl&ep$(!(L!ap^E<3NQ&fKn+>tjW16-O;7qVz`_CfVa9T4pLkrZD=Bm8N}1(Ma^d> z3=7i8EzHv4MG0ak(cY#Jir7#5Cd(t|<@_yVTrQt7hMKr>N8g1cYxm! z-Cz>r#X@|ZxKS9lKnz7c=5^uIY&H~}G;$BCk+|SL?)ARL>S+VDwGcBx;zT;#D}HDU zy*x}bk7?Bea+QH?%OzvCgS{ttCohaj7h%^hbx0UO>r6gd3EfYJwKO(15Pr)-cwKlA z3tcUZ_|#olIU*ixtQ}ohUED<@Ab@%C4&ZNJ4MEDcaclZGFv+9o;!zD5@w_AGpho`1 z#8JjvBGwoSpG}2IRu zt74RVn9Ve>qCzg^{<`!-Or;XK8;-CpYUI`a9P>=o;K2Eayit3z#AWgqI_9>te=d`T zS1NernaoImG*ygCv!HBhtG_j=j?>__SNb#`97i7HZY(Q(Lc7JtG0S;i8!*#kYqt6H zT>DuLEm0-)mKepKJVaqqUYW3CDAfVRrd>j=eC{q9`lgBN(=)3^{o*~i(DdtSU{Lo6 zPk_s=;QBn7RTnjy5joE(6Sq#k*+q;f{xd!O8hrMoSnas=D^!(ySn->YAK2m)JSqGV z9e}{-(qS+lIiNP@`w2&JAh9Wm(ODf*+iwWr4ni7fXKUQ;T!0GFQ;T6WosuSUK5kc@ zyA!}#!jM=f0uJIz>J;r1m6Yke+^_-Bg%46Z#(v{6X!vV3{! z@9*4++d8U;&%8{={Z+@l+jVzer>jiFtLkEp+w7AU0iL__S2H5NLsy%?t8#=iKkLq1 zeU$D4e{qm>c3%02v>3?VD_O|;TU_j((7-Oa;@cpJFQvCic--xXV>^J9O;gt?Q>AYk z(>S)4WuJ~}*>eU!<>_zPu~K}n25QiB@?|3Da|j@b0)Hg{l$-V+R;G;4zPEMyYQx9- zUK<}Ej-yb||E_B@k(cXYDf!3$^jiPpF9>RN9BHkc`t@>T>c#t}SId3ocOPo}kiSI= z`zE|HsMfG-=?li_RIJ9z-$b{sB!Gk@HTIsxRI*TWHeXTQz-_jAl{+sY1&0;iH!FQH z_?8PUX=Hhuot~rF^3&V|kZ5g*EUcPeF}SG94e&I4qVt!QzkK)ez`AR0Xt$|S{i^6U zE0xiiXHKT4f3=bK^GI~^GElcKK*f&}_Zzq_r2ab&+W+yD{@efjmv%Y)w?pxtZ~Ye} zNB-x7^3QJ^v)TM=*{-qnH4Q4Y~5e$`3+jFpjp!zmwaeOIp0BZrl??FNCNOc4Op*=It61aXYK$> zTiVmoH7lfh(VsqXU7mmVuVZqFd^LNmzuVFNdoEjl_xb6k$i%RrqyiW1riWZXl(oNl z{oglEkq-V&MEo1pYu-s#q#018!M1+>b3Wwyrs!{x#N%I;d=zs25*ZUL_uQg3*N*`v+L~HY*G@3nA|bx zfnNucs;V6`ha3spti3q9yR4bPHlniVA6#XhUp2p9VHt-8x>FQmEC1kn{+uFKbnV3| z=8JcCXp_43U@>SXXlffmdr3*lv`wW!{OAjufU$}GdlS3$gS&4!OrNO_D|%wrhri$L zD+YMZAAH;~y*88#d;;F}%jLj3#R4`+`OBZmm|Hj1J#9Y*NApi6FkC0MhE^rhWzgu@?q`yp92C#4(zf_IY~`z ztI?&a?zlYBpmNQ%orq;c_+;l!yKh2xl8#O@xa|W_R5x9R!2)38VPBlDvhrWA4(I-3 z|2O{K{pWwyoAS5Wp||$USCO*yx1OCH+r0TDM9+QDGrvGMrP z|GD>}!=cEfKxMnXu8scp2|E55?68}uyEV6@zEi85S1FR1K6cS{lm*h#SoIA1Yg{ru zivDvjE*uqi5LcQVo&O#I(Y-LOolNrjY?zC3A7e#Fo-!*n2ULei{x)oL#y^Tbg<=0k z*Q!{k`H&td{d*D9eo=z`rhKZ8paYIcKI9D&Pvs3xM#aM)6A2`0&Wks{=_~ax0I5|E zMkjI+u=OJ6SQ+vf!I9>GNcQU1{BXx+U`aM|ASRQbyc#~RkoYS}+sXhMZpg4|IX#DR6Z?m4is#Tk)Yd==D|KcDvfzzI&gW> z>%vv-%M*)~w*+@$R7X-XC)?c6R=Axyoz|i=WF=+k=y|6M35%i2|EVjJida^c3+N}V z2n#-DC|jANua^F=WcuG;njE=zm=MrwNgKy*079kYl(uJMGRG3G>d7lQqIKt zX3!D-V6_li4L-^?#f)lV$9US^PaDdn#0=i@g!9_Oq~9o$YqBtv+~B-D;Ns9vgu?ov z=UdfZtmzGWdTw5>v*s%gGlM2pM+C8+--T#CEF{xiuU9DeJzbh9Hw>VavTxM+5Azz! z_}}|EanY>=EL6Pw5~-0`YbmGdao}5@9-}IFfVAmF!WL;$bWMw`{^ERGf!5Sk&Y>4> z$zh>$8f-GE=8-VDzxeB3C8Ap%aH`ug47yf+@g3l$AXR8Fe06kP^L)?lcYO-EkMOyw znMSj>zhP?eQ>gizNaltnkBJzpRpuBHXPF-TfLHEwL^{n0ULBX!&8k3kh+!J34j9h< zMGJgWV4Ju5kY8Z;x7-q{4unk^BjeGar)qJbp@AT<3M$fDuHs})%K5%|8=Xrx>pv~D zGGZw%s^p}>g|J`Cj6>MAJDY8?FBN7wUNGun{0=VmnX|2z~1H-gom$~i1yiWPiUggR#btqDANcXyc7j5MlM<| zVuKU4pZv6Nd0M6Ypmo?pppAJrReeuLdetX4H;texxx_bz&S!%Ta^@|Lrjb*L+1a53 zb}XL!H=si2t{gOil};lk9Js((u1s5;co_JBKt%gg34Ew$Hfvy`sI*XD;zb%Z>B@Y1 zDr~d0--nRRlxO;`7vCCi-!U5~`8@S{(Dz8ApN}@NnJZ09E3m0f3zz8sa>;T?*Zmwk z*Me4*Y$HX!lPIw;j4moRr?-2|4bFJ@s-gVW7a6n#EZg_Fd1p+|9#d>bnjgvA$+2>D z3MGbV&kVXE7nMwkF1vpB*rO=rb>uz!AtUQ(-(@c&Bs&35EVH@qxFEXR58jaIUcr}< zdfBQ%2q)0N5SK^r*7zsC*^Y|mp^_0Hh?h}wG z*}$GabKEkC&ZKOy{iL4dywGXiWuBGyUS8#Q6^|th7`mwKgGa}3Zy$xECnt|CuiDM% zfz)ao{Z(cP$~$~pt9)g#5Sa9!S0$v0i8V&)^eXD$i!X_RV{jV`orO;RDdx$ z3G#ic_+5B0joF8?kd`g!g|m#sUpZgymXeYQr6top%;NFBQq<5n`)76Y5&RB?&V@Gp z5ZFiy*a` z+#fmRQG+~JU0+>w9s7Ai{VA-q2`zQsQp9Wu&HF>V`C3dIPCB*2Lkck6#N%BDWz$Ps zXzt@x-?GE(nSEsdiaMF*EY0nd(}9FS{2~?HWIh40aHv)yfwZd>y8c6@dz^i1Cn719xt{!t&CE8|Vtq#Xj^0jBh96keY1se zn!4->MyZvv<)xI&-}2d#Xx<LSJ9gVG4$QZ-Tb1sO+ zQnj~cwQUZU89tiCTlH+Mn&uX|&W}!`KI2BF*mgDD5gLLwftZvjT|k`G<5Ti8JrK&G zFj}|vtjbiiOw3RXTYSUj5|vg<6_?*y&n*&(uc#&lF_z-E7VQZSu`h7nL8{Y!`Q!Tj z_yhUR_B+GULJ<0Oxz14rJZbuuY8f=7MTbU1H-I`&o5F1&C}V7dkqUc5_!n zRmZ*fJdOFK|9JwPdi5#s{1|S1WTQ)UxOC(hgAMXAX{r#4F8>YhvRAg<&!RK-k9sy7a2zVwbzkd0Sf5YH(@o6$b@m*{T4 z9hQ>jvCC{kcJ$6=A)&msbFsMqwQ(^~#@@T#HHAn0UWqbOU9km8B} z>7hh!09gTCJbz%bkTh}{((OW!Xt-R~FWvEy-qUT?KoyaJOG}Jeir|@0K<$K^6ia=M z@`%$f*qTlhd9;d?ipAy6_%?J^#;1o&XYtw;n>&U@%y!DXPaioS>#eHGV|HD(r(c29 z+b}332AUu6N5bGx=mb1Q^Fl|&FLs%O@sZ7B+`QL;3ZhJ7e&-^P*Z58nfQV?QggsBk zp0-oGV>R8UUHb{iD4*Q9z%-Bx^|TQ*e#`Xn_E;XvN3u#>@c}dZ2CU0N#p=m`Rmh7b zcyq0A4db>2t#?+Q-uL5)*01vn|Nr4EfFd$B@-EDpV9Y*w!mND@e#a%@U-ta0FC;md z$i$0PKl8?I9P(g?bREtKr7}=<&-}h@#w=2ndG1|z;umK-bQRh1lO$(LwpQhr+hA?iBCGzd+4pNz1OYSY6*pW?w(yB@}v;vqdtIgK(De zv^f{jn&ytAjfN;;IZ7-fV%-SitO;(A0So{c7*DVCq<6Evqu(>`pK}eZLj~A|mGm3y zidP`Xl9Q=I;;<->sqU6d@Wst<#?Pi{HJRJ+x|;5z7np)KIZT?~?nq1tm}jTR*rrwy zv8rBHGs`L6XSn83qm-Y*b8S3oT{>bOczZZI^J%r8?G%4WsWerb`@O>SoUwsUr7tbi z@N9obr)Ltt0I({YSj;eCSsLGO@$4^rH{en;j`De$f+K*XN1Hne6WAYUzzS`$-}F&7 zIv37z^D+12iMwNBWIxv<84*Xyq>JUJ34W)S$-~Wwu-O;DZ||x6c5)02105~C+;Tm` zIJ%wCBWO-rMC_`ODHQjqM9-JCF{RK-*bA?x$DHV+^0Gr|_0h|zDrXY|V$W-WG(7gN zhi)hH0485N31tdxnJwRzf1oky6BgWNQbaEqdgVQa5^T{|VPcvzgvoWCQsWR&a+9BM zXJLLtqYHCZb~HMY88U`>qh-DhJ!_S%RJiCdtNwU&8j?8wVY>g^P^o)3G~43+c=S?w zEP2hiJP6)x_LEq-+H!MLr!(tFax<%{!B(;&2%;;U>M0+*6!@aKKYt4w`eJx}u?^gn zqMcl=9^#1S@D(+-C1-bT-JAB)wLEaKx6U@&o=9kH_pAas@jVkcyTa2 z@2a;^PlL^_5J%|K0mx@ua0|^#84Y6d^2h%CDI_y$)3fo52=P#=MN$28z~moX-^tZf zT(kC*AG&AcaHpKkYfXqDINt1vye1Q*4kQBIJDsf^yv4zd{vD`_~QLg`8RRdEtaUQc^Br29$`bWhl;zJ~5V&w);djF^2^x^UN~cl+Dnvc^J{j*LF? z+~uq@o?}TQLQ&gNP=HU}QId5;Uv5oKk}cHFo0^@cpb1(^(Ud#(=93p;Y2UAnBX=EN z?$Cy<38e*&#JvoekVsR3O#6lNOHcZFkSOfwd!SOg+ZKW2BEuIsi(aW87wdYvd$j~C zi{+j<;E7Z4(y1*LVpi)kiIlq0CU>*EdNnMyGc1h;LLzNJNLvObx_fWrJip71m^X|H zhBOW2+U$O0`^C+G+*|z-;oVE%=)ybB2ZiQBScYpv_jM}+^SdQt*X6Q?Nx1ocQ2H`o zf6;R`@$Ge34G-nFA(ZLrcLumy%4#h-jR#Hlsen4WEgGh~L6gwYdypAiR7c6;UXah) zt2;RvJFe+&=?>6%p@W=Vtrs!W9Ziq40Mht#(=GbS+;7FM=#}zptf1QLA6)fH{eD|R zWBcpb?NMZntiV;zX=6X_ZA*yj!mi@EmJ)!xWk2Dm`E)U4h3#1h@ZgPTqhn9OHhpp% zzUr|&<2NpC5O4KgzzB^K@3*^0)vXj7l+n>rMbw{@S0vib(Vj&GAvyg)Xb>7S4cGr5 zo9_E1(pc7uyf$>_NFtjTI#iV8&wEG}mNDi-;Q{*@Qm+Y0j3Tz3IUnc1;>-H9Oouq3kzTp6V$}NKuj%I>XHEGvV0~uQb|(;46d!pcHw^e#O+iiMWO;cV-?=YeeYLn^fyrdIyl6Od zP~6pII82i|N!WIQ$Lklg8+Hywp16fPmrZ{y`fMx1vz0o#5Ne!9tg& z%cYC!ENY&-2nzFPO8vgv#UODku|!c<9!aH&vL|e7;+t%&`IgAAU!`O+=VN`|VBsTP z8k-&!tcK~?Ktu!Evp97qT(gm@k1 z`W=G!_4(^X^ncR+FI9b(Hh#XN-n?dR{(92wYf=yk}$S)o6pz)>&m7N9NJJP91>A!kV zU1B>Ot@@==*b!r6A#r#j7S5|FI<$Ck*q`NM?SiqVcwY)L`hMa&Cy1`zkiJDM{8F(s zmKUgP=AOT(svo5CO1kIDl`Phm0v;uHTXy7_@Th}VBlC;*)+$&A6un|m%5Ak)jgv^J zS+zWWUJ)4pO+)1iQMR8WjZuY9j(lhQr`RI76oQ6zLLcEf*J>ITdHZCEI1+}eTBYHL zk~>W7=Nb9-oi;nH0M+^#_4iTydnM+3>W8w_(=&?k$uM#K^ci%c+__sx`OW3w{+4<> zHBVVVw9+0;A;Jc{PUt#1biRIV=r+2NsKU$v#h1p%Us0RMz>8bUSrMHAyms4M&$`5s z`)De=x$1&)hE7_VT}D5ahhMupFn=qRuVxlTb$1)8%Ibu$yX=POOh!mBF3HdJ^-mz9 zZWg>@-#PWehk+&vP{8Zv<_04X+hY26Mw_e^%iY|_GjBh#nx46k@|=8l#KcokvB=5~ z)HVu~FP63-BAVCJuY_gF+UKiR+>mnI+^e^0Brz00J~{`g6`p64EkwI``;|&XC#Cbz zH%PdW+(F3nqU1AOu(o>h=2b7{#^D<-$I&Z1LTtU6GC<1g(S%@VgR$B|l4rKn;oMJq zi+ALoIy(rg>nPXsa^!d@hv2+52X6{l*lQ{=mNEy}O$&?2qLJr~kS~xxfc@iE$}NXb z`jVe-K5l9fYSJo*nA5z4R@;>?gGQ3}s|A{;+q)`Qp`u%p~aGazJLCS-@Wghy#<;F@&p{HVJkZxLW$Nr zwXA?>HY2g#`n~;pwLBUN1tGbG{96@UmSgZ_z#}JFU}|Ds z`J2JfEw=MxMfvN9Y+Pf&%N*{=r$6RRI9e{gPP^SE#OtC^7u4IZWH`)sH;DIW}Yzqt*@xrnPRjxzc^v)&4;O4cX zH0X%A`2;1HGPF7|%*6e{^)BFWallUcL8L9Zl>f{Ov@ZviVUR)Fs2ltO+}XdXKKq_E=y8XmxiiU&r|Gn59+%1;a<^qeF?pBd7E^h709dn< zM8(U1#H<%1L?Og-!i0mQr0T{nSR<=%AvPAz8>ErYZ2 z)14Q+pJldvce3-K<;!W^#}qP0R5E+V1O5kB{16ZznwqKyHL8QByeb`W8f?7(%ZB38 zZd6e>rXcxxVRHNUtze0uQ@bYN?)fk)GNt%ZGFitV;Z<_E7JS$b9uXw$7(pIDz_** zX0@TADPa2b2~4VRmyK8a(wn`VeC1kpc9IT_ z6xeRr&Q4J~<8epJRf3)1Lhs?+1mFyuCpZ6q;6%}u3)iFI7^K+Q#tiuPpThr&WCy>BWC^4hiWFEl4iGgW0ctN^AwQL9vQ#!gw{gnZR&yAy z;=;JJ4iUO*gwt<#2L&6FuX`_4cj^$|p;gnL{r09|a&5p67P%b)14B#>y+%j7h#|bn z3pA{QGVzmTW?1`pLy$FsU!%F1+hXCmhi2c9AcCACftU(!-Esh{&Gm)`3KMseLb8G% zaXiUyop7e31d1`F9xU^d4rW$X!t#rCwcIFyo`d@?hC|T zd@hB44%A}pKa1|wr(F94>xhqtJbNXxkygKg>HcN8Ou3& z=POqq?1faT2j!Z6)6^W^#s4Y$VvH|tW)q|JZiuoHzPxkl@%Y=*Xi2~-Q$ucLX9YLM z#C&+=XLVocf3WwSVNIuPyDu}2eZ)aPkmg90P?SzU@Npy{B_Jjtw19xL(0db{(UD#R zq=f*F0TPmsVCV@=kq!X^gcgd_NbenVXV%{DJM*sNJ@!7<*S*%K{Qo&pAnm@c>psu( zhvhYbs7=ca#g1xAYt8W3Rw3|RwOr?p?*5~8I~(xN(C_U}IW+?i-UHpn3ZAcFoAl8` z>qcaFmZt6{t{=LpfB%2(_oFXsA3sykIB4hpHtg>>aAU7C^V(wLLGN08VF9-VX4z3*X-szMb+s)4X$S0gL zLf*XMo0?|B@T_006~&aBibW3fDc-}#RMox0#P3$krp~F$e5#R`h*PY!*cMWz^;xN1 zF}9{*427A=jPON*-yH<^T>|x8n8%uv+HJp6KH}CrJ8I z%sHG08aBQjkrd)whu|b_%h?6I`URqtQ4=cJKrMfM-jLVa3G*s~B9RqF{LZy{o=N}N z3Q=(yH&7Q2Y6(Q{2P1kjw92;8&UCeeCY)OhlA543mg8sA@_apU=h=9ID#X#n$=j-a z?)J*dkwOvnm1+@qtjF+WhfYR01gxgj39)XSos3tr_}Xe}C_+;#AsO824@PtmJiqjM zC|;)x=z8erp0+IwX@lJ{;1F1t`AzY5p~dzhw6%Z68jA%&_+tiqy2k5>$2Y?2p7`#< z-hSu$VTVtPC^!;$9MfPuXCNai)T_Wx5Ad$+O>fl)OeQi$L1VK(LI^%(?uGQ@(JKAY z32MVlfoXHfWQXQCm(Na#5t2axG9R3muR)&Z1T9yQ9xd?a^h^E?r_88 z;0j7YCae=(^NE_2HvRXd~NZ) z7=6!BB7QeV5c9_thNjL$d=-ad{0S2HfhX{hb%NPXAut0%kH<-Wa<=Bf`u?M!U;C?O z@3==;3JWYusF|bZGf%*X6fY3pXl@21e<%jg^R-K^in`u>BQ>@#uk%<`Z|liWbHWgl z(k@iC^Cn$o*3~xP4Ln;`>E;;(vJAfcdMHESkAjelWYBD~9+=;nhP!!<$^%{0loNFv zuWK5ZvAq#RtQsEBA#(uBRg!xC+Wz`DzC@TFGnq+18^vH)mQcp*YO-rv$mIaX5>zrh z0{1M5F*pF0zc2?5WrWD27Hk3pVG)LI_q-A;6DEe3V^zT|dM&-?hg(}KF|_J326W(t z$-N#f(L%$K_uTf5C%r9$BgQ|CVyU)-px{}}96q;_D`8h;1c|%O3GqQk9Pc-~-z+$q* zxnUe>m)n;-B?SCTiOq9P(ggD+S%3u)LUF&alb<_zZnvsT`dxYcd2BXg%E{~JjIhag zMOE*lxxn~@jUp(sdjzS5ZyQc*U+i)2Q9s8HsPgtlmG`^}K{e)CsF-wJNx$*41^`8o6S*fSKza@2}2h zS((I{^O;v^6a|(-JqE()X0@&pejb=botu%fzf5gj#uvP3v{f`M{6iL>Szf#?e-}e2 z@|=QAAOVCmoPbcKr4Da$v!g7z6aizjgUxvhntX%+YYYSs=`6>-FfAgZ{-I)0`qTBS zVXOevB*PRF=Q1rU*)_brw(cX2aicA_{Ar$^?ZZ9$^FVX0{dEhH0)`#*U1AWgm|r#g+erEBl}6P83;bZm<5CoAvUs!q)VatM^K6WzIAMg`21ZA9peh ziQ0Qi{>(`dNFE|P$z`lgb-(ZokZckWGjF}Z@;b@tTFGk>w98dkw3u8jRxn;BEn7($ zoJ*ytCL^2!@^g>-WfTi2n?aq~V|zKH&0hK5*M+S73TQVg-t>tZ_Fguk_!_kgnDQKt z6%LS5Zmz(fEX_JKC72@jM|Iq=EwajgbFKX+L+nnuPH1-95{j_P{1nth(D=)ILmR!8)T$v7v>FHF=;Kwosh9TJcr*_wls(bb79i=Xf|y`-_& z7AKj)Tr9H>qV4@culVF3;*~KHP86KBeQ+I6`B{H)xzGrPBVyw;hro2UWFk_U4242X zbtZUVzfx$C{ILz!-Ri1?_5GB1*Rwk_ENv>=Dx05jl~S@)y2Y%;-(xSgzCDQdXfS#J zYyM0UQ9l?`dvS%6{lss{0XTw(VMuWR`E|64p@T0!#8kQ#XLGNjFX4svP6UJDU6(^w z$~ROM@G8qG^z^z^ysnN!Snv4-knp5XUD7QW6?$zhlOsv}4sw#8jYtmIt*DA7 z%=5w@cD{ccVd$B;n*V-+_zU@|^68!_)vfj_1-(RB6fS5gyL38tpyiJ7f2S)ja?dO2 zmdl-K!VoreD|?dN^%xGaU|WzjxV-*ZhjE3cyf1)wy`n9jy8QNs%<6w?>G>{hcxlYb z8`QvU%S!)>1>geo|3@Ll#ifP)Zp4AQ%7^gT+eJSR?*|OhfE&tzZ>IW*@!OOT!zQ)%$ zdPSD0rw#`swriLY&7A+v#gT(XX~^nwfShI9K_Y)E=X(Q0p9i<->=Ji+HI>tOKEeBR zye{Y8+y4E>>p!rR%PtH!mA-Im-Ysv`LQ?G(nF)oNnzMn)$U9arL427F1fLgkhvHc) zaKoBn``CAUTAB9fXg!H;@hEP44LJ7vNLbLYN-!ZHqNP`5q0i@|!e86~4ULM#!?&io zy~o$Vh`itLnqDmW&h<^=FOXxE02Im$(wm#tCd+rD>&JNF67SmGj?Y}9C;@nb#K;U) z50?aJfC$RFFg-zU&fg7tF{L~~#JQ`e=GentkL|5Y%NUpBwreKGlI)s+ya)lXX`QiS zVD(MAItXtJdW#wFl4qx=kmJ8a_RI3i+$9uxQ75~^on#_MvlKSI$&+a_wq^$W&I*OE zk}tWVk~!HLBIE$p@iU~jTSDtbqf=hl*yu3dOTWs>-DWUSs<%ZiA}jHzPpHZ z>xkZ{Kvz;j0WtFP_A3qFHJ7o~@#$BNRTC09{X;OI;GxK%cVbdGMgl$c=RA}H=@!Of z3o9ljvVA0!&PlSRVOlJ>6*LtX5(@4R4_@0#z|#D`7R|bZK-d}Lmn%>LTbb7`E`s_cNBbfRwfwrg;A z)T$mBl9y`2#sHC$Le?Y=!RM53l09L$Cw7WMf}QQHWv2!SYbSY+hsv+Yi1*~a-S^nP zz~Zm^+9}lTO~ZOieMyBR3B_TkkQ5M7MiHNuah->>FIygoSei^Y3x@LB^n+T~u32Z` z43_c&z1MHr1Zkhkf5}NhbVQc%++cX;ke#v=@5EoZiA>0HA*P}sygFBVzjIXvU--cP z#G$nMV`UJuva2*wPtnNjy50<;#e@Hu**+5jn`5fNroDyDt^5?C8%N`|mNLU8&QJ#; zd+@Jf7$LBg2y^RLPSsCnGLY4IX`EZs&)?Gm<1zWp)h3&W0czyHij`E*dh;SV`bH2J z-7L-F#gKpdB|D2rmo;l{O+Bx6SS$-@8MS=-Sj_@nSm+P5D*OvRLF}l1gl{Ed+beDw zqdj)&K5O;{doH#<`=&@_&S@aA1k%?fH#FA8Ki{lC7}8@h5FPI-`<+Y1s%QKGBA&t= zJM}L&bi)%;b9bJI7fw$kk@SK~5;%@$c%0_oG)Y}}^$7mJv3z*^nWH%M?c2T_`fxfF zsTlnVU5!fEi?m${Om=du9qxak&pz$aeKdmvoQ&a17c4Zqf3qTKo>7$lEcL8%5n>LL z2YlyxMP_sAS)MJOp5VX0oO%NwumQ&>Imy^6kP=dPU;OFy1B`bgUmm(+;BvE7BpE< z!b)1?rTCSxQPJN5IJ5==wOE zm{rHm=SCDD129u!3Ug4YB=w%18Eu2X={u?G;t#U9`0F&i|-0kw^~o6#gS88FE?LPbj3VwzW7w5 z?eQ#lSrl$4d3%0EoXYzowYPqS*zIYkF8E=nE>NwaswzvX^VVcQaYP`}y(NCmQ7I(L zPD+oV3j7(>V~t*;Ol?Hz)byKDKD5AF=)KovHBw=al%Q2k>X3#hM`sC!d#g%csyF#^ zyFn$y+g@XVE$rWS@9@;U@Qfp|A_hCRygD=5gYs49t#z_B_j&)gA8OPUADi>|zzOdA z3z2bCqH<0T1Y??RqjNwuF`JduCs+Qwqhg(wFGKk}Kz~f%HTyI6RG@5V@JN|gaK=+A zWpP76^}Q5-*X&0N3PS=-b_6z^9mjWsly3H(g#Dp3SNq~B%)DK{%hFjdGe>NdExz1_ z)wGp9^D)S-#iZ4GlUIoc?U|Qa6Ok2>Gf&iv+CiF%N^6!mG|%Tf9|m1Ns-tq!nDm7dd$c5S&6kW zSS87N`s+v(nXpb9P9)*EkIpN!tklX~t?H@zaLhmZxN>c-yuT-0opesvB zKoO~&ED@FLCkrBbN8w9^9D-}fA5%XhKWB9jm<$*SIEF<(w+E zO=h~y7Wq>;M__O{j@tnsBR#bzuU!#AW+j<$GV8YarYmxG_#}^4>9MO&){{ zJ~5M0u)X$B)zrdJB*}uBYzl?isX`XLGPjPM);%kSXcNLU91^;YgGZGf!ydb&NQlEW z1Zte(y{fyb#hOQB3?98P^L27ag{el&rm3c>hV)K|6l_MGcj*}Qd^>suhKT*@R9f@6 z4`y@ks-uqB8>*zc*gQ9)!a9@%sA zf5oR9CS~G~EA45^eQyUdv)vd=q(V!PISY@L>GhH-OiZR2u=oz8kyYq&YJwi{b^ts0|*Z)A-?N`Ka~&gz(zWEpR;$DodvVI zb!aY1_))lA;BV<4lItA6`R;e9h-cBWVR$4RQfhQ4wv$0m4S|4CE#qiIdz@k|H6S8* zaP*x!K24Y|RZX>It8Mlfz3*t3uDAaI0v0Gw=rFWP_~@X(LL<5`9#}wJd;nHumt8Z= zX^t}G2h4&Aj>yD4{WhHk-n9ti=mU>;C8hXuM2GuKV4Aib3?VcKL-6oN{i)j}q7b(h zl+IeM^)_m&NuHrxMb9M%O$r5VVy=1K(tf3CRGsvVVcy(t>rcH z>DLx$Us&C!qX@n2#xF^*e*J%)G980<0`_f&5d7h@JQ#5ox}{dt*E*oS-`kdT6XWh| z`GvR&U~7a#f)8ncq-nrEg|SW$6Rfj!1VQ2b=7uWf5kgh`S5b@3^_FZS8z#1VN*Rk6 zg>uJr<>iUQ7GFlyJ(%!yxs`ine!h`q0CMTi*($v-H>C%*66V#XkPtQ<^=>q`0L!b_ zS-~mIS(ofEXmd3)_7VJ9)e zhS5q2k!?0Q=ftRk!vo9B{jG))3n`|Y@1c*({KKYaYG*-29nZb4O1=E#@DV9JJIM&y z1>|=wq|lllTT~Zn=koqbuELozIKR~Rg<%(;3F7Uz?ufyUcatq=5_&bOrftZ=G{(j@NXo{g zI86p*RL0oih`ywg{Kd$~0J-j{MmXS$CNC~Anp9YoZ% zy0X@ekmtC*#K?qg^--5P@NaKJG_-)T@j1dR9d>h27z{eA2b=wTRFS1qaptE5sqQNy zgpwSP(a3f6PNQL}#q^PIJ)~SEU~rh8Xz#sO98DJ zwW^?Y6rb=qX{y}Z;<1*1!M0ocune8t^mZ`m#-Eg!nim58C2P4(7U&ruo74S5ZzW3Q z1}{>>@rUE7lmvhr%$gINh~O6}eG#LQs00dDZ5b9Z_xHGA?wk9kh02=cpq__yUY<}a zYIjG|F@6pL4&XEO%kP}*1!nB(>GeQ>AGq#1ie||lJ##Sq_V_4R)a@Tm%8}+s@#N5D zW7j`%`63HZJCiL1?X6!e10w!kO_HzaDR&IU`ewXYTQR3EP+k8-gG`$KBXTS<&HP+|91fNkB;5mW%6Si zQBzAhQd%ZfUd;JiyQ{2IyFW)6_r&B@aGRgo)=uwnHi+>3KQClQo_s)b`fg9(QU1q? zM$N7H1WwBT4Tpp;u7_>$zn>o+{P#ab8$bNh@dyVbyULi!wZCNART({5OX-B4zCDP# zo{5XuRvFh&9Xmx9ir&sr0W(BtGG{ zf^Atb{@BYsXRb6Wb=LPhegB#8(H=AQ9$}#dA`-O#^f}4kQtwGeQBCH5&2~p3=bkIyP?aHa4J3=vG~kg z&4W=;mn?=HY1tLtFj(z+YVA?e&a3isQ_iPMdS=}JGvRuL@#Hj37*7;CjATHFT3pk%bJ59F zTtR?exz9cFsnJp&0O_1g*Eo}koqwDmQ7dTj*-C>|Y6%D6^+bGfb4P9~j#@^+pRmWn4_?4ziuvJUR zA|A~yo3j$pkMIaGbuycN9R3>UvO+h1h|aw=@MUzl(34y>JRRPyk0NP(-P0!&&>lT| z&G`^ynXvU^KiCyq&u6Rb+gY;0=loWe!=kw#@;Dqf@-+@m6Hj@+u32=&^fUkU&Eioj z1M(i<+JbMvV{km}1rM+#1aX3^W@hw8xLVJbMcJqgY#~$D3}~iLMT<(^ndBP`FP80E z8|Z{ZKzFO(+sd7f$zkR1Ueo@w&f!wvaNM(6Q~YA;%9F4DER>@>^`S^br@6!v~DR}ZTFf$Dno z=jImBL?9TJw8l*G$Vvfo`b1RGt?0Xo1DYDw9wfZ)wO^2G-2ACt4mne9;X@5#njf_n zjx|+#R2hg9007zNs~!cR>%V#l1|R?Vew8q95P&Z!BBeE?5gr26$gfG`5uAQM2abrE zO(28qJyX;h^&D=}2T%Rr)Ts-Q-}|mO#xIgxfdo=TjY3nOy^yUzz*>P8J~4NQIi#`R z-5HlyR_kIU^1%CD&6JI?oNcF@ba-2a5>O;|RahhqQ`Ld?`iu5q$jBcJeN`@8Wbk(wHgnbs_V@lBT}WxDjbG1HuVo#L4zdFHT2nJi!euUP0Xz zBnki9&%#fMr%8ziIM18eo5|~+o3%*D(y18=n`vo}du!>x5BIKQ$=*UObh%&GfDIZ= z@{l4>v{J7m20%GXcHA=Z%JavltEaM@+i^*>Q!h2hvD?4*+1Utx zpzSSzc}E%YAYgnyw|}U6k1`pl^50Ukb*%ewSMPHOxsFi~JyG`D#&FU(Zp~@b;9m<= zA_i0RGsE0eMc{RzFwWayd6Ll64z^DZj>jhOK>eWWA`H*U3tt^3F_PK=Og9e^D%`NX%{Fy;kinpycawO9-o%YLgFl$g1UKADrr4*H zsr23G^J!g>R;dA*H>AJh5={UH25<<-3!@1q+GYo^JdeB8S9(jGas+X_tTjvP{OIj) zaxFvw9M~}z?>@QbBjFI7P?!##)xM*0=bKk{)2GVsT(7M%T-t_M4=q)+1*cj1PJLjX z>M1f`;QQ*SNA-M4gF1;wpyMQ`KjKh=LTh`^x%Kleu0Y+6@Nr#fBw^k=1A{`- z)oHzT!ND%Xwa{S0yr<;@Qq|-8OM@l)4ZUfBj;FoHc^Hp2l9L*z$?EgNdM>y)lGila z;lvi36AAYvme9<_j zpCG-PW{7n07(RTLa`+~-n}xcc#lJ5sElj`cCEm&ZuHQz{#{*`eSsZ{kGl7%fIbLPH z@RH*tKadKZ_h!{$ypVpbynX2JT>I(3j=xVB+Y!W#Aq4C<- zDN=b^U?=<#hd(Q(Di`IBJ7Fm{#RPNQbq}`|o^34{Y~BC%{xl3*uUC-&yI-f!WsnD1P@FM!t?0|v}&^0SwcGo{kpH=TQLkD$o`L`glpBbb?9 z1yaQ7O`YcFr{k%gG>r3R1iw@~(H-@P)O#<7Vw+iiokgC=$l2A6xi=dz53~ACnrjEF z_Oe=PkQ2bk1W^m9F~MWwhHpgPX)LZ#_z9c)PUp|m;HJ_#d z`6cbH(4hxjNi@PDkpYBV+&P(`+Wpwd*J`fqpVKAnDBC4-*w%jaEvO6YA4WIMiZC*F zg@zZ*v0o zuy)OL7uI$=MCO`9&OP`joP6fhv z0z)pKFl+C!wsmR$wwW~Q+e|#%JBgU61bNubL!Ak6B+#<-47s3}U>tJQhldurmYPqh z-`iqmEo=c$zI8y$1)Bv6`L1z$P@-?u5GEgs3O2mwl|fG?tNP2m%ixI;7RAOV>|o<# zi@WLKRSc-Ju3!^QS^=#1tC#!}xhP&I6w0-MC%l7rnIE!X`jP#|*FIJIBGa22nDoJ= z&dLcs2KKIoY$9jODjnwJ>bXPV@TSSY>=!BtxTNKe)&(|2TIwuONbSI4&3CS>fjo9j z>p0P1AU_@?u z262%7Vi$t$Go8$KCTgs-*=z!J(G^L5%?BWf1PRW3z(@nZ5JUYnA8;x{Rt0kA1Ao{~ zR<9(C>aNC!9jZSoO*0^(mtS|<&Ldzj>q#}`Z*F_f)U8)E-Uct4ix;|%5?={p<0MiU z0~|1(_2dnh_BAE2wnIJ^KwhVYB>_3GmZi^3r}fZ%GRSU~YG7xF_cVuwxYY;`Hec>E z3SHVx|DnGpmO_ss`8C-!Gxg)G@AbzYWp91wx?s&J(;l>QE_vY;rO8kF)@k>frS>nK ze^P={_(1}fj@7zQUxuO<9Wu(rqYwj()tbA|oWhD@C3U_4k8dB%u6z^tSMJHC9tBt~ z$FJ4Vc@1Vi-i8C=00}~_XT#YE)tsqaXLLhKo(s(>a^W%83hKcUf8QOSLn1}}<_AlM zK@xT1F6q_p*7)n1O-^hpMEx8HdZ1Kis))FH#|%udP-z*Bcwdz+`1BaVBJZ8Z#ZbqJ z#h)dJ9pjxsK1SFwnJNB$n5{ii?VwbDk7f|M>bS@`e=kD0kC}fQa4{3M?DH(oOQhFi zfk=3*c#wPX^AqaVbe#+py4;On3yQctHOe_6>aA?NbGK-;zu^u9q1yrPIs{m@Qzh{A za4N~0lmZ)1;t@>1mb76x*3OgL!PC{}`Zcsd`Ue;CJ|?DWz}y${{|=YwIhgfGjS7Uw zH#%P4ld0_tY007;S3NI@Jt8b+^~t3I)gqX%7wE3FKl{UqfpIWH_eUW)HJoZ}2|$IFfOj>Y>8?(})JG+G(WU0drkz-mI>h)i`xudY_#&VKgcOu4)KnoCw&z2D@~ z{YTqBjb#x8#6l*`HXcSSxIg!37hNyhNx2KghrjbZvKLOHx)v9 zDccWE5j%F5Ep^mxDSK-Ft}wE#ySjzIJR7X_PPUn8-dh@#OzKI#^R-j%CP&B&UWhrW z`&xhfeK_(V--7SZCvJcHk|O=WrMu(3NnQ2f)z|_HTz^8@iInNN`QSiBt-6S#-4n-b zu&v%?4R0s+X^rT%&ZdiWiUQ|*aBlX-MwO_%Kb-DS1vBJt#^_Cs2c}ZYHz{>ZX9d8! z!89TyM1IsI#jO-a_u#e43SB7Ro>-oKR}V3BB_^l;k2JA;SbEML{8)xhC)6-Sh*Uph?IfHL=9KqvrfzJjUDp* z`9cG-+ZL|dn_31Mh^~mncnzC=s~+vuU=K6b!u*MTA=XIr^hj9I0pMlk;;YS5{vVaG zjas>0&sS%rHFerQ#G`Y^be|1p>FLes4Zs${0n!gl2{dv0W&Rf$7sXtwnVPKop24hh z((kPlcJ{`qN|OeE&Jkl1`B8vI18EdsH-74AJ1|#m!j1{Gm>^$@&vX7FeyhLMME`0) z=Eg{w5DKHQJ&K;+aON;mTIkUAXK~w~?opD1oG!m!SPvx`YYiIiDUK|{ZWZAs?XJ|t z))7u8CfHj9oMLQjE+^NEsI+;%u8wSNfgk|nA=b}0u+~fiok}K8w@_3|JWWYt)V@9z zjZCtmi14xh?&h*gpRQPc9`8Slya0tlu9>k;TN{CIWjY z!oq`V6U>tb$02B{x69&>TSD*xk-ywOt)X8d`3nC-WPou7Oraq+#!=3!knZZ~B| z_GU@k5-*84|FVqQWYwkJRJvM!Ab&q}b)xfXcFZJfc-F{rlIz?Z$o1x_&~1rN)_qE^ zwf+n0#1D5;95TVY;Cmv%^<&=OlF2iLu1$|lK5aZ%UGmS@6l-VyUB1uzs8xhHbqL-4;z?CChEcBZ_+Zs0$Kj*4d1yo zGViD)C<|M8wB#80=ZG!Ar4}aJ33ZnCb)pY>?Ie-fFN5=fGL|_Oo*r#=MQhhd#~GtB zDX;QYE!O+($y~bSlJzK)?!UQia2b;XPqi@QErm>Pa`a5@ZBGf`xng>2=oaRpyh@v9 zu*L(F-2A96+kWA-6HP?nrEj&NLoatG;H|S4_?{ds)f|F5Z+5L_pF13Yb8!E>`kbNo zrrQ3ZyN*RkLiL-TDth94OKA0_L+jS`qqhU=O7no2X%(`(?#c{$+(Q$@Vfkx}7WoiY>Agm-;1DdL(bMjeL zRj>#X#}N+yCC6y&f`dm^Tq6560`r{J>wl^UsSMDeI4i{5!%-}tl3pzqVT->aalA_s z0n$j1p#z@oL-<#qn47l^d?dgqU0HTfth&d{kPl)SOBfpZFnPstt=xmx(PA&e9ygA6 z2bntsad4Q2tiz_O1GhQjW=a-c@h?A&RI;SoBcFsy&(eUUVw>}0b1eF`b z$FdB~)KB67RRUH{{ezVvlMf_3w!gwFawe-7$RF+Lz7oSiR-Z8m?V&rNz6 zj+cJDA3Ojg$EW4<4{13Mq?z(i>OwN`H-(-{O7)mkHby#KaxQFi$=Li1p(6{>i3?A8_ zKBlbUK#CCK|whCenf zZI^7AE-uQ5C*_7mJ>~w+#W>Q_OuF*H{ib&#-p6jLhJHyK<*>iZwXg80@AuDP1qat( zU3x}uSCM{awI&#i4N=?FFUxS3&9EHFjw29ClX3#hXiN@U>c&0?Z!q-3noUf>4^=CE z{zOE&eD5dvOU$BA{89%dmA{9bAD;hcWQUVE6*5W?$9yf;1z4#!Q9qk&ykhY1>J5W!@q{G; z0d8{zQSpaw!~Ty8L&7bAgPHk1?8U9WGwNh=U$cgZy0eNBF z_XtHhw)CCm>qmhv<6kZU7|rp7)B(dHPC+<}kcfc5R>ZPaMRWG$F&(*NMGCdFPW~5j zn>l~AC$bArN5jHYb665whlhhl;RMS8^6eHf9VfP3#U=vI9UB-LBSHdAGllf2;;!d; z#l4q+z4lZ`55m^+jzE^GxIu+$x3J}|UivQ#wT^@?^zswhoq5hiX#{qIY2Q@n=~xKt zWBaj{_+0xfi547((#cfVa!AWa@^`L~$Zv;Hwea!$Z#>8)fW0JZY?*vS#u#%~5eQ4Tob!buz2Dwg#xz^^ zL5kJ)osjW?L7agC7KQH~{B&MLLwP=I-tBl5G{JM&5q^~}v1k~5BH>Cj4cq+hu64zp zl>N>wBZygk@s7w3{-5UvTwJ?19dxm*^FhN$J^vFD@XMG_mt~4KnQCwKWpUwmE?Dv3 zYgv%V=psC^{$}k_Wi;eJ-2)FT==m9;-5-xrh>x7L|1;EIaWzbcJ!XD@e0Wbaz|8jc zFF!oW{`;Z+7mt2W^4w$^6zB|tzA67jBm2jRA5J$*thMQ*k;whH_54b!|6b#db5G74 zHk*-+ylj^1s)!zm_%^(he)9^k`#aaSkrVGH&pEm+-u-$(R<*1>9Q z#4>yl?dvQp5nYxaJ|=K4jLr3vJQw$LMrd>UOFtVQ!T7c;>+=JhU8o`(|dN9oPy3shOI0Ee*n$)ng^gBxZX5U~?UV{&RdgCF1tn z>~HToP9VW_&)O!-O;*^^rDxV^r5QANMngOe7{2ZjTQ_dp#+;wkO43&wHC?Jdh5xaH zpErws({6GQWY@OxMB={8tyZU`cctX!^rwlW=4Iy^Xvrf z!)EOy5&T+tqSsZ`g6ybqSemrV!T@^NRm3mzarLK=dwldDL>x|b^hU3z{KDPdJ1rwx zR7FjfUDyLHb>1r#!9Zj0tZdlfL4K2;zB438rX zznN7|!50XWx_L8FzbMd4%#N;(OqhxC))+AO=C zmmsrU_~VzvvxrxIUYUz_8O#7fIoU69o4Pk7ocM_i67W4@nE*nwySCrb=I99#bqE<> z$aCk^>6tHj^-mm2hZ9g$)yR4DW}n9?%+tv4e z3j^K}RdiV4Y%G6xOcx0X#6t`=hSv}hnQleU`H9Kkf(=DPS zjUZ?_Cj!iXOuOR%$q+%iHN1s^x*s}`z9?x87it0Guw?g$KUyF$b$Lb=mEV~vIx9)~k01o@` z>kYIvk?5I*av#SMm$0kA=iwsXdLkA5%KF#;H47ZA!11Ra(8}O%j>{u7d?)Q4?mcv@ z|2&Q@sq^@tm8m)2wtS7l@ychKsx6D>L1dMZDt>Tc1AIxO$A54ADSSaVub+ zUZg)&>m-`4*?r@wZs7CI!^yHd-kR~uJ2v0B239v+eTW|QPFl6MgNu{N#ex)rh?;fc zupUy*0leNxZhA9VF|4^c3Agv!8M4vAMmR?*9?KA;;XqdprdW%`qd|rcrA%g(8o?Xv z=17cEZ_n~HM@C}+*86Q=M;{MW>*==*kxQ7+c_e4>j1?Y}`Pt65J`|#Pw=ygCi@vf} zwv#7OddV#%T!(Jaz`M7KfWu}?8;5ue8T>Pz<{?yi5FN^FZPJ!u-p%XKcPM@u-* zguB&_%}Yzfb9T^iKp-n{TC-ahdq@UaX8EtrYC89RB(((OvTuW<5{EVyof^3(Qci3-QYr|kxK=2BTM@d_= z`cu}JQc$n$!=3)4QiD)VO!}^VIg zrz?-Umu=Mm()_lpvK@r;G2ZGf*6SNP3)AB~WxC8M8=X0r6cAwT9021P;aVUS%nuG{kkEP@RQSA9PEEvBL=HhV&vRC1 zZtQCLrb2Z@L*QO`$iQbqh}@!MYEYmrCk>Z5Yp3cR*VSZHaHAJ?!=$;|Nw)L1m5BZI zYat5v^JjlL+}rfqtx}0- zunoCf<@H=4zzJWH=2A#C7nz3+vu73kLK9$Ldvs99!$EpjyL14hE_|Nf!HdCLEgkS! zm?IwO+ceu$%?~U(wA<&%TmEv3_c!#yI0I5xDEdSDU7=0I*${ zNoWlx?;W#_i{=KqWm2W`4Xxv2_lfEDd1gx42_dT9LUc7(nARcZ*=`7sAr{w}Jlak+ zx|z!rjXyN=X9pkVShoFt07V=$ED%aw?{z;Mg61 z2~Md8Hibp)=)x0utEH&oyE(Zb_58{{H+uu1`63QNM9 zlD~{I9}P#^;)%6YdNcP$fVs8ajI@w@HTZW_Ew;_44gYe@p`WJw0m%7qZPIauR6~(( z)uP-mzHEVxkIlF0QV*yo<3;+xhWR~F%KLL2T?Se-^j(21*OCr!TUEAIO^lKY!~uQY z8$&hlE#EGQ^I%G)2A@!M6wblKlKNPJhaMVZcTG50)8F%wt}E`+=FILfX^-BMn)O;!nt#~1#Y(< z71;cA0j(HM19bA{iZ7FC0Kjv$nql4zxy(UknzPFVLK^!qy(PaeOb|Z;@7Oo2BZ#kw ziz}k>UAAs4%4`(A)DLEY`}9poY3i;H6Yp+) zTF;XXD#y<1mrDd1l=>ObSGC3#@olTO9>74k`#DJQ2&YnKH9hW-)zJ?W0)E>^X_d3f zZ-#R{PC`uSDC{E-LyZW-!%)*x)ydS2F1BKU76Fy)vfu(?&UBsJKv^ncC__18UC1#z zwJ(!xO-b|!NuLR~lK43e#p?t2>t zcmXh*kBHDw&AR(PB-_8^J1IN<*Oz*=KXJ`BfYIz4-;O;6Xpg>RL?@!dO?SuB^1M|z3USM`q>2FACX^!0! zo2C9w23TpSz02}xM(t|4QMdC>IPm&?DBIM?1tcY(gL_G^3c#lLx%?qgYM)cCzt>44 z64vUV;4pZS=^g&nGtpkz`X>BuHC=3U6pWuGBXh=vbV&Yg^Nwo0uyEY!_$tH{90=`g zt>?Zfto5+26{<%!H*qDYXfu>D>8E=Zi=RfCrgZwH^D21SduElZtMlh8`)%Frh9AI! zX>?%}4MSlJ0sv7UO>iMU9O%bQ?CfnM@_d}vSE&AC`vTbt4+Z>R?7eqfQ(4;{t^2;O`?_qh-W!)|K)}Q(k0~F3NS-Wj zmg+j)|AoQD;^wIHfNI4wL5<~ZFI+^417tGLlKfXuC?0Hc}I7-RDj&*k@ zR}6cTJq}IC=GeU3eNtQ4s?D8eG?@UX_UC#GF`c9{&!@7IeQS=+Nb5posDNO|0)+f{ z@aY}g{rX$4$}UfHxbv1}8fJ_?ZVLoYqEDy*f}jnPaomO~J02dMxf^|DLbeXBX|^!+ zpo~3I6NFyPoQ}%bR)_T3P0XzgsgKT&^km*@& zzPr`z;g+>te8>#23Jne^8Ff*#yU zaA`I%RpM7#2k^hxUA|Kl@q6{j!!For)ffE-IWLlq`h2bjaI?OD+PO^WGfyu^`u2-C zczLS~1Tec##;PtI59s%hCbRsX?hCo^$m?!?&oH#?DV{aDo0&g2INgqS_=Z@&in5x( zjxmkJ9Clz^bh7=^14aoOS{zE8N}rf-n!0(}488`~r{V7beZOyDc7d+o&l?ujsu6** z9t-s2Y~8l(=T~_U#X^C6EXS1Kv-|TYH?PzOB%|c()FFm&%kgwGpV(& zZR0Z;o^KFcE?p9Ft?rh|`p8H{PrR3HLZy|W+n&NSQDd<5RmO@`xGRuSufF*B27r8! zJZ*W}ehO?p-7tM1M1H5s4h$EkPXgx-*z=8f^eOyxN7@;4Jkj%B?Max87 zj5m+e4$5}XYTQQ5%`5MQ!7A?KS*?Dlx zBg0Hg%urokq3k)E$CCNnrYUaM`%uo!EWt%BxkHmCZv|>q7Ool?!ahMIiGg^e-3-E5 zMBGrh_8yM?cBi>Yv)g($*d1I8RSVA06m7F5GZ$r4-V5n^+3N}NiMYllfeH~wObXi3 zJ~b9h-X)A8IJ`zR2IbEu7&D69Ed89K?o2Tp8#P&q5yrodTF>&mcrK@9h-#_muU9dM znBbo_h@E@k8dvKH(O-SGHX(LOm3-rI%*| z3XaPBKmmVno;71Qb7(+?_COnrHG#0kjWvfNEsnSXz@2I`hj#|p#z7#i$l1Vt3L-s` zUvfq+yVSq}X*a5As)aUe)^eNGy)H-$cL=Evo6DK?-~jhQw_dQYTiiG5-JMR3k*4a7 zAj9`#2T(9zlcxMb<8kNMHTMEHn;$zA<3i%$^2aN1jgegm7Jv?U*4Ie`XX<5E9S7Mb zZz&X)UDJQ~qT}kPD(L;oD3#|NdQNY02Pcf>5X`51zlIu0Htyc>8fgwGxH<3H_d1Ih ze{*AV1Kjeq5nY8?ljIxp$+vb5AJpvcT7ZFRGw57n-M4*g9tuT$gk=psdHROdc;4Eg zuSrBJGPuO%0u{L7r^NuAxTbVAWPJCUj^}B8=R$16M>`MoJp@1M!P0(7r@VD-nvYBO zU`vP?4e3a$+2&3v%w2N}g_x_7^barmg%wXT0<=W17+Xy~50ivuUQU2aGYJsVNeSIb zxphmKWukm^zti`KXev3;KA1KUBwSgbE^S@4T_)@jDpXq0w%zW~79W3GU0R~?MQN+* z8NRLNrV+fRvwhR}%D`g&z7AR##&WO|ASE--?;CBh6^Km>M&vm|jX9+AQBTc>haxP} z-BeyN%g?)<<$^$DBGNf5rg8Qj9L!=6aL_~@m=pU(+sTLZB{8?hGmWkeNz3bFQPU%+ zbey0QYVHtuEBaD4a~-o~tXezXwl(#e7CFM&*`S7yQn@8zORMo~byJ+2QcSEaF)+l6 zT>1X~sk!Yny(^Qi$SP$I9&NVs^(p}F_-JKVmrDW+T>!!t2pz{uWuOo}dw1b$I&Sdv zuEdFniLkxu`J;RZv@kX$LoV5WWE_&%w-4odulsCYUSGm39OkMus=UZKix){NYcD}MpLOsZmJD`BzJyt-i!{y6Y&7oR~Cj>)5`hfw90O8&#OxCw^!SCPH%moIIuOq_@fk`D6ka`A1Ii+F8t zGkIVOK9x7^GA}w7dLRPwS{xF$rd4>>bS&OGhc65Ek3Lzg_`+cP7hTkgXASW6+BU%)Rp?K zRe4^iSmk=g$8K)+UB&M{noE-mtZmbA=Hh|r^q(0N3=6*-%MYPLZ2B_6Wf=vc#g%%U z=_(VKLrdPQFnQg{0dKf7e+Ff0SZ5vc=6_*eG%Mbrr+FPq?q#pmE_f)FZ<&sDF1LMN zEE0ggb=GavYD}X7T$78SvgQ@|7ng(5Dc&in()Lm+ZPQC!u+hb`+~pT1(d80E>P`H! zUIB_i*E17}ie1Yrd+e%rr-F$qwv072fy>x7%{RpuwbGgHtA}2Fgi4y5!}@ms=b;TbbXh3%_GmgQt+dO>%6OrOv-pTnr!I{zLNOKZ z-iSC0rt+i-lHmY%S+Nw9>H(9DgSWrl#^vN>rN&9ev|jBYZt(%ipJ1OmxlMt@m`^um zP)$M zptKGCGd5u&2)tYOsNkJ%ql#VDI5{6-hQ*}U*p%yBiZhA zCup+UX^&3=ze+AIi(h9D{p)p1IK$Z<<&@p>55}3VGupM6^513Gh^orzi1vA;tVsxa zxVfaSbAYfxbBbzcys+DZVHvF{rOT|cc0jb5VJ10(6PG$BsHmfxaO)Oz_CcI^Gmz)K zW|6WrM031V#xk`lVt8A}y|f4hGks{vC)C{DF!*a5oKiVtO10?mm>Vb^#)&L+V|)au zMP;`V@ri&Zl$Z7)@PI2*jl(qiNi*)UC z+QJtGLyKc_8EFr7IPB4UI6f#oXRKK2xj{F4;t6rvp*3I!+7xG*BYn*ImR0HC}4amkHbXs-bk;Ui3l9p2(>0aQ4P)9D;of( zz$hLW0jBxQJs$=+p}PaOY>HpKT!jG?5}!tLd3EbrhBGw-)PKUI`S3kE)p*vpcmfLt z5k0GowMXqiiy2sl0+YmO^}wWB#-)!Um<-Ax4`{D>?FQP725nlS zRBc(LUmV=gTA{>|Zg9JstTu89Qy>~o(xZnRxF0|f8BRZjwmQ5Y+*^9Iq9Vl%ZXEXD;fhAb;|Z zFXq7lHmW;n6)xX}fVEZO34@RWafd#{%>^vYgsP_D5^vmno7R}lYn~gNl*n){^4pvK zY|4jpuDg4FcFIz^SLt^Jo5PeRP4u*T6~{QudUs_f1~?%y-mn?*i>oU6zm9a}CM$zB z5?=2CtP{safm8GJh_c_|p&~Puy4c%n$C;;34V*MMiUc7)T|EWpzV7DA@}jg4G?`Wg z_p<>ndD?S^^T^-6UHo5`&NX&yE?m-|I&YEjC$PdL(R#0E)?KbuzoeVM@oqC4$b5f1 zwGZ<8FI=j&W+%Goen52G2F=g@O3C>TRQRH?>8p>(&tKcIyR+{ zX*s?gleP!>im4w@WY&rf>NUBiH5EY&+)&uplYqiS0O^bu=qRVa^qItEMg36+jPmrq zK-*1W>!lpkI{-r`J>F+xU(036F;9@#lxdD2mR;ai=V#7cV}7))`%^}$ ztaa3(v#b|;^l_&*m-=f{-FXFR8eWuYnAa!YKuhbAn+!imy_#o{%q$h}G?_efijyWu zFs9c!puosaj_aNbhvrtya2?8+MSX+AN4C~LJ($T zdYKrGO$~S+KKQxX|FZ07;v$&E@~*>z4y%=xQ8Md{&9OGBVYB`U97#4Li)*@Ec`}yP zL78pz@(6xbujOpccKv11fT=|l9uFi3Bgw4h8V|zM`ZO{)ZJIm!>tbC*$_v26xc*Lc zm?L9_f-FzKWzDwqp?kY2_X7$aEI7d1-;h^(%oZOd)Ddt3cMEHzs=Tztz@gWo8V5Xy-iZy^7 zn`uMd1hbg0qg3`I4Vj6-hlJumZXu$g@A4OfW2Z$2WmfyDq5eL@+x3>z12VIAle3am zMQu_lGP-)xWa||Xu&xNd<`m1=nM?pn)=)^T%Cz4_$jC*jF+!_I8pX2QnLJW?z3$M) z;66-W?*@cGx8fUn!&b9$i(VPLgk7x)$|@iG*xZ4o3t0Ia*#S2Wf7dhHZI2Q;g^-Yt z+*Ey-Qp}?rYIjr{UEbf#9Q;fDe6=X+a{^OX7sf{LP6n@BgiyLg^$M_3N$7BR4OmD$ zgp8ZZ0>){xfwyKNSAR%oiGWg%8xT0V4oE<-J(ta!ubIgr+A;d>ECjWSE*H;qQ(Ni? zl+jQxlrmfAc|G!^X7d+@k?Pld20zz4o2cd#-TnUZyQzGAwO!!{*T4p>j0ZQ>SB73b?`NRq~t{Ucg@mzc~at;p1z$ zqWtThYsaD;GG6u?#%r|Ip^$O!ICZm-YpC<;BlmWLs$!w+`<0AGPt4luJl~2C*@Oe~ zan^vBINNTX9>-2DfsoC%!@=rk@|f7BAdfs@5TSIcIzZ__D@Pbo0BtF;kPyS^5|&%} zY#I^xDr^uAR6K)~>=rp?JL>K6e_koeBRdc;Kj-@Kt)tOvW>YD|q}57n9Bg}=dh<_L ze9I8MRJJ9C7v`$NGT*pB}0#q&@O|~ z-wt$}%Q&Aq-)1pu`=Nd>VtnkcgCIZp$EQclPOA@m8&o!lwd@8>>kJa!iKRD>nv=NL z2fV@n|LKtF8rL&Vd*ivgIIVD1nsCi(&i%KaKQr7|_~W0~WZ>jbKGdA!ewBcN#BO}p zRsFtp2k|9Tcs*jB}y%c)eD0;^M5e|~%zu2261R5T)0>ntOo zaNr@7)Go5sEpFbqW?~|?2!Y9?N<{wXcx$bKdRk@A*VYC?mb{w6;zKn-FI+$wegjLl ziE1Z(rbEiVjEqVp#~ZWwRp`Tb#bgtEyB%H3a;ik{!*1_V$B85E)K%rD4&5}&gb#9?&8 zIysc5B4{B-lajYi^P)AUSXVDuIjv@cA@N6Rg%(aj=6k;fErScP00CKELUt+!)GT~E z!oI|ue@0h*+FV^(u-*5#l@nhm`NXU#a9GO=Z)KHV4A=U|SDfLj^$;K(0C8VmL#bkaQzs@o+ zU|7vM=kqKybOBk=Pr9cyZ%%{ue zjZ`l^b`E#E(W;JYVyytVIxVW}y@;2w8ydHdl9p>bifdYsRT^7bM9%f;UiU)qmK>Vl zv2WM~wQX;VH60JlW=N&`1Ei70oui5y8WZl6qUj7r!B=35FAR@zc8tS)FpqQBUjGSr z_X>MA0(Mq;KN%x>5Q7g#dlgParF4x^^t7?9olV|Qib=8;>W?3We`NRpAUZ=Dp>?P9 zUl-v!1%9s7jmhgNGCy*>mjSlc$Uvz8Po`fk9=j;4514fi6GtVU$@GbueXL6i1eu0g zx%rJWE4kb^IFVLQ6O)GHEYz(I0c9cSt=orp#NZsTd$5tE#piUj9)4V0Pc`!bG9zU| z)n$B?d9qxXgj`o}t};;k9> z@hKA@;@#?jhTMw0oN^sr*X8GQai%)v&(i+UWPh<436l-(jSx%Tsi7uXyNfOql2ARr z%ZT<4>xc#kr2^$~iH zWnvIxD@x1nybC>&{R3jI;#Tgp&M9l@mz{T@>5~6JZZ+4gaD4MU=t(}58VgR&X>`Rn zXQAwkLROWjR&X7bu7?h{Mn1_{sW*kzD)cw`pxZnEL|TAITIa!P^+0N*rj*vx4pNs^ zRnnV;{mEsHH77S~wb&xbsr%49;$|m1U|higuiO%~`cGYD@14k`$#^4Od6ZWw21Xt@ zMDRyhg$SE5BGK!`%9~ZP7p=P6lCOsFKE}N>`;@Idy!#=isyrl=3euB*X&=^u z*bAzk#B8oYq^i?Oy`1SJpMj9jidd?y>C}9))JJ{ED?j541o-oI6d+wMtg$5)Z`P|< z3J9fwN~DP$+w;lQP1O!0b~?Caj-s#c_BVx|vQC4$!rBhv4B!K7TZ}WsxmEN z@URXgQZRVJg|RzwGVoMcBJb`6^}-uny;XZ!uWBgs~E_~!n6r}x^fR>)GhqJrjU`x=K~IAa+5 z_0@ldDrK8(F1hYMv)Id~Tj!@!`qNUuP7UvM7@{4!B zo#%P-wXJ`*aITTm4CC_ML$L0*K(fBCWH+T8n)%!W)RykNI2Ek%?y>3PlqIG&7#!YA zm+3;t7w(-DPz6*{u?i@JYEbsJsET7sh0D{mBMZE?uS|jX7ltFN4a&pK$diENVoS$l zDV3FAu|bnZS^;NF5z1<&)NoBF6-{}tZt*;h;}Zo?XL@Do>sI@&_~kI1!pV(*Ks!zS zoQEn?83XYyDTe{i?7ut6Rm`ULbNnPHYF^}>)uyT@n%c)1sdOc9XZy5e@VyHdNOddS zUkdnb-mEj=qiBu7E z{G^^9eooh@3NiNFeE;y^a6k~eFPtza^x4rD^Kq}h+t!d+T6%1oW{gJjuOlL8WA3yx z|C8B&^>`tV|MA>divQ1iB!2JsT%F<~*&OB|TXAUW4KZDHB}0UfJ!VnO!e%SXy5OE0 zdB4Y1w?02|Yjg(Na(K)X#VK%H({9vH>$X@9B>i_`AabKz=8@#|hRibBwL^fUKlXd* zM^)-~M#T}=l?9oToF%uN{o=)Bt{s`r5wqz7)-v}whW2vH&Ux^il7xzx?JRJUyNkyL zP2Csuq|Y_RkDD8lKcCc6=O4Ky7LO9zWvaN#4y!MbGCY;w!+JCC!^aQ3zAy+uve-KB z9v%Eq89ha>Gk^A71?6YWiYkt(9nP=t8aZ?sRe!<$1wRuzt_0 z;hLuZ*Dw9TN>9bH$9)06{pV3iXH{aR{$*RfL4>|945$OHGwBc4PbQqt_DmMVPd08( zVo>wk->$6&143M7$B_)(S^NHLaxdrChT2inhp0~3?Q7qT=K*bhVHiEt{KK}_SJfls zw{4HFBfa?T_$U_d003Fa`$1|!g}bur7jMN~$WDd>13@O1Y`D9~o5H2cI|7vU-C{&Y7}Cov{W$J+O8WJ;nBA|2-{o_Y zef|awK5lMpihqMRuVY8PFmOrUuPfQ^&o=xndKTm4(wu{;MB$UnY4oo_CZ$gb#Qsc)ep_vHR_7li!D^zqj|Pr2oo0aHY~*gR&dz z&;D08&|X2LaiITy*BMb&%fy? z(dWHztSX7I0WE5EpYn23&deviuA?5(!vn*Zl z#FLZ#;xZa7z3FkY%NpC1wsF9RuzL8RVsxKb8i`*i=%m5r^Y|c;NnkPeOE1P?JWLce zwF)U9i54mDsOfe+Gpa(!EO#2>!*P+To|4t+xc_L|R3$5Sp8tLIOp}>@)6Dmk__3I)+}w|JF7X$KCCs zUA!2S@@RrlI@}BJi_vs>=i7bU{WPtL`+?5Cu_pNiBYPp$(R>(D$*qb9`QdU=V_c^Z zgKF-WG-@^o$7#q+p-M0@r)Y|Fji0PVcvYvEHSstsb~LC3$nIgXj4+KVJjs{Uovn!d z+pTa>N$_Y#FpTLo0h@wPFj=o$zou zu(|k94;bmpv$5+Y(%6_3nc$_#I88^FwgUfyKQRZb(h(_sHd2UMaV z_2wa?0jl$H!}J8qP&F9Fs#ktcUIL?|17uK%85=Gi5;uogF7TCPP+GY^IxMUAOkRYk zL8(B{Dl=*Xcb!AVwJ~{6D8mk)SkRahmO*s#7nzpQ(vTT4rY|R+B`| z067Q4!y|Z|hrM)lMmlvg#**$*rrjw~EPza$Os(XRXM!M(5pFsaWV_&YZvk7;lT!h| zS6kj!y#mF{Lfu|fj6$BhITjXX4`uHNbBW4FgM>@Qb!MSRZ0@kCc2u)RUc*Q8c~nnt zF(IA*^&=Z$wu*iv?mB*Bqrhy%C_i6Y+#8DIsd)7su0}Jzq}^?89!Ho2MXo;;1y74w zISf^rm%37=NOzKg!*Bxnur~1?rwY=r{Dy6*Txx-^%TF_ju5g9Q2$tMpg;zy(nAQ~H z6tj-^ic^HHx?X13>YVXk#;=2=F7$ZiHN@15#KMlx3Ez0g&MOPV(d9k6ews@1ic2gn zrN7zqR&?V(pVZC*n<$bUSpY+ICST2}!GKVTJ-N@E@0OpCQy4#i+zF$ads#E(8-8K9 z;SfgI6rEnccCx?#Y+^OZ;V9WtLP;?xDfo5K$^{FXWhl!f&vD1|z2TL4K4Xsh@UN@OIv9D0;X0#13U~o1z z1?R5h3p=fJ(WGHI#@Y?q*7;1e@#BER0!{pR69i!r17OHfY&nj*)=&+liun^X%d#;x zWw%tzM?)rq{&mG*vj!Nn$4$*#9U(pQX|`2Q_|8^Z*{zvB>xKdwS$aWp#T#IIvpftm z`k8v@gF%hOXt(5s{OM&#qQByp%%eL+{OZzs8g>1I=p+^%-wJ1fn;Jru=hl2azhP8a z0gQrkSZTLu!}7?|olH-wCZ23Sf^qU#tAONyg18p8<^A0~E_VoR#xm=ORWuu*)eIk# zy+o*WBx0NeZwCHp1x7%({eLRhuZnqyAoiQ|r;vz=X?D}rAw)bFZ0nyB*x{U*w!JL> z)(O7bqf)T!CK9K0ma~FR4u^wyPJYA*_`CglA9gO5%#;;qEco8#PB|4p150uO%WQIB~XMLVntqMb|G0(PmHU|N~tt2##j`#B>kYOpr`#t z#G%SLi!L`ME6Zd#7s0#8_nPe&Zjn{eLOl}FenmfTIAu=KKcP_S9O?oCtLwG6hF-AOpH^zE zvZkF+gB>w)OoBZCVW2qz``qe6LuEG<;G#*fd0>UKkJr^lEYbB&&+3Van%1I6+!xbN zuQ&$?QA>@=`pxcasHl_+kYy`FNM4XVg_a$?BmgG9&astc-(XhPXNeAt0_%~Os{14u zlNzY*1bx)0sV#;VkOse+EJ?aAwISNo9@AO+*u+uX$hvYMLz$!sQ!_kf6$s6k4;plK z#$$8dQr}1^az70V(25_XoWB}lHbN~MTVQsJmUq+0$l&40ObO}V7lpcGfJBb0*o8c0 zScA1;R#zT8p)+Y>l0KYf>^-cZ(%<2b0swMEleU1Y&n~NumfESjPjyBLlZ+fWs0g)O z*CNU@ooD0wpa?Zxu{I%WOni?lrEtRjN#zRoEWsw@?VFG!BGlMCnz-Z!D6JqAnq|@H zNaPjQ#P?fIn~U$1+lj0kOqS}H&8>-y_K72m~=XtCx$qgYYBhUfO$qnIm z>k^fn2p`;i6wxXs#eqKYM7~G>+fnk%?xaTPI@h$F91>wjk-=D4+8AlNJAC*>lh^ph zPrtk`){FCeHOcv`l^KtsxPG?iG}OQAO;1;82EO+}?slzw{V^bj^u zmwu^jg+=w5hp|FaIE&xawFgsquQUsIO?f~Cv-f}gzzMxIQ%#^lxGV_Ff%r!7#J~WB zNs&he+0~g=o!wfAbZi(*b3>~+w7EMteQ0+$co{4#b$F1_*L`_--f=l6P&$}tekbH2 zh(LiyXmS#y*7ih1|3DeN`m`%q9FqR$n{G?_oRwK!X>)UfwlF_JJkdOCGXoj?g#i~J z-b&Wx3CY2iPvGRz-H%Gn$`o5T?~1izL>@jRVr}?yux|HRK7p;0I(?$7#?1xR0HMzT zgu+OAAlw#Q%lx@wi71Rw^y|I`ZuPKArew$>_%t?;MOkFMJfeV%&lk9dM)(RLg4`g^ zM8E?pJ10d88kJ~ik}#aJ3m(pAYYOPxeRq{0D1lY#@IJzdQ23xm2y0)NHuE#rAF{Bn z#vS9s)p}rZacwymr+H-7zBcSuyT13BZr++LNscy`#utx*_y-YF7Z@(IJ^qgk>p5_G zwQP~##)kLJ+Y{}n;Dw_=T<85iyC;%|V)pl|ul$6v?!s)J)I;XpZ<_wYl{=GvaR0Qn z)B1Zv$eN%=w|~^Z+t1mf{WO*4SBE;aNQH4fe~}7obG1%6FGX-CN$0PoUFAi`kDRTl zd2J4Vj=&f8PAY0|6p=pmb)J#1E`!HAda9y!ysxJUh?FjFb{1S*IW4&7FrRjfWf!tP zZ{^{i7SIM=xZt9#a{5GU7Km{tBz;#&9{p>xvEZ=wYGLEL)bWh^Z)cYm|1rjY+iv)e z6D~xO0`#iROr7V>zCXm=ypnwA_xak7cTPZDAJWCf*LqicR55*Lru7tGHK#LeuzDj; zu7rJqiUzhus_+5{Qq)7%TN7Vx;GfWg(PAgr+<~PX>qVWa(JvWpw8q@j+OekVp&xt8 zg#bQm3xc?UPxR}a21s^O^3?p1V!*3d86{(SS_uU3U^o9!Nt~Ly_j@+&y9%yf_Sab- zK#E5QHob3m>dbI9+x~xV%zvMCQU0Zh($m$$UT>Qewyr07k+*zmO45?DJjxX)*~_Tv zyzixu$*JEVkPr44>wCI6on95(G;V50)s~Yw&^)fo8Vi&C9)UcOv>CxWTJWE#oD7%y z|M+k8_0sn+;}}+{_AGwQKUw@kuBVF0{!Y_6?SEgt4&C~mxA2joxvx9P16VobX=dM5 z=&}{v0e79q7>=4W@jE&l3an^@AmX-&zgH|s}>@`8-9-CBW~SD*3p z<3G-fi2tLP+zrLe=TI0sj@!;;vptHdMusyUU%+##+P$~Pa14J(@(Y7F$|yUQkQLLH znMj?n_%mo|Vr4>%A1(L^Y1B1n?DKK29bDZK2iqONJZFKcO>r}0#^L!*IhGuXbLKzS zm9o9KAQZ27ek8sau1pR8oGg`6<+ExoP+j4KSJdTm!fa&dFDM~KJ(G>RozyFk!KrpZ zsYUV7CLi7eWG#z#g;Ng_)F0f9Du{7v_G!;sj=Vk1b~oGqYUQw4)NhLk&5wiTWMuF> zggAYot}Kt>$ED5GIbR)1Y{QKqL;Fw;H^NKm-99IZ**pOMTygDT4)%iQ;eLs9=;7P$ z3P0)?kX<6cSi|M|@~X`KEP`A>L+OhK`I{d)^f`Z62fX4YcXFvAtBg5$aJ0OazUN@9 zrE_99tJAowR3!|iW_zQ-Ax$I$-5nEK=|6WJV_A?cC2yOsh2kMx{5_OuI4;sKHh(xkpHC}pZ>&scd~ zyx)1;gKNKX4jg45Q@ZdX>dE_TIEZ%)&{bZMqvlg9fP0SuDDdX?vQ!%KU#sBqtzWF- zzO>8z8g*rO{3y*L`Hh$}yTN!U$p!-==7iA=rP`I3_sR}rM+YTbM~TmaFj(2muuUgh z?GCfyIyPH9jsmKr7F^NeT?SUow;Ls}8Q;L-IQ)w zJCTQcSDfGSqq@s@P%ga>1y)m2Jvk@z_9BKM$y#o0SK_Uo5}x&UW5buudHmR;-)-MR zgpPUCIpG0*pr+6UJ3+PX3uKB`uztRpuIr$h-rk50x=ZSc4Xr(4rx;tX-(W58keKKL zV_h-DsgyaQifa`;kkI`Gj)6h_s^q*qpqF7F?%cPL*w#)eN@-FV??i zH)mL3Gbz8`4<Nuac5nl6rAoB-6_z6^{`qzTC$7(8IL%Ys_J17@Z*zZ<( z_?KNyn|xtYW>o0XMuzk4-N#lO5ukR3tERz=?;izU&!#f-8pwd7+IAOnQXT{iU~7M0 zy}|->8_uYp%a`R##9FI}jqPoXR#zESgLRl-rrWmEGFk5njHu>=&SWxq$IC3fk|i+2 z`W2{c7p39>r2j|G0Qz=J6#^AVyo<3LMy|Si+BdKBGP@B<$0|FMfYss6Mauf&Xf(${Xk8VciXYS!}FfV@y^e9cu=DXF*Y zpO^b^bw>W9=X*gTKaOf?%w?J_=H8wwYCA>rLv?`7DR@Q~LTm6~#1+QjeXT8A>dCII zVGkEY``0t$@AQSY)taM=r)+XlFcE`ecXmz{+ONH3HHOV>O!DF{ z9d*tN@6Itfq03xot{L`J?nfYM8pbDdWIYGNTF_jRsVs>yScjV0sY6B7Fq^@H)vMlZ zq!-R>AdtqYsI2#KMWRI?d%}t-8DNQY?KEycHFXq^-mdiP7PE45($~4s@poL@eQ&O( zfbGbej9AKdrg8D$tvR(zR?=i@-Jw=-Iol`Uo(VdTNTTx%4*hOd*N#$a>(!$E#qhXa zqMjKIMh1@-5kniQs^7@EuQ_3NF$>MOXCF(S9IZrF(z#RR3xdP^@?eA;(=uiQUl_s_ zB?0VOm=0@B8LJE|{f0xEl%1Dzq_D(F4Y8DTY0NHQ-+wO=1(tiRxKP* zf}P4$#nx^`wDLLRXFk(n&aza_A;tk%3NOzTtm)Hc$_fTh&CNT@QqigY@Z4jnnXu6~ z65kVCx5`7F51$xR)7Wquj8q$=WaWMs)V;Y%Zcnl;PV92;20RUvpUs{|rhF=WVvl|r!r?Z`yxLc9LZYzU+$24;Mj{)g1K0&wuWyQB*oXp@6{$Z~ zuFnAP(`#lqcCr@w>Q{fnH-R#cwM9j3!Fc;jDkLF_<)MUvZi?7QJ{(YN?$Bt7G@lSt zBDJQDL5)YHVG{8!z>V?QHLf`tu^C9Xo41jzd~X;joME-?tuE~>4Tep>VW7m?1Km&^)N4e||;OlIp6j4TBD{_b)bi zHE%hMrI|IEX4qkQY>;6ycP1adYbdmNHmAYef$=Tsd@zsCE^jE-hxZn-M<8zJR6Xc7 zB+ex7-I?|1Kzn5;$+f*^ACYVpx4RR);r==e0XJ@HNm}2>q+l}Cc3@C*Q6?s6lXP`( zkt`MzhNn{7>Go*rcKOZOO^MREv9UIHU1RGq6^)Xs=vS}pj?{a@se4smpG?gAupE0U zjdck^)a_FNH9`imf(O5W7CNMNA*ZhvQl8p5Y}A8AUE{>^aXt{^B=*KklNG>K#5ndm z_4P-BV9beVh!59Ze zNaXupYF&KvVpwfOJoX=GJM}KxxP6! zitkXiQa3cHA?Lfs`Bdq8aBvT*&jL*8)Dcj$r8GHDd7-`$3^Ui4hp;WD?5=G%)7!7E zTHPsgp{Qw7Yh&-*R7~5m08;M`6=TMFFpsz=8Nr?Cylyphs1B1W4S?UseWG3Rke=?e zrE}fNBvcK1?bx{FX)#-TsH4WHxwhoNCJ_T`c2y~68Vd>A#;F=@vmMD~45i!XpwqDv z?Ic(?IY|wt?JJ-+g}AOgf`>GW70E0H0Zt2XLmzj*+$*-SVwELQo$L~WQb>EwEAF4q zycqw-9{0y1Ca&>*peRgRlAoruN>n>1|P^^-Yh&Z-&z4bLpjD zlkXo3oc?EgNq_inZq_)N!TpVBE*2a%8&nJ(wU}vo;AxnKiA{Ey(9gsae1zQAyr{BD zHUwZl|GY9_)i z|ComVy-&E(_e}0e^2vT+3Dwt2OA=gf({GQb#}Vdmxh}6izhk&f0J69K@h8Yw>zyX7 zxS~!M(v11W@m~5#1yZ!qY;s%kJY4dR!jqXY4?Y!3Zm;!k6z_zBrr4q?hO6dS(Kj_4 zbDDwVG^@+5|4VkqjNZYcwMzWYQ~PoZ=M|p(^O_77zq8ntUMNR?v)`3osJt)d&NSc6 z%r%bOc*nrGSoQU+f4^{MQRS=s`@jCIf*(sJV~e=P5$Kw~eEGS~Y9J)h5|l|TOFhp4;Xn))|OKUfaW;3HLh zh@r>NfaI9(D>J%&V#=X_MJ^Y>JgNMg^k0(e>i(CAVh(u17lxCf{jsbAO~8BN#BeQN z@#lZ^42TIL6|X+srGV8b6xJ;yN&|o~+WK{js^cf065ipW1B;M+CKRp#f(J}mXP`3j zAS7SbW{&p^nwry<8y>Y5h*cSfzu3`Nvy~b-I+;et%&N0)&+djrDy{$Y^GEpc)nies zR}+hsG0|?}U5IV_sqsOWxeo0Vog}3+)vmbuWUP>EjUm3eX|%+x|2WP-89ztJK(JK| zB5Tihxh}Dfn5qvKT!KE$*Qjx&#j5FrvmO6Db2nBeDHN*VBby=rbkkA3H@dbWx0;7@ zRE)|hzTTFx7;2NTeN{EA;bWoIF{g7~On<)QfCS-o%lPU~8uDD!J|c$91S!P3nvv>~ zXn!u|yI)yZtk(}*X(_6F4Oj3`3r9Y< z5~R>|JE&L1#Wx~|m@+7GzNyHy2OojVG{J{vWB~ig0#>#(XUicpNX9Az!?wo#EWg{7`4iy7`M?g6$B z!wZ3hD=cCbR$9b_?e@Fe4{q?Qdcg&Z zm6lqix%!XCVNqm2^Ts|Uh%Ow*1cNb0F)>L~-K83=jwZU%7&ie7KB-+inWHCmr8`&5 zLqfSN{9(9pFpzaW+}fU;F^pVT*PzOV*hee;D8Zt7QHQrrqk1#TKp=Fhm18J<&H2Xf zX>)UWCM4aEG)+T=N%wc^bdx5Mmn=NoXm=5qNvhnA`iw42eE}+`hx8E!P%6klPS6Wwif zGh<1-I~0An;SnC*TMDPNHH>@XGw?j~vwbI2nY_q$tyL2fV!!N2#iiMTe0t(Q)Eb)C zLtol`%d~kL`Qp}Fe&@JIz-ZJ?Yn0v%ChEE@-9h$vUX+K!#(RkB>M+>2;V}!WM_(=) zlgi;ACU&!89`BP@0@IO-vrvqXOq^)_rHx_D$#3vn4=uGmu6FPAYZ#aHK60w7-&_WiW!I2!{9Pn1=UON*9E~y<<7(AuQY;>;dpFC*cD8 z(TO|lkM4#?%N3>`x%PONa37hnXAxeV50at3A9u%$0ry|3Q zqtIsY0K1}i&ayExbted{)yJ2WZJVU;B*esRZ` zJwZz5A$w3+{?nAOXTFR{4pQWCV%!H8bixKs8xiX<+t+RG`u8XlQBjG8Q)e5a9Bme* zIhLJ*vobjnq~fuNl#uWxw`cGB5S#A%o%t!2@lk0nU9E2NztySIqlzos5_iQ74-lD^ z2lR5a2GRquWSF5OrGrxv!@JD!@N9LXTG!m0T(;_YggT82g&v^_#R`=gB93ZOJ<~EC z^~%Pc0)aSt1F#WRS4S_22qbMEVFtRR-iwKmLV-ttU=4bHaZGqPx^d3of^)XtlRP3zP z?wv8#GRcv10J6|?%wy#%D=^JjWx4uwFK}_e7dWZ(2C!LV@>;W-6PawbBjF3PHW1jb z)KD}+wYI%Af6A{dKQm0#9K@IOX+PL=F`(%)pcVERP?jz34KtOdYaP}IWeL#N39>D< zq?Aw%{spmhXmCC#clhe<>0-m7n?n@0eM$LcE^H$puu4LRWA;%?F7bB59mASGz*2Zjbo`=cdQ-gp$eH5 zY7oqW3)pk^ql9%#NPpX-dYv)r(kB1)3t0SaY zBCF!kK_D$Og&ojnrf_<()x4*_+&43zgwC>=HG7uN(uqfM%C~CFdl;rk>m$9imQxJZVir)xjmLRN}?#d@_s2u7L0^WCBavXSB?lOHVPommAK@18p zWU{4A^$f?=(oY^XdcE^M8mrz0ahDjy$VF2vO~`{q!UG!1N<+PaP?%fYpMrf%nwllg z_%3N?@rS=F%BKk@bW6P{4)M_pRKf_w`zR$+L`o1OuLpMZYsX&FA%Qq+$w*T6xo z<0b~0=2O^xuVCj(7&fK_3O)mJ?*T-pAOB6+zM6eVtPGF|3;OtGW=oHlt3C{pMlf-B zZ;aNaHq^~&Ie73n_Mw*;QbCjv{c9Uu*+-nrcFioCM^@L5$630G3wvyYwaT308%1+% zNz!-O>}&KcEUcOmgul8teMRz?A+|p*DIJ%5PN8c4Bv*)azaAE(@@w}q(*pJa+zZhO0!j7pg|C7{N z1~Np9`Tbw-@mH(jKl>@u^{Qy*K{vy=!AnHdzrs{DQXL?=4p|)H1aMYDh)?_}RF-paO zp#z%Nc@rIyo2V2^zfs9kBQBITFP`V;JN85RbtxqqId~Yis+>#zL4DmHz|5`npS|6$ z*Ne5DS)HVG>5c3b`qb|5ou})Ek!q?^>)}%Je%+PX7JuJWIbmLRUG|T$gNTl#aN0j}Q5uZSLIW7XNiIxo7}qFvAi z{VBN26yQRq>#w3QD>9g>ec#YX6rc^{Byc<0n8=X90)ymsZ1&UD@+F|Vp~kdBe6dMl zkBSEP@Wp*S@3YZ31eS+?K>|8?WX$e&fdsqLlNQD>KA-8;Vjdm>2T1^NXMwq0ftr>S zJq>$sYZx+q%0F(qwiP4*s`YFpwP{F(U;MOolyVrQJ@SL*ZI6V>2jw;FastX_*-AB) zB_?+`ayjfo?M9>qQa>dTypS z{O?pk#M=%iU!V_3-Lmg&GrUiKXn)db?(R#-5gIK9l6$&-Y zMvg$@2=V3Z<)#H8JcS$k#Ka&=WE{)@7!e z!lMg#Ig!lrUV-FYIxIGU=-!)K}0Qs)Y+h1ULXw z*?#6dalgvZ?lZvH@vz{FKXUt%UP$d*m77HSwuXx}&PrVDy3g}VnlO15UKD|LFBe=Kmu(bjfHwYg2tx3hN_kPa?bPp1>+Ltfc<(7PRg71`x<=dl$! zmZiC^c4*Z$$%3L8UuG3~>jf2<+7Ux&PR^*7Nw+*foCKW)L&E8!f9mKyZ6jGc{UK$U zCqOy)Q$(fSlB?FP^zzfu(eAA=r(9Ceq{w<@+NulQ1&GU>fl#YKirKgV+Ku_4#e${2 zmE_1oC@iX8Z@`p4^(s@OS(TZ(orC5RtFd~5JfalAF%0bv0*h?yhWVMF&AL%6Ss(9V zfPacXxRQAk6YPrV8~ZGCfjEN(PE#uQOTtkthXZU3pBVH4-P1i4I5ZEbbOj`_ZE)LSKj13bb$1IjHsUw_z# zD>8I?6n&TvsEwvHL6mtL!wxW*5k6P$O9uJAxKjqXg+)70@yV-Ax*Y4Q4!tmUt28G$ zg}G4LdA$|xjrPJ3o^h_*_N>erkN~HcUCR9>SAo|eptF< z-M|=&ktl}ZmF+fy5apH|c5V1n>4fCbmdAEBXiS<@(^eq%`{*!a&3om(G&sz5 zYxx7%`$9#9Vqf$nVD-uA%^#?$niL@#Y6a;n-<7UPk*R4}JvmUh)Zz5d#f08R@XYBf z?9I?goM4k6E|0dHwhby*Zz#y`UC$fQ4-v|By^v7w!;F_y<`d5NAjNj;@XouT1Scd4 zj|~jnWAZ~5OyOm=-xo{{Ylji>MRb*y>&ROJi)r2G!%I78pc%&gllZddeq8!UP$eGA#xw;UO`4Zl?21xyF<@8r^bv?Rq^Q z5%Vjb0aNoOJMnzIaZXnf(rj#zob4~67Kq(o|5A@YDhN~;WcSLAuq0;XmEA#MU|I*i z71PW>4^g5>Ibzn!YaY=kFE6uV^&SwTS$c~nXn4Kv3u0%RG})%`lIKwihg}Mb5CPFP z`{Ock4Ja;~=O2bqqd*|q21XEA2*_k*jNyfWMU0HSF)gUeF&%sRwIy@8>nWc5>{vb> zO^b@y_(K{_hh`p1m(zCJxl}6YwNwW$$9s~_4z202b)z!;&&$tS3yxe?r zi>0+ON<4(_mAv&m32$j$s&;T)=b!~SMlJ}&7tm-iRN!;wl1jHNqK6#9&gRWwl)~>| zkie%M1Zoo$g9wP()i*BM)l(Fl9<%lu6Fnfdjb009HB!yWXM=d@Hsa7%d~G7*&AnTi zht(nOxL3&~*m@`=gC`7Gl$FmHHfrT)=$n+V*&?Z*7%R|k6;CHaGo_QFNId->^-4lqdLn4>3 zD85wXpMz+3?%PeTd!%UZZDt}RlJ&PoZVupLytnVRWq+*gWdfVGWS_FjOgMBmx*OTE z+VH)tLqcFcF8@1^XgE~Pj&-4q;6Q(7mYEJvsh{U<-35hJmHec0DO>5QK%w~MiM<(bcdoI zHfvy{Yf?Nz2P&$OXX5u1iaG}!$7jgSe`HnjdeLb^1dk;Oc zxTEYTl|U@DMTE@X++H*n%l1#aV>%fwO2`KL?DZvg3#~bi#dT|pTJmkuS#1_k6&9@^ zupx@v;dnWy0Vj|g-UZck+4AmSj_ilPdO4jD~1)0Ezvx$;X^;bQZ%YWU)#1M{WXdmN_= z3MNx;tlvZpZt+%b(>Qum1O`dnsmH9_&U?W`SuC|k`1c!bPfQa=v$ZZ8a;yX2^2sTR zvBB927f@tkxXM0>BbaG&Irqv~KSJjP7Mm66myOk2T8Xd-K#|{$0ksL61o!D;m(`sX z5ssctaK(&ScFD}m=9}>yeY~wpMs}T=>D^@h=2ZO6=F9jdbt9cTIa*0LogSM`O!-nL zEj9p)JnT|BM9UQML|HdubnoYk8yc!b?X9gOVDYIdY#pi8CZhrclfVkMDDtN201OFp zayqZWf08ZQ35l*j@{w0ca(W3?4Ad#DU@~Joxj;JAA-W1aFJC;m5yNd-NpHW@7m~Zf zD<|JAZ}=RWbQjZ{Kr>jU)46GpRUoK2Xq1yss@l=sA+0ppB00D!KYye9Sx?edy~oXF z*Rd-O!mkrW#QShNmlB>d-7UFixqH5K7YTIqfg%N4gFbE^aNN}btXr>uub0QXjLl3*d8B1el zg`o!a)AET_4^;|j=v!zi*d@>eHu5lO)7Kya@z2aBDFku&f>2o-s8=nYw%* z1%4$jZ<~0)TKx%SKi?(B;eYLhOxO?FqxBx%yz?zBm1@rITUsi4Nd4bPOYK|ppc#B* zV5}nmT3ss+3`-G(g(NP4cdi*(B>Oy{lKA0^(>ea(iquv2Z0YDy_mDlS_)u4z2ulFo z#%La&yn{8L$S=FTmbOwJ8z8X}8Yr1{z&Aaic6bdzArr%(7?Bb{vT?Pdo}WAHh09-o zdeb9UIlaR>6{A^R3|A{W z{j~x|jcLVk7ygSbM7Dd?eN-V5AcD!4nB)*SYJ$>7>@m%=O0 zH(ioZ8|s$h+3L8oZEgK86{wL}Rz7zj4X2P>rc!a{(rKku0i{m8OKy{)?N$@OBgKp&}_XKK|=E?Q$Cz|%F z#LTSLO4mT^Gox^fy7U@kH>tp8vnlm6@U&bM~-_4DP1$IJVwzUcnF;dt_$3y$= zM^SCUYeUU{@M@=E`TJ69z4L!hPx!Z6AO9zns( zU!}h*cG(sGHFfphxo7`5-JUahyFr+zrhc(%ysv#;;a;73cIT3qL7x;nC~xIu`;&}x zk=sFC&K@ro^E;%%_g~c#x%;sa$!;bekrbI*j7QRjch;t_WYIMy(EL%W0yCn9yk$;Sz{5=N&MS|h-0#RtSm#=X z+pq1)AXk-SZm%%&+m<$r#s#cm7wq3Q1C!)EL}zpAPeyJF21u(9SKL?sDAhWl9=Xj= z6S+Y<(mb0eb>2p~l<9$(jDu+8)L~2AwZoHNs=KuWmmHV_0jKOAPaS^w8|Bw4OZC>x zU-jU^|Db^j(++JZ&+g+DFI`aoTIp9&B%(Wn-Oqn({#)mN8+v~*@qEA9yKR+UrXWLc zYp-tG1&bODUCSJFz;!H@ArGao6I6{CMj>?`@wSW3%*fMX!RCPlRzS#l@`d{!qcz+9 ziq`C0^#32NS)`5m%^1H+>-jB)Hhsf)UGPUq3u?PAAWv~STNDu=lu6E+bzvjBg-PVp zi?!d7oXoJe#4J>SSDQbxW%!6ae%pCVW)wF*-c4b_kp>b$7 zGILAOxnx#RDeCPFhm^0!zBV$Fv)kGAt>JH7{cUjl<8&f<94BXv9T++_$)LCKE*hq# zwtnu$nB}zyrR(fgT0P;kdf1#!D(Wyu@3R@ka(u$7bCJ1BBAL0FD*EErgwn}l5VZMU z$Q|oN-lRfoo|P>en#raVO$Akx*+z2mBzYXvr^sw0H%*SmqH^%W&bPFuOugE$ry<&B z?zl_0kA2EGA4cakn?tj%D!uxNZ{e-m%a@iu4vN_&L4?Hb>dXs!;Z@=Z+fs!erC|tL z+4`&={U2S1IYf6EJ=YvZn>I!ohf&E?2oB>T!$4Tv+Z2*aJLeA<9KKx9_;tB*O#Wq= z;kC}F`Ta#Klw{W)8p-wO!R*(CE$mU;_3viv zA2cmdR4p#9`mN#L-WT7x`j@xn|BbkV^?JiVbH6vUv#9{Zy~f4x4J-mLf- zkd;+=1O|5u-CXc$&rN3RuHRyH@L+XP9U#JkD_Gv{75Z5n$I1F6`nO1NL&8LhXn!Qe z?*|_;a&R0pG2C}isprEpnJAxDAh>a;TUvt*kbT5u{41N1&dXn;u>bV)gn)x&*&V3s zZTQ@4a=P-2o8$AWm8ZF#cgO%@bCMXJ!6;GhvndY%kj&qzIiqOR5!!3J=`$;d3$U}I zfOSmcNhP7o^+ikJ&I0XV#3p1jPpITJgfBN~}?;B*ExxZL+ zuN&uKjgu#u_Ty_)IhPE$IOnd+*mE}R#|A3xoko_dZi0@iuDFVG*a{(()(+rU#}d-yA^yyd~5z& z=YJb||FwxXat!^SW(xdtUnNo09hKQ)NTZqna~MsENgsUqF5$o^g4Rc-L@oz zmJyX)KMu?cwrRp5cdL_x>{pYi+G~H`xKq#C{>3!Ju6leLz=kuXmP1LX!jf-g-dj1J>fn}b}hUkWEV<;>G zkzg(rwaItGgZCCd%s8Q{P>X z^E7n94wIG)v`Wf@%FT`X7u~cd6Qcru+EGi0OJ?^r?jV!x6#q)L6L9OxD)R3@wv&A< zY59xb#|kHJ3{o>qNLJT4!jlBx%u>+4yF`Q8+5swKtqf#lsJxn{NZ5?fI@RE0MrBF$ z%e^zrl^|rfxHPH7A*$9o4q?224F)+u#MIQacyx3&cuw31fyOwtBVO4`e>M11}#v~ER<%PFBeFkTe zDiSEN5@}MSk@qBM+grz;TN=dfdco4pehZD6~gEmN22u)H7kgE}?YnL4$+Y1vFU$ z5u@>;#UR)GF75 zJ+()ax!JYuR}5@(DXl2d=Sz&@GLzCw6f`QHoq-Y%92mf9;er1+&b}VGfcXl6M>2=D zr9`{7)a-}h?yCEa&&~c#p#O0&g0Is4euGdb#H}e)2jA3sfKdiq-#inC18OdD*E85;t-;szt3Vy$(b%; znVk}Ui86i#2iIWvLB~xT6?7g)10Z!Jjn3hnqP=={$*CPgNu$NP5fS1 z5;4lz$FM6ohPR_EW^gOe2CABl@*LRXv(QifQHDP_awgFxd%0CLrs$z~QdL=vEPF31 zCt58gLTo#c(O45@hazrUHCpTo7+0vo$20ooRqOrEB+3KF%lohTNWlL8~IGXY}As5aaX?zCUz=*eM($z^M<@sm&_a)45Acq9jx6GG( zGiYI=378Hu{g6fg(&o({NcbNPCkY?UyJjyJ(I;hGIi_O|-P%=aC}Fm+XQI_>{_ewe z=*aNPU4O6HnlCE$8orw0e*FqS!2KV9Esgqhm#>((T4~SRK&ynvOmkN)Wy$(|`t+A; z<8jG;O0lznC5uW}0uRdajTr7OLbn5fnvklolOr{E`=d#4oXgwokp_H5znfj5j3#X8 zJ%wEwTI#NNTj#j-!|Og&&$WQjeQ|s zom84%=eDWD7o-(Fk{iP;c`Zc9N(wos>s|lp#ND_*ul`TYo}kn&$ZvRAt~_(tKsT#tX_ zlo{vfIGTFsXU2xAQX#%3EN$+Yo9zKC^FWy=9QyYIr& z)k>2EeVzmM^JQn)1J@e> zY$A7?u(v!NQ`kD)A(nwkRyInx6|g)|Y2HXGaNwpj@)YsM3&ADys{&c_gskI-4i*$h zaIZzMkP$gCf1#K6v5m!|%_Sh-MF&L0Cu;|3;Ug^nyK^ZM9{Y? ze}CQj)|bByqE0neQbw%kHdmhX`QiuJ4vH`rl#YctzPN_z9I~{Gdw5_tD@or3!rI?$ zagICOdr_+U;i8h`zQ~r$<9$jcrURCf9gM>q2f^J2v}Km~GKokv2^T~PI@o0tz1zll z#Y~+H$SKqK8L;;OQ)5`u{vRKb$zokDh zh`vldC5%h^jyExg^my9Ps$-qu9Q&-WjkliR! zYEjNMq+1^z0`bp2{vaM6cgD6<5{zzWZbU=J3P7+Zo4%HyNUqy2GD}MsicFXOL}hbG z{>_>n_-4v{v*G?f7_X7f8yFo-i`i>j4#aLh7CbASm_vq*q;Er@6+mmXGax<8J!}9j zQlAR0mLL7@W*T#v1r``AG|TcCknf|?gqk9wi&KvHTf@KKC>MOt4}2KG#ki&T>-*^a zYgaOa*>~la{g*4`TNSje2!gR34hcG3J(*lnfFBBe{*%qP-%fpB*SbbLqcMKU5cM3b zbe#D#mhshE#%BQH-uMpC?ePhVL;{Ji%lxO$fB`96>U3+LRlA>D91Vh(_7yhb zYh||7b)OR%Sq^k-nMdf;#PrnnLpugKju0MI(6j;4y`N8F^?noWuf9*8`a*llM6CG| zdS6>Cs^d03wS3IcLvu#PnzLuo&4UfSR2fPpr-tCQCxxz)kS zFcVC1bwlvWl^iJ$m+)*wnj*;XX{KoC1+NiAHsC(`uSEKKUS9I|x48wXzJNO!%<c8s zGkCh$S?cYAtp6wM%so1m3g@LMzgF30X$s0w2^Xa7%+>8^r=6}Ck;f;3dg|Vkj7m1H z^cJ)}REwm0Kjym5_CcpZ;DxxJNM+H}1tQz~IyTU%)zdW9n;68rq@maZde^&c{>)Z){l6}|c z&{(6__cOyr5_*m$#oKEvx5YHj6^S148R_0ZhJwTam5k?=o2jkA1FBZ0d@&cddwp&S zn%?~AtyZx3VT5Hv*YhKQLi5vqOORjwe3EMrjhSTL#vC~)HN;1L26U;f$sD~&E5^*b zHh9hZBz4)(n0y9oL>`c#eX}K)PVbx3lDhk3)n>aaW=MLEPlnq5w`KST@-K;|A%-BAzcU&+V1FNck+S_YYd_5~$F2fCPQ->Iyt|7-xX?}^F z`fo}0-SOb{^y7=5O2|jI`=0?t*B>3wO1}GLyqjq6Cccg2W;Rxpk+sR%=ZNMOkyd2e zc9o`Zaj_?LFZJm=Eik-o)z3Z^m`7is)iNpOZIL^gMrmscuRQN~Sy*+jUehq&VpYG^OmI*8? z@E0hR^gN%z?n}2lbDvQT^4uRX&I*r;P(RlmzRDKOFbh-;z@k|$IOF-1B z=?o1hcr@mTwrJfAD3_Rj#X=iVrkkAbbXrhn07x`SCfN<93j%S4;k7$K|Rn{oAPr7it?Fh@C<2)10FZa)VSEoPpyCd^T0i8e65?(iTEUk;n3 zAT(XSapBw(jlncVNhA!a)DJa5^w@Q-R7Fl@byR!?yiu5MnK@^2kMliTa{znQ7(yJi zqo2Nx7*Y6+!^sItMl?5PcO+WN&^a*WG1A@=Op0mK^+o7dSuH%8?VoxT{*tFP(VJ@u z3PXZusdRF{BN{MoqG1G061=38zb+Hpi zeRs2*gDHw^0=MNNeiGI1!ai^9;N z_7ImDV|pl}$c?Geaq?qLmT+9VRr&>N@q$VLpJZnl0Ca>9y!3UlDx0ajX|U{`*pNqR;y6XTVt_CRvB~#X+f*$U^Rj{A&So;W+&=Oa-Q_ zOd=@Y?n1eIX&@plAbHtP@G?HZjMdz$|MB<1kAIu37g#QXd8L1Ni6>zec|Q-zh|WZ(&1*rvTF|h?){FM^)}h*;ocml zZZ|mCQGG`CUjJvn#OTjUbCs8C$MZVV9ot!`RZVGilaspjyp<`m{OgQ!^!;1J&GA`e zW#g^mZ({w`_ld6xMuYgVh;!ahx)fJ8iB`KWw1F?aQy==`K)p`w1Kw4kA`$woFRnPQ z-%?JrI&f{GJloxUKU({k;sGvQzTVje|AYx;dzR{=g9FfD-u;zGU(Qph3w>C=^4(Io zU;LST>n}Mzs&-^HkFXOi`X5@K4}7JJ;4~*w>sUQJ>hf8))Y!n5mNUKtOftUuQrn*w zPKes<_pEAxhT1m+556g zuMp({6AE0X7|At$5?^5$-3YZLl?iX>cXi3g=f>|_XLP+c*z1^4u+9|7_sovuK`=BR z@V zO_Rv}6dyV6Y##DZt;}hPyun?4wdhGEqE07Ma^8JB#Dgo!p>>Fe2{>Re)b`(ye7u|B zyvttKKR6!_(gxe6qv1=dMJCZpa(!yNuIv+i*~y{YD^(*Q8sa){L$9N;3_H?i0Vi6D zAOEF<|I7u{^nxwv?26B6y#p^MbMTqR-c=6!5qL<$F0N<$tU2}&BkT7GGxH1WYC>_t zeg*pmoDBa@g8|uuZM&+><$eYIRnmuKqGB1I1~ z*&^{FI?9%ifFh8ijVIfA!|^P1Pq zt9etSH@59!ofB&d9!1;NwMPfyaBp3YD5AYxILJz6zY3cH#NN3thVNiqSt5?S!6=cVW zoF4;T%E_u~(iPNjt$q+^=ANu2AGNj*2w9s z{P?j;W-q?nAut#vwjR7s6GOd&Gh6nONwegdX&YTly4-T*TwzD0ijrn=v+x|5H=KWQ zo!>kJ4}%`!7+`Vg6FG^M8%H7Om;zZ{hjuYOS{t>?QAJL?ebLvDY4H6k6O(GQ-bs9? zB{8K?^R~;*8zqIlF0Ab=ftaDCmLl~}o~Qh7?zPY+Qr^oKQb1GQn?awyw=wM*It}YH z;FBY>K1-ZM0WC0CuA^s|B1Djoe7Sv;!p5D^K&}#1h^pyNyK_0c`zC5nhh){27)SHP zUdr_k<{H3(tjJt4Md(d&Ebrk?fzR_(7I!b#IA-LLt__VKE4gwux5_ZlA%vmue0mAF z1-w66tSmlrl&)u4P7jTRxf=qlJDYM?5~?}C**Czxy+fLOMV+^m;Mx*I#1OScz|Ey) z(0tD{(qamZ#A9+9&$dZALl%8mQ{+xglL77I~+Nny0o&T_5~3E zy;zt0!SppXBE+>hTSOnumdY>w2sq1!#W0RA0CNok{9POZ-fOuho*7RxV@OAeOE?KV zvLj~hhf7m$EN~}dk03GP!R%$Ehoqs>NqGV44yqy>vxKY?FvzY}R%lQreT0mZpT3zD zN@21T1C!cL?W}buSKLUfJ`_qRqKYt4aDI?fQ6t#DN`Z^O5Y~E%-awX7d95MTVbDne z*1@$EoXwYlnx03+EqSbW0L!;63eqjHQ_~F9Nm+}q=h>IKIzf>?4NYL4nu+C*c^P(+ zFq!*Im=(Qb(>wYDPx08!1cI{ylzTiYJ?kkHad5g!gtchT=Y1Lfe#?M_naE)K2ng@a zL}7+EHCZhU$<9#__!)Lsu0?R(+X6x5^g;4dhH0jYx#a_fu&}&Sj6_5Dcis171!32; zhNs}oSrs<&BXV~75H~kk+6T20JeFW?za+}`1P(JSO4zi(%+u5B`qD^AP`%EwSAp8W zUh-#vs6(J+hE0Z{--x3wwj(oIkMeZQiqDdSzN>oT%TMd{mU;qD=XDW}93?H5OPSL85?)--i(VT!wE!sxZT1xbvYz~&7Esd#t;WBVP-!41wkXjyLSz9;RGvy#6{w75$ zjf;CnXCXa%EYvp{;>OtPFkGQ3zktMUhN~^yn`Z=rV09lGs98h0Rc8dKVA=8pQeuu^ zC2G!YYnRXGJ|LcIY`V{%VcCRUw`zl@Y;h*qAbIQ;rh$ONA5lkanqqL z4<*~+_d3&y_p@!roX*RJ!$@jyg{cX5PQ!3W9{Td=eS)dra+5zg0^Xln08 z{gNbk4IE9YdBbHNsk_VYpm%cmr3RIf9yeR!Z<%d9(p^gl3|Joo^3l3T(t+`%G2 z=jahOuE0Uzo`&2dgIc7IQ6xvB3}Y_Y0L`$x5ML5dn*L^_c}qjny;_(PZelL+86Y8J zpnanO;#>jCQC!#&oJKv)~H5ml)AoNlPYX z^)xLEqSKXa*9g%+;?(8UQ7x=UJ3g#`@4~+6?gjxOTSiqE^TMG+8c4UwJyl$W(oSic z248=zf0@CuDfgW`w0kM3BJ)V*a!_Y6@A$;qQunE8Y5^*yT}2N2-ho=f$`>WztYj;) zAt`3MvMJ#>WTeT{T)1FAhF7k6L-SkiwB zj0P&Qvf2TiX{kII=E^Jzg{{E(qb;zi0Tp$H`ZUJx?Lm2IkesrB*E}}tkFP(XV=J6E zV85tq{8p-6i@0fY8^(|ppm^7^S z_-<;o(n<}MZBB?xUJrd?W>%V!P^&i9z-5fSIc8&B3=T1j>4z(ev&F(yibI@fT5x63to=>wO4(rL6 z*9QVkkvOWRKD!!sEYhCUA`9y~6V>H{vL0U%vlM{R|Lem*%HOas+AlFjPt3 zopv@O1?fcE$pGHvc~A2xhaSbAMsG2iX_?Vnj`#KIf(!y}+LXrB@>-{mVr_CTO)+U= zH3b+(9YXKFsA68oOW#i@>dfItaHs~1QmT>1Jqu6xz#B6rY|NM~8dWl6IfI>bw@74U z=uwm!1YuB!vfOFm8?M&g3^P^SRJjVegL#Zz!%93lwSzdF%{Byb%HQc+dj}JHjGc-X z#Psb*N{_n+q?Af4sF7^)#|8CHz^3$tCU2$>T`cz<)jN6mWbW75N?4OQD=6Z?G3lQd z!R|;?PT16_ggaZNkS^7!4|6gQo6@K%0^yWJy4POon#9b*HE=F;$sdc1Miy;}nJ+Xi zE=6`j2>}Jpyt?g1afE>QmQaTy_k^`w(Cc4$+-hpJjbG${uJodSyGhEs$b{%1#0z#rC%AP9I-5 zR!sLAumVfybgf1no{go0$?C^$Ck(pS$!nNrMF$O7y+We5xJuIsUo3*lcdYdk9ZT}f zL^3%zxxg=Khs(h&@Ct;>p?BenC+=!9E}f>EB@9aqp8<5Mr(NXdT7$mZNN!z5wJg|z zM#7GGCoU`nbtY9k-gBm2oIilmii;5Gyy6!yw;ofbm%aRF)ZAaL`Cl9h|0DW$jcN{& zwj28mkIV7nGk2^LzcMlw)cX{@Av3VZ>=tJ2!SqJRQSA01|MU*#G5h*|PZawA^OOe z)pv?jdy29!^p&jMyNNC2e5YJ~x&%xni&VXD0?`grtO?RTrN{qN6E%lzDAJkg%c;d$ z8Q(bE^usqKQ#0QPJgg$w;ym+iyc51v4XNt%{&2y0aiu4}G6a4&bfw2QnsJ@ShTt=5 zDI3n~B+WiBCe)<^b?ode)jyfO!;4RIUqxY&{B%M64o(YK??12}e;2nEbE?>YNL-jw zNF#0Dyyj4}u&NpVoZ)mmTnz7nn*wHzkd$Hf7o^Mb~fo>?s{7eg^c?IRBpc?`Qn@Gr)SHvdn$X za(EBSG=h71X~~>q8NLgF!z`EvvB7jzBtN&o7S{RPePSEW z`+K;m_tQ3`IYRn$*l}8E9Lgf7Y(QwTkIY~0pYeX~JbQ2^cY&E1XQ;E&R6@2qmXj+w z;YT}CqEAok(Y4Qj!LVW*atNB?4%s7uu=R}SzT&r^b*L(_)WNSa^}WbeTlKukXTU`t zlH!o?X8?x(fb5nlV!2k>@cL+8Mq|v`&AspEtJTNqkRB*GRPvcnKg`-?&y=Fv*4PW( zFKFp4J#qf9z-}+%GoUtgU*lM{O}qkgK4oD&E+Z)hMU8(XnY5B+nCxMXcUslr+9v*% ztdI53QF`?%=TVQ>*IL(9RNYyY(l(j5&0}+r-!bl+jcu}%jV+n2v}5-hp=12Zk}GCZcf9yF|{oMdh^P+$}c4#pR{1to2)e;nvF@HE9@m^)(Wmw`v^ zp_8E^Kt%c2nYjx8z)(IR?`LVZ2n@0+a4KAJf{{af3jdTtYwaDz*qH+t361LdQD@2) zr4>G9d7skG6_Im>8e1AJMPswz9vg8W(jsRxTxdZxVe4X;jOfo#V}2xBJ`BC|&`6QV zzKEe0L@kG4wP$6uxA6934y%WU)%FGCdSf~gBcwX>N^Skgn_*1106k`Z`P%xYF8Bvd z?0PattKfm$(&NZLH1aDPbiid8Rtilw-kTQP{LXJl)pEW_c^+KyDW@d|1$u+ zdZ%2)>q51Qo^Vj;Wpusv!zClM6XT=8I%=jV!e!1M2*#fQcZ^kbWE58>AfimFrRr7lpe;Wrll=Rh-a%$k0O; z={yY~xx^(?b+m_K?y9eEYET@|nkYfFo;4uZ&E$PlTpZq;N4M&{O(g$5*eN$?qtj_M zj-zjFs}%9tSPE}NqAwEEuz1abHnTO$-Z9HV8^7(obK6qt$(Qp?LN9F7#?s-eKdv}M ztIp2XLOWfxHR$Dc2S@6C-Wv}+L>)$b;QkC)+>~}S!;732m1=JT?GQ|1dh1Yi(vrM) zZGUGZtzA1ra{b2ZmDD<25f9=aqY}#*ctcd_;Wc`gjyupJcmpD~fMS;{OGg4X6VuXs zKE7~xzVoIio__V0&Df~fEk&qtk1g#aLvPw3LY&4hRE@3 z^j{7xhXJLB(m}SHb6n{BgEIY{bt?0?OGR5Mf~u2}2NEe)xDuzGtd@_w(L4RpO8 zn-vza_yTW>X{Zmx)ZWt;3$~XQd(T&GR1SsGs^KC;(?ZX%TD?{vE0Ky=>?%1#%yHs| zb))=TR>}5g+tE)9`>!h%_)i*<1lAGwvD?s zdxL~YBvf3e1>lGG3YLXFO68vc-AW4@m+RY0^&jWOoJ=7FyjcVhY)VzmD({*g(x}3* z93eDo5Cds9mwgVn=_pfjk)|iJ)l=6#w@98JcP~}Oln!FOV(@11k!ocq4teb4i~!}9R90^au#}Knxxv8N_a?Vc? z-B}HJey_qzukWQTjXWGl17mQw=h__8MbbfkAnJ#s z%JURk)i@3g&J3?~;97Z`-$L-pvt7E81+?(ahk4Un&(BR7cN?5bwvdh)jA?E8AF>GR zFO(ObuGQ?0^?f!xRON z3IjgNkfF9<{reslZ-RmZIAw3Nq-)-`2x`2%6iM|fndMYv*NpLT40JYaGIyYKC!9BA zyr&j?^gY>faoT{OgFndWPPoK0NKI;OQC{G{ZC0Eb zS1BTJP2}6HOg8kvBu?eA?kxOL`0kvq!O;r?IA| zsE-Yrd$QcgodL^7dR7SXM z(tB4?A{OjPxDy*w3u2@knsAJvzetY}s@wN<`A7~?T8nJzp=IjO*Tw}hxwAOlrkHg- zBdXX${5Z~Wru;+tEjI!RFAXPBxP_r`V`Uy8r(M|F09pH4gzCy*7q3(G7T6cK$b5_1 z1@7lm#+CP{Jd9&#;zh=t3gKspS*%p3Aurj}jYukIuoCD9c4xKZH%w*1>97K& z6m4^n%I)Er0oQIZk^E0xde2_iwr@a4vI$En_#(NYo8?cDb7>+|WF zo+EG@5PiAi!zSIbv^M@_xAMKtXN8KVLcHOco#tXTHV!u@uQ+~K^I4VO8|PfNPv0Rp z2c*09GgkF5&PFqmMrO!MqHz$Ic1xDf7q(lW>0=bR;=9v8_-PGz5q+Y+e!~*x<&?ms zjz6(3{b}Kn!xwGQzfqLQ3op|PjwrH76#0{ zWMWEn>f?1jM+t|%s%VTL-hz$!CMCu2U~!A{#If3G;w|_~IhnJ%K?@r}%O->BwYBmY z;zw<{N~c_=C$*$oMxQU8g?N{a+U)4j=20aif8mqi`h>tM7i1Bz{4H*D(kw74 z8o}kScC>#tdVUz6GMvQd2s_t;xM7TNx*8u1@;xt;J1hJEqzSX4(Xl{~)VqnQfyEun zV?D&yAlORx>ZpbxuPSXbfy19mxi#IXPZr-kQoQ~;Ih9H3S8A%2s#S=~B9@hQ3}pp7 z)dFw4J8f^@nLINVUb;8p1NScRBsu}+8J=~tefgZ!IT}FR9CH24o0KN3Xa7l?AlWA} z*UbemnOX@6?^S$!G>$;h`CX^&KXnl+xcJjjh1T-)Tuc+rwhjls-KuyM+u@xP)9V(v z8H7yB6M?{{>Hcz-w5te1eS%F@;gjoLb)%x4NzbU(<#<05Doa~iI5~H~)~CwCQ;E`z zX5{+~LVTcuJGn_2mDv&*9b#ZPT| zk?VIhjl;-{{0F_ILplT0;@dOx(ShS6>wY65&}k3BnIpMD4c!tjnt8F%1M0snO+Bbea z>*KOysxgUHH&Omtbbi>qTB=U(-zF|OjF5K=-~ZkH{LBTJ3wsP7eCv3cz$v%q+xBCO zcr^v+=990*XU)f-79M8QRvSD0c`y^_hkxF)-+IZPUE|+}-Jf0Ke`D7OTLBdrb;3Ab zXO`R>ZR%4`+WuyIpIrNBRlF9L-T63$e>_w)A z3su{9-#4*mR0X+u8FG!>$!n~Nd@=A)ZlMCvN+qSw_H_ygKVUn0{Q2LV>-=*SC%&cm z#(fJbmr=Mit#{b_;@v82o$Uzz+W&jpqn~nL<&dHulL#35kQpuExZU`DCo*@cf-qCs z`&T6;Zbe?kVZGXGTRHlT^v3=a%_X)U41WHmQG$H=TVV!W5UOGR&_bQm>9Kw$9lFT& zNg{kKEQW*c?Jf)oh1b7kK%3-Htt}UE$U~6&-9XulmVkXH$K1K(Lc@C+kOl<2P%8=? z@{9WYvqD0`SA?zy#hFP1Z+JC;D6yvK{@_($=OG$wkjKILk<(OvFO-a(^XE8s=I&X` z8ZlGn?zVSLPFc>hg_`(9ZPdnG@bk+cS;)rC@bIy-(Tl3tVY3B=-a*%8s>InwmqPGB zwKrnPq>vNg_*J%m%|A)atdH|gQZwr&d>VJ{%wsKYdEN~uamYKKxaWh`wc3k)!pK(D zQBm#LRnXq!WM~+it{eFq{%Pc!F!+PwzcBvk4_f|@R)6<&iS*#vQgMw)z85;R_g6+k zedZD$UmSc2Jjh>#_~qIe`{1&tHMYZzhv`eYZaJgLK>i0C)Zz0xI>o-h*#Y_=1^2|sb>7(D5SkS6gC>W?*)MEB)p3B~;#Tgt?-(-w z;Az;7K5ok7SmOym9a#mJoZiMH?x#;-sQC~A~e7GuGnGPr$pgl z62)-v19Rr#H}b@QBG|CiWTTFsQATQfn%9_Nc51;}D8Ke`wPmUin*{XXKiV`lp^V?x zS4bZJU5+HA>(XK0yMvcs*k*dNnQ$*3g&+Tk6zGw!QVa3^Ux|@=E=Q+TE{~vJ)VssI zu6)&6$o$HSY^Cix>G8c`YncC5Sy(sH+O5hzW`gXHT!)vD`@$Aa*`vKUBlzUuH;!t5 zd@KCj${b*<{A0xxRkIttPuhYjm0uPdwA`BS&Uh)1!3;{vK8ToqL3lRd>b3Qdr84oy zNBp-vzO|YAMqq*TyJ`$PK2=z+r7QcupE7ur2$TzdVSD*cXh;0pDgUScxBC39Ho}!9 zVnBxMctGZ?T)KaX`T+|?D9lQnpK1E;aIhiJd-FZLVk1@QuUhnzX%GLW+x%ai@1Gv+ zv1B7K4T_13CyQL=xJ`xQx*ELAOKQx8=01g@SwNPM4~*%5D=q0%-`-EqWhEEb1(m|} z)_(UE5mHlm#M`o%DkNj*1Q~6_WORH`iHLcY<>OZk$un|{@(>^o?FxMUNHqScc4{zx9+cQkfsDdgFg60X4 zYEsn}8B{dSvQ1&Eu^UE=2%YhE{ZP8y7EsABp}tASIvjls9)H;-l~8VN~RZhZR`$D*llHUYCK(f zKgu$O)P|mt;44dKAW3E3+A^3b*M3N0E6j8W7@NQ8L(`o?a9D|)_DcFh%aM_ZdN4%~s zSghd7egJ7z;)#rb#wS*ZrBQje)-LqRHptaGtUN=THg#X3`v5leHPI>wv3m~ni34uj zd{JDz(472K9%SSoXd#P$;K3@-j!ch&EbEZkDQ@9zyL_oVANCeMo6i#M1OhqWwnmkZ zlP{{V938$6Xt-Q|Y+c;4z=lM1mR#m9WH^vcLfl9&Y>|%QzFL!ucWliayw>U&sm2L( zqb3@7wxP_-K*R~9y|A(FCD-M2KJPs;x<4QFJ-$f1sjW6ZfSIKbHQRK3`jD-l+OV3> z>UwEx1RU7ou&`Pwcr16;V@+oHS;n&-Uzxd&FZdjzt}~H-!M8)fri1fiJ(LS#QJl%5NVQLTlx&+6+)EjY zDz+ZbM%}!DCfZ$=EbOu$NA%`lEd8GH6tS@MshPJGMulpc2NM7aAqekfC9!@S$h_uHgm#O4K z54YJOJ(I|tz%^S=r3Q0)^>X5q)WJdH1Ya62?+A}5npPthD4AjwHL2|+%n`{uKa)ib zVFJe>a+7qOl2MoKVLR!MjC(^E<>oZG>t!(=p2*DGThIia@Ojg&$ELVXpJ$Pn?_+8B zNYmRin8j;dH!2O{I~vm7rzAUUBm75vUrs*C)-8i{F~?eS}U!V<4ZX5oQ*2u+oqkQ%+)Q?VAQ+8M)c=X9CjMF{F{rLk zx!S4!Nvz-S8~65rYr-1Flz8j=uC*!T2S!E?TrF}G&HG}if?C#i) zd?6-&+mafPZ-lKJnI}2dFXcFVn#(lOr+kpini{L?C*7#!zqfx)?ZJorcQ4V9OSDoa zVNKJ#m*AF(Lr$J(13b_meQ^pN<%~`_ng)wCp>XPce}W5r<0U=hj&Ft8&Uj8ZZMmA1 zlgg3-`(&2W8P;R$QQgxihBr@~m1qlO$aYJ(D-zdudl6B@9M43%5b9o&_~Qg*(FM;+-NYEoF|4yI~QnL z5kQ*z;V>U$ilnm~FqTM~eTgv!Y%yP=>Z9O3+5vMamk@NkXMSx1M z%9%KHh>wKjTd;t@1@D;PdJYkn&%CMPJN%TV$rUd>lCG?Ig>N_d6R&ZSF|}}&!KRr6 zAI+Uz-xZB&Ic>M$BSbCh5!Kr`L<`C;p`{Q0z%gPruUG!JJwk_ux}@!om5zS2O;6mz z$b&hTO@;Z>+E@fIS@n;A*YOOa8CQ^6ZNsH~ULP9=5Im`XJo1Sb2aw8s7o(Xf%pAYI zzZ_J+>S9Rzew&YT{e|r+V%fdxnrKjtt|P$>!F9R7VQM7MZ|_RZOCMeU5%p#;Re|a> zkGMYrc-JlWN&BvjA_um32_y;xxYiGkwsKQ>A}-FfhiAsY4sB?;xsPKr%!n!G7p@id z=xob`_hli8qybG4{n!bQocHHH`q_HkPT<;h;(#uji|v_ZD%2&slAjX;G~AyfH1(t2IlZ!EVNtyCwOCL?} z@Z=`_piyQ!l~9?rTjri593rFL6q>gjH;72h4mIOyW@Glf`CCw)>USKAQw%$7S#ZY- zv*-(veord1HXMA16kc}z#1b(L7!lX`ic4($7&_t;(iyrA9sTs`au@Ouo4~yfzXkUn z6uz;=nuUCIbQ3MCqj#MZ_s4!~Zm7HWjUbmBvsS`Jl}4Ku$T*YXcmnDY8hz=f39|s? zJ<>OZS-NGa)4WQ=eJ{?-h+Ae_NrftLT{Jk52TWtih`Ze^-3nDm(wRQ} zQcKj5N!$sg?j8o1-Qh*%grwP~W}m|51_U^^A0`f`_8qaik*OV4@TrSdS=h!eTWI{6 zqRXF~sTR4xTRr>ThkT9ez2n#LIW%9-4j{j4Oz0%tYDuv*D6@6mRMF(MKmuYQHlav- zT?Hn#0tRY!$k|9FPpA64Tvq(-0C3f8qR8h|g3Gv<_)-eTm*tyoIbw7M?`~zS%5CKP zRIytT>SBfpx=0D$nh?oz`%V%PS0u8tU%bMkW^gYzUC`H(#V!g%BhDRQSxU<{1;A)y z%W8Bd+TiM9=J8)v9Er$u)=;GF%8=J9(NHurKvP{HNg4Kblp*->*(S z9K^W(h3)h%;OzYw=|pp2qUf_Or>y7Lk^G!TF~Cq^!_y}>e3I(5UXAF3Zq$+>WB3%{ zeBGogiv{Kx4ZAk-s2RBrL|j&Cd@bVp1J%DV0zrCiER@wEZXODPX|1txO-(t=d*UN1 zbI{NHuWF8J4|bOdHG~hYrA#L-^PSe>9``D%iYxuM0SHJXVs*NVd*buHf-e@KYjv_g zY-Ln|f-}Gq!}Hd&1Us_-GNG@kGM|6ZhVGK8Hikq~UtzFZK@3EKfxLD_)7Mql1b#c(gS3{w5I$#O1SC%$GVS~+zw3>UwmJ>}x~jBB{@aQDRnK|HV8hOg3CPHvZs6Uy*$ zy>&6+wAaiheK+y;`mQQ)YD{4Go4%7Yq}k?&DO+G7F|W3~yGq|}IR?n!#CkJ$9yAB# zgqTk3B4wJJtYp$C#1Wr$Yg_b41W$}N1Kyf`ht#hLQkjlppQr-zWxdJhzW%*g}ifX>=7+c1P*E@i`%Fz`D*@{QROP#lsh6)zh+>9*+ z1UQb$6{*BTu{y2Q3l80@4zz$M2RzlU^c6Akh!H|$(LD}O$j72)!l652nI(tT@50%`fQxZvfKsav66*x=YKhDxtXMu-@NP5CM7sebmO zsm){Y4mm7NaflK)LIaW^KsbErc1ZhDo})C=(7vramO_p;8TCxbeXRiMHWK^7wyx$N zgI$=LlJoeicRJf;TOVZVsm;HxVZ{+aeM&H!Dr?=t*7WPox8c#MBBx=XM1ONW4&xZE zPMC&L^^#zGpPk8IXzZl01=+|DTD>2cQ`s8cVDO?960fMOTwEGj#E`VIf)p^Q@Sat< zc7`F(W8~bZiUeQ4NNOrN>;ZcqZ~w<2D?`Zy&H&}VnDYv)p|Z!T3zp)Rq4~A4U5&{- zsT!`)@1_m##?z(3*+6ew4?lc4%3oWGrT%20=Cs83v~c-!#ROk4Zb3hxg?mZAMewbW z{-ELj&Jxj~oE9YM_b}1-h3{iN_gyueI-RX|{(9H>!GnUzQAhYD>6;6Uv ziZChp&V9nC|Y>gPRZ22EV8M<#VX zJT)J=0YRYQnwlWS-5%%iXAR*@K7@5;kHwE(hQk}{z`1Z5lM-29btm=e<=nhJ*_*eD zJmYZi)HPoh$ z^BU?SD)G78 zVJNVBYNOhfolqYP9uGfNF@Gm3rwQKj5T-}KEh4L%nqNsfR1J9?tC6I}P8uMzl~Mff zb)u15P}mgAQWV1amD%t~tYh9m=flfz;vwqkugBlnO504Tc$LLrw;r;Kz5n`6{`X7& zvIHW2h(v>*+xG*+LV4-xduC*B{qfYC98Fuk0nLSq)+(J|h6OP^oS6HIES~>;)h%>l zR#O~zSD~D`$CgcvSPcatqo93$zL}2jHg*H#L}v3uNPAm8ZFCAKdPgr(nDNmJ{K9sn z(-2V&O5W|MkcHf+Gr2sHAEWP1!A`r;w5fK&zBf;un@SiO&?j@X{+fY?KX;hU78Jo>c% zIiB-*iEF!$5UL;+yX=y(*>uB-HeT@&8XqvA#ZUp?AARAtc)=)5VCMZWKfSH?Uh_-S zSffHE-i^_2(?OO1y1>ehr9*A)&)du|n`S+^i-h}7?jrIZeFN;RQR3!kgZyulgU_}CBd z97jxaoOxz164SyL(-8;xl8ZxJ4Z#_Kab14VvsXnzDnlLVQ7SH9GMR|1(CL-0cklTVwRL( zN}9v0tLF&x#PlearC>HC;N7ufDJ(T6lGRW?8N3OHlsJyn&09K>yKLq1ef2y@Zn(U` z%gdG&(_eTzE|?9f>_@H$I>;N@1psW@Jy0bbZ&&lcB9WpRDMT^y({QFhTOV?B@1%|5 zlhmJL`tr)zRm;wgmD5e{XX7qzbo0Pi-PDtk>D9*y$ZeV3%-x2_>1VUJgiKnsS87#Y3m=yWhPIYHg^KZq=DQ`MQU+tUN*ly}thUh`=@>QTolj;?1Y~*44Gh+V zlZXdHL=Q1m5{dKS$a3^U*z zJ5C?X9H31qlO|bOo~u|;KbnV}Qyr|h&}JYP2_TA$RNs$+YGP=@&s}cLrKh9vqb$3G zu8Lb(N*_tH9!eL`tanxu>B=MDhjZDQib zBFCyAWE^m=R$W}2J3VJcT;DZR&~@zc0gq6cM}o?*u!AV{Mm68=>zq!Zkq%h9gUtHl zElM-L&yExM64vb%Da8<*Q<0sUSyL4SO5p7WtT|#m=Sc(!@~<-Yy%an|Pn{;U>7#Yg zo}n+ZY4s&tbcoTNj+qL0KqrcWbF1}%{LQ8z;|Kdc4|Dkr>cMnq7x= zRm;1X4QTpX0R5MRKQS}^cVK4rz09^qmwUY|QUL%YCXCa*?jrO|mnitjsUdRlosOm! zU2T3DFLXc1C<~C2o31T$3YnFf14tg`>k>;&>AcT&N%cSWBlm57!Cwk^en3zLY#8R| zyueF_hT8nGWoWc3&J(b9^`~|=Tkr+?4Y@|B%8F2OMCXsJgPhHnaL+1v-)pf9mtsjQ zW9eYYeyu_*7;en6p^;b;Pc60ytgY_kk9+z&3!ewufx{U3Pp>6IPiVl}G~+~Iy)k03eYG)y zV(9@se9aM!RZc{w3hiQW>6?Lq!AIW%x8~&5;>0S3 zGScoyOlhcF2)Ig1t&zvBwe*wL=bZ0hDNjn|0b208BeJSck-aeUx%5VsXtukQrls)b z5b+_k2BBU!IO@eHgVx*AzSB?M^C20No7NKqC7ruEb2m%O@IC$plDDpu`JMWU{l?v--N8pUI9ha(1;L_CV54V+dHkex zsv*4KGcS?mnZ<2#TK!QEXP#>naS9(dsK#`$-bfVWR4(a+wy5wMA*aOn+D%5?%kt#| z`#v|%mrpRLC-Yh)4WX8rI~I9OZOsN3jd^UVGd+IUs!TW)!Jd)6dka9+HoQy|DO6z@ zllfYv5=;&K*&i^KNC|yGUGJ957{Wi6)3a)xmH8UqKBUQ{=li4rg4tWckxnkhN0BS- z$J?vH{!qJmcSx&f5}p$8cwiXW@Uoqyr(&o`H=rSz1-t;$UWVLe zNw?8G{lWWqY@!k`jk@TG#AII2N=xO@(~2urUQ1~8fnTn%n%Vl~eCE0=ENCe~YhV5D zcb;SaG0y(;>oZ@M7nJB<;jR(R?j`H*TE=VxzdC%J5Bcge^>f;1w^oyAS4xGp!xKX4 zk#A6~#FlTC9bCHnwQ$JVWBMNa{ChNp3EL~ke{REn-XZ{%yCHdMTIOWAZIm&zLicvp zBX*14#2mZ5a2suao9d9K4+q>Y2DV5=d-q<5Gd9v6cuv6fv7Vug7y)-In0F^ zY>~dc8Z~`vZ?qMkwqCU>JEPt)TC}dkE`S+TVQ!Cl&Vl^t)bTLFAGT^adW+FdsQtXYV7&OA{pVw<0~-<+w^y7rw#e&Kt;QXg)0kYMpZa(`_Q!i)wJG2-^N=fKd6h6XG=vfv0Nd_crfM*1GGTWu0+ ze0Fdf$&W7X6OWTw7fm`@r2xKHg7yZ=c+E?#*pMtENYX)EC0vE_0m$Ub(KwTlRBDGO3z8*hI-Bt> zP|N84h{hScNmSTzoATBfGpoCmRTE~jfPCcwVNuV5^J^lQ$cCzE)l*kCIwLAytU+z6 z3v2a1HMs!-6>K(@-?N>JfBv6C?>}t$SDP~ZAX+j*=XS}=m+OZ1fV}IsA9xNgt%O89 zaDizX$fvv50OrEe-8=!}oEGHe-GEnm15C5HhcMj-C9$0eVNlZq^SuSRN=(3!boV1dVHbVtREnp#;2slo=#gX zXKt&%ShC5=_fhsNbPMgjiLaT%9;B8>(zRfQlX{=q_;WkRuf0x|aavI}B|+~9gQz7v z-)sVi(ek|%g9FYHa>}Kf3<4oIpjH~60);$RM4Vfk-zGkLWl=~?NK)DeMwk%<--V>> z76_YXLkkNo4X)asdS@E^EY}^!K?S){hbKQwJd@ie&H~mdIuUS-DkPCekd-DRF?Ytnrbq4Us~v;@9!kKE zo{qUyj=9z*H&6jeqo=u*UQ1smy4KL1wr-&YO_H#j#o74vpK466_BrdhU{6U8 zsYNE2abWK$%Xe{>@)Qi-`}UqTlLc3top24B+tv>W**b_qL|KFqls?xwWCrRu8wR&2 zfRmM!sr~GyFH_NS>GGQ{#c2452r^Y!C#|6|wYe8;?9X9|UwNQfgmeSST{28d64yfj zR#`(m{qd8&Aw4I5SN0YCAH%zUeQuZ%Q+<-YMV39@CxR) zZltHh)kkd0RCMaSID$_)5bOs-pjLX<7Ni z+(j{bWNCD!;a45lz z^K~l@$})K0Fo2520ExUpu6Zt#neyh!zR$iM^HD}bsb$b2;09KWv%Fj3HLn8a%jIn; zpi)@URUix)@KW`X>0fLZlV^{dP!^ z_HP4~?rJvAuO9SG&D8o^!O;LTS-oX7aSp8OOyczdrbNEk8h}QsH~g~9!!I! z8t5R_Se(Z^lG!^{mZP9<%WnBYq^}Adn!e(a+!k%FcEwuWgA2~p-st}E8fARzceIP_MU>H`eI)ccq1co zqTNOn$gM2b`>R4PZhXwJKQtNfovJe#K4f zHJp#?&{?qs=!J)$1`?S%a)bv65d-!&6WnIzQDi;sUHV+*q;gsEmu6S z5nCLlIpsu!0!Zmqp#H~&jhyWkDqzeie3_k0EP&y%M7;c1TH+NHO)q}DPX!0`^<5_T zL{v90bY5b&xEkgXv3&@QCs0Eo$0YG=Tqhp>UO4|B+4kRnN&dZd9{;&>KcM_5TVH<< zBxYm*nm*_4DV!!u2gN9VVf&6&S8u7iDsDO71XnyfLIYV?g#c zBVfM1yR87RXj!)H1wz^m0Dhl;vNmaMdKoj zoRL;~kE~TI zfI_`fq_jLeiY4Y%RYf#poA1g=v~$G{20proqYj$Gjr;Q{qp5DqG-1{yo&0G;x^#$L z^?UA0gb1u8K3`|znfzQIP>JK*XI*d0hwmJBFbmkgbTnj?wUAWm2Npn`=4EJ6EsA&9 zj%?mvFsYQeW~r1DtS0gr3acJ*$wm2!+ss9f9=PHb#JOoQta$thXdlwavwy0|=H?}1 zD7uu6x*3rrPsEbD4clmWb*#}8kOK<#?gmOehdD`~_@xKdK0*NO5V2p_#>ZEkY+iGF zc&ukjOtW5(sy=|cNAu8V&YU0!nQIQ6(KBP|TknjIhF7>wO~`VtX9xIO(@P0$ z;gm$h^&^8U;bZAi*LN0C1{?9MG~s>L8;zHr+jLBPi=(65n$t+z7(oaF0vQU`UWd$ZP-M-7W=iCG=CGD?5eeR8;LQ}gD-6A zX>Iq}eAu7=y{P-T{VQ8`68{aHF|mo=;O0&IjKb?osLK=D!h!wmN8(Gr`C4B%QJb^> zDtv2xA>PMN+5h=Bpv61+-_U5qMz-S}XGp8CCXTmVm1OwCldun8&;55xCwNjh)756& z;oMNu`7&3<%sV99WQn)Y&Uigzfxs^5%}_GGfVHBj;~e_*ZiTJdX}OM*yUFx(s@7Cx zlWr@6+YLq)OYli#>%mf>6c!Vi&EoL7(nyZve5CW%pl=>Up*$ZJJ*uN1VeP5ORNS=G zY7rx1menh!Yyu*jsOI@bL`i|HSYdBCdh$WUeVwRA5?18klka*|R;>DScLESSl1#tp4 z0rtJaS6+F0ztnRu1;ma}buEsyF+STv_?#JuztEq)@~M&;1hn3%Of$*sg9;Ar1EOO|vJ z|2;q3tJff>pT<~^C}`+x0eOp8b(o_~1uR@wg&*A#sB%%N#Pw;NEpFqsuZR!7hDv| zt@I*>MqRRm!LF2KJbY)%>@VX@5_X33$$#DrVC+;2pg4JZ_lL@J)a6mJDgC!nfKEBiohr$T+wipnbj)beppM7MZhQ(4Sz2 z(<-o|KsqBV?(5sSG$osbaSn6cQ_caXDLCRVT9k!>JR-}Yia7}8p@5!m;1|{{*)J7s zvY3h%EXcLOdW3cM8hRw<-S`@FrwQ==aFei2Tf2j9s-ICBo_sO&MGLIijO-%a!Wj(b zA=hOo%|-0l>r`2Qo)&YvX{QfrBkR#OsM{EkJpo_WDknIvSONWD>#sqLh30#v-I^Zu zG7$GrJA+FLBWFY~xVN&zw$(KDM6O_Jy{fjdxk5c>#Vw+g(swrdEZVE@^M*0O5iU%_ zldi-9RVbi>L%9Ql(M>R>!VD{fxy0aT6%7J5Hg}MWw;E^A_E93 zrL?N9hXp!8Q?WV2zhumd;4T<@HMGn}$cLx98Uf@*Kw!i6IEXlR zXQ#iaMr;MbscwJas2iu|5UE3h7sDiuuck9RgXy;YPmqVxxmCoMvV~`U2(fqgWYe}U z%Xk--BKpZ!)vOn7oB2|b7SWg|oTy3H1Ys3-c~`)=Hnc+C8`I(!`FV9A(#TMicD%2HEAiqY8)PE~O8EWed-*K{Th zKaul@=UD+9rfJHdxB;KC@$uWVgbY%}oK)8XhXx(IOfOHB>GCd%6SI_lJvdQ6y}J#~ zC%6svU&(u&faA9gdTG0oq}XG^HGvAYvN4rj0-@DXovPL9`*-cxRqXWSMWAH>KoIAK>%~I!aF1m>> zwmi~st_y1WYVVkb(bXd*xmben{4{uHgAOtd>1Qp;K)~FgFUjrI_%+X4Du^R`+0%q^ z;~wMsNEQ&z5~l5;MBAjo%-t6*g*}w2hzt`iM0{{NL7VM?Iju5h=n-?(xK=bhe5NF0 zc4_nrTkri)dL?9_?SX;1+Z_^5wo}1@g?a}?NpZZ7t!e92!)xu}LW2Q2kP1Wbj=$Wb zZQMRj3^Z!ysyxb4sHD%tEne1Wc=?=KYEFjHe2Z;>;|wuq?j%F3qXwLTkr+{18U zS681I&GIBFlz#eLE72i;lxN&$Mlyq=XgpRY7gaKI#cTkuKYJ9Os#@+?FN-4LhvTBK(!>NgbSRI#*5o zo!jRDs;Jdza|uaNFz2C$@^a3$gO44S<((>tb4Xc>Mnn|Z1PQ|qknZ@pJAQ{J*Lpfh za!87$C}I;&6Bhy!SV`f=ly2@4!r`>w^_sDC!XcqFw7XiqoZt*N_g%fh!#{cuvFiV| zrGNi{3-~X0Ios*~;nm|i#Juch7fp(EMQ~bFtR@QqR;3f3jwH<8N(*%1fWy5*bUrMk zuR;wyJ}TM3w0f&MY_kd4LJPEBxG_Pf!jQBLh;+!3LyTUXfcD2b|3x)Q0 zC$vl67PZR$pw)uhTH~)TE47pp^jhoCzgn+43rIHjB}TGDs~9}H2Kcm`lT?g*+smEI zTubzWf)Fe_2>Qen%=?^=z}+c?i0=V!(D!t#6$Lx%bA8Y#@~FA=U?q0KMN7DxE}t`a zX9_Xwe7+dw6%)GKi7MaR`vnd`+<8CeU7A*wy|i;fGiXS-k*F}Ap<3MtrR^ycnnB{R!D!11cDUIF0++0dt7Jd;T^KO8=aN!G^q;uzxbH5yGaium*@0}cE zpv=gkP3Jtfz)+^FbCC$oXQX7kVOC*_RM7WBSwiAW=18qy@nHDP*l=k zG%-Mp>p>ZU+3n5XQcQqiIp)H*ka-Qntk3!0&L3Mw1o6pgL86gPf!7U<8ha<^2y~22 z|Gs(i)JLndxd1+IxV6)YzO%0$mvb_{n18ImSnFQmmY~&acM)MPZm{~7^@1OulTzX; zF*wT~D6s|`CFs9|QzDq_NDLjZy{|#A`zt_4W63D=sA;Ae^KHM+D zp95_o6c<^PTg4w5H~0T=_ntv*X5H2x-EOzLoiSiA!L*4s(F6e^x!WdVLCca5NnnFX zA{mjh+Ytm3jmaX}0tAvkm>_~gu*n&N5F%qTBAN^)c+_vry>EY2Gk3aXZq?lS^hZx2 zRq5fJefD$C+Iy`f?_kj$R@%B-GyblLH3qQP*XLQ94`Wb)_PiK9J6%qqcuX?0M-6&` zomZC!x?l+3`fDB?(iA5M-j#HdLYujTOVDKnl`KP?KdLf-0xg;|(1BSLi7aNGr~Vjm zXF?w!{Pbh_{yq63%I9xfb1ARX=Ab(uJ_`eUNo}G*nZN4Fy5d!m8QriKjOuYu`ksD# z>eem%gq?)p-PRMmL4CQQU(mRp*u)tFeID*uBnnV~6N^;38jU?<2o!=sx6KMeDmmWW zqG)a2Ko8GlYGmuj*@oZ&db6LWhp#BwgpoGuQ0|T?5WcnMH@XQ-3eyRZT%~Ys0mV@-RF?yCh zrvVOPQrQ=Jv9Ohs;SQ8m9(J$xRV$<(WEEQZjq4Ws0o!s7HqvBpWM=w%oLXLa9Sdjg zBp#6cc<~|8P(2#FGI%E+A&y+$I%+qt6SUDYfBgC_60&121Jm=&)jYQ#&>og2fQT{zCG<@U?!>>#hulW^lGg3C{x7f7TchA}xwD#Zw*f81YT#SdE+k2C#=^{_C#%eJyf zfVLd>1k=!#1obQ5CO^RFrA*cK_Ho1Dpg|7!((^LWevQs&CTq-8TZ$%#iAkxo?1rOQ z4G`6l5sca&wXhl6&&iF(Vw#%#jc$2fWO{=P;VVh1CQN(`U4UC0SmC4aHYQpcUKoAP ztc88DA&#Eaf#`?ikLyGPYQYtIa$l$XDSzlna_MLa&8>qC%G@#BD0!S>r%RLdXQe;~ z%HxvOoU``n(XFt0807luQJvDK;y$HucY0LjK}LNx$Jz8>tK~Y0h;I4{|3k0-doJ;Kd*Nz;9e9K>Q)Ps*KI$ zX2Zb;9}&hn7fiXo3>YltBJnan3W!hDPICHz#&Buis4o`%vR_Oy2+8Kq&a?v5?;JU@ z;@+b)EwZ*58nz(Ot%I^JalN1OS`2+!t>~hg!*_Z^y0xhl{S?S*nfY%gWeo%dSBIC(%{TY8}pagpmgvwu*{lUl7W;RD6Fv@g0X z_!)=O`)zW^kLf%S{$4bN>_wiEAy%Azu5qBZ+^IMfp`RXwUi_hvnvynE4T6JDtAK3> z)#L|4mh-Qcx*eEezPoxP?d;X1r*E~OHL7-E?h;JdP;;fOqHYu8vBfvyaG9x4)!b4l9 zrse9|$Y!F=0miH9cA_Y4Fq^2$EA!+GMV=+fa zLdC$Xd3fRzYg|`Nrp3WW3D^X(LOI=c68-7X{XJpbN(q;Pye>*P(|Hip`h;FRS_(4` zDjJ_a2(Z@0xkI|)ve!B|YUVzRFW;LUUjJk$xo~Ctssx;Nk} z+vYQFXMePqJI!9cqH6+Ym|ri*KK&p700YeKD+Ef5UhCV{Ay1Y%n24-z1E8Di+V;9u zX=$4^V93|7R!NY~0!`jpox;f2T0OqQr)v15KNwPL8>xx22z?Z+lm&9sR{udB7t#rU zYn8N9wpSeLBu>&fi2vTKSe^5(L{^Ndk^&!`4GJig>?{GY31;26an%`ae z1x@<-R=(FZs>E`4iAaX2LZ`J4hxWv`;uL)c`y!jGt}M7xi{u~kK%q(n-H203MRPEw zZFKvPZsj}0QL>)n6BaURn1@@XUdzQrG3LVPc9$K#AmlPf>hkk{JW&3N_y4Uc)8{8$ zJs5kL9j0q)f6(`S!kgH*!_wQRD9WrC3gtzGhlBl?0>qAjd-N+#XXkg_2j{Qe&h_-n zzi8ackSNr{Qf6e69FSC1eFKs%OmAA>!<9%|y*SnVOP8^`kCafyl4crkWYlcA+0T_& zbub5ethuw7+R|39Hy%M%FO9HmO%CRNE&t%|ARO_FX?H|4zHsM)d%Q?fhG*P!ht1b$*w+>tNb2 zR|z%}Rp!!44rMM!204D`tQ$UkZR3K!Y1Pl7bci3(E8Y+Cn9ESTM2=$gukN+0gjr9ZxLS?u-FwVa8gmCS6r!!apr4y{Xn|CE#*~ z3fws+SpXYm{4^g|F@C>C(AxMqh4fmV2}>{13k7R@*dJzhVAChl;#3<_g4JWZ_UoYrpM7RJNvYy+81{1#&6d8 ztpKJ@hR#3o;Vs$D38tCap#96$oy{tcLMDeqrw7wtCgMFN(;m!tNG;j=s!s5zr@r{z zq_oldy}gFW*A!s-Zu`kuqd8|<{wb+FdyEDn>C$^wlNu%bx+^^$i3b$S&9jHUaX~BA zzj5URq?fdo+L4}Kl%)NYgHBN#R{~u+3w2iv!}7_vv@+!j9TtFo*-T1?nJ>glp`C?V z*SYQGG~rxgb<4|-3WgM!NP2)vt`DHZa$v;)r1Umg0ANKhY3BXldW#@!S~hcW=AMNZ zlV6Mp3u8~azCGo6`#j_N!pYB_UB9jX0&{6hSSycYyz4Y(H7*n*IOm5!tg70X8A@Lp z{bHe5F;k;rh%UN3&}?ke@Wg}YZX@PpG_O#=M4_l5M>xUck|B2%sd1DdMGKrskdJb0 zvZhp5f~=TAUlzDjJekrRs!5K}X{c|KbrXjy30j4`cZq7Y zYycNWR1tJg9jnU$j@Gkt7bFB!)M`J*C{yagz(egOlBp-Q zlpypxl@076oqn8NG>5Pu^KWWF9<-!=a3IG7P@1|ny#3!+VjIWF7U&uEurqpH88eO7 z5a4^DsGAi3OI1qiF&WdC#Q_Jr!tUYdA*CW8u`8H_mKz7u40!w zsOsx}30)GCZ`bU@A;_o>uG`cK4lYH<{r=t7nCzp9PtY+WcPF2mV&>uivty77^E=qS z>y}DTNlXBGhI2KAC@4>EC`fF$>Q;SS3?O$bRpubYYr$d^G@H%AtM9CMqmsb+ex8s- zyZpR-!F%WKY`to^D1BkN1{f>M+s>UEoR>b{h1U*otr@9093DE?0=7<7vIz`lPe^-@p z=3{v6=#%j*%5f0UgV#?EOLm(oCw^NP*tf?5tKP5VlV7$ajBDLFfi?& z^XQEQ`5gg6-|Eg^v&{6WAmhX4?G;$5x5{!JHmX-PvO@Qz=wEN{n6CnSG;K~lFRq@f z=GM-L`~mKhEC(Z_s-nHQx^4&bS^36#-M0FiRX2%%$v%1}*x{)GulCb3G@u}TPT0Tq zFJzsylpvAP{%kyV)mS3FjgxS3@Q$z>%N3dl)a82JnPmnkS(>)h4xPSKDDt5}Tw%=O;z1zx* z@$RAN@SDHm?I)Wpj<^q`_hoOz1s7`?p5q|{8c}DsUzQ-A3tC?bZ}exw^~E!q5}y0= z2Lr+2HZ(f>w|<}bPXa26O6OCNJ6<)tFy8w~J$bLB4RaEpAcQ#FzRk<7_0juX{Bg(h z%}n-m27?tv^@^&7ffF~%KRM{|U-RBixe`<^Y8!4*OH$rl_06S1MwHG;7G-G$jZ13( zG~hdi(ML$a7_enAoKL==KPMz#DCOQR1L{8+{;pp|TFnD!o2cw?4m5!mJl@74H5@|) z=Q$u4CDae5&(zXXd}P-9ux?ZdfWv;{awZxtlJUk4Ap!h_92p7(7*beJ;N6EVLyQzc zpze%%Vb3VKKCHVcv!rR3>j(DVLiGRR<$q)I5Es`EF6BiM6@}B}Dk^1=a@M56yV8KN z;wH-P1c*7M`}+YI(cPvtp))$v1_W{cp*jRE+ z`JnU#`; IJ=`0-%oiB=1*D?)H|D_B9Yl23%M><|4TxN+d?c^8(wZYYAo)8&EdXh zhGiL47skiJ^vxP5Y!{$ftdA+->8B0+!i@onm za~J4#)K{2;jD_?A9Gy!9$v$f7ZXx@#;K0aCSmdGf_CJ`*|B2%2XQtq0NlIz}z3F72 z2FtuUM2n-85b=3e`c@a$nP;*M3il<;?_VB^hdgcK>6cC7E2t5l6tZtUgiRW{56R!v z8L_!IICcM%m-IV#_B35tb0j!*y}BUIznBpd-B!@*f3nJNR|*Zf#K&+9yW!rneHcX@ zSoQ02Sc>n;c%Tv&7u_~{^jf@{MrUzHe}HkYz*dSnT@y-E2*r$6xlKm*jvux6KK(zZ z|3INqK>jMNlWKy$r*AH)ho%@1mIWzxfN3*{If)CYH=U|DDt3-3;jRTs$gBma&5g?E zEW6TWX+^fWNS;z*kd2~Ld83SEz%OvHUN?;Y55}&GkBpBvOlZ4SBMG31ZQD1ocK06@ zg#9|dHIshNXfBW^2f1!U3sA3w*mc5mvkZ;RBRD?4f|%Og1#@yp3sUks&)Q} zmdnA~%Zm|w8*cL+(-n8YUAu*s z?UR3$7dX!R>B*7s-wa^>i<^qLM3|twDzo1P8(+SLf8Z%ZQdxuxGe+WFyfBe%^8~IFf;KSxA)A1jIqp>FaD26!!Q~_ z3b>$K^OY||aN#QtGLW4Xx6pj@^x`|Ozy9M+wUp{+?+&d@tx4M9i|v7uBY8eVLxsM1 z_UD#0iDmb}fh8@`Po39=n)m_sLkkr2kA&F59YUSov#=%F}(PoPiG@{zF-2ceB#$xm;F)?dEl18q0l7Rl85#$f+EZR zilkW@*O{mP#hm@eNB>(x0GH%_`>5Bb74n@IH3ND&R*a2br(#0;;thpz@=^Xwnyeki zzD~W8d3opN)}(x?vonAb{^Ryg^JW zCB0*AcE%!KlzXJY`Qvt#ufoHcHT>Y@1Qk+GiKoI!RP1PC$aR9DKo2vinAo+*PFl0* zxA_HAWT(gMMX`@L>q_J-{d}MD=&MzW#i2pv!=G0k}OYxV=pe)Cr8lIYY0F=5^;3gDd8T1#bF9BEfX`5mgN4g@DvI=0Pm4#So%qX( z_hh*a@_81k$pw+F8Vs!``=LRCQ41h*aomDJhWi(ZXn_6L=3-RzVu{4+PLjZ(%EJ$v z54DvLA#a8b-#}YU1+|`g5J5Bw49YkbT+EEn{kS92KJC`Pww9q3pq*u+(}sl@IzH#l zBQyu|CBJ)P`OFrUFeG~!3Thaz7%IsA{Y3Gl^4)>>VEFFh`bqnEY`#;*ov8POyN|TB z&?{vlUgb*AX0Wkt`o=e|jywwz`;b6JY-=#l9^tBeoVq4YhCa+GMGA!*>+0jte#$lA z%*EBFme000*@tj|KRwoSFTjC2`UwRPv8TzD)vZ(L?rBi6j0&(^Vy1D$3@uc&bkn6CQ9 zMJPBTICZmy{NZR4O`T1UiSr{1vmIIHJi zdaST!;zregduPsc!gKFg2PMB{8Dja$R6p|LHuLL1zI^qVPEfe?Nj?Tv>$X5DNHU0} z!V2L%lQ@;^uqGOTQJsf)xw_41Gk{3y`1dPZC*jq-I6((17$o`NYr!MMR)WMsF9m6- z0PixW7177+A;TB~aJ+&HMO9n2<=CmwK&mhlA%;#86I(1GH)TpI;yUPTjss zH7RUfkojDCv!VWi^(^V5T4g(c_flxTJPX*#QJSsR*coUKXgpkh6^hI6c~m{M;`qY# zJvEP+O6vVy?bQ#kWSZ1sjZm<^PtPOIp<>hN!y3KT?#a%C!NM{St)!BkYj~AY7P!<~ z^Pg!262$=7Ecfaq0QG?v4=rn%NwyS2Xa=ti#zWXt!T%UxF8 zMOS_*HIyM|UI7$4Zx%a-TW72M&OW@iV8K&8WfFVoB?XL-k)3sbnVZd7KElMgZyRpv z*cRz=RN4r;`HYN%!}d#4 z18f^KT=>RHeh7NgYK-z!u*?22-kWo4+=x0@62T|Q{*-}(hb3{GelHE#N#3rpuH(Q zwU19i8()muG&BRk0%(a|MNWDUnJ4BJJ4xz8vnvWjPSzc?Oy?bX;!oV`GJayBd2?b= z6NXvu<500wkuu-79!Y=Bt9H2<*^DMG&Z2R$F9Lx{LH$4dGX8mFZk8D+FqsE0e8r-k zF$tlp5VqR36~qdq;+pMBD$q!hYp>4Y{#@?PxupIcy- zXq=GF1DTItF(6q6Pm%$k)7Jt&+CPitaBPJQuJ)|ZS_0eNuZh-xbUYS!qOrM2QQPjY z&X)Pb3?p)D{#F77G=~}02)g74w@!UOA&l&A8rn}<3mq57W8l&JaO8rF%wnNgLq%)@ zP&Q@g`UcJ*&nfs13>*n%OnLt|PW(K6yv;HZvged8ia2Q^qlKilZMz9JuWi)=6Gt;@@NL)DTM>JyIM zV!!K{C{7Lodc9ct&w{B~(?oz_4~XTP{9F+JS5rH4hZQ z>j+1;w!9b;k&bSH1^yfoML6cpI$G+L*yynt&TX7t8^^7%?(27iNDqFH=nm8J8&OLT z9zi+Xfk0^ds57xh^_|EC2)4MFRKG!ZWnH1=ZSvBmfY=58(9j1vZLve`e zy*g=28&1i)5xZGfG9Q$sL{2VWsL#F{9AUNq2AdoIkOYIYo>v0cOS}OJa)>!Fj);P; zFR@pjo?hjdnDP!_|YUdBoY*aI zTiZ*K&rZk?Vg~gfk;*!CjoQoX6pojf)(uTz;|E!GAneu)U(@d#(=5`@Pn(3`67^Ax zS`pq6X_=hsQKV=VRR13JjdS2^Q?PA$(9HLPgTEP!yi)3#;(MHvk`(tigH9rHP8*#4 z6-n&(Yxl6CsTvn2qhtafR2o7C#UXlAsWch(-~@=}HaPJq+t5vG&xh}!PkFPtTkNj) zeN^ifQHq}*MK60@e+|yj^|-I4Gq{c{`Muq@X3TBT?FPtRbyHk`qs_2$_%lnT1Cv|& z?C1R-no2vOXtFc!GOho$js%k3CW;R_Gvq#4;8N6{VW|VWeH&!Kd1S%>5U_9URqKD; z3Fb-iAMzBs?Swd8o5&IhM|9--aPKHH+XczAB@Cu*z&y?WD?D)kBb}@Ia%r(|07BH8 zE3yc61}dNU-iWo6=0R{)5|e=H@g3D&2y6hxJS!P7U3>72>$LA@5L?`U)90OmBVUhN z1uV1Qb=y(`mI1t#vea-L5xHBn5{$N3N5}$fT9bfqQn=cA&FjGwYf#6_3uE7_3|JPj zs?D)37?@^uc9J%IHh6Y@?AM2>>G4j@xOeP(`Zhh6n{aDSIPi2J9<{c(eSm9bB>9gt zyJ;I>KQip3qSBdWV2~C=+x}t`t0eIDpcuJ?$F>K|U7PMo8Zo?iE8mjmO1oMNzE0*= z67e9Aql71w@7ch4JL8yYuW+@V0WWkbjIXpXXHy@)Xf?@JU`w4^?6IYV>Bi*lV6k&G5RKwH$$S&eAUHxypT$Q-FjP z&CnIz1Zm!jEWW=ZqG2%|ee}FcOX*RAN_X2kXiV03+b! zEC-v%O*>A;V@a~r4h0i9I$sb+M4p|EJaPxaeJbX$ zQC!o!EEHh%kYxMav(=#hfz;s{jAUVG(7s8Em>iZ>+}f1AM&&64RSeQaJWcin77L&4 z$@YbeCc4tId;X-}xn(C@_X2y|;-LC6G$J5Rw*Why&1ZJ%ICRfPrIRe&cl5#=>=oeQ z$q#pI@<)|snP$S2@mhvzXCFtbc(T^~jkc$ktKo?RH`Hrc_RZ0IS5KAF)Tn~k1@Tk`lF9)y(TG(&g7{<;?9jJ`(SZ zuzGe49DxC+nR}!KT|476OEGszVGOn|%VH1=T+Xquz!R2J-p^OJZ^__yu+K%Fc~&m&A&1J#wCL^ z<&`%igE0tBs_&gY;)x={Ii2RtMDrS^eCGdEUMQN;0rI!xE_7L50&;fm0>w5 zksoocSs=oy;FtKG1x<_tF4LAw#s{F$%?LP%k1wbX0)xGKq8sQmul+_-%V{!G;mU>@ znp(q4s(nQvv5LD`GDppJubN!R`yscJ828~En_wn)M(_2L6W?{@L$8Nx)`V^_H`F6F zb!Km!uE5<;k-_(xc)L6PjT#ms96KdavnQKDK~?*KV6e_X$)nA@e9Fj0G@2sSd0MYx zG0&0X4!n2ouq`& z;l9#os;~NpjlG$=2)5fChHYMD9u#xD8^89?{b&V-Hd>iJD~j*^0h6p=p`gY&;K}&x zB%P<{oVpl>tqy8(QGd3ZTH<&g?A@?E3y7A?Qz zqLLUkp{pR}=inC((^s9#;HWi3bQSWO#=UoHy$CgE##ttt7}CFSCH+1C!;I`y?WfGc z%&K3l5|(M-`IJn|{nH zaDvV5^SMs&^w-|GaWwj@CasY|{ zp4Sh}U7PHm!BeO0@h|d?|L$;|BJ_4MkK@kq`_#Tn@Y8?P=*9J2({zoxck@1K>J=qE zhe)2X%p|#2ty$D+FfbH@YF)p(z*0nsT5no5002SA-pc+kcz4{oV+8KQ$$$1B4r4^d zwZ^8cVye&AUPi9^ozns`(G$?0MkJCfkIYEf3Ktpn#Lm~ul=BXu3b#uclPi2h#2lhm5y}ThS*Erh!llLDb;R?D zFjNCVo7V72#d(JH;oF;vKO5RMO-~^6uWa};45h^uY42)2cNaXldZR!6a_->STnB}+ zllD_AGgbEyT>kZXzv#gkrk_~fVNOZpv9SHuK*z^TE3wBAtue-i@PRP~X?2);Wv4q@Y-0lT$3dotF}O}JX;v_gY? zCx1KfcQJ|g-St{b<&n-Ry^hOw&Mqx!ISI4Qy@Wys2D+@Aad2_V7BP-oOHGvXexqw4 zwc!)#0piUbjDmSJMih@oN?7C8eF-~=UKVoBa&Yl%uL@y$7I^YZ*7Fhm5D}y6o4=He z=eEZ$(n#Wv6ur5d+t|hTsTu=R%{>i#COzC&^!RJiex|f@6S7Z}iMqGfqy33 zh)HrgA9&85KV762y#DBEgDrZ2Cu(D9|5uJ#PQgD}0RK~!lh5e)Xwzbp-+Sz)#uruf z)3b^;fqr^v+z=o5o`OEqK3jj82WvR*X#km~bpg;-)}gTbYtJgw)q@9;JcT$} z1fj+#rj_vWPsiZVKNG7CBdkiuR=L$&~Ed;5N{W`y0)j7oPq6ne5e6Zn!8-PD%~nWtJD_$1KCUL>3PuT*zISj3s4SS4$F3 z&Ay|Jta(mWj1iHe1lmWH#~_V*6nWTuLD!vfv(e&arq1$Zn*v89NtPs&CMt-^7u-A= z%NrZR-(sc3R@-dBl&*EHpkDJuZ|J0)8AdAZeH~SD8mK#1Y=*?AIG=zF;*00@Q6(VvX`PNdlB{1wU+PUxOPA|W~k_JLHVAy6YCdEN`E zk0NcNq&Y%rj2OFnS^Zi$C633!qF+;79_x9=9{Y-bzgSHBWzr+r!w1ZsZ3EV!Kc!jg z?tG}*;v0+7cS|F#xd_L1x!$sw`B!{=iq|plYPSEV4xolTYTN2hHkbHZm7eep{rcYLI!* z8SA#Ay2WsBLmnN`=cFdkDBYbL`JRh^`SL$mBpGVQOF@O}RQ`;->t;d`JK7e3BQZS> zMt?mpYpoP<^%3T??fAZN4?8~g=Rs8X!pBF4tzK(JVNJT5lzPDjEnm2lLjD&ooWFZB zn_}+F$=0nE+b7#GsRFOV-u}?kjc1*_+tb2k! zhZ_rdZ#vvvmgGqaiAALRsf$GH;M_fo4<$91NR*d6Nzu(;AQ;V&d}-<2FP0dQm@kAM zReD?VlYx;Lp~280I{y!%N{GKvsj?&ah;7~{SRbnfB@KkdwK1!mr${Y2Mc<7a5L zSsD{@_QfP%P?AQbWU)@`&s*dy-J2(Vx;1}(;16TADm&B|N>D8h!%dN7lJvgqjxN1B zCN3qOZ~U=WbaPFAn?|A1E4eD&PV^D6VGIaCC~S7Crd|6)zE0 zGW|VC!7jVU`=dd^5|8AUdPed++PLIL-~OXWyGTsek=aOjz9(w&XGg$)dafgf%leD2 z1>N!4aXX*?Z%3^0VsYC;lRFoTTwY<_mS29)b&Ka8{mTDOU%I0q_W2jA$m-gKsBu3A zg6G~g*UvoeLheN0>u+i~Y0Z-&?d_km8ahHe;1)WXGkoqPU-L*vk{M?xiKxr+gp@9h zkdH}^wXCL8s~-uTw>ic0vTWdqij0!Kr8CqFVAj}&b8r5_ii7nmphq&7mv@nK*mVrNswBS$qBJ^1Vkh8Yg}g zpT1)$Jmn12_p&{#O5TOMmT{w5lquZQ3yEic>5DHJDegL+J$e}$Qv&$$Vk2DG+}Hj< zr|yhN5lcUQEY?BMsmFq<>wg#2=6)gI;rymUXyPq7DBy~ntbGe+YHZFgBT0d2R6l+ii_$(+H_o$)+C+l>U0g_Ft`+TwITZAlu}~uv_1_ z4s({;$S{$u8}b%5FG9DO13Lo@_0raXF6I&K*5;~tf6?(5PABpj*2YCQ!7}uOwG0tv zsy16k&|E@1Bj?T*L}iLY&C?DV1%`K*tx|%keLD}E(lNzhiIYc)d_=Dzh5h?C`-)zr{u0+Lgn4Zxzb4TGI1sVztIV`$^D0s5te6=+>qoEA=Nw->H z?OHUc6>dhPt+fgTs+#W!`=(1y8B2IB+*bH$q4W2XC;9PTNpy^;O4WfsqKP%{(>p>9 zAaA@y#-)LLp}ibSpZ&N`^(%#wWPYv6bsa$Z^ceGXPl+a7z$2b8j%OeceMc=L72UK^9oFyPA%Qg-Xd0LR%2=VY|=;3Wr*r@O5Z z&Ugw`j#QA{rm8-TQS}ZB`o!Vv1MBUhm#$55^RzBc}=x?{zf z?oe-!&3z77T1#Y1N>t?0G_uegekqaRwwZxaIInM9ZY4GWcN_lfh@(4@^B_END1n*R z_IdEosO8b?;oD8ey`~FBkbKeV)pLI|KfGBVG6sTVjV+*EVzd)OR8GCFeNCA2ThIy) zw!O~%QN!{3(TL_pq4%M`R|n=onf)efofEX`&h27;8$Hd710uJU=%wksfE>w@=XpBt z07&rMNphur(Y25mpG19?M1$SU&TAmmN3w*}4&?-=uR(7+LaZFUumy$0H~K5pqV(b| zzy;TiipOk2uQgn@$qY>5Q(tmiSxUM&MD9{w(bir4&RhmEB$333T^qlN+KbZ{NwYYe0KlDxHo>uFPGU=b!4ZS8=fmz5vT`XVZp=N5GpL5u7 zcX-9al}q>FVErGKKd1*94w@11cl;yfioABwG#_9G&7W9P+YtLvK!NcRw_7`)x;Sh% zVQ4Z3ZzFEWj;-oC>WBtpM5NKtB^BeUOAE~^8K!aopXgS2$Ycz6a#(4``(9Y#_)hWm zm89TbrVkS~8{KY|$af?=<#`6``bZ0X&H}iP_4K6on&*)+^!Xfm?o*p8HMIZsY);p#&Q<`28XoK6uVireil-Lm==d8 zLnM3}j!=*`%)_&s8FxF-wPBKu+@4bbwuJd8z+LOkP554ZQj11R^z3OjzhmwiOzzdt z-1kJCa~bTw)gA36oL`YmpZxbiys#((}t+1 z)ariYdM*oVku?f54Rs@Al-R*2L zhdG*W(utSez?l~Bdh@D%*PS7o24HE*DJK(9Jh-c6JZ*iu z<$n1~KPIRUB;-aYs*cn#>1qn7{9L;xfB20naMxL+x2wB&H*)u)S8q81YU^1t$g+Q2 zF(Av`-`{I0n=M3JM7NL;2mA?z8L!0C4=`3)0tD8JFQ7US@}`vUElXk!i4b_DWB!C$ zFn|Eeg60qasIlsNas%Q6%&Xf60b7ZR?g{u>ReRJ`{z|z!$c=!;I~T=sQ)w%c_3P>m z6SEWK@vp#n`;#65@INv8TiQIY9(^1#VZOQ%q9ecE6}_(4Cn_yFmTj8Ud0<>7{WZ^9 zWY~Xe;x}xWh3LmY@+5)e5Z?FG1}~^?7hkl`AwAo1Y3_^|wDTFPUa}m?Jx+3|7IQzW zwdagAU;8gP<0+$HO=G4IZ)Ltrbr3GzLTuysf^q#?(ngn;oxj{fi7wzTujXNyOztgL z%Gi4IgKHD2ZMIb{m^W^P-4*aVFcW%+gu=uevs-U0g4{vE9WDCP&6pbB;|WNuRlXLc zgfcLFSWR( z^{SG;0ak`|JxGP8SLyEbV+E=+fr`7|Y)XvN;5ESX;cS{2Js$BOJT`FPW}DqUjiE|)@Q z?q7p(G}W-~Bv)rtt)qJe#?as!7p;#E0u3M&$hFPy$Y4*|L_V-Yf&-8(OeD1eeps44 zs5@nwJ>qh0xZL1clcinpPY=rr$cMjRob)~7<-ipZP?$US2+)=$rce-#FIKchs7KzL z{z7FT{JMk9AUr%4VK$?I2LURrV;}9xU@#bug^luLZ}eM_ajaKR?{_rWaZ{44C*L`v zvf7S?&Z|p6EUH+xib>nq1H&=UHkG=ckO8mX5{NI~G|CMQ8Vhj_z9ST*jLcs;=$3=K zZXfyOZakeO)iCO^I2^NHw{r|b!?S=ZI<&%6^qfao&ZwP#Yz_)MFKmnQ?30S0WCJA}FZSJHvW3tZu=U4edBPXYxI^3wK zZ;{o~{A2E%f{CbN-*_I_vJdeSBd$-gkBqps)zG7)p}h+;|5$KEEtI5nXK~adyEJFD zjTW(P!9GsULm2@S10Js4od|^bf$dT`_4*h-L8;CBF5=nZIaPJA=C0gO9EaxBIdcdo zukWeUubRZYv;Pmm?0?Vk?Ei&#>wopb8i%{0rPHC0E5d&Bd`821s^imW1Y#SJ#c6NN z7ZixNIV^O^0>~6F_7ydt#UHF_; zl?SG9osa)yv<>CIaeIsrLvhUWWC8a3V3WxIOZ#fR&|g0<_V0cH^AKU0qldl+<7mNc zf3#2eQ0$Jg%JNE>CH%3GLt2smgXalH^nr$(Xhs74X7uCP6x@anM^yBEO}gF1&N0!a zL?G+j@GrT(>2$fJ^sUY#AU|Bjy_Ghhuc(i17b;hqdKI>}Tj!be&q|_4QJFP0 zuI8e%yV9K&5aVcf&u9_HtRayfN{!+y*u|^dkZ5qw_8c&lzpM_>s)h?aCd{~CM`5)e z%~kuw>iw5mT?a4-k}RSly1m2A#vy#QQM8pAT!Q(koJ(YUpifNfv@d_gaYSQdsvJ(j}%kes&-=vzB5=)WA$rv!1}{vFy`5Ogmy{ zTalgWEF;dl%yMNv;F%TzJq-HIn18I%Tu_O&!vq6iAxkyxEZxrmL-N;N^lc|`)zd~oZF6@5zuNKt5Kl>ZT8TU6+aL>14`HrL5at-WRiqm)h336_I{;StlO_Y9HyXb@;X3R05ATTUVsxCc&3Dc` z+3-MWkxp~hxXF^?6V$PSd3EHG5jkJ%U5vfj-KNX3*{_ulr)|Ih0}H)8s;F@JKtx12}tLCkGH>uLME#?)t1_bxoX z$uf%di$jXzu*jv@WjqJFaJhHC+#@A!X^e%S?1qM!kg$63TSnQsO8~+8ehnRhrZ?hF zRNl6{yvmzC!EPfm9@#f zsJTkWAxF{#9MX|dQ0t`kK#BC4*JBH(t*QiE$q!9F9q;Gq&yzuHAvU24G9s%{Va-+k z!d;ysYI#)OVO?eR@7S!1X=N4E>FZ(G)f^lM+llg{C?b zDup>plsU+H`r7YluS44b2j%*6GiKr|Mb)F8U4E74UIJtV#uqf*tef;!IEEG?!nSyl zKi*L?19rc~M@!WB$W-oky#qpgNvja7H#CLAv~T&Vyy}ulzO&hQ&QKf?C0@-`;t#-0 zWGGjI{TSi8r-B%iS^L~9r8R%YnlVb;c}t=c{#{|nJ&}s|jsqDOJmy6}6y>W1E;BsX z1aX5VeEmm&8`-W-#%;8crHzOnV5N;M8(YAC6Ya76G#c5t!Nl>mPbxL?r;ptl?Vs$zZ`(L4?$^#`3?DO%ie+{~b9>~_8TFy#e9 z`2=MP2Ijos`i@cb^k3OhSocDAg(kg&W1$y8YG@iHKq5gp2~DX&D25OqR4Jhs=~De==A04d^WJ%X zp7);f-nsWRe~=yWJUe^uXYaMwT6?YUcV}CzPzDzM*e~#CWjKzFJ)fp(FCQ%0d$Ua^ z_`@!bg7LKM$MaqqHJ;ux8-9XVg1c+HR}bFh$LR9@@U(t?U?EAVl-``ar{yl(-9vJc z;C$3jE_Gro#ZK%zw!3fU`os+yN6SZQAuoV0rWIX67%Yz+!zV`=;VMOtksW1Fd%_lC@7P7=WyeK% z)5S+?aB;j#KF3PV{b zUQ9bB-uqPhfyX$RIo)&f5Y~EUHB0U@jbXxN9L4IoGpG1i?`R&DDz0t_wUJ*A(kRsc z)mAH;P^s+RVd1;k;wNzEl(;rF#_B1wkw%$v&IZ=UdtbSuMNV-(pHw(+GFd3j zwrqn(z&z8j^fA-smit2J6t@OebzM&KA?XH5oR%en*3a=-g)YgFsQVLKQ_<5h$csGZ zFaiDPt(kEFhekx!eh<44E8E4(f@noj}Mt2)R`|YtdG7Vm|x~5oy)%$ zSHDvC^7c;g>yIb7<|KmOzd)%kR6lQ-7GO}Y`Oo0hHe+;EEQ;=HBHJoh8_wm1naiQC z2D#}n799F&uyLcj`$OkdNl@5JXMKg!t9qGfTm?IC*8z$;DF_vdUup@b6VEHG9sZ%H zZ^nBo-sIH{F_Wn4RHHnY`Yf7(W{F-#o%tdEz+-}kM2}-KUT!&J-G@vKE`j-XVl7lm zGSWamWlN>F_p4-+)#jAP{I23Z1=>N3lMUMTA!423F&uedF65#Go-nX30dH zQN~r?OW6lS)lZ)e4+&pou$|Xy_9uu9jR=QM2J5`p)J*I>7vNV{?r|QwN=eUh#l$O+ zh?CfbnbZm*(v#_^Xm3eywqBd0mW$fmmT)(tNFzR>HI?IoL8MTJP9vxF7N4yfUW2Sl znJM{(kXMZS?J@0w)V3mVU6Miz31|X_^*pq6tElP2*7PBtg){$BJDP2@OGIXvsJ$Wt zm-x66v~-jdCVn#qZlg{JTSkSa%X(Qa5^wNR5VEOjFf!0oTw5xc&^KR(z2K1ObIhmj z2Ia;N>C(Pjsg*XBCY9D*M{SB6snv9lBF!DWvtdYmCeu>Ep=eZ=mNGFPm?+|!w90UwWZ8rTZ$YSi=!cib5xa<3xW zhNgaQ7{UA!_jzNPnQnAQ=)|dP>z39dx9f{6j)Q~mS9GZu^5;w@r&Ug~!Dh=Raf}$d zac%L^VEgYjMEffwVJ+rXX$7g)am!7-H}l9Q_0$XWN~WWR*JZDL-<0h2O7EfygBpfMT6Oh< zsOf9E4&{)m=mf0nHEA8N(Ym~}etv6Cw%Hqk?StjLo4NPmvsOinx@FuZbF(xu-3Lc~ zIPtA zOL50Q-z{Sa?OCYn%&@=#iZ;aa0!=V*my1y?TG7GdEyjmDi-i#l60>8Aa!7*IoB)v>Vr%7DtuvU~~Wse!1U=5U5%fMQK;QA!M4A!~J$CqXa8Je_rY#vAh# z$+PstcTD2OU#p(~reOSU|NIM~M*sdh2Z4REFWN7CVk-0*5WL>|iD`7`hlQ!C3xgh! zQL5gp*968qYsNEpgXHBD5_ekZUV$NwWF;| ze!71u_qT-S|7|b+@g>(erH|1e6%_cCiEH+uXcfLuaYmjV``O+R+sWXkm5uA4V-Ife z?|wmNA-g&pS8#C<;S$wxL`V9&+|rt+h$kQNl!3yqSWMq1ri)jv)fTUIz35M0j^v^S z97`INlizU1zB+I-^=q2-+cgIi=0i8iP6YD6CK_!x<=q&p0P8izNgXn;gU;vmTAGJO zz;$3%#4d2a2|vs)MR8}g+ebFN&N<~PBj>xQZrBuUsi(Dp1c_~iyXirCN8Ez1Y8K}H zse*f7+k(GVYX09_ePE|5A_m)3!bPPsLWh0~FHM@Ra@*rgd{`21<~m>GSYo>!ffifh3bQ@Yfl+TYjKi81Mc0~HA-W;+^p-BR&0m8$r>H^*e3?nmS`C23b36QMH)u73q6 zj6H(X1rZ-m>nT`(U^k!(LxLNyZ+m+_uo zwI2~k5PmUa;WLw`k0eT1m_qQkMYHM&PfBbb&*XKkL?7u;63vf(I6O2!x4u{rHQqD% z4)0o)r7p0*?)~v(V*p|>uw?DYOor$LbX6sp}cphXYeRZ@S6VnAexk|wK z^zPH{5e4-o2K~v>5l_%m`(m-vjnr$OnC`BXYsWAsV;U-d8YKHj#n*pgDxceBoKjBY zRL~Wa)2V-BQpo!1)%Dl){4#)oW=jQ!1|)a<;VBoM+0#3%PY3qxI$Egqvn)EE-&4W0 zMZA-7nU)H!nGYzFY#vb^NZbwi#PmkTy2VpDqqFn=KOtoPS`e}Sm}v*jIY?4`rguOR z&uwjEtSH>F_>6kJt#b*<%?p7o=NBCnW+79dF2B(?xovP58Je|N64+6tOd|CAL5;Nl^tu}sbSE1zf zp9qKlnt%Vze8Su9QO<`4`Q)D=FTTua(TsfO%}8Y|5xTd-ru3RATkC5Z*ya&AEfo?t zmtJ*$#a4MG4FG0RA-cTwe@OSl{2OrJ3CA?*Bd|{}S*2+N`->yL13G&)I2x<`WZ5*^%Xiec+PQ8BaIUh=pzS)#Q5B zbsghJ)0{jz#`WBT?3wZ=I@?hlw2nPwcr_%GHh=4fgIMGHUpX*G_Ki=j={FV~As@r5 zfB}!|OXZBbN5&T=tG=L5RJ9lE>c71}{KRDVJcG{+Yfq z9fAIbh9l7aKe94^Ug(Lz`)Bb4y^yNYkY20(g^4xvtB3X1Ui{&8Fn_Gl|Iu>CNvQdb zlgBovO_ra1LgxJhhaTm(-IzJBYa$#Vc$WKqM(Ny)L(K-_$je4Yn>l5Uwji)9lRpGI}>YFZYPYa9gbcE$NT49$&Sgb`sIsa{_`DDjZelqOWyI3@2FpljHol z=iQ#=aFx!~)hZGqqvBhyU@2eu`f(m`d+<-oN3? z*+br)F3c~%ur32-Un%bwfvc*?o{NyJ6W<>1=T-6T@&0`we_Op@DJ8$H-p|r}U)FvT z&cDj(Z^HTa&HCHk`)%+2rds`7mETu{zfN<0WVO(fqBt5+Ue#-F__zZ|b(Vb9ur5GI zX^E92eMmdT$OQF7%-~1zSiT)hX3{%0Fz@ZzkwB55qSP!*3p^Zw@4ehwlqV z-8U2Tn+f{OKlpb~@HhAG|9W`vS8)GwTS&W9h~~PG*kO9~?(;!5_ON9QevdE@Lex!9 z1_<8;EI{HS#$)HSOL?Z=0*%y|y{eQx&z$Z|R>sdhkgR5JwU+=ze6Z}8dz?N}>sq37 zkl%QRD~b`p@i+C7X$FPQnA$j1t{9SbWiV7B>7Mm+^ycFm1h$XctRv2z_PSMIn3{D> zoK~%-JJ<~bX=3_~o#PLuIRD{?KSX{>x+)QWhI;)3pL#CbIp%f|S~Gu>OZAY>6((WI z?{^<|mU*|StRwY4g?*u!Gd{|xcME?RM274#XQsQF?(M=ipw&L9-BZPFyUbuh0kZ-l zA;r(oMau=dnl3YOOgP1vCEfQE)9%Z?kb&e)%iTfv+BLMSK!9POCu~=j`C;Owb@YnR z6mAXRCm*t6JC#l)kU5{Kiq=$M_j26S$2&+83o|uX-YY7GV>>MhfL)DX$%_ukEPZ7P zd@k1X#0_^d>Z#9FtEnF$DFr5LfXs3}Oz^d3qkZ)!)f}~U3ilRpThI3^4tf3i&tBxJ z_by)5K@LnsHfJQ54N?Q4`xP^v=Mi1nv*czA$gE3>mPrqtH%?L9m?N%OIQi)M?KZmo>b?WiyC)Bs5q=2UePZ|ALDyFYoT!@tiZ zng16b!?!8?FIoPIyO`N)ex-Ut4zBmQ++US?@ek@RHjY#AWL-8O1As#f(*E;KOL~GA zymB=?H2WH1UNN+@$F3{@WzH)_VPV_%=6S9p}7xkD?i>$vD@)#K7EWr(Tg|y zB9;V9SQH|+!Qbab@jcA&G{P~l=Dz;@rIMXT(_sPa@?ldDWLKw zbq0Xm3p@95(`)5-@r+&PEJ;!3V!d2qnmB9fQr)$7_p^?R(Ch0v0_u4PqjA&Av$5|) z<`;t5>^MzTgtJX^S}cS~V(FD12}WJhBE`e0YHHS!i5E>wYxMp^?-2c6-2rEOQx*Q9 zzx_+(?Eic<%jAs1$){_OCh%biI7x&Yfi#{eAHbmnx5S$>FS_3uj$qJL1$SH{LvjZe zl4`Q139_SnaM8k!XcfbBP-#TtKqCm^!e?bXynFxP3!~rV_;({^i;xCu|C~y?(DJ?h zjoi_q>Mm24guWv!9?Ipj*FxT7CvKhNsq|PF4{p7-sB--DkfNu{wTVj`@$Mfx6J+ln z2=8imRW_vb_Ct43>mBWRfvt46DJeubd>2g>);aC%ZihDI?d4HnlocrB6#dLf#ia)y){+~9A|7528FAjx#C5co+*NBDIf{~YM zCGi~=FYHYwb$Q+(k+{lrUcr^L)<_S;biU32Pz8BTmuAC#+4JTdtKF%P)Cn2uM0U}Z z6%BJ-18pI`-a6w9lX(BWzW-l{&i>tQnKi_L0r@zkY<2Y)!TAb>6sO&upJpW!P%JG5 zfsX0rAO=`+a^Y>&kdK~K(&>-08OG4*Q5Eh*u;6ps_V|tRn*{o0#dl2K58eNL-}|?{ zOCdgIC0TEC@6Iz4B%3-n3poydPOFsKjoMou4IG>Hqn*-W-y18K)7eA%4nfN1_Oe+2 zsnnJKL?^z;Y7Vwjz}T9cxBNK`QFpYEZ0xeT+Pl(XIoSjMBDZ)h)m1+C(W8p ziJz;sMl$iJe@2n}ue80nHDnbG%+uGP-eEt|mr~M1C3SqTN)11_PI8uPf%C0bTopVY zXQr$$9XW^o(>{O27cO$1V~2_=F0H&-;NX$Il~F`ub;hR7<+J$xG7Fva<#L({xocdysWThJbf69U`uB$Z zAG~u+kg9;w+dD-=*u-ZM&`2itMnNv^_nrqfu8i{bE&2p7P*zAoGVs zA6w<)+HUz(wXhChVTRCDU)}G{zp3e^(?QE6z+dDi{P`wlwK%CV;|e>m^q^s#P{ zi*~GO5Vil+0mmew_ccus5Vuaeelz-ez%J`$g+CIhu40~b}EYU8tT3BZl&k*S8q3tM^I>2<YkJ64R4(?oOvI_x+kT63qZANzLPm_q$%xv%YkBOCk$7K^xT zrP+_0NtH02&Q!SlyC{BNFj?;h8ba0lJeDRW>b=Cn?1{;LSDw&xTt`VMZ9?`l7SPWO zo8*g3-5ShJR>=CyY@COeg7>q_;F3M1yTOlbr*m(Hm_g`i@mAS9fxqNJEPdJ}l1-oeeM1Cc*Z&#qFXp@kpSW9l(tj75l z(miq}HDT45Qh%!FAsv<%0W&U)GZ@4v&CfEY`Ndo&Ma6VYXR^_NpM%}iV-?R?4IoI* zCy~U}ytvu5#e3XPg?)b}Nsl|l$oNaIYS_8{l?3j;aN_aQWrarDJHtWuTTskd0|UGgqWOAqqq`%Bi%; zsWiG6b1~4$S}OuR+_I>>9IidZA+1al!4PmpE`FQonD0Jc~_hb((=z!hV~LLTMQ zARUEQi;c&vJ+4hYpUU+tk3PGhteO(|Db+_glxLE;8QuUfxkfCwmI2dQ*?R(mfC7V^}m zboj&HH9FE0A_uZ6JL z{0TgnAXr5%)R&*%#$?98RN}tr-QTpye}UBc%iEh@w>@$jj?IbFb-{d~)Y7+eTEyJEfJ66U7U`+1CcpVaV?8h>b#+ z?FrV~SWHstid~BMYESk8M+We?&>zkm78IK)^EyxoX$f-G$|eJT=?l1=FC5X=gnM;z zOWzE-?-gCb?R!_QrhV45**z*FUFU^%fS1xaf${g_BSe{ z)#0vvJFzz6$MAt~nYht^*F_HeG8zF-qQ#@&CyHMuuGX#3O0iMnBdC{s%G@u`Lq?qC zw{yC&c4%zA#hjI{wSO3fBjvCM6+X2(V(e@m)@4h`{cw-D==b?YGD3h@`Z7{ zQ01|=L>nqh%?(LhmL~>Qy0B6#szowyz!0(mxzscyI<>sSN)SG%2rW3bod+GonCGTF zO|7?VNHFFOmoJhhSUirUtH;H&-we$RNPAc3XFB|tuPtIz>QBFSg^`pcoY_J*W#3jv)q_Ev2@B1ZeZfCky@=hLuD!(+h zts>xHY#faQ6dw!-2jq9uI?z1 z3(zr`DKRb3=3;Ew;%Kh272inVXzo4zcIf%^!$1nz5dB_v*tNDwHv%??S$P_cH!`XB zJb4)b>uAGtyDnf|Qwb^VCJSD-G>4sVJ`)8-VL2vub6_4LJqe0Mb~+CoB&0+asw7UH5W=0+TeU=Wso^kY81#d zo|!$;O^wXVqOFP=cFN#&#ZZFgO4hE9L>T1MXQ4nYAd$gxlm`qyKpw#M*buQu3+?!N z3iy2ZI$8`a$q8uB=^jdsDC{rt@lcAe>7M}{sXC5G$GEi*AJV@%xCcHQlkWDA-IC%=Q*XdmQUQ^Bs0rf7kW5Vn9&rGJ^m4zk7ZSOom^{9 z46%cOJ)Q_RO7xRG@x%(TSpM`iPxP};ZywmKx2T%GIy z`>_LNaJg9{Ex0l@vXD58h?>0zk#}BF1MXY`LbNE%X@>Mv`UMTHm1Tet=i@`2 zX@L2XuC;rLp_d=%zirsbgZ;R*bsoo8)@*zbfI$-FxcT%nN`O>d;!JLRO{-S7W;#2` ze!fW862l)>acUG8m4J-}R9}?KikWG|5c4_2$51#NLx>ZFH>}r`*NYUdl+>JrR|kzD z92~e{qKI<>BvEoz-!dk`wVV>EFyM2PQlxzmM@*)Ib+ziXo#pAJ$zvTMA09R2=ELPf zLy|)2;|Y{7ap?I6K@~?v=G>i1&5s2w{9FJnpq?QxsL5k8WBL}*v%O#~yDP6e?!7;8 z$t>Ku-8a%gNKWiFQaNmQ(~t*Hnaxctq3p{Z-AelYRL&D z38!oA8Y4K5Sq?dmrULEjohL18)5-ugGkStD8Y0Zi_^^uU+_JuLhx9>Y;gHk4u7OyT zoW7xHL@Zuil6g@bJHudA%9jwXrL$|E5F5eVRs zbJOHoI$2Q0F3%Ac4(HIu^$zs-n!WXxJ)TucIifTuF5Pu+Hv6cql!arBX8f6sSNcER z*5ZNu7khV*tZde7b_zjag8-s z&kkLFC~-yH>V1Frtzp}N7F0K7KsZ+<;d!2UGbdximUr_tU4_CZ@6niG$G&bP%GdN< zdYDF&E_ba){e*aw9XU@Q>$f#!^U)D|rH4U|2-e3)QBy}6JkYzS>M|ecT60#pT{r99Cb(WKTO(^f_J01EHsHAkK=1ZQ1sV z=msQUpNowcnN$)d#D!jTgbFxJuVMS#^Kuf7xjEt*s;Q1MjtdKm09jA)$)1Cj=a}Be zCKqU*d7v-mAi-2WnT0ynh}QrVAh1g~<3_xxwm2c^;0<%hwOL)TLUOB?opz;Vk-cSN zg^ZjZY(Q;NOC9f5VUd2-^W30Vl)suoc_(gabu#EhTQ|=LrshbDw@&(C=so(VHN{Bs zP$|)1O`{16=fXRtG6=L`N3p}d(2~4AF@?XHZ>+|0D!HG==RY{gmb&tWkQW)Az1?ZI z$~%po%I%d3=D*T?ytbps(5gUTX7mi|Cl0d< z2nOr9Xgyht%Cb`03Q@G;6D=cHa#=XRKyX_$&^Eclkw$uI9xO*n5UlgCP0{hJmub0R zniFXWHgT4Rc}r^mgwuvy^+$A`*taU&jZ9Q%5ki}150qvtUQb=s*?@b$&A580XPIKX z!{c8IHORPF2lJ^IzU1H+OEMJkJgYY3#Ay;X>4*j3;=R^n@U|j}juh)dS}-Xscp4;5 zO?!P+Yf>2707E!C)>}(mm`}|V7uTQs?gQ-SzA)QNlprS0&rt)|yaI3*-XvB(j*lo) zDLqVm+s^z%H1Y=5km{qz9+>v!vCX*GAKcgoz_caHs>_Y&%#))4_nfRCZ_n~00A-`` zStlp832_uM3W>*tIMe7q`BzvEaTnboMZ~d{aVoi`erPus^(#3UGng(QLXg`&_6RtQ z&8Y*^%2uZFLMYdSp*UT zNkr(hw-rUf`h;WI4Y4BpZX(}Nz=i+?C;~`5KauIJiVU$NsK(13VI4CGw5c)ho{4RC zx#{!$=8V-n$qz+kV53#Ivt%eP9v(i;TW?;R#y)3EMGNHOtcvGbl2bA6US;dnspGZt za|l^6N}Rf@l52BQf%Z>IY_|$AD4U5e^~_{`#wfq7a)XXSRj-W}8P0bfM~Eemb=p^< zy8Kr_)sv2r@+@!wb`PdPd7f>o4=n3;PB->^ec@jc>?S;( z9ay#g?Ckij2O|Ng0wb55p#x=`o6Xt6NGH- ziru)QA#Z1a(@?PH1$ye{3hbdOJYgE>X_|t?y;9q8wk^8z>vgw!Fa2t5w$%ubTY*5$ zA-24aHWO&96N73-Tb5Tm1SMlUiDz!T`JzZhejc93rXPgU3CaVT#8kKR2<6%g{Hj+@>s_byUE7!OvBarL7?`cXzCnhN(3e zJ~6`KowsP5cP+))uXCz6#*Y=bj0T!uYuvk?+C8zyORzK1?)b?Y1~F671_Jge#AQ1o zgM9XBfURZs$?T33BDO&t6`CQIM&WUOOMnl{DsU(9ioP<_I@lTN?1w$(W-jJX$#cgG zuZF2*jhOU6H32t7bdAqd@};5qGTx%>a_>B99G%$RtYO_y5Ok!q^9qO3Ry>y5UAY{> zWf?}?Q&%w~>qKAcb4@M;a}!0Y!3|v}P^&sCz_xkxcPIH|6#e&rK>|SKhpfLo9xfz0;;!OtyDgu|~c{l)TWhmS#zz#cudmi0rz9eVo z>1Z5+Cgvpdr#7{RMvRG;Hu2BdjY4qp}vg7LmO?Mm^Q7g`eeBfSF8@G8v=NA5FWV>ECP`& zG+wLO)D1~Uex@#Q8MB_-7~-TZb0sO&a<)hc%&bQL#H7QnRLUS!bFK&=ZsbyDJhv(h zALodi9Y%yYK-X>(`OkK%H?#S2Vu`6K7ik>P7BOuu$gprMz(dRT^juxylRF=6moBq` z{f7)20$T~V<#=SnOeu*@qXYjk+@wCw5&>>S~P z6jV0r!dODNsARdW^vFwLB`$+<70zH;L7}A7<=nSjC6!(yviJ;oBDA8%Ilp@D3@Rp@x@C6XaX;B!~r_w zf}P3-59*qRjcW+ZEb`(}wxo{R4(Jc-yu_v;NiYU?(lmqj=O={gmu?E%gQkK0ujUWSN$`b(>l&sS~j9qpj#;1HB6R$p}fgPZ9!&oC9WkG zm$C{x(ep!LsZv`p2^NlL(;JxuYL2`pYXB7F=lJS&%D1H2goL$g1AF3`rA+`7;9xlS ztdo&reXF&+WrFcuPXA8g(R@kE=N)@%VVt@#&+WRUJ7=k@Q)s?*ck5U-(Xv4oik!YrSz2^~fbv^2-&&!d9s zlH?|yo}`!5aomCe=iSfV_=(p!b3C5;5>%UroXCF{X5ZThR2#}?>nlnJX zl?Vc7`x~^~DLz+G9&_W(w48;6{_rfz>M^k16uSpB$g0Z1R7H?M6&X(IRk4c_tkVw* z>O>TrEDZC+@|ox0qGT(kGys4kmE%U0nY8Ya$V*o96CZPRS%x>jH%ww`Yg8g(@xa~g zV9xum0PPya`lm#XixPjHj|Ltsv7K~UH7Q;j+94E8AzJK zM%6B!g~h39%|$G?TX|pYeOQA_!X$-+VWj%y)il`8ZKXsROhgu4<1^#@Lbu)th&GcKAd6_%NGF5b?LTuUHEvGJ>y$g=}GM0u82{Ql|L81goFM9QJX8jhWq4 zR=g6k`QR$)FnyF-am<+K=FCJRZD4a4P~+kQfd#bgK6$ue!d}ja~G~hZojB+l}`YvPB$Qw1%?EAyBHdgS*<5)@J@t^MF_& zS6JS5HPM-4){*t}OaH3);stDID&PAXMuosiv!llNoK)MUmFKHx8L?KTl8&9S_JVfA zHm9J)8;6t|Z4x!aIDTS{mEF4>nY%I*Qh77SaTJ;TvoYr0D%cgFs||s+(?UrB*8Ce* zS6G`|L(^9%iBQ-eh?+O9 zHm=~XA-sI9$De?3ZkR}0D-#}uPC3d(9kLjPAq6e^6H7b%jzp}p1W&7W@(r=@dBs=v>~DP zoP0fV!Mp9=_8DepPkmxa9~%U^ra71t%_M9ulpS;3GTNmWd9T6MFq6F>5x$%$3>L&Y zr1R<0v>Gv?51@8qu|hP8ehqY44QL1F8`x-UaN+Bt50Lw8h(LL-V%3+$^#=Ieq7q9G z5sgM~fNmJx&;%fhN@8t5>RmYINr|Z*-aUOQ3=;_`%(5+_#SYe@UGFKhw*@> za>63WjK$kb^H#G_Mm+XKQBgIl&-H8&v4&j}2D2%J-g7HHnd9fI;8}7`13!b#esg_~ z4l%9ah=q(N)G2`-jV=+Z}4{c9HJeDF{v3n_m*CxQyrWxaG`(CnYafHuQ;Zi$2;XxFm4g35->z1D__ng@v1C=ciYz(O^0fkD4Odk)C%g<79=L8!s5Q z?UhpOaYlqY4p*Ti;pHetY~~;y8%}zg&ExkrHNW^asf#tqeLM6Z4&qbjZhG(hM3R{5J9VDV~S- znIM>d{3he=_O_{?X5j{fk#9bZhV_5(!7tN29fCtCqy{BzL05jxr=1=JPgdimEM#53 z|Ds$yu<=xMCBS8>*pqBC!E}h^_G{$|>9%8V`rcuJxz`VO*QDp~x-C@&9MAHN$%9ei zSrBw>FgG4+0LF$ z&6g0hXe7E|ib@57-CW@yvYY8;`CYd2H}Gjj*zhGzTRawR<+c;B58quY_UU%LMcv`%^dA+!=d2nE5kB?eGHF_@VB z2`oA{41Gb4#;>DMGT`IPa9mxXPr%-bEI5rRiMhY}uwJ3PA^)ZWBKx3IO^0YlZXY!z z<_@g%RT1taB(yT$AB`O#rD^6~x{mRwmMek3jr5I2;8MrIFmJ9L>xZ3QDPG3ql_qKw zEozliy0gCS1xw~cR&DP^dtVE7j}+ig6?2@{qW0iU;n0wsZP=>{++Kt1S)=YUggi}z zZ^V7?FoS66P83}gddl4Y)M}o*ohgZCcbF@z-#s%om+(>n>}&~*@VS}W_|mE(B&0GV z&y*kRuHezGzx_BHxRi#OHNI>KJE4P#MQezp0Seuaimt`W z8OPwMyFgRqbCS8YJnxCEvJ$5-mxZ~Gradj_hp>){hd!r+J4& z`4t8=-w69q;&0wRLF2caB&&w#9FkabsqehWL zowq@dkWzCJZI0!qARDa1h8G&HM_n0@g5M0qd6HZ5$Z)WyE}KFV`H2@k|LWCt3@vor zAG#Wy&;#L*hQ)fB)I(hp6Mfxh2EE~)urZjd!=bqd^}P0E}ZLHeDda zyB!7tjZ&`FSnhq-mMR@d`DdgYs2>(W~C{VVihQv;gdsf#!}6*)x3TeF{CMpYYI%baQL@&{sWL>CVs}G>nEiOMi&5GfJugf`*hP zJXV~w6dOPwWqyfVY`UCzB+xBZo})Xv9akURU{~+uvp!i!3MhjUl|4HXa$|9Ba|_rh z9YVZM@z~s?$B{<4v;;rl;L#fb7BhMRR2?D}O7$u$iQ(*l+HqsTu=i*g)-5KN9Wxtf zis8aS`3Zdq5(jR$x-GbGOiMjaDsH}C-iglBN)@wo;I2LbgH!9k$6?H!U|z}G{If`0yvhFZbxiWbz~HNp1&zENu~MxcHT9?L$QTtfk9L z*Or&Qd`{Zk_)~Vs6F)%*fOfAv;tWNWfOfpsQ(C5aC#Hsz^))oItu-!wG=m)VSnG4a z541^f6*VNP-1A(>LoL8LZIdIa{1A$qm&Fib?uvjMta;7@uqQtwoV~>d2R(g;XQQ+bm}vH%cXl`EQW~u2wi3_7<*+&r%R`mq!WI?_w zRi0zx`ea3<94hxM)_LRQ|Hs~YM>UR!X`zil2uVngP6z?%kWhpWLJLUmp?B0TbDrm%Io}`WUGKNv@1O7a z4r{^MYyEyJJM6Xhz3+0}*Ht%MdZWNtBJ0vn1u@nmf@N;|Ms3an!IMfeWv?8e1H&Xc0mHk1nt1bA&!)knQ=AB^w}h8?bd@s zG}Qqbq^OYyyQ_HNJCyjWBed_Rc4rUisIK4PfX8()t_D@5%6nyH>p9{?F=10r znGz^SNN}<`K?KTszbG2&nU(I=t!*F949?8x31BEy@9mm!xLW0j1PWG(nOo;x6~M?L zyNJujZG5JSec|iwEv+iRdFx9Erg`K^JFL#Osl29DD=SF8u3X7garQ_RMI+%_PqMn6ht?T1NV>aT) z7g(<>%&oBg5MjFuPPeFyfnc1w|<6dEhz}!|_FPiOI1(#R`FXH|LTox-R z$Vo00k3o~5UOY@1PNXLy)u#D}kF3B1Uxfjvt5v>aPSwRDO!;eyj<($^-IUH z=xvls=$sdBd8(x`Ez?SU=1YBoX=6(n@dwgwFVT*{c9xLw9xXtdJwoWl# z0#&NAgBL6Ad_2est~97T=h~Ch{Vt&F?E^Q$FEh(GUwtYOacHXoQwJfF_TACpECQ~= zK}*4jOu93US(w;EdQrc~>Z+XjAmAqF=RyU|)sm_JW<1taxQx2ug~G@9Bq>wRK_goc zN5^&*JaH1kwJiI#JHK&^av2^YjvZ$TYdg?9yzrhuEf z#sT?BcClC$G`jZfaMi1t3B)Fbmp1nrLHK2#WhH@I)ne7v*>N*1(x@-7 z+s;01v>J51_q?EBuYhWreXw9WdCVcM;&{o$Af+sD4`{PdeGy?v>sel&T*pTbl# zQL0R?eE&-2HF=h4!6<~j6MJA+rGh>U6hJ_AG_D^O3Otqz7XvR{FLtBgV>%K zACKKw$}TD*c3_N6-n1~s$WzKj_7qitH}k4MKljT=0DZ?>C8A8HR)-$9o;%9|I~szG81Yy}*G)^;)~a}e4{!=yM`t>B z{%KRPgd~+5UY)?h`v}*W2>aXpLc0pZU~_B=d3Q~)yLxte_oyMBu4%%4!$SqdV&tT+ z#q@d~?p0|#`6jCLzk*R@ao3_B`lubgAQ^TXej+nRdBZ7mnRcT0=Bpgv(M4ejj@0cr zej(9~Qnm&PkDA19-7kw_yN+YFKR1Kt-nxpQ5;ud6z%2gNGuwU>F2(LfWUB%xRAmJoc zUMiZdFagpR9H_c1CM`}1@NF=L3kd;1_gi=WX!zt{>|QylRQU$xVA@Oa)}NZ|mcD9D z5pUPQY*K9Vb)cbrIv}l|W(=*T5b=A6G%-#wA*sJxNl2}=$$&wi*s*<=2n0ecvbX&7 z%((q0dfQmBjq^!sbuK_YX^R#&?Dqp9-YKUDec$Ctt?3o7V&x9(HR3CsOorh##?x_f zgS%i1)(3jA#Zq#d?1a)9aZ8*PwwRoQVLQQQ@H->bQp@=VBi0n?(--W6?q}_>PsRb2 z4?2CQ4<>Sv=7Jvy`U` z07zkRq5!G4toMoLv)og4%17sHXK=-1K|ZLZf}~6A0IYO2{`e4IY9T1#BBn)h)qq`W znOD#Dny=EdK* z?>j#eN{}(+(+Ix3Es+K6vwZ2*75371mti4T4p$&9NfGQuQgKN#-q!{dMcF#q)#;H8 z9Kf@k9^D%skbZq*)(laqawRdmt=u2roV0NlXDeibr{U~TaNYJ+VG~z~we5|g8}a({ z8eO?Y^RYFiw4x%Gt=8T)Xx<-z6WtK1*06rP2B<*R77dJ}ar&FR+OhFvJMOuA!ajEE zp}Bk6%IczZ;A(w}8e?id__syHs4sw&L1*ooft58Su7?QODy_RvWz3J*1U&IwkfnFg zfCZiFk*ABv{abUI1K72wxq3+@yqYC_!6wwSJWO;ZFiH?Aj#0DN%dkKnzl z(7qv9Y{J!N%6oeLu^ku+6t;8m!aLaLWJT6=L zy{lO934`H-soFC(_OCFiC}$2>3~_2%aCS8cG-JI;z)3Bkkq*#MY`6JWzNWM;#ryO_ zCAGOhDAZ_mA<0(i&Z>C!JxrD6Que)h&n=9jOh;WwE9|n$p1E2Zt84Y(aUteTs4*J~ z1ELdn0RKh8u0`YXbxpw!1Ibp8>}4(r(5d~3(B24ic2;iyF$X7!DG?^V#fjdO2xryF zNqKUE%-vOUk;Zy`X|^WY?p2X@r1@jWXz#HMR(w?(FQgmQrlFj2d>=hT`7C+s1-5D~ zDJJOI%r`>SeyP8b2jjw#?ufcv9lmDQ2S_e}elV@$~zQ)i{1UyaU;@wy()ksvCA=8yjf!J18fq&3>Q=Nxpvf3IY<@yU_r@$vJ+>PTkJB z>0Ec!H@BYo@?mYGMF;UM5#^Hp0%0ZoSsY)-2KY%8;@hzs*tfLI*|oow@iGE%*|w51 zYND|@4bph`WMNA9SH5q^CWW*}0e)1iBo%gz>a0)#aE?XqZ;oeV;}m919ZwSgg;akb zR{=qx@S6SI`nogTbO53ivAHWI#b*98M0i(ClO!c@S)ybwf`4%Y=F7msWqD@4I;zUj z<~8d^u;as(6BpMf&6I-lx2VlGpGUk(0R^#op>RRy)Xelvd%2TML%}yp=asF_>nOImFFq#0 zHZvn(bul5)*Csz#zFA##f5xklhet^?o`OK6kJ7G^>1MuU`i2>GI_P9Zy9 z=CX@rt9`hT7>>RE=%?mQ!`~I9UD@Byy}+y?e43T2 zep2?@#$#wS1zuC=jB&S0A4PDJzUg4Dxgk8aN+7izx3rsUn`0Lr zy`Zuz=dNbWr-P2kYbgfKf?gGNKD%OYWem&mgH@l=(BED~_KdlJjX(|rVk;XuFzuId z<&3jgEBSMH!A8H*15V{mI?^+gt5 zT^(f4%y#Y6bBS~5a+9PojUltTcp&OCKxOY!f52<+(hZYsBV&A4H6>aA< z1kB$=g&hWq6Y^9U&c*yMN{Jq$v8xe>X$PUrau+ZL zn}fO?u<9}KWy7?k35Fk@G_K{wp}Swh@G21Tw4Tsr&8WpV3~k>JN6=D#*1Ru$W)hJw zxcaCnkOb%YhL)s6Cmm~K^#=0-nS|-2V~~->&CE0L7Q)n_ED?MLJ(l1;VcyoZItp~4 z`p)=)^V-yq#2FoB45Y_(q^i|F!oF|4ZgYt6s4tWmCM4s97<80fQNYYFvR;(uuKl_m zESt9VV)V}8i$O@Tc5Y1TxUpX&Ogg8Az!5-BPg^KoSS)XQz#+<%WSuQm>)J`S_?GN3 zGVAE{EV1vV)YXw2iQhI|x`4Uopy2ZCw{n0|i5F$_ZegvT0i6s1!Hl4NK=|p!zJ208 zF@(!BRyUsqg4J`ZI%#6^uXOUjc2C%3$HG~Eb90Mh_w2)Js*TFUw%~{>6}gJ`JKjNW z(zUwpq|jG~rqd%6y(q9)!A}IQIy-__h|gPf`7?d9oXEsyJEpcz>VU6r^Xqpf*-LIJ zj<2%dVzubl5&*%I%`E=Z1$1tuOk@n2n|eprqam>32T~h4vc8F4g=iKCmLMdO08(pA z(y@&u`;RMUz~i7N_U}09Z+0b7i;LJ4djc|**H88eeEWNMiKl0RyEAbQYKigl`qMhR z)-Gv<9iIe}w?UmT1K8*5qJXLD32Wojag$=zHo2Tkg(sueCU);}%!C@Z7cdlwCZ#eh zOOCYT7Ztika70$u%GEH&sDb|8lBn(|{2~Myv;*W%Sh2yxPxR3-l^p{C0Du2QIyySr zy}IjndiE{<$ieC}WxBCW4cGN7Wt5Y`4=WRS_Y=~{_(4DE%F`c%vxby#0I67Xc|sCR zRaLNhY%Ckd0Ja9JjicSU-wQkq5*6&3^Z&79#om;Z-W7wC+ifFe2MH*}76s zkANrmXQ!zx5gT(BLiVji$3+_V-M=3lWWQKhw_jw9a=pWexm-r}EKDbg=M&u2?Gkvw zy+n=^V~y;avFdpQM}*0DppGwBgs1fUpZ4EOu!6ms`{i06tdQMHkfTsQ^yk0;E{#j(=tjE95jDC~;7wG$1h|qRceHW6r{r^cu zsw()KaCgQy{&=79-K#3A#k}j`xUFfW3p`Iv(&8&0;i+u&i$ksYpT8MU{&THPY!wwn zr{&raUUH4kNJx+2I|e||rx~BmPkA^O#jab5Iq?W%49Fm>Zb+Y%rM!NX;1ZJI=H|LO zl~bvCjBraLgI3wrs;`U=hGtE*HnEqYAF>~1!}4rYho345rC;)zOrD3{&YupnRfH2L zbr#lb?6vDxgky-USWlrWZP)J~Gqfl#Kak2Q4=9lWN}?N7-?_OeYicv% zjUT_a20H+pOqr@xHHW3SH)(R&TK^OsJ|JZ zHdG<==VobXVCLEB^8qRj37FKi&9<%_LHFXeCYEiWUn$#hp@=K|JVNlcm7YsLd1Mb_ zv<^=UfeJu%ghapv)B3Kit)r%oPTDA9iwmpFzE_`*?O2!qbj<4^J6mRqtPAn21O<}w zSu}kN6qvjb*tBwwGSOtdFQ0ZXHGFBVln1^|g$fA4$N?8KLFs7+K7t=7GZbb@?;I4t z#mj&$s8pez;Ka{KFl3$I_zV!xH)66H7iu?`U?-PD4J0UJFx>1l!{`0(U2b+JR)ct$ zZ+ymRwGM+g)wPS8ZH(M{`o*?m75b9M&A5=fb4&1@y|Ncb4G6Sunj=EL@+FO8j_Jff zjXLOWPsqS|*_J_aOe_ke0CqF{ngx$7FbYROB%{W3J z%Wo@DMyyz(pimElgASNYu$kUFWI8l<4^xFK=$j1Ax%}vIr*Eh9bxvOOm96S8{aCpp z0D-D$F>hKvZ_iH^5)y&1lfu9dh}sGf@B7GoT)qqO*wP*-tNQ@lGXpVgKqggMi5TyL z64schK;JrCXz}pqH3T9DE_d+`Yl$3mp9K=X*Pw1UV}k4A{IsU2_kGscQK|AF<@fjd zKIDCS$sUVf^D^-za2V8)GV@4vh?s`EtkJ4DZ$CG$4ry@}+qi5pwm%*sZoE{)J#aOj zFE=PZ(8f407>9HM`cml&e5yvdVXloE-dj!6M8|H16NRn?To?7fl*VM&3C7}As=BnG zrpOkC-O$jIh$ieEfGvM=UfmIh%B&rCbOeR&oY}qQ>L^u`y9kf21`r$<<&sZlx=f(b zp#hZ=R9+5dQ#?_Sezvv|==r31-|YvYC`J?OUhgTkRrwe?1{VTg>vu|6=OfIcd`Y+|qMbD=l%!d$?nsOOxw}YI?q?AY( zi0RYXS(g#wFbXB_R$;4&pp8sZ`>ZCdnH??R@0e=x?IpIWfk}1^Y8V<+RvD>L0j=nR zfV)_aOYgOyBw4e@yr}3PehTLH^gF*wPNjb&PL#_S#=N~t}#8FM;>Wneh z$chZ@611~gkG#S}!oJEQ#kfibo;ONLqtom)EgsB0sg!eUj8S` zEJAz#K*R_#ZK0x`@15E|NNoUzUjkV-K7T(aT&{BEy&V?&2YhwGhG&-oJP2ecuct`L zpRn8#6>4_!QSlk?$h^~|VQtBGbM7zfd&&+Pn^eMJ6h_D31_CEgX>xikq&(a?1Fb-i zlSb(o13EMU~}reoIX%*P1jTZb^@D zqI~Xpy%gZ6%kzJVPyL*$i$T0gf+=R@XMOkdNyECyViNdE!kND<4Q9XpP^E8a6;BF2 zc`K95=8)6ULkmxWtR-#|Jm zqVd`J;Uy04g2(g7T6&{X!tSf#pTX-B@;;$8Yj#RCunI3ENRl)mi~tl10>D(cW12tLj*QTWNJpO)TgT%~vYe zRrO}t(N3dgU2Z}Bz|n8fZPmIS8acar@6a7%_?ADzcp^9s9-8?<-S&8uN#e*&jG6_=3mB`iYa; zeNnT2hVX((KQZdA!^Qv^g_&49ffvD#XAGC~>P~fgG$N7G)nZaSuPQdmtecM)L0q9} z+t>SU-5*apA^gxmG10l;_lqNxoi`8GKgyq%LA_#vqE4hZ(S1D4WkXkFLs5YO>SYTY(*Kzm#i%HiO--66?OV#$x#zsqH%_IV#jw@RfWB18eSVv!ND);yj(>2C-Ym#aza&A z@~D-@IU|7V&xi?d5E%#pTkh|1Q5wNn0 zS)Db8!gyD6>|GsFAe8I{0C*JPTZ-I;?Db~(;V9xvlSeBmwFeEr=f^@({D?l$JT;Fz zRs6drA|+EEE%t?&sf-L(iGF!@eUNufoqdPDb~qPaIIAl7#@tnJ?5Llv#+`lPn`PFi zc^X?#Sl(`?p|J=$Z7R0+$SAN6KM3>lpau0=u;Xh9>+azaUxcFH`Z2NvJ?pHTNTE@u z?~Nj*J~9nO3=$HBV1Q~KtQQL9LIbcAydNT z46j0BtDjLoG~0|`N5GD2>EZMhv{ujVz@hwQ-|lMr$P~E(D%>jzWNKy)mg%R$FAZ>5 zu-lJ|-{DH$Ia|yEhb4l9fEF54&>3wr6Q@r{lA?L1M!ieh-SHE)o=!^1 zmAt|ml0c(#4Ft)yPEDK=5fizw_U^)>(cI%%9udVLiveVXt1#0#GWL2bQsUR$jNOFJ z?h!@{l5=5|j>`o?K~@GLdzKJ5yJWo&wxFGmz7|4El&H5O`aT%*slv21`Vx{vVCqPu z7osh}$ONE8YIxgAb?eHt-S-Pr%YQmt5NWcOSF)S)rQ5lDlIjqQ;;%g|sx1(5^#zp# z3WK5mG^8U?JHjtH><9!fpvip@!{Ey0L3TJA^|Keoq{A5){^TS&;fdPrm}oBQ_jz(T`0y; z#=Lx$axFrVB!_Zp7lzn6KoIPCK*^Oxlcl<%h%DXNFX!7Seoi3tN)k-gU=I4?s3-Bx z&NGQ1l#m2=A=_@DR$id&;YtDH_!MO682EDf8L4~BE>kw5UkceLv_$0rT7uYQsK<(& zmKb(*lE*y35_9*hvYl5=vvqIHMUB~3tPlE&tiKuQ0lL5P4RfcZ?X_n4$a)jsH+=6x zjg+1%YzC6NJ0?c3hFYeCofI2Z?XJUkXAyWV+HqhgMW9?{Wb~KPb@coIu*6T8N@#`8 zgdEi(N`zlJld$HoaR)T_N`Q`U;@svp53WT7_6RY9+u-d<_l z4v1)Fg_=8x2?l&QZ|z)HjxLWclvbL)mOZV!@5gf6Ayzt+zG=1f&Yo6C$hOEUA46Wk zNxFFV_^40)Q3KJ%B=t_gq~A?Im}P_S!jHL!mQ0z$AUD6@&gBbY$f{Al@{i5ll~%X! z-nHO#ynPYVrmFWtjK8%x|BLslOY|7M*dWj&D0gWaPyjO+G45+uY;ouCh zq@UU~9a?Ro@>G_Tk=5b4b{M_qCCNJTE)q3!m3G_4PLx>?N*NriPOR#sScXwLgNe;z zDHc1)){S5#D;k4NB?U-7o%}e|Ht8?q>@)R#*qkXSC}iH&$w-t6DVs5iVhvM4%eL+U zs&7^%7Crv>mi6BS!hhkh-1;ckyVA9ogg!ceFOK``RUI0T!+~o zMaDnoaqy#KHc#6W~^53VaeNgPM7pw zlO7s9u+sb+Kr$OMHJ+C5kQ5;Tc zqeMi2o^37LGIf0gacy-Tv;aL0lhW(Yu#YoXi!w(H zvT{IQ`5d>V(yz=OE#!e!)ZZJX+EKYjSI=PZIMGPQ=eMJvjWz=lO@tim(IFH<9_U zlKJt0Y1_~r&OqQYVHX-S4V`|FM^nwHGbRod6=qbc-_&$-b62XKlfJgtoj>L`PBjiG zi^2JJ&4uT?oMjx*sONnyCtmY|KIzk?l?0v3HF9yJc7+3l!k5^7@?Gdi>iz!uhSN6w z1(|(=w_Iz8c}hHFG$|a5AozPWnGBZn6nSJYu9bb|lN?l=ja9m<>~blo!017}JQ18E zQCpOFP-)C84%9Ti`trsX(N{m%`y>@$^&_pkC(aa1J1S6FQB(5Ap{x0Z#PP^q|5jUjdaY}O?=K9IdqV?!gg*X1D0ux%8!>NYnRE~uY9`!5$%ZbPY&`A>#d#jfEd8N!~M+fc*UZ82{C~p zo@+)Zo9N2M0PmW0xKV5Tvk(w`E5!n(CKnoJjOn zzUgd{6TLjA$Dc|qoZFq37pB(cA$J>HTLy={_l~@U1_C`BE_Snk7RDB}0A#B6$4!!8 zFi}eZjRj=o^k?#1|BT)(`BM&k5ckW=2-DfDk|}fchnm21y)jO)K9%O)Dv|n-9rL7} z>&#E3F)S#QmlB<^;9<)YHyzw_P)>r)Q zwPMtXd`O=?&c#B??nVt`2<@+(V}p@$&WN8=&pF7er)02S=U_0wIh)3c@pFTM;k65;k5lxx4`xuo0{SF8mg_g#EP=aJD4U_DgxA^ zJWY(mk&3S4qo~ck@RL`puQq9i2-$F=OR5G3?BNuW-s6ZnS!gsz2#v;gWTPW@MMZ_e;zvgQAat{ zYxo2#_3S*jRc)z99j*v^M$PDCYOmc>fa;8?2n-nLEr?Sv7?20 zOymBkA0Gm|(E76OKHotf$dt?T%MkXYJTSGUIzdLuyo&!WNZ%rsyla@X-4&vPaVwg} z;Co@Lw4vV2@5dxyssaJ>b1RvNw(*-^!ZW@MXa*HhCY1tV2)iSAE%Dcy=D`Tm3d*KI zJxRv54nvTKpX>H{@6AS5m95?dJwF&;HB~IgNupqOa@jgU#4UgnCdY?gh@NbBCP4-W zVOH8IsjEu1SB6>H)!mB@H0(aOX<&Mu3*W$!iDHU4lj}1RQ^%M~QyQ)#{?I9)~3gBq4NQ_oPQt}L`qUPM$`g%tC>yMhFKm*64qK3YD>lRYL zGJD2|rJYz>R&tNEmTJ0xqkomx8)H+f(kvVYfmF4tZq()igVC=*62!`JUZjj1`0|AO zQ*(_RYggo~J%t|kB4|wH^nsyR1q+Ev4ew-Y7BxD=gNR#10g$?&04;l#R*rJ^@`j3d zP;^YJRCU5P$9Hs6z9%hJ|FPymv%4Lxed?2gqMXVr2}2fX^IDBC^vR~bI@116({NN(1dEHaOSz(1>&4?8*m938hpvJg0oZWygXi9v8z_N2_E)}|+acQG^1r>WI*G%- zYZ|QgN0S{T-PSkn)_vAs!zfVg+Rhf$OLp9;l_`Y`dV=>sRFH{nkcbiszNBKZqjPLq z#e!vZ6R#`aS5p|@iJbY}lQ1E=Kz{W*ss?zFO#(gr9VbP&(%Nuth4cJId`RYn#=vKQ zpzvNRMSwd#Tq{8!5xVcyP+Y^9O1gFkchFd zg$9ImE(tNbrl1V$uDSI>Oeu+WMa&D}iqRxIt(jMJ$ZImzP_@$&a8xTcuJs_xNl821 z%t}M`y;(cL?7goBG-!FE-L+#5#vDc^1Rs0a8u&zOJ}1lr%@6tD?<$WMcr6RbqLT0O%=(B9RIF`w$~SiFO3v@!J&L#< zSUc`*T_0Rb>+TiWeA0h2Iwh=!ZK`8c=NGUrU^IPrQqX9;xi7j9AIk+>qmBY&d5Xfc z5~WYem7t=`SDCp{$49o~ECa=-Z}4CF8s~%ZTSA>1e_ubg!7dvc^EXAG4n0`y7@BeX zUdWEH_AJ|Ob3>dA;Mo!}yZR<))KkO0Cka{4CY`P{`_`%y2V94T&og3pZp07HRAo)c zhG7@t+kBG(eT4MLLbZKuR*6?WMVk_OIL8YNj4u&uvg{gkc~azo6S3J_bginxgA`EK z8xDE(vQJD*FDv(m2M|B;#(K=aD&YocDY`wZkb_C8TB^$Tk{Jhyc8oN9k2>A0G3zL! zql5^lo2UZY(?0hgksxKU0#u4|(uFb&1baTvihPXot@d7iW4%;0sD9=N*QFXmN8=wS z7^W#!1Vr>0-^{@db(A@N7WYP6>Ip>H4fF|IASes`gs0_mhjUC@9EiTEkr7*?RpCe;~`x*iQcO z8+RgH)nVR%lg_J*hIA9i&v$Qxj=_l+oiL~z(MtEr^VU{na&l^~9EW#gs+~VCDKi6H zcnIIjc^$vN@FCL3{7IOPqT$t+bMpv8dF-7`>lt{*j<-i`Nw>`1l1Gy0I@71!=6#L3 zXU_zsiQm2jh1r`b8(h4&b2fFe-h{|Y8uP*{Hk8NGMaN1s2u>>L#FL1gExR#_i^y@r zV`F2N3T7CY_n-FhN}?B+ti6Awqa*@VG-_;9ECu(b?J%)!E+V9L@ma4gkO#JnF7H1N z4hnk?klg~aw+g)`h6Ubiwhir+b1%i&ZQEwB2yVgi+3pR!OGtWoF01O^EORM>sC*YDy`SsL2;(92M!I%CDb+O7+x{45dBOj%F8kqv?RN0 zkFL+&Mf|8qw$kXKdotK9J(@h3D{p-6ogu=IB7PN9SDwDSFr<{sWP|qdu^c>c zr?T6?7h$pfCJ@;Dml~Z3^)Kda>R3n$ZX~zJ?|-l`-3Ra4E*t1nio$0I#V4z|F@HX$)!Sgv|!{Akd*!j);}~`C*m;!$W-gk7_6G zg)*GTI2;&xTLf0hYg1C0+q>Y=5&#s5)i7dONEeOu#5OOU<~p^m2j}Y~!oTuG*&3|@ z{j~_y0wA%?{MbEcFpyIOg0Ok zmG-m)-1}|y6Rx@6G7u2!2!R(qgGEwaa@#j>XQUPjx0A0oqtY#F0|MO&4Ab+$pzU+UCqcJOEjWw3%h%hgEhk-v9uvErNwOY58T7FNvxh5Ra^wgc=Nwn} z?IH9817G5P=BYrQKh}$pEEk>$g=?%az^Bf>6d*H|kmDToVG1jSueJs+<+fwC*WA{A zKJZC5bLCE02A4Z{A{M+dk{iKh>aJ+(>(Uv!g#46wW5awqXXk*lpAGGE`iEVs2jC@I zqIRc6t(D3LSms06*jV~JjUK}TzT%r6jdd~Nog9~~1-s5_g_FDy>Ua{{2H<+9&q`>i zW1LuvF2XG0L@zVFYVnxGLO1DG@|i6b7W8kJ{!sz07T*-vDY;~5Dnjk#h-L;Z+Cdid z7IX=7{-a%Gz>ZzoVrK50_|6QRH}$o8olb?J>C{Ng>aKWSGm~|%Xy{Wi>3yekZO33| zE!inkyZfizow%AX7S)_-Sd+0VRYVN``CRp_%rJjs1Nma*+)1%w+Pmams)khF--R}r zB-&nX1kyjxT{zUE^5hB3MG-kz_T z-BRH%$$ERrqup)wuaP*FuFh%?$i3smu5yXD7=Tn!)3j;M)5vf#-`7?0DWC^PgcpLX6aX|isP zpTwS9JZm^Hd6r8RmL$I1cp_@C9Ov2YODn zhgz!L;HW4yhGeK%(<}DX+UmSR;IF(kN*7DSpaS>jdo?L}Ixhp8hg*)nOHm}%kdq-1 zfI1K!m#|r8bg(C;2rIA4qulOWT3S+c6*8vJ+I}x9D`T09#fDwbo=hkr%+nZHU{MT# zP*m8X7XLKJJdtDDQSX#b7i#iYIO?B?u zzKWio$CvEy-pbNO%A%_6QibkXplQ!-L#&=2$y7Wn)w;%gV^8p${rip#;_XQ0t>atz zz#BaJ95=IzB-1hz9Ui4D4>iEcvp9Bs#&rF9t~#z<`ue({=rJNesmeG>E8i9A?Qdwb zQke*!k1_)5Dzk%0c2aI((umHCgtC=i86LaXVQ%eP&p*104cXWQBJh`{-bDie;_=+? z&Ml!&FY-i(hki>R4bB}tT(*7#$*g>t z1)w6e!*jnOG&CiNPONIw@^X+Pp@fAcsoWnkl1+JOPt{cjONfwtFK+l3vmwM#lxQq2 zS59}_7{a1mA2=~n%OP1SMz9f_p5%$!=9~k9SE09+$v7i-*2w69b;nr_Prq#V-gRfx za^=Xk$OmZRGs)&{EF~cay_<^p#$Hc#hHun+&qiw&-P4!O&<6hMRS@fPv z9RJenRwpdS(cKv(NT)dmxCk-T-40dS82=@CC>U7Mi5CUC68DHd>Z=UTUb*pQ#TA$0sRC;#sU-=zH|_A$77 zdp{*?jc|CW$Ir_!RY-yZnpbG@ez_sHH38jL%`O=34GKa@5YWds%kmMY!Q_g z1swX^uwx;kd#!z7{Ob8K*I)CR4sSErd$>yZsHsSqZ3g(Shq`j=sEr-1nAQgoMV!iTxdp^yOcuJ@E!S}+hna5D(_H>}e*a81cO&aMl| z=Z_k@gPbD1$ji)s*xpm$zcQ4bQrTu5iij^Zy7b2E$I*aMFIuX!?ZPH!)>LW#6zaP8 z<4te*fzgLt9s=6-^&g&4 zL36$?-;`IbE7VRr7s>G|=6itq$JBg$Nb#}7M`#qwYEI!qdYf<1`&NUcqOFU+^=A9B z7d2^l-Cc|0!ij#}J)c$(F*hWJ*>ymugn|9rpwoLT!-D?2vb|frHfH%QH`6QfpASv{76~r>{|H?{)COIo8O+5#I&Q8Kj6FXS7$9>#UHadM;*N5qTWGzO zbM+q$m7~_W_$2y||6w@g`5VG>74=q)=M_v-q9 zw?-xWG`X+M_x)co>U<~9SI)OkuSee8%)KWI|7$Ey*Rq|}rR3u~JYN-9YUrh%?ymDs zA3RviaGd4`8W@e~#~ixdA$%V2t)+-q$lQMamlam~02%2I9n~=wwsY1EWfsl5k zx#-#DbevwQ`Bvq>smdK%OxNWY4(!}6`cw6!cZNso9iAIrOIgj^|n2 zBg4YcQ%Lq$=p4Mu8C9Fcz?bh&mRYP1|*^_7nkBw2ph^R0ft%iYE0=dgVMB}?wa{;QWL z=G_ImK-~BLqKNB+dQQxJ0H*QrB`omqg^9#_?-Sj;zoh3pLMYx~v3OFY2E<0_17dZ) zql&d5kP{%ap>l*|orj;D&{aEgUA@0of_iCm#?=*YUB_V&dKr3;NROE{HU);S1OSjs zV_sr)Y%a4JTLQC?%3d9dC#>$Q_4qF%ro6j{VsTO8CLkZPHwO$;5P#VLKjE{qm2BCV ztT*yUdAJm`uU!5DK@kYoV2Re5)Q7#z96jMKd?tuBq~lqdP>G=kCxwc(RqAqoTW)L6 z@C`3{bgm?Q^nv@XDaY^wo1;kd^l(gq*le5)FmN_vevy<JrZ2xcau)tFUB^aaogEFVkU6PyK5gDV+-*FsYr(g z{!;odVa1q2xo6NN-qB4e*)ln6@c3DwomcF58cICS7u?@80G)iy3V|+kLpQJY#A1Cb zMo8IRM?9jCyP@49;i%s;(EFanJs9De78-XY)Wv7mCAAaz#X%Bi^$__0w-Ujrv#pf7 zX2_Dn+~o271=*Y~oN-{GQJ`q8bWWpJ-nIu6EXiujO(ItJJMo z6f=6!J$p7!+|oB}URg|Igd)0!)5)_FZ>zbY9elH^R+oS(FIwVNxPAI#mnwGFft_`1 zU>KNdwPB!LX#ugOL`ro;j8(h4*^a8R#LaQ|^l;4dJvO3;<-d@uzOP7h|=eme!d zNpH(cb=5{Vo{b@~%h%IJE09)7Rg2EnA4=~G+r2_r2?$vOA?yUZoZm~g)YpU_jFj#? zyNkpX6jcuz^)%0VuY`YrMBkhPR&e5KO@C>-dD-v5XG%;?rg>YKA8IOWt1}gi<#6YD zI%iZ7jg$h5%j+-dNvbNg>RDV5H=3_x& zRzS;91-ZBu+eU71Hgrh}&yz58j#!zK&e#9S7n1HtsN;b6U=j=5VyWe{~`+M+%IvI5x5JIB(~V5Ej!`PKI|#<>&4V@7rNJI`8%dkx_%U!09QzAW1Qw8`qx z|Ha;WN2Qgwd*5a<>1~KnV~Z1Otcg)H*fJBvUSbeCI?>p$gWaezDMqo4U9nA2K|nAT zR8VwcjXf6ZB^Ffdy~HvP_gUwjnRl)Ctka(LuJxXE_=n$u-Pn7x_qDI<`hLFqHVGv> z@OkmtMO1l4RMd#Pyat_>v$OkLwwd$RKR^qeo1NZ%nN~i(b0x1sr&XFQ`D$wyo{~c~ za>VqK=fUuR%N1Kajm5#Jvnzy{@{q83LO^<+1tvMjW$5@XPnM&kzaH4_S9I!NCRBpi0vE|%KBGe z;&YQ6K--8)kHTx&;O>s7a=W@bJ+Fsix#J7UU|mPEmutoywx`$X4UHd!m6mqd!9B0} zR*WR>`dGb4xIQ)$2ecA%WQb}R(~8#qiy1KbP)veCR( zpio-^bI>dyj0Uu@f3qN5!e&V=xdit|xs{SX4`bG&hy|!u`G5`snIpnJSm#zPo7xM6 zPDDpH<-`kb{Wccrd|Eq792XVmZXMMv%C@96$tb6~^Zr)h zPgIc`=xU!;VIz*pCP(PY?Fut-D+`LIiuP0>EGLnEsZr@LFR166=cr=SSDP;^NhttY z2tn-qg8rLmJTZsQCqa)3z!k`*KF;aLMbTeB&%xgRFr#9a)~c-M?zy{ax#ADK>8+9G zjG;<0I$BEEDzPZyhHV_&S2ZSZado7M=^v3K752J&X+_7m!Ud`=_j|W4$;|TokhDsH z0pG)%)R&?{XZ*|;2fTSKlh0^BHvVb-ryV*zI;tCu&4JMY{7T;5Exz~VjB2==18})_ z+U^+kI!iez4OkR6Sn~{?ylV=4SEwowX9Zo$RfN|Rqe^D&)H&_M=G2|l0$aFwON}EY zH=0#b#cF2x&=(n;P#pv7d5OJh+_(|OQMaU+3)r?YMwNI^tJ}??3${o5gpuE561s7J7 zy$|}fik7RRCwe2AXKfNKago?D_~f^SVdt*b513V#pD$@)D@Wb(3$W3T_AQ%wfp#=D z_+s-PTH9>AO~Qn^0)T6{kqOR>#!5yd@PtOB%W0);R6tUpp1*P+RqjH?*~RvJ>4Ybe^n1-tIV#?Cz-3bd-v9aW3nfkib{9dHDfNkd|>T z6X~|7Np=5d&Mo|um-{s&@B317S#5tPNJmqX)66skRk(7gADO^4`oP%SA=}_(l6YUA zHGwk#tff~F%9YrJ-ksbBMsHIuCe@$~&^NV7m0#3kO@y~pyn<3Ww?yOq;NX;QvRrnZ zDE59}m3AfP^pUtuqgQ3$hM6KcpeP|6EniEB79~U3mF(49jE`%oyx`%QIJ9e(;etXQ zk42qRYEZlQ!+Z}aEYbtGpHuK)7bdE|=&`d)+4V9R1$VDU^K7*#vb|3Li@BjY37wD6 z$xY%UKPy2-u<3Vw1{nMJyTsum3N`PixM8M3P^<}H=cfG582kg<>_gJ;Z(v-v2HCbhdR{SRXw*<_J>YSygc|B|E}x&RqTIc7Nz{_#LKCbi|AI zxbUJDt$Ir8SE+Rbg(l@o6&U@pr6bQxR1SDwW3vPoB7ff^&-ZGjo&+fc(zEeJa zhxNR;IGO?UClFhu9Vfj=(4lGSB0FL%qM`4|&AZQB<~O4RNk7DUQF^O_EBps{3p{B4 zN#>t+z;Xk!cZkJTf7#DYuxa>vCIHTxBB4jnx7!x8UtE5K@$aTC1h1?4=9d zFC~BTUbSVwnA*p@oC_0(kO%{)5zOeCr@#vOa@3g2Gx<@<3IaYPyxVJPYN8RGe;^gv zlkv!%zwgPXf+jOg2*V2_aYBU+?JnyTnIRLU1{Il|G<2ok-AY(NfvVo6jr153N1 zLtlPW7`Yj)+oyOOImnV3Y5gL@$}(GG*tKIo0jv9lY=7+1cs@34sJMrF`^^}q>r(Nr z4Jnm|5~6lXn`iA(%G8T?FgS0{B`#tUnPFNCHUdsU8GIzmDv3ScE;?2YSWPy-H2=V2 zP|}y1`t(`MUZ6Y3UbZ5nAOm&I&6;91`P~f`{;JWi*LCn;xn_d|4<1t!?Fl)#UwST{xsVo8DPw(Y+Z|oNw z-EmQnr}JtZD@1jKsxc!=!t64L&2K#Y=UpbJ^N}l=R80%BxC42p)szWe&4&_?GAW53 zTK$h@9?0@Ekx!uk68M%RQ@y|%2KZZdorfJfDh&*CDwin%weac0)RaeCxyR@ak*?!C#0{kYViV6*E8lwE_FFmZxA93Og88wGtlg7jAvhN&K7;3=NI$$rTIb|wo$dAB)07V!))a9zG7NxOopHW z+!>Yc1TiKrLl0o75d8hxW309A-x0S4^}K55F9nCT2*L%`h`} zGXmmO-l?YPh+cDKg!`L8k8x<_D_#yO$vGPg65m7Sb9|CDFF_cJtL{@5=-TNwn%7VU z@qifwLbkCtm+@RN1imMQLS*f&<0a?KaPwtGJ?(}FGO;#0rEdwn#@XDP(3X2?Sl=16rX_XRP zH)cB-spx?G&A?{HqFU<4YT2DDA_+=%J^nSO5S4T9sdWp_i<5wUTq$EqB(Pb({j1eB zKDJtkfRK`EtDZ2Zj$w2|LM>Djm}7ZNdX>ziqXNn;;b60B%w9o#y{dGmcESVN?b6^R zoAm~z902IfBiq>qYU!)~WcEB)ERW4v&bl;B7)u}ER`wUFvbe-9_ODv zf99nKOLjA_vEf$G z+4~pPG)Q+-R{rXosG-cc=eg-j2`3DDWQQi4r|C3;Y8>{_87fUvvY(e>jO`+@i*yPU@3&vN@9P2dFSp_??puW2O zOBQMcxDbvr{A_W*fU!)|chhRp!Oc*`^;~{n9cEh8&`d{n*b&JnA~qB9{T_@1s=|Mm zX;D(8Ox9n8-oM%GR}e5m&JHo)KJq&pCw;xvsgcm^u*wK%rV>OV?)6ObTS5^i2`QY| zcTS-{&S`(w-N^+5`&ItXu_`N*P%*(b;4!c*EJY!#S!gk5kUVC+P>7B&2qYEuzDyXK z1JCakxD%^2q<8;;{2v^jk%?2o4mO&r)U-WA5&wom$6&ATn|SzK`pO8I@eBHjp?-cb z!ixzAAk;c`(r8sVRk1hF&-tvLu~c-UsTq`$ACb|K8w|39QN5q}V;>rZUYmh0pYIL0 z%omd0Y7iPpenpD2ljQwfLt7ZvCF)x;C)w?~d#n6K7phVbQJHn~NrINKs1C$ToOo!; zxs{>uJFjCv(@1S+Lzql#`Sc@aB+jfi3EIV(|3a7UuT5Wvfs}1ZCd8|h!k9702+7U! z=i)k@oSak)eiRwfaxyd4X(sHV$#7uDQTn5$ic_T)9zSz$mzidjNm4n3^O~VLm&H3m zE^O|8>1o%9Q(mR5p2h>JJ${W_pAY~{`%(*rV0=LG@v85q}kxL z=B3^Bn9afQpEK6nYF0I0IedeML2S@UaE7sXvwM18?(T}PW^MEi0rPUfq5bMuV=&{5 z`slQ^!CUoj7+t!9L)tC+6UU|gRnVJDJBB`O0Jkr z==Q^|$4EUDv+2BxHcS0N5emr#p0f?;5@?~ubvFt9Y=!A7Vb+f8^9aAV+8_vYsiLsU zepQ#vs!=rEDM8>l1T_8UxyM1lN-!6?wkSn@XCUZ(935i7O&TXm_W6NNhAw6c?>#b; zja*;~J=w1>YrAn{@4~zB{x4xke{g7i3=`Pi(0EG)zIIL&IG&QPU zjScq{Qc@pdGkZ=(lzb|8Wm`+!TWwC_C)Rg;8!dBo0Z--R(2-vj$Kz5zY|oTI*^Xm? zv6@jS43_RBXaBeJz$7bpj?s9|*^ipwT@W(t>z<_3K5+2BB0s_@ZX#~S`yzUaP;Wwo z_>bT`ZLfqkn6HST58kHP>Uh1aAlln9_1#~y!E)gA#3a|~`nn=i{Ux3_Q@V3{v)fhk zgwpt4|86TMGe~`I_kFVk&f$S_Bbpb~YXzyX{?8X+U9}Udkd6*L}U`sWG6s&HzY+XWXsd2R?QP?&75060eexC2R)4sPhX;i6pX%H%5NYmGsKbbYbL$kHiFG?YrRY z6Lq=VtI&`x`SC?5LjI4AQdmUZNPf6Ny|#Npo*2R_ktHVg?8_&+Y}dsVMUwr3Zugj; zj^2;P?fQI{ZokDTzA%-)-Gb|kZhE(JU5Z@;4bsO3FDR`*0JVbr>R)x{g9;QrA_v)Cpf5ztHC;NzH`Wnb52e!^?C0V5Ww-g$DJxaq22cw1 zy*GBS4aJC-9-g?FOHah8$FF!(vW4%%f=tFYyQ*vUW;p{dArNaROo7ejUWL!w{Dw=- zzRmY_&nS2>E6wd^izU5F=j9|Y9~@}6ZA_jW#df{A%!CVzcBYQX3#^HmOJUZf7E#&G z_?XJbHbYMLwB^uF;*~7^z^rqE9_;M(9w1SRj96}N#YUI#VSKaKM6_moh8AwXsDnMS zi3)kj(hgYzP~!@HtNBb@d;zIrS@lkg>9_3e9{wS1b+^&xV`R2nH8|40U+2>}11~=U09g}y$I4j#-Wcq;)6o=n%e$(hWmMtFA zFOao8WNycTTjnl@6BBE<*4qV`Ow88UVrX9TjjFC$m+zM!uHyxNa@>y&zIoV`_T$Ur#W$kY&3E8v}+B%z&mM!5n`AJ+g!jkx*YqgU2Wnuw)?i`Y%2`$8nVq6#`NDL-?#seSrl! z*bcufA8(<$C7d@8UBI$6*x)4rI?c>hq*UenK=)UxyK&=EkCDhQK*wp^=u-6Hqv($g zZdJrjKu$FBFhp%2V3$GWk>p zNUu3R=dAF%r8iIAek|Y71UBi*URhn9KRJz?Zu8hxeNEaBy^O?Jn&c+Cir{C2h=uNa$YZ&R(Mti*T3v$yA1B_^h<1L zB@<1gfLvX05Y&2=3m{NbQ#7FQ&Rm2)_OtnY*LIxsI2Z_4Jra>!i|$B*_8Q%?C&;z5 z!Kd8wh3oG)J{H2A*oKi~QOCit$KiRqNcjFi+w}nbp75*Oi69`@W>u+PJL~K6wi`Zg zRTEpL%{C4cyV)s*QdpYf6{D-b< z^U+XfaZ$pw7Sl*MKg9K50>`}#U^zZm4di(r)7Ad zSvrykeZ(pu>Ax_^5eHlPt-yEeGYU&x_@mIJO2T-w3n-)KQD%=m;XzZ6iI120EbFB8~ zSl&=7^?x<-^OBYC>+2sOg5Yi?DV?W>Fun~BC>u-sv7})R8d|}4G(;VrPweBJu$qUZFU^iAR)_LVFY!0m*#Tb>L_>h1ZnX@iW3rtD&=gXP4K1_d zqfN`^e1PWeUT!w4KnxbUHx)a9wUS#X9Q2zDfS&$533p<7UYu18}J+#2IOy(|MPBIWFqL|pq3 z@eT%PAAq%4)1p4Y94T z{9&Hw_welj|Tz5BRZL42foZd;z3VP`@X8zI| zo)Pbwwu?s>MdxgAxGDVm&ulM3O?Qfl)|R|M#tJW-DG%r8ci`T#Yi7{?IMeT6Yn?Jq zk;#8%lYDDLcB-g>Ti!pOX&*YB#jPAcxq^+=)5bYe3akJ9b^Z6J_@CrsWfH~l@}&E} zvro<)rmD+qlmxTXId!l8jrKmeCe2a~%UHHsWE+FHz&V7p|4dh$`AbL9s^Vk0J);HP{wDskCHssz5x&tk&~xiNpv^j{bt9tF;xE3dh`{dvc1n|S^Br^>(= z8X3c6 zX61vwc!vlK&cWGWmrliqVV6GLw96-)buRE%&4VoB$=fhlNi`a}GU#@p9F8od1wmWF1yW4u-r zKPzh)1u@!*1ZsONd_js(!biydbO8kOwDmZGtslF>}83 zb_eBrv`8}uek*?&nJ((GjRxih-mX+zLB6Rj5t&I8MGb} z0N4Tnh}&y5i_*1)?XmL7x0M6{Zwg3Bk-P;(R?=d6Vo5rzTBbP#Kgh1{Xi{Iv-o?p( zeU@Wr)XAD_7uLApIa~!tVtMcMS$&)J;WOkYsaQKRBFRx*dtm0p}p~J+mPRY$0E_$ z5<$xmxZGeT{^LWJO_y=j&`^gfhoV)T0fqeP5KbzCxs92Eeb^nhSRRDltvGW!o98C= z{?0FT=-N?^(dtC7GIhboZ<%#?V?#$jTj*{5UH_^*t#xEmKGiv< zPEErAOnB7{$CO#)$4tQ9xcD@*_?FHsPwi6twy^Ns-JdNCyCB&GzLt4crdQma7dPG} z^qL?kL#-bNAjT8cJInt<8PgF*p`wb4icq?i+nLnoWO7=STbf8SA9rFtKPDC{IFEif+)HGdqrFC~(m`t@bA z+_e?+B}J^<_$U=Q-`&d{59>xhq8;a}l9?`~r69trK;F!Ccz zAKc-|eLOumez>#D^|Q23hz@7|Om!oaNa8jAls!AexnTgKc{!2zf9L3R=HOT!dHbgS z&QFG#ugvSS!@I|%Jjb^``qbXI!dD)FG+%ckvxWPt_DG@f+*XZ^+e<{gqnVT3g{&8q zYXL`q?wXn{t&@{e-mk2WZrHp^=FDutk90>phY!Oc8#F#c$%82u>dc62O-^0YKhC?v`iO{k;WVERH=KQXOnfrONXzUd zJHifZVw;@r1#9_h$zvvzX3cZH%*u=NeQ>-YXvf#gjdsr|s{^7i==WKjY+?T87z_sc zF9#lvZ+mTy#zwQb^;q6@OlM%{SgHAtM!8)1H<%&g6X-oJzwxbD=(3WzG?b5x;`ql& zu(TKMjFn9*#7A@p5PlFY>}vi)-|s9LySNhjE4KX#^=)dKs$yaRi&S3d4GkFk@28lq?JOr~xqDO? z=@*cvz0S@itsh*-Yrm*QN^i*R#&={(Jj@t85*mRP8tB+7%3^Jz?i+`-27R(d8W!QQmS zCX@T(Zztns{km*hGV)S{TdC8X->GgtdnxX(IQbW~@bFnZvlKypi^Di3npzVtgF1vU zxYb;eU5)-5?%O#7EL$k27m=#9rKQs%@))J!Q;E->`9`_*xLXDoLhbVVedI07O+Q*l zCZ+1KHiII-WG9};an=JXQlN0er*mFs^&NI#5Ib(VRn7^kX983}g~ybp`fTrJci9F| zLX(`0-d0Sl@*6yCJGn0U2S+VD*uHb8BUa2_a7t)u$@k@kZW36p`y8ge__5VAv^Z%``|8I5u|7LalKXA?a?@aRVT`x~PejBWkaWSU=VE#F_McG6u zAG|*CJEpk8gwV<52sW$y501W(pD&pIf0AVSpMw%=+vK>BNB#Y8hwgk#GF5ZE9O8%D z*W8m{aTjLCM~xd@OiXOJeS3JG? z&i&Qr3|r@@wTk}Jie`4+d6ki~QqDGw+S+URhH=bYtJ9OcH8qo)@a!(fD(LweSiJ8< z{&i`t&n7Awc!*iw`InN9`V*l=MKL30kB*cG^@uDpZ-zWz{aLTpIN=^H+&UL9qF)Y} z&hk91=M|&5zg3kA9$E>!@{z(Kn!*~Ypc7_LBTg{XxDtCGB@+`_DmHXOR^LpvtP*a_ zk3_!tGD(`8VEC~MmW=SE6D+;YD2nib@lfKDcm6A^C)E_qo z3_C2|=~kilx)$F_XtW_-<40y>b_X!|0~cgZ!F91?VfZu4Ud~U>|Q80 zzd)H*3v?h*HAS-(@fe7yyv1Qv6?BO$1qyhyxzgJcYZFgS{m$A8YEI-AD8?1y z5*_`DXN_3dlgd)KRsRWgmCnpUhPxvCg7);iX1Ckur4mm?EoOO|%VC$yy~gQ{O1GNm z*m=_8Zpdh=dF!A=LmZ}svT1@opWItl-4-D6H_twA3Z{`USJStjtVw(r3JgTU72fMB) z-KiN43#J+xc2i8N?(KdZ3%u9xoMb~_*3K98gj<^{jl>8(hl9ugnXHnEUxBuJ{lLy5 zcL>zN$AFCA2DaDBCvZ7;@s>uFz8ShIhH}rbH`Ost^`kr#_KCU4F3;a7%DVzaLb<|u z_?C#x*t@xv*3#$QXRd_NZlQ9VYgswGi0@TttKD~vj8E-7&~32kyDcz-!bxI- zaNaHud!BdY<8DpU+fkVvk~8T~G&hUC``A9ywfz3YIv&p8JNv4+jGw7%XcG>>c0R^`#Y<8qH+onfQC8Ioni z%t~vl`F^m=h)Y|txf7c?j)0g#HnP}h9IkF-jh>JF3y@!{S3Gb6#vdGKZMW6|ZINU~3KR%vX@l;RNu%Qe`GnVnrBsd86_?)+c0V}@ zubBy@gZECXmuO!pIz|d;Hn0=Omu;k_)eGQ^R%sP`_2If?CqH_0qnX0E5eMkkXO5%J z6E>wMYxRbD*&13Hzz@{E+9Co_eD0Qw4fpWwwzb=JGHdQg=5|12jtF?su1#m%orM-! z)N@+#o8oS{H4q;cQcF(yAGBt=#gxrZQ-abaW8*!8E*HV-za2%a)s*GD)w0h5YdUgb ze5+Md3y+Yuw)U8{No&_n(EenI{Pp7NE*GY4;+30HEbaPb)%^XtLmmA!Q%kYS0=o=T zu3)~}D4b`}C&Q01d~z4Cg@wh$7XXF<(S_%ED*+{_3VnJ4EU>R zAwk?xtrD^I0Mk5{vdrGGF6s2_*NEZ~<=dv83k|C=O-aOzX7?O6%ydBnGQH;Bj%Vv| z=CzF+#!IjmQhnEtrsw<;qLWN@_bCZ*;kBCJxLzpR_rRVCaRj{I9JUr`jv)d3TS@a* z0Psu#%~@FR>e(k9#R)CES#CviOM++0PQ~sOLvnGNw)A8iyX6WPKcj^}u-f6zH-<_B zRZ~&U1nS*uHPA_-`M8VBj*ycP0n1-osUJ2v8npz|@Ae_;Nr&fPx=UU{8m9 zPTPau1{B1Xt=f22h(?#3RhSU%I=v~+g+GxERk=Cs7cR|j*6R>WaEy?>0UMO zFaert{)OlW%PPNeVXUyGY1Du&aIqxS)s~s2Bq5#M3gj|SttF(8%?={#6MC zpw+KYsqA4}s!}B)dFD4egaNPB2Y(_TXaJg0l^d`ChwJEx=@+j~#&Kmup|`}Nh%I<5 z&a=!TCt*#|gFqW!4XFAwF^3DCkcmCap=IF@1+ZQ88}W3zLT;?fy*$5l&&koWY;Iv1 z#SMdW_<<>}9{Ex>%IkIjfp9sR#JGV=(&d82BQ3!FW?<&b+_Hd`J&e-}k0BknLpcqZ z-*Ys7`Rh(^p9$&fxxAm7+^hI=$F@|6)wJDqUx;`Pd8RHoa3r3x_G;RFKH#@AJ1&O* zoJoLN?I0nlrr%=GmaV$~lf89wc-n2@U2<*9-k(eWc01>XJc#FO+VY9>lV6l~rcz4p zOu!KFJr_(Azx^9w3z~!-W%~&|)NH8O87LUb-HH=ngkR2>c?8<`Cww@gpZ(8ObDSAK zA`2rW*P%KY1=sC)seO&N_6hl&&n{^A*4P(}?nNjo;DW3{^$$3F;otu`7YE1rw$vKc zBj$5$hll_n$H0Z8>t|OYuI=;ruKUC>hmti5ozq~0PVrLV0(g@C@Wi+Nio23L7aCet zO)Ub0$7rAuZ>cT!p?maPF9YXKqcx2V)8>)-ODWDYZ!hIglaBWrtD5iJe6`O|W|s}J z6g<})56nwASyBL+>cWBTojir?fNFND2vM^?s@&MZA%hUmJv=*-Ye!FPqEmkx-Ov;(1p)MZi6GmonZ_%vUeJbC;slO&uDK70n#K?HCoJdhZ2>RoN zixa`z7$X}#w{7J&ft@6`4%cHb%N6MDkO=1E>!AH7xNFY7JZ@D2ULONSc=tMtoZ6^A zC()8}_4jyTRX3wNlE}M}t?)83)8O0GNJ0W2g z-<)sJ(5ZYhN@jxsNLmbN=taA=ES>2GKUi7Sz5NohyWrGG5L^~XcDy70_OD64gF~9j=6zp zSe==yT0A4=Dcunp2ZRAcz`g7!&BEe7%#3}3(OEPw+uv0{?3(71gSC*%qwR-;7XC9@ zflclfs)(L@k<-4zd!swhidj?!lrx%g%ZP1QIized{~){ZcV)w>Ch2!_yA@E#hHQ?I zo-nm&ND3oD(K4@zfho?JF$WHcEnB&!qcb&xnk+6~koVVaR7E!*rqb4^8ctwMX1zUm z7`+Y&s~fB%*O5N4un1x4Q~=;nBH&+MoLX8^n+GJpsB*zo2hX9roNTA{l}N1c8Xr@L z#g1n39(e^JU#$Dx4jBsH5BohV3G=Gt)e#r{<3_9w`{1>a(JXTGj*wrCKxZ8E-GkwM z|HQ#Uc!Y`}&a;ybjaE-*Nl8kHy)qwJ<1H| zctpWV*nvsE?m&oJnnGpo^Uodw;P6NwEzGusFQm$GP&X( zE@cksFaA_*-8)9K(k9He5{~Zx2vNmD!>IcDTHGBsG2e}q!oWZfLT6CT$Ng7VhCw@q2=sQt$rBF$`O3mXzI@O zCUY%NwkQuJTvH)D6S0i9$;EaL*Q-D($9gMrJ7dA}a4tKR7z zevy1*)^#qG^NXgHZZZ7ip?n8!=T=iGR*S=E$I&FBlh9WO~u zp!aNJkatU@4UI^p4r!ujC|?oNOv`AH>OTWXYskEmQ0hN8>y2SQuDlwukiE6bxC#28 zVmV1dI`$G4HZfbuTFV5uqq~knNi)#8N`cEI%{JJ3M=k$a$edQcVRvZf7yi_Mwv6sv z-MfX&+`OVWP`;5o88{)Dz{(da;o;4gT{#!l5%YC={D+G5oaauOqPWl;fy5d!Fq{eq zHvL4y_+m0=D(n<47}JlC0D6{mwZWcBq5>jjrtpRpSj=5XZV6?~fOLQ_G<8He>mYs$v0gQZ~$w#*A z?W5wirK>oP01=Wk-cM%NETFeWvsqKSzPl2*vrz=+3{1d-4`<8={&th*_@Ca9am%RW z1(a&dlCwKd<6}TtH5P_*0t3-8*jnW~=&i+{lx>_~X)G(3Y8@(6Q!S-m8Ri!%Kte>Q zNCuluv5Fr>TzW{d9$s_T^PWPmX#4$Ct3&9jd&G=5o$%n@uv*}CQCva*`VWrtM-_AW zQHgvz{Uo9}@Q`5}K#O=X?K7<6ds`oYMhuQA)bmSt^axq+>wfXHF6WVHf$$$4dswcH zz|vDQvrw~*evDcs-;ZKou*tawA9;!*cw&+bzw7jt3LB(57Nsh6?&+%urUzz!s>Pje zZ%Q%?M-$y7dq)ZWyA~VSu&}`tKF+hozqUZU7NYs#^X!)UkeV~^VvP>4CEQ9qiVB_m zBNHQTZ!I{hcnaJ2O$Dx8{_LY>Jd_anCQv-O8OM}w_ zijX&In2CHn*P78c^fpT*KfcU-q{advg;R4wJ2?pDUtNWBMpz<4Xji2yJK)l$+gB0!7y z(NKl))~VVt#Fi82C*P*to7OtekS*hh==ew+Ysp$&#__>(Ub9M_1Acm5RPd@JhWu1h zgc}&`Y;`*dk0Dy0m=aI7grx#Z_N7Cdp4%PwesxX_ilIH`2^e_pX~f&p9XszBu3Y^U zT_x3MM~_M1EuUQ-IWpv7Qw4AA?8h=+OM zLxIw9b%s(YJeScgLfr$ad2PE^A6*0X1|1rj+;DDjc#aw-%2rp-&BaB0HZxOkwaf7{ zSBE~9a>Wmt$@#te#pgEdL;8d5a@kU|%_ifW9#T#8x_~;X9Eu-l9`S9ma4{D^HJrB>6eu`iOp`;QvG|sERx+J^o_8GQ1gcSRrB-Ru=gH@A^8OiV z>v)9l?&)PZn$?0TaE7?i`MtHLqRK(NW?<7i(F)%KYo99Nd)cgv?z39$$4SkgJUUEA zRO!g@nGeFe8%3jnZ1_3jme4pD=fXgD$HO`n?3X>S0@}2wBOJftXM)mh-Iu<9p+P@x z1$S|ObN67#PC@-b{)(eC70H=fNOQ(VP31vk&ht%tB@otQ3|+dHQjUZy#|%k?7D}I) ze?fd=tji9xy?#GFFG0zcHZ9HNC0sc(Dz#+u@}^mLdxoI#Neh;y01g3le2S{6bykLk z)Ut1j-Ic3Wrj|s)fPw0SaEVK>1tdLBev@G*RMfzz#?}#rpwx!`0fUC6I0UFDK7b4t zrtoN)84KHFoB#q)_*j{Kw&y&T;p$A!``~GD zl2U$tNKXugrHur9>9_kvf(FVtz7^tCvXeY7k4A-{^rI!Ez9jKZhqQ_!fYy6#$vYgg ziNS12N#@=^6a9Oqws15~!){{U;={hrcIqf1{HOIwwan(g<8u}nDbRqHG1r+~i)PUh zJ;nzNaR)AMGYA7B1lF#O;2y|(R!TP;6s_!(SA}yAN>{s3AkkxS;9i~+CU}|kUW~*Q zM^|jFL8|m-BN1i!m%^!0*vv8Bqs)6stV-in0}EMMZjr`vpL>je<9_+Y_#q?fL^67j zj^wKzTUu4VOoY8O;4%{E!DYrAS>0y3CvQnfMoR0j<@Xbt;XNX&U>Jd z<$n%3IBnqmTeK6tI5TCV^s&c3p6QMWMS^+}vH%K7>0*Lf{LJe*(nONL`jJpC2PV83U=`T3bq^?t2v!T%n% z*7Y6hXCJXyd2iM`8DyX4vk!G)UvbpZd>d@7r+d1c;xb=pBwe{?%G`guLr(4UzSQnf zuDxpF(3$+Fb8Ac2E=!I!n`le6(oekg@*H01w&2Sn&O~`6|*42uyU-( z@3)`fxW?trm0_j8aiWo;i2{UuN;Hiy!4o&S$!dz(;Wx$jmU|KD-TrPpp!uoAU9nif zL##U^J3nHguI-0&NXx%P7-z^HHT`yZ)$o@CG8o`UAeR2vXW+2NN@pNYaE`TyBM3Ub z{i<9S@jZvXfzO}wUHF?#gp=x@&8|R?5tc=4tx)yXib%*`d5*QAL~>Z6P-KBZqmJTk z!!I1SqJRE#QUBS&H-Bdz{*b&kkz-VKy8PR2Mu*WQrp)6i6IK~1Z*={A}EOLD7{lkBD-T&$7Z+A1++z~C`A``iWECEHt_L?NQ=tF?X zzLQ+q&HcfMhYItfvxW4k`d`0Z>cRc_VM=t5A96)TaN++WTfq5un1HyPOS-Op!bPc*TVg7umrv0NZ-A-{%(Ox16_{Ne1v+F$1?2gez(N8otjCJ{k2}@xlF1L-3092O9&Pyi%{7|Lp(Jbn5RKa$Ef=!)x(MKvPplN5UeK}mL zICT}iSdx%?CrRN{TsrH}c<5SO_W6X5_A{uZ9<;MV_?0n>qp2GX3*5*&CB!MR1uFZ8!PVuLtV(ktHA2(UEN8%P0YUJPw{Up~x&E4?mdRJ}V-H5|Rm>-A zLoQ9}XJs_*F`&yTW3dFE44&;BrE7QrE|FZ96upw`W66*EtN3=lvMW~0QS*_0&-1UK zsNp5t8QtnfQ(1>2vs?yor7h2Af|U~~{k=49s-k(rq+lr}+|SWEX8XOWbGl(MbPC;L zIO{gNa3UvrdhNz(aLk{d&eZ7H687FUji!Lg#fw+kNPSzO&C5cieIB`S@!J zt-0pX8f&fju6I7~?}40`dp@LUJS3#; zgQDGKSG|`ow0KKLfgb^914)1p0wHGWx7-rdI=v12ly2u@b4b(P@+_sl#E(K;SXdyc zJ$2*(q{UMsPh*vM_FvxwfRu_Rt0UagLS3EW+lTz=N|GI5ed)8Vz_a4MtHqTa>_>^W zI6{#w`1K!Q7|Azkx?o*LU0t|+o|-ujVEV_^Fiv9Y6n3+=rzm^2(5J2h!jNq;Ypy>p zd+HGu02Q}A&}_P8&Kl~;syY!!Sg)1fbg&~e2gGI96Fc$oE~xa2+gR>F2<%OYfh>oT9WYaKy#^0EC$-3iB6AApud!h_nHIItx+A(o*lS6 z$QZ@=mZJR$?TLNAB*+(BY2C$ASBpI5gvm%VCF}8$}tP^JbDtRJe8aaEQEhz zI>-FCOeiU5>j<%k z@5>JDYiyB-8+W(MzLs`(hDXHU(E8#|U_FsWH#M!TeEmo^pX?&I7y|K;iz^$vo4sr& z6JX?Zga00NdNdoG(W_ovKImhxWxvobMrwA0^3o@@uC(0oDzbVTKla}8Ktt1;e$~XlK{$As7)=_sY$WK;Qf!eGdhPZe5=m3dXJog~T^*DzHkNXTd zsJz+UN#!St=`DA_v?L|p6ej0hZkmP+wF-?Bba~ij4Vvq~P>dq6otPRt1mN%=U&nFq zUC8BA7u6zY2&0V<4;+-x(W~t^x}P+FW)Pd|@n;=XsP?IM9y~NDQwV&KtvlQDSg>W9 z(D8yqP~LC8>vm{A+6SKkD5RUX_~%}&g!Qua=5r#u7KZQ`WnCRdDd1H&Ku&#i{8;)= zy>W@-{>lx#QivV&TfBsAb{%P>*etV4Us$Y6T85gQzzh);Nf*~~>|_%LMJg5LslB32 z9mo~yi8P3aZPSGeF>}ufK1>|!$H8lO zvI7j61N?mv`+5XM;JYP}jlbA%13l<*{LW)})-muC(`?#AVLe7D;;IEUS!Y@kJRRUi zUIcNqgGJ9 z)m%kF*%vY&Tsqi!wy)Kg`~f2MxMMj{;txZPsgi=%5RiFUEul0Yy5+n$@z zu^SKH4E8y_Rl~^1{9bwH*NFzQyT~82u;#deV zZHoU!HS$TeYcE{Y&Y^=a4oRon8A)ln!nW}=Vl~l<{E11XEPBtb++BOD8gelYSeBPH z8K^ido8DOP(p4~jQf)FdGU&CDIr#c`qc=+>oz;HrgX7(ren0C~D^fBc$k&KY6Vyob z-)VN(14F2mx}X4x$y1Gcsr=Xb>IM{mfqPc* zH3IK_vwFt3dS&~j`-020*|lRZ6{=HXMdOC=RDA$YB|ttq6pKxo0~h(!eqJXr?2MUevX5_C^P#ieF?l* z-qN^Sum@6eXn!oSUCsxmUv8oGZT@s=Wgz1pom3=4b_7_0u;f2$7=#!8aQ!xiRpOqs zaA^x=@TO=8>I(qPABLx26rlO8Hj6oH)YUEW<=)8kxMJxY`GV{AtZgXFf+!5CyikAm zJj!zwZ&b(}JSi%_$h8!g{Z`WoY}m|#|>2!eUU_H@~`e_|RH z$9(_~wY*>c`EXRc@kG;=ci-1cr){rtV?0NIPBuFW)NelMp7J- z_7Z9#!!SZ4QpElZBdgchvbTl;Bj=Lr6BodSwuHRCI7=>pkwa0$RQT!@_&4+)%UmR` zFX2z$+@D&7xjMFTN!V|1=n4%}b(Ja}LwsSK7m|J{EPCAT$y&nKs{jKY#bdC(nLWm0 z2SECQ-NeQ2JVhnFXA*u*S#k2x{kf~wY5F#V{Zz|?H%3{6?bQOO0Yee&+6pO0)SlWX z%Y|@Fw>RRG0qBXl1<%Q?{6%20Q6b)(meuP&IOTg1wVz7m2s3JDwvQpvt$DYU#YI^a zq3OlHT5V<{LYpuu1+CZeQCmY4u+=XKC^d1Ef4$jjLLp0FJ5Bvc`6iKld=8sTN*sh6 zOx|w~fH%D?Me2YZ^<|u1wGx$x{oEN2yt3n-ybD8jqLX@-&Q_ZaMR#9Muc8&~rz)*f z3Hy~|B1RSJBQMKCws$uq%I#v!d4YWXvz;EjPo;x#DpwMBSPmbkI}#F5U%f zFYF{s=|@9{hqVUd0zy0u73G4SEj~CNG#&$Fd+{EFt@Eh8CGjD+w}yFSrW^2%`SC9O~leoHw0CdHZ z5-G9WyV6BgJX&s>6uFfxC0+5}M@Yf*p^ z3D8EK2K*QZc^2i8eKeaX@w=3Y?`6wQLkKvr5aVCU`%;@*V`+2BeKP~!`@i-!Hh=Df@TNQ;>Mt^= zQG9`jMZzm-k*8NGr1`Tsm;sR9oPi>u1+2$i5-a3p7udIN#%glCrqp?ZYQ>mQa%~pU z9$g@pT%YU!X6VR)M(#ZuF(NEaL9W_SiD*wi(aPum)sDjoZ_H3a89M%+SVl=&>?>-( zuz0xW&lbh7(nxG)c+X6ZDO>(k`ox9rUFEfb<_sQ?`Meh&qNVixxF_EuRB6FLiGIF9 zm;-5R4t}VS!W^7^L*To}n+O2ixh5OqNsuGPM{25PP=apywD%$%X#+}nmQANh8mEV` zYRNY>I_2|fCz0=Hu5U9~4T?mgRKlXbej=w2Q-eVrg4h^B;tZk!0*MqCmu^t%Y>wCw z_5XRfrf;{&Mx;N%NLCmR&gzD!3h^{i3Z}+BB*&ORSmIVV9m2!&jRY1L@ zV4X?_1@XQ~Kce+Kiq=9ZtbkBb%$|$T#-&FI!ZdSGs?5H(TU5w|P#Pwu>n@QvYcJi8IbQmtYkRJp48p?7Ov& zfnyKQD^ZT=?X!MLAND5e>C)yvkd28+Cr8LZFO(;=f5KZ=aUH@V;-6uCT%K6uKY6t` zZXrJ!^FHsRM401DU7Fc524r2qCutj~2nu3Rr2V2>yX@%cKoBXycR)4_Cze!i*(bH3 zg2aWm(f-otk7rA>m1kulTyK6!bm*jYEi0Gd`D2<7(~rA<9YosdvzRJ9I#@@0VueEe z2i)WbLPEGa!$D)sQ>)n+Ak$Z!{~AF_rNse z%i?!?2IySO;Sl)?uhw@=Ot`-VW(;`gLBmnH>o)GfvRj8(^|^hlx2}$ZDjS5yLBX0Z!()Zb z%}EcQXs7w@U(J7E|HS>*Pw`fdH%X} z<~^?xoehTgVKvFD(4ijGFKqSo#@S@moW>5@tNqiDNB|AsjJxT$AJ7&?L8eh`A{)%D zH#hXbv=M#KRT+`fDHJH|N@qu*Muo$~i?3W=^QFDEtq{8|g*xZes&5%uQvz~o>!#xX zNu@ZaM|AdVvrTT~ZNq#tz$$hC;;>kx`yL9J3rv!z+)&e&o%rrn7`d-E{&h-dGUXFf ztLNT=<8|och{q41D~$nk;AtRXh+BFexl!w1VzBgrXE!klsbI={#Q_pbH6_W?>v1r;s$@u~x@Ekm@*8SkdP->&x8*+rlxx6VUFrj2MH7aaZe--Wd{vyeDBC$g0 zFV|0!71RL*D#yweV z%gi)%{Of}pH9GW`#p_MWt1Xw6ia#;+H-J(HOOkjkz zmv5m7jU|kw1D?r0X}jBOHgdZXw|nayEOr-N?_Q$|8gCx} zhv_+PjfP-FLmwn^0vNTHp<1WlqfS>7#V{9A&9{dKK#KCS#9UXKRVRXszG6jn@|su61|Ra0GTollK*dgsO9l zmVGJBjt(w?CDgFHF$~f{1q0f6ypuvP4166Y27jG)CEuA)z~H2BHO4h~cA!E9*D=!Z zWd6p>#Y%~k9q@yqEGS04_d@<`-?d+YTk1hYf{888qM^JuE;4svvAlyhza!)Yh;M+S zUl$fdbE(+w4Z4r+0a`!otXAKkb|Zb9Bs zvhDoygHw5-v+N!H4jN{)rta}*cB6~SSGq*i8{%2?UPt^uQEX;*`FOdPFY;qytEKL( zYfFtF&q<*B)>xmMjB06=v{Lo#hJHkG-J~yDRjNf96m-X;IZj!2%VFWjmXWdbAhwg9 zQz~=W|EO>#x{2hwe<%Eri^pPQA>hrH2&43=B+NYWDOnspc5<(TQ3^Hj&0mvf<^aMS zqzNCkU476>t~yUlwgC*{4TBCDIVq13$`&ZxO7t?fc!OwokZpM^P8Al5D$VvDjMvmu z2qKLo2wR1b8kV!Y@|Gon#tBzLvvaUmVjS?-G)zgdzL0r80FE@)^-Z!KzE*q>&xz5Lygp>hZVOl z+Zu54UJ2IFJ&@Sa61P(6*s<0%lVkt*|!gGY@W<Onz{okHm5ff&g6wogG{c1C{3XhwAbCQ+imASP}v zYEvgQuF-o0jA#l*g$pA+L2O~y?Ux;DX^HkVpP015TO<@sWxjJDR8h?aUJUN8K0Lkm zKp+4ZGfCC48>#x<3J);{5Y;NZ44Soga`V*P$14s*v)J9Fq*<%sl7SwRrlZQb(}XPK zz)@YMGs`m!J= z+Y$~^kdIgEaAa1A95ws>;}n!hsX_;{uJt=#NGOu9G@iaVBs{it%Q#SFJ$pGT{v)_% zZUGC7oP=N93wE3`#vi!qQ zF#_)q-?(lp6k(RhqOk4(1y*Jz^h^p1Z^3!C{2&lv@yhZ7yF@EsR~-@RD1uMjdtg`Z z)W7)cxs5k=wUrWs9hqAiF=t7Y1zDz(RnoRprP{ml>tV1qR~EKoH9hy?$z7-0lkqu5 zV}#WeyP)6gI^Q;;&NI>blNb#xA!xD7q{JS@H;kawj&pD4feblI$_KXgy<_{ST9s>M z7{V~H3BTjxc91Q=k6y?1AyKI(p4E+1fjNpXOI*vmLKDXlf1~F(z|@kf&-B9L$>KV6 zCyh{Tg(wI1id0v8>pQYoFW7nndZ`^&ubjIkZgmF|t+nSJ5r+nDP0@870`&a-Jrx{x z1^DKSxV+OhEFX~y&^oCf`lWXP-Q5^ulG>HFpd7q#vdL)X3x9&{&!(fI4-_DjV`^k} zS6s=Tp1isn$VuB>_O?D(wpRh6M-vR}MPU8@P;S@wOD5o=#}|RjCHv1y(>n07ZBS^$ zEPnTX*^8nrwQkC$8CbQSdCxce;wPrHwD*7a`?4PK3u8Xm_EHfagNyQB3YlP*!;_#q{4SF#?_ZN1 z3wB!iJ`IayF}Dl^%nez-+SFW7%GxA9{21;;%v0)_;n)$4ytC(}G>;y#=0ANm6tOvp zrZn%aEiOZT{ct|ft}H<+UjD@N>Y$YD&jUK3m4#@^P&;d{V^87Z>Uo@NOFhgtzp>k^ z*1|*K?hW|eHHNKlM`M?_@}y(;!cjAn|MPHJclp1sUiFEzAW{Cc;lEDLzg>g>x+wm? zbI-ggUuw@*YPhX$o}n^L53W{SfRxGx=;c#Dp{s2X<2=6(gyk|P z=YQpr<&7Cj9j^3T6SEN-1;dqdh!}syT5UVodRxstpt|btqrlI=y^X@*7RQspB|U`s zZ@AWS7srN5`9WJ`9b!<%f^=_Z_DXe$+EjU->G77fXVb)inP~e-&Ef5e8SgOBl(}>J z@t=o}1ZN6s&yDJ>au&_8u+gb|En|kuha9dtLH!6UjNTu z6eFt{$SghA0p392+9iiF!nY<}4!j&k%KL!~$m~zC=Y?0ag_bZlv_9;xtrHlq2+ZzG`=fKpx4lJoSdNQyf3H>v_nwq>fLO8*X{q9gUi~)PyZ2ftN;`nb(aePW z2)B?BCj+KB-~V1@^;a17rSLJZ{0qsPXzQarM5i5hgN-{6EArm^!9{`Ht115X=wC?Y zctYKKR9^Trw@Z5cg#u-gu=rnz?EZr=&cuFD`eiEr50I0)MgcYS?^0z>EuP_!yTxawt#lB&u)KG$-yFGc^xJoXQ}4exfUo1mwzm`SUI?ZP zyzD5K$LdLJF9zX4+Q)Z91Y1d|M-k_KRjL6xsUB;2R~y-q_-gPZG+E~1(HaZ}hq)FP z7o~;9POrMAL5X=nQ+2fi{(o6q5(sJ4dr`_2kBfONt70<;(}8L9J`-p(ro+xN^Qahv zE`4ZCmYOZ60aGB>B1TZf6JYQiha*0m4U6X0NB} z&o2ZYU(CkkWQ_EAjis~9Qd7qwJ~8=MNv@1A4zJ+(Gm3+9H9(O9p*Z&B0YD&KSDi{E zqFa5paoAWg5vsB6zee(B@E{p~_}T;tb*=(=iwjknhUjH!JPw;J4Ko03NGZup^6d7e zeN6bTv~KgU<<9o{&#j;jPS1PBDtYkYL)7k@SL#VwlX2)(!YbL-ERM1FI;`!)L?%pJ zG^`-a#*rNU0z$Q4mf`-3MTyQp34t~R+%L0lV%!jm18$KDoU*cx-0@uASob-4px;1P z1OWa062r>J1QwZDx)HRqNRzM6tAb&%w$qL70Fc*)l4=a}CH- zEgS{xL;L+7ne8_+w!%DO$7`^ul@-UkR%m25wWr-V<=#f+B&P?JN?Nb-?PwJ?{BD=hsxtCHHOdCcU$s zIz_d+^w1@0$`S3_(zLy_qqB{5HFv1AA08K$B%m&(qi4onx3-`IV_4W~)UCwei(?{Q znrTQ5jZjRE++w>940%#X@RTHTOBDM^%j)E)Z0a0I2g0cYF=Ou(t&bmx9(_ropO7J3 z>%N`%2FEI$_9R+YMi{Ft>~3mLXuM`HPJSxocPepjI$&s=nc?h$Oo}M z&=uI2Tj%#+W?o#w(Xz@LLAgqs_BdDXknydx_XZ?Qc|-QuA&&^f2ujb&f?H8h9gq;0 zZG>+h*RpFoIE)duvx#V++2dSTMS5-SALot=67tO*2}NiEDNhw0xQ9~knE0St?^fb< zRGnXXStSF)xW+MiZadL+O*AuIi{K%w&c)Vr~yH(Kwz&`26`0DL@jqwMM= z6jth=RpHy#)~T-OLGu0!xOr0>S3TxU6YoRbFD(OCD_tR^Mlg%zBNiaE(hsSSNV@5} z%Px|JmI<;T3L9iwXbT{dS>nG|>{chssE?}~fk)mxZ{~9e@m}{xzcnN9%Ss5{)8SF3 zvvmapfd~W9RVpZ;8`qjBX#X4u5XYuD(Zr-EpS z?eKweKQY~ZX-hWfDBgB@YNm#qLeyUe`&U9sK0pF=APO6!<5iM=!RZ|DC)ol zSo;FSJ1TmRspm2avj?C^HI8v4qYUqlil{Ul9Ym#zecft%58*it(SJ5j|F(iUHoaC# z@Fx!aztL6*#D5*X74~k7~(2hH(yY zgODB|#fA>k`j;(}4SPqN&unZwy`#zO4$D=F38)GS1`miOf#Qeft`E{%L5pPDiah@z zq;M}vRc{eMF}1B|*WfzH=reJKVT%&VViJF2f+)QGa?U>M$xRD}Htglb7JT~!xMDL1 zu$R@;ha?AZGCRpvGTqEq{q-N+-j^=7h3ihEn}3;SR7U(QFiY!XHd9y6SyKL7x4}qT zJv+(r;-fjO%duZ+#-0_%9IUOs3j9mr|Amaqs5n)LcC?es55QpyMWzm4c`Ok>fIC^< z4c3=He!B{O|BsQGZsdPvm-`>}52W3~HA48EUjlbg6Xznd^5fbZwU(iN#(HbK`QM!w z4T)7Zo+WvP^#6on)G)}5W?0Ys$Q!5r1&cl{Jc(R2yN&Y^ZYp&t=WZ3|X{TLft$qq4d!3+-YCDfF@} zPqVFu?GMBFagW}LwMh5BCr`|5IMqWfew?KOm zgu{1xj_)Kv7xUG zo?(OTyQ|&2i)(%nQYDp2?KW}JyOXvZdJ{mnYryv%o;4#Vhx+^g5SytKn|2JhlL4iG zG~^%WPsNI@3|4eFy8s}HI#OI`_QvKv`w_xd4h)%Hqs)_m zF)=YEh=@f16moJ+a#6A-pY=g?orzXtjU8m2csyFTBXsc!hHZW|J#_eCRJw0&bDbia zX0w=fFtaS-a^0U=x7%o1p?Dmq+qtT_q4M-*9bd%ea39U{jQ_gjDF`m};aj%x)0_4( z8S$*Y9Iv6LLl|B_Jmw6q*EkUvVUgwtf=t;PVxLjBC(&nH71LWjcJZ`npHEDC71I|K zqNB{=l(rg-Oe3tn>hoEDNGu8;fQJO=`jcXJIRgVo@k9GTUVzxGY)kM)V%7ewJ`wJ) z!gxfL6!k&A1Re0a?kQH9#6WNp8NgX~+sA>uCBwZ|6Q>$IglK$B(KsH0Q9s6C#W1tb@4|K)jQem)8WIpVW&X5NeUmemj2RJAAISvsu^T ze>d^-qf-94AeLEibm-6&i+0zf_I`tLRN5T9WEUdx%0Wjj;Bb3fY<28?S zPZ+_2;9Q(vly)_Sf804ulqkS6QJ0TinAg?S0fQCqF^Y;+(6a2Gm^u)Lew|H9w_B&P zH70!YS?4|%>Kvd;xp=FKdxcx3xB-=<8^obemRlbVSS;f@vR zg$r3%@{LjV`_!Foo}`U1-lC;iPB0j}0JhZTiG53T;9G`y#sw|819P?#%8n|x>80{! zkFd@{X+hK*V*;FS4g>p_ZcAmC%mbVgbb0-puNel^mI0u86FuD`dg31mLev1KKjsnw zIy7^H{7}g0gx4V-hk5uqU@F$4Gwq@Jv zvpRTQmzuHekqvaQ@{IEzOye2Lc1JdY)`TR>j%11l+x>pEXAWr_@=+>$>0>D!Ls*^p zAVe#RA;dMyiCq#WrrI-9#10TB$-i3NE{+T~pY&BhuR9sCp^sMA;1AQ3fGp+!?nSV! z4n*fT)%4Dw>FNt+I+ox`#b!+J51j1>$PM3`J|~F?-HnR;ON11Ld2z;`QXG^O&DUV= zsIhI-39PEh9CgxyfwGpe$`HT47+WoM}-w?fC9>N;-<}>EQ|Xg zYZ7_mjaOBMRf^hdV{vz54m)|S`H0IZJ1@$nnG0Mlfi<}<4Ot6&LniU6l>+AaEkZC4 zoDSs~3Yy9QQk^iQrEz%y6wyYns5oZ=xU~jLwKO3R;%&!&46`go%aV0Zf}5UxS3o5G zfln-pCfJ6|Ijk(ku633&oF_Y;Kl;C3$)5lAl+S^et}yD!3XL>eA)XhehQcouc*YJ} zxxrEBkpWBfo$}rNhZ97;=WT64R4yv-BZ^p{Zhh;|8VuSNM`pu+UE1!TzK6e`o(Io6 zvY`FKC-YuqnYOz2@gkl-@K#LWbSQf7KGn)+H!N~~jTUsutic!a&Sn(H1B1u*O5(&& z7tP(3(Y4MAbLZScnvF{(+GYI8$tA_L&UU=)J3%R5uQ53Da^7 zoh5p|E3-eI)-(TQS+HM22fZ$j&Q8#UK-N7*VA6GLARok1VYt{gM{8@NI7hA;&PYSF z%t4MGi9~9`8cnR>2`~}=CPTN-Muw>)p*EPod>uu}{yww^dB1K6pmM<>YC~($3oeh2 zJaYFj&iL`{f!(S_ehvGYPWIqvD~&xLIG$+Tubgvfk7~IL%eRlE(JA1OLU}E*ds{)1 zD}I5untuksey+W27r_gVg%MB@+1^$JvVb_OsHnkK|2vsq+mCQpyH@Wl{Yb9%B>*>Z zIejj)^Cis6c26A4gD&NJ)47;m8Wjfd?hSPgaXCJI-7+s$?c?Q$vyEMiZqzT6R!c4{ zu5p%NXFoX;yB$8<$X153o?x6LRZV}_5^1YBZsyC1qjpaQeO&F!4Y~C{j2dzmjbcc# z`E03Baz_NfhK8oTlu{pCS{jvMEjBaAITsORoFmP@&Jo6_XAKV%O${nw@`kb zjep$wGnP#vhfSXm@j~nN%rj0t00W|SwSwXK# zq5rz90GV?ew^PmTmqP;~aq za!Op1w1i%@-6ayeE6r(kMA1TgR8T(p3gCtFfq8ewb3fd`1`QkaMnBQVXcW69ndp^B zSw-J@?Er~JHW zY=sU;QKkee?rGp1XkUjk*?(tK6B7mk0 zE^iWfhQp)HGLQCt1RDRg5Cb|HT(Z?qx3IN#Xo6(D^yn9-e5S> zt-*7>rY+Fws5(~dSTz4ZHGuoO?$KHt$<|hFr6N-0?N>hZf3mCp^tJQnCGl>r+F?vy zJt2HSrJrO!(wpT1=x(U4VN_%&>O6T2J+(X@FmoM9Wk07|F5m7Mx|kl!? zn_!X3!%R|kzx}75@z4J8)fb2fzT&maza?2$K1^xw?u>SjIcz$x5L0ItMmE)KKiw_I)3y<(d3C453!`R7IBi;>r@ zAHcg`8qJ0Dhn?;_(JhYGLghZUA7xeVNFu1mz;lg8-6Si%q;KfXKTW?s=vhE3)`}dUu5pI zyhKMPf8AnG6>VPr0XkP+l+>?=+UJ+Qqx66Eg#{tx;THf}rR9cveMP4ySe3*ZkLj>t zCJWp@hGt?y@=mQjhzp~dFNs}B@9+tD)2^{rw9EecV73o!RjDzrzi)M#BhmL?UK{`N z+W3FTYvX_U0gWu~Y3+@B12|~uI$R`RQhxV!bHkoR9!^lcAHVd2kG=1atqs7!!-X7G zwt z%5{ePL)Wr4p9SUZ5@97tx4_#!kR>RnDV@c$MAr0qC8!%`3(GDWln$BBTX@qs?{Y~8 zl7^7)YxtSwzsp*E>(_YcJ2U!*b_Sg$_^uS?_g#5OoBq7gAB&M!6Rx6zvV#k}N-?e_)&LQsR8~u-Vy@C7>9e zm?#y-qG-Q(Midu46Tkl~RGG_4i&;;EfJD}m557phJ2T@F)vOW^rf2kO{>bF3#LFSu zkrDaT1nY4uEbp>l-xy0@?6CA{5`;|;L$)!SVRjDFlqwG&}t{)%&QmRVaGMADH zCi_B4lF45AC#Fkh2y_Q=dI4^UfwWvn^c}MtmJ&w|KyZ(`4?3Rn zlycq2XKFrXoMlkm==A8Q8c{QWg_Dz2Y8P$aAuFi{Z-%GvZb?K;84$gwd%|K?oI$Ko zuhaj!Zak3@>{DV>{#4~494Mm?NqL&l&tKMDx_3`U*`Ty?Dde@j+|{c(M4Q)eHq@{p z=N6L60Okj$gXguUL|%4IHFNl>cw$5^%)uu5nhs>IIX{4Xob*JG=nM7P5+>%Vqknte zUd#GsX`jaF&hg{hjVCC{(Hi&nci?=jss;s#%Hs853@Ga$cnGL)R@Yq;)jrW-t~ilB zC*m^meepEr3I5qXR?!a-jC^$rYYHyVav0zjn?MYvk1QK7nZglaA-3s7HjN52t;P@u@0xJ&y_ zA}gmod7Rv9Eohb+5FSN^{xn7K;!rjpGJwc6es_UMUCy?-w3*Q1J z+vC9u<;S7bHGsk*8s@QGqo^}cQ8&7waHDb&RU-gcTyePl@Q`U)Z zkM#>5QmwxGQylth@TAjxhe5DaF8URr`wL)(_h5)#BCPqci61ZTX&u#?snGNvBQr6r z0YCHhWfDFIMR_W8^00T9R#qmZL5g=KgGr_GhtIwK+pSAUU(}}NSbsKYKDjZcZalSj z;gj;yQROLv@gHRT;U9a?Rytn`F5a%>%r4|N<%!r=w+fnwAF!DG>DaWhn$N?J7hvD> zb?adwed^_L%;V*E4^BIMwhY4CG(VD>xh*gy(?*3|RDG_%Y ztC`9O*>8AT{oU(-qd`-0SS6cHDQdzv%(*xIMi}O=sU?04IJKnSDF5Z0XGZJge|Qc0 z@=lY>`8z`9uJYO=b~xUgdTgsL_W244f_Kq0hhMZ>aLwkULuY^b?W)e(|BWO4w=Q34 zd5@1wMsC&Jv`JvFT6_kulb@K7e}?wCVxN6X6PU!2SezJ@!(JJmYe2F&E*-si9!4=- zu|*U<-eM(%7@F=eeXab*f9oKw>AU*I2d6YAhbr;-#cY)9__79lG}CMK5m&gGQi3qE zuc!zb^0@GO_B5Jj+qI%@f~q2JBb{ts$;gUdHi~G8-xa;Weep|^Fo;-8u_}^ zu>+(2uIoJV351$J3J?f2y8;N(N_=d`of1L*?vQJzeB|iB>poE8d1K#V)RUo@zCQrU8g;vPi5A4iP$$zxg~Zxy!YWK1?`yGjq9mkQEFyZffDWQLF3x_$ zJYJLz!ZI~D-4rs%STB|1R2J>)l>!NG3c9Y1mKcsI(7km`PczLMU8w-x*tU4gj<29d z;T^Bk#5gO(jZg`Dng}B;UQ}cV1NsiUB{+!gID%O+apOM*b&vc_P0JU>jJ+r*x;izqUkecSo z8USwJ03MmhKZKSvj7>Ki$Frhya}#sLjjV01{UBS~$-|9;--^X3vH)3F6#jf!mf5Xc zk@cDw)Osq6h_c_NZ<*u`5YQ18?||OD6wbTNF~m+n?I8Wtg@4fy3&7HUW4qt-?C7^k zc)K^*CxgbhY_-al-lJy9w%{BDqTd~BWr~$v2SHqd3gCq3>ga-4AQ3lBUw6|nJJ*F| zAVwT}FjHd!UqQGNHa2mczhm2>KhTL@Mp- ziu^^kHBFODS;U=My2eriW?!eLuI`Ex{KUfnG$U*pA-5`xd%`eF62MYrUEsV% zEA1wT%RDf@-*Qk_ZZY_j;c#&oxRyNks_UZp@*Q79%JPwU`Kjq@`C?00+WpyM7(*9q z-fu>@SOVsDh%UeswQkp9h>cG>=|kxfXnf2l);&VVZSciAr5l6|XLt+5%8w=6y}9r0 zoq^((mdxjIVk;y_wQDYk^dvf&5F!$nvu^%@x2qBi(P6OGL7MC2uEsQV%!D?3$0T)< zw=Oy)<(W}veDO}5;=0I!l$HDnNZ~l~l9cx&hrkTHw~1t$s$F9b5!p@fm36gJTh-rU zs9K=yZqY+jPrD$Ac6%bjX`A8syWe*fsQ5_5vxDK`M##pv3CbHD87s=mi~DT^Ys*Ok zkQHV*NmQjWND%`r#O4;qU{U#UOQQ)MacH4hor^YoyV2di^o|Ksp^a3w#s$326sZ&mOE(T2ax;I zLrUv}2CIa62TKqemuaM$*ns~aeRS;I5SSWt#lcdR%N4jexvm}J6y-N9)B&kV;EZLZ z20qDk?*~`I-Ubg`!&O^_VyOB?{I?Lx0=BeQ}nS-?}WTR`un8DTbt&|F#(z*8=n z0FKy5&;fDNutjxeLJZ<34zS(0A5qEzMNg&=jS@?5WuhxF`1$Or(3dL-QUJU7a`|kN zosE@;T;uWTTTl=J z2?QHXupyY$D?OvI zqu8xTB!MmH6W|nov$f2Y+(#~W(-a-alfcZBB76V-@ZdQWBMBHHqkRD=5{eWF!tlhE zsdW_8g5P#O;PkrXRCJ@DW^_Bmw4y5EIwYlJD6@J9(Y|Doxlu}{m-T2hNj=oZX9rK* z;IXi{`myU1KzhN(SujR;fvU3Nbo6;ay#CW2lt2pA_;gUi9AB{$9Lh+vPgy|3Q5}l( z7RzaF_XL<02=?=W#+@?}&@DTX@!<5X!fLCtg<`oux5rod|S z9V(RFOVKd@0aZx`jnq-cC}t2v7A4t;DGQtt_iSTeN;~Qkzg|qj#gC7v;zGdCc3o{H z6qkbmtM@EBir^fNHW-_2vE7tk6GW?N8*282YKHpVH=MUxVC0;&W^zj`o#s}oSEq}^ zCm-Nd_4JSTq7+5BF=r+6@kA&gMTmjrqk%xd`)ST2n)>y?i4mlImhHWGL72)6&m?|o zK_n^()1z)ta7+JwinZhNO>q>Tq=Z^dh+2w|IBPWJy{go$_Ih3?M@Gk1F^>}ieH|N# z70uSe`9gyqorX#XUfr?nEe4@d&CQxBvB5ug=RjxO2}2iKq}|@Q<|c3qvYP{61(?`) z%D060Y#=2YItq=5yxk+J(-b?)XR~I64p@*|{MJWm zC9=}ALMw#IBI zcw=p}bf6a87>jkDg+}LV(Ke-8CCAK8c;j{{o>jW#FJFrnuv(pQnzCs4Ewwuv%y3)u zEo~v~KAmx3bw5a-OxvQ5StxFgONO%3sWI`Lk4xOJxB$?Vx&&ZRqkXtp_pNAMJwuxL zas&m=Ryx~NGKKQJnrq$C>Py}Bf~DIx=m)QX96EP^?lc;ryw0{ae_Lw!o`?2wM#kKf zoh(?hYpoz+-G94HoRqPtqvPTvotTcc-s-u&t>TSfysd!t=uE{IBvqurNLpi?mkwYb z{H;%+e>^Og{`F&zkOYx(hYpJ#np47^QDXN?MagwihZC*%R*Y!}8w5vRvb_Gm-HyQx;>Hqc}CDVZ!+*BWFD9+x_Tiq69C5 zlwD{0>QBb{^?QD$2m?+pqzTyp_A_S&-L)%q3m?Q;#J)@76Mj~{Fb47^piGZC7EyL@ zmCQ{&mGM3S*ryr$IZwd8C$nw~B8>xD+vw*3Fq(n%b9gbN-AxmJe+tQFItd{G0AtiU zUw-uW1IHcA`s0^(Dj{Pp&FJxsWs;LyzG%{w2Bp-Zd44T|;>~FZQF7VR24FvC&q?s! zk+#RIg8iy9u*U|&>|7e+FnfMm@(hYi7L7lB81QNj``O;Ct0-s=j$68e={V<`2~ zhFpilN~1c+iz#fJ#kA+v;C$|e`E-_byMg3As9Xx7l)d8#(u=JOQ}I@cA+Y-P`5Yxy z;@~6{XHyfZe-DXffRc1T-l{srbvBd7q`mLj>Mo_YyOs;&NR^bu;}+lX=YjR&VtVNx zr(I`~G%YQCY-vqh9)zFD{tmbo3gWO2O}hLVA=Je#Pc} zP*hbYdqf++C-P(e&Ii<8<=SBWcfL9PjMh@&Yvs%D5qY@k?aIdDg#ieFN zti(AEh+Q%6CdpHAH1X(n8_Fp*8(q;-RNHe&oV!C5#KwHteUS~iZ*cFR&1C`*-0WmsvD16 zBxS~g{2H`*-si;lVe>%#2gjnJM#r(lP-F_CB(s6Y&rN^f?ei^A_ZfAYY*rGd(EVUj z%j^hoDT1uDwj)`YhqD%lWuX-&mJamI%}vTB@R*KdcqS|qCm)4PWTvkYc|==< zEH&U;kv;P_GMi0h^&QSI?@ z@Hg0Uh8N*3_8xK|0n23cEmpdh zM@MN6y+%4pi58DvuPWv=-l=l*l$7sqmnJwqXO$T8;M{`oRa~K|K&4<9NF8RL4kpFI z-Uq59TdX*+3n2Bl0?h>3`3*qm`Np%{u)O)``pO;g=`IZFc?N>{w;M8bsT zWKI37gk21>7^#v3E1k6~9lW}jnnEzVX1=%s&JdaZc9KIAIHPUEg%KEy+fHy6gW18b zQt7dy(Fcx0kja(;Q}gF@wB^PxCa$at-$1-_o?e+wy`=)({pqDqwGgDL{zLfh#A!1g zjEs01&MhOeA<*$ycYO(yCAs?S67E2Ecu6ER%Y5xk2Q*}sDxHAGB;L=!VvraS#e>&o zkNdscqQ6tq(C{-g%SL$UeyXWcM*t?EEs=C^9Uv78qH-J$HOEHbz|JV;_)J^hD%u z#jWDkB|F?Lx%{(-hi^}&(E2VS=u(2dAYDLlaPg}g$0@Kj7A(J^M%oR{@06Fes<;hY zHoHh;DU1~N!Q5Wxi!oLlH8RmXdDi|mGpT#q>p_wJt3s-lfgrE19@D++iKDg|IjK%y z*InkN1WUg0*BuXv+$YL3A(B+3+2DLL%uF{%Fc__WtDLqLuvsh4`@FjK;stG2OYu3? zB6-Y1ana!P*t4-N``3oTIt%1m#3QG2X|i3&3OK|*bZFP~UV6ZLh$>waqp7JrCMgnp zFtid*cx4Z>LIV-h1~+6tQ>8vW7&j3;o*#}Qs%Py z$x6YFIx=tbvO-o)IGCz} z2m?p-14~1UR3KJrckFLFdIPDO-d+&n3OU!}Q7ML#?)_{l%)H|o)cIzaxbnI_5xm!C z%==3gC9vg|ytR~*x`{pFq9S%~X3qqLU{e@28u{UqsqQK1vKciYdjdUl7BP)w#&yaS zIFEP>HYJ)}_P2In*ErplFLtYpfUN7lCJ2Q=Rjh5n67EhLPG_n=h)GTex+3l;xi(sG zZP9gl5bkfOA`@xLG~`*D#lfRQ^MePnDwz<0x(LjviJfGY zW#kmjDkfb15GYN!!{dN+Us1DpoPQXyg;}G+glIVs8>83dlBO!{+_q6?QW*HE0hc-@ zD(%maZ|NAF(^!HLmb@holT@}LJ}(K%t-campLN{1v6TJ+G`k0fU0x+L6I^ilN27&r5%1j zKPi`{>1dup;{}>rrb=O(>dp3gh_H2Yue-bpY$8OJ0@iL^WyTUQv*X5ay_Dm>CgFZ zV1lhi0!XUJ6yPK#oyZe6cEwDJr=iZye&}eA&6VCH%^Zis=Zb9Muj1$JawK; zph|eQ`rtf8iC)caqBNwsy{4 z)IhCj#8~zOIZycpJ8WUaD6Uq!Xa7(?_uQlxYfpj2gdo;&^- zG)$m>_53srZ8r&Bf^3xkwhz(!_pAf_Cvle@#^|X8kC&ohyBwcfxrOr;>eVg2% zJjTd3a<^m;!;I8&OQbzlpHHA}*M~_O0rc%x-&24;@yNs$qu^(N3cq5PZ$?hq6Hfw- zSJO^#KSsyyIojXfY&9@|*`11MfsiAsuygr)d-{^$UQL$;EHJrv!iX z%>N@YDSuV{zq)?{bYlBXfy+H5cdkH`)7^n!rsf&HmaAmQguMTPr~_q#2;M)`F}M9@ zU!Ulke=VF0tCrazc{@tlGfl;3 zVb)IJ-{0K6HbgB?&yRQa-|_CgV`O+YnergSr6fZ%RS@_6eJ-u?@VYkq3g9aHJd*z> zol|%3h05yYG}M$~8)&XV=;7wm%8xE@KrQhsia^iWPpPnpPZXS}kxqINy z80Gir;>Xbc-#r^@mcV&#_B?1M`_!+EWBNaoA6yLy13Qk&&$UQ=gx*_u>>g_x4|3>V z8bQc5rs-tXV3#=QthLIDOxHKFr7m9TYJAnq^$9@O?5!1e_WQIjU(58$=R-!`sC@V* zK<#qA$b*;LM^BQ_6C9r>2rt0YifOoAq>}eHq7b!benkAawf>7u;#Bw^2oydpm+}cf z{(bE|lta(nf~*5@J^bfZ7@*TTdVB(s)SAg}f+3B|DaG{C(2ZqoQb-v9)@AO!&cWm(I~af;t#S!pMV zR|e5XcH{GI;PUc*k}irr?&|pGZNZ~GvxKDSZw=hapXY`XpSzCI!ygfUOqc(kn}puG z^HzzVFtcUrRP+${= z>ZZ@oC@#$<_OGy>OA)K@yubw~rn6V#j{ZDA@xDcK=yGb1|D8zSRC@O(0GIgHclpb0 zX}51ASZ%x3pFB#T+={UEXpnG#t^-Z|KaBUaW8NG9e!uV8&(j6`{k>u|f4KzK7uKV# z7AJkWcWh0Sdl=?zS!gC}Qt*2z%DV);ybnOwn=mb3P3$^R{x+kcoj; zL$b8x4DdH9OCuuC=$eEDmvR?v=KDgv5SL!PO+rPvHon~o!(KC!{{sILnRR0u@77*N zTvd>u;hxU_vhUhgPpZEt`d{DPBk2=)WDmG2|2^tf<(A{hJHc&6LsG=PZBS*|rAchD9A0h+dt+VWrL@r{^$dm&tV?RwQ}j~1QqmebMEp_{_o z%@+U$g_r*2_xm%U=FJA$I*lN`5SyDV`}>3-DgI^xlx7firF}c2q;w%}ft#;q~XT*!O zp@xB&Xdl)qNB5871<90!Sp|6)Qdr>1=ZMSm)ln6qLc8KmPakSDgr%Z~yIq~<6Sx_t zKSw+n2om%*(%UvWeEwu~Q8q}cHvi-7fRvJ8$LEMcpDX^$P3}KxYdP3cZtV%n{v5HV zMU?c1$~cv|DF3%L2apb-VEJ^x>>yXz@u8!F5t->3j`dnVMcq&D6$NsP>k&t(K{<^or;yj<5)Br(CcJu%Ftx0BAn zSpsv|auRFc@Stxsxls8ZE!y7kqyPLrGMqT$Db580HXr+FjO$c#8&4KQjYyaX%)kV7 zfVH(`=~B;ZY7dr=`J}nIy>Pkgp>6^sAZf(AE#{s%+zCFQNw$R;zQ7dT^Q3`)UqpZS zo&USv`M)d}|8{9!qP84YrM#+T@N|-$d)uIjvyVAdzWkf}JQ&07aNerJCqR74eB{Kc zhtAZ#K8^?dV z!W|_jKdU+}0E+M(DAQt0T1{DsEO@U3$(gOy=Kvjmi9dY3GhFC$R>_3h?W3;uLQlza zZn2Z4*zB6foKnCsqx8ML2YzZ37Job@HQhe~@(gB`3-z@NV-Q43Te)H^J0Y}OeH}#XVl#avMAE6FX z8iy9RPpqX!yw4xkr2D$TYb{?p0#kT}b_eWZfB#+ieSYY>*^0hFCwEdQk0Jda-#p0< z?KUAW-frUfrmAlPw>&Qs(({0+cs%ne+Eq?=wBu3N13qIDjp|}8MCHvl8m^$g>74l$Uj4U0**s7p;@P`b|;ONFQNr?oYj#4lJS(Zyx2 zpDV02*gSM)%xd?D%|iR`W83oIO(r+Dnh z660lw_X6j*W@DR2FLKOB62-aGxY*|`HetUNJKj^ip&;GcvYahvQ@tZKp11L?fQaND~!1OmQga62H z4}ax}_B~dKr|Y&{p{~=Wuppt~z5JEzIsA|l$9APQr&Xm4>rU39<1$Tw~t-i$x&Jz3>%&*?Ii90YFS1x?9}^o z(umquJ<$$bJHqGxjuX?K1Hk|P7@EFT^xGl&z4p1ihPy=6`1Z@t)nPnADP&WVH+ku| zzf;#gDJSkR%1K&(%Yt`ht|J`pmB#J+>S85GV&&Z>O8~Pl% z@>pr+-@YVp;qLT{mDon`kx?P#LM=m{3K}}I>jHO`r+k0B))fj(80qUC@5WZ|Im5;0 zNfUsd?Jj*sc3&Ua3jrLa?=l$bKRZ8y3i0jLxzEk7KZYu{yg#2p-W~=VC~^Gyt3N^t zn@yUrED05oH1YV}+E`A!(a8`s1jy6GOCaxlVks`T2O*t_L}t0|>jQH+tXDX1I%+OFX(9=FU~mb)%OCS{W{ z>==(c#kq?26WdMHgC7(q_tmncOm5U(v02x*d}mYz(`qi1gv1C{jdIG?-Z0v3Ah`fT z@|$Xm%0-ew0-xtTAJlAUIGTaD69KQk>#i6|c7!v^#DtvQ#^T$tCRIIA&CkOv;GNIi z61WeS8iMu%b|EG*Bcs{T{aD7+BRa4~R@Nw>cB7 z8$ZdJ7Db4jMEe|Kzz$v;_8``mha#no3RZnr`p!JdaTe+=rq@}}n6-ulHMa~5p-=O&B+0aFI${!i*;WTrC+Q5a=1A)Hp-#wS&e|3zC z8P%crTmpIULDda`zDcu!c67m*W}b|6|8zb+m!-Ja?c!fLg43xRg-8>D2L6G>0?G$m zMJJ9Rlv>oEA%Hlm;=qGS3-$Rt9q6KKFxnYf^1zfg$nyl6peG z(u5`>301PA(eMAy@q^Q6R$Q9e(Wx(Om&t>pn7)|;#*FZZWTk1&mvhfs!=JuW6Ff<8 zMublH*m=WK_u3)dU<~%*;$reY66NqJMkrdg;blcS)RP17_h&TW%1GM^WRn z>Y|>@R1ud;7S+j!OZoAr@!ym)xq{3_ zm4;eA*R-t;3`E)l_{WCoB~7d~jXWRYix+Zncb@5*ZgI=H>MtZIf$X)McRba4iKs3Q z)SVbM65*F+RvFbas$XuseG5j(#rtB|V$Xv0gtS08z3%ovdr>xqF_IKe0TeA$c%oe- zf9+_oK;oGd0;64SC7Ps1?*{plCurhIdp%DaT@rL6jfd{Se~TR@n4EYtcJ)?p}|1lJE8luk;|NDS3V^sTvgZHOnK ztt&F4WL0RMN9Oleb7MV0UP)%;&6~`|j1G`kBjf2|}+|sPnLEkv8bKhEl7u`Zc4* zX}Z`AErA*>Z|YNw@-U;y;%tNa;R?lm>n3{(&Ra9nF8OJ1g#{g7jgNwF#rWAB%}giG zS!MHc^PgD>w=oA2Ma)P^WWgka-zo9%b9RC+)iAuuLdPkKQO)08*^3^Cq{(e%R)C!}%ua8c#(WsNFVc?1 zT$_eBKhNQTcQK*N>x;^s^+Cy6S#?rIm6PU;hv$$4cHuFMJ^>15q@B$=da-fqY$~&g zUi$20paa6sxX`po%&9tRozJ&y5k4FKfO;WIRK-;35Z7Y*)J~5ZGu}s6p5tz!ht-y- zuZRZb8NN3>FtCfqWzL8?Ov9F&tPn0tn~PR<^4|A!@v7?J({2@i#H*?UlLKKW_uD09 zdP{E*`SloK0gM{<#2bkUdc~^RnQ%Rg1+&Ozd)d*d#a*CqH6ug}t24iu8^z`A&~iXX zT&Jz6?qvXGbG85+%Vd;r0GmNv*-)uM#zRk{ud&C>iP#Ry%=mHsc z4(O6Mvc!n!4MnL^nMg32ci4)ilt3$!XcvB!s|b6W-`(pvFM};jD-L0TL@Lc*aA|0i z4y&H!hSKPj?v`AeuyMg0t!L?56Gx>zm&MIsBw_w<7L9pxr&-Oav*`zBofu$HxtC`> z5F;icGc6|eJQIoFtFX6ms*iFv%TuO(g(;A>woCc*4pYWFf{b;u5=ab^aNO{OAa`JT z5Va@$Jch^9vPB?xjo>38cPfKXsgac$=Vk<-A&9b?X!6Knxxs)-!9Aku3?VRX+|*S ziM34!oDrrn4EONzZgRV>cfEPJJ+PZqf`a-LAKucD_bPCVwkHY(re5^=RU<IsxEV!~KB_Rq%uQ9J_ zA34+FlVH_Vfrt%E&uDN-T4p`Y)W&K9qnk1Yd!Qdhh#vwAv%Ao@fPnUd>2|A_yeg}V z5hQOs4Tz2bI<;Kr>{SxyvxYI6)h$xDVC!;ujE-QP4-d@cDrI(iBzx#!N|^W~?I@5O zb4|vw6+Asu#R$aDy3pgmf2`j=sdAq|GDNbui{Vu!Qgw@tURoRCW26I1K_aKjw|KTM z5!VKHA2Zy>onbVY)gy>WP_vU2Wv$m|Rb>+AwQU0e0@_ zyYKX^-O{doS65{Oo|CYGx@j|NI}VR1mmWxrWfrsWV)Pvpa%!^OY=zdoZNN=qU8$UC zV^z4^Snbmbc^+k3udEg=3KNpsBFe3&*M#r4kGMS4+Nek6OJy0GRu-`19JRaVW}-LO z*~aYDY9%>;LfWOIROoC)kxQ-GDHjgf3<@=5WTjVXX2IU)gvIzhv8T-^e2G@sJiqC+ zuB)%dzs~PqBg@*&&om>)hCz1h=A&H%h5{vp-sTCn>Ckd{6Ru6_rUlnCF8AT=&`!T{ zf_Gf4WQpy;7KN27d7A5y4vkMlg8e2zzFTp-Q6nO7)|0Ja$JZ|I2sZTnVfd+p{V@Fe zF#McV5Yz(S_P(6qSdgfBpn`IG1qw?tr5n z#Lbi!1h%!Z6%(CvJx871AcQLmv^qlw(Ds|g3w`8iVQ@oQq??$MyRa-EVzH?Tn-=^l3;Pj2lTXPVGox8;j^4=J z!Ry`q1o&7XyL}JgkwYqVifu7E#dITICroF^fn$d)bLrKC9OWUU*-T-{2c1H$b8Yz0 z!V|r0nY@rWmK9ZyD4Ca6W%pEKKS{=8h6zg6sjIf`a2w5b2ii|yi(2ZkOkulc%&YCw zN?J|FXsorSyBYqWf$2AdsRK#1yJ8oOHJrzq#8w4fIFltMWu8|)sOb5)qF~?p{??o4 z6LUvG`yH4A^uxj%v&~rBl?{iQC_djwE#9*!nD|HZJnPrXskbpDP6pY` zd>Pbf&L>F z2z%M8oC>{O)nHB$rKKnExr1c~WDODuz5^+1sO3RD&>JI+uhrr;r++aG&XM+Mvi z!z0Eo=9+r*yPNpL$@Dhkih89?USdjeo!g11M|mG7GI`3ft)R^vVNi;3gUd|RyY^tk z=;*UAQ=jD;-amuG#Mn!Zd1is|i!00hePB0w`V%Gj!d7#7+=|u9xe&R``)EgT{>lKu zRgvj(#|~Aw)k7_aV`Y`6Wu(PtU>;7bRE@fn+q7cMar%6gp zRCaRx#l&}VrtR{J zJlYjBd;{@Jgx<*w=(@KRokb=cCl3o>4uQm^J^PQI{B!iSKy z@N{$cRE%0H03x)GI0r(}jq_U^DwdT=g9Eqg||M3O6cUPye7_B}4Y(K2kV zZss&+cs)L*hCuBg7G7p26M4j#y}<)((1w~6r=p7*Bq6$kCU=N4QfpFjekov(U@>oo z1v{g+*)U?e*{E1JOPF*f)t-4s$!lgzHq}gw%+2Jehh=zHjFg_U5F@dZw?`dTK@g?J zOH*fClPpbiD;^akRCK*ujW9acLRSuXulg_#M%TyVL?}IePDM!7oyM##soktrhSNOj z!I7E5bDxMP`vf>{!~7)2o9|^Mi#ORl9?>PuWcjP9X@CT@AI^nEGn?Xd2OY z?u2G-tZY@)qFHly-YX#(J%cQ?EQZT7L(K!K3rqDP7}Td z-?Sdpe7eb~u;MKj?|R}V*>Sw_x%M8gE1_LqkiAR`u60f#v&*y_=ducn5HU0bmNG5n1R#XXRxHrb96Meou>(`f2G1J2W^ z3Y7rCz#THUN!p=WFDz*(V{0KVCBwHMA|8k6PxY};6w4c$zdb{^E@cqymqba%2=w{0 z)4t@Ebvzt5+7G7s2y}=QC@1`4J^Rc$e^DrgE(#)?rxt`obsLE`U`qE_3;|gz1u`dj zU-&Xfq0YB5)uP|3@!SugLZ`FMG}eF)TE{;qu!1bp8a33lwIw{yncX{m+yQ}_g~4Z?930{7OJ@qr zjp&`_-gI~hbJU-vzD{|!hCG{vRE%GxH*BNzSPd7^rFM>j+_w)eUU}>EqDZgjjjG@o z(AjVv{9Gmm$>$%~H-h95NpJow;GN}B5peUkT6z{#EKy~=Kx$s2#=v#4UW89RlrKIV zr|*OeXq0JDoWEU5dLDJFP+ru@SxD3=@9q|rx4#<^Zx#?Il^*CPssalHYDPMCn6so3QsE?LNsk3}k17H*{StKHim20x8M4nVN@c zy=($GD;-V2SYZ(G)RTUdgHwT9Y30+nL^aZ6T!SpH*Kx=0LPT%1e%thTSqrN9npND| zGaH#FLfMRrj^Q*ra~#z%Z!UfN28n~Vs`17L1|}<;{qo_$>=1qxo*D`%6zt_w^CU2}vr`LUUkuuCByhN+Bo0hlRFKuR`)HY3c4 zx4iu>=tB}}PS*&OI+{|s;wfGj@yyfCGv2eO**RIPL>gzZ;F3Lvmg8xwYO(|CjnhxZ zK3#${XLlgmyPf#>T=Rz3FCI(9x2!)nUZ8N?BB#X+q}ALCmCfYIKDx8x%&L%fi?wW!L$Cu$sV`|$I6)iPERTz!9*;vY$4P)-;-JFiMzBq#CA!VJK z;2VLNY?u%Pq7-axJ7QG96`x+B={9Dgb|km*Ze>a9kipba*)jX{r6G{WRGoiv0o6r6 z$wj2p1LI3gbY?19Z(NxzjG~{l#z-N@<$0qdS%M@DE0DPSQLT!5^G+9t?4hz%d1UK8 zm}^=nDs)m95h^Ld6KXRr(^pxtU2s`)N8A`Gndq|oTZc6W^$445uyZlRpO{c#)} z7UM}?rkaeUt#44+Wm9(*7Ha0xMG0Z*K-;ai6Qfd3n7eD!qNKe(EF+_dF7<_FakiEx zQ#zWu0SEHz-(Q6BXT`nL(o&!zdu-dzXR5;)T%vFt@Qy;Ae%n&Zn!upCQbbT(yGhns z{XvkFs5J}rgxG8df;=_J5=i6`is$Vf9U2bjh{yXAGyCleygPHZn6!KsxHyTgghHh& z4K&-!p3h4%x+daAIyBE2Nytgv9j``wdb`>Xu`oUaOkXUNmq&u57v@g&&v`o24&RN?#T$~P^G|Km#^h8i|W^q z{i}NC^xKCn#ybSBO`&aX42KNF*sq{$OSFMvhg}#+=~2+}_NLiBpQ*@dc8Z7ZdSRwh*YMaNG2BZJpocdZi@R zgud*RfCDTBtapVeFvk=tj6>u3{ z{R9vUF$~Em%l_pq2h2YgQGGB{1~Um#Yd_YRWt%q>yzQ zBB4d70M*K@p=&y1)WiMLrH3rn<|zxE9a1KhD@Nn^jVCVaF2}%nXA^lAiBiSgC1d^J ztybGi$x`*m++)Pj7QT|4zBHP0jpC`pkzLkOG{>tuFJIr}i(K6_hk!8l7|D$I>}DdO zLN0c$t}ZBM?Vb*mX@UR6Q~h@?(Y%LDLj{VH6{eb6uB)O3ovX{QVbSJ3Ob!vnVYaz& zQP-AV?o9XXt~p>}=gc?-&8!bs93dev=~I}J5Qf!^wh^Tnc#v0{xi@1?tkzE^>`2_i=NH5rf75rN!uc*3}w;1OQS1`MGBt)lMzvH znj&c1t%R4)Y-GXCg*qR4T`phRjQ5l`nnXxzLs>BEsA}iL5NH6z2n=Pw`#ySj(dDo? z7_7?2=48@%oz6Ti?`<(L6izQm)rL(B$sIel&}#|7$z` z>-7&i>JK~W|CtVS;kku18rS=;EAk$*nn`M0c&0U;v)C7>J>-0T!N4kh~Bn==ju`Y6n|D%JN^u;}c%4ZKPoEmL~3RZ%VKmrCCD zu}FQm6!s-iP?vnn@X_QJ`Q@{-MTc zT5?|#^@=F=zL2@SRB>&?M&lD;#>Zv7^y9L-a@frBgYD7Btlc3frfY3FNZ#&1|IE5l z3mTsO8%6UhO!rw;F4@*P2})hxZ2|2Y=l)utTo=(AMrD-CB)9P7GI!susHY-V*zne0 zRnxN&{hn3|6jvB%VFwkuzghWf0$;N>piF#ke*FJzFNVvj^TiW+P;k<5VP; zmr1?o$1(|>rrMc1et%K5f>ebqzcrtrmJ_w#T{oeom+y4_PM9>kEi%Gor=d%YlAu@C z6!C*8dgkyEG87UpJ4$vXUHax5j9&+L7`)RDlF*CuZ}Gwn|_Y)`N$&G^C=f^q&m7Ds&Oe48cVgS}%K4Ct$Fka33~zTR z*+*bp`5WV!p~T(7yLQbdU~ppDhr4T{N54Hq5~rdvq@ptN-`S+!o)-T+UxXCnJfO7U zjfn>W5rICxP$(2>Bx-Q5s1^eUIbH(D=zu{&vZa8FkwsOXR(I*_Hu@u)aVH^P-> zw!j3NNHTgTfRebsPC;M#fM)^Pr)bZVwbu{9yDPVxXx&o)lDxMlb|;gH4~H_ZGCPGn z`Qo?0*zIvcE&8o~#p$V0sCKm5g32OD(BPWM)?ziYc%yagI}X;bP?a;ti8}8{SG(fm zNh6D*igX(KQ^xGYx_fbjjLV08%jlbb-aOT<{yRd&EaBhvv4B}_nrk^AxQ)EejqLbj z((*&P+aLa%)c0KN0jl^}?UC!b;wgO+q~Mf;t&X<;6Hw*&pOmo*(>+uDSEsjc)wCSa zk^uZf`1Lz7{b{fM)vLW27WI(#ZntQ>cIO{#Gb+3Rpugz zd_)vGq)}+H^uA#e5jUp}Jvu&d$~AK;^R82QZb#>_#| z&Y25`o-BI@oM3RNP$A5EgSQWbDUf~zcoOb^PK4tt*^C4FK$sHmkjOH1llfHVpyjw< zL}|?`!<5Zy7r0MW9Su_Yg`(ujBkARV$Q-UdI5PD2#``(5prSVTw~shQNdf5dJuEb@ zdQgiY98~Y4u|qPlYfhNg`)(wD&Kj^UVfIWb1NXYJ-bCcW_UeAi6TijMh+{TeRM27L zZG{Jx)yq3Zu(j(8O@I@#FTVWjzYrL|z+W4zIH0ekLFulnRyeXSeA1;of+Df{dLw;) zU7c1yb%lc~mjD}6Z$78~KZ0BSIf!(266UM$tJdwvrK)B5`0K6N$6PO=a0252tBN&l ze4*~dw)JMFOZ%vjp9}h5`Fq;=4gBV^*A#B)=JLc6^Bs{4ccqov8yW77o?$LrkT4Uu zQM*SU%02*w6CQp^e=pB_gY%buf#}L>&1Q8~wqLP4hW?6c@5|;j+`6HB{F;StsO9vt zp8x_3UsC$pfuHxHnIG-pu8EFkXwdbsMHQ*~JjTZ5?oq*dp!-#dJZi1zM)Bx5`S*as zG|HO4^KUOj&EKV-c3X)}x*#U)ZRI83a#?E+&bi9A=OLj*@dl^-TXKuAyqR5aY((jE zcQuwrg*1Wlh*K`lwXRkEA}eGZ@w#_q<$tmFos-B8`O+Ab~JJfJCwZfypC4i++Kp&@IJQ542J;Q0F8dx7R_jd1fuZmYX={(Z0v=*pXy zuz?rI4eB8hw@Lx{48%Qn171EKk#cUDU;Fl#F;VFq!(?sc)l6Yg#yt#@`d#`pp1B=P zKYEwKT({?^%vyy1z<9T(d^jCo!G#T8dOi1vb3!IA0w}bwFrAO(!U`RTO(BUC9~767 zv=0PoL&bEAWqN5uP6AA=<;QFV)#IVJd<?yE@W9wgrJ8_=DF z>Ci=X`9(3v;*KaHrmNn-PA-*iG0N9vm20Z25CZmcpJgHJWo#Oms^vP~Q$t)gy{ljU zH0#LYWM`RFt7=@LlsY7B=v9sB)mY5`%*HC?SE+Dloc25pMRZAV8)lotUbc2>-0djJ zsrsZln-`y3apL|aXloP@7l`-; ze6ZNG`3LT?9BrtdjtRiJ3$v>Q*AX{Sw?O-TXr%j0+SP#MK+dWo3fX4V{w-&~4Ec7W z55=GBQb<&tYHm?d1f*+0;M)OYbqUoDO{(-+S}6Wu)YqqRP@W{?bybvp!*T+HsUW)o znB3S-5iNnsft2b6`oI)Zr7xRY5mgjPGjLoSgFZ03c&vgHHPxtn#RzQgx1s7SGd!|3 z63t6{_2-n3!#JD^b1}cqd%?Vq3AK?n`=Ir14Ia~j+jAiRnVDE4lMJ2Pl9vJAVZ50> z%>hOowbrqc6FJVIy(^m#;c}+~YBc(Y*VrxLtH%82ku?x747@Yd*m^% z7%>L1y}E>#J=V5JPZ6l1+Nl81T_at|dp(q$3)P~WNI(}{lRXje%9wjsBgiygqfaru zZXJfe(!LQ1tFU)Y#CV3t`seYAZOL`YL3-_Wn!(`wXkieXjGWIez~gtX`4D6UN#pw? zCWaeEg__GVsZ(-(B{%)lwl#xF=TkPrYBF-~8|b{;b^pk-G~3?@=;pQIi>MYM6#Axj zp{!}Ea^XcV)J2boS7)IfJhF=zLszHm7d-^~!je>EOI1SYu z(K3P_12f8pd8`{c_$1Gcw?KX}HZxE(5w&etgNer>iA3>5570s$0)AOiaF8q4$_Hb3rMWJqB}{&g+58%(+5$U=N8#-xLr#2u`9mMhGI$q z&(k&5_ejucSFbP0US zb%zVqI)vPk7XcFsA+{oA*i|ziD8I()GbwMB$WG-^(QdtfW{OWIG;2q(dAsBAAg%W) zu}HVu-6Z2MC+Yb-4H@=I&|{buPg`wwT>FO6_=Xjzxvi(7L+2x>cX_NXF}RZ0iKc02 z{)%XFa>j-5e2*&Mb5JW!H|&BT9Wm$>V^v>0h|C$z&vYEuWN>~L$BAFj7AiElzURY^ z$dep;<+8R{CL-*;FKAk(SD^aCCx((OO14f8+Ib=eo({#QLa$HbzMZQabdewn@Jz$S zQ=X5a0HnR3u0R(i0x&|`Kstb<%7X`47p?DNWH?`s=~#SH0zWLU-jxUQZA1Eyw}qy} zBU*`@2~*pkj4M^-ll=%{Ceq&2$=O+GEZx_sYxmq(B!+A~BA20Ub&?TnJs}0IeOu0> zhPl!UOSN)8Lq;P^an~beYn?-8W zI~d91=ACxTz8Q*;B^`I&@fF3rOcegT0Ydp|de6EmeNVk6xaKw6&D>VhW8aD8_F)#~ zLIx>z$Kvvq-KB!LBQuP~QI!eCsmp$K?}5T!8kb)7_yjuZjWyD%eHZe8E4>O^_MzUL z&areePg9)TJ&c?}sY>Gs!>6zK$x8Z}ZmhY@L9B#*NNM9Gk9h4O$WT@vHpV_-_mHN^ zpdH`#z%NGTQ+@9b8yO;At(vP2ycDVUtzYhKqpbSk{xoX1{z;5Bp~wR#vVm%&0R}U# zIG;z#*w%A`pa3XenSz=^dzgcB85o85I8vesN6$h3F=|Km1ky^rM^eqwt8As$PYj$t zChi$*5v}(n5mj_IU_W8;b3RKvGLi;TLuV^dpD5jiX8j^YA04GQ`i7KvlPuh@!F7!Q7R=@&$jF3myESs`N_NKx^_9w z;As9>KLx%T#s>uPvx!BVZ0~q3O>};Pi^m!-Vdpbm+E9y~5cTF_ma3d+WnA-#oMSKe z+ny~4OIn9Obe_a1d&9vR6GGXY`=b8%MgBwn^jo@$HayCbe8rWUc57{q#r+`b%5#o!$onE+l(>zh4Ok4DlAI$`AS>0<$ zw@xz(k(K$f5Gg@*s&z?g50WmNLH>WJVCXyqfBbiiRqc1Dk| z=g@u=zh0#ggqgbEmv^d~kl208n3W(oXrKftNY7SPDb1?*IV|@<89b{oppE}TT$J$I z@`6m6clU*L=nJ>+z!2hfmd7N?788uX>`cEl4w9`qNS zN`ck=Zw~uQI3sSMfeL0I8s(N-WQ=bHts0K_ZfZBAJy-$mNOO9vN{Gb|xlXYB9U=2O zG1Z&8bLjh;Fm3iUuO792iE&Y5#6*jMG@F{s;dBx!Ol7d^YnI=toLq%Mca)4N0KZUh z%5Ak~VRIw-#f9%qB#tPZDz4#cPq?{vS>DBZg_`XuJulSh2I3;Cof z<$<60L@nOqL>Olj?K@WpU+fCYs_;wJ2UytOmeu$x5jce;DQ%T?TqsorxoQ;A3AiZyDMX_a@VnT!#V8Ao60x% zs$#dM4Wscc?T75Gg1+f~|DNYi_XUeDpUh>l%Cb%DvSvkqBDMKU9sOMb*?TXe2r{Fo zP0rB6JKsoQoA^1tTvd|#DP{LS5-BkuC~b78``H2Qu^!$+VQ*1@M4(y{*TN4?^U+Ed zo%%&NlRigpGSgy~H~Wt_AN!p}Hg)pKIKs4dp(zGeIk+!=;W(F9b|122y8*Cy)uP*C zD_C+Z1bLzmyY^pw8WohKU%8tU%4bChxtfg(eD^6u`@wcjV@SvE9QvEQf3a+4`=?IR zy@!q`YyTab`oo<4-@&PW2dDl&71jH9aO%H~9Q`{u^?!m>9KP07MGd~o&K{%|?u;!5 z&x^xV`=HSL`K*3&L`%~Sa>HxG>$)XgW|R<-8a*cp9*?s=e3!(%#N=ird)&V^m7()W zk}aZrWt_Ou%RcHnha)w(uma;cw>$FlVFAjqbKO$6gB$#J$Bbcz=J;6G!6u|ptMaz* zqIfix*lE()8>giSxte40($}~qtZm*a22!E8Z@`VYt{heJeuFx3lCWFYC6L!PDr@$* zwao%011j2w$Hi)*9C|UrqPd#hNnCK0Wjc+xiKOiu%8XfxQ;Rvn@oux=UH}T^ECAag ze@N`Q%64a!z$vjf!K}^;{iSJr@B~KfXVy=mc({?4DH)fyC769~j;#LC)BefHsqe!Q zj3qebRUR5eBurPO7bC3j$1Ji_1n$}?m|ajNL+Ed_iVj(ovEYMme@{b~Kk z09&?>w)y^yeG=I|9!rdjWZP5MdKWkg`Ai<2^5?Z@R9Ds|HyReYmC`ht(n`pM_Ix!i zV_(JNC_p5cWwae2%!;GRXGQv*Zb)0R6ToRc-KR9Egb6X~Nh3%H! zDGLed$xPlsk^;pG^E^T>eOr$#bbuEL$w1W@3du*Jd!JhBrPod$rVp!BXO6D~=Id8? z_K@p*OGNdMc|OJ3cp@G-3-5*7$YzY+YhHe~e_DSCm@sv=D1jslF-jlGQ`b?@?bH!3w_l_+MgDIIcVf_#@7GhK1xGU#njUHpKjJs$sDODi-MW>$NM zOz&c-Bt)y(Ln+AS6)5TwoW!I<6>e%8 z1)%dscU$`1u3SkbZlw6AWL>0ZV%s0iiMnQl(-{E9{Z$5LDWt{LNUHROtD7j26k9id z-3?StrHtaTh<9e3^7Con@_9D*Jny$W#&hpHj;Ux)9$RN=so2PPr3$_s`x%`al~mFv zd~H04MA$^tgwu-o*qRb1k2MmduZLhs&G3O6nd|BL3-8e(d|F&K*+~XcMrxcf)EgN* zB4dgjnzN?wAqs2=Bf&W=?j6PVqv)7^tcGznnxwVFX+6(Fni$aM(oXGrrk<_%7u|-okTXfCrs`)SJ@k;Zs6yb}4J4Tu)=8A3R zOos{eQl`1=)kjGUgR6^){nJCm}Clg_LP&c&V1JAudo7-__Sl+vjU(Hpx?mc>S{>0@K~7Zo0LHGN;SoN6{9)p z5uTB!PEZ)?Ui6$^B2X(y;8{b7U`HwJa;B5LKz@8FHqNN+36U12dV7oOr^>15mQN{y z+0rUPu^SCG3)G2Mx$N5gFpK1UP4-FmptesLlWzpSm{(o4{b{AinE3l(ShIted6h~DgW*8 z+VdHm+x&2q-a@}C@3*di!f$Wm>@3q+%?BUNp-$PWjKCb14ti_bmiX^)Pc&w?K<00O1#|Ln>EKn0 zV(&c(J9p7(Y^*6YR#y}TgH3B`EoJ)Mkvp4n$w?#mca9Je3wcrRmQT;RN9dxIF*2A3 zPxWVlzgxZ;74^YLtZQ!SRg#Cf*ABPAF9nxI8Z?{bZb4c^5&f_wB+`=VQN%flnF6Ml zs2!o1?dp}AJMZvB=d+_*;hACWVQC{DntKx~FQM-4q9)B{6(hq3`dYYzihHr$uh{zG z?Ztdl;zU{=3rE#@y11@TW+o{KsMvKmSTM1fA7x^1kez<#Xt2l4P9ry5GAv#3Cmg5$JX z=ZyI{>6D(>3xlcwGb)_xh0`w$hOXJM6GcYW-U$hW7#H7rDa+AUO*J~!_v(DK$g?0X=k`wek-}QKBAdlMp$vuI?@UZAn+oA+aTWBD zLFN8q!~mq6RkaS=cP1vSLt6K4ei(1<=|9S`Mwqsl>Bd=k3j%eH1-mZ2);ttEZh>_j z&sI+30@Z(bd1pfBjk^b=`#E;2fl^(_h}gS~MA0TP0VV)WF5_!<<8R7BXGhpChM@@M z?h07)I>c+ZNHdHsMkTS;m^utKHCgq|Yy9_&rDb%dBU6P6lL3WTwwfIJA;=^w0~b?y zXN&*bWN;pR(CNURg-YrKQhToYB^`^O$jjAVC}QWvAS%qux;;I9`P7#U3@sA{h(d;Q zZDkzx9FT@ALyGv}1N#UaH36uY(3C@3g2jjB4P3?LdNR#Y&MI55baimxjc&hoqo{I% zjvOc4a>h3@KMGG#DTl*O6(lb@NRzHHN7t1UiVA7%qJnx48rHEO;`X@KNrXUn%m9Ri zYRVwGP2I`i&yj+A(CpmlmJ9_>wS#7p7MxW%{aBhx$nQ$cm~uufx3A>Nq=xqL@HQvA ztnDVteXm2zyE;f!wvJ_%;%{FUnXgTPmQQRp0=MkH9k4en_?=_2l281eUj886USQj4 z@0;5flFRt5bE;jlkwkzHLNEx)Ydr;q51!OV*j^i z#{bhZ&PUa&B{esVsLl5=&C3i3-#k)MjHE4_x)GKTCb(P8HW!{>zj{roRfv}G)(w!i8fkx z%e_)Hw7L{B-4S;MrQXcF;FWir>o>;y_Q|mT$Jd#6|7errYpuC>A5x>xcehFU0aJm3 ze@Chv2~Ddf=x892!OoYy=UBu&{j=1+esNLlZ*a7Ls1Lj_4dFmiaG!?iJ)P<}iIx&U zbmhl&n{^Ja&X0fAejfH;dZztbp85ZsJabNIuuMMP|M@wf==(B_a8fJrbJIPUR|4I~ zA}!ONyO&)Al4?Tvp7cH5;2{(lZl;o?f9EhQ+>|J2vP_4KP_+Y`Ti82Jnw9L&v248* z`;E$@Gw*a1e&_hMWPjx31>ZT1t(@Akwtc^IoS{wD3Y@GBm2Tge3!CJ*&mZB$$9WTW3aCLUROxq)M?QZRvH#JpD|Qp@qF<7+D~RX z_dl*ydFtE`+I6eF2+rQuiff)&zWQf@%PvV7(}c~w@L^Q zl!_M&dBmf9mrB4UH+8zFjv_qlmJtLTvhu!?d|c-LZLVIi`HxxnT;_l1a)Qjv{WP6% zJ}%!&dezFRKw>&AP8TS^THGJ)V*m;UU`wgzRQFfHgO&Y+l{`hgiJBd2toqfb|FtKGY$fmZNLDxN(v|a#%+7r|9a(eG5F{7E`tMc+r+}Qt;r-mx8&!8+~o?oa}8*k9h|y2Ko3$g&rMvtx{`t z?nP8x~p<|Mib&I6r1*ATqwP5D~Do{4-Ol`*@~EKh|%; zi0iqTNM)EGV$1}J0I3tv(c^XBnH~MOZ2Np&+l1ii$n$-j?e}@QDCEOZe`kl}1Ae-? zHMb$WHy{>)fzZ(#9vh#}#m4rShe#kjCRq+f(5%*ookq3fMG6>p#%d@*WVXAo*-4-< znVd|2aE7?bOdP(2ZTZ|R*M-8x1u@wgU7;5>d=O(-&5+CQ+eQQvzc z)hF2e=cXTv$IL}N&+-GvV>;l^Gq%t7nP8YvLSwViT}}mM`ECcd@SSenHGw=d2}<+2 zyZ%*O^ndg^uR?PujDxi*+@x%6?_bYocP)IK#WQmIwGx$VM}?2xGKM3dh54@28@oR4 z5lyxm_R=fWM>j_*m4VFMyDxqNEAb5Z@})4^(|LD|`TLcdmR6`j1NiwO)2+Jv{2EK) z%&oLfDQ0S6m!6f$>_Ox=DlF%Ivf`@q9E=w;&V%=U$i3xJukFmY1=HNoLqYhtx1Dx8$cAT*CjXkmG*{ z9mlUDw$c3j%{lk<3r>(`mS?$*7)yz1H5UsODG1|MYro|Qp@+uU-0BVBg=s!i8?d9( z$V@Id&aBRpIM*20*55wqxqFu8R{rp)bV~iEEvD-6QBY>GNOT=5JY9EkwpmZMwq7;k*U0klW)TnUep?GECjKJ#(FhuDn?6gnJkKIN~e1y^RwSk37$G zB-q21-iexN83(+I*HNHNl>HoIdb|5mRY4ABSOyu1BD!`br$JNE&FNx$9L$x zMul+pgjh&DP8+KnCE+-}di2K^7svUvADdedMlBS90sSVJjTYpWI`F$H=%vBZylZfa zyJO@Dg_296K8cB54YST_M%Bb3O$102anAv`K{Lt_l4<5~?egeo4p?(cL0U?q81R6# z?>YXyQorhYWE^)RsIELKEsydh(*JMg@h!;2dNP=Joa}#P@#$Av%%^`WZzKND9d%Q` z;i#^Maet$Vx&IoRXFn2Kt`d8Z?D*B=qZW@<-QcEsTVMWixHPkkk+ApYxKaC0r*1hn z>Ag64bx`5f4QOt2_GZ$AAMA(5^(Pz`eLnutCdUQdzZ1gd{S*^&ZEmbT)3Ahgb1er& zZ$boiFa;YKQcuqik$)EAcKUq4l?dJwTe~)`wkldV#g9}X<0M01oOBay8mKMemMmgU z0~&zQ?9q0~&?gYoZhGnrk~o7j%qQ9uoVB>nMdn72ek)s(kSv8NtXA>8>ow5fiYE*~ zWzw14XkC!m1LZ6g-8Da(m=9nN1Bgo;TypCMcgkBW{m!h`l{md*2?Vus& zejF1=W|5kNg7><~ zFWQF@E4{tz@aR_s#6l#~v?D*gt$=L@!N{MTQv7g4WTZx6Q8un=s6aAXCW)F8HcOp&JEBSY~gj6J-IeA3mcaf|rSf4SXOCDQ>@( zR}AH;F>DSj$ueAFi~%D9px-JXKCDzMX*2elCtQCe;BzDOK@Qv-N-86@T4z$UDV$tz zIQ)PKYmRu58cu&aU(cCbt~uL%vxb~$Nyz$H+x$#QP8#F0GYKdgNDH^fRGv#&d{ zw(B)Pyp=!c&KwMm!kYNlD3q@J&f!!xxK$S!-;T_w{CKQkAd1g@Rw8FpW)wNAjTfhh zh}X*lFs`buJtjF6-%iyb)>3M_EZUrsS+|faq?gZODe^~y92_PiUtu1w(JYmn4|;Pt z5Kn3E=8xFF9`6#*e>+x5izma_(NDLYmRD2r4oRn?=NuJlYCdPZ^&N1kREIx1^nfqIg_lAE}^{-xW{pG*a_RZfM zS1nzPB_5y90w)2d7s*boPftZB$G3X|c`_D0{f(7qHa-btB_^)@$RQf|ueIFdYr0<< zp>}XP=W*rVjk%_BemqbeP~2%Z&R&nZwmE= z0D)?>^e!m0B4p+LsmOiMD9>{Nz6Cv~ zd;1k~^q;Hx@7(>J%evzHx8R}i>&bamEL&2#v`gvM;^R-*ZTIH@;xmt{uVe0h>7Etd zx|o1g+U`#D5*iDOG#~o1F!z+h^!==-Envk*T3)xRfg|B|@i zMY{&H-Oar!{5&s}gL~oWf7EuS$!c$+Jr2{!Dp+AmNgu7vw$SFb`VPgvsJrQ$+&_>k ze{&r2J4eDKhp?XMAB8wLG`<0qAu|sAKY>lF(d**_{A&V z_tQFgUx*Zsd3e8jnNZXk+*AD}Ende&?sx~4d0fWOC6=fmxY%Aeu?WQp`*IcQq7JoY zxc!lgMk#VJ3Zk#OUssl40i=ur}AO1ljUHo^4zYP+N_7Bo)FYR@TVnitkHYPl3R>DKQ1r{15(@oI~G z(BCtcX0QR*z$G3M zwf4afZ~9Y z(^F{`mV3%y%6{h{#^;-~fb6&`48MeL34@+gT*xG2K>e)CaNU8`>P)O3flZqH zL^%vTMsl*-&)2mMh$?Tz!x&XNUw@wI#Jx&G}AnD zCEY13)Co>c=PFQSse9~X1%cB!+6C0gV0p`Os~;q zWJ}QZde2MG#c6QewX#eyJ#r5mKBYfFHj%z0V8kag$%}0nK@sFkJB-H7ZqJ>t;Tpk4 z8_W+Zxjbrzuc)xyihpDon_!$e#91mLKi-~{B_8R{%ZUd zf7sOO3Jl|x|Fr&FgRSGPRSbQ8#} z@FDo}45D8$BNny~91EnoN0i=wOnNO&87}Gbj3-f(qE%*v2m^3h4 zaS6?5Wa22(t)fLq&HkaN%4sLy^=*08=JEbAuQsNpT}PDs$Jl8tQw2E0Kjkf{*(3Xs z%7ro|RK`L(3(9E};8@}07teS_vQ?ja?QNLusV`L*)O%`OIvNksoQ={CSuxw!@4T0E ztLE1>0jta^>RqQRm@|_6hKH?=MfqRwu{_`+Gaz0vvw4>ggDe)JxkMIBRD3GvqKz^v z3unugCg(78&hIrV+VAzcpD zf$(g3uOC9(WKD3e1B`D&z&raU*!{;#q6U`Z^MqGR`up2oax6>$9rmd-5ma?uL@QoQ z2HUiNxaL{6M2C7y#2`VgF9aO z#cWy-eptj5{HPh3J|7DKw9Qo_OaO3VMAlDFC#kFl@@?_&7!TkPJ#+yYvJgew=k}Y? z>Z|wt*on)`E{$z}SvuKSZY|TkD?hq#nY{_TBZ}0W-_g=Ui{kBMfu1C+i3xW_uO*br zqgqA%9HM7+yPF&RJBPw}X1Loh!45^Oz4}a6;a)?zo&dP=iMz9nndOc7-#L^U*l^Bq zv5;R&jq-l*8o3KM5`SMORcRw^;_ULLjG)Zw*eeHqLz#_EV4^CpJJS$z3l{0m< z8L$+*kiS%LVGyex~Lb?zajayd9z!}E7rq~7A*K& zI?40y@ktIBY1OKi|iAZlRDqxPlz==LB=z)?xKpxGRKzymD(g?$hi zC0GU$%@g1jJQ^&~X{2k-Ts3SOjsyXqxpR&$T#tw7aPzVovlaJi$MowhX%Es;~F(fv|WKov6dbP`m1FR_M7zn05 zpKnZvNOv}^R70nvluG3@mD{Ds4vu%8W<%g z-LxSQNo;wyh_+QY8o2q^Ue?w9Jc6{hMjyezxtV+=Mi!fnof>g21m-@@HBTaZHXs!~ zq`}VlHdk#nLLxTCMLoE3i|m~Uc$QXvVKAyWN)+Ddrb>tmC$hXYD5NHbYMDntHg?Wk z*Bg1;Fj=FA>@A_)n2wS*wBZ07rv*_Km>(YSHEDbGp!00kG33=;*{l*5jcN68Rz#?%KKvrfgOayu~`Vj$PCw}fV~uIddz0!cb_6YKu!r0W|tV<_BNy|4+58y z?^Cg)LEBtKn3l1wZ(>vVV7GnsxNJ@YE=v=6JRkepyPkfhl z>_yFp#d5_MYw?PFFsl!%Z);)C=<5Sr>O50Vf|b%Uc8X;$d_1KOjvaJok2M?3l=u}n zW|FWV69E&m+sd*ev6m(jK2UY9(txyN4?BZq59j~1e(c_0|f z0QFi3ldwKoqq>aHnYoG^A5BNSvwaj0?;QH}Jt9%Vn!Aew?flcR(qS)dbp{46|2(2) zzAh9^jiI|!VGs?PIf3fkdMG+aumHF&4jsA7#$i`rQ_FeR|B+onJ$7GM5q%Twt`d$%jzIWIS@NumDXHlmZ|aWanc zl>On;q}uhVXsA=8G*RENdQ@Wmx+5EGeYW9qzo*9{ZlRWpBhb*e(80`y{u8u<6H~4n zM_GvV&B-g({r0MtK}RWyA-s#(nTndMC1!U~F4nibjO>wAPXjcNKe!i+Qfv1oyB_d~RH;mOTEfd$)IVPX6@1HY1GF6k`<7 zWy0SpM^98}VnC`BAZnlH=k&u!>MrHad>>~ zN*gg)LxT|5IzJ&o;|s93_K1Ws_j_(> z9r|E-k05#9J`&(h0f%@M4uxHw)E^$63#F@9>a<>gj*v6N4E)VL$G{Py<0yZoavC`| zG<{5n|K#C7vPhHJ z>)94gKG;``xcBnG`_kcvwX?xyV!+Pm_dB=|$pdsGtVusjcvB@Pd9Q%mbw1vjuQ*5w}BdLr87QO2RC95iGY92vEq61{MD-x?kR@VxetYE%O?)Ph!M z1O!#qb|OgxQW@N<#O|TD!ip3Dn{@CAE@qIhdt1v9b%S{@Tn0uQ04|HVAh0FmpMPl# zAM?#?y5Z}ZZbVuCao&NQT_@fu0akmF@OZGm%z!2WU>TMD+ZXlarlcY|PX~X@YEqPl z(MUAUB6Y@s6QlFK2ua?p30x|e2YlKu=66%}O;A|DY^ThBs6~+;Q=xUhq~w?$sfVA3 zI0b7?zXpR~(`KlFJ6<PujY>|Du*l4y2q$c!gRrhshfejyY*yXma zJX1Jx*R6a%<>rK412@Rct-NpZp(?&YTUKamdfZMk66Z=v8cWWz{nhPNN}okcwt3)y z?|Vl`#c(NtBoZ1qP;qWedq89ZOaeAVGN(+5Y~t2Vc2)fagmjw8b5D?OY~Z`2AAE_q zVdtd^gP0{h4{=S(-M0_QB&2_yBhWlW1{Xp^qe=Xp+Aas|oE?ZzFp}tvUS4GBIE`^? zj!|nrpL(cw94Wq~NZ+iq`X)d70@D3*64^G5UlLwF3{g=&*PfCNoeaLFF&@j3PT;q? zGedko{v~VIR5Mm{ToYzWE<$56m=Lq1z_W3J_HGJZ@hfks-hDfa_H^Qg{ZPMK+)@uHM1V?HRD;B zWU*kF7n$aTOy5+~(k@}!^1zv#fQLOJqT*gg0rtnG4L95iE<<9MKn-=;l6ZXH_ANB<oSbAORv#arysm= zEz?#v2+23%AwHKhQ`^b_;!1k%zYc5gv%sP98W5aTwM{b~-6}`-imx*!{q5dYFu(-} z3~5|HkSzv>6EDU>V{T+C5&IB^n;ZT#yGuog%{^NUOo&fc7J=YLdY{bJbY%fIi3JNx zTz9xq$dE|ZWm-d$nL4Z;#Y-kUYFX1(f_UlJP<5KGA2AFUnZmxu5j=NsrYe1Vr4LCn_00G_w5pB-3~Mygfoq@Z&5RzqvwB8O|WpoWg@DD(iT zYJ3$|5v0YZxoAS!N}0&nZ{NnXN; zz@#isnZ49`CK?R{5pkPfX!Mdm*YSDJrT`MAS^0*)ExP>MMNJ!RSf6C-!11B>5SFWy zEyVO-dL&(KLkZZ)pKSTR*n97&w9>y{)R|0@NgrcNZ283+vBiQl>dXY}=qMmIG_i|{ z3ikS&6r&h))Y!01P*Fj#H*B$YjRmoxiM?X%8clMU_1=4C-h0lv>s|M*b^kc$@Yja5 z_kQ+%*yZy)-%puAA1Y6J-;|cJH@c3SfWy(E`H3KiYAt*wI+iT4Kz5^=d)>!(J1VC> zR}S~pE%rcISPjiRh*^zadQ=PMwqezZYU>BQZe0m<2vhiZ>zCA^&NTc1+JNaLmtF}oc7B&!mrr zRQP*ugNz|fE_y{egPLhrSkx8m|L|!5ov$z>P*g3g&yg%T9RsL;_RqhjmZ0O7sA>}x3zH2S2YbR7UuEzb|Ha)OFU{a5U{< zYC@B@(s72tHrtAN@&ccIvXC5*G0=Na7EbiQk2anC(Jma**+<2u#*}~-*%RR+m>lf~ z9jUJ!qgj@epWr2su5GwD(wK7QF1!pM(dZ$p#q>l+$8@}$A6R&&vT>a=8mmZ7*Y2^U zOfY^ZMFA=jc@G${x;xqPM6GpP-j+i^W44(oe zb62*YElx?RjIK`WH}d#%-pOOqAP*zmqVkF}&2~u8%&mGD)1T>m@iS2jkzZ4jEG3@6 z$rqEDJKL>=0D&+HI&+UN4L6>4PEEaLsT!VjI(l9&4E0iJI&@M#=vn?iA0e`eaRlj1 z8o890CTgaPk7Z9{@_d*bs&qbFI7L`RDF|-Yii_>Z;PZ z)ie~doOWHC-?uV4hAgU{YoXX5;iz@~jU&AhS9S<5qEx0TGkt0q)*c(Ofrjeq(hruy zc)0hwiW8;y$#IT^MlTEi0FdVgaO=W6v2t!sgSu$dhf`i397+;u4y$EmW_Ox8Dn1R4 z1>2k@kJ;5v*XQ1i^lCqS`D&L**ab`!x8Mz(NeiyeSPyF@S{J&etOS0{V5Eqt`Thah?jgwHa~_q$US|?=RK84 zCMm^y*_y6sxJ)@ybJxTSynwOWSmTq)}EHGCQaWJOWKHg#`TA zW!Z9Psl62B@!{wZe?5VlkQ1vTg?@a9(AnaYz*EiJN!x@h_Xaf^volO;^=&>x~^ z)Q}D8ydDjVklW3Y#nw1H(<`pyNm+^Pz7R%qQ2hUCYBGTQ`rfz#wdMWyp zpMBH&_Z5+;(E({^YSUX|x>uLX9$^*OuBLUBtL`=gk>btQ^lCjN?ePuXZoP~{NQpPI zS3I2>Gq0#10rs{z>N8XyOAP84*|mNeh7`P=53=0_+ZdA907N>}f=mRc^C)BCKodEb z1$kfH^<_YG|GAB4x0;UZ?u=_*wz_TA5o)lnFkx*K^kpJUMT-jzUNEm*Nt`Zn=@*m^ z59P|1lJ7SVs9My8n2KiR3}4VmTPZ^*d{jBs%Y&ao*!z2$Ij+gjk5 z3G_#OPFcAX4c!CJC}(gSyhwXPtM$1@jAO^Q+_f0CSSP)#FO-ALArwzD<(+YIn_VX zX)e^ZWRBraj*iAr;W>BXy4P=rTEvYUcGeL^P!yR}Z*I{3;kF}~cY7u_RrJyE+k!=w zD_BLS{n*yXWpFb6Vnw2Lceh^+TK6@cd@Q{Z2eu#rdHnUqHyVe8v-w&s0>aUMWNxz~ z(*&nItAo%}uS@-E2y0mvAwR(PYO>vC3DQV@O@A|JEMEPpQhNJX+wq5d(~?nPcR_8{ z8$<==MfpHThU5c$c4G^M34@1Z>G!^`8Q;k0YH5Fa$d65%T6GLVW~UgwM%afL%R7KA z*T^extzS*_#OBti9Z#JJ_`wjHq+_x1KaW`LTM& zV-v~`XcLukwc5GNu+Wl4I95%z^r(nfJz|;=tZv3eLt?fc1E_C7PQJS1%vC`6oJ2LJ zs$Izf2-5MToZ@QeAV1l@#^lr4K$(?TSaotzgx7Pv)*e@8z{cPRxgA$^J%GvJBk?F7 zIUu#I4l1C;Yi>gqNnGW*r`d6u#G2vviJ$jC#D?>Mk$!Y#_>`iggG^|~k)?wF-Zn2! z*@Wtg+>{XKY*I;<``w%SW})gMU);1ZZkM>Gn02*%4f_bmHjg-W(Z=l%L+(S4F z3})iFShj@?Gh4p)>0!}@FnBY zN0)&c>6R1Zbt?}KV!|{g>ayYzIb3<`B*Q+-+)uVnshw}Zc%s31kampFi~4kYS-;B1xY!x4yP#nu zuDe@rhOEQ0%Z@IE(bRxu`>u6ci?pWPvQ!a*gH+~dlnWXNwOb0IgDl#}b-*vY)cGFk) z0S(s6U8yw=GXfMV|AuNv&>bJ)(p|%C12G#EGP&qwP>E>%?y=9LbW z5T`Bg5F6mt3Gc#6b3IT|?^5Thy2RT#UP}wpd&OB@HjEIwW(t&^H&9f45o5bF3umI# zsrD}laWS1#gF&wKonJmMB?}5QYnApjeZ3;sU0`e!T39!|#J0)yFf8KL8yytLXyOuV z42^Tl+@>Qr9Zw!)3^DTdL7zk42dNsYZ`=^P?kL6Nw&|ktz#;X~WKo&LM+=zcnK%1N zrRF}TBTWQ54x!DT|J&H=J3Y^f^jms!AoM?!dhXuL|^fj(wNajzp;z zC&Jg}IBu%f{kM%cHq!q`$rMo~8Crnd)aS?dEdKaMj0JLf4>(+v`)NEX$ZaLN?zew^ zpYXT#`R{%H7ne+D0{m6xEQ93R|{n5itP`NqNY6Ry1L{`OJ+tE2VJ7l;!;eTKw^ zllWJmV+L#1?C_O;P)6-TUr@5mp-mhd__hCHi~q6O1m`z94 zdD2MP3=V%`Y14L$AuB6%V6Bt+grgSy@BiDLFXvdrj9uUgT&W#vJmB8nRM2?hfIgr2 z9GI!QU3blPfBfxOqmba<=DQ24Xt#fC``z^3s+@d!R&ZhYB&yJTwSeSrlVy2aj_U}u zAxiTvGY|zf6`1A+vY#v71kTZl6X!6_pGW3w;j=;x0V^cJ>a&&YeH;W6flAI`Qy^P+=b;P*Q00sB> z-3or~taDg=t{@a}r@`RD#+vZ!g!k%5fohaG54kXwgv%^^x#^Wce_B-YB-Agoq@aeT zpB7ts`MR{A7kG1bXII|dzr#I;sk(b_cQ@qDP^HP5vC8Y#5zHLc&X>n)DjTX;H+o0F z(uSL^htGz-A3hEGWBe0!Fg+_~J;O$pN0xB8TClUOXGLqRDSDcr&Ud0e*5p~6JPt4K zO=C=3Kw1sUY(x@h)urf+v9(5W>?i9cXFYj2T#m5Uwn8{z$Lwi8t!`~i%C21d!-R?f zz?MK{n*w@RO~N1u5E6>K;VBo}_O$HHVpTFU*-ln@XSnnzd82z=TK=7*n0Yx%Nz4sI>x~nLEQ>#UK8gKGn13; zzE$9p*ykU!mq7CgoPqG37@`|{oVe@zhXZ;ovvV9+2ypY##%%_l|KvH-!v8q<8WwMLF6|GzpI{%+Y&_Xwf*ru0&=~K*UoG znfvLr00E~P&*DmosZkOnyn{ZWzA&aIW9Im(+!n)U5JYuA)>(fXXI zu^C$^Q{LO%3h!CY351vh-l2m&3ohC933j$SJ#xP7;n{H%lBF>wR>tl{C0k5}uIo); zg#+Wmth!J3n1Rs`-YIU-0P9yxoYT3d*5hE%iH2`(HGBcow>33Ss4=h+R{_=yMK^jD zhrp_PC+#=|TLy_)ydqhbpEX(VHu%$(w+NMsi+xHjlY8D-QoZ01Xv+D@N8jwr9d+Mt z%&0tg>m_TP@M$F1*$E$pTK?-MZ8R*gL-NJ`@!@7`oNwp;!_u7&%irJc_Y<9Don$S# z1^6@d$Kh}Y0wI4-I(1Dg!D`DQXdd%;7nbDD~Ws-dL;U&c4%MilCk&8P(k9np?{6H6i9w9uD*ND;Qz~{BhnwBPZ??*ztic zJdQXo7ER%A(NlydGyJ#V9)EcpAs|7$@^0sL!g1>%bXd1cN4v%+MhUb8sl++(q4jXu z3vq3GC}j{;V718(pZ*CHr@PbCPn4j-K#QB?HEgP9Ww(W~p3w{H9n4#~!*a1t=4~s+ zt6k)!xd|Xf1l8?9-u-KU_81&nE5#tDrwz+2NXo3nW(nF*3n!v8v!3ujKk^)`E3~(f z#if(GD9qc8$Ia21Ej7%qVI+h4_C)H=7CIo72-rR1 z&Sv4eEJ+^qsKV$)f~#2aNADRtsxU3i-T&vCgU|Qo`4?B{I#(>2cGKbxCM@9x3FPfS zsFffyVmTN%R@xU;O;MF+@NPqa#=9U_t)Fl>K)ptlE_TEJkMKYbq<`Eh+?Dq89}{NA zYm#_j21}nlGDv3wRe=8+R*;ygNVx-I@TI*?Nl-?t%V4pEo%)CJrrW7kuqF18?u3 zRkL)f1372b$z(}M+m%l%zqq7G{u#Fler1uJ;*v`Yw;gzC$3C=fxuYyUHq~AoD4zQr zt{!FvCX-y0`laTUR}R?%w~!(_&QD1}e@kxX(=Ck4LyF81Buuj>D?_FPk_^NY%AWCcs#*x^d zAK5*Bs{PY<2g&~cOd*hgEt;+Lo^W$Y1=Zkf&4LCErK|3*?_eplY@u3~DORDmj>-1S zj>D=YYc1|H^T0l5-S1^hi1@))SIuWyeM&W0s{ETxZRBk~aw55+#&sNKDqWi+Q;Mk{ z#vIb&aCih3HYKrXyAys7B#Zyp?HmSU>Ah6RW3c zbkt&W$E~3x^qxQ!BZ0^48%L^t=nt?EWR${$iC1m%A0ING+VETwi@E#g;ClM~B2uv< z4+Ux%2mdH~V#;>Y6s^LDtQGuPiB&E>U__JUr^=x=9&sSQH{(Yy3J4Yvt1qpx@t*?` zYmf2oKL_4;`zhh~QFS&-@=bxNcVQJ$%+BZ0bLH@jv;3xVx#KeDYoCS&_wCUYG!5&` z{P00)QcUshcqbFsY4z`$=Sz|0p$QGfAM!Co$!pe`;hpM++sG@UQG9W%od+j11fFozwoeWz@M#_+*H&0v}_qP2;;M^T24I9z~@DGDS z*EP-8=psoszykIY2o>^MxQ>W=%aFmV!qdt(R`xX(*D4oel<-7c$PJb+ZKS;V3co>J z#V?NlD-CuM)D4Pl=Vv&dN^8b-XR0YuWWaNJU`@`VL3GMu(ly`fBEYa)q}&CY7t+II z&&8_-rh<@5a8&o(V}s}K);>RE?8jEQ^3y6ahe8#nQs!-DCQ&R~LeX5ds@F7nP)=|% zcJ^RxDTRS58);$NP_M0!95zp_g9}5j)m;xN7m^ht*qfqbBW&3+17N{-ZX!02vBKgymhe7ndA0qSZ-n@}AQBVz3Ezg&ENKqt zy|4g3F)9@hj5&s2!gx@-0040>6)m+A@bug?hINu+JX|+M+qO5eU9<6WOa!LrX<5g% z`K~vSXo6oaPk!V0m!jgfX}oWQY$A;~x-#A>%c{5@$X%u7Ii`){sUVDQSJOEv=L)hT z8V?R=DVuZs;OUsOx1=pbCgDCB4ZkUQo9*N<>qbV3#eb+9u`Oydj6XS!M#ephK@d*Bo#DATo2nB%(AnZ!ykYLfpU4O>v%M`p-XcdWupz@+s~T z4(#_zH&?Dc9eUI-JXYbIaep;RYdB0QyrXVn-ZkI(VrP|dj^m$+%9uR;;~mkZ2%2{# z`&|a>c3E+qnfP@2bZ~01+Gl3)Se|AwkC>omUbVf~jq#B|QTL z^?DZPk{1BdbG-tpSJ+Q7EvMv0bK^La_ZmSp7!OfqqEk{!f2IGP5h6ENZT4o+3cl~C zb(+4M^?IvwJB&5dojqwn1qhYN9xCO+W772L2#jjT$A+d;AY+ePN4aavUbd3MUi5bs zF+Y3JK$#H6Yb5=|&+D`8A3ZIfr0%&OK?mt2IC7Con9}2DkGwej*%GW^vOIf6$d^dm z-3Z}IP0x7K;IwR7Cm0A+Rz1D%U@Kds`1rTJ6iFVWL?enBaofGAp|LmwAm6rj(Cznb z;UU37icm;o=kq;C>(^nIX~auhrQa|-v??3-AMl~}mAqP<>Oe#M**^2&4-svuQL|r$ zue7r^zaFhFNy-*sa(`GFa)N$nyb(;Phbq!%n>pA@%P1fBSu}fiEMuhCJQ9l9%?1hy zxk9;S2osZ=ATWe8NUM5w?xm*2My9_-iFV{gOy)`3P1=S zx7ber%b4!wK?KZ{hN@?yT59n0uG?qdd9+l z!dVk(`6&%PC9iBg!gz1O4z~=pp`GMAP;42J&OAJ~Oag40W-H8i7{fr4k~wgWpJlh4?tdv zv)Dc71}&)B+*4uz$~+bAv8Kv^&5{FhqE^pj32YFB$tw+ALTdYA`Bs5$U1)2HFKoK6 zRMnz*e`)EYf}migd8TgGEY+QAJT&O;yS$N-La5orJac!**Ap{_SpYc;m*Gn&Oc5Gu zAh^^Qrq}@=@x2Czt{S?x82(`+@@Ibcm5UXyaBhTGUtsQW!id;3(0_B+y^GD|1e=Bw zKP2p)y*0H+s~)W~(|t2?V0IVe;VhW&#tAn*FkP>>|L!2t#e{h6RjBtjjz#s=@7BH! z#GyQY@rA<{YUU45>sG~>@$a|8^R>+PFE0)&leAvQ`MmeK@06b+7D`oykC)d&S%Pm^ zsrD-|(7miAg1k4mU}zH__B!?7l=iA~E;^;Yv3FGu$d?48lZz(iO?ovx7`q1b4>-Ga zOJjJeCAfVce{q!nAL(hQsQ!s-_aj0LglYMzXP2U%>WBH>jdgXkuU*f4(0a z6k?h_p7a}5$9)}Od1NHaS>av2o=YHaI9rhYlYwJ6dZHzYxVrb z@dgHMj;UF*#l!5UNPfek+TwIBus!pB{`TFtheHmY&vCm^w~MVaz@El9g0n+cq8Nhr zS2EsC8SLjlqRA0_CGXqkA9UR_bSQiCQHe}IL$j=mb+HO>yrO4PFo}bN5;MEzujYFv zY<|lBV$6OHj$0=4;f)4m&*toXvpiBSpk;q;IRcwp#v)nBz@X~o&Ar`h2jOH2A#<3? zo=##(aUny_Xpu2J=nA&PY)I$$e*KGY963sZzm}}{B05bokNd8usnAMq43tw+^`z6G zCJjYX3kdmhvAlrU!U2yOs0&Z(Lzxj3_id$}=F4*UY(Ais42mX~F@Q}%@_}J?<>C3C zk{!!beGa_oT&X&Iou#NcVjbB!V)lrzi5^W$q*5;{N@rv;y}z+-r|F$*p0<++W! z;RE}vYI5H=cqIpnLs>W`+Ae67=TAdGpmfm4Sd(+aK3B4JMj_3YOe$=gi)U)zy6~*v zR_stl&4LsGlezk!PjO*pGtJAkje*3%1ssByrNY%GdQVbD?Q&DDEVkBc7>Fd3;Y{=SItP&QN5i&$jxLfjjPd1#&FU z(kip@eE7uTg~KSai%6bN#}e|M036=OQpP4^P(JzF7C1ectz25cnASh(ZrhldvFlXckIHR#-g5H5 zLwa!b>gyG}*QOQsA?cH*LY=7MIw)w0yk0bgH1NTfjH;ViADzoGCw4?LaT7pg2+;1< zcb;cSnnFG269dKVUZdN_Q=&D^`nS{hOI-2QlM^c;WJ zgntej@&M;ABB|x}x?b^QCu9yDRZ1I#F05vwFA(gHpMQ7k9GQOQ5?_vT%g&_>tiEp? zinp)J)ZSl;wLOfG0>^$VIPDOQb1L}U#L~XD5NTi;+!cbYpbEs^-Eu^??!##*n#;6f z&#-OuUPlrfu3HLPpqmL%35WRbDFpAQ6c0*>98~9O`iESN6)jT*{FuY6O-$L!`#YE^ z2TD$scVaVc(U1|*{YX%NNlB{cgdEtxn15BwtZ&P?#N9FAuXHIH833Q?&p3I(P16Gz zrYp+VZzP4PZ2gg}wy+=TXp}1w2C1_HOr9<}CVkX1{lN>20H_|7_~A0x@S6P7y6o86 zmJ9ESz^$x4N=$S#DR4D3Lap}5E7bcM21g{pfI)$u|&;=8MD7W7k}@|IX|wMm$&w$fd>qdMn;GV6a?3&1d__=JqU)uE%W^kJkLZP0@=Xaw#xtB&p8 zuBZuh;Vx>)*BU(VW81(>meT_^){>Qz9pQ`kVH6p#7U!4@^r&W1x-C0CD4X2ul2)tD z`JC?EVayH&3L!b>%%H}y+^9v@7Id=)S@d>RHkMBQ*hKqdZ@Ne8j0K(-x6M&I_ zz7&^G>b(1^Jp4?+5n!zmTD|xqa>F?;PF0Z`@0jzDb#8S(Hdhw`&=* zc*IA+$5-J=9!$4uu2L1A(P;1quF;i}SPHhyP+p^iiqP1+iLA_o%7n-w&i^8OM6|-l%?4F?keXIxh)wvhot{kD_q$*-4@|y8VY@jSw25#%6ge zs1l0ok4l?)!@fgKs<-t5DphhLAI;ebEsBH$F0Z}}$YIN&JkJLOZU93}W0Wv8)Hx=6 z*KFF#2vFeqGOPlq^Jm`TllF=0qSc+Ru75oyi7D}~-}6t|v&DrriHhBAJ_c_L5_9&xIFHvH-(9#s<>e~WhLSVA+6EW!#1X%dF6 zW=ra|_mLZ^C`0Ciuebc|`l2pp0sAGb0?jg@MBuWAXdQCh&BmPN2Z`vnISx!PQ%B0U zca5LrqxY5Jx*~pa?gi(oaxK3HeBt&tjZLl-8~`!Bv+Y`3{Ru(4@ka|&&5s&dsHi8? z-0?Tpf^yGqqW8=esC+_WY~Ptufr|6<5bAlig&;i;+TB8&HCd za+Dqw^K>nFvu;-DS^{lXqy%n4`4V&9I_;*NXDW&kMlMTZ6RFg*6?K z^oTPKxW|xmL2hKv8!Qry0sIr+3rXV8N^iz^yTq zT!@?BA;=?4ZIbS=bJjq9aJ~~4e57AzUY1#8`fp<$>o(R1_e}8r+`j8K4-@#VZrb^OFl_LLRqcloYdc#6lF7wkTaGga z>QpQnPLZ=PZ7V5=iOv@f;T0OGHHpMU_@i=>bG}|dV_o$KKZAP(pWfgx_OWVZBBgyE z_9eQOkH#(oWz=po^pYnKWQoQQ^yAOJE&1guXhdGF#8HdT)}OT^mhObW%Vhmjv$9;P ze_nE`LZCL(dDH{5yYyqvM+^3aQE#-n1;A_)wQNb1!<3k@Y;>Ip-LR{E6a3qtSyC<( zZh*k+DsEgQp~Tg1ENb%osR%xPG89%nK#1D7nv8?U;P2&=i7~ z(;+|&pG2C#fZN0_b&p->9qY;&(iJdT^{n4cPgWylUvV!!FcZH>$_Af!6?h~E&PCHi z=T_DG3q+)C$gGVjJ*6GZhgpO{zut2=mQ+iJ&+<0Y#cg|fHc~7URmVt2(eYq*$$67f zr{|Vw8)Er|FS?C|p_kZh5FLu*g445KAMGpE1`x`X9zn~0;>l48nS!f$J4iP;V8+a! z_DU^9WEzN7Ka}R$%QKHu$aVPYLXX;v-e9TeDUvFt$}FAu53rHFcJQO56hWHH{GTLy$c>r$w3m~;6T z3rHZ%R#-<5;d)sK?yo!97vbqWFf>r3ClP*2<|CyR11NR+Rba-O9D4T~hh${x*d5>h z%#GftQcWuR+IcUEzqZb>e)%&ra>(JUKxD@Og7C|zb?Zlva1kt+4(T-G`!w@ak{bH! z67pu`hYdkd`{;s7#i*73MAI7@##D<=nNWgs66i}R(tlHswO+3BDdh3Rh=XN_lI`$O z&BO7*fK8I>(W7X26PF3uj#_CGg*KkU{qdrE&?<1ru*dE9qLWv!r->7{I zO9mca%^LSWYEI)4MAl*&mpsfkXG-8F(gg*|D_oGLt`~kMp>4^I@)??nnfo&%J2T~3 zu{=|yc1;OaL{$_Csk~lU0exo|5)-oz!(WbSOYHbuC-A~xO(k~n&*GAM=EN4pVy?C* zSBe5^#M)G1Z(ix&2+7E2#yLIgSZO<*x-Fs+LdG-HHz`RV7!m=4jQ@J~UH!1V^Yr(x zG<~_z1b2CiEmdJ`lML3Vm+*93UeeWH@?a0J2#5Xij}-5Hzm0w6d8hK~;+oX*TTgsm z{iyDAoy5xx+}d0R7B0w8J=QOQW7K(q6~0bZVYCE!VbXq12dZ|-39OO4XQX+0NTN;{B0uHiErw3G!%asjLHQlnJ?nJ{EC`#acMAO&+0o4J9&>`DE5H=F+ zCbaULbL;Gd!VRk3ZQOczZV4%pMNGuK-LmhCdu%TK4mmn$UFFqS(h23VfO5i?n`)Ex zU6Xq%?ftU~lw3X<$XP8=jKommWA^4mU6FIKIK!anPWyBV$@K%Nn=2(`YIpi%&9H5v z&p{wUR@G?)(jJqKcNz z#>I3uh|)RXoV-ngU*1$yx)aj&H7_{^Z69BI&Yxtvz1Fv3IPPeMM<@t0g~w5<7WL}N zF!-;djS$V8G1bxqq62;HHMw6cCQhn5@Vujnc4b|7rzZW= zLa}@L;qm1eFFKEMrX z04KplHpa)m2(kQ{qrr&d)YX;jYqioogBy{j;g4ibR5rS)G@|5er^rUpgvX)xZE1ej zGxtM?BT^^u@rLrUO+`fDRKSaV@;PBpqGB;5_pLQ5YP4<=oiJMK|y(-Ty^HlMvid48Eut2706iI7VWE!iD8<#=bUn`3tXs3HLY zA)wO(s-1Y)8)!MZo|+k*qmiOJkzu&PJ6xNo!z<99V)U}+m>p7Sy|#i-3ChkG1UpU> z&`q%(*66d=-sOW#te=T81HzD~z4+?R zQq)Ya^G)6kXhq6ihZpFmYdjA=@wukjx)QqiHBl#url|)s>xl;i-Zm{LWYdyfjnYS$ z5BE*r&Ydj^I`^W?yE^FHaFiq4znjE#cQ^Y3gGKc7WC+~&E_ z`<`Z1B$_4eeNoyOy+H$;s44*Ie6jXjl49avx4lWL1x&)q8p8u&tmzuM(9S@a`bYu?Yn+G z*zF&_T4Gmw*Bop7jbk-E@Ep!KcQ^39PYYrX3@u7+UKgH{P?@KxY<&&b|F01i^ZwV5 zZK1$J1MjuNGlIpyn^A|7==^qz{6OtNj}{x7)-Tf#ndGZX?Qn6IoIm!Tl&Ek`i*%>* zU5m3`Y-qGN6JK$n)K0*(1a8RMMKfyj$eBJ8S)kB2(r+RURavX)a%BIjEc?5EydN<;#>$k;YYU73oa`aM&m2ubX zK0bZ;UTYT2M1-lNd+uqP@%{9MoB(KM<0C>;wx(~R$j`(=CXDaixq0o`O&c~`n0wwz zGd2AUIwh5ISGA&Z;nl^KJBpiezL_z`iG~vu?xK!%2fDw~F|D^+k?RLvBu36y_+!cefql|EK((R6CA)n%JNJaTGVYozQ6r zlYN8rkIJ(xU01-_lZ!vVA$f?q88-U#K)&leY4IQvT0KF2gfra}KX!F}&Ry$~E9!1o_gHK%u|wtU?WdWy3onaz&O5mWE6*mwZKK&T$AeHa%^zO{PN`lFPwY56=_3n0 zt$O?p3Lvgkv)x(9@@M5cA_ZSWgoaUqn(V|Ap3-~Pwo@5s?7gpF$P|1w1)(T<OrBEcP=|T^FwYb7zSI`(+Th0SHI4u zL-S^rD;EwFvW}f@;SsFk%F+ApE6+$@MZapxKfYU(S4zjdPuW4V!21dctZo99nD3xS zn|;_R7;!`SgqD!HpCL&=gp79`QHNK5=1^zjt0|p$8T5}iagqlQ zlVsGx<57J255Zr-CY7?4@+ZoqBS-+t3ef=ZYcy&3dWow@$J4qRo$%pDYgRwiu;_gD zw$Kou>(UXvEpT}%7vL&Gbk*8AuC17CX+U=d*=Wr*A(K)DP6a0hPt{|5{D(^KIP}^1 zrl8>Y`FU8vx~lC;{ir4wIbRRbExjjD4H^MEB`LI5h=k4+c~IPGo27F%MYUeY$IVF;6RnOX0Ypv&4NZzi*Q z!#w~qx4}2sQVsY^mi3qMa6Z@^8xAkQ7q_@pRHx1qd|;S~=IQ>DW-){Y`F9J*#F1?$ zDAdmch~z1n(tteYS`d`BIeL844z*1ev>7T$wrP&0tt~BK!uoJ8xsn9*k-HaZ8oKW1T?mpYVKb`mCY912=BM7UwZw8;e}TgYBLIF5~GYi$S-!^uuo)TAM)) zFGhKs1Ax-mYIEsdBahN>W1>Fvco|GZSZ_15K-*$eo8}&9=Hv|U?dH;nie~s%BY=D? zsPQT)>=vqBjW{1I`;%f;>e`Cmr>+hU^B{V|FhngWSPWe>1-7eiP}zRDr7nu1E!enD zNsDU{nC;O02G@^wN@7ajj?Gus$n?dfF}re==OfIIaUI}wya#M6eeU&9CsN4$;T`mG zhb?YJiKt@Ar}Jw-!?qT|pW!+&gI2DYhJ0}(#-&K{<2OaKk0{BZ09=luJ(CAJl5Y1sA1o7b5N-G zsvXxF#p0b53+Xv2k}YfN)&W75b(=WZN@d2%WA6(Qu?XqcXvK__&6t>&^u?v6V~O@z z60V?O9#@n$bLAVyg9ICb8j=bI8x{Xp*yJ7c(w7i4eAC&#+13~8g(Dxrxn!&Gb0d4z zf~&dyi%bXU%vFHoy;krdQ{1?@m{jMA%x;cT)iZ@gc#bIaM3*?`(+dkT4LS-@0uFtL zl(sU!Id8Y+!DqMw_#4L$%F4PD#h0Qx=BjJRsMiHK4~7>Qt;|gAo7;Zg9a|fN?@Jr> zT>QVrHP672k9owqE|2wI=Pn#~6vV|bG30ta@G=}4*er^zbY(^2lv5Tyi;+>loGa4q zhw~oLlE#uy=t{64cT`VZOMp$+rJ|&mwNwDeuFtI(YM=WYW}4pj_|K~3Svx?noMJsW zqiRsoH6*A-CoFg5guH{yKy0Mr7G;YX%PMNJGo%#no@9R%Fb^)uYcynNfz)5k zqbk#1uac|Z*C3jm&PYIE+_(oK#vcMV^BYkQmW`jeRX_Xd%6hx3r~WsN51%|5zK|CW zJFH47nV0@m|K6^GCB@>VCp|_;7rz;{lJKAlFJl@Is3kZ(XnekHhQ%*DJJZBVu2)im zt!8d#B`DOMZhBf5)PE?Vvw7Z7C8fTvn9Ex7brbs%H@f1Vk;sbDRR75qa%t{eKBO*?57-_B*Jz!6cN>q#2Ffx0K zUOroL=f(lhXR~z};!KLuMd4y|2}>|K4|EN#nE83YQ$0N>aXzTM>d?1>@KP$@I*rf` z$cw{>xGgV0cD8}a`J1ZBw$=?18MW>dr>?Ki;TE=bK@jN&e}R*(=V5SF1nrqm`5L$s z_l7;1{YCIrZL9Y)Dq6@7-*_z%gr!XbEpfD6U*Fw35sK54I}Bt#`UZ|L;}!Gy*Yzg` zF3E*0eqXk&nZbS_x~6oWdt6~ks&m|Jo{^#UUVgTl*gCCclC1y3bg03?!xWz*pF`9t zSV>7hB3M-GOGb#f`*nD~vJG)|IZGjPxBih)G&QK=%qqH6vBI!#HFp^+Kx3M5a&l_0 z?GIkv`L2V3L;wgInJWQ(Q7)*=)i91bjekR#|LryZcVGN>OaFg)&HvS~&P4qHMvEOc zP9X#2a5yYa5aTZ5eK?NVSxdmlGUozPnh~7^j=o4z&L1Ct$HSno4*K1tWA%S?IPD(H zpi?!qY&^F4_{sb!;REAi8d3rW>g+I@?Vt|6t;b3z`D5DIn_{|vxULp?~1u0dvlu-8%UHYW~#F--Cq)Z8UXX)lBwX*xV18Dm`>DOZB}IDhy6E*=*2#ZF^Za$&oQt#)Gqq5s>;rt?_8@m%q&hei1&+jNv$=RP%f7x|2@kkh z5-5cFiu<|?&c&ak(lo$v_Yp?L(;&KRD?a1aJXNJv3?jUtQP4&;&9W>i+DFWy`K${V zNNKV(!0D`>EbbQ{IJycT=cp-+lK_8RZtwojtL=+Bid^XG4CgVf+GkU7^s|exhzeY$ zTg1=Ct`&MxL7kR4Kb603Sq?n~?48hXNU_<`d>dX1y8qZ7$cQ$?onJ+v0CU*xgOPPvzF^+?dzJYN;E_pL*s zkTzIqVR2z36Y_|f!1`>mfCwS9fOJSG zQbI2_kRl)*LQ_hB1cHzoB7x@5F8%v+KK*kR z_uYd)M`bBpI33fbVEa4eX%k)T!SQBFTEmQp2lz;2lY>ZeegX6EDm3Xb-9kjIIk<5$n|1!ud=O2Ve18-cxX}0)WN91Q!2YytlSaZXrIO{OJ(Zh% z*!P{#fYqq!2Dgn5+?aAVUn}Y!S-5_^fC>`)_7iD?hK51>XO_~}bw|O+wGuPG_*LX* z3XUGI%_HTPSM=xPjA;L@w%|F{zSy4Madb?nPpYZsE)XJ&8{RX(RYfL(5f4zyJ^E64e)-nERR7Bl+%2l=PcD%h>!((w6j1HH z*s907B+rCIx{%I{5JR-k=Iag=;9YLui0R(`37=iPIc8nlev*LA+W`b#A?wf3s7Yws z{!Vj#Pck8GaTKx27gehAYjqc*DOtr0jbzRbNWbR3!j8up45;Jf zO{SEAvns-C`zzttJ=qBoL}|qEUXY_Vd(VPHI5tXEbyju$!4yS>MZ}|Y<(S zf)+N~tDTNfYc;1?+=e|QKGNM-Yw?USfk3_5iT(SB#Gnm-WnQkUfA2YY|7Kkad4Ulu zY4Qet%tWbNgglq%s_j7xYO>FhbWMo&fu^y8T8+50&M0+iK$=fK zoH3SGc>Dpeht>5wy}}StDvQN5(06P5W(lL3(PJld->fy ztqyW>okOxLncfy=%J{qC#6n=tZKHuWjT(>FlOw)n!)I&qz?F>59GKEDQu)hr@q00( zYrAShgKiU8cU9q{XuD4pmq9ZmV#C9XKVL(J$-|_rEt*PJD5WpNhGWBrA41p^xYML` z7|r47WyrElnYF2|$f1Y>Uo}P+1ggaRG2G@XiS_!a?xH2XN0p`0X!kWbcwA3N$thVw zy0;)8VC5R}3k8QJ)I}7w3~#~n>4&tXL*L`5>iShZ#*FHe^n*%jw2-*$8{X3I*MsqF z8@KW}r1>Qyn`;M9mR$vei6tbkhTRdUy5C{itcrEQdL+_QrLH(Ryr;#7MSEaKX_8PzXXmDA2bw5MMuj;QT>}lQ>#E<(n>RwT#nqw z;$`pH8Z9{ud9!3MHR(fCqb#!a!B#(LEJ@q1?I!i$E&HeXQTV9{4x66Bh-mpZV+$!} z<_NM&5uA#EyA6g)_XCHPD$<@%TBYdYA*Sd=M$l3LGNR$$XOix!oc6;kw!(17ypP4L zl8qo)l9~qN&DmAgQuIBgvQ7oqS}lhwMUWOxt`t9_S}sSBbqoxo(<539IlHNKR+Uh%@EBO7c(tyd`v;AmqMth24QPRuim24~Lt<}_1xty_vNl@f z6_N3DtGwZ9U30sRootyU$-o-#I6LzO*=-!UAFVoO%+I-h=MqTa~IDI zg1oD1t_19Vrv`*WnL^Hwi;9d^ zZuD(r!zX^(snv7gtC;#hqdvTX4euJ2-aLLlEN1h*AfZ6))^>MFnV!gE<-O{Iywfyd zY$U$Df^qDd5)V@pD! zkM=PD382D%-hNnbs`Tr&)Qm|b99I{Ye6Su=gXj2<@8el1hYnd%Ly=N%Z}?YtE7mOw zRXaBo96Kj7BzJQ)i9Tz@JF5G>(kO|W>=4~FTF5UY2P&>h`E#bYZ48O}VkO$v@ zmW_lWj(S5q{XBGx2Mh~wZ&8l#_RxKz`86sUf&7s?y(Tp#_CFR zk8gpkGVM`pOMF9kX>Y4Jov&Yyf&ZX+XH_gvzjnc;H#uD`xS;irS%{p3_oljj?6+XV z&DG^SVH@sfKt4AHy^^hMAKWyymO82)rx@5kuaF(hM2f!hWkS&?!$w11wx6C+Rn;qe z^w#GkZBZkg%>kzFe#Q(bom0<~lN**>UZ_6*Su4AY!<6Z_!tk*)Sutjz3*fl8@m4Yt zO}K3p^eA!ttQj?T%BA;00&2&IDUQa%1e!{cWH2V=08mg^WP58}eqX-PdKE48Hmkf4 z%8^0KP{L538I?ADa1eWsmn~y_!?S);fH394%#2IC5-GCtrNqBNRh0<&L^YfoR#gSM z?PSjm>Ai}e6z%sIyE>1Rm$L9ak5xC6>PrHLK%VCKH}j;w3G-T@^gg?H#XrpJCb*3M zGN`w9h3;4ys#kMDl|d%^>ldUt2Ht`{0%6IF>#jSAb?S zD5n3`+|laAp6|ErUV6P76n>r2yFnGV76dxI6rgmtY#3hXhwBK zic#U47272qvoeg%I4-=6uWj3BTz3BC4Gk{(@`V5Ur!0Nv*Mybtb`M_4?oKC^a+9F$ z(S4V6rGG7~Y-oS?ezRB^COZBSC`~_Lk~&YvyWk z=jT0#e;)SlZ@)y3UPW`q)Pd_^+!@?ft3Mfv#jekFx~*!M6>loB*3xi#JpZfKIii$( zp1I^^(A@F>n@&?8sPg(s$zCe0sf-_ZPW;lkO7X3PRl%W&XX}I?G{*01aP#miM~#`n zYn%N&%FjRCzrg$KuVekU3qR3isdsvny*|~OmawR7Cpq}QSBq|KaOAg=O|XZI_N6VJ z>j$X#uN4bASI?blG}kTV?uyC})E``iDCOq+(VXM>`rm5%B41fmYpv#V2Q`(Y`e*Je zGyA2EVSGN;#6)qiB3SP8ITzA@JTRR~IV0+#z($X2zVD*YPvBX(sEOw+_=UoU`92Er zFpL2tS`IDgLK9YD&r5sPKN+RzB&h`8c=7&;KwD%te)K$R}H`Y^HBel zZ$H_WyoLV+E`AUoOQ)fPD8;lUx&6bwgmyH(@a@ImJ3nYr4ANq&Pysn%`zxnU+x{HY zXnw)n{4X^6ixtJ!^G(6#tCIc)`nj#$+e?@AW-eG{zoG7cef53%g9dl!`6;u~XPW%K zNXS1Kn7G8yyG{p-DUZlz=J(5R(G zeC^o)(P_fq)S!iXmvY*~k*n)kU%XX&_248<@@UL%$LE(Qsy&4LHRcM2*=a9XIElf? zw>jgi4Rp=_^d4PZLzDV<&u^wEq`lYKH545>;7|WpTL_8SK9f_8~GK z?}azhSRR`hM{iPCut=lA5?MdRfC1Hl7;AylBKIl-10sDFs-UnC@BFgd<+rh85g~!= zHPgaDy#zdfVL@8b<+;+u^@U5+oTLyh!pfKQjKEWyu}v&D5({P~8yd7nD#}ozqg=>_ zdZn_jtI0A3R+Hp5gHiEIPfPbCadw%$U{hKVS_2KLdWQg%jg^Z9gY~G|)vJb)&(^Xw zxiW=A9VxdxH>Ua?&cqODbw1 z>t>}?jP>`d&2|0RYlEN1B0W512)4)!Q&U|F4QX`2=!}}R9(9?JLR#A!^oO#7E~oKH zrXG!@B>4Oy0@ARK!?M{qtEuWFn#Wf8c1ML3)_))JsDJ>a;mPKrtV#mNChNO3yqHmUXJ}L>F3(WrD6q!$|1j3XV z&2>W?9;d6@te$(l^2z3~fp;qr(P{H?FQFn)su^;@pB||Ghcw6~f&c(Q0+~J43{G-O zau7%b!fYxsThOl%WtExa@dp31dGQZ zdta}nK{TE#Ej647PP({k29!*#EF<1+eNj$+u3}7blQFe7vDl*JD;!9gUJspyH1jQ3 z^M8-N(Z51ymmkmGa#^m`7>ncJw_Ufhp|yiqh>wP5u3htHZKvh`DwAbIKY_&c%Xgux zVrB$;K1Rn4+|UlXn1+Ku35Z##FzP1Nc31pJ=RT3JSaK&UwL{>Akumcppt@Ld!YDO^ zoS4K87-h)L98-Vi{PaOV#FzjzkHCs3cOVPaV+Ih|G!g^osn_a6$UHY0l@l5_RrWBs^mgE!mfv z;p4X$e_ zV=^&G)g&+by0m&*o1{GWu*)z}de-if=`~{}i)1vM;y`2WNB}waqDdfV(W7=jmPqV7 z(B&G(o@7@JmB~9;reuw&yToxwtESPS_w82(hnm;M1Gva8=n-Dj{>lh~;PCJjiRCI+ z(A}X0kVhS}y77*32_2MaMQ7*Q#gFA@e^@zxkgyrPDr)1kd^G@+Np?>H#wK*Tqb2C6 zPvikWEQ$zJ$0I;jDs!yY-fuELbY^>*CLXc4XtL1k(PH4K1JYlgU|BI6E;03m?iLE% z)BUy^I5lI|1KuEOYj=B42Mc##j_%NIj?Wzh2Qrc;-rhtZQj@R8jjj33EA-Gg);Z_S!*FnccNiF;KjLT@BW@b{6Dis zbU(azb#ki`P+@shik>)v9Ci3WWHuRjwCl1{F%N^ION{9awh4vVsp!JaTdV5+x9nG4 z%dk-EfTAF!9!|hS#R#%Pr46{JuNwQbr6z4$ow7wxjZZcg!09JydOL`ed+Aa3c^mZ} zP@eqp6vsk@lGSn&WoK1As!4{^$TP^j7AOf*?Tm;X1?5`Tpr zuJ8%+Y;C*+SpvX!jY(xXprC*FH5<9gixfF6sTVpGBl)K^2D*w8wp|4oBuXHtI;y;- zuRyG4*dLWr4s%6D|N>>!`sp(CjH>q?tv}; zLQCJ{4)P}7zqkh*2h=#*>@WW*FD$h6lxh|Rmqe?hsp(ke($wTsgQLjv*PX;|+NpEe zt={YP(2Ph|&mjaSEmT|dLsXgea3@(c@{OtuY$0#}y}lTRE(pQidu&z9@)wRkrJ-Fumn-(u`+A~IhWc@won0hRT#5VMTu2Z*?_R9=T*(5f z)cS}Igyvhm8$_egAjhX?harpn$Dqg=Vuqudq!se{J|rixI<;Xbb?CBax{ zFessYa`Lp7VP4(g-EOd>&PPnJ-=`lmho5~v``xR^e?n}iGYUR^20YN%?WP;oFq3RP zOx)p*inZ=c^@vMMZQQ@@bULTk+u>z+n}K-B)spt+klkey>FVa{vbTFLs@SSCr5uUJ z-(RsBI~vGE~HXM~e6~H7r zi&0_kB7jQ@XMfPNiyRz{2CUE3l`EggJf-!pFHUm{`YMYKb4G~ZjMh4bs-dVT^U=u- ze6$QKoj)So4;B{QhDPGJjKEI%WvGjx0BuAH^LwxXFEEB+QCL9iwb*wixz4Lio#t16 z|N6}{aOwbShdvT|N0Fa0Z65h^6kJFF1fpfkJJVA?C)GN?+{zor9X#G2Xw(9WFpFeF zv@4r;@WG|wdWG#ddk~-;ZfJ4huG0kf*8_M3vs@>~ZP6&9`GTl~6`=N7ti@RrvtB`X zbpe*D`{+3oE>x}qzQ(^!5AtA{3$hbT7G3v_x2rC}ZjSS zSj0S<9m+NvED+8vfsQOO{(^F=NNVo4bzvyzzE;&>=CYsWVX_j!>~Z5b#R}YS?-YwG z_GdKQ5SSI#hrp;-)tNk=hu74`ofg1ShPy=V7G3Ew%vJXkB%Z;zaDlt`u#4Zx$owEu zxOhP9&dcp~kj_F;MTs?^M^3VD0W$we_$FB2u%xF1F{UUW`C4M-tcMb6Yw8@QH#vjK zZXOucAMA0bdII+FqOP$S9H?ae*!RJ~oz5 z29?cu-K*3Jt?NKZop3lCB_)0pCBdt*7ZTDCK5DbZ-m%jc7(vtHsValUkT`k!b=N6Z zNk*2yxP`tl1?ZA6e&Y2vAMv9aQ+!>6APJ6LVCBs?xGMwdS`{kmVev8DND0*QU@TVY8z5%t{M#Su3i|vNU7K4~`8(R}vcC@z*?);A)&W1aYtoiOdw(P%$>2hZ_y8Q1NTGT)%PKx6zebqO6p5+JQ{* zxz5OJWGIRqW+H7duBjB|b-aZ_lUmef)!f~RQE>x@AZBeH-s18)`bzuB2oiGru)v7> zRh3m>@(x49N4#|^m=5zYB3!g`2jmtZ>&};J#fwG}-1sJTKXNYwY0PnkwPHfuwAhrD z9~#0DZNHlTQprTU{YIinV2jaKTR5=1NwLR={$u}3xmZw|hlE*hTS2G!WGS?IID_It z+h>y=-jsR}C4R%3)ogvppmN1zxNXHLwoF5_sT2wL(vDh>HWvks=t#LVPxhsYI$-N9 z$}M<$V9f@&y=#^2%-Rx7nIsuUY~za2aep+2D3SJ z+AAHDk^R-VYhsIawz)5TsPJcY!lXPmc$mzV3eg8^vcw?JCz{m9yA~8sq>lF-DT;Qf zOW^C?=`hobm7|z(1!pRJ$zp^R2+vwoDiFK@+4AgY>Xa%Q*F$~U*<#P&1H%zJc|hgR&|MT zhaJGeurNO8W|cSI%WxFgC35JukxpN>z%eY(P{Q)0UH|G28uub~9DR_jORi5(|Fcit z`E>F`1J_mwsbqO|Zo-_Y-|u$-#rgY>x+YUTf3myC&@CJSQU+;DCsZ)^w=1HjzMElf zw)ohG)Pd`BR@qBbMmVxFFZBE)qX94fdTu+%KG9N%O8HTVTO&(4>|ab3(C{c5{kzhyGgTYw0#IrO_`|R*FoAgP9D40=|c0$kt!~@QImuP<4d7`0- z_07!yY_`9-ygZQUllj&|Qvo~^^BW^EPiae~y}FOTzYk)P#n$wNMgjHV-(97l2`;jp z_qUFU_Ma*k#ucK`CA_>mGlW%(q@cs2CHpw+b%wFfhC`ASmH=p(|7Kdki|#H(<9tm< z_Gz8$0Pk41Yt?#|t?Z9_dn4=!*(r12{hpArx-lSgTn(*i%CaeM&N{X@#xJ)APZ_EsGqk5i4zahv~X+O z+M-s0k%3W;HXwTXD*L4;B(vJW&%h#8-3iT)Tx%Uk=HH~62wQ5P#t8|}VB2qoIK9Fr zWKyABo%i#wGI2`*$F_BAo_FuGN87 z$zC}B*33ScB1UNK1OJxn7g_PXd)zOG7TUn%*3OQf_!6a#X>e{U%q|>Sq7{GBkI>Tr z6hoc1Gey(BJDYl8YBEb0m@a)tIN@=6X;*w8=-++N7v#RFrK=Y%bPKJiusCWmWB^6X z8h|D1ax1yAgzu7dRJziL&XkV(LxD}vxMCB6(cWAtcMIIc3ceYSU@mOmj0d}fav<36 z(fg&z_edG;SJ*Q42mzWVQNTDKc{4$WS3hVXoQBy`c{pW-LzMYrVnCEiO?INeNF3u;z2J^LK+y|c!zlgncRyNJ>du~Z2S&NQH8sv~+H9TfrHeqW$q@CudDXP5 z#MlVMRk7Z7z!_U9Cfnp45jo7FY0Ug!sI(A#e*q1Qh@@ zor`R^;ggC&SK)F*jv53IGgv*Ha>=o(d^oMyv+nqIy6F656`jg?Ev~cKrW0m_LGN@wX5sDSQlLuDj-~b!e0_?VtB~Oo9f|RS zdLGY3qzI=h%Rcpatt~pVaNA+16x8ByyFFHIIY8)59L&Spjs!YZYdn9v=68}tI3?dI zQ|Xesdhaf7|9j*H&#m1uK~@+L>eOyYN8lp! zswCbeUB99sVQ5TNgR77s-fljLm|7R;ppoJY1-B7EN_O#DeELFbGX9-07EKA8ev^6i zY_RNlyByNa(g~O*W#)Rdw%D0P@MC82Nv+HG@FD{!Ju8&0b%)Vw&|ea|A5g2;r|TZK z@m6fz-vN_xeQq|k7XIrvjP#wTrXdivs{!D3LG#}b{ratRWR6zHb40PNJoSZ{@DZXyZclQv0&2HcM6$$q3uFz9Y&ww!?m{vvPW?cE5e7vhRYe z%3g6CjzeHq)FW?(J=#!s1i|>mfJD^O>B&sJT(&RY-IaN}yJ$)KUKqeS-x<_EVkRWN zg5R<>s%7fOOkn7-bLPqj9bWAE@|~(&N*mZ)!EqMlG29oNEK)CIeN_r>8lz&)e>F+8 zX}vo@Y|^FZK&2`|6~7soBR>)1dbz%#nl$3CqYNB;H|;h1`qnLM6FgosB(C@?F)&VB z?vn^7>#Ei-9iLBW_l7}KE7=B|RDfoZyf^oN;b~!`5gIAGgv;e3-2T9nA9q2PJRr(-p%^=Ry!W#ggx zZv&uSZYRaP~n>8?tr7v|piW~F+EZ_aHT@uV1fYW8q>KYH+75H#`gRvFz}<2qXeUHGanzOGl>8AtVIK$tD-m2Z_#kRJ zVz+ggve5ts>ejbrj%OR=cPM2lTMIk#Zm!YDCbQkgUe^7W5(y!fsy;-V zOkL8l9QtN-obfF2mi56LgjfDc7^XhFefaCfzVlmmL2+j$gz*Zpzu7&5P#5W$U)hhT z#=%((X88Mks&Fn1c%6qjXG;}<5z9C!DX5e*nO;i1?aUnIIfDh$D?Pf;T6voiOg6mR zENQW=F9EQSKIzK|*n2->iW)SS)Z~T9H(ZSj_C0oJxbW!dh9llcj997I!n9H6SvxpdT%$vUcp7RdZRezrOb8fRgi9eN76J2yiN<@0w+=SiG>ze!C!sBErllaJ zo$iLuhW9KEO+rJ~h89o2L^TB>Y&8{?niAvpsA)2#&zI&kbR5p_lu8@Dv>BDg+7YmT zl*W48Mm@^Sg=bPqV?4|X4yfDB2I^Y?H@A*exk-}| z_SZz^e*({cor?cM;eP_p{}XuruLhohqN$Qy)7A=i_iq&D%@n`a-KTQzNEDA;cI6&- zFYdK3^{Kyi>E4&mObyfw+5SQEyFJ$tU;c^M!N8y{fS2EZX}qY6kI>^;Fz?myIy<4} zWBZ|^#$=6d)IFI@-?7c<1HtBr^<-YTXa`yuJ8RWu`M{T(7X_)qY}NYS9?OdA-rb^= zIwq0nD0CR5DirK$r7pC$dj7igjF#c;u5|wwTep#K-#8DGfW7^Cx{T@bj}{_>)N>HC z;a^(jEXG*NJkjfpwre;dZ6(?H{1O8sPZ3pJSEis0L70WLs(K+|VFXwp%XLR!C-%f8 zw}ISRA29|r&>J>rwcwln^~$csm*Mq*+i);Mryj`}Xdu=@U6P z#8=8H7H6)Ifc2NN9Ly@bo-SPEYb?EA`t_j!PG;(MzXSQujTi8Jn3@)fIYG(g`=%=4 zV^3p#&=kq5I1HP}kl%jVcQL)G(cv6Cn)Z5>w6^TXY;m6GOJ5ux*r3om_>N+;P0`rC zclK$zeTnX}i#cZSo+7}?ca~t~=ly+gZDQT0ApfYgasP9-f7`u2ZB3A|sZ{Z(d!?yz zeWE#r^YYbdd9$H;;w$fwB&_e5@5%Te7&@V%L`;@0 zx%@QON1UtiaodnE+8L6)ehnMM9_C9mI`7`u_4hODM5t+ejz#ZSPqFB-`#Ur8mk^I& zi4C^ml;k3~PchQ72pyk3=T9`%eH?9mg+Ngli@N4>r%QwA}1 z(-%M$E&<{azNP)p0XBp$Y!_9f^I%@t+0;586#B99@7Q}PL>hI( zrLNR?=&Z8-sviiiCJgpeXJS#9Smpby7MI+_GYs8tATgNx&ro&W{rvb$#X~`zR($m4 zX7NY2oKlvWUk2R99S_;M_DKJrNwXcq(1PH4bSh&@G1>%y^FdvK&BWGH=9NvtS?{S*A!Q{wK zs%&*gxwmo>p@pG(Novq!dP3t%wGQDCi!XNn=f1AD(T zUI1=L7B(*A*LA|j#tR72^c?=UAKyE?cdnbtpja+!9aG`^>ikNw;i_d(38uG;cp)F%Q%C^_pIC>vpA>7M7CWI z3>1S{Odd^^shCEZK3Zb-A$H=fTVZPndtIiMtL42S1dW`{>KCLX4;$p)xba zm~*5uN9Xbe3B-1ZVX2dV=xE^CxnExLJJjBcUbNxr1cxwwEVf@m|4He}rVpe$23Dgx zi7RX$A>a8Px+5;*VL@kAq?>A#q*W&ZPS`ahBlz#~yIOM}?S4xcfbTP0umF-^FRp6d^2oGp_}5$J*60 zsxX#n5p}gn{vMI+ylHyv*o2p@cRl^^q$!e07%>}bi>U46@Jjcybdp+fh*|?mN#&pd zZ}Y@o3Sm4F!aeeAo_B_5j zV&A^8LheL))8z(1y~BZ0?a{rZT+@@J;4`h5<1P-6=QS+pMjM>=r+=+8xpQ|PVvHf@ z<=1G4wkN_V-pKtPm6n#% ztmoYtAz&SEy5OaH@}a7n)}S3Amy1DvK!*}SQ6_#!Uk(u|)jjJue~2L-t3wTBsj2Bm z>kp=1eO@qbYF+rOWwA3duc;6GhjbaB#;-E9_YsWiY`b1A&tMgue~WT?3ERbl?Sj5f z4Hw_k(r*2Tw;;m@XP)!WcDoB&_De+Tbjm9Vrj>=|)7kBD@P@+^jZT&O@P5vE>h?bq!VI*$KEFcPh*!8vt;3@KeM=Vb*n#1zUNo;eGo3qZ^tn z;WZ*FjL?pbR>eM9I(4ar?-nvy7eDo7JhCS!SV^R?&jk}y{ZW<__8?ogWxIf$N#|!3 zvr49~T)-8(BOI#+2$}saHQ0i0axM%q=Xt4c}!q;;kB)X%f%k%k(*}W zH57Wwj};Y;3RM4bfye|Mu)b35*}QkLw+Kp5F5?@G*@wU9{&de|T$e7tP~yqiedKfI zf37_Ek@mT7-+8hhz9DV&i~3u{2cMhklX^tMBWm*RT9^J#1m|38wC)Q#jI09&g|t-4 znfT7kZ%EX=IZkup8nIZBWV(FM>FmJcHgHFPturMLn)5Y(WwF!HTyXAQ?-KW9i}dU!93xD$#X-HhF75!{VFREk zTAX*iC5|`WG{h=Sa|vZ86KT^EYaG75zZ=*u#IOO;UbFTbxsnIB3OPkb3>jIw=kuzQ zzf!!xk=Ws@bw!)Ws5@Z`)2j!SpDI*GiWU2D3eHh)%aef~*g1%8XRV{DO=(LPb^H_o zxd^4Qjs^nPpIg(WVmNS?*PAs z-jGBbuQ0OZo6qrjNSok(SE&XJW08=%Ps@6*~-Pi|po>A=d9 zwhdgg29Tb<2j0(`?2k}b0OsB$m}l^)6*jj@*aNZ)&;r(mvfF*rqG<@@^>~G`6{TH* zsqku*LXGl3;x4g*u>+)k^=w(lhzuWZPyhge9u5XZV>gXt9+yv}^;kHZWMOz9ROK2% zAMbPa=C){^d&gZBj~b@0gU`JttuKvT#F&J&VC>!%z`Vea*Rhat$%Oqb79ltF)~}WY z%nVw%`lAOu!3dE(5nZ`yl9tqq>dbq)8 z=H?|>t!3;^&{+;A`zLyW%>}B!P%8KVZjugy@d`39^GG#FZOC*tVmp@!OSa`x4tbco z{D6q!S6ER_tQBC9w0Lk(p#!v5{56t~hmpiogtbJVHOfZEsJ~-GEohm+LRxI&Lf1X(oRBq-HA8jd@RJQ6oKITU$ zDW)V2EVNC*lkngO_ zYuIkg37UnoWZzhD2P*VvJSOnE@j7H!eHqs;fK5*o-8;L>;581BfyyMdiANaLD|q)0 z0!{N7%Hmk?DhYmaMP3QZ>{SOCx*s&}E(j=~F*#~r^V1%--KUvhVQF~3!4jzz^o6?l zq8~Ij`qEsn1<13#ug6kLlt9G&s@lY?Ikp|=JtCvU6oE(Gwf!VBsB1^#2hH}>o^j$H z6aHMOt(bV_VAFEj%wEHWa;?507|6qNMqLn=J?QOSp{E0idv~?nt^r$=Ug$;5xfRFS z7N84bZQ>x}P_tV2ux={-@4InJFte^v-nbD<_%d0W?P2v7pUI;FQ;sZlUN=nD(j-Y? zrNuX01FztStpzV1YT_l7@NNMfi~f*|K?a^f=cz$={kX|_;~Ibp#N>0O>> zv4dkygAUuvciv((kx?C2Inqg#HU_&#MIf^cbuaM!pvjSrau1g9u zV3$MCn>ndFpA%@HkFV(BtYzSv^GM4vnuqI~^TPybJ=@W?_8WIUGqA#N=()pcbojx}D&gNFPg~pKx6kO1 z^@R`rv?G20a&g$>2Mwlo>|5oH-30se{2b%Hvl2!7SEJSgdQk)41<&tS>@|jN!70y9 z`;>SzgL~248c>}v)6g}^A$>IZ^h&DPC~{4nbzc_L^@SjG>U@xTu&S93l=tq7SF>*F z*T*FkC;AAXb3@7q-m=(vr$TmWLIZISv;gn+klpy&Zs)^zbr(+PD8!4M~k-X2hGDTB~gi596apU^tAZp!VyEDUwc}qn#gw94QtOh zs^|2LA!4ul7B8)0!G;Cz_kL?O8;j@_NI8v%*vP0@W<)i9q}kSH0AQCPVvf^#qH3HgAE zxMJ8@%M{;r)h=M&Rp2b1KUh*~LI2Z^48hSVdNX*LS2CkiA$O|*p?_S&+lm%*$y@`g zdw{A__H=vR9Sb~0S<}*UVsY=~;+8_BFc+X}KzIGFeV6FWKLy#juZ&GOOG~;b$~~ub zaYdAruM$J@!JZlphZMX%+VSAge7?Ke=|tq|d|)D%^e68(EE~p_wmVv9V$XEeu)A(- zOL7sOXV(j+Q?M$G`+VkP>Qloh#|8i=)YhR+f1K z_=@A`IP7qugng03n@sgdz(v$~M~*9MI@E$E&7+9ew0NrDZATwbSt)3Vmt0fP$||Gn zmUoG0xKr-DZP3%Z^=OIXd}hr%zihtrsChMNcYJ-`pXxsFYU$Fh?(U9;e)tr1?f1!< zSJ7lH&%3$0CAq0vrN#@5>I5jRnBwu{`K3C<ISp8xQ+nbSRbyitSxedbV(=7Perf452VYh(}q z5+qdVrmkVaPRp($Qgfi>n$P{rVxfibedRV^0V=Fu=&+aN{y8G>uSzuM`$-|s8Ekvi zCwIhVoY9#L3?j+DhGt&scybJ|tNYaUrJvdSKrzHauMiWb?pQ*9j!e0Vw-b{u{pPQ; zZ7_w&&eh0~trn147IFMED<&y!w{oR4vcsP}sM z>cg(WvCIf!Kak!xi1pc=x2e~j+PF@Q zq-~F`pOPEbwpROC<-N%@>ol$hpe7tW%RM|Sn^(}1{wjy_H97(K>c+zqgJA`NVkLJ3 z$M{q5{UY=$q#+RS%paOvY7{Y2$ND`qRPU#m?TX!6w)2F}sGD*;y=8o%~0dz&X zTuom?kqReg;4R@W9}z(E3j5#INy6tjf$bleH@DK;c`u;_ZOCk{8*cssS4?Sua)LK*19wvs1DKHSa?y4fmZ-i zP56vClJm6q$W%_cHr8tG83=aHMxz4t84Hsii>Tn3%*a1z)+q4w1-$uza5|X?hJeA! z{G%2;U`mn}^tp~y{A$%GTLwH>S>D#Tct-=n7w-!;3qKKNEUq5TH`;O7r0H|>k_6?dq&ELI;FT8fM{(9JP?xx;8J>B^E2Kti-r(Q~_%FO|yum(tHKgbP4p%2%uYdl8BM%P`m?u%N^2fFyt^P9yujR6 zw6##>f7H@`A(HqKgX9dI5uU z4MvynF5CeZeWnjsSVuAF{G_uO3nj%EDeJsp(Txe^^N%W(6jB-#Oy4Ad!^M3*igxaj zU1=eWD@U@CTB+2<8Oy<1=F8l`P_YCr}7Qcygy zFW?qL?A0M~!!lp(Xx=S$ZvVwn399>R+(X;yKCLH|Y_$4#l7wFGs=)4VBnWn12fxs- zGIytnT}(K?4Q+3lrP7@;C*Y5zY7#B@;{Xa8_|E^2z3+}|D%uMT(e&&;rtX@7=M`i*yK0K}r$`(mP1U(1Z{|@1Ymz9e?q?JHou*ow?3^_rCji z@A4NroPE|_XPtBQS$plZzF#7_vF%(kld<3SXuAKP-Hhqqg&EAR$J-T%J!TeCGZ?fLe@LNkMEoug%Z~|I zS<4v_xAN_*!$^ZrdB-e66XWMdSMq^+#n!7Wx>IZ zJ@=u}777`+qbWiCIhe*<;H=>Da-u-yNG(D~rY@JFTO_f{iyy)XtW;BGXtQaAay$~X z>|*EaAQMa~-G@qzDL_F9o#gMt*q_HczEjL6AhMDuU8X)aclQ(x>_)oAF4?4u8yPA2 zFP-Js2MTvPPR>Tv4cBSxD>CP)N7vOs^|9XB^PG9J+u z%8J-l2CYy=RSn?wqo;mMpYCXD%VkUV)N+QJtT*|m!_5w&xxHRE5i#`dt28AhY`cuY z((z0ji6+@Qnk5G$!+R#A_CC8lXXo)-`bBH5`)%9rf1o1bNsVQou`SM-;`5hM;RN1!PCx> z%Sv<7Ww}v^-pt6Tx_9YW8fRzET(p=o@@tHq@Y#0@SZ7`!C9~?*6T+9RN-L5@ZBVe1 z6@C>{xKk?opq%mIXEoys->8JdNC z85P+g721r4=(kvP(8^mG&~d5-I6kkokH}wn(CmQ`&0I9)4sBG}jB7D--i9Wk(i?)UjV1tG(CcCF6ryeCGys-=YpY{vy69B z-r2=npulAL0|^jwbLl}d*Ct=rQ@Kx&<`!BRL{rD(uzg>+Fy;x>( z{(*5}Y{UBxM7o+=SCL6e;{In#yb>@@ZAQ11M5~^!YZb`ZClv0a=OnE-ZF}%=GsL9Z z<88+a$d^-tG^{(?3V9#>@X5k0ZxC^Zfj#Z5{Ze`<$o+<@kfYQ_X_&_#Bm@5-qm&7y zSx2l)q-u9>ZsO|02s6xEy)ZK|hA(sv=tw07?VyA9W8nqJ3d1so;k$H(u*q&c1L^8b zuB!UTLLW>vhcd%|*J|en<6-SCwXq$p2ydVn)QW>IpxM&J5>y9bY6OJ!J25WhR@bSX4bPf3n zA)kMaghV=E?dmPSxGReVaVr&C3*7}YT{!188KT#sMs|76|Ap1Xh#EDuz6s!iJVbjixpjdaQFK+eKKFtP%~YTAmZ_u|pPiEC z&C4eq#2kwHvn{rTGLbl|ef+&So``c27QJ2lUW=uqYJvHm5}(xW+OOAe?onvAh9ANl zV4r{RBKy4LY685VXrEnC18HYxA9@CmS^HBXpYWZ}TDH34w4x+aYso_&S$S(r@!;Wf zk43%AFDnjclews<;GJ8HZFc|~ML+)+$*0;g>t=rOD_hl=8FD@EvL2Ighey!U%tN$| z*>T_u+GY0f%+RG^7l)A(t3`bO<=j8@lS)Q%Ev43@y|NhKK`lEJwfCWK?;b zL{i()PH%3yY!Gk$u&efkM1)rhheA`WBg?E#brMEml7e-@VkYV47?6mkaW&^_$Q}U5 zdhk7C#*`$&u5*a}gj#zXF~eggR(c=od=EPPmc4V_o&j97AV(*0M(GZK9s8@Wv%W=3 zRnZJ{aqXb~lsb*g;pPyB)+xlA!UyM`kR7iTs0r!TF0rtx1|S}m_3KFhfM*vU8l9D% ztpDl$te@JIhhlzo=1>mSRbmkWv4#)1%w!Y2@hP?-O4uTIO&AiXx>4(fM5LzIwmyPk z5|d@HiyU3;%zC!dVf@*q*^6mitMe4DlG4iWtkgZjq`Ml#97B0oYQQZr z;3Z5v9@Y4?75{iB z$I)^yMV!0gRg8c|#706Dq@PFeh9P5vkYj0b$K$LlfA5mH(;<2>@f^ZLj%S=5gsjc< zHYbH9cJV{3TP_-N3t8W(2WPjm@@vBMr`FKG8yeGV48-mfP=#a{*W0F3mfBpVbY7cl zAw6$dS;XG?Fw4@gtjE+shPAkW=Nh)X=w_mliV_<+8MrOe2!kt(YTF6iY(WMppXTlC z%^0&FNscm5*qZ4>A~%z5n1={<(F*p`W)83}$ouX1CDmMxF92q>%FKESMVYy@Qsqt? z20MlzJK<94;XQWby2!oKa$q^@s{qOr4imWU#Ty{lf{A-k`Ptkbx*Z;mBgG60IrqWF z1@E8W?@6mM6E~CzS6BI)2v%%A)^!Y*+A^8+e(p5S&KaUBhCJ3Sl?#ZJ6ijoQW6CO1 z5sb{?2~D=l1MfGhq5TPCII*VF1&iva2pJ+$gq@+p`0PY`_&@`XnqoePW&llyzZUD* zx>sL5zFS5~rD^yD5RSE4y1_3Ba=aPpTrjB1iu8q-x%9E7`h{&rMypi#ayu(dg}f)w zFK^J@yI>JM_)~CJ=Y!cq62yi05U8k286pi;4!3>%;MVdELz^I}6$v>?fn2^pdr$A? zOO+)B3I&Z-ZhS;RzGDlnI+`;`lP^D_`1zpNYRj6wjZ9w*uH7!$FH1@q0vVIK|7Oxh zZ-6A|=?8`C;{a2D}q({^%cnoLg1 za)POMahjV&l(AR{st#Dm22CRt9mx3C`Blu`U0uJDmUPDSr%3dmD;p(RPdnKdRR?!L zlH9ufhP__bZI#p!1+~Q(3T=-jluKb1Q&y+5i2jo8XvV-; z+r`O6MFa1~ermmaA!RIBEk1yE-EpVN#cAD^SabkhnWu4bx}|b=*sfvB49)E3&*Wm; zAHSL#2v!#Eke4hnI^#gmE|61z=~p`gyP?HgqNJpJ+K2zLB=?%!O`_ny%rPdw4ZBmGX;qnx?0{E zjv~FBKdRgdxLp#!?~r?zrPX`RE5(4$uUobxP`9LXroP;_JOJ@Ypu7)zURR7`5B_l` z_7-CI^#Gc0`7?O#v|L<%{!FrItNNfOoL{}m%n43-a`y*sM!TvVe;%R!br=z6J|UF6 zIhs=>hf%;JIX=&~xDon|zDK65(KB24hf z=Rj3;f~#;DdPsp^0f&G6{8=Z>-Jt8Xtr%p?qJy;ZT(fVHqeWevO@o|-zNkuDac~@^ zPUc2N9;j6%-&Q@X7$*{>8u+kS>(X0_jCx$hEY8--#zvUTet@mV$WT~sms2Uu$vJ~+ z6xF%@^K=KQ0S?sdAfJLg0MIzMlKNHnA`ciTAjK%IaZdpm4dH7Yu5c3^GA8i4 z)UZ4yvspg0ykjt%_Z}zvljmqv*{+Pwo?&HLAdL~jtTwF25N3I^)bs=54f;=R=djxnv>aN$r*LyS>u)viJ3Zr5~W>Zd+#}uGQNH|bD;Ph(1VCtyIypq zck%&hf#15jvk8F|P)!WcoxzWr+AspRh~TDvX<0L}t9Si)D|jQM^kWRQ8)GW6bUaJi0hmirlG|)TB4=3B5`yimAksKxnqV00 zb0nm>k9|3+C5~=Hy;+O8LRpjB_MmA;-L+{J?R2e!>czwOx=sN$2LFt1L8!6+6o+Wb z8+Ck%X||MVg&!Kl^968i-Abx`p~as^nNb9;%NE%>?ylp~a#7oeF(ewW3KSYNeC$!8)q0bt;el>^c;m^>gHwfUz)ZUik=+b} zV}b{tSO)NVF>xmmm-u7tRQ?NxVmF7rn$ZB)9UEHAj`$%~Oh|R>PnSg%Jln`p7 zK~?llXa5<;@JG@HWlw4^S~}4jRP$N7UxIm#Iw=d2A(|ZBCF9G0=Fw4|Iu{Gkg_?^w z{ENiu5r{yVsegf#G(1;@BgM-URi06n5u|4?CABI=jw^A^ZspU>;m4cC_R8;+7=@&~ z4e>BtNQ?0!ctFikYqsq(D+XtWAu#KVFeK7Nd{#~0wq!{=K@(XOQ7-UHOG|Nuxy3zi zt}WtM1gfQBp3^W#aHb5xV-1qAK>n9@_0i@~UyDLh#vBS8J6sJ~#JLEkmf}PN9D_=C@Xs-d_p3%< z(rwv7myMe3moEQ2=RjvcOsF%E;+V_}BAbVpA|1B20HtI@I3f7QD#JAUD^)mja#^JpMRh8CQLt|GmP+Y_RFa z6g?Q3Q^!0+3M(zPe70y)f|^L6cUz122B6eA+s&1XGSbOVnmBnGP~F zdKcR=5JlMR^AXXa3oO=(aE=t{b3GO>1F~Rgn8-|>6NWy01w?NUC0L}ELmy4r+0Smq zwc#(f(_>7?`X%3DWWqaP7SHcLB^;>BM8wQdMwVr*{zy~gbW5ll*`UjT&S+*&2&Hua zx@V?PAjUwKcPyMZP{6jZrTc3J3Ky5VY6x>cVq%h4!sRv0sGopyKj*Dm8*T?2sYQ6^ zanzImzER1h2$I6*rrJxsA!9rx=;qL3Ym*i%rLygN0eI`}OsAdY0)H#j&1KUNbx~+q zw+&Cc-19yn2vz{AN#%wH;~wf|+^B8;t*D^OLre|mCJ)P)Zx2-UiO?zF?SdNx*< zhsqF{1<6WOF0yn{Ql=^}%u;O@`q;BF#V~AJOWVgYNgJA#oeySdF~h3J)k~X)itgic z+DvB}iHwEP9ZElQ+9YE7^>k>?YwEeC<_xokQoQc!mX#$|EO{=x{>WshSdR@QYXx^e zvTThLEl(=2zqOd5nXXc>lkRgurhCC%o))-T)M2A+#FS*M6WcXz=#xxxxp*|@uNQzB z^E&nu%bqkf>08y9hf2~?=RSa&4zY1?FcpwB`Gkwf7Zb$)22B+HebNe(mQ zWXVQ!Xw;&hL4jtFrUrCy$0F1i8Du^|;!gQ2fI6l@7mahAF!xKCo(!3K)VEC2HLHB> ze)6Q(I34o~US_iH@rxki9FUUUNHUzDLBVC^MM{jMbqbTgk~wCYliA@GP`5l?;2WD) zbEJbAi;g?+7|Qdd!u@=AlRxdsUaH>!9(r+RqEgV(z7rPtEn(3ER*774`1uer|G*B^;$@>S9N6kq*8wX^p5 zNOezNt!G#iI%l=8*VY@MYnsakV84QH6YONAlNNUrvS&84 z+q}|P-OLFvj;X9wK8CP z$p>={R>MGH<%I4>tqnO5-2us^9d==|{F(aX945^1i>w7<0&FF&t$Km>w8feH)Xfw< zB^6+KrHWS+3KY`Hb*PP9&7!*EwCWh=3$&xng9;YBS@;JQ(IT$VIUU?Z zVsxTY;JWD~T5sfHadlKlo&fzG(3j(y9@1`R%ULxHi}?cRjqye1Af>WkWS%ob+&WNW zUI*G33R>`~;kXS(2*GYA8y9Jvl7(uv3gfRWDQXLH2eYon0nF4P1K0qttLXl?PhY#KW<`-f z*Y@pjCG zkhQ>|GG71?+Nyl{ z{#nwXcr2}+gvy3?8%vH~8xuE(JlwqZ0(PJ zNI}mVzp$X%qwEArX1iis8ac^SJl|TVa=rirvw6i&@4;Ja>RhtHp^MEM!_;As*_8%Iru-KgYiTMo{LuG(Y?(@)_8+} zJj)3gwT6Ll{6&l5uJk7vZM0eViw2dT1=uU|Ex~KjwzUF*_Y5+kW+2+9GXowbyU($7 zr07ZME}7NEWdvk1!F~8d=|=)BxKC)(24*@f+F4)|JsUKyBS)ONqwTz2*e=eMF7OkG z1upa_txij;qNvNFSxpP%8w=tMc!6AQMXgBRps)c)aG!wr^ZEjIr{~Fe7qvP<2TVpg z^j{H4DKdhnB3q?xIUN)xw3^i+Jw>b=(tWy%Nbu_YUCw~@lt+q20sGMuqsABfY0(BLn zX=T@t8Ttgxv0EVNIrBb6SL#6wvWpow!-l((=D7)VwEzlZ#{VjjtFwC z$d70l3ub{3I`|-B-9MUYX3H)zNlh_FyMeJ%<9Od^9|Z2u+zmW4hesd{ zEpb`mSqI&M+^rasH0Ow@YU;cTPv<8}VLXmE3RI^jY9sI5O(v+(^C^a!vPV*fgent5 zp0+dSQl^bdZwvN!8vP3W>x;?-UEY@VBVB5L$$Xok|M^jwq$1w3!avI~*esMt2qUeS z6MRA@Fgb`>CA2$!GJ&`N8nfFXcQhQfTc2EGLNN(2v^gUddnB(tR-K9^YxD1L4vvzw zG4|b2kFah0*c7OX+)zSYFrUjclpNzQcks;<=P2!$>_msrR*XeE3agg2gubrpu9PiM zra*iy?x3JW`y{+UB(#mC#TE=lZVLBC5O||my>czL(#6)91-<|Zxj#7ut~V4;Tc@yS z3j17-qG6v5Qr$rqsAT3@qW!x$WNG+Ojh`VsfyJhb7N1mEMpM_|ts?^&T zBZEVQ#815%92@`>MibB#FYf~G`PK9`sK-&wbf-Cu!|mn_6hK6-w@N~eBQvsr8oeHX zdgD(MH`tIi&Zlfv+}O(e&Q1e~oc1S3;T%4V{mhyclN^(lFzv#d_-W9V)687^b&p8Z z4?TD46UUWc)?s6LDqI;GO_2m z%Vn97%qcDVQ*l(|1tl@Dgh|0~*%TEaLL!hC;!Cn7+>| zlNp3uW~2aqYdMU8B0VjYbzn2XcoOv)+(=g4UX}%Ub{;(PP2r2fzhOIhPkW^3O+2;u zb~0?E>V}p?WAIaelf}2Q{DkEOVmVR zZf|==?&m#PP5)r5o0FRqHfPl#@F$v{c=|xCY^QXfS{o2VXFh{Q^5POc1I*w57oC3R zr(F#Bcmu;y7F(Lhg3egt5s*B0tkd3&VAHA_iKkrO0NmG~{wjg|FmF5MW3AOtx_{fQ zvI|DTn326_V?65;^K(?}&xeWITU-*(3xgj?V|<1n_;ESaA;1r}K}V7BMN2Gqc^Xr&^lhTu6_NZEh%WNn)moZoRqZ!@14C7+qvOt)r zyU~T80JHFC-_H8lI8i#~NW2?j?}3-jR_O!)D-*p-X(kdw4WK2<^(@2)1jg4tjN?Fx zcrUc7d+Ick7y9gwLHX^h=E5mq8;Gboe;!51G z0mJwefmiW%yQcD>d=hkrN!4f>B$rcKD)OQO?K>#2-BeI|*f!1ASNBbK*^3<4b!z{a zwo+b<3-7QI1&)lbZvORm-z??+BNga60 z)$jU2zA>1fP;@Z&W<3UT`UroEy0H?w&VH%uD8<2fwBg5R2h5{GYn`r?@iWy=C49G> zD)o_R`+egUvb&WE@SoLXTd-M-7HKMx40$aD$qxabyHB_KlYHM9xX z^Qk?M_vvNWEIvCS&bXp4{;>zJWX7Oxe{UdbJLl8f!M6iVn-w1Q=|G0?^wyU3i zb|~UnCUGb`*NZUKNr6i9@saV&J0cqJ%ns5!7t0JTP=sIJMeIr#zAag;68bE*t@yDR zxX9?{Q z%MXEcWJyVlL$om-fVKdEg*JN-S?fhaGTae+4RBKC=ikhs$25fh6dJ!Ri6Dt$caPzh(-}> z)zvX^rX>aKw>GzeDHEMtL|d$M#MAoEI^cI&UY%6x|CZ={liW*T`w`g!4u5n0D}|$6 zoY|i9N7D0H?2|~fBe)U@B}+FuTA?F|VCEM|PUR+quq`ywwAPYX{fgt+fI(#XujD z818I(m;iZ|%t+zHQ1Z*1R_H|D2P-guG%@p6@h1-b^zfidy%J`1fF*E#k80l-5{|+_v$2o zo&1}mKixQel#-Pgjr&%(6a^>8sCro@7E5~(14Fq-7Wmexq+{arOA2gnP1+(ii{(lP zH$*=HejGZyp6}7(Xnj({QLfgEPvVLNtw7t(j$!GP?FPUF$La5pccjm$cScrnfeHiM ztFN0jgowrCRofC@0FTXL`#V#}oi3D5+yw?p>{=ZteF1dQp#}G=y*Er}5z1Z|fs%A2 zI0i5qHF8AS-)B_plG1Da0z!-{4XVZC8ZvhO}``A?f1@rZ3Ua z*cVMN97Mc(hxE%8_TL&Br1PCba@gGFVE3~>H{ZWS$2R+ix^#EcNqik0 z3!$Ka4C^d=2fnaeXYCD@w@z9(Y18R!FpPpc+IQ#~KabFW;$2-ED%Q-Ryx90sHLNt> zf6Uvlzb*^@MQn33E~ydJq{8NFQFLBrQKiBDsT`x`kh?!;h1;~^RX8}7g`Fc>N>6WC zY+r{FT$9Y-+^f)gIBuQqBuZtPmiQpnR|kURh@bUU8a#aXM2>bB{MDOoEdILfC~-LZ z_Z&J5xxbvMb$v8Pu|KmQ`ii(+O1}AXVrvx(XL&YgA^6b$zIjzLxqyVPKU0q%H#B~vP=bw;4gsrWtyfRqL|6u zsI={?G;yN6EmK@GX>eu^y`KO-H~l(e15V(0jZ(Gle)b%n?YyQ~Z{L!h9}%FT07v3KdNfD^Qz{?ypNp{1(Ma5SrTbONWo5J7hr zn;P0L`3FZmfTOiaQ#i;d>^u0kL$Zg+?@G9f-#7>)a_Phm1($?;7|p1~dB?(?*E0xH zkWplv&H~8NLY^>}UQl$3Z1ZJH$S|p&SBk_O^U+h|D)xhSGWTaiL7NTCpV}3GS;f>L z<*fRiTkencuMt7~89v8`?v5_sUNhR)ciIr0&D+da5FIC*HcCtE9=IrbR91+yeAE8t zt>_)zgIv*F`gOJ4F2{sr-!)#Wl9}ZX%uDBD87mpDd;!RKb;}+dg8nZmC~nocUYq$t zb%PHYJybl`>C@eHffv`Xef_`q?$#K}F8S0|btJ8a{$>a-y-JjXYcRHwhr!#`WWnM? zoyRCI^JeXs_H_GB(@}#|e%$y5dK!+U>{y!#zvL_Mw#gr9j!Y ziEuX!YaYfU7Y#fje`($cXSAf;=X7k=W3&Emds@*;e|@iX-;h;d9ChhjxfZutzh@cf z35YAKLowXit_Zxv-R;DhB*)&7djT*eZ?oYvu%R>XzDU?Eo21QzX|?SO;6hnN38(m! zgFRlmR7nPA@V>xHr9hZyxn9JLU7u zL}=WryCrn*aiB+BrV|q|Jeb4OdrpB=6eO)wQBlp4iC5t7;OkmFrN~qc8<5_04ds!S zu_Ld@N?dDa_X#M_LK83!cD_Md3G>^+!x?~L%V&Sef&1F|Ecg(;(lHNtm|ebhBCpxb{W_B2GGynboPF`&*~r_w|KHZ%_Xz#oKL5%jx9`>Qd;0y0 za?-v>weRoq?+2**{kA#md7_iIC{>1ak;-;K^|V|Xv=3m}8PWno6yuk6*3?KOr* z#{D89BIg&t>?J7e!APwezXLd%_Zo_ivP{S-NSU7lU6fT?7G0xQUd+gi#-Rj@Cvzh zeN^4m^a<)niQ2;=Ac000xktfMXKlAQ2YGrjQt0=U`R^Q2r1e}EQ*r7GXnPWJgqXwP zjeELYe{jA~@OiYs37y?W%f$!ob>gcdhrAq6?I3nNX8?7@Z)&%A%x`Um+!f=`T%`u3 zHYBY?4m*Lb*M7DJoVWk*-_i3A&i!{xc=`i#{O+Ou`9#y-Rpk#4{I7sY{=+NylL!B$ zyY+uk*FWrj?ywS6d1AC^2~=<7kx@>#l}{Qm?`G5OLskuGd2?6_>Q2d6?zlMN(;~UV zF}Iw`Wd%4zg*ciZ&w7;Rrx<(iq-=5arI6<(z&~kLCtlpYWjOZ_Z|d(HJo}(+D3Us^ z7&di1be_my)9O{?7(B=b1jlVoDSgN2`Mwy|0@ZRwtD2X^MwrPJ}yBRz<@Os@u zrgj5HGYbxqc)3l}b%2v(>6x_Xi-#(eZJH;0mabT4eoWtAnin<1IVW?f00KyIrt^ko zRf7#z9Uka{L!r{+yZJ#vRY{p8ikPinP8q$*b_w#^VB32%Gaor6^es_6gJ#$nuu#_Z zfaHV@)xbSfjLU5I!YfMFb)I)wjVuOB@w+-tpIySaepBq9*!WktIKBd0eW%z~+S#UR zW2R_9>XwS-U0v_4U|ZHz2k9Q*O&d6DP|)md!OFl}ac(A`wo;XF3E4x;%)1Itt!5V( zaUsruAq)J!RH5>{RP0p;4E-B*IqRU(P4IMKj7c*hTbjx^jomLOei6~}D$mM7gz+k3 zC+D!4SFl^B?`4unvJXqy$yp)`-A{Wjxb7G-+X}NFogAD=UnA02YT%X~6c5J_K5YK3 zD*X8paZYJTonBe9TcznTl&ux{)9z2wXB!WjZTKU@HI~cBZooebnxcmHsJ?$}p7s)L5)c9E;eKHJVvb^y{| z$GpE^(WjonGxJDu!E^ZE!qwK7NO1k7wy$KaR(<^znCC<=^8wY(x>@nBO}z^~y@1kFM=)SQ>g* z`83y*srM4Fql5;YY3zqY+GLZxIqJk5apqbwN|J9PIs7fn*RebD*-CWoYL(wo@Xnte zpBHkiewCHe`@TMS*tn<;ZEqiOwI%(PKLLjc)MW-ih}2Hw5aCmjjDCTJ9Ft5j7!ITn zw@Yh6sl!cwmy?hBk>k=vb-nyfC0zpNMd%*v!2LA+5p?EZv2C_9jdi|A6`yl{@5L`P z-^?`9($d?E~Spw6~C@rk5`VzD@QMt<8{UHy5e|U@h#|f zysr3nU03MR>MooMcL@(GP>P2Y-~>ia)Q`nee)$k&}in1cv622Y|=$PvA%6j7MUf zaYABR{?)@NWYScuCNVK>Ce21ALH00oY?`6KY8m7k=2`os(73-qJvmJS4_THONJ>gk zN@|X=qa7#Q(yR+OG2*wO($1BE!N_|VH*Ph++tr`}a~wMUss^r=K$^j&XN^oY$?1$w z2akp$XI3O{Ak)K;sGHVcto&Cj*4njTy8#rk1fqw7Ktn)VN0c^_3}`UUw3y8vNS=U* zZYu~|88qRO1M)#Aa>hR!Xf-VSOO#gaIJA5iWj+oqA8#HUZytQxDLURB`gM!yczfti z?0Ft9)Q=bH`^Q_n-|`9mtrzNdTP!jiUCRv?Z{}<8a{Iet=J+l6#S~Hz(qXb6HVP1# zt~SVIM)bG1HVN|)*E}Ju)+du%y`MhrqUyp%fVSamttArYmM?%O|EZ?vChatM>YHkB4<*FxkgYN=578{g9=x+>o|GLg z=O5?YfAF~>W+$m`X~633@wFY_x8rB>_g6GJQq8(b?`)y z`2nm~x;P!rB}t*plV+jCty)^>ha)M%GN+BGz2gH~2T2n+&ok!e)$_b{QQ+N_MECtaEm$fXRP)EX-vssaL z>W}WjYR1er>p#Yph?-8I0`O5iTN9}IryO~X!80m$DtkNqGU^NbudKSj8}k;AqXP2O z%2<{RBl1c_rYG<=5Fs3$Z^A1rN$oe4z1$gi^`)!)z8fj<{Pm0BE=YKC+AKN)(V#2T ztlxj8GtJGLtn!hmd;755!|{htEsC43WFTw~b=@*U}(^SARLY>UY# zTekfTey=Zpvkzq?6h@d!hI0mO$J3m)SK5)3_G3I-&bSgQZ9HT9N1f+f(?+dJb$mk- zr1>J(R^66K1Vd^UuDQSIWK_;h^O79?am+JYf}uX`$Go>mf>oEX&U@mY4o?w(Y(koW z$4b2U9LzSmx;(G`G~iImC2#kkJxPV}&%2U@A71YSdGPL#9*g^C?ql2i`nVlGD910^ zuanR}|EFjJ%!#o(CKPeu$oAIncb*=O(g0;i&F34+%j-66=dW;8Q zPRlvjN}H-dwqDd#JRmZMKEAp#xrYiI)-9fF`d0*@tU2{}`9Jn5J+D{#-4@J-E7jD{m@w1<<^TqsN^Yu@*)d zd)TH+oGCVEE26hf@2mtSndO)~yOi?}0GUX14EpFM*K62V{A7@XUi!S%06St#Cf69} zOpsD!v2(yRr_-3C8sgo9F$B{Fp2z|>Ho5iA+*s1X# zs(>6sW0i>iocrwT)6ze->QPLB z1*0QCJ4)W8(^J8P{LZ;;0xYvS)kzqMNeb2pow6f9I|6I%5jG5iUjC}RBQulF04neP zc(CK6|2zx)Pe(U@EIKRP-X|_tfteB|!*L+dNL0OcJb29S>7MG7$fIP1akD($fC!&YiZdv2jolYK2a#Hf$B{y3GX z`S%a<>zSub!dlG)e3JEOg3Qb;ANcwuGg*@_Q>xKSG=d>)PMQ^`r#MR))1Fp#ip+pb zxM>;-wrel|`X>Xw3i#`Pk5<|iB!CW)SH)?4QW8aaaAVCvJ>dwSAG~gU0mOjgLcQl7 zcGbR+i12FRP-yDMiYwQ-IUKO-8NEn{15T*F{_CS0|M#D7fg_wz5$7Zk|IVf0;F7X8qqS&PBh8&-KN#iXZ;^k5v zT6Y7p+bAFZO=ha2P#E-?M=+kweI5YPEq6C$Q>rx_flCM!Jc{u&6uT14+@HPth*peV z>=WR8*Rwx!8OMG9ffhJ%fLQV7i>@0R-UKzu$-f zcZ|U1;$&Sr4=>0EzIUJ}hHt#zuH^~bwufA(%miBoFt5Q}E`jWGc-{WfKTQAXAF91M zh5ASMhi2jQ%HV`S+cokiWd{9)GxnmAPn!AZmUB4K>LndWCeK<4O@fmoxllQ!R@he` zk?7E=fAtb;kG;gd|DOMEJM(|LmuOQI|H$Xgyr%e1Rs9yB%kCnW;!!J_>3AzJp~EYt zeW^@&e$z)CU2NFR7)h?Z{px;q_7$^_iXmSBd&{i#?!%~yssCVZ& z7mC{23I~PTR$WSG*RA%#aLo2n`$hBp@sIYt0PfP$EVQzJxID9Qft%-yQ7u@@E#rCI z$a?fhX1tf+2ExG1u2f|+KsVd7tvs}ismrP>=fvqj;nb~Ql?tvBC5u$s{TduhKSOG4 zE=4ayOI*B&imJ_lGo24A#tC^ctY71}VVr?8xY`Niml}t-V*-+A5%u`-uJ=X7gSWJU zq(JRpPqmbIgN$)k8B(q}$LT&5l-4QQPUYGCr5^LOfMlCJMjzVZs-l31IjUPoN1xKg z)o$})wX(GM1!j|7v2t>a?Au$8mj_a;W44#)l7Xud;pZCr$NXF;NohIls)QFsQXMVy z*x}j310EX)_2BVwnWgD?RFlssjX)j?j3VW@zva3T4psrQ&xS!G9iR?7lY_LsREPt& zf=vy*gmi?q#!?p`5D$_|OXA(tN>%8k3rxIjiZFfxLDD;`MeKwne%@QScC9RX1n*t) zp_RVzv-4ncUAZ>TSh0Y~z!|b}UA9F65!@^%;kp=jPpb(s6(#p6GZ57}PeneaFvWwP zg{_U@7oFC%xC?!*iFfv%QX)?a7qqS^C^Zet)*Ec@HgkX+=r#SMq&V`vYNZS+#j~_i z!jRv!V3!xf*(q$N(oFyl?FX|@C{3ABNL*jWStR8FS(h%rFN=D?gg7nC%M%ispo&^0 zgv&RAsz-ztp+sC8m*Gv}>$4sz1980A#m}lct_cecBbn=nvbCkU;d%V)?Hy48i*0S# zgn!c0m60nlqxR-rn97*_+oC&DEI?qARYHPpWJjY*c}o{oHW$al?_Ap7cYA{|Np`WF zG0>{=k<*M=!w+89*Nkp?@bs)!p?4DF*F5K!w;FaQiabL*cJms?X_vwVca(UZZIh-5 zo6ZE+es`zDYT`4Ui|LstAJQ?MLk*jTs>j1T2BEv8sFXaz;mGx&2Z#+)?h}EFv@%M2 zsF{$?&9AaEKo<3RT+1jz3%d!9N}<;rhe56GQ9~q(GCkJ%4dy$bG#@FAvHWCC_EE!X zG+zL`Z>9IrBLFo{=Tg#LOLvIKI$oL+K3VzwYUVTG`YS`9U)TBe0tpF)&H5a zi(c%To>aL|?;?p`j+fDM?XRx2)kFy2v&qw97((M>w5F!5t<~FcNx2K^8BZ*9%k4DEM!V%tqm_S9W^~=EX%R{4%)zH) zYRZxvKNcEFsqtOeUfgC_OWmVb>}LO)ct73zdfZX-+PACL&_LI2H-T`LZmT_jJ#EaIQC7 zU6X`iHt!){P+f$D?};D~I06q0f>rFU`Gj*wX}3MmGxq=UKkR9v@{4vhR)jWE9q8k& zT>GAQ^nE-^(@Ky#-mtm)^CJEb06olo_a`K!gpU^WmhI9og{zTiV1R7)jM?h6B-+La z`h+ZB+G}r_syIHGY-Jjg;@9JczvwnzcUZd^y>->+ZfZ4aGe_s&iFJu>uKSLTCg134 zI#4BR*D18wL_@f8D<+op_A48g*XkKxb$XSC60m49B@4VpJ*U9Y}(EK|HMS)ct! zlJQ>Oy;qj~WK2KfS3Rp2Gj}v}eLW$z&Fx6=k0f73@P9+kcoq|(Qah#$_0w7T^p!2T zAVl9|p6`z&(|-AvLf>Jn?Du3*HGIPl?QJ(KL+}5Qq|n5fr#_BvvhWvI{b&h%e^goL zPf3dYr21W!+9|%D`~vHI@>c#-8|8mZQ&;iV&wN~SH|L)J)j)qW(BCG_UnA&WX6?T_ z#f-GqPK{Q4W&8Cu>&vX*BXeY#F|${xP&+F-o);R#4alQWMifF+j6{hvD!u$;|?dQw+||RjqU?u1hhwz zBWkQ_G>cM3=)B)OnXPuWFhi{KxuRvb7hYSS0e<{s%}0aQkxflh7Rp*~+VcEGOtUkv z+_P_{=+V`{SsUdQx<_+@k7sf!&*u?Nqi+9tz>vf{q6dh%UHqXYb7ht2vUOv6=kYQ& zGv!ygr4X6KCXWO-<(>oLVL29RLNb9KC5-4FI1*i&Bf>!NM{u74+@yD52ATMFQHaqk z&?XdPZK_0L!a`6g=lMUcnkJZ$ij9cL-IGcoZp!OhEs>WD*TY!D>QDTq-KYnijVNiN z!ms6@>a|WzZj8aa5q4|vu0hU*tFg1KyJ)eu13RMX<*nGl= zuWZ?H0Q!qp0$yE#X}oBSY&01@@6Iq=P8`^p zfIXt7{)R^4y;S1zHy2aJyjzr{<&X_QT@nz}?^|cuz9W~)a|$eAqIj&ZlR7{oQYtO{ z{;6p!=d%V+ll)j8)EnY5%A>P>P$=GLa2PBAW=aly%G3J(KOQE($GBc7 z42PZ4M7;*dFuE_V>PQ%ws6`EG8Oo{5@DFjSdX}2=C4syoytE_w?twn)MI=X1@$yQr zF3m4jqPu?ujHr>;6NYTa{*jCJ0I*6=_U)Om>N|sWSoi*O!be!xnBJm`psB!iIpOmb zbkQqV8As!qNqk7D;g@M2G|Q`>FHHI#4RmSy(ArBk))<@Ik1)HshwYpzFv20sEgA zfDyG2g+v#WD@wu;WJJZnlq{ycSkyjmWUQ1vDoRFDl2p|K$mM;q;2{h!{DZg;6zMbr z1bUToCMB?=n@)>+`XeSBFCd*Wts&Q6Z&%!GVe-qVQO_g>1XipBKQ?VTApC<#@!4AwR$E1fES3_Cl8^=w}g~MyC76 zJ<6*)!N%(IRFMtDw5BO9Sp%u8f9eWMZjsSpI5;;p7wKl%G+g8m0DKdaNGc~DxIbI9 zrSw=i0aHHSf$7RRgqa-A7a>SinaX0@X`PJ>C4DD0{=aqRKk32<@MKfpc>7O|kAE}T zB}Zgxj`fAL5Y_@cLzh|4+ZziGtfa&;$%ahc-e@A$f z|9_w?{%;oeuZRCHTj1M};nMt*jSb6(zm)5jS39h9aOLsho9*Nd@Q>3H8kI&?0`({N z77X70gR-V5@yCU#dIuxIRvYo@b8O#x{PIr}Akj;_Y+7?tfzh?%BxO0aq*ON29RH(m$pqTp2J;qV(g67$jQv!N z^@CY7*DA4}prv4B$eR(`nG4x+FXX)-rDDl3<}p&yvm^bD{jlnQp3KcNveJFdV~-+= zX9P)9COMy5Z&~1165%~YjviMTsfddtu9JyGf*IQZtlGyMf3uREorlhILtj=_sg+Ik z9}dC)L`(h8C@cF<(z#x}>KCs1tO|zQZ3Dp7c#?k0&V$SK-8cPAF;?Qs-9RN=0$2DC ziJzTa;kF=N7~;L-fz7mcbBFbDO6A3ClXkr*#y-~22^}Y@%Tye~TXCcBUYaKmousZLO2A)-QQIxD74Xzpf03#gB6FUUc*K7DwQf=v7eyHvFOkVHag%nS1Cr?@a}}NleoKl*TABr z=}pUO7Td?x4)5aIgajN#NQ_12!O8&#U49j`D-Wty6r@RnQLq~4slb>H?> zXwN+(|6ec{R{RRVeBIP<3LRRrOq(HBSjk*Go_s?QxZ;)9}+ z`xhc3miKg29MXguU98gHzOeIJAyOU;V8=}P=Jje>!{8t-Ge@PJ ztxngES*e#kTio*MOQ}qe_|*Ne--vqw=UJT>Cy;(?!b4Jt=GL>d zJJi|V&p;M9Vv$u|kFx0f$+b$aA&Z)Fv6NhlA09b5b~qE@A3t2{&N9}@8=FL*?1Vi_ z{?>v2EKH%}={LIxKm5_<=f3;7Lbt7RxBU{zx5hLwuUJ(QhasPVGN_5T+CpZGiRTa7 zk*#xMcnvtfvX%&px8LaSZtx=>s-d${k{<^l!otvt46|u$dw;pl1RTKmvgo6;s=CZ} z2geL*nFhJS6}tPQcsYz6V7OKHb8w=iS~t7(O;-+t4%12sCf)P!eV0N`qK=?hZ+{dP z_ESOWu3hw-*0gj3Q=g{f_#%M85E^K98UKAw9vLannnybmETCPX<5bkIi4ZS`_K#S< zYWTcrS&VeFn3`s1Ke;#2c=2XA%nPKwCG^ubbYuyfsyO zCht;WIAlq)pFsSW(HK|Ew006eR>HtjIuQIk5$LihcC6L8+iJ;_?Z4olEu5j{UKm%t z1(PsJH-1?OJ~L(8#1PlR%l$t#v}22 zP0?pgsQMqxOpfCAo{{&%+)TL`?999IOuCLNJyJ(6k7b3SB4(x1(p&~r4}ohIhH361 z$J}Ba6a(#m)!9rNi)91^Y`*&RTl!CbA0pqlc`Lr_$UW4%aweB+;Lt_HbZKCSjfPxe;jYERZ+aK|Q+>9!QVOHz#eR;t zcB4_@+5|>E%dA=0AOedJy(}Q$6cG+pC^Tg`VfJn1uW%Xu!q)Zq@0tJE(6}D4<0nRi zeI7frJX*-Lc{Jw95im>SxORz~;PUT6gE!L@F6pSE3J~k|X|8`l12_2o36}3RpLuga zjrx`CYH{fYMi(1f;r+iC;IH5R>K6E~CHAl? z4$nxsPE|dip(0CD3NvFTU==+XN5Fja>w+2vAZU--%H99(n&!+a%O@yZ+mOZQOuU-C zDsK23QJ-hmiocM3c;(Xku3F?Fw9M;}*Sq-rH{13Q(~hHjZ-!)+n`AhDUoTyNGBS(Q zEQlIMuB=fhX`$z|m1@w7WK!X!=Sn#sH_hg}KIwy!seKx3}Y)ck6fDuU}v(@K9%g>oS}Lmc$y}HGj&L zdmYcWvq{7^c`+qnxfTHv@VV*8g_h#LoB7QzBv$U;-Yk6D*zYlx79?}X*qy2T(LnE@ z@vtlUifM!H^G%LTH}9&+m~k+`(ilBQr2XhKMfYcFjLM8?b|F2*RjD&>UO-6l$S_V#*@xH1Z&Q}}z0Qo-uBh7BX1 zT#rk$xKLIq!J3*b>6Y$hqcuT@sP85j<|zDC!_1RSSW#F}NJ==k zQH6h*GaUHn`$0ELt7bf<)N%%s6RWwHJDJe71r#WHOe-=Eh+XUdaV6@ziF2mkHpUwU zR~Vh1G>z-1>!qusBn&jVZcRm9oz_@MaI9p7rYI`394^-HU--7E>vG$<*Sb44jL79H zg6vlD#w~J)3a_k@T!x&R;V!+|@Nk?o$bzw{A4{ zEip2Cx!3l!B3W4q{lC5m8nFtk>W58CP0Ks?m;nzhd%KT}hnn5`dDbO*`92avHqjVO zOewJVw@c7b?G9Tag6QjG64dTh^7y>p)fkKwAjEcn*bnL(j5CHL02KTq=NrvQO=Qur z^C$()QsrKy{xx|t&$aerg67d|kk0{a&b|ob$ zxKMZQ&Vqd4iU~hWzv&nWg^54TeZTk2oR7T7<(l$40!2F+=8Fk(jtG3+QS`j3XR6N2 z)WbUwG6}?XDO8CAAiJoker+$LSQo>!tLzk{Pq8HSa=EcWy&c}i`EZ4C$3dk%M_L&vx3&)(o?d}o_X($uCg7_jCkLI}Y1S-4m(c$T>{ltbcmjCy^)Dx} zL@<^0A!>u&P?>1Z;8!+`;;DZ38HZ1$sD9Va8E`*XXKslQI%J-mmOgaYfe+@ht+3cn zQ&Ka?J0MFoB@iPrPrYJ%Y=U#bpq~>0e4vvP46?HoD<&cfJ=G18-9JI9@Xb#Ie7a7eD(C0$@_6jroE@ef=;9 ztUhq3HD5eqT62Fd&Sz=@aVo%IiH?{QNWXc{*c zRYsZWAkSCtcA8amY=rFMrl-n&s%0M${zyI>41y~T%&zX3f=4T9xcREklv*4hwWu+9 z?7}d2^-x8M2odcI(sJQxIg}D&%o#QX&LoXw+fFtF=!3u8+PmBjPY1d*H5b@{_rJ2a zwKTOlUJJ*aDmyjatq;=*Yh=P$v*L*RCyZ82SbC2D5xIdp9MMT@TldAMJ6gY^GDR?@KwhZl&w%)a+K^kz(7`@LeGCO z^ZSch?hE)P?(#I}rnY|T_Qg-x@w#?CCAHmwOsiQX6bv>Ev##3L$nkn)(A*7D5!_f% znPBn@^W8GMrGi-MNb0>+K8~1|k|Z#>bZpBD9%PkS>!=CF8VZ3eNV~cNaOncKF44MP zq1XEXNw0l$$US&V`g%$O)YK>Y9RLFAc38qOv{PZY~*B6<_MN@-*jYGmlbXLv_ zvyO6CES8hsjXhoIb!<4N!-XDvq86f1=#m~H^ck`62qWZT3J!n)P6)#ApJ-2&Rpcd~ z89i4x$IZcUonT_7@Rq!$5{!n6+5Smc|y zU5Hv51}=@ebr`Tee8+N^BbN@_d3;E?0!A!yYJvHy7pMfGS0G5_CHd3O@r9CDO0IiL z*ScGakoMuhml^!wE>NJ;yW>t1^pNVyTydUb=H^pcV!eVS`u$HS=!3m1r>t?8UkjA`f-yuDooHq}>-&?2`L*I_E0 zkhBl8B&hcF2`Zj$Bk)I*+~F=-u^d!gXd3v+#%W2#= zoCb!{EI@e?IFX1j`C&0ca?Y(2e? zxNzWh*~$$D6aRR>-M6;5uJl2UQ@1jkUg4YJ6ysLG`-mmsR z!)IlEm6N1ov@?}BZ>M;U=jQ?W+zzf5yKlA^%jx<%x=>4yDHEeBnE2|uwchS!HjVnhe@jMsA&5SMY{OKUQsVNwO=yDYPR<)}x!7TG5VB5(^ zWBtT9t>6gQpKQoGkZQZg9DZSzGu7iF{PM%)EdD5L!mUf=sjp@910 zxG5}63p(Z#S-S~D#ZaE^gbttsSrYyZ_2+FYUp=b5AigeRLh7IWwPdAM-4O(tQIh1O zTFIZ&9xg{Ry-9|U1QliPQ8!it3_h5g>^+dXYaT5xNNzOS=8{CUe7`xe8izIH$a$i3 zPbwlJV)lMqt(+zuCZ}4Pots!eg@#-%QeE(xBRe>p-Fas$y6f9x_ZrF`qbf8I9Jt!gZ%z&s}52m$dEx0*Nhzf=}_h*|UR!;m# zqBMeRq!JGCTE^&ksj)E86;aF>ajP!w5H;s88znZL;G`OBgE|Y=Xjh-L`7|acU6%PF z>&5G<^MaEsgcH-u2HdY=Xi9>0^urXun1X=Cr2RIx$`MaP>53c_o+v5D+R zl52=sOZdw6t&K~}Pfb@Z;i(n`3v@EPCF>Oyz!}$t1S*jYg|)N{g_RC-+eT37W(l`x zXDTY3Z4tUKm`cLy-Z?|{=_*|H0=I2!BT9ks%X$l~b3KXZGY>m=>tQao(4dHI?Q$C2FXWt6 zy)@Q=-+e~J`H^Vdq^hx{xlqYkF(aF74^q!W4&b#|Hlm%lBH-UN&ba(qlE;2B&wsal zz&Yw}LKRcAKq$A*JA`qrkWjX~)7tAm0;heT(15||luBe&ax@gib+~}Cm2yg}ziA8a zkiBx1vHmECmho~g{3E&^lC3)DVzn!Hjp?066%arW3HU==j%I7nUD8HIQSbakLWz8* zZ_tl+u^O9i%eG>3o-e&1$5(2%c)Yk0ATHYfl`Vz9!(H!*Q(0juh`syrkcMfVT!jzI z!lc=Gwhdvfv0Z8=xyu|AYN4;x8miBX*mf8N1@(1OUC;6QtQ6#B=am=Un}0mP8aEAd zh*x>E<;3(Q_8s+*9zIIMzJg!BV~^7E7Robo=6uRZ^f7hn9-zas(wo+dO|d>qFawdE zCzUcAV#yb#JGW+EVsD|0Vv-Bu6e$ySOB*ZYA=8{CMDLOAr5b$Gew(@|wMQQ9Dtfp4 zT^1dXZ!Q@3l8E1!8wIr1I!crJq+D&*tInV540%OT>QKZB2#8HZZ*(gS*2~79&BIT( zR=VU2mUO2uqNGn{WNao6d{k8szAF^zmYY3`3zLS#>yU=}G>&?8=KD`1ew2dTItQzI zh8+t#mYVE??c7FV!e+H!W>b-PgBGB`4#)wwK@{cMUoJ*=9|p!EJozubAE3GNIb%3n z+{&4{M#%I|*Vs6ktsEL;6|KFH7sXu!B&P@3CRhC0!P{FtDCK{SyXT2`Z)`5*p1C8* zUP8*76B%sPH82vZy|5x_L5%8y=0uw$QGQ#C4K}`#SZ3LtRx;M1cDOMyHqoV?lUzhu zFj6+J8(7(M*t85^-PzA`m*3Acf*Apw_OcOkdG$GpNeLIevfZkXt8>uS4qP2SG%Fbq z4kPQiocHb8rOgQk1x6~I&HQl~lfR}sm#H+opH&4Mw(sOsz&bgnp5KcPb8-RX6V6Ej zn|tFzM?X(vsXNztA_u7BM$UsKA5bJ@_El$}yaY%=GmJKU+z9c|oj=rcisHU^u7pU8 zNNyLU(d55Oh6cYVP*WQsq1JC7Ug#XA_F0N8ZeF@QSpjSB^+`N%6EOPVasW%GX_|@( z%r$`nc=MaR_M!NUmMfgV6)&TDxnFkF6{t$rW@?Fr-c~pu5Q%^LZs{vq>1mbjg_MP5*?Ug!9<;q@ z!imYV3ct}gpGQXG+qbl|pv=68d{P`NuU?+HqwK0yW~fxzBV8Dyk1=uTrL!~HW&A=% z_<|(Y1#?+_*qJlqWS01=V7UBZDxAPeE|a!_9ZL#p8O?L^w{l&G zF1frME1~$dcN<#XT?uxtVgT1*#+4byZTR)#WoC7kHF$~+16^Mlm zh=)xPaLtKGoQB=>(+cYu0P~p!J&G!Wy*BEKNKTuuv6bAT$?UF*Hoy?oaVLM@w9O*L zFYc4EKT3s^-{`$KmKLnw)$&`ChQ-T;Gr=!D-<*lbePJ#4^jqJ*9{|2tT7meGKGa#Bd z8z?3P{2w@*v~km!k-?COXW2 zDE7o&?Vq5$;IpQK?5eJof?Vn5s*Ow@bul?AsEDe#-zHXSy|RsE&r7&~dCLh_dZ?|$ z`6?m6{{ZM46~Y?6PcOer;ILd|vO_GQz%sz~#iAuw5BgWO$$a(adbR9XD|a^$Xc~JA8RStQH(F)`lG11PfJj%p0toI^;Y}l>zU&V zH5WA35u;L4AiwLkuJ5o9fLumKF-0Mbfu%9|j@MF)zp@E8>2}G*U6${+>#(98x9%06 zPP5p^GD$~|t$H1{$b!2hJ{sB-I+(B~LTYsRK8oh1r^5>Ozcl`E!J_iU+lA5cq$8Mb zNi=-Lnt(saTQ&QYQHi1`=bbf>^=V~iA3sh`-mZ!1$>WCCxic6$%@dklneADW7Q@#v z=#@iv(7IXv(=bWEXt^FQS70lHHYNxts=645J87P$5c1ZEc)&%a*@Q!rEbu!Ym@Hsruo$*wBQgq#(LlQCv>3FHGH9jGedqhiK3K%O7c(;9h?4FHL19GzM!O?@=PXn*kMyfWT z8qfgGGp!x`8M6kyYOC!v1L)Y*x5c946tAhgki28juHcCL37;Ml`=P&4M@zMLk=t>_ zz@kll_^%r>Ed&aKFFXV`)6jd?YHuJTDlly&S^mP2LY0L2jE8d@`K8xJ9&yOX<_ma~ z;~;wxkl<5M1nC+8F6^f z%cgL|a8n!JG?H+1zF0v{DS43|QKwnb7H@Ck| zA_uR3vEJRL-AB7=$enSl!u!NAZGKF{IW=1Xcx!^)W(7i>o0;BPB_f%A&q{28eDU2c8{uN(_RzytllKHx&bGs3kYd|}DHT#%+(MZnEZPdLHCUgnEaqAZM4m4TMGG!w#^_N^yhh4!} zwrlOdpEM1l>N8Wt-W{G4VHn3{X=y)>t6Q=+Wn3IU*oPpbkWU;1u*AkXzI zuJ7`*Q(qM{Hy;J^5CaMI3j2v@&xGep}%6A0x@;tLgoHCR5#}FHa9gYZt=42Olwa`<-NFr zbN01XGOYcLZR=i~*_dERD|{9Kl;+_M&59&WYr+-GV&E{^qZhNM6`FRVL!(yqdcLv& z)$2A*g{_8()di-vuJ90vSr#}@e$i#nPlI#-EXSvoC8j0Ifls$^@O7-MObz|qy!*w( zrgwF<_J^TIJHg@kA}@@W^kKgqbipC0M}`sgI^3a3Gvo78w1G)U-{`@aOkrs?D|V~A zLWz>T;fD?tZ$G{7tKhC;A6j+Kvhk$?<+bPXb8%bu15&omQ$3jhA7l%$Nda`3_C8v% zOYa-;FS*aKj zH+#xn>NMsD#NLno4l=qd@dOU&L=a}?{_K2X%!z{ykUtf2{nAYkQ|JEfaSB^BM`;$9AqM;G%a&}!?&H?pwHhHCvv#tRX(!2nJ}trHX6rvn1L zO7c3QseRV^#Ec{mD6>~l^u*m1iHI2Zv|~tx%NjZ8aZ7ygNm5+E7nZh3K3r8MVtMBn z0Rg7k#Fi73_Y9F(V+Sc-(H-0@l4IS&aLF#2C~HwnG-*Ql$otJLhO+_-y-11`F%2;= z5{V~oK)LqI>Y#RgX1(?t;Qj|N`0(9Dn1uWw$9+jJC1QX3d>o7q7$nRH=pKX5Zf~bm z{M@y88s^ZrwO29KeokKSt;HFp-ju7{_76LCV#3Iy4#kYF0CqbqI6L6sh3hUn+GqH% z4Rkp_U0TFwTE(n1FQZgSaj>y{iVmV{K{6~CZmI528+eqh?b;;@J33qwe5;Zde$(D8 zyudT%V&}qh)lDm|y+trBZw4>^3Tp~AtS_w?q|~OFx7fV*tG;-RP~M*dSs1&g^I*`{ z&S&F3Q%BuVAV|Jgkx@jjTHc>82E0;{ZlolHm!5L%VNFDCyIKepggMH~7soeG#iiyI zxS$N>V3S&4BZ9b0zmU8-b=Yk;`f+8nS2QBOpm)^=?AqRzt6eVmD=+E1$}n-4(m^bi zgZns}gS*a|#PpVGjx;h2SqTPB5FSUR!Pg#3%eo13lr$Rj-9@KeqjT4vy&k2Q7)xud zR6h2-V;7hc=qV$8nIGgmkMGeI5CyJk?hu28mb>`p$8FahruGAA%y**+yKij8dd z#;!vQEzE|Og8KL3CpR4L$((@qnhSAK_Qg>&K19fEaCGcE7sx z^RZ4x@$We9+H1-G9K~%VHIRs(ydWcQkNLqa(qcO>>sR(iOay1^bkSQZUU)*|I0fT&2qm+E}>V4b;>$gl>7<^t* zL0bV!%x|8{B!>PNqebVBtUfnwt=wdJd)CHEs;?~t;+U7%A6V%jQVJo?3$ml=K2X=_ z6F;|E6Vup#DX)>m7?L`Ut>&`18J(--AgY)dVvclNNY;{T=3iD2Y)a6|tVYaa7|k?o zvKc=8aU-~bVFnkF-yLQ`ua zX~@Sl4d0cFVu9o79{Oig*RI8PJ{f_x`j17HUwXiy;`B?`294W_Q2X;T9Mxraw&RhN5qpAU>Sp*J| zrkig$rAPSXRDbNNixZEO^GXC6!sIM0>cIOj1hYQ}L)f z+lyx15KC~BeNJ%O{a_JmnSEr8VTpJ%8L6)%ykrf9;+5&8)hytbnXkManJ$ zEo#9LPqe<^?sJnRXqMhc61*0{)FyxNblRGR83x`rM$*pc%yWzNMM)bl+3R03487O( zDkM8$@DA^mRNBVT48meT;6qi<*0kR@Fz?(P8|S9_tA^h7B@SQNp0xCP%Pz;ma}tMB znQ}WVdSuLx1%-*eIz?AZG*b$_%Z@50L=S3hBHKjlj(>PY5JJ|i0$c|yM0&0K>~*up z9RlezoHicRvnuU}!@1`!oEXu5P|&6Fip0^k%|3MY%f6w0hJUwq?xI05x_xAg-V8+-A!8ADD`BESd~03 zs-!=$VK3~tgp-uqt_Iti~U$Ln!hg@BbCg3={y{iUt^CA+~bv*~39SPoerkasx4!G9brtg7WflXS?6G!z6>Y}ii8x>2A;`un`=PH8!i6Z3H?zPjuB8OIU(Q&}T8FvlT&1;b zBYm3hX92VVr661y(c6QIe0GxiH>G(c3(8??ZSK{K@`q=$4b=cjCpzy5QJZsQqu(gM zE?qe8cv^vLd;P)>;aZjP0_a5K?HzX(q5BDeIX`#sY-@o7jJx2*FwWLPoyU|X2KT%h zIFnNW!T1sccP?nSbgt!A?5it1Y4yqR&jSt*3|dLF-uq@Jq9G&(Iq-s6;WuzSI5@t$5; z#vJJ*3`ulmMh>dJZg60Exm*HF<1(WzyGkR`+WD`gtToN&ZrW-d7TE|~hwa*flS?gV zNh(sDWgh?rh#{8@ZsL72-0@)K<$_DluWSJ^_u6}&4fyd*7~IO_uu^g*=N$kdIV|)O zc>D)tlWCTM{e zJa89hzKmO`>JzP!<$!v-0zZ>F7g&S0SGNm{ef|EZW?X7lzoD=W2m*!`w#MoNWcifE z+oj{k_9yDvml+iRlZ9Ci2-E|_S%8U%IywLFd-0u~*}}3!v*v39n}@HcQoO#hDGm*! zdLgD5hHGcfNmlT7OMI+s2_U|C({S|)s6_Livna;dtk(BqGiCWJ8gqoDlfsE`vMT>yZbhb;s-TLL^ zjenBgxAB=Rc>3<&bNH8E-rAyTHp6_fc}rFJRS!ZaOG_UvVc^%(M`1VonI8rQHN&($ zY>=Ve-5`VRy!@1n4#9-(z!9={TFuGn4MAA@X7K}WA=DdYY>d(}EbcU!RDI(8MjzG! z7)9jaQuD!TK_!}z10$x+N8uOGJ75sWDcD)c)9*x|{+|Cu6K0eb9FxA4s0#M2yd%nL z(X|wk@aw@M1=3tMyCAX)K!>1`*6F~}UGcQpTR>tFcmCmb*YL?H$=H(J+iZ609Tw{$ z62*){zND-0s3KS|Z8|Ks z&fKhijnW=|_PhfNU|81t_Y~OJW^$VcXt|>mm}odU@r7koSy52}-F-ec6|*eIm{ELi z-WiWmHEUZ5_}8lct^R-cwSFH3|GmEcPup{-@y>Yq#MSM=APcX5LzO#1wN+NLYMK*o z$v)4U=3d?wNY_)vx_M2JKXzc|qs_pSSj zrp449nkvjnW;v_@^(U;kK?CMe!2?jo{DX{&RfPBmS2N#?qgTyc2)g{vaEBA(oF zp>4zJM*4z$W=0kTGN(r_Yv-h&WVR&zdz4^T@+ROqJ5 zr4o0=0hY~u<$2_T9H`0ERo)(h-WVSgBjN-r6Syh!h+SP1exldaM$4~kiMi&} zEiIYqa3e`=ZXnitc=55N$1%%uE8Bt{_)g5u5tbBW0;~qL4!b>L{OUAsQ`D#nou)vWKIW+0_{_LJP=CsrByMVoh=|NxSVat; zPI9ZwbtdwtY;uVrlmK*nXZ(m?C-p8Satp}Wq}FglzUqDC{n<|wXRm70zL?fOE2?O( zxlhDG<2ex+9Daqu?qdq_p9$)o@fvlq1ht4sdrKKtn#vFQ_lRw2PT4JiTPUV+yaROQ z6{W84FrW5Z;Ir8UO$s)SO60W7;ZoPe=~A5HFz0+Nba6OsvUkq>MWxAO2W=QjW@SCB z@HMQ`&Q6vkxv6_uQdtSGz9uy~i56K*3I#Kf?(6GdQ4Q?7)3O~=jI|xb22=%NM`S|_ z!XGJ!Vg$s3Ed^0p;29#}@_O1gV{?c6SI!`8PZ?-|3u!TTOyKs}?>cKy4634nO(oRp_T&WaCCF}(=Zo{0R=7kiDH3fl-68t zC_p3%;DJSAV_5MWmj)KGtF@izU=uKDmz`^q7x|P;^WVMH=g%zKMX{;A0r*3+G3w`S zr8xD=Oa~3j*eE>)llzDkTc??b1hW^*K{M z^k^T9!;FXzc}3ip070Fd?TyzqQl;mdY-(YJ`p(&vYAca|Je+vkTvXeDy7zBAif%lF zbyI2BLgUhC%5d5VTbEP`>r`VmP(4;(Y)WgUUa{U4$r4c^UypLA%{f)?QCo2}7Fq0hC#-wo4G%0UdpIF9?asYr-# zD^f`?$#>*=TdF$`wU42>2p38^*JV?EzsgUbO=UOX%4ccyvp{^%X$45f`Qa8B2NMSy zE1wmBV2zbSMtTWeaL|anB;lK8Q6XPk|1#URdYC)u_Duw`9=PD3e~wk{Q|(k>`Aqag zyH3bjF8mP{IakC0v*T7<1(8GI?BS`ndpulL)lDtz8G!+^8B!8&n&7zwh4k8Uvj4VC zWGSdi1G_g|TUM9QTw6BNYT9|!(yQ1$h`s5?{y*A#@3^M3ZeN%gM;%3F5D}$0f`Ei3 zC15~sREkIw(`W(d5SoPE$A%;j5TsY71QJLvK!Aj%NN)-u^dh}i>22Q3bKiIL`J6fT zndiRe+>*Jm@T44StQRqqGFnH9HO-0+2nT;@CjO9*JW*e5{c`NRFXVWd2%_ z7|q!xSinCgCV}jXQ7KEOXbM&(Sh;K^1>TuAj@y>C868W(%mwDfe9UOy8&QBFoJ}?iPZRLD#P@Fz;l$96*yt{MJn3u@BaAYuAQFcs< z68kPDMNKiGT@f%T#mRB5WzM=jTK&MZ66cK%?Y6)eLUBu;ZwD@y^(@AC&d%Dp+<|H; zy@^%$Jst!g^(jj>+AnZ2_)KbQe>_1?9g^09}8b2$S9qV*8SJ`1bZI)p9&&NbF&s64wKcC%%)mC*c5e^lEzSR$II zDXLZH3Ii1VWL~)=Gdm(a+MN7xhXGXYU6qO-LAG( z=y>K`!fTpwWurlE*A-3s?13R{V?K{}JNL#40QUv1TM~6VZ~HOknoYCe$!PZ&CrihT z+Tz}yb9}`q6hBNDgBwlAt>j^_vvc@(Q`v-1OVl{j=I&58C0r8Hs%{1w?(~kK+LAZ7 z-hDS9_shTet@!?HlpF_I!|^DCO=E~K3_O{lJl=dzvo1`ornjw4v-n^3{r#hVX&z+}_=8u2`LW}UP5ws=6E8--c*}XVBG;Q_B~y{;qV~PNXr_*LqTg8Di;8o5 zxx^n$>Y9+9VV}n-gN|o45ckQDPVK^W95I0qb$4792@-5kec}3UZVQ$6tMwDieIJgtEnBYd!sWQ9H!@OsUzz)rRZK+NL}MZZ#%`@g2CYe*qj~md2)uH z=zXS4+>PU>hk*S}l~%+R_J%c8L-XC7tagyXnA;`h7PC1X`~zju#$lxVgdc%`ds7b0 z<7mD&Sq!6GnDXazGYP3WPQrKrEu82UuAsdZO5wV78dzO4As3EqfA7)l2FeqSU=(dN zO{qP`JFP(U^r2T|;LQ8r$SY_}n1i6DK^Mq$GJkM7WD)41Y~QnFb?U*Ud7f+n$AELY zz*5#Rq0AhD4hU-L0Oio(+CX<-6&v)#hG6iCgs{S7d_r>y`GQumi}GWtlXSu0uI=os zaWt1uxp`=E^JyVe{rkpqG_k0Qi5PqZ4U;oIiUKxgxPO{UlDBpW1<5*h|4No{3J|I+ zIGJD-^?cr{fm}UB;m&tROtwp$WsG*uNKAKlJH%_&8|Nyya)9b{gKVYnr}_wDohcg+ zSrgL|24C2di5n&CW4?1XM@p8pZV663b|CP)BX=~46KXKR%xt7!7=WOFWtVd+lPI*5 zh$45&^j}jk@9c)r6%4OXEVzvt4Zl=`bPEVq$#8NmmZ;O&nf~YM`m)m6E$aT2MeWb1 zQpzXi5-4=7b6!uG3_0u(PV9x1LcN=3>Bi0;&(jp@xJIWV5)RT@87E2QxpaF?US7!8&fWY|; znA;7BpofB0Q#N9GZ}3r95;pp+$m)Hn6R=jL_UQ?_j($i8CNv{C*?KaH=_Jpo3PhOeOg+KATlLd( z=}G>g5r40M>Mn<-0Xqq}=(IU0O3wCF&p6Cwn&HKDb_GYv=0}sBDJtlU6lHlB7jmjW z>fAUkDpPH8^^<8^l4bnwe6)hE4S4MhwVlWahghM(nqVE5bflQa;E0IEa!7@(|7mdE z3#l_T#xgd*N_?+z!n#{$hwM}LuDJ?{rVE)U$uXRzaYdKu6+d9RyBuK98H;m66YQ~x z?b;K2n^(ew8h>M1n3~D5g59ww->-pg`JIA&`m~SDFlwC5_39AD?HY6;>!@BSPfrR01tMHQX^bIzcC< zCvaiOAzseAi7;~IbeRd>;bE$rzmw+}cZ10|`lgldBDKw{dJL+nBSY`=Ou6(pw8y87 zFgDp{Sbx4ZWnrebX|)zjH6@xDFG-L#nnES|ia$c82bGViMt3Lzp~#AG7$Kb?FhlVC zsdobuDvE1ew|SHm>11XxHFc#z++Lkhwz8P9rT1$Ud6_0yN}=b!sTw^UUo4$pWs9*KDJ5=PFDYriUL@nD*(W6-?sF%ZtEKWoObi3IYiSR= z=wMpkvUomG6j7e%U{rNt7M%eO)yteWzCK@u+4z;1Lkg#e_aKKwj>6siO#~_t?A{j) z2`*J?YEY;u5&)PbV2yb$l*_Yf7+0aDc3gFCDiXKDGQ{`Y8o~(x(m0*HME)wzL)bbauY{ zQqx6iZ3I}M*`Xhw+-)aD>dQeQJUI2aJWL2!qg@_Cdp8N}Y-8Uwl$dcfEeLtq#X`K|eaS#&O`P!HlG7V}nWlTH$OHO=X6=G|TRjbZo1jajSm)KbiaLDV zcv1a~wq#i6Qepw7u*rw2Z%ly>tb0e^m1=w18ujRQaee&7lB}5)^@hIrTN=05eAE4f zZ|8&~C28p(L~~QN&PVJMyKBLxa_fCG(UJ-V64A|YsB@_}s#*NRa>^B%nl7N1@p1|C zU?MQhypEv6dOfL@BefT~rWEyH%;6z|>T z&I!Fz0OIbNC4?jrvYE#k6yC+qleKY=^#y*(a3(Q7E5|P}N)a&Y=fTR4uRp8enVX65 zXm7}a>h--b&vdWjQk$*aPC=HW3xd*6N}dj7qi=rpJ)%Q4ZR!n)Io0ggK}aQBJ(%qE z&&;>FS03)iPS{s*nvCSP9s!&>8j)Wr*&o8=_oUHiM>5Ds@!c!sWWBAEQ}!9{t-D!j zgA6XUYwdk5teJBJM)D}Z5`;!$Q_Q$Z#2HB0lqn;Y^9{fJuDJZ|@5r~&I$;`xRGp6e zV_P?!*X=&0E$;qW_)+=(+jrg!rGJ;spDlT$)E6{Hw1kI>kA0gRl;`gPd0e!&HP{!r zx3aLQXHxB0jv{~ge>-sa?|(Z2X~pxiPF0(T<9T)WuY61HPrvP>#kN52{xN?U>L#!K zl>u3o^=mrbj>^pw@Ee)gzAWGIeENrdKd#Z{hV+rH{T>+Z>3DIeWT~sWq`m!t23j61#<_v=L7V*JZb%FPGb#UJ6`%d2Al2wze8*i|%Z$kI zaW|+O#4PJvq{KiQ?`e&&v2uoGGuHGHCQC$1DJQYlvgg zk+{HmI&;`^epy^!(N-`svJF+Sgi0510WG>QO$LmCyXYFv`==e^0A(i3d)d~Kz};4V5G$!W*rg+pkr zC|7*nj{HXILehS-%g)o&$FQwjk1I?Ds5WSV*Q7lGGF=+`6mPpQ_pN0ah;U0nk*bL{&eIi)o{NVB$=dezdo1mRcG z(}{pp9LA21$4}3*^Iq3ys^_+ zUxxYhD~Hi;@=FrpSeWKfKtVXj2%k<_c$}w^-Li1M>PP7j(umVcCH^Mnl2ME`V1_qWW{pv#=m`!Pbxi>%<)xOhi&KR3Vo%J0l06z zlG^3yOsr?sQ=-5AZu$A&!uS5#t!b(W3tM^4FMl+4WG5UX97$H=N!_G!cTs?FCK-VU zLT`LzvEgF^M)WVw&hxy%`C%X5MDF>`C`6su1sB7Zd2EduDa2j_vUjo@Ct41 zgQ5LNcQBA~uAaNG%-lpTlIQ2$(DxU7r#xy|k@tjx89EZ$jR;uPDmv*s5RvJBCEOuK zZtIlpdy#qSbGH(JTOpeTpaoZdZi7Y*tV8h59W}lXT{z9~V_1$lT%s}wH_q$#t1eI^ zwQX)tgI+8@=UZ5ld)bVTW4NF#QdQxZcS9K6ce@lE@)y?TF23lOtmPvR10THVQ3=Qp zxA%SPC46ng#HSC)>(Ts-w(ZoF4-Moq32s&-SpY7 zdkRz@mqM6KKEihAy`-EHv?ArSoE|>zdyy4K8o5<0+|+$Ck;fm>tra6z&L?QC@rBry zu-jf307ml?ZTS76HxoJAO=)d6%E`fClC85^CCQz|Q;*4l z7Jm5gC&kZK1p`_6yVW<+^9`ZA`yBg>d3I4-s+i}Psxbq*_hr4!jmJ0AV$!c@a*ci# zF;o0&PhiRUQEphH!5&B-71^JIiCN>>U6s|N4n-Yb5m_)Ljz7@u(IVXYFyL{Jw@Q51 zMVqJf@TaFPqjeyqx94D;LFZ??9<5emLc2S>>1uN;XJe}o4`BRb`RlgPii)Bc8untI z<#!X;eG1Z=g=i_ zQYB?Z!}Y_;hjY!FlCh$bBiw0<@^@o`f}gz(Au#E82&N>5lp7!*&uvj;!H* zbDf>1*p+S~Gix*LZlGvX=b546{yveg>_Ep_JLvQwN%n*~(0G^`p#7j>TB=Gh4E>_NSkgpi=!(wWb zTaebal*TTM>G7p>L!!-oPP_ld&waecMW>HKtL3%$`CjLg7bs9T`NTLQ)vL73WKGkQ zep)j5G|#AnkI`=Aye`!_n#fS&M7Xmz5S?@&x#dIb?CvOOG&hAS(qv+u&o5!vJ)>lb zfe_MewTio;1lQ7K?3bhE&JslS*p-7WuPp38cW_MD2M5NUIGe<7j7PqS(f8t=&bZ6p zX{rN$f+Tp9MEXt+y3@VfSGcOiToir2Fpt5{Y%d^^%fJr&TdBQ*e(@Vj>J%o81HK_A zd%L;r^=o;draYxYpT_qVO+OGRJrYZ0iU~X7;1*_(h-2hU$5vAkY*lhHlmJLy+ZsSz z;8pfcO6sh0LSAJ$(@ED&%by~D)E>-E&nq-H0f)?pjyUo0ndHT+wX0ove>Wph?Q>t( z3~p9QmHzT|F`~ELZh+X9bWEcBbHYL~WCTw_33Xr_idI#}+gq#%Qvx@idWMA7b()fg zJahZS&QI7V;G0?sDg86H6#9pc-Q1%to)N$%~)&`4c3*`(3Q$WI^6BS(^6LA{N_R9;pn_Gy4+()Vu` zNPW4S^#xe@^VpfaJJa_+f-?7|AI14xni;V3Z?)EYWbht1rd58!Z2unjb!x&u%Eg^3 z4n>u?n{8Ks5tYiLD!X02w&$c|v$HA9?+N(^IFa&d%dz^NSP(bSO^OqXk^%s<4+Ne~ zy02|ey@AlVbM<<-J*-y`vS%bCrL*|+EYscLU5Rhl(a=X!ox;>wxy@6cBM+&cMs^VO zz`k6uIg^?wE2vtxr{TbwnvNV&2cIY1Y>11Mxcz7^WbbUw^mNCPgQh9z9!y@n zUQVYwl2A}Ljm*Jg0Hzg0T)45vS}zuojT& z#(}PM6p$3zsyZhiz*THv*-tWZ^f)g`zWJ1T>p9WAvmm1caVqB2lOJMocX5v}YukO# z?i3TdSVbar-iHX9o1Us>m<=x7$thpT8%J>a0`I;NqHK=4&+ zS*=mvS=2O{k26XDJS-f-Wo0@h+jA<7gzKJGaoTLCTG?Pzh`2*dLWsF)JiD}G7mDa@ z*PbS1OUz_TCPzNZ-iP=^_QcX-FK!3tmvq<7dEi#xLRtmawELODS%OU_h`J+SNL zyKZ*RkY+#$P9!(b&m5auMAz;o$!q0W?0pxX0QC)z;2LQz=Fdm(cCOy5SC4RW-@4y4 z{A8a??^!*-f6BmbSa9%4I2_bOm|_}ta=XEF-jF`{_Y3-JX0fGnKhW=ZOsVDMyiUP` z)eJeHIa75c9fL_~Ls@QJ^1W^)wT=sYHzg!`HIqw2e=sx?Bt{q1>Z?^N!DTL{I}$BO zgj{N69>cra3p#P7-N<55j2*^$(SbUIlbt|^8_cYKDKE1T#fhc61>3PG9xMGrd1E>B zx%i63f0NQ*y6duO{D$Y_{Wn@JB77P20_ z>fk7e7k3$atJc4< zSopp&7_p!7b!SoeiOFU1zn+T0l!s%~Kdp&3soatm9B+V(-S$mH(lEydMw}c(@%jrG z{_o5x^WCE06m}r$UMq0)=VjQ86A!mB+YqB$jxNgqa-FE9cg8Y?CSXN(66)efQ{iNf zsf(t3M5ozeWN#!dA~mrdCX(=yYuJtb!ZkC%d6OsNw-F?FA->Y{L%!)QcWW(Hm|PlG?=l?=8gC zCYya}#J&^67&1eRXA+~K#Z3dkC=X0I)aPm#wpLNCZhxF$&iGwQ&mqIaE;-}Tq(Ob@ z+JcmWfE1@tFB_t5 z%t+3`FoW@Fxp1iuewQ5+o-RVR+9u*zy-V}~5P6=8RkR&nHn(_En9Z&}7{S?}iwoBf z&apA+NQ)@FS;66JEtnp9+fJ!u&7&;dUk5f?y4}uW8E9#fK*3`q+0fnbV@3OvW(YfvG(SX za5rzOOpkwAJJ>pSWD6cin6`5a-~!ZrV=RvTYaZ zM2FH4-1wBXc6CO-o_(3*qb}oR$?x!q{y^IVBteX~*3x0N#LFnpA(F|^MOafqD8wv| zwiB7b7NE4P`X4{HG}L&MemK`B4x#sKUByvhwOTyGA8N{o?%}F%I}Fn$1f%tOdg`|M zOnYI5lXk5v&z|4*R9n~Lx|i;p(t;VXY%qy^;YgU2LEwUhTS;fnYEXGrM-Ud&FZ&6sX%$>7gUMolxqgSOw3hKCSfRXUXM z<2indB8hSscO5q}J`}87vpQR6##LmR$P79t8Q3^dSJFbQlTUUDo^C1;OsIbid^eMXN!+|r#`zwKB(^zb}77G zC~cdUZUI>4a@5rNL2~bHu?S(kG-dn5oRHhAAFMp-@I5t0G~eSz&JrGN6gXr2vqU~Y z<2_S%;E2SZyO%?w8ds!?72Wp#0VXFD&^A$Sy+f*XjU9~SFU6JxxFD-8*0gJ@>uI_1 zTq%CoXS%{~{yx5Qxm#0@2RZB5jfCaRtEWrbT47O?1*D*NJ4sblL*%Ue2lH}pL13eY z9PAW_AFj%Rbv;12va-UNy;Dm^d!{c+Q(uW)AozM8Vexbh14W@_pRK6$c&eV#%#a^D z?Z<(DW%#Bn+9iyIjQ6y;>ZcZgFRl{8?as?oU--yBf@!&gncwX5^}90~YwY9>)yD40 z#(A`1o0vw!>Fkehi~UASaJBGq*>K5IB}Qaf(JsI?)Ej_|kD2ZaL}wUmG|?)&6Z4#D z0))&;*6W{QZPmSHs0rEPg=52QB7;|VD-hkZy4`kvpMuopgy%t}lU50-bJoB<+b$?= z&_8_&7}-bD_0n~}`EP89b5Q9nr3b}jx zbljbDs6{PGORYbniji^YbYpbfR)YMpW z@E4yOA|$;+@xMUG-{}>+G=P-0;b~F0f4{RTI4ZF@Aj5;#Xm!zrJjd;@i&)@b(m%6v zEY%ur7fv>9dkCLsY+Ue4Y63RvY2LXXBjIrmH%AZyTp(a_h&sj(;94%gwH-7ivRw} zFkd=xjATHSjYH)c30&VS_W!Bf(+-mnE!k#!U^%gPsyR&KR+#hVC@q*ljpCYc{6P?z>oyi7-*JXYd)vV;e+rbX9vRsxX(b-1I|6dG)LD|KTo-1>GNLaO99xy;#AZskX`!^v>bvKKW_XA7C$Vv+7RF)=TDoD3m8F7vu@ZGmn>m6hua zQ0VFEbvZHZDV;}{VyYli&;`Ivk$EuiIMPFIvta_c=` z56|3l>|}Bs!&GOXOMsMY+?1_xJW=5`{c!~hu+T{L%xOZV>fU`au{fg*W{+n1e&HK6 z=1>9u28{n6#X|-B|BGJuk5<5cUq7BElzOjI1@$n0pWj1z35AeHDrf5 z`|y@yJYJil1{Lg*JnCGfqrYhNB%s^4V*{rSe(w8z)1hK`-gC}!0Yb_OR|NWIM1F(= zsHVA0vbpbqFR?kCK#KQ<;jz(fsDu~kL zi7$78Ai#d$tRrGwIaSWNa6v_67*6@Ys<3_X$m^+aH`6b4ZdvYOqMZC}$aMM}M>)*8 z%^2^L0D%hifci4Y9nx5QENaVvG$$iwi;-+d0y24=ng1ladZOlzt3kcTl zdF?gMzydD#fb}U4p;#2IV>AwJFK|c~V4CpLOK=0YSB2>-eOu_J#0IrV|&bK!-?uC@&_(9eU@vO0$~#!0!ey z^iVulTifv^i`DW!8pEI0i%QzAakLg)IeX_+gw=W9ULiLlLS%`$f=_do&J+-6N=s+@ zGDyiVvsO@+1`fXeKv6I%PFI0OsMjCibRUk=007Zn2)GI-$Xc_FM52?Qih;u=eUuZO zedvK)DT7Q?ts|QdG3S`6i1s9brV0Q7f^Z1B**RCseA!zp-ac0;rcR&N&wDCLvERTL z3O9k)o-ShXcS8N%+rPB4{98BXKOgA-Pg;X!G^IV+RhN|0c&@KV3z?#?RwGl*vhuoyhW?(aZlypAM`3QxW(} zIb~X3eRVOSKY16#zP#jXugt3Jo?lT7{U|Cr^ec<{zw7bxPj&yhZr4i0Xa5FDRuZ4N zU%+f6hJ>Z)3#M?y#k5zboI}!>^jBQElDBnR+H5(as56M@o@y=2O-{aBK3#Uuh9M!x z7M%^|tCd3x8U&={LKsEwZGWX-7`%9M$Ke%wV-+6*f7gc4i#W&SEAv@Z8Np_P-9%ZEdao=1c>Surop-5-!!{5Xv!sd5m=1e2^`5!5M7 z(zgz_pbRa%6-rzXtlAgwg)Pt2plik4eO-b0nx(#M^D`fgm-UTZt?m2Rtv#`v+Lhw{ z<8Lg_%59EkT`x?Si!3Q}kN3pwzYu0XvDta|Lcma6A;*R(Qb;H+LRSGvn+~xoO-mqS z@z?FI1zPlybX<5{2Sl?nQP~Ji!)jc4qSRTb-E7U^!9YxnOSc@;{B||9v`s~V>C#|7 z+RA&xv8Mmx0#`7XuXa`J)JYs(q5ua-RR%%^97^b`B@sk?+~}zj;nz|(X~{hPh0cp} z8@C66DoF#0OB9fA?L=507w5YH9LXMi3rfSUym|lYY206)%j4D`sMhgY71*ScpLx~1 z&`sD8JK`(tn(+x{;w*GVB8{*L@YEKgs^xT%ECjnY1Z;h}9@9pMXisd76UO#o$ig)( z8eXW0b^)4$Cy}tc1;WWj=_Lrb4p5D5{NYBcwvJK>Io76cI+9~iBKiSTEKXNv=DY-l zY31x(wy`N7S$*2wl&8K*uWZW0CN^2QuLQ3)wfO@F<6e*Go2cKDu`#nl#Hn_pe_E?Q z;rQLlcwg1j^`lE??}k>CJtBP`)2+ik7KH9_!p$;52Cju0TOWM?G-cWJRH2~}%|$Uh z{QA(kDn!k%T_KsqOan%siQd8t4xJflQKsdlnYBi=1)j!S1AfGUZd5n#zm)xQE$ew_ zkFXyfFEg2GvrAH^D}_T>xn7_thlay+0i-UO-wPG zK?iW(-EA{g6HLxN{v|zT3#9EiFBdB#oaAkk-c|GK0mTMRz&JpC=O=2>+DjFCUi5=ns5*rct}4DJUaP2H)3#Be{0Q?K z%W=4D(_7DcU&qb`d(0jdJkR#Ec*%V!iQnJ7Is!)0fF4I~;#zgP;`5mox9`3w{!QdP zQ=29{rTEcpvK_SHCMCF6<R77wqM^WHpD9J#0;wW#}3AwE3$ViUWeZuM^ai) zU@|8mv#Mm38HXQqa!qPLlRnC1^L6m&o86k>Yk; z!KV#-%Jx?7pDoZXeS%T7AV+sg`Sq{le6T7j6pj&TCpFDn2>6Xi@LfevGEDS=fGNH@}J()Lpoyhj%0T{IqE&=%#; zxa)auQ1LewifMuW1dUb9IJ=|E-kzAb=XSaZe)qP(d%O&rlvUoLZ$+%;z=n zK16eirEbkL&XU=I46h!Bi=ppcvMu?Sfef$GhLr{Ijo$hxagpyd&NbI^=dok2p4EVx zvkoe%mKBH>ZyT17Z=3$NoY|9n5V`cZ=6?PSTa0X~G595V$)FNfEv zeYQbr%Fx503FoR84*bjcvHUtu87EU-cv`2*SsD6CD5lR;g0mkE zCfi~!p68)~36f>)h-|1?(g=WAg|_rElJ}Y+DYx&WdSTlPm?<4}#(R#~W|Lc-PH$tz zAsX_Nw2~pXR6(c*6QRU1K+|>0*`|#h@bf3}KBh;%XYwWz;woj)bce8yEJ~eEbpC>)XZ|KW| zB)w_2!nBIbAN8B-y9b|h?6T1pe5^!9;`5uN1N0-Bow%6#amJ<}^ShBp=-wMFy)$7B ze0KtUDeRnWR1#^M$q5)FbIITD$N7PVzIt=5r_9VzB#*ufxc^*6`^|(?B3|4w3h9+0 z3rclM_=yJP2Tv_dCkUX)jd3#C)JW=XXCe(RJqi&sZ4ZM@O`J9Qn44bLFr$z71E59dAH{=)gfg|>3O?B%IXsGpY z(^rBh*mKJO;rpLU)6P0m7T$I&WuH&;pb}O*)-UIJl^U!#LFt#uuD*lUOYwYM{85Au z^A>#PN`VrhOPVkxiOxTJc>!3(@=!}FvMZ0nJOctnNhlXzU~q!f%${`4x$+MDbW4ll zAujlOhI3h-r9M#yZhGa8X~i&|U-%L(eC#uN?L6bC?i3k@|A=}$OZT!qlS=`y%inRbu z+LEImijLvO*U#7O-s_%uXYFC^VYBmyvG#JsHEz`O?+i(%X`d+F50DhC9O| zeMv$P0DyAkg@ju%jpB;-Us9UdTRs)mkrnropfM*1;&~ZG1^g1%`?^)&>+55%gWEmK z0G4ihzoc%|Brdfk@>wCTrf+l0azmNdvAL`d9D}L#xv8(<8XWv7HZ#0VD3MPK9&_vA zyDv6w_BNkcq{WHnAjfqU%pN5oD?H|l;nXS(u8mn-!^ycm7frL3B?eu(GfLbz+c(~0 zKsgQ+^ehtnd|5fTBTp5nh#5R3If?*79rWQ55zx7nl#uUfWibOO$SKfzW=IJ048``# zKeMI$L)jw)n~(R(tv~PAGcx}!zK`R7MD$@z#S5`$#rQ|Is}bAJHK`YzYf`kY%WiAz zRc8)hD`Y2lHA>7zW97XSeO|M0;{RcLhXVge2>chb-~T6#@}Ki&~iJ6zp=0?NPQqr=txC$o0Ay8i@}f5k_KtNTx8?QnJf2`K-H zkB($b9>99P#C_NGnRUIo025BTYwg~Nsfo%Yo@-}eL|l&7PVIO zBh%8lvCYBtN6owG^W=?%mLO5t9??%XZe~_URV$s@ENO_R9nA|UbGy`}y>a{x;rF_a zNA`tg0@-`KDk@cLKS@|F^v54Ouzjoehww>vHntflt>y3!6$`7vl8+rOISgdN$q$#u^tuVX{pNVpRk`S(#s6`#3V##b z>x69Lt)f^DMpcrEG4v11V21N@{)laq_0XWIt`L)MSXcE<$*)jE8DcjEK?N}&EiF4! z0phA)X122b7+R5k#l!kxpAQi@MBosCLj(>HI7HwOfkOli5jaHP5P?Gk4iPv+;1GdB Z1P&26MBosCLj(>HI7Hw-4uRi#{~z9ZTp9oX literal 801473 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

    #QZtWYiW0MEl<;K}@Y} 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 z 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

    0T3CILl%)Yu4fnBjV8_p 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%0Dy?WEn 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

    7754Q56)kxoqL<%vG|`nh2{n@<^xDTA%E{N7 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 zΜ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%0AoGep#R5{Cho&Fx1F)&Q#0}j@1e}Kqyj% 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

    =Dd5RD|XEF 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%0A%J0Cu% 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 V0e}EN03ZMm00{iQB=D}|e*m2+WgGwi From 26460e640b09eba911ec54eddb8a1301418272f0 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 14 Jan 2025 14:43:55 +0100 Subject: [PATCH 066/505] feat(mcp): add JsonIgnoreProperties to schema records for resilient deserialization --- .../org/springframework/ai/mcp/spec/McpSchema.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java index ce274f8..b1073c1 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java @@ -222,6 +222,7 @@ public final class McpSchema { } // @formatter:on @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record InitializeResult( // @formatter:off @JsonProperty("protocolVersion") String protocolVersion, @JsonProperty("capabilities") ServerCapabilities capabilities, @@ -472,12 +473,14 @@ public final class McpSchema { } // @formatter:on @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record ListResourcesResult( // @formatter:off @JsonProperty("resources") List resources, @JsonProperty("nextCursor") String nextCursor) { } // @formatter:on @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record ListResourceTemplatesResult( // @formatter:off @JsonProperty("resourceTemplates") List resourceTemplates, @JsonProperty("nextCursor") String nextCursor) { @@ -489,6 +492,7 @@ public final class McpSchema { } // @formatter:on @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record ReadResourceResult( // @formatter:off @JsonProperty("contents") List contents){ } // @formatter:on @@ -619,6 +623,7 @@ public final class McpSchema { * are more prompts available. */ @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record ListPromptsResult( // @formatter:off @JsonProperty("prompts") List prompts, @JsonProperty("nextCursor") String nextCursor) { @@ -643,6 +648,7 @@ public final class McpSchema { * @param messages A list of messages to display as part of the prompt. */ @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record GetPromptResult( // @formatter:off @JsonProperty("description") String description, @JsonProperty("messages") List messages) { @@ -659,6 +665,7 @@ public final class McpSchema { * are more tools available. */ @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record ListToolsResult( // @formatter:off @JsonProperty("tools") List tools, @JsonProperty("nextCursor") String nextCursor) { @@ -716,6 +723,7 @@ public final class McpSchema { * input schema. */ @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record CallToolRequest(// @formatter:off @JsonProperty("name") String name, @JsonProperty("arguments") Map arguments) implements Request { @@ -730,6 +738,7 @@ public final class McpSchema { * If false or absent, indicates successful execution. */ @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record CallToolResult( // @formatter:off @JsonProperty("content") List content, @JsonProperty("isError") Boolean isError) { @@ -776,6 +785,7 @@ public final class McpSchema { }// @formatter:on @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record CreateMessageResult(// @formatter:off @JsonProperty("role") Role role, @JsonProperty("content") Content content, @@ -837,6 +847,7 @@ public final class McpSchema { } @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record PaginatedResult(@JsonProperty("nextCursor") String nextCursor) { } @@ -1044,6 +1055,7 @@ public final class McpSchema { * that the server can operate on. */ @JsonInclude(JsonInclude.Include.NON_ABSENT) + @JsonIgnoreProperties(ignoreUnknown = true) public record ListRootsResult( // @formatter:off @JsonProperty("roots") List roots) { } // @formatter:on From f3e3a65ca674349645ecf33a049e1dac48bbc8d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CJermaineHua=E2=80=9D?= Date: Tue, 14 Jan 2025 23:59:20 +0800 Subject: [PATCH 067/505] Set method scope properly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: “JermaineHua” --- .../java/org/springframework/ai/mcp/spec/McpSchema.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java index b1073c1..1a9f3d3 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java @@ -98,7 +98,7 @@ public final class McpSchema { // Sampling Methods public static final String METHOD_SAMPLING_CREATE_MESSAGE = "sampling/createMessage"; - private static ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); // --------------------------- // JSON-RPC Error Codes @@ -106,7 +106,7 @@ public final class McpSchema { /** * Standard error codes used in MCP JSON-RPC responses. */ - public final class ErrorCodes { + public static final class ErrorCodes { /** * Invalid JSON was received by the server. @@ -705,7 +705,7 @@ public final class McpSchema { } // @formatter:on - public static JsonSchema parseSchema(String schema) { + private static JsonSchema parseSchema(String schema) { try { return OBJECT_MAPPER.readValue(schema, JsonSchema.class); } From c2ece20cc2267cf7ea59c7b7cfe966e804c85e3f Mon Sep 17 00:00:00 2001 From: Alexandros Pappas Date: Thu, 16 Jan 2025 15:28:35 +0100 Subject: [PATCH 068/505] feat: Make SSE endpoint configurable in server transports This commit updates the WebFluxSseServerTransport, WebMvcSseServerTransport, and HttpServletSseServerTransport classes to accept the SSE endpoint path as a constructor argument. This change provides more flexibility in configuring the SSE endpoint, allowing it to be customized instead of being hardcoded to "/sse". It also aligns the Java SDK's behavior with the Python SDK's SseServerTransport, which already supports this customization. A default SSE endpoint of "/sse" is maintained for backward compatibility. Also, addressed minor code quality issues identified by SonarLint and reordered modifiers for static final fields to conform with the Java Language Specification. Signed-off-by: Alexandros Pappas --- .../transport/WebFluxSseClientTransport.java | 10 ++-- .../transport/WebFluxSseServerTransport.java | 41 +++++++++----- .../transport/WebMvcSseServerTransport.java | 32 ++++++++--- .../ai/mcp/client/McpAsyncClient.java | 8 +-- .../HttpClientSseClientTransport.java | 10 ++-- .../ai/mcp/server/McpAsyncServer.java | 8 +-- .../ai/mcp/server/McpServer.java | 2 +- .../HttpServletSseServerTransport.java | 56 +++++++++++++------ .../ai/mcp/spec/McpSchema.java | 2 +- .../ai/mcp/spec/DefaultMcpSessionTests.java | 2 +- 10 files changed, 112 insertions(+), 59 deletions(-) diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java index 0505372..a4605c6 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java @@ -72,31 +72,31 @@ import org.springframework.web.reactive.function.client.WebClient; */ public class WebFluxSseClientTransport implements ClientMcpTransport { - private final static Logger logger = LoggerFactory.getLogger(WebFluxSseClientTransport.class); + private static final Logger logger = LoggerFactory.getLogger(WebFluxSseClientTransport.class); /** * Event type for JSON-RPC messages received through the SSE connection. The server * sends messages with this event type to transmit JSON-RPC protocol data. */ - private final static String MESSAGE_EVENT_TYPE = "message"; + private static final String MESSAGE_EVENT_TYPE = "message"; /** * Event type for receiving the message endpoint URI from the server. The server MUST * send this event when a client connects, providing the URI where the client should * send its messages via HTTP POST. */ - private final static String ENDPOINT_EVENT_TYPE = "endpoint"; + private static final String ENDPOINT_EVENT_TYPE = "endpoint"; /** * Default SSE endpoint path as specified by the MCP transport specification. This * endpoint is used to establish the SSE connection with the server. */ - private final static String SSE_ENDPOINT = "/sse"; + private static final String SSE_ENDPOINT = "/sse"; /** * Type reference for parsing SSE events containing string data. */ - private final static ParameterizedTypeReference> SSE_TYPE = new ParameterizedTypeReference<>() { + private static final ParameterizedTypeReference> SSE_TYPE = new ParameterizedTypeReference<>() { }; /** diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java index 88812ad..6126eba 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java @@ -57,32 +57,35 @@ import org.springframework.web.reactive.function.server.ServerResponse; * {@link Sinks} for thread-safe message broadcasting. * * @author Christian Tzolov + * @author Alexandros Pappas * @see ServerMcpTransport * @see ServerSentEvent */ public class WebFluxSseServerTransport implements ServerMcpTransport { - private final static Logger logger = LoggerFactory.getLogger(WebFluxSseServerTransport.class); + private static final Logger logger = LoggerFactory.getLogger(WebFluxSseServerTransport.class); /** * Event type for JSON-RPC messages sent through the SSE connection. */ - public final static String MESSAGE_EVENT_TYPE = "message"; + public static final String MESSAGE_EVENT_TYPE = "message"; /** * Event type for sending the message endpoint URI to clients. */ - public final static String ENDPOINT_EVENT_TYPE = "endpoint"; + public static final String ENDPOINT_EVENT_TYPE = "endpoint"; /** * Default SSE endpoint path as specified by the MCP transport specification. */ - public final static String SSE_ENDPOINT = "/sse"; + public static final String DEFAULT_SSE_ENDPOINT = "/sse"; private final ObjectMapper objectMapper; private final String messageEndpoint; + private final String sseEndpoint; + private final RouterFunction routerFunction; /** @@ -106,18 +109,34 @@ public class WebFluxSseServerTransport implements ServerMcpTransport { * setup. Must not be null. * @throws IllegalArgumentException if either parameter is null */ - public WebFluxSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { + public WebFluxSseServerTransport(ObjectMapper objectMapper, String messageEndpoint, String sseEndpoint) { Assert.notNull(objectMapper, "ObjectMapper must not be null"); Assert.notNull(messageEndpoint, "Message endpoint must not be null"); + Assert.notNull(sseEndpoint, "SSE endpoint must not be null"); this.objectMapper = objectMapper; this.messageEndpoint = messageEndpoint; + this.sseEndpoint = sseEndpoint; this.routerFunction = RouterFunctions.route() - .GET(SSE_ENDPOINT, this::handleSseConnection) - .POST(messageEndpoint, this::handleMessage) + .GET(this.sseEndpoint, this::handleSseConnection) + .POST(this.messageEndpoint, this::handleMessage) .build(); } + /** + * Constructs a new WebFlux SSE server transport instance with the default SSE + * endpoint. + * @param objectMapper The ObjectMapper to use for JSON serialization/deserialization + * of MCP messages. Must not be null. + * @param messageEndpoint The endpoint URI where clients should send their JSON-RPC + * messages. This endpoint will be communicated to clients during SSE connection + * setup. Must not be null. + * @throws IllegalArgumentException if either parameter is null + */ + public WebFluxSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { + this(objectMapper, messageEndpoint, DEFAULT_SSE_ENDPOINT); + } + /** * Configures the message handler for this transport. In the WebFlux SSE * implementation, this method stores the handler for processing incoming messages but @@ -243,7 +262,7 @@ public class WebFluxSseServerTransport implements ServerMcpTransport { *

    * The router function defines two endpoints: *

      - *
    • GET {SSE_ENDPOINT} - For establishing SSE connections
    • + *
    • GET {sseEndpoint} - For establishing SSE connections
    • *
    • POST {messageEndpoint} - For receiving client messages
    • *
    * @return The configured {@link RouterFunction} for handling HTTP requests @@ -343,11 +362,7 @@ public class WebFluxSseServerTransport implements ServerMcpTransport { .bodyValue(new McpError(error.getMessage())); }); } - catch (IllegalArgumentException e) { - logger.error("Failed to deserialize message: {}", e.getMessage()); - return ServerResponse.badRequest().bodyValue(new McpError("Invalid message format")); - } - catch (IOException e) { + catch (IllegalArgumentException | IOException e) { logger.error("Failed to deserialize message: {}", e.getMessage()); return ServerResponse.badRequest().bodyValue(new McpError("Invalid message format")); } diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java index cc01f36..cee0b48 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java @@ -70,32 +70,35 @@ import org.springframework.web.servlet.function.ServerResponse.SseBuilder; * maintains its own SSE connection. * * @author Christian Tzolov + * @author Alexandros Pappas * @see ServerMcpTransport * @see RouterFunction */ public class WebMvcSseServerTransport implements ServerMcpTransport { - private final static Logger logger = LoggerFactory.getLogger(WebMvcSseServerTransport.class); + private static final Logger logger = LoggerFactory.getLogger(WebMvcSseServerTransport.class); /** * Event type for JSON-RPC messages sent through the SSE connection. */ - public final static String MESSAGE_EVENT_TYPE = "message"; + public static final String MESSAGE_EVENT_TYPE = "message"; /** * Event type for sending the message endpoint URI to clients. */ - public final static String ENDPOINT_EVENT_TYPE = "endpoint"; + public static final String ENDPOINT_EVENT_TYPE = "endpoint"; /** * Default SSE endpoint path as specified by the MCP transport specification. */ - public final static String SSE_ENDPOINT = "/sse"; + public static final String DEFAULT_SSE_ENDPOINT = "/sse"; private final ObjectMapper objectMapper; private final String messageEndpoint; + private final String sseEndpoint; + private final RouterFunction routerFunction; /** @@ -122,18 +125,33 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { * SSE connection's initial endpoint event. * @throws IllegalArgumentException if either objectMapper or messageEndpoint is null */ - public WebMvcSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { + public WebMvcSseServerTransport(ObjectMapper objectMapper, String messageEndpoint, String sseEndpoint) { Assert.notNull(objectMapper, "ObjectMapper must not be null"); Assert.notNull(messageEndpoint, "Message endpoint must not be null"); + Assert.notNull(sseEndpoint, "SSE endpoint must not be null"); this.objectMapper = objectMapper; this.messageEndpoint = messageEndpoint; + this.sseEndpoint = sseEndpoint; this.routerFunction = RouterFunctions.route() - .GET(SSE_ENDPOINT, this::handleSseConnection) - .POST(messageEndpoint, this::handleMessage) + .GET(this.sseEndpoint, this::handleSseConnection) + .POST(this.messageEndpoint, this::handleMessage) .build(); } + /** + * Constructs a new WebMvcSseServerTransport instance with the default SSE endpoint. + * @param objectMapper The ObjectMapper to use for JSON serialization/deserialization + * of messages. + * @param messageEndpoint The endpoint URI where clients should send their JSON-RPC + * messages via HTTP POST. This endpoint will be communicated to clients through the + * SSE connection's initial endpoint event. + * @throws IllegalArgumentException if either objectMapper or messageEndpoint is null + */ + public WebMvcSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { + this(objectMapper, messageEndpoint, DEFAULT_SSE_ENDPOINT); + } + /** * Sets up the message handler for this transport. In the WebMVC SSE implementation, * this method only stores the handler for later use, as connections are initiated by diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index 004cbc7..7b7958a 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -62,7 +62,7 @@ import org.springframework.ai.mcp.util.Utils; */ public class McpAsyncClient { - private final static Logger logger = LoggerFactory.getLogger(McpAsyncClient.class); + private static final Logger logger = LoggerFactory.getLogger(McpAsyncClient.class); private static TypeReference VOID_TYPE_REFERENCE = new TypeReference<>() { }; @@ -498,7 +498,7 @@ public class McpAsyncClient { logger.error("Error handling tools list change notification", error); return Mono.empty(); }).then(); // Convert to Mono - }; + } // -------------------------- // Resources @@ -619,7 +619,7 @@ public class McpAsyncClient { logger.error("Error handling resources list change notification", error); return Mono.empty(); }).then(); - }; + } // -------------------------- // Prompts @@ -680,7 +680,7 @@ public class McpAsyncClient { return Mono.empty(); }).then(); // Convert to Mono }; // @formatter:on - }; + } // -------------------------- // Logging diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java index 9284806..68f1032 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java @@ -70,16 +70,16 @@ import java.util.function.Function; */ public class HttpClientSseClientTransport implements ClientMcpTransport { - private final static Logger logger = LoggerFactory.getLogger(HttpClientSseClientTransport.class); + private static final Logger logger = LoggerFactory.getLogger(HttpClientSseClientTransport.class); /** SSE event type for JSON-RPC messages */ - private final static String MESSAGE_EVENT_TYPE = "message"; + private static final String MESSAGE_EVENT_TYPE = "message"; /** SSE event type for endpoint discovery */ - private final static String ENDPOINT_EVENT_TYPE = "endpoint"; + private static final String ENDPOINT_EVENT_TYPE = "endpoint"; /** Default SSE endpoint path */ - private final static String SSE_ENDPOINT = "/sse"; + private static final String SSE_ENDPOINT = "/sse"; /** Base URI for the MCP server */ private final String baseUri; @@ -170,7 +170,7 @@ public class HttpClientSseClientTransport implements ClientMcpTransport { handler.apply(Mono.just(message)).subscribe(); } else { - logger.error("Received unrecognized SSE event type: " + event.type()); + logger.error("Received unrecognized SSE event type: {}", event.type()); } } catch (IOException e) { diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index fa8c512..37d0c65 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -54,7 +54,7 @@ import org.springframework.ai.mcp.util.Utils; */ public class McpAsyncServer { - private final static Logger logger = LoggerFactory.getLogger(McpAsyncServer.class); + private static final Logger logger = LoggerFactory.getLogger(McpAsyncServer.class); /** * The MCP session implementation that manages bidirectional JSON-RPC communication @@ -279,7 +279,7 @@ public class McpAsyncServer { return Mono.empty(); }).then(); }; - }; + } // --------------------------------------- // Tool Management @@ -352,9 +352,7 @@ public class McpAsyncServer { private DefaultMcpSession.RequestHandler toolsListRequestHandler() { return params -> { - List tools = this.tools.stream().map(toolRegistration -> { - return toolRegistration.tool(); - }).toList(); + List tools = this.tools.stream().map(ToolRegistration::tool).toList(); return Mono.just(new McpSchema.ListToolsResult(tools, null)); }; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java index 362491b..e5fec07 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java @@ -208,7 +208,7 @@ public interface McpServer { */ public static class Builder { - private final static McpSchema.Implementation DEFAULT_SERVER_INFO = new McpSchema.Implementation("mcp-server", + private static final McpSchema.Implementation DEFAULT_SERVER_INFO = new McpSchema.Implementation("mcp-server", "1.0.0"); private final ServerMcpTransport transport; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java index 4857a60..d5ae27b 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java @@ -63,6 +63,7 @@ import org.springframework.ai.mcp.spec.ServerMcpTransport; * * * @author Christian Tzolov + * @author Alexandros Pappas * @see ServerMcpTransport * @see HttpServlet */ @@ -73,8 +74,14 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server /** Logger for this class */ private static final Logger logger = LoggerFactory.getLogger(HttpServletSseServerTransport.class); - /** The endpoint path for SSE connections */ - public static final String SSE_ENDPOINT = "/sse"; + public static final String UTF_8 = "UTF-8"; + + public static final String APPLICATION_JSON = "application/json"; + + public static final String FAILED_TO_SEND_ERROR_RESPONSE = "Failed to send error response: {}"; + + /** Default endpoint path for SSE connections */ + public static final String DEFAULT_SSE_ENDPOINT = "/sse"; /** Event type for regular messages */ public static final String MESSAGE_EVENT_TYPE = "message"; @@ -88,6 +95,9 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server /** The endpoint path for handling client messages */ private final String messageEndpoint; + /** The endpoint path for handling SSE connections */ + private final String sseEndpoint; + /** Map of active client sessions, keyed by session ID */ private final Map sessions = new ConcurrentHashMap<>(); @@ -98,14 +108,26 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server private Function, Mono> connectHandler; /** - * Creates a new HttpServletSseServerTransport instance. + * Creates a new HttpServletSseServerTransport instance with a custom SSE endpoint. + * @param objectMapper The JSON object mapper to use for message + * serialization/deserialization + * @param messageEndpoint The endpoint path where clients will send their messages + * @param sseEndpoint The endpoint path where clients will establish SSE connections + */ + public HttpServletSseServerTransport(ObjectMapper objectMapper, String messageEndpoint, String sseEndpoint) { + this.objectMapper = objectMapper; + this.messageEndpoint = messageEndpoint; + this.sseEndpoint = sseEndpoint; + } + + /** + * Creates a new HttpServletSseServerTransport instance with the default SSE endpoint. * @param objectMapper The JSON object mapper to use for message * serialization/deserialization * @param messageEndpoint The endpoint path where clients will send their messages */ public HttpServletSseServerTransport(ObjectMapper objectMapper, String messageEndpoint) { - this.objectMapper = objectMapper; - this.messageEndpoint = messageEndpoint; + this(objectMapper, messageEndpoint, DEFAULT_SSE_ENDPOINT); } /** @@ -124,7 +146,7 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server throws ServletException, IOException { String pathInfo = request.getPathInfo(); - if (!SSE_ENDPOINT.equals(pathInfo)) { + if (!sseEndpoint.equals(pathInfo)) { response.sendError(HttpServletResponse.SC_NOT_FOUND); return; } @@ -135,7 +157,7 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server } response.setContentType("text/event-stream"); - response.setCharacterEncoding("UTF-8"); + response.setCharacterEncoding(UTF_8); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Connection", "keep-alive"); response.setHeader("Access-Control-Allow-Origin", "*"); @@ -191,8 +213,8 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server if (connectHandler != null) { connectHandler.apply(Mono.just(message)).subscribe(responseMessage -> { try { - response.setContentType("application/json"); - response.setCharacterEncoding("UTF-8"); + response.setContentType(APPLICATION_JSON); + response.setCharacterEncoding(UTF_8); String jsonResponse = objectMapper.writeValueAsString(responseMessage); PrintWriter writer = response.getWriter(); writer.write(jsonResponse); @@ -205,15 +227,15 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server "Error processing response: " + e.getMessage()); } catch (IOException ex) { - logger.error("Failed to send error response: {}", ex.getMessage()); + logger.error(FAILED_TO_SEND_ERROR_RESPONSE, ex.getMessage()); } } }, error -> { try { logger.error("Error processing message: {}", error.getMessage()); McpError mcpError = new McpError(error.getMessage()); - response.setContentType("application/json"); - response.setCharacterEncoding("UTF-8"); + response.setContentType(APPLICATION_JSON); + response.setCharacterEncoding(UTF_8); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); String jsonError = objectMapper.writeValueAsString(mcpError); PrintWriter writer = response.getWriter(); @@ -221,13 +243,13 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server writer.flush(); } catch (IOException e) { - logger.error("Failed to send error response: {}", e.getMessage()); + logger.error(FAILED_TO_SEND_ERROR_RESPONSE, e.getMessage()); try { response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Error sending error response: " + e.getMessage()); } catch (IOException ex) { - logger.error("Failed to send error response: {}", ex.getMessage()); + logger.error(FAILED_TO_SEND_ERROR_RESPONSE, ex.getMessage()); } } }); @@ -240,8 +262,8 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server logger.error("Invalid message format: {}", e.getMessage()); try { McpError mcpError = new McpError("Invalid message format: " + e.getMessage()); - response.setContentType("application/json"); - response.setCharacterEncoding("UTF-8"); + response.setContentType(APPLICATION_JSON); + response.setCharacterEncoding(UTF_8); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); String jsonError = objectMapper.writeValueAsString(mcpError); PrintWriter writer = response.getWriter(); @@ -249,7 +271,7 @@ public class HttpServletSseServerTransport extends HttpServlet implements Server writer.flush(); } catch (IOException ex) { - logger.error("Failed to send error response: {}", ex.getMessage()); + logger.error(FAILED_TO_SEND_ERROR_RESPONSE, ex.getMessage()); response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid message format"); } } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java index 1a9f3d3..e107fb6 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java @@ -140,7 +140,7 @@ public final class McpSchema { } - private final static TypeReference> MAP_TYPE_REF = new TypeReference<>() { + private static final TypeReference> MAP_TYPE_REF = new TypeReference<>() { }; /** diff --git a/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java b/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java index 658c49a..acf7c44 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java @@ -42,7 +42,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; */ class DefaultMcpSessionTests { - private final static Logger logger = LoggerFactory.getLogger(DefaultMcpSessionTests.class); + private static final Logger logger = LoggerFactory.getLogger(DefaultMcpSessionTests.class); private static final Duration TIMEOUT = Duration.ofSeconds(5); From f333265c5f1e4d6e768d9d8550c66d33e0e15b43 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 17 Jan 2025 06:59:34 +0100 Subject: [PATCH 069/505] Minor doc link fixes --- README.md | 4 ++-- mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ef35c56..8b01c23 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,9 @@ It enables Java applications to interact with AI models and tools through a stan ### [MCP Java SDK](https://docs.spring.io/spring-ai-mcp/reference/mcp.html) Java implementation of the Model Context Protocol specification. It includes: -- Synchronous and asynchronous [MCP Client](https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#client-usage-examples) and [MCP Server](https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/README.md#server-usage-examples) implementations +- Synchronous and asynchronous [MCP Client](https://docs.spring.io/spring-ai-mcp/reference/mcp.html#_mcp_client) and [MCP Server](https://docs.spring.io/spring-ai-mcp/reference/mcp.html#_mcp_server) implementations - Standard MCP operations support (tool discovery, resource management, prompt handling, structured logging). Support for request and notification handling. -- [Stdio](https://spec.modelcontextprotocol.io/specification/basic/transports/#stdio) and [SSE](https://spec.modelcontextprotocol.io/specification/basic/transports/#http-with-sse) transport implementations. +- [Stdio](https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/transports/#stdio) and [SSE](https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/transports/#http-with-sse) transport implementations. ### MCP Transports diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index f19d960..9faf8fe 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -107,6 +107,7 @@ Key Interactions: * *Prompt System*: Discovery, parameter-based retrieval, change notifications, and content management. * *Tool Execution*: Discovery, parameter validation, timeout-aware execution, and result processing. +[[mcp-client]] == MCP Client The MCP Client is a key component in the Model Context Protocol (MCP) architecture, responsible for establishing and managing connections with MCP servers. It implements the client-side of the protocol, handling: @@ -338,6 +339,7 @@ This capability allows: * Support for both text and image-based interactions * Optional inclusion of MCP server context in prompts +[[mcp-server]] == MCP Server The MCP Server is a foundational component in the Model Context Protocol (MCP) architecture that provides tools, resources, and capabilities to clients. It implements the server-side of the protocol, responsible for: From e1bdc9881337c41444305741a428b41c418bd4d1 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 17 Jan 2025 07:11:04 +0100 Subject: [PATCH 070/505] Add a ref docs link in the README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8b01c23..f6116ae 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ # Java & Spring MCP - [![Build Status](https://github.com/spring-projects-experimental/spring-ai-mcp/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/spring-projects-experimental/spring-ai-mcp/actions/workflows/continuous-integration.yml) Set of projects that provide Java SDK and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. +## 📚 Reference Documentation +For comprehensive guides and API documentation, visit the [Spring AI MCP Reference Documentation](https://docs.spring.io/spring-ai-mcp/reference/overview.html). + From 6839d3b74005520ea44942927a0634999474567f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dariusz=20J=C4=99drzejczyk?= Date: Mon, 20 Jan 2025 18:33:06 +0100 Subject: [PATCH 071/505] Refactor McpClient for async and sync interactions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce new builder patterns and enhance type safety - Add new builder patterns for McpClient and McpServer with sync/async variants - Introduce dedicated McpClientFeatures and McpServerFeatures classes - Enhance type safety and reactive support with proper Mono integration - Add migration guide for 0.6.0 release - Mark old builder methods as deprecated - Update documentation to reflect new APIs BREAKING CHANGE: The old builder patterns using McpClient.using() and McpServer.using() are now deprecated in favor of new sync() and async() builders that provide better type safety and clearer sync/async separation. Follow the migration guide. Resolves #48 Signed-off-by: Dariusz Jędrzejczyk Co-authored-by: Christian Tzolov --- mcp-docs/0.6.0-MIGRATION-GUIDE.md | 258 ++++ .../main/antora/modules/ROOT/pages/mcp.adoc | 90 +- .../BlaAbstractMcpAsyncClientTests.java | 46 +- .../client/BlaAbstractMcpSyncClientTests.java | 20 +- .../BlaAbstractMcpAsyncServerTests.java | 170 ++- .../server/BlaAbstractMcpSyncServerTests.java | 121 +- .../ai/mcp/WebFluxSseIntegrationTests.java | 74 +- .../mcp/server/WebMvcSseIntegrationTests.java | 73 +- .../ai/mcp/client/McpAsyncClient.java | 194 ++- .../ai/mcp/client/McpClient.java | 464 ++++++- .../ai/mcp/client/McpClientFeatures.java | 200 +++ .../ai/mcp/client/McpSyncClient.java | 31 +- .../ai/mcp/server/McpAsyncServer.java | 385 ++++-- .../ai/mcp/server/McpServer.java | 1091 +++++++++++++++-- .../ai/mcp/server/McpServerFeatures.java | 399 ++++++ .../ai/mcp/server/McpSyncServer.java | 123 +- .../ai/mcp/spec/DefaultMcpSession.java | 10 +- .../client/AbstractMcpAsyncClientTests.java | 46 +- .../client/AbstractMcpSyncClientTests.java | 20 +- .../McpAsyncClientResponseHandlerTests.java | 44 +- .../server/AbstractMcpAsyncServerTests.java | 169 ++- .../server/AbstractMcpSyncServerTests.java | 122 +- ...letSseServerTransportIntegrationTests.java | 50 +- .../ai/mcp/spec/DefaultMcpSessionTests.java | 2 +- .../ai/mcp/spring/ToolHelper.java | 51 + 25 files changed, 3497 insertions(+), 756 deletions(-) create mode 100644 mcp-docs/0.6.0-MIGRATION-GUIDE.md create mode 100644 mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java create mode 100644 mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java diff --git a/mcp-docs/0.6.0-MIGRATION-GUIDE.md b/mcp-docs/0.6.0-MIGRATION-GUIDE.md new file mode 100644 index 0000000..37592d0 --- /dev/null +++ b/mcp-docs/0.6.0-MIGRATION-GUIDE.md @@ -0,0 +1,258 @@ +# Spring AI MCP 0.5.0 Migration Guide + +This guide outlines the steps required to migrate your code to Spring AI MCP 0.6.0. + +## Key Changes + +- New builder patterns for `McpClient` and `McpServer` +- Introduction of dedicated feature classes for sync/async operations +- Enhanced type safety and reactive support +- Deprecated methods and classes marked for removal + +## Client Migration + +### Creating Clients + +Before: +```java +// Sync client +McpClient.using(transport) + .requestTimeout(Duration.ofSeconds(5)) + .sync(); + +// Async client +McpClient.using(transport) + .requestTimeout(Duration.ofSeconds(5)) + .async(); +``` + +After: +```java +// Sync client +McpClient.sync(transport) + .requestTimeout(Duration.ofSeconds(5)) + .build(); + +// Async client +McpClient.async(transport) + .requestTimeout(Duration.ofSeconds(5)) + .build(); +``` + +### Change Consumers + +Before: +```java +// Sync client +McpClient.using(transport) + .toolsChangeConsumer(tools -> handleTools(tools)) + .resourcesChangeConsumer(resources -> handleResources(resources)) + .promptsChangeConsumer(prompts -> handlePrompts(prompts)) + .sync(); + +// Async client +McpClient.using(transport) + .toolsChangeConsumer(tools -> handleTools(tools)) + .resourcesChangeConsumer(resources -> handleResources(resources)) + .promptsChangeConsumer(prompts -> handlePrompts(prompts)) + .async(); +``` + +After: +```java +// Sync client +McpClient.sync(transport) + .toolsChangeConsumer(tools -> handleTools(tools)) + .resourcesChangeConsumer(resources -> handleResources(resources)) + .promptsChangeConsumer(prompts -> handlePrompts(prompts)) + .build(); + +// Async client +McpClient.async(transport) + .toolsChangeConsumer(tools -> Mono.fromRunnable(() -> handleTools(tools))) + .resourcesChangeConsumer(resources -> Mono.fromRunnable(() -> handleResources(resources))) + .promptsChangeConsumer(prompts -> Mono.fromRunnable(() -> handlePrompts(prompts))) + .build(); +``` + +### Sampling Handlers + +Before: +```java +// Sync client +McpClient.using(transport) + .sampling(request -> new CreateMessageResult("response")) + .sync(); + +// Async client +McpClient.using(transport) + .sampling(request -> new CreateMessageResult("response")) + .async(); +``` + +After: +```java +// Sync client +McpClient.sync(transport) + .sampling(request -> new CreateMessageResult("response")) + .build(); + +// Async client +McpClient.async(transport) + .sampling(request -> Mono.just(new CreateMessageResult("response"))) + .build(); +``` + +## Server Migration + +### Creating Servers + +Before: +```java +// Sync server +McpServer.using(transport) + .serverInfo("test-server", "1.0.0") + .sync(); + +// Async server +McpServer.using(transport) + .serverInfo("test-server", "1.0.0") + .async(); +``` + +After: +```java +// Sync server +McpServer.sync(transport) + .serverInfo("test-server", "1.0.0") + .build(); + +// Async server +McpServer.async(transport) + .serverInfo("test-server", "1.0.0") + .build(); +``` + +### Tool Registration + +Before: +```java +// Using ToolRegistration record +new ToolRegistration( + new Tool("calculator", "Performs calculations", schema), + args -> new CallToolResult("result") +); +``` + +After: +```java +// Sync server +new McpServerFeatures.SyncToolRegistration( + new Tool("calculator", "Performs calculations", schema), + args -> new CallToolResult("result") +); + +// Async server +new McpServerFeatures.AsyncToolRegistration( + new Tool("calculator", "Performs calculations", schema), + args -> Mono.just(new CallToolResult("result")) +); +``` + +### Resource Registration + +Before: +```java +// Using ResourceRegistration record +new ResourceRegistration( + new Resource("docs", "Documentation", "text/markdown"), + request -> new ReadResourceResult(content) +); +``` + +After: +```java +// Sync server +new McpServerFeatures.SyncResourceRegistration( + new Resource("docs", "Documentation", "text/markdown"), + request -> new ReadResourceResult(content) +); + +// Async server +new McpServerFeatures.AsyncResourceRegistration( + new Resource("docs", "Documentation", "text/markdown"), + request -> Mono.just(new ReadResourceResult(content)) +); +``` + +### Prompt Registration + +Before: +```java +// Using PromptRegistration record +new PromptRegistration( + new Prompt("analyze", "Code analysis"), + request -> new GetPromptResult("result") +); +``` + +After: +```java +// Sync server +new McpServerFeatures.SyncPromptRegistration( + new Prompt("analyze", "Code analysis"), + request -> new GetPromptResult("result") +); + +// Async server +new McpServerFeatures.AsyncPromptRegistration( + new Prompt("analyze", "Code analysis"), + request -> Mono.just(new GetPromptResult("result")) +); +``` + +## Spring Integration Changes + +### Tool Helper Changes + +Before: +```java +ToolHelper.toToolRegistration(functionCallback); +ToolHelper.toToolRegistration(functionCallbacks); +``` + +After: +```java +ToolHelper.toSyncToolRegistration(functionCallback); +ToolHelper.toSyncToolRegistration(functionCallbacks); +``` + +## Deprecated APIs + +The following APIs are deprecated and will be removed in a future release: + +- `McpClient.using()` - Use `McpClient.sync()` or `McpClient.async()` instead +- `McpServer.using()` - Use `McpServer.sync()` or `McpServer.async()` instead +- `McpServer.ToolRegistration` - Use `McpServerFeatures.SyncToolRegistration` or `McpServerFeatures.AsyncToolRegistration` instead +- `McpServer.ResourceRegistration` - Use `McpServerFeatures.SyncResourceRegistration` or `McpServerFeatures.AsyncResourceRegistration` instead +- `McpServer.PromptRegistration` - Use `McpServerFeatures.SyncPromptRegistration` or `McpServerFeatures.AsyncPromptRegistration` instead +- `ToolHelper.toToolRegistration()` - Use `ToolHelper.toSyncToolRegistration()` instead + +## Benefits of Migration + +1. **Improved Type Safety**: The new builder patterns and feature classes provide better compile-time type checking. + +2. **Clear Async/Sync Separation**: Distinct builders and features for sync and async operations make the code intent clearer. + +3. **Enhanced Reactive Support**: Async operations now properly integrate with Project Reactor's `Mono` type. + +4. **Better Error Handling**: More consistent error handling across sync and async operations. + +5. **Simplified Configuration**: Builder patterns provide a more intuitive way to configure clients and servers. + +## Additional Notes + +- The migration primarily focuses on builder patterns and feature organization +- Functional behavior remains the same after migration +- Async operations now properly integrate with Project Reactor +- All deprecated APIs will continue to work but will be removed in a future release diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index 9faf8fe..dd3ed6f 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -129,14 +129,14 @@ Sync API:: [source,java] ---- // Create a sync client with custom configuration -McpSyncClient client = McpClient.using(transport) +McpSyncClient client = McpClient.sync(transport) .requestTimeout(Duration.ofSeconds(10)) .capabilities(ClientCapabilities.builder() .roots(true) // Enable roots capability .sampling() // Enable sampling capability .build()) - .sampling( request -> new CreateMessageResult(response)) - .sync(); + .sampling(request -> new CreateMessageResult(response)) + .build(); // Initialize connection client.initialize(); @@ -175,23 +175,23 @@ Async API:: [source,java] ---- // Create an async client with custom configuration -McpAsyncClient client = McpClient.using(transport) +McpAsyncClient client = McpClient.async(transport) .requestTimeout(Duration.ofSeconds(10)) .capabilities(ClientCapabilities.builder() .roots(true) // Enable roots capability .sampling() // Enable sampling capability .build()) - .sampling( request -> new CreateMessageResult(response)) - .toolsChangeConsumer(tools -> { + .sampling(request -> Mono.just(new CreateMessageResult(response))) + .toolsChangeConsumer(tools -> Mono.fromRunnable(() -> { logger.info("Tools updated: {}", tools); - }) - .resourcesChangeConsumer(resources -> { + })) + .resourcesChangeConsumer(resources -> Mono.fromRunnable(() -> { logger.info("Resources updated: {}", resources); - }) - .promptsChangeConsumer(prompts -> { + })) + .promptsChangeConsumer(prompts -> Mono.fromRunnable(() -> { logger.info("Prompts updated: {}", prompts); - }) - .async(); + })) + .build(); // Initialize connection client.initialize() @@ -361,13 +361,13 @@ Sync API:: [source,java] ---- // Create a server with custom configuration -McpSyncServer syncServer = McpServer.using(transport) - .info("my-server", "1.0.0") +McpSyncServer syncServer = McpServer.sync(transport) + .serverInfo("my-server", "1.0.0") .capabilities(ServerCapabilities.builder()...build()) - .tools(new CalculatorTool()) - .resources(resourceRegistration) - .prompts(promptRegistration) - .sync(); + .tools(new McpServerFeatures.SyncToolRegistration(calculatorTool, calculatorHandler)) + .resources(new McpServerFeatures.SyncResourceRegistration(resource, resourceHandler)) + .prompts(new McpServerFeatures.SyncPromptRegistration(prompt, promptHandler)) + .build(); // Add a tool handler at runtime syncServer.addTool(new CalculatorTool()); @@ -396,13 +396,13 @@ Async API:: [source,java] ---- // Create an async server with custom configuration -McpAsyncServer asyncServer = McpServer.using(transport) - .info("my-server", "1.0.0") +McpAsyncServer asyncServer = McpServer.async(transport) + .serverInfo("my-server", "1.0.0") .capabilities(ServerCapabilities.builder()...build()) - .tools(new CalculatorTool()) - .resources(resourceRegistration) - .prompts(promptRegistration) - .async(); + .tools(new McpServerFeatures.AsyncToolRegistration(calculatorTool, args -> Mono.just(calculatorHandler.apply(args)))) + .resources(new McpServerFeatures.AsyncResourceRegistration(resource, req -> Mono.just(resourceHandler.apply(req)))) + .prompts(new McpServerFeatures.AsyncPromptRegistration(prompt, req -> Mono.just(promptHandler.apply(req)))) + .build(); // Add a tool handler at runtime asyncServer.addTool(new CalculatorTool()) @@ -593,7 +593,8 @@ Supported logging levels (in order of increasing severity): DEBUG (0), INFO (1), [source,java] ---- -var toolRegistration = new ToolRegistration( +// Sync tool registration +var syncToolRegistration = new McpServerFeatures.SyncToolRegistration( new Tool("calculator", "Basic calculator", Map.of( "operation", "string", "a", "number", @@ -604,26 +605,50 @@ var toolRegistration = new ToolRegistration( return new CallToolResult(result, false); } ); + +// Async tool registration +var asyncToolRegistration = new McpServerFeatures.AsyncToolRegistration( + new Tool("calculator", "Basic calculator", Map.of( + "operation", "string", + "a", "number", + "b", "number" + )), + arguments -> { + // Tool implementation + return Mono.just(new CallToolResult(result, false)); + } +); ---- ==== Resource Registration [source,java] ---- -var resourceRegistration = new ResourceRegistration( +// Sync resource registration +var syncResourceRegistration = new McpServerFeatures.SyncResourceRegistration( new Resource("custom://resource", "name", "description", "mime-type", null), request -> { // Resource read implementation return new ReadResourceResult(contents); } ); + +// Async resource registration +var asyncResourceRegistration = new McpServerFeatures.AsyncResourceRegistration( + new Resource("custom://resource", "name", "description", "mime-type", null), + request -> { + // Resource read implementation + return Mono.just(new ReadResourceResult(contents)); + } +); ---- ==== Prompt Registration [source,java] ---- -var promptRegistration = new PromptRegistration( +// Sync prompt registration +var syncPromptRegistration = new McpServerFeatures.SyncPromptRegistration( new Prompt("greeting", "description", List.of( new PromptArgument("name", "description", true) )), @@ -632,6 +657,17 @@ var promptRegistration = new PromptRegistration( return new GetPromptResult(description, messages); } ); + +// Async prompt registration +var asyncPromptRegistration = new McpServerFeatures.AsyncPromptRegistration( + new Prompt("greeting", "description", List.of( + new PromptArgument("name", "description", true) + )), + request -> { + // Prompt implementation + return Mono.just(new GetPromptResult(description, messages)); + } +); ---- == Error Handling diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java index 9477f6b..edceae9 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import org.springframework.ai.mcp.spec.ClientMcpTransport; @@ -77,10 +78,10 @@ public abstract class BlaAbstractMcpAsyncClientTests { this.mcpTransport = createMcpTransport(); assertThatCode(() -> { - mcpAsyncClient = McpClient.using(mcpTransport) + mcpAsyncClient = McpClient.async(mcpTransport) .requestTimeout(TIMEOUT) .capabilities(ClientCapabilities.builder().roots(true).build()) - .async(); + .build(); mcpAsyncClient.initialize().block(Duration.ofSeconds(10)); }).doesNotThrowAnyException(); } @@ -96,10 +97,10 @@ public abstract class BlaAbstractMcpAsyncClientTests { @Test void testConstructorWithInvalidArguments() { - assertThatThrownBy(() -> McpClient.using(null).sync()).isInstanceOf(IllegalArgumentException.class) + assertThatThrownBy(() -> McpClient.sync(null).build()).isInstanceOf(IllegalArgumentException.class) .hasMessage("Transport must not be null"); - assertThatThrownBy(() -> McpClient.using(mcpTransport).requestTimeout(null).sync()) + assertThatThrownBy(() -> McpClient.sync(mcpTransport).requestTimeout(null).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Request timeout must not be null"); } @@ -195,10 +196,10 @@ public abstract class BlaAbstractMcpAsyncClientTests { void testInitializeWithRootsListProviders() { var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.async(transport) .requestTimeout(TIMEOUT) .roots(new Root("file:///test/path", "test-root")) - .async(); + .build(); assertThatCode(() -> client.initialize().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); @@ -277,12 +278,12 @@ public abstract class BlaAbstractMcpAsyncClientTests { AtomicBoolean promptsNotificationReceived = new AtomicBoolean(false); var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.async(transport) .requestTimeout(TIMEOUT) - .toolsChangeConsumer(tools -> toolsNotificationReceived.set(true)) - .resourcesChangeConsumer(resources -> resourcesNotificationReceived.set(true)) - .promptsChangeConsumer(prompts -> promptsNotificationReceived.set(true)) - .async(); + .toolsChangeConsumer(tools -> Mono.fromRunnable(() -> toolsNotificationReceived.set(true))) + .resourcesChangeConsumer(resources -> Mono.fromRunnable(() -> resourcesNotificationReceived.set(true))) + .promptsChangeConsumer(prompts -> Mono.fromRunnable(() -> promptsNotificationReceived.set(true))) + .build(); assertThatCode(() -> { client.initialize().block(); @@ -299,9 +300,11 @@ public abstract class BlaAbstractMcpAsyncClientTests { var capabilities = ClientCapabilities.builder().sampling().build(); - var client = McpClient.using(transport).requestTimeout(TIMEOUT).capabilities(capabilities).sampling(request -> { - return CreateMessageResult.builder().message("test").model("test-model").build(); - }).async(); + var client = McpClient.async(transport) + .requestTimeout(TIMEOUT) + .capabilities(capabilities) + .sampling(request -> Mono.just(CreateMessageResult.builder().message("test").model("test-model").build())) + .build(); assertThatCode(() -> { client.initialize().block(Duration.ofSeconds(10)); @@ -319,14 +322,13 @@ public abstract class BlaAbstractMcpAsyncClientTests { .sampling() .build(); - Function samplingHandler = request -> { - return CreateMessageResult.builder().message("test").model("test-model").build(); - }; - var client = McpClient.using(transport) + Function> samplingHandler = request -> Mono + .just(CreateMessageResult.builder().message("test").model("test-model").build()); + var client = McpClient.async(transport) .requestTimeout(TIMEOUT) .capabilities(capabilities) .sampling(samplingHandler) - .async(); + .build(); assertThatCode(() -> { var result = client.initialize().block(Duration.ofSeconds(10)); @@ -353,10 +355,10 @@ public abstract class BlaAbstractMcpAsyncClientTests { AtomicBoolean logReceived = new AtomicBoolean(false); var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.async(transport) .requestTimeout(TIMEOUT) - .loggingConsumer(notification -> logReceived.set(true)) - .async(); + .loggingConsumer(notification -> Mono.fromRunnable(() -> logReceived.set(true))) + .build(); assertThatCode(() -> { client.initialize().block(Duration.ofSeconds(10)); diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java index 59d1896..26e453c 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java @@ -72,10 +72,10 @@ public abstract class BlaAbstractMcpSyncClientTests { this.mcpTransport = createMcpTransport(); assertThatCode(() -> { - mcpSyncClient = McpClient.using(mcpTransport) + mcpSyncClient = McpClient.sync(mcpTransport) .requestTimeout(TIMEOUT) .capabilities(ClientCapabilities.builder().roots(true).build()) - .sync(); + .build(); mcpSyncClient.initialize(); }).doesNotThrowAnyException(); } @@ -90,10 +90,10 @@ public abstract class BlaAbstractMcpSyncClientTests { @Test void testConstructorWithInvalidArguments() { - assertThatThrownBy(() -> McpClient.using(null).sync()).isInstanceOf(IllegalArgumentException.class) + assertThatThrownBy(() -> McpClient.sync(null).build()).isInstanceOf(IllegalArgumentException.class) .hasMessage("Transport must not be null"); - assertThatThrownBy(() -> McpClient.using(mcpTransport).requestTimeout(null).sync()) + assertThatThrownBy(() -> McpClient.sync(mcpTransport).requestTimeout(null).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Request timeout must not be null"); } @@ -180,10 +180,10 @@ public abstract class BlaAbstractMcpSyncClientTests { void testInitializeWithRootsListProviders() { var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.sync(transport) .requestTimeout(TIMEOUT) .roots(new Root("file:///test/path", "test-root")) - .sync(); + .build(); assertThatCode(() -> { client.initialize(); @@ -262,12 +262,12 @@ public abstract class BlaAbstractMcpSyncClientTests { AtomicBoolean promptsNotificationReceived = new AtomicBoolean(false); var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.sync(transport) .requestTimeout(TIMEOUT) .toolsChangeConsumer(tools -> toolsNotificationReceived.set(true)) .resourcesChangeConsumer(resources -> resourcesNotificationReceived.set(true)) .promptsChangeConsumer(prompts -> promptsNotificationReceived.set(true)) - .sync(); + .build(); assertThatCode(() -> { client.initialize(); @@ -295,10 +295,10 @@ public abstract class BlaAbstractMcpSyncClientTests { AtomicBoolean logReceived = new AtomicBoolean(false); var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.sync(transport) .requestTimeout(TIMEOUT) .loggingConsumer(notification -> logReceived.set(true)) - .sync(); + .build(); assertThatCode(() -> { client.initialize(); diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java index d765e05..807bcc5 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java @@ -18,16 +18,13 @@ package org.springframework.ai.mcp.server; import java.time.Duration; import java.util.List; -import java.util.Map; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.server.McpServer.PromptRegistration; -import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; @@ -82,24 +79,24 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testConstructorWithInvalidArguments() { - assertThatThrownBy(() -> McpServer.using(null)).isInstanceOf(IllegalArgumentException.class) + assertThatThrownBy(() -> McpServer.async(null)).isInstanceOf(IllegalArgumentException.class) .hasMessage("Transport must not be null"); - assertThatThrownBy(() -> McpServer.using(createMcpTransport()).serverInfo((McpSchema.Implementation) null)) + assertThatThrownBy(() -> McpServer.async(createMcpTransport()).serverInfo((McpSchema.Implementation) null)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Server info must not be null"); } @Test void testGracefulShutdown() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); StepVerifier.create(mcpAsyncServer.closeGracefully()).verifyComplete(); } @Test void testImmediateClose() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpAsyncServer.close()).doesNotThrowAnyException(); } @@ -118,81 +115,80 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testAddTool() { Tool newTool = new McpSchema.Tool("new-tool", "New test tool", emptyJsonSchema); - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .async(); + .build(); - StepVerifier - .create(mcpAsyncServer.addTool(new ToolRegistration(newTool, args -> new CallToolResult(List.of(), false)))) + StepVerifier.create(mcpAsyncServer.addTool(new McpServerFeatures.AsyncToolRegistration(newTool, + args -> Mono.just(new CallToolResult(List.of(), false))))) .verifyComplete(); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testAddDuplicateTool() { Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .tool(duplicateTool, args -> new CallToolResult(List.of(), false)) - .async(); + .tool(duplicateTool, args -> Mono.just(new CallToolResult(List.of(), false))) + .build(); - StepVerifier - .create(mcpAsyncServer - .addTool(new ToolRegistration(duplicateTool, args -> new CallToolResult(List.of(), false)))) + StepVerifier.create(mcpAsyncServer.addTool(new McpServerFeatures.AsyncToolRegistration(duplicateTool, + args -> Mono.just(new CallToolResult(List.of(), false))))) .verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) .hasMessage("Tool with name '" + TEST_TOOL_NAME + "' already exists"); }); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testRemoveTool() { Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .tool(too, args -> new CallToolResult(List.of(), false)) - .async(); + .tool(too, args -> Mono.just(new CallToolResult(List.of(), false))) + .build(); StepVerifier.create(mcpAsyncServer.removeTool(TEST_TOOL_NAME)).verifyComplete(); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testRemoveNonexistentTool() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .async(); + .build(); StepVerifier.create(mcpAsyncServer.removeTool("nonexistent-tool")).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class).hasMessage("Tool with name 'nonexistent-tool' not found"); }); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testNotifyToolsListChanged() { Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .tool(too, args -> new CallToolResult(List.of(), false)) - .async(); + .tool(too, args -> Mono.just(new CallToolResult(List.of(), false))) + .build(); StepVerifier.create(mcpAsyncServer.notifyToolsListChanged()).verifyComplete(); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } // --------------------------------------- @@ -201,24 +197,24 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testNotifyResourcesListChanged() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); StepVerifier.create(mcpAsyncServer.notifyResourcesListChanged()).verifyComplete(); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testAddResource() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) - .async(); + .build(); Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", null); - ResourceRegistration registration = new ResourceRegistration(resource, - req -> new ReadResourceResult(List.of())); + McpServerFeatures.AsyncResourceRegistration registration = new McpServerFeatures.AsyncResourceRegistration( + resource, req -> Mono.just(new ReadResourceResult(List.of()))); StepVerifier.create(mcpAsyncServer.addResource(registration)).verifyComplete(); @@ -227,14 +223,15 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testAddResourceWithNullRegistration() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) - .async(); + .build(); - StepVerifier.create(mcpAsyncServer.addResource(null)).verifyErrorSatisfies(error -> { - assertThat(error).isInstanceOf(McpError.class).hasMessage("Resource must not be null"); - }); + StepVerifier.create(mcpAsyncServer.addResource((McpServerFeatures.AsyncResourceRegistration) null)) + .verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class).hasMessage("Resource must not be null"); + }); assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @@ -242,14 +239,14 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testAddResourceWithoutCapability() { // Create a server without resource capabilities - McpAsyncServer serverWithoutResources = McpServer.using(createMcpTransport()) + McpAsyncServer serverWithoutResources = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .async(); + .build(); Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", null); - ResourceRegistration registration = new ResourceRegistration(resource, - req -> new ReadResourceResult(List.of())); + McpServerFeatures.AsyncResourceRegistration registration = new McpServerFeatures.AsyncResourceRegistration( + resource, req -> Mono.just(new ReadResourceResult(List.of()))); StepVerifier.create(serverWithoutResources.addResource(registration)).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) @@ -260,9 +257,9 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testRemoveResourceWithoutCapability() { // Create a server without resource capabilities - McpAsyncServer serverWithoutResources = McpServer.using(createMcpTransport()) + McpAsyncServer serverWithoutResources = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .async(); + .build(); StepVerifier.create(serverWithoutResources.removeResource(TEST_RESOURCE_URI)).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) @@ -276,36 +273,37 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testNotifyPromptsListChanged() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); StepVerifier.create(mcpAsyncServer.notifyPromptsListChanged()).verifyComplete(); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testAddPromptWithNullRegistration() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(false).build()) - .async(); + .build(); - StepVerifier.create(mcpAsyncServer.addPrompt(null)).verifyErrorSatisfies(error -> { - assertThat(error).isInstanceOf(McpError.class).hasMessage("Prompt registration must not be null"); - }); + StepVerifier.create(mcpAsyncServer.addPrompt((McpServerFeatures.AsyncPromptRegistration) null)) + .verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class).hasMessage("Prompt registration must not be null"); + }); } @Test void testAddPromptWithoutCapability() { // Create a server without prompt capabilities - McpAsyncServer serverWithoutPrompts = McpServer.using(createMcpTransport()) + McpAsyncServer serverWithoutPrompts = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .async(); + .build(); Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); - PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( - "Test prompt description", - List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + McpServerFeatures.AsyncPromptRegistration registration = new McpServerFeatures.AsyncPromptRegistration(prompt, + req -> Mono.just(new GetPromptResult("Test prompt description", List + .of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content")))))); StepVerifier.create(serverWithoutPrompts.addPrompt(registration)).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) @@ -316,9 +314,9 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testRemovePromptWithoutCapability() { // Create a server without prompt capabilities - McpAsyncServer serverWithoutPrompts = McpServer.using(createMcpTransport()) + McpAsyncServer serverWithoutPrompts = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .async(); + .build(); StepVerifier.create(serverWithoutPrompts.removePrompt(TEST_PROMPT_NAME)).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) @@ -331,15 +329,15 @@ public abstract class BlaAbstractMcpAsyncServerTests { String TEST_PROMPT_NAME_TO_REMOVE = "TEST_PROMPT_NAME678"; Prompt prompt = new Prompt(TEST_PROMPT_NAME_TO_REMOVE, "Test Prompt", List.of()); - PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( - "Test prompt description", - List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + McpServerFeatures.AsyncPromptRegistration registration = new McpServerFeatures.AsyncPromptRegistration(prompt, + req -> Mono.just(new GetPromptResult("Test prompt description", List + .of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content")))))); - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) .prompts(registration) - .async(); + .build(); StepVerifier.create(mcpAsyncServer.removePrompt(TEST_PROMPT_NAME_TO_REMOVE)).verifyComplete(); @@ -348,10 +346,10 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testRemoveNonexistentPrompt() { - var mcpAsyncServer2 = McpServer.using(createMcpTransport()) + var mcpAsyncServer2 = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) - .async(); + .build(); StepVerifier.create(mcpAsyncServer2.removePrompt("nonexistent-prompt")).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) @@ -372,15 +370,15 @@ public abstract class BlaAbstractMcpAsyncServerTests { var rootsReceived = new McpSchema.Root[1]; var consumerCalled = new boolean[1]; - var singleConsumerServer = McpServer.using(createMcpTransport()) + var singleConsumerServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .rootsChangeConsumers(List.of(roots -> { + .rootsChangeConsumers(List.of(roots -> Mono.fromRunnable(() -> { consumerCalled[0] = true; if (!roots.isEmpty()) { rootsReceived[0] = roots.get(0); } - })) - .async(); + }))) + .build(); assertThat(singleConsumerServer).isNotNull(); assertThatCode(() -> singleConsumerServer.closeGracefully().block(Duration.ofSeconds(10))) @@ -392,13 +390,13 @@ public abstract class BlaAbstractMcpAsyncServerTests { var consumer2Called = new boolean[1]; var rootsContent = new List[1]; - var multipleConsumersServer = McpServer.using(createMcpTransport()) + var multipleConsumersServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .rootsChangeConsumers(List.of(roots -> { + .rootsChangeConsumers(List.of(roots -> Mono.fromRunnable(() -> { consumer1Called[0] = true; rootsContent[0] = roots; - }, roots -> consumer2Called[0] = true)) - .async(); + }), roots -> Mono.fromRunnable(() -> consumer2Called[0] = true))) + .build(); assertThat(multipleConsumersServer).isNotNull(); assertThatCode(() -> multipleConsumersServer.closeGracefully().block(Duration.ofSeconds(10))) @@ -406,12 +404,12 @@ public abstract class BlaAbstractMcpAsyncServerTests { onClose(); // Test error handling - var errorHandlingServer = McpServer.using(createMcpTransport()) + var errorHandlingServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .rootsChangeConsumers(List.of(roots -> { throw new RuntimeException("Test error"); })) - .async(); + .build(); assertThat(errorHandlingServer).isNotNull(); assertThatCode(() -> errorHandlingServer.closeGracefully().block(Duration.ofSeconds(10))) @@ -419,7 +417,7 @@ public abstract class BlaAbstractMcpAsyncServerTests { onClose(); // Test without consumers - var noConsumersServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + var noConsumersServer = McpServer.async(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThat(noConsumersServer).isNotNull(); assertThatCode(() -> noConsumersServer.closeGracefully().block(Duration.ofSeconds(10))) @@ -432,10 +430,10 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testLoggingLevels() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) - .async(); + .build(); // Test all logging levels for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { @@ -451,10 +449,10 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testLoggingWithoutCapability() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().build()) // No logging capability - .async(); + .build(); var notification = McpSchema.LoggingMessageNotification.builder() .level(McpSchema.LoggingLevel.INFO) @@ -467,10 +465,10 @@ public abstract class BlaAbstractMcpAsyncServerTests { @Test void testLoggingWithNullNotification() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) - .async(); + .build(); StepVerifier.create(mcpAsyncServer.loggingNotification(null)).verifyError(McpError.class); } diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java index 069dc83..415f08e 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java @@ -23,9 +23,6 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.ai.mcp.server.McpServer.PromptRegistration; -import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; @@ -81,31 +78,31 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testConstructorWithInvalidArguments() { - assertThatThrownBy(() -> McpServer.using(null)).isInstanceOf(IllegalArgumentException.class) + assertThatThrownBy(() -> McpServer.sync(null)).isInstanceOf(IllegalArgumentException.class) .hasMessage("Transport must not be null"); - assertThatThrownBy(() -> McpServer.using(createMcpTransport()).serverInfo((McpSchema.Implementation) null)) + assertThatThrownBy(() -> McpServer.sync(createMcpTransport()).serverInfo(null)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Server info must not be null"); } @Test void testGracefulShutdown() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); } @Test void testImmediateClose() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpSyncServer.close()).doesNotThrowAnyException(); } @Test void testGetAsyncServer() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThat(mcpSyncServer.getAsyncServer()).isNotNull(); @@ -126,14 +123,14 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testAddTool() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .sync(); + .build(); Tool newTool = new McpSchema.Tool("new-tool", "New test tool", emptyJsonSchema); assertThatCode(() -> mcpSyncServer - .addTool(new ToolRegistration(newTool, args -> new CallToolResult(List.of(), false)))) + .addTool(new McpServerFeatures.SyncToolRegistration(newTool, args -> new CallToolResult(List.of(), false)))) .doesNotThrowAnyException(); assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); @@ -143,14 +140,14 @@ public abstract class BlaAbstractMcpSyncServerTests { void testAddDuplicateTool() { Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .tool(duplicateTool, args -> new CallToolResult(List.of(), false)) - .sync(); + .build(); - assertThatThrownBy(() -> mcpSyncServer - .addTool(new ToolRegistration(duplicateTool, args -> new CallToolResult(List.of(), false)))) + assertThatThrownBy(() -> mcpSyncServer.addTool(new McpServerFeatures.SyncToolRegistration(duplicateTool, + args -> new CallToolResult(List.of(), false)))) .isInstanceOf(McpError.class) .hasMessage("Tool with name '" + TEST_TOOL_NAME + "' already exists"); @@ -161,11 +158,11 @@ public abstract class BlaAbstractMcpSyncServerTests { void testRemoveTool() { Tool tool = new McpSchema.Tool(TEST_TOOL_NAME, "Test tool", emptyJsonSchema); - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .tool(tool, args -> new CallToolResult(List.of(), false)) - .sync(); + .build(); assertThatCode(() -> mcpSyncServer.removeTool(TEST_TOOL_NAME)).doesNotThrowAnyException(); @@ -174,10 +171,10 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testRemoveNonexistentTool() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .sync(); + .build(); assertThatThrownBy(() -> mcpSyncServer.removeTool("nonexistent-tool")).isInstanceOf(McpError.class) .hasMessage("Tool with name 'nonexistent-tool' not found"); @@ -187,7 +184,7 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testNotifyToolsListChanged() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpSyncServer.notifyToolsListChanged()).doesNotThrowAnyException(); @@ -200,7 +197,7 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testNotifyResourcesListChanged() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpSyncServer.notifyResourcesListChanged()).doesNotThrowAnyException(); @@ -209,15 +206,15 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testAddResource() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) - .sync(); + .build(); Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", null); - ResourceRegistration registration = new ResourceRegistration(resource, - req -> new ReadResourceResult(List.of())); + McpServerFeatures.SyncResourceRegistration registration = new McpServerFeatures.SyncResourceRegistration( + resource, req -> new ReadResourceResult(List.of())); assertThatCode(() -> mcpSyncServer.addResource(registration)).doesNotThrowAnyException(); @@ -226,12 +223,13 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testAddResourceWithNullRegistration() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) - .sync(); + .build(); - assertThatThrownBy(() -> mcpSyncServer.addResource(null)).isInstanceOf(McpError.class) + assertThatThrownBy(() -> mcpSyncServer.addResource((McpServerFeatures.SyncResourceRegistration) null)) + .isInstanceOf(McpError.class) .hasMessage("Resource must not be null"); assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); @@ -239,12 +237,12 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testAddResourceWithoutCapability() { - var serverWithoutResources = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var serverWithoutResources = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", null); - ResourceRegistration registration = new ResourceRegistration(resource, - req -> new ReadResourceResult(List.of())); + McpServerFeatures.SyncResourceRegistration registration = new McpServerFeatures.SyncResourceRegistration( + resource, req -> new ReadResourceResult(List.of())); assertThatThrownBy(() -> serverWithoutResources.addResource(registration)).isInstanceOf(McpError.class) .hasMessage("Server must be configured with resource capabilities"); @@ -252,7 +250,7 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testRemoveResourceWithoutCapability() { - var serverWithoutResources = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var serverWithoutResources = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatThrownBy(() -> serverWithoutResources.removeResource(TEST_RESOURCE_URI)).isInstanceOf(McpError.class) .hasMessage("Server must be configured with resource capabilities"); @@ -264,7 +262,7 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testNotifyPromptsListChanged() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpSyncServer.notifyPromptsListChanged()).doesNotThrowAnyException(); @@ -273,23 +271,24 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testAddPromptWithNullRegistration() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(false).build()) - .sync(); + .build(); - assertThatThrownBy(() -> mcpSyncServer.addPrompt(null)).isInstanceOf(McpError.class) + assertThatThrownBy(() -> mcpSyncServer.addPrompt((McpServerFeatures.SyncPromptRegistration) null)) + .isInstanceOf(McpError.class) .hasMessage("Prompt registration must not be null"); } @Test void testAddPromptWithoutCapability() { - var serverWithoutPrompts = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var serverWithoutPrompts = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); - PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( - "Test prompt description", - List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + McpServerFeatures.SyncPromptRegistration registration = new McpServerFeatures.SyncPromptRegistration(prompt, + req -> new GetPromptResult("Test prompt description", List + .of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); assertThatThrownBy(() -> serverWithoutPrompts.addPrompt(registration)).isInstanceOf(McpError.class) .hasMessage("Server must be configured with prompt capabilities"); @@ -297,7 +296,7 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testRemovePromptWithoutCapability() { - var serverWithoutPrompts = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var serverWithoutPrompts = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatThrownBy(() -> serverWithoutPrompts.removePrompt(TEST_PROMPT_NAME)).isInstanceOf(McpError.class) .hasMessage("Server must be configured with prompt capabilities"); @@ -306,15 +305,15 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testRemovePrompt() { Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); - PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( - "Test prompt description", - List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + McpServerFeatures.SyncPromptRegistration registration = new McpServerFeatures.SyncPromptRegistration(prompt, + req -> new GetPromptResult("Test prompt description", List + .of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) .prompts(registration) - .sync(); + .build(); assertThatCode(() -> mcpSyncServer.removePrompt(TEST_PROMPT_NAME)).doesNotThrowAnyException(); @@ -323,10 +322,10 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testRemoveNonexistentPrompt() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) - .sync(); + .build(); assertThatThrownBy(() -> mcpSyncServer.removePrompt("nonexistent-prompt")).isInstanceOf(McpError.class) .hasMessage("Prompt with name 'nonexistent-prompt' not found"); @@ -344,7 +343,7 @@ public abstract class BlaAbstractMcpSyncServerTests { var rootsReceived = new McpSchema.Root[1]; var consumerCalled = new boolean[1]; - var singleConsumerServer = McpServer.using(createMcpTransport()) + var singleConsumerServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .rootsChangeConsumers(List.of(roots -> { consumerCalled[0] = true; @@ -352,7 +351,7 @@ public abstract class BlaAbstractMcpSyncServerTests { rootsReceived[0] = roots.get(0); } })) - .sync(); + .build(); assertThat(singleConsumerServer).isNotNull(); assertThatCode(() -> singleConsumerServer.closeGracefully()).doesNotThrowAnyException(); @@ -363,32 +362,32 @@ public abstract class BlaAbstractMcpSyncServerTests { var consumer2Called = new boolean[1]; var rootsContent = new List[1]; - var multipleConsumersServer = McpServer.using(createMcpTransport()) + var multipleConsumersServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .rootsChangeConsumers(List.of(roots -> { consumer1Called[0] = true; rootsContent[0] = roots; }, roots -> consumer2Called[0] = true)) - .sync(); + .build(); assertThat(multipleConsumersServer).isNotNull(); assertThatCode(() -> multipleConsumersServer.closeGracefully()).doesNotThrowAnyException(); onClose(); // Test error handling - var errorHandlingServer = McpServer.using(createMcpTransport()) + var errorHandlingServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .rootsChangeConsumers(List.of(roots -> { throw new RuntimeException("Test error"); })) - .sync(); + .build(); assertThat(errorHandlingServer).isNotNull(); assertThatCode(() -> errorHandlingServer.closeGracefully()).doesNotThrowAnyException(); onClose(); // Test without consumers - var noConsumersServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var noConsumersServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThat(noConsumersServer).isNotNull(); assertThatCode(() -> noConsumersServer.closeGracefully()).doesNotThrowAnyException(); @@ -400,10 +399,10 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testLoggingLevels() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) - .sync(); + .build(); // Test all logging levels for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { @@ -419,10 +418,10 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testLoggingWithoutCapability() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().build()) // No logging capability - .sync(); + .build(); var notification = McpSchema.LoggingMessageNotification.builder() .level(McpSchema.LoggingLevel.INFO) @@ -435,10 +434,10 @@ public abstract class BlaAbstractMcpSyncServerTests { @Test void testLoggingWithNullNotification() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) - .sync(); + .build(); assertThatThrownBy(() -> mcpSyncServer.loggingNotification(null)).isInstanceOf(McpError.class); } diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/WebFluxSseIntegrationTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/WebFluxSseIntegrationTests.java index 1e3c11a..ca968cf 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/WebFluxSseIntegrationTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/WebFluxSseIntegrationTests.java @@ -36,7 +36,7 @@ import org.springframework.ai.mcp.client.McpClient; import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; import org.springframework.ai.mcp.server.McpServer; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; +import org.springframework.ai.mcp.server.McpServerFeatures; import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; @@ -69,7 +69,7 @@ public class WebFluxSseIntegrationTests { private WebFluxSseServerTransport mcpServerTransport; - ConcurrentHashMap clientBulders = new ConcurrentHashMap<>(); + ConcurrentHashMap clientBulders = new ConcurrentHashMap<>(); @BeforeEach public void before() { @@ -80,9 +80,9 @@ public class WebFluxSseIntegrationTests { ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); this.httpServer = HttpServer.create().port(PORT).handle(adapter).bindNow(); - clientBulders.put("httpclient", McpClient.using(new HttpClientSseClientTransport("http://localhost:" + PORT))); - clientBulders.put("webflux", McpClient - .using(new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:" + PORT)))); + clientBulders.put("httpclient", McpClient.sync(new HttpClientSseClientTransport("http://localhost:" + PORT))); + clientBulders.put("webflux", + McpClient.sync(new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:" + PORT)))); } @@ -98,7 +98,7 @@ public class WebFluxSseIntegrationTests { // --------------------------------------- @Test void testCreateMessageWithoutInitialization() { - var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(mcpServerTransport).serverInfo("test-server", "1.0.0").build(); var messages = List .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); @@ -117,11 +117,11 @@ public class WebFluxSseIntegrationTests { @ValueSource(strings = { "httpclient", "webflux" }) void testCreateMessageWithoutSamplingCapabilities(String clientType) { - var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(mcpServerTransport).serverInfo("test-server", "1.0.0").build(); var clientBuilder = clientBulders.get(clientType); - var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")).sync(); + var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")).build(); InitializeResult initResult = client.initialize(); assertThat(initResult).isNotNull(); @@ -145,7 +145,7 @@ public class WebFluxSseIntegrationTests { var clientBuilder = clientBulders.get(clientType); - var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(mcpServerTransport).serverInfo("test-server", "1.0.0").build(); Function samplingHandler = request -> { assertThat(request.messages()).hasSize(1); @@ -158,7 +158,7 @@ public class WebFluxSseIntegrationTests { var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")) .capabilities(ClientCapabilities.builder().sampling().build()) .sampling(samplingHandler) - .sync(); + .build(); InitializeResult initResult = client.initialize(); assertThat(initResult).isNotNull(); @@ -191,13 +191,13 @@ public class WebFluxSseIntegrationTests { List roots = List.of(new Root("uri1://", "root1"), new Root("uri2://", "root2")); AtomicReference> rootsRef = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) - .sync(); + .build(); var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) .roots(roots) - .sync(); + .build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -236,14 +236,14 @@ public class WebFluxSseIntegrationTests { void testRootsWithoutCapability(String clientType) { var clientBuilder = clientBulders.get(clientType); - var mcpServer = McpServer.using(mcpServerTransport).rootsChangeConsumer(rootsUpdate -> { - }).sync(); + var mcpServer = McpServer.sync(mcpServerTransport).rootsChangeConsumer(rootsUpdate -> { + }).build(); // Create client without roots capability var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().build()) // No // roots // capability - .sync(); + .build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -262,13 +262,13 @@ public class WebFluxSseIntegrationTests { var clientBuilder = clientBulders.get(clientType); AtomicReference> rootsRef = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) - .sync(); + .build(); var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) .roots(List.of()) // Empty roots list - .sync(); + .build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -293,14 +293,14 @@ public class WebFluxSseIntegrationTests { AtomicReference> rootsRef1 = new AtomicReference<>(); AtomicReference> rootsRef2 = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .rootsChangeConsumer(rootsUpdate -> rootsRef1.set(rootsUpdate)) .rootsChangeConsumer(rootsUpdate -> rootsRef2.set(rootsUpdate)) - .sync(); + .build(); var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) .roots(roots) - .sync(); + .build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -325,13 +325,13 @@ public class WebFluxSseIntegrationTests { List roots = List.of(new Root("uri1://", "root1")); AtomicReference> rootsRef = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) - .sync(); + .build(); var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) .roots(roots) - .sync(); + .build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -368,8 +368,8 @@ public class WebFluxSseIntegrationTests { var clientBuilder = clientBulders.get(clientType); var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); - ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), - request -> { + McpServerFeatures.SyncToolRegistration tool1 = new McpServerFeatures.SyncToolRegistration( + new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { // perform a blocking call to a remote service String response = RestClient.create() .get() @@ -380,12 +380,12 @@ public class WebFluxSseIntegrationTests { return callResponse; }); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .capabilities(ServerCapabilities.builder().tools(true).build()) .tools(tool1) - .sync(); + .build(); - var mcpClient = clientBuilder.sync(); + var mcpClient = clientBuilder.build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -408,8 +408,8 @@ public class WebFluxSseIntegrationTests { var clientBuilder = clientBulders.get(clientType); var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); - ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), - request -> { + McpServerFeatures.SyncToolRegistration tool1 = new McpServerFeatures.SyncToolRegistration( + new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { // perform a blocking call to a remote service String response = RestClient.create() .get() @@ -420,10 +420,10 @@ public class WebFluxSseIntegrationTests { return callResponse; }); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .capabilities(ServerCapabilities.builder().tools(true).build()) .tools(tool1) - .sync(); + .build(); AtomicReference> rootsRef = new AtomicReference<>(); var mcpClient = clientBuilder.toolsChangeConsumer(toolsUpdate -> { @@ -435,7 +435,7 @@ public class WebFluxSseIntegrationTests { .body(String.class); assertThat(response).isNotBlank(); rootsRef.set(toolsUpdate); - }).sync(); + }).build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -458,8 +458,8 @@ public class WebFluxSseIntegrationTests { }); // Add a new tool - ToolRegistration tool2 = new ToolRegistration(new McpSchema.Tool("tool2", "tool2 description", emptyJsonSchema), - request -> callResponse); + McpServerFeatures.SyncToolRegistration tool2 = new McpServerFeatures.SyncToolRegistration( + new McpSchema.Tool("tool2", "tool2 description", emptyJsonSchema), request -> callResponse); mcpServer.addTool(tool2); diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java index 6658386..308be78 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java @@ -35,7 +35,6 @@ import reactor.test.StepVerifier; import org.springframework.ai.mcp.client.McpClient; import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; @@ -71,7 +70,7 @@ public class WebMvcSseIntegrationTests { private WebMvcSseServerTransport mcpServerTransport; - McpClient.Builder clientBuilder; + McpClient.SyncSpec clientBuilder; @Configuration @EnableWebMvc @@ -137,7 +136,7 @@ public class WebMvcSseIntegrationTests { throw new RuntimeException("Failed to start Tomcat", e); } - this.clientBuilder = McpClient.using(new HttpClientSseClientTransport("http://localhost:" + PORT)); + this.clientBuilder = McpClient.sync(new HttpClientSseClientTransport("http://localhost:" + PORT)); } @AfterEach @@ -164,7 +163,7 @@ public class WebMvcSseIntegrationTests { // --------------------------------------- @Test void testCreateMessageWithoutInitialization() { - var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(mcpServerTransport).serverInfo("test-server", "1.0.0").build(); var messages = List .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); @@ -182,9 +181,9 @@ public class WebMvcSseIntegrationTests { @Test void testCreateMessageWithoutSamplingCapabilities() { - var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(mcpServerTransport).serverInfo("test-server", "1.0.0").build(); - var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")).sync(); + var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample " + "client", "0.0.0")).build(); InitializeResult initResult = client.initialize(); assertThat(initResult).isNotNull(); @@ -205,7 +204,7 @@ public class WebMvcSseIntegrationTests { @Test void testCreateMessageSuccess() throws InterruptedException { - var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(mcpServerTransport).serverInfo("test-server", "1.0.0").build(); Function samplingHandler = request -> { assertThat(request.messages()).hasSize(1); @@ -218,7 +217,7 @@ public class WebMvcSseIntegrationTests { var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")) .capabilities(ClientCapabilities.builder().sampling().build()) .sampling(samplingHandler) - .sync(); + .build(); InitializeResult initResult = client.initialize(); assertThat(initResult).isNotNull(); @@ -248,13 +247,13 @@ public class WebMvcSseIntegrationTests { List roots = List.of(new Root("uri1://", "root1"), new Root("uri2://", "root2")); AtomicReference> rootsRef = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) - .sync(); + .build(); var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) .roots(roots) - .sync(); + .build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -290,12 +289,12 @@ public class WebMvcSseIntegrationTests { @Test void testRootsWithoutCapability() { - var mcpServer = McpServer.using(mcpServerTransport).rootsChangeConsumer(rootsUpdate -> { - }).sync(); + var mcpServer = McpServer.sync(mcpServerTransport).rootsChangeConsumer(rootsUpdate -> { + }).build(); // Create client without roots capability // No roots capability - var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().build()).sync(); + var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().build()).build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -311,13 +310,13 @@ public class WebMvcSseIntegrationTests { @Test void testRootsWithEmptyRootsList() { AtomicReference> rootsRef = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) - .sync(); + .build(); var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) .roots(List.of()) // Empty roots list - .sync(); + .build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -339,14 +338,14 @@ public class WebMvcSseIntegrationTests { AtomicReference> rootsRef1 = new AtomicReference<>(); AtomicReference> rootsRef2 = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .rootsChangeConsumer(rootsUpdate -> rootsRef1.set(rootsUpdate)) .rootsChangeConsumer(rootsUpdate -> rootsRef2.set(rootsUpdate)) - .sync(); + .build(); var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) .roots(roots) - .sync(); + .build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -367,13 +366,13 @@ public class WebMvcSseIntegrationTests { List roots = List.of(new Root("uri1://", "root1")); AtomicReference> rootsRef = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) - .sync(); + .build(); var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) .roots(roots) - .sync(); + .build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -407,8 +406,8 @@ public class WebMvcSseIntegrationTests { void testToolCallSuccess() { var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); - ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), - request -> { + McpServerFeatures.SyncToolRegistration tool1 = new McpServerFeatures.SyncToolRegistration( + new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { // perform a blocking call to a remote service String response = RestClient.create() .get() @@ -419,12 +418,12 @@ public class WebMvcSseIntegrationTests { return callResponse; }); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .capabilities(ServerCapabilities.builder().tools(true).build()) .tools(tool1) - .sync(); + .build(); - var mcpClient = clientBuilder.sync(); + var mcpClient = clientBuilder.build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -444,8 +443,8 @@ public class WebMvcSseIntegrationTests { void testToolListChangeHandlingSuccess() { var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); - ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), - request -> { + McpServerFeatures.SyncToolRegistration tool1 = new McpServerFeatures.SyncToolRegistration( + new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { // perform a blocking call to a remote service String response = RestClient.create() .get() @@ -456,10 +455,10 @@ public class WebMvcSseIntegrationTests { return callResponse; }); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .capabilities(ServerCapabilities.builder().tools(true).build()) .tools(tool1) - .sync(); + .build(); AtomicReference> rootsRef = new AtomicReference<>(); var mcpClient = clientBuilder.toolsChangeConsumer(toolsUpdate -> { @@ -471,7 +470,7 @@ public class WebMvcSseIntegrationTests { .body(String.class); assertThat(response).isNotBlank(); rootsRef.set(toolsUpdate); - }).sync(); + }).build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -494,8 +493,8 @@ public class WebMvcSseIntegrationTests { }); // Add a new tool - ToolRegistration tool2 = new ToolRegistration(new McpSchema.Tool("tool2", "tool2 description", emptyJsonSchema), - request -> callResponse); + McpServerFeatures.SyncToolRegistration tool2 = new McpServerFeatures.SyncToolRegistration( + new McpSchema.Tool("tool2", "tool2 description", emptyJsonSchema), request -> callResponse); mcpServer.addTool(tool2); @@ -510,9 +509,9 @@ public class WebMvcSseIntegrationTests { @Test void testInitialize() { - var mcpServer = McpServer.using(mcpServerTransport).sync(); + var mcpServer = McpServer.sync(mcpServerTransport).build(); - var mcpClient = clientBuilder.sync(); + var mcpClient = clientBuilder.build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index 7b7958a..22d0804 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -27,6 +27,7 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; @@ -55,10 +56,39 @@ import org.springframework.ai.mcp.util.Utils; /** * The Model Context Protocol (MCP) client implementation that provides asynchronous - * communication with MCP servers. + * communication with MCP servers using Project Reactor's Mono and Flux types. + * + *

    + * This client implements the MCP specification, enabling AI models to interact with + * external tools and resources through a standardized interface. Key features include: + *

      + *
    • Asynchronous communication using reactive programming patterns + *
    • Tool discovery and invocation for server-provided functionality + *
    • Resource access and management with URI-based addressing + *
    • Prompt template handling for standardized AI interactions + *
    • Real-time notifications for tools, resources, and prompts changes + *
    • Structured logging with configurable severity levels + *
    • Message sampling for AI model interactions + *
    + * + *

    + * The client follows a lifecycle: + *

      + *
    1. Initialization - Establishes connection and negotiates capabilities + *
    2. Normal Operation - Handles requests and notifications + *
    3. Graceful Shutdown - Ensures clean connection termination + *
    + * + *

    + * This implementation uses Project Reactor for non-blocking operations, making it + * suitable for high-throughput scenarios and reactive applications. All operations return + * Mono or Flux types that can be composed into reactive pipelines. * * @author Dariusz Jędrzejczyk * @author Christian Tzolov + * @see McpClient + * @see McpSchema + * @see DefaultMcpSession */ public class McpAsyncClient { @@ -109,13 +139,96 @@ public class McpAsyncClient { * request text or image-based interactions and optionally include context from MCP * servers in their prompts. */ - private Function samplingHandler; + private Function> samplingHandler; /** * Client transport implementation. */ private final McpTransport transport; + /** + * Create a new McpAsyncClient with the given transport and session request-response + * timeout. + * @param transport the transport to use. + * @param requestTimeout the session request-response timeout. + * @param features the MCP Client supported features. + */ + McpAsyncClient(ClientMcpTransport transport, Duration requestTimeout, McpClientFeatures.Async features) { + + Assert.notNull(transport, "Transport must not be null"); + Assert.notNull(requestTimeout, "Request timeout must not be null"); + + this.clientInfo = features.clientInfo(); + this.clientCapabilities = features.clientCapabilities(); + this.transport = transport; + this.roots = new ConcurrentHashMap<>(features.roots()); + + // Request Handlers + Map> requestHandlers = new HashMap<>(); + + // Roots List Request Handler + if (this.clientCapabilities.roots() != null) { + requestHandlers.put(McpSchema.METHOD_ROOTS_LIST, rootsListRequestHandler()); + } + + // Sampling Handler + if (this.clientCapabilities.sampling() != null) { + if (features.samplingHandler() == null) { + throw new McpError("Sampling handler must not be null when client capabilities include sampling"); + } + this.samplingHandler = features.samplingHandler(); + requestHandlers.put(McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, samplingCreateMessageHandler()); + } + + // Notification Handlers + Map notificationHandlers = new HashMap<>(); + + // Tools Change Notification + List, Mono>> toolsChangeConsumersFinal = new ArrayList<>(); + toolsChangeConsumersFinal + .add((notification) -> Mono.fromRunnable(() -> logger.info("Tools changed: {}", notification))); + + if (!Utils.isEmpty(features.toolsChangeConsumers())) { + toolsChangeConsumersFinal.addAll(features.toolsChangeConsumers()); + } + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_TOOLS_LIST_CHANGED, + asyncToolsChangeNotificationHandler(toolsChangeConsumersFinal)); + + // Resources Change Notification + List, Mono>> resourcesChangeConsumersFinal = new ArrayList<>(); + resourcesChangeConsumersFinal + .add((notification) -> Mono.fromRunnable(() -> logger.info("Resources changed: {}", notification))); + + if (!Utils.isEmpty(features.resourcesChangeConsumers())) { + resourcesChangeConsumersFinal.addAll(features.resourcesChangeConsumers()); + } + + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_RESOURCES_LIST_CHANGED, + asyncResourcesChangeNotificationHandler(resourcesChangeConsumersFinal)); + + // Prompts Change Notification + List, Mono>> promptsChangeConsumersFinal = new ArrayList<>(); + promptsChangeConsumersFinal + .add((notification) -> Mono.fromRunnable(() -> logger.info("Prompts changed: {}", notification))); + if (!Utils.isEmpty(features.promptsChangeConsumers())) { + promptsChangeConsumersFinal.addAll(features.promptsChangeConsumers()); + } + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_PROMPTS_LIST_CHANGED, + asyncPromptsChangeNotificationHandler(promptsChangeConsumersFinal)); + + // Utility Logging Notification + List>> loggingConsumersFinal = new ArrayList<>(); + loggingConsumersFinal.add((notification) -> Mono.fromRunnable(() -> logger.info("Logging: {}", notification))); + if (!Utils.isEmpty(features.loggingConsumers())) { + loggingConsumersFinal.addAll(features.loggingConsumers()); + } + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_MESSAGE, + asyncLoggingNotificationHandler(loggingConsumersFinal)); + + this.mcpSession = new DefaultMcpSession(requestTimeout, transport, requestHandlers, notificationHandlers); + + } + /** * Create a new McpAsyncClient with the given transport and session request-response * timeout. @@ -129,7 +242,9 @@ public class McpAsyncClient { * @param promptsChangeConsumers the prompts change consumers. * @param loggingConsumers the logging consumers. * @param samplingHandler the sampling handler. + * @deprecated Use {@link McpClient#async(ClientMcpTransport)} to obtain an instance. */ + @Deprecated public McpAsyncClient(ClientMcpTransport transport, Duration requestTimeout, Implementation clientInfo, ClientCapabilities clientCapabilities, Map roots, List>> toolsChangeConsumers, @@ -153,11 +268,11 @@ public class McpAsyncClient { this.roots = roots != null ? new ConcurrentHashMap<>(roots) : new ConcurrentHashMap<>(); // Request Handlers - Map requestHanlers = new HashMap<>(); + Map> requestHandlers = new HashMap<>(); // Roots List Request Handler - if (this.roots != null && this.clientCapabilities.roots() != null) { - requestHanlers.put(McpSchema.METHOD_ROOTS_LIST, rootsListRequestHandler()); + if (this.clientCapabilities.roots() != null) { + requestHandlers.put(McpSchema.METHOD_ROOTS_LIST, rootsListRequestHandler()); } // Sampling Handler @@ -165,8 +280,9 @@ public class McpAsyncClient { if (samplingHandler == null) { throw new McpError("Sampling handler must not be null when client capabilities include sampling"); } - this.samplingHandler = samplingHandler; - requestHanlers.put(McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, samplingCreateMessageHandler()); + this.samplingHandler = r -> Mono.fromCallable(() -> samplingHandler.apply(r)) + .subscribeOn(Schedulers.boundedElastic()); + requestHandlers.put(McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, samplingCreateMessageHandler()); } // Notification Handlers @@ -208,7 +324,7 @@ public class McpAsyncClient { notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_MESSAGE, loggingNotificationHandler(loggingConsumersFinal)); - this.mcpSession = new DefaultMcpSession(requestTimeout, transport, requestHanlers, notificationHandlers); + this.mcpSession = new DefaultMcpSession(requestTimeout, transport, requestHandlers, notificationHandlers); } @@ -416,15 +532,13 @@ public class McpAsyncClient { // -------------------------- // Sampling // -------------------------- - private RequestHandler samplingCreateMessageHandler() { + private RequestHandler samplingCreateMessageHandler() { return params -> { McpSchema.CreateMessageRequest request = transport.unmarshalFrom(params, new TypeReference() { }); - CreateMessageResult response = this.samplingHandler.apply(request); - - return Mono.just(response); + return this.samplingHandler.apply(request); }; } @@ -500,6 +614,26 @@ public class McpAsyncClient { }).then(); // Convert to Mono } + /** + * Creates a notification handler for tools/list_changed notifications from the + * server. When the server's available tools change, it sends a notification to inform + * connected clients. This handler automatically fetches the updated tool list and + * distributes it to all registered consumers. + * @param toolsChangeConsumers List of consumers that will be notified when the tools + * list changes. Each consumer receives the complete updated list of tools. + * @return A NotificationHandler that processes tools/list_changed notifications by: + * 1. Fetching the current list of tools from the server 2. Distributing the updated + * list to all registered consumers 3. Handling any errors that occur during this + * process + */ + private NotificationHandler asyncToolsChangeNotificationHandler( + List, Mono>> toolsChangeConsumers) { + // TODO: params are not used yet + return params -> listTools().flatMap(listToolsResult -> Flux.fromIterable(toolsChangeConsumers) + .flatMap(consumer -> consumer.apply(listToolsResult.tools())) + .then()); + } + // -------------------------- // Resources // -------------------------- @@ -621,6 +755,13 @@ public class McpAsyncClient { }).then(); } + private NotificationHandler asyncResourcesChangeNotificationHandler( + List, Mono>> resourcesChangeConsumers) { + return params -> listResources().flatMap(listResourcesResult -> Flux.fromIterable(resourcesChangeConsumers) + .flatMap(consumer -> consumer.apply(listResourcesResult.resources())) + .then()); + } + // -------------------------- // Prompts // -------------------------- @@ -682,6 +823,13 @@ public class McpAsyncClient { }; // @formatter:on } + private NotificationHandler asyncPromptsChangeNotificationHandler( + List, Mono>> promptsChangeConsumers) { + return params -> listPrompts().flatMap(listPromptsResult -> Flux.fromIterable(promptsChangeConsumers) + .flatMap(consumer -> consumer.apply(listPromptsResult.prompts())) + .then()); + } + // -------------------------- // Logging // -------------------------- @@ -711,6 +859,28 @@ public class McpAsyncClient { }; } + /** + * Create a notification handler for logging notifications from the server. This + * handler automatically distributes logging messages to all registered consumers. + * @param loggingConsumers List of consumers that will be notified when a logging + * message is received. Each consumer receives the logging message notification. + * @return A NotificationHandler that processes log notifications by distributing the + * message to all registered consumers + */ + private NotificationHandler asyncLoggingNotificationHandler( + List>> loggingConsumers) { + + return params -> { + McpSchema.LoggingMessageNotification loggingMessageNotification = transport.unmarshalFrom(params, + new TypeReference() { + }); + + return Flux.fromIterable(loggingConsumers) + .flatMap(consumer -> consumer.apply(loggingMessageNotification)) + .then(); + }; + } + /** * Client can set the minimum logging level it wants to receive from the server. * @param loggingLevel the min logging level diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java index cac0001..69a811e 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java @@ -24,6 +24,8 @@ import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; +import reactor.core.publisher.Mono; + import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; @@ -58,24 +60,30 @@ import org.springframework.ai.mcp.util.Assert; * * *

    - * Example of creating a basic client:

    {@code
    - * McpClient.using(transport)
    + * Example of creating a basic synchronous client: 
    {@code
    + * McpClient.sync(transport)
      *     .requestTimeout(Duration.ofSeconds(5))
    - *     .sync(); // or .async()
    + *     .build();
    + * }
    + * + * Example of creating a basic asynchronous client:
    {@code
    + * McpClient.async(transport)
    + *     .requestTimeout(Duration.ofSeconds(5))
    + *     .build();
      * }
    * *

    - * Example with advanced configuration:

    {@code
    - * McpClient.using(transport)
    + * Example with advanced asynchronous configuration: 
    {@code
    + * McpClient.async(transport)
      *     .requestTimeout(Duration.ofSeconds(10))
      *     .capabilities(new ClientCapabilities(...))
      *     .clientInfo(new Implementation("My Client", "1.0.0"))
      *     .roots(new Root("file://workspace", "Workspace Files"))
    - *     .toolsChangeConsumer(tools -> System.out.println("Tools updated: " + tools))
    - *     .resourcesChangeConsumer(resources -> System.out.println("Resources updated: " + resources))
    - *     .promptsChangeConsumer(prompts -> System.out.println("Prompts updated: " + prompts))
    - *     .loggingConsumer(message -> System.out.println("Log message: " + message))
    - *     .async();
    + *     .toolsChangeConsumer(tools -> Mono.fromRunnable(() -> System.out.println("Tools updated: " + tools)))
    + *     .resourcesChangeConsumer(resources -> Mono.fromRunnable(() -> System.out.println("Resources updated: " + resources)))
    + *     .promptsChangeConsumer(prompts -> Mono.fromRunnable(() -> System.out.println("Prompts updated: " + prompts)))
    + *     .loggingConsumer(message -> Mono.fromRunnable(() -> System.out.println("Log message: " + message)))
    + *     .build();
      * }
    * *

    @@ -115,7 +123,11 @@ public interface McpClient { * and {@code SseClientTransport} for SSE-based communication. * @return A new builder instance for configuring the client * @throws IllegalArgumentException if transport is null + * @deprecated Use {@link #sync(ClientMcpTransport)} or + * {@link #async(ClientMcpTransport)} specification builder to configure the client + * and build an instance. */ + @Deprecated public static Builder using(ClientMcpTransport transport) { return new Builder(transport); } @@ -136,7 +148,12 @@ public interface McpClient { *

  • Change notification handlers for tools, resources, and prompts *
  • Custom message sampling logic * + * + * @deprecated Use {@link #sync(ClientMcpTransport)} or + * {@link #async(ClientMcpTransport)} specification builder to instantiate an + * instance. */ + @Deprecated public static class Builder { private final ClientMcpTransport transport; @@ -353,4 +370,431 @@ public interface McpClient { } + /** + * Synchronous client specification. + */ + class SyncSpec { + + private final ClientMcpTransport transport; + + private Duration requestTimeout = Duration.ofSeconds(20); // Default timeout + + private ClientCapabilities capabilities; + + private Implementation clientInfo = new Implementation("Spring AI MCP Client", "0.3.1"); + + private Map roots = new HashMap<>(); + + private List>> toolsChangeConsumers = new ArrayList<>(); + + private List>> resourcesChangeConsumers = new ArrayList<>(); + + private List>> promptsChangeConsumers = new ArrayList<>(); + + private List> loggingConsumers = new ArrayList<>(); + + private Function samplingHandler; + + private SyncSpec(ClientMcpTransport transport) { + this.transport = transport; + } + + /** + * Sets the duration to wait for server responses before timing out requests. This + * timeout applies to all requests made through the client, including tool calls, + * resource access, and prompt operations. + * @param requestTimeout The duration to wait before timing out requests. Must not + * be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if requestTimeout is null + */ + public SyncSpec requestTimeout(Duration requestTimeout) { + Assert.notNull(requestTimeout, "Request timeout must not be null"); + this.requestTimeout = requestTimeout; + return this; + } + + /** + * Sets the client capabilities that will be advertised to the server during + * connection initialization. Capabilities define what features the client + * supports, such as tool execution, resource access, and prompt handling. + * @param capabilities The client capabilities configuration. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if capabilities is null + */ + public SyncSpec capabilities(ClientCapabilities capabilities) { + Assert.notNull(capabilities, "Capabilities must not be null"); + this.capabilities = capabilities; + return this; + } + + /** + * Sets the client implementation information that will be shared with the server + * during connection initialization. This helps with version compatibility and + * debugging. + * @param clientInfo The client implementation details including name and version. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if clientInfo is null + */ + public SyncSpec clientInfo(Implementation clientInfo) { + Assert.notNull(clientInfo, "Client info must not be null"); + this.clientInfo = clientInfo; + return this; + } + + /** + * Sets the root URIs that this client can access. Roots define the base URIs for + * resources that the client can request from the server. For example, a root + * might be "file://workspace" for accessing workspace files. + * @param roots A list of root definitions. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if roots is null + */ + public SyncSpec roots(List roots) { + Assert.notNull(roots, "Roots must not be null"); + for (Root root : roots) { + this.roots.put(root.uri(), root); + } + return this; + } + + /** + * Sets the root URIs that this client can access, using a varargs parameter for + * convenience. This is an alternative to {@link #roots(List)}. + * @param roots An array of root definitions. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if roots is null + * @see #roots(List) + */ + public SyncSpec roots(Root... roots) { + Assert.notNull(roots, "Roots must not be null"); + for (Root root : roots) { + this.roots.put(root.uri(), root); + } + return this; + } + + /** + * Sets a custom sampling handler for processing message creation requests. The + * sampling handler can modify or validate messages before they are sent to the + * server, enabling custom processing logic. + * @param samplingHandler A function that processes message requests and returns + * results. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if samplingHandler is null + */ + public SyncSpec sampling(Function samplingHandler) { + Assert.notNull(samplingHandler, "Sampling handler must not be null"); + this.samplingHandler = samplingHandler; + return this; + } + + /** + * Adds a consumer to be notified when the available tools change. This allows the + * client to react to changes in the server's tool capabilities, such as tools + * being added or removed. + * @param toolsChangeConsumer A consumer that receives the updated list of + * available tools. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if toolsChangeConsumer is null + */ + public SyncSpec toolsChangeConsumer(Consumer> toolsChangeConsumer) { + Assert.notNull(toolsChangeConsumer, "Tools change consumer must not be null"); + this.toolsChangeConsumers.add(toolsChangeConsumer); + return this; + } + + /** + * Adds a consumer to be notified when the available resources change. This allows + * the client to react to changes in the server's resource availability, such as + * files being added or removed. + * @param resourcesChangeConsumer A consumer that receives the updated list of + * available resources. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourcesChangeConsumer is null + */ + public SyncSpec resourcesChangeConsumer(Consumer> resourcesChangeConsumer) { + Assert.notNull(resourcesChangeConsumer, "Resources change consumer must not be null"); + this.resourcesChangeConsumers.add(resourcesChangeConsumer); + return this; + } + + /** + * Adds a consumer to be notified when the available prompts change. This allows + * the client to react to changes in the server's prompt templates, such as new + * templates being added or existing ones being modified. + * @param promptsChangeConsumer A consumer that receives the updated list of + * available prompts. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if promptsChangeConsumer is null + */ + public SyncSpec promptsChangeConsumer(Consumer> promptsChangeConsumer) { + Assert.notNull(promptsChangeConsumer, "Prompts change consumer must not be null"); + this.promptsChangeConsumers.add(promptsChangeConsumer); + return this; + } + + /** + * Adds a consumer to be notified when logging messages are received from the + * server. This allows the client to react to log messages, such as warnings or + * errors, that are sent by the server. + * @param loggingConsumer A consumer that receives logging messages. Must not be + * null. + * @return This builder instance for method chaining + */ + public SyncSpec loggingConsumer(Consumer loggingConsumer) { + Assert.notNull(loggingConsumer, "Logging consumer must not be null"); + this.loggingConsumers.add(loggingConsumer); + return this; + } + + /** + * Adds multiple consumers to be notified when logging messages are received from + * the server. This allows the client to react to log messages, such as warnings + * or errors, that are sent by the server. + * @param loggingConsumers A list of consumers that receive logging messages. Must + * not be null. + * @return This builder instance for method chaining + */ + public SyncSpec loggingConsumers(List> loggingConsumers) { + Assert.notNull(loggingConsumers, "Logging consumers must not be null"); + this.loggingConsumers.addAll(loggingConsumers); + return this; + } + + /** + * Create an instance of {@link McpSyncClient} with the provided configurations or + * sensible defaults. + * @return a new instance of {@link McpSyncClient}. + */ + public McpSyncClient build() { + McpClientFeatures.Sync syncFeatures = new McpClientFeatures.Sync(this.clientInfo, this.capabilities, + this.roots, this.toolsChangeConsumers, this.resourcesChangeConsumers, this.promptsChangeConsumers, + this.loggingConsumers, this.samplingHandler); + + McpClientFeatures.Async asyncFeatures = McpClientFeatures.Async.fromSync(syncFeatures); + + return new McpSyncClient(new McpAsyncClient(transport, this.requestTimeout, asyncFeatures)); + } + + } + + /** + * Asynchronous client specification. + */ + class AsyncSpec { + + private final ClientMcpTransport transport; + + private Duration requestTimeout = Duration.ofSeconds(20); // Default timeout + + private ClientCapabilities capabilities; + + private Implementation clientInfo = new Implementation("Spring AI MCP Client", "0.3.1"); + + private Map roots = new HashMap<>(); + + private List, Mono>> toolsChangeConsumers = new ArrayList<>(); + + private List, Mono>> resourcesChangeConsumers = new ArrayList<>(); + + private List, Mono>> promptsChangeConsumers = new ArrayList<>(); + + private List>> loggingConsumers = new ArrayList<>(); + + private Function> samplingHandler; + + private AsyncSpec(ClientMcpTransport transport) { + this.transport = transport; + } + + /** + * Sets the duration to wait for server responses before timing out requests. This + * timeout applies to all requests made through the client, including tool calls, + * resource access, and prompt operations. + * @param requestTimeout The duration to wait before timing out requests. Must not + * be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if requestTimeout is null + */ + public AsyncSpec requestTimeout(Duration requestTimeout) { + Assert.notNull(requestTimeout, "Request timeout must not be null"); + this.requestTimeout = requestTimeout; + return this; + } + + /** + * Sets the client capabilities that will be advertised to the server during + * connection initialization. Capabilities define what features the client + * supports, such as tool execution, resource access, and prompt handling. + * @param capabilities The client capabilities configuration. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if capabilities is null + */ + public AsyncSpec capabilities(ClientCapabilities capabilities) { + Assert.notNull(capabilities, "Capabilities must not be null"); + this.capabilities = capabilities; + return this; + } + + /** + * Sets the client implementation information that will be shared with the server + * during connection initialization. This helps with version compatibility and + * debugging. + * @param clientInfo The client implementation details including name and version. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if clientInfo is null + */ + public AsyncSpec clientInfo(Implementation clientInfo) { + Assert.notNull(clientInfo, "Client info must not be null"); + this.clientInfo = clientInfo; + return this; + } + + /** + * Sets the root URIs that this client can access. Roots define the base URIs for + * resources that the client can request from the server. For example, a root + * might be "file://workspace" for accessing workspace files. + * @param roots A list of root definitions. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if roots is null + */ + public AsyncSpec roots(List roots) { + Assert.notNull(roots, "Roots must not be null"); + for (Root root : roots) { + this.roots.put(root.uri(), root); + } + return this; + } + + /** + * Sets the root URIs that this client can access, using a varargs parameter for + * convenience. This is an alternative to {@link #roots(List)}. + * @param roots An array of root definitions. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if roots is null + * @see #roots(List) + */ + public AsyncSpec roots(Root... roots) { + Assert.notNull(roots, "Roots must not be null"); + for (Root root : roots) { + this.roots.put(root.uri(), root); + } + return this; + } + + /** + * Sets a custom sampling handler for processing message creation requests. The + * sampling handler can modify or validate messages before they are sent to the + * server, enabling custom processing logic. + * @param samplingHandler A function that processes message requests and returns + * results. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if samplingHandler is null + */ + public AsyncSpec sampling(Function> samplingHandler) { + Assert.notNull(samplingHandler, "Sampling handler must not be null"); + this.samplingHandler = samplingHandler; + return this; + } + + /** + * Adds a consumer to be notified when the available tools change. This allows the + * client to react to changes in the server's tool capabilities, such as tools + * being added or removed. + * @param toolsChangeConsumer A consumer that receives the updated list of + * available tools. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if toolsChangeConsumer is null + */ + public AsyncSpec toolsChangeConsumer(Function, Mono> toolsChangeConsumer) { + Assert.notNull(toolsChangeConsumer, "Tools change consumer must not be null"); + this.toolsChangeConsumers.add(toolsChangeConsumer); + return this; + } + + /** + * Adds a consumer to be notified when the available resources change. This allows + * the client to react to changes in the server's resource availability, such as + * files being added or removed. + * @param resourcesChangeConsumer A consumer that receives the updated list of + * available resources. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourcesChangeConsumer is null + */ + public AsyncSpec resourcesChangeConsumer( + Function, Mono> resourcesChangeConsumer) { + Assert.notNull(resourcesChangeConsumer, "Resources change consumer must not be null"); + this.resourcesChangeConsumers.add(resourcesChangeConsumer); + return this; + } + + /** + * Adds a consumer to be notified when the available prompts change. This allows + * the client to react to changes in the server's prompt templates, such as new + * templates being added or existing ones being modified. + * @param promptsChangeConsumer A consumer that receives the updated list of + * available prompts. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if promptsChangeConsumer is null + */ + public AsyncSpec promptsChangeConsumer(Function, Mono> promptsChangeConsumer) { + Assert.notNull(promptsChangeConsumer, "Prompts change consumer must not be null"); + this.promptsChangeConsumers.add(promptsChangeConsumer); + return this; + } + + /** + * Adds a consumer to be notified when logging messages are received from the + * server. This allows the client to react to log messages, such as warnings or + * errors, that are sent by the server. + * @param loggingConsumer A consumer that receives logging messages. Must not be + * null. + * @return This builder instance for method chaining + */ + public AsyncSpec loggingConsumer(Function> loggingConsumer) { + Assert.notNull(loggingConsumer, "Logging consumer must not be null"); + this.loggingConsumers.add(loggingConsumer); + return this; + } + + /** + * Adds multiple consumers to be notified when logging messages are received from + * the server. This allows the client to react to log messages, such as warnings + * or errors, that are sent by the server. + * @param loggingConsumers A list of consumers that receive logging messages. Must + * not be null. + * @return This builder instance for method chaining + */ + public AsyncSpec loggingConsumers( + List>> loggingConsumers) { + Assert.notNull(loggingConsumers, "Logging consumers must not be null"); + this.loggingConsumers.addAll(loggingConsumers); + return this; + } + + /** + * Create an instance of {@link McpAsyncClient} with the provided configurations + * or sensible defaults. + * @return a new instance of {@link McpAsyncClient}. + */ + public McpAsyncClient build() { + return new McpAsyncClient(this.transport, this.requestTimeout, + new McpClientFeatures.Async(this.clientInfo, this.capabilities, this.roots, + this.toolsChangeConsumers, this.resourcesChangeConsumers, this.promptsChangeConsumers, + this.loggingConsumers, this.samplingHandler)); + } + + } + + static SyncSpec sync(ClientMcpTransport transport) { + return new SyncSpec(transport); + } + + static AsyncSpec async(ClientMcpTransport transport) { + return new AsyncSpec(transport); + } + } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java new file mode 100644 index 0000000..9277398 --- /dev/null +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java @@ -0,0 +1,200 @@ +package org.springframework.ai.mcp.client; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Consumer; +import java.util.function.Function; + +import reactor.core.publisher.Mono; +import reactor.core.scheduler.Schedulers; + +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.util.Assert; +import org.springframework.ai.mcp.util.Utils; + +/** + * Internal representation of features and capabilities for Model Context Protocol (MCP) + * clients. This class provides two record types for managing client features: + *
      + *
    • {@link Async} for non-blocking operations with Project Reactor's Mono responses + *
    • {@link Sync} for blocking operations with direct responses + *
    + * + *

    + * Each feature specification includes: + *

      + *
    • Client implementation information and capabilities + *
    • Root URI mappings for resource access + *
    • Change notification handlers for tools, resources, and prompts + *
    • Logging message consumers + *
    • Message sampling handlers for request processing + *
    + * + *

    + * The class supports conversion between synchronous and asynchronous specifications + * through the {@link Async#fromSync} method, which ensures proper handling of blocking + * operations in non-blocking contexts by scheduling them on a bounded elastic scheduler. + * + * @see McpClient + * @see McpSchema.Implementation + * @see McpSchema.ClientCapabilities + */ +class McpClientFeatures { + + /** + * Asynchronous client features specification providing the capabilities and request + * and notification handlers. + * + * @param clientInfo the client implementation information. + * @param clientCapabilities the client capabilities. + * @param roots the roots. + * @param toolsChangeConsumers the tools change consumers. + * @param resourcesChangeConsumers the resources change consumers. + * @param promptsChangeConsumers the prompts change consumers. + * @param loggingConsumers the logging consumers. + * @param samplingHandler the sampling handler. + */ + record Async(McpSchema.Implementation clientInfo, McpSchema.ClientCapabilities clientCapabilities, + Map roots, List, Mono>> toolsChangeConsumers, + List, Mono>> resourcesChangeConsumers, + List, Mono>> promptsChangeConsumers, + List>> loggingConsumers, + Function> samplingHandler) { + + /** + * Create an instance and validate the arguments. + * @param clientInfo the client implementation information. + * @param clientCapabilities the client capabilities. + * @param roots the roots. + * @param toolsChangeConsumers the tools change consumers. + * @param resourcesChangeConsumers the resources change consumers. + * @param promptsChangeConsumers the prompts change consumers. + * @param loggingConsumers the logging consumers. + * @param samplingHandler the sampling handler. + */ + public Async(McpSchema.Implementation clientInfo, McpSchema.ClientCapabilities clientCapabilities, + Map roots, + List, Mono>> toolsChangeConsumers, + List, Mono>> resourcesChangeConsumers, + List, Mono>> promptsChangeConsumers, + List>> loggingConsumers, + Function> samplingHandler) { + + Assert.notNull(clientInfo, "Client info must not be null"); + + this.clientInfo = clientInfo; + this.clientCapabilities = (clientCapabilities != null) ? clientCapabilities + : new McpSchema.ClientCapabilities(null, + !Utils.isEmpty(roots) ? new McpSchema.ClientCapabilities.RootCapabilities(false) : null, + samplingHandler != null ? new McpSchema.ClientCapabilities.Sampling() : null); + this.roots = roots != null ? new ConcurrentHashMap<>(roots) : new ConcurrentHashMap<>(); + + this.toolsChangeConsumers = toolsChangeConsumers; + this.resourcesChangeConsumers = resourcesChangeConsumers; + this.promptsChangeConsumers = promptsChangeConsumers; + this.loggingConsumers = loggingConsumers; + this.samplingHandler = samplingHandler; + } + + /** + * Convert a synchronous specification into an asynchronous one and provide + * blocking code offloading to prevent accidental blocking of the non-blocking + * transport. + * @param syncSpec a potentially blocking, synchronous specification. + * @return a specification which is protected from blocking calls specified by the + * user. + */ + public static Async fromSync(Sync syncSpec) { + List, Mono>> toolsChangeConsumers = new ArrayList<>(); + for (Consumer> consumer : syncSpec.toolsChangeConsumers()) { + toolsChangeConsumers.add(t -> Mono.fromRunnable(() -> consumer.accept(t)) + .subscribeOn(Schedulers.boundedElastic())); + } + + List, Mono>> resourcesChangeConsumers = new ArrayList<>(); + for (Consumer> consumer : syncSpec.resourcesChangeConsumers()) { + resourcesChangeConsumers.add(r -> Mono.fromRunnable(() -> consumer.accept(r)) + .subscribeOn(Schedulers.boundedElastic())); + } + + List, Mono>> promptsChangeConsumers = new ArrayList<>(); + + for (Consumer> consumer : syncSpec.promptsChangeConsumers()) { + promptsChangeConsumers.add(p -> Mono.fromRunnable(() -> consumer.accept(p)) + .subscribeOn(Schedulers.boundedElastic())); + } + + List>> loggingConsumers = new ArrayList<>(); + for (Consumer consumer : syncSpec.loggingConsumers()) { + loggingConsumers.add(l -> Mono.fromRunnable(() -> consumer.accept(l)) + .subscribeOn(Schedulers.boundedElastic())); + } + + Function> samplingHandler = r -> Mono + .fromCallable(() -> syncSpec.samplingHandler().apply(r)) + .subscribeOn(Schedulers.boundedElastic()); + return new Async(syncSpec.clientInfo(), syncSpec.clientCapabilities(), syncSpec.roots(), + toolsChangeConsumers, resourcesChangeConsumers, promptsChangeConsumers, loggingConsumers, + samplingHandler); + } + } + + /** + * Synchronous client features specification providing the capabilities and request + * and notification handlers. + * + * @param clientInfo the client implementation information. + * @param clientCapabilities the client capabilities. + * @param roots the roots. + * @param toolsChangeConsumers the tools change consumers. + * @param resourcesChangeConsumers the resources change consumers. + * @param promptsChangeConsumers the prompts change consumers. + * @param loggingConsumers the logging consumers. + * @param samplingHandler the sampling handler. + */ + public record Sync(McpSchema.Implementation clientInfo, McpSchema.ClientCapabilities clientCapabilities, + Map roots, List>> toolsChangeConsumers, + List>> resourcesChangeConsumers, + List>> promptsChangeConsumers, + List> loggingConsumers, + Function samplingHandler) { + + /** + * Create an instance and validate the arguments. + * @param clientInfo the client implementation information. + * @param clientCapabilities the client capabilities. + * @param roots the roots. + * @param toolsChangeConsumers the tools change consumers. + * @param resourcesChangeConsumers the resources change consumers. + * @param promptsChangeConsumers the prompts change consumers. + * @param loggingConsumers the logging consumers. + * @param samplingHandler the sampling handler. + */ + public Sync(McpSchema.Implementation clientInfo, McpSchema.ClientCapabilities clientCapabilities, + Map roots, List>> toolsChangeConsumers, + List>> resourcesChangeConsumers, + List>> promptsChangeConsumers, + List> loggingConsumers, + Function samplingHandler) { + + Assert.notNull(clientInfo, "Client info must not be null"); + + this.clientInfo = clientInfo; + this.clientCapabilities = (clientCapabilities != null) ? clientCapabilities + : new McpSchema.ClientCapabilities(null, + !Utils.isEmpty(roots) ? new McpSchema.ClientCapabilities.RootCapabilities(false) : null, + samplingHandler != null ? new McpSchema.ClientCapabilities.Sampling() : null); + this.roots = roots != null ? new HashMap<>(roots) : new HashMap<>(); + + this.toolsChangeConsumers = toolsChangeConsumers; + this.resourcesChangeConsumers = resourcesChangeConsumers; + this.promptsChangeConsumers = promptsChangeConsumers; + this.loggingConsumers = loggingConsumers; + this.samplingHandler = samplingHandler; + } + } + +} diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java index 8cc018a..954f7aa 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java @@ -29,10 +29,39 @@ import org.springframework.ai.mcp.spec.McpSchema.ListPromptsResult; import org.springframework.ai.mcp.util.Assert; /** - * A synchronous client for the Model Context Protocol (MCP). + * A synchronous client implementation for the Model Context Protocol (MCP) that wraps an + * {@link McpAsyncClient} to provide blocking operations. + * + *

    + * This client implements the MCP specification by delegating to an asynchronous client + * and blocking on the results. Key features include: + *

      + *
    • Synchronous, blocking API for simpler integration in non-reactive applications + *
    • Tool discovery and invocation for server-provided functionality + *
    • Resource access and management with URI-based addressing + *
    • Prompt template handling for standardized AI interactions + *
    • Real-time notifications for tools, resources, and prompts changes + *
    • Structured logging with configurable severity levels + *
    + * + *

    + * The client follows the same lifecycle as its async counterpart: + *

      + *
    1. Initialization - Establishes connection and negotiates capabilities + *
    2. Normal Operation - Handles requests and notifications + *
    3. Graceful Shutdown - Ensures clean connection termination + *
    + * + *

    + * This implementation implements {@link AutoCloseable} for resource cleanup and provides + * both immediate and graceful shutdown options. All operations block until completion or + * timeout, making it suitable for traditional synchronous programming models. * * @author Dariusz Jędrzejczyk * @author Christian Tzolov + * @see McpClient + * @see McpAsyncClient + * @see McpSchema */ public class McpSyncClient implements AutoCloseable { diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index 37d0c65..d5e3043 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -24,10 +24,12 @@ import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.function.Consumer; +import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; @@ -48,9 +50,43 @@ import org.springframework.ai.mcp.util.Utils; /** * The Model Context Protocol (MCP) server implementation that provides asynchronous - * communication. + * communication using Project Reactor's Mono and Flux types. + * + *

    + * This server implements the MCP specification, enabling AI models to expose tools, + * resources, and prompts through a standardized interface. Key features include: + *

      + *
    • Asynchronous communication using reactive programming patterns + *
    • Dynamic tool registration and management + *
    • Resource handling with URI-based addressing + *
    • Prompt template management + *
    • Real-time client notifications for state changes + *
    • Structured logging with configurable severity levels + *
    • Support for client-side AI model sampling + *
    + * + *

    + * The server follows a lifecycle: + *

      + *
    1. Initialization - Accepts client connections and negotiates capabilities + *
    2. Normal Operation - Handles client requests and sends notifications + *
    3. Graceful Shutdown - Ensures clean connection termination + *
    + * + *

    + * This implementation uses Project Reactor for non-blocking operations, making it + * suitable for high-throughput scenarios and reactive applications. All operations return + * Mono or Flux types that can be composed into reactive pipelines. + * + *

    + * The server supports runtime modification of its capabilities through methods like + * {@link #addTool}, {@link #addResource}, and {@link #addPrompt}, automatically notifying + * connected clients of changes when configured to do so. * * @author Christian Tzolov + * @see McpServer + * @see McpSchema + * @see DefaultMcpSession */ public class McpAsyncServer { @@ -75,16 +111,84 @@ public class McpAsyncServer { /** * Thread-safe list of tool handlers that can be modified at runtime. */ - private final CopyOnWriteArrayList tools; + private final CopyOnWriteArrayList tools = new CopyOnWriteArrayList<>(); - private final CopyOnWriteArrayList resourceTemplates; + private final CopyOnWriteArrayList resourceTemplates = new CopyOnWriteArrayList<>(); - private final ConcurrentHashMap resources; + private final ConcurrentHashMap resources = new ConcurrentHashMap<>(); - private final ConcurrentHashMap prompts; + private final ConcurrentHashMap prompts = new ConcurrentHashMap<>(); private LoggingLevel minLoggingLevel = LoggingLevel.DEBUG; + /** + * Create a new McpAsyncServer with the given transport and capabilities. + * @param mcpTransport The transport layer implementation for MCP communication. + * @param features The MCP server supported features. + */ + McpAsyncServer(ServerMcpTransport mcpTransport, McpServerFeatures.Async features) { + this.serverInfo = features.serverInfo(); + this.serverCapabilities = features.serverCapabilities(); + this.tools.addAll(features.tools()); + this.resources.putAll(features.resources()); + this.resourceTemplates.addAll(features.resourceTemplates()); + this.prompts.putAll(features.prompts()); + + Map> requestHandlers = new HashMap<>(); + + // Initialize request handlers for standard MCP methods + requestHandlers.put(McpSchema.METHOD_INITIALIZE, initializeRequestHandler()); + + // Ping MUST respond with an empty data, but not NULL response. + requestHandlers.put(McpSchema.METHOD_PING, (params) -> Mono.just("")); + + // Add tools API handlers if the tool capability is enabled + if (this.serverCapabilities.tools() != null) { + requestHandlers.put(McpSchema.METHOD_TOOLS_LIST, toolsListRequestHandler()); + requestHandlers.put(McpSchema.METHOD_TOOLS_CALL, toolsCallRequestHandler()); + } + + // Add resources API handlers if provided + if (!Utils.isEmpty(this.resources)) { + requestHandlers.put(McpSchema.METHOD_RESOURCES_LIST, resourcesListRequestHandler()); + requestHandlers.put(McpSchema.METHOD_RESOURCES_READ, resourcesReadRequestHandler()); + } + + // Add resource templates API handlers if provided. + if (!Utils.isEmpty(this.resourceTemplates)) { + requestHandlers.put(McpSchema.METHOD_RESOURCES_TEMPLATES_LIST, resourceTemplateListRequestHandler()); + } + + // Add prompts API handlers if provider exists + if (!Utils.isEmpty(this.prompts)) { + requestHandlers.put(McpSchema.METHOD_PROMPT_LIST, promptsListRequestHandler()); + requestHandlers.put(McpSchema.METHOD_PROMPT_GET, promptsGetRequestHandler()); + } + + // Add logging API handlers if the logging capability is enabled + if (this.serverCapabilities.logging() != null) { + requestHandlers.put(McpSchema.METHOD_LOGGING_SET_LEVEL, setLoggerRequestHandler()); + } + + Map notificationHandlers = new HashMap<>(); + + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_INITIALIZED, (params) -> Mono.empty()); + + List, Mono>> rootsChangeConsumers = features.rootsChangeConsumers(); + + if (Utils.isEmpty(rootsChangeConsumers)) { + rootsChangeConsumers = List.of((roots) -> Mono.fromRunnable(() -> logger + .warn("Roots list changed notification, but no consumers provided. Roots list changed: {}", roots))); + } + + notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_ROOTS_LIST_CHANGED, + asyncRootsListChangedNotificationHandler(rootsChangeConsumers)); + + this.transport = mcpTransport; + this.mcpSession = new DefaultMcpSession(Duration.ofSeconds(10), mcpTransport, requestHandlers, + notificationHandlers); + } + /** * Create a new McpAsyncServer with the given transport and capabilities. * @param mcpTransport The transport layer implementation for MCP communication @@ -96,18 +200,28 @@ public class McpAsyncServer { * @param prompts The map of prompt registrations * @param rootsChangeConsumers The list of consumers that will be notified when the * roots list changes + * @deprecated Use {@link McpServer#sync(ServerMcpTransport)} or + * {@link McpServer#async(ServerMcpTransport)} to create a new server instance. */ + @Deprecated public McpAsyncServer(ServerMcpTransport mcpTransport, McpSchema.Implementation serverInfo, McpSchema.ServerCapabilities serverCapabilities, List tools, Map resources, List resourceTemplates, Map prompts, List>> rootsChangeConsumers) { this.serverInfo = serverInfo; - this.tools = new CopyOnWriteArrayList<>(tools != null ? tools : List.of()); - this.resources = !Utils.isEmpty(resources) ? new ConcurrentHashMap<>(resources) : new ConcurrentHashMap<>(); - this.resourceTemplates = !Utils.isEmpty(resourceTemplates) ? new CopyOnWriteArrayList<>(resourceTemplates) - : new CopyOnWriteArrayList<>(); - this.prompts = !Utils.isEmpty(prompts) ? new ConcurrentHashMap<>(prompts) : new ConcurrentHashMap<>(); + if (!Utils.isEmpty(tools)) { + this.tools.addAll(McpServer.mapDeprecatedTools(tools)); + } + if (!Utils.isEmpty(resources)) { + this.resources.putAll(McpServer.mapDeprecatedResources(resources)); + } + if (!Utils.isEmpty(resourceTemplates)) { + this.resourceTemplates.addAll(resourceTemplates); + } + if (!Utils.isEmpty(prompts)) { + this.prompts.putAll(McpServer.mapDeprecatedPrompts(prompts)); + } this.serverCapabilities = (serverCapabilities != null) ? serverCapabilities : new McpSchema.ServerCapabilities( null, // experimental @@ -118,13 +232,13 @@ public class McpAsyncServer { : null, !Utils.isEmpty(this.tools) ? new McpSchema.ServerCapabilities.ToolCapabilities(false) : null); - Map requestHandlers = new HashMap<>(); + Map> requestHandlers = new HashMap<>(); // Initialize request handlers for standard MCP methods requestHandlers.put(McpSchema.METHOD_INITIALIZE, initializeRequestHandler()); // Ping MUST respond with an empty data, but not NULL response. - requestHandlers.put(McpSchema.METHOD_PING, (params) -> Mono.just("")); + requestHandlers.put(McpSchema.METHOD_PING, (params) -> Mono.just("")); // Add tools API handlers if the tool capability is enabled if (this.serverCapabilities.tools() != null) { @@ -173,7 +287,7 @@ public class McpAsyncServer { // --------------------------------------- // Lifecycle Management // --------------------------------------- - private DefaultMcpSession.RequestHandler initializeRequestHandler() { + private DefaultMcpSession.RequestHandler initializeRequestHandler() { return params -> { McpSchema.InitializeRequest initializeRequest = transport.unmarshalFrom(params, new TypeReference() { @@ -187,14 +301,13 @@ public class McpAsyncServer { initializeRequest.clientInfo()); if (!McpSchema.LATEST_PROTOCOL_VERSION.equals(initializeRequest.protocolVersion())) { - return Mono - .error(new McpError( - "Unsupported protocol version from client: " + initializeRequest.protocolVersion())) + return Mono.error(new McpError( + "Unsupported protocol version from client: " + initializeRequest.protocolVersion())) .publishOn(Schedulers.boundedElastic()); } return Mono - .just(new McpSchema.InitializeResult(McpSchema.LATEST_PROTOCOL_VERSION, this.serverCapabilities, + .just(new McpSchema.InitializeResult(McpSchema.LATEST_PROTOCOL_VERSION, this.serverCapabilities, this.serverInfo, null)) .publishOn(Schedulers.boundedElastic()); }; @@ -268,6 +381,7 @@ public class McpAsyncServer { LIST_ROOTS_RESULT_TYPE_REF); } + @Deprecated private NotificationHandler rootsListChnagedNotificationHandler( List>> rootsChangeConsumers) { @@ -281,6 +395,13 @@ public class McpAsyncServer { }; } + private NotificationHandler asyncRootsListChangedNotificationHandler( + List, Mono>> rootsChangeConsumers) { + return params -> listRoots().flatMap(listRootsResult -> Flux.fromIterable(rootsChangeConsumers) + .flatMap(consumer -> consumer.apply(listRootsResult.roots())) + .then()); + } + // --------------------------------------- // Tool Management // --------------------------------------- @@ -290,6 +411,44 @@ public class McpAsyncServer { * @param toolRegistration The tool registration to add * @return Mono that completes when clients have been notified of the change */ + public Mono addTool(McpServerFeatures.AsyncToolRegistration toolRegistration) { + if (toolRegistration == null) { + return Mono.error(new McpError("Tool registration must not be null")); + } + if (toolRegistration.tool() == null) { + return Mono.error(new McpError("Tool must not be null")); + } + if (toolRegistration.call() == null) { + return Mono.error(new McpError("Tool call handler must not be null")); + } + if (this.serverCapabilities.tools() == null) { + return Mono.error(new McpError("Server must be configured with tool capabilities")); + } + + return Mono.defer(() -> { + // Check for duplicate tool names + if (this.tools.stream().anyMatch(th -> th.tool().name().equals(toolRegistration.tool().name()))) { + return Mono + .error(new McpError("Tool with name '" + toolRegistration.tool().name() + "' already exists")); + } + + this.tools.add(toolRegistration); + logger.info("Added tool handler: {}", toolRegistration.tool().name()); + + if (this.serverCapabilities.tools().listChanged()) { + return notifyToolsListChanged(); + } + return Mono.empty(); + }); + } + + /** + * Add a new tool registration at runtime. + * @param toolRegistration The tool registration to add + * @return Mono that completes when clients have been notified of the change + * @deprecated Use {@link #addTool(McpServerFeatures.AsyncToolRegistration)}. + */ + @Deprecated public Mono addTool(ToolRegistration toolRegistration) { if (toolRegistration == null) { return Mono.error(new McpError("Tool registration must not be null")); @@ -309,7 +468,7 @@ public class McpAsyncServer { return Mono.error(new McpError("Tool with name '" + toolRegistration.tool().name() + "' already exists")); } - this.tools.add(toolRegistration); + this.tools.add(McpServer.mapDeprecatedTool(toolRegistration)); logger.info("Added tool handler: {}", toolRegistration.tool().name()); if (this.serverCapabilities.tools().listChanged()) { return notifyToolsListChanged(); @@ -330,15 +489,17 @@ public class McpAsyncServer { return Mono.error(new McpError("Server must be configured with tool capabilities")); } - boolean removed = this.tools.removeIf(toolRegistration -> toolRegistration.tool().name().equals(toolName)); - if (removed) { - logger.info("Removed tool handler: {}", toolName); - if (this.serverCapabilities.tools().listChanged()) { - return notifyToolsListChanged(); + return Mono.defer(() -> { + boolean removed = this.tools.removeIf(toolRegistration -> toolRegistration.tool().name().equals(toolName)); + if (removed) { + logger.info("Removed tool handler: {}", toolName); + if (this.serverCapabilities.tools().listChanged()) { + return notifyToolsListChanged(); + } + return Mono.empty(); } - return Mono.empty(); - } - return Mono.error(new McpError("Tool with name '" + toolName + "' not found")); + return Mono.error(new McpError("Tool with name '" + toolName + "' not found")); + }); } /** @@ -349,32 +510,30 @@ public class McpAsyncServer { return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_TOOLS_LIST_CHANGED, null); } - private DefaultMcpSession.RequestHandler toolsListRequestHandler() { + private DefaultMcpSession.RequestHandler toolsListRequestHandler() { return params -> { - - List tools = this.tools.stream().map(ToolRegistration::tool).toList(); + List tools = this.tools.stream().map(McpServerFeatures.AsyncToolRegistration::tool).toList(); return Mono.just(new McpSchema.ListToolsResult(tools, null)); }; } - private DefaultMcpSession.RequestHandler toolsCallRequestHandler() { + private DefaultMcpSession.RequestHandler toolsCallRequestHandler() { return params -> { McpSchema.CallToolRequest callToolRequest = transport.unmarshalFrom(params, new TypeReference() { }); - Optional toolRegistration = this.tools.stream() + Optional toolRegistration = this.tools.stream() .filter(tr -> callToolRequest.name().equals(tr.tool().name())) .findAny(); if (toolRegistration.isEmpty()) { - return Mono.error(new McpError("Tool not found: " + callToolRequest.name())); + return Mono.error(new McpError("Tool not found: " + callToolRequest.name())); } - return Mono.fromCallable(() -> toolRegistration.get().call().apply(callToolRequest.arguments())) - .map(result -> (Object) result) - .subscribeOn(Schedulers.boundedElastic()); + return toolRegistration.map(tool -> tool.call().apply(callToolRequest.arguments())) + .orElse(Mono.error(new McpError("Tool not found: " + callToolRequest.name()))); }; } @@ -387,6 +546,35 @@ public class McpAsyncServer { * @param resourceHandler The resource handler to add * @return Mono that completes when clients have been notified of the change */ + public Mono addResource(McpServerFeatures.AsyncResourceRegistration resourceHandler) { + if (resourceHandler == null || resourceHandler.resource() == null) { + return Mono.error(new McpError("Resource must not be null")); + } + + if (this.serverCapabilities.resources() == null) { + return Mono.error(new McpError("Server must be configured with resource capabilities")); + } + + return Mono.defer(() -> { + if (this.resources.putIfAbsent(resourceHandler.resource().uri(), resourceHandler) != null) { + return Mono + .error(new McpError("Resource with URI '" + resourceHandler.resource().uri() + "' already exists")); + } + logger.info("Added resource handler: {}", resourceHandler.resource().uri()); + if (this.serverCapabilities.resources().listChanged()) { + return notifyResourcesListChanged(); + } + return Mono.empty(); + }); + } + + /** + * Add a new resource handler at runtime. + * @param resourceHandler The resource handler to add + * @return Mono that completes when clients have been notified of the change + * @deprecated Use {@link #addResource(McpServerFeatures.AsyncResourceRegistration)}. + */ + @Deprecated public Mono addResource(ResourceRegistration resourceHandler) { if (resourceHandler == null || resourceHandler.resource() == null) { return Mono.error(new McpError("Resource must not be null")); @@ -401,7 +589,7 @@ public class McpAsyncServer { .error(new McpError("Resource with URI '" + resourceHandler.resource().uri() + "' already exists")); } - this.resources.put(resourceHandler.resource().uri(), resourceHandler); + this.resources.put(resourceHandler.resource().uri(), McpServer.mapDeprecatedResource(resourceHandler)); logger.info("Added resource handler: {}", resourceHandler.resource().uri()); if (this.serverCapabilities.resources().listChanged()) { return notifyResourcesListChanged(); @@ -422,15 +610,17 @@ public class McpAsyncServer { return Mono.error(new McpError("Server must be configured with resource capabilities")); } - ResourceRegistration removed = this.resources.remove(resourceUri); - if (removed != null) { - logger.info("Removed resource handler: {}", resourceUri); - if (this.serverCapabilities.resources().listChanged()) { - return notifyResourcesListChanged(); + return Mono.defer(() -> { + McpServerFeatures.AsyncResourceRegistration removed = this.resources.remove(resourceUri); + if (removed != null) { + logger.info("Removed resource handler: {}", resourceUri); + if (this.serverCapabilities.resources().listChanged()) { + return notifyResourcesListChanged(); + } + return Mono.empty(); } - return Mono.empty(); - } - return Mono.error(new McpError("Resource with URI '" + resourceUri + "' not found")); + return Mono.error(new McpError("Resource with URI '" + resourceUri + "' not found")); + }); } /** @@ -441,28 +631,30 @@ public class McpAsyncServer { return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_RESOURCES_LIST_CHANGED, null); } - private DefaultMcpSession.RequestHandler resourcesListRequestHandler() { + private DefaultMcpSession.RequestHandler resourcesListRequestHandler() { return params -> { - var resourceList = this.resources.values().stream().map(ResourceRegistration::resource).toList(); + var resourceList = this.resources.values() + .stream() + .map(McpServerFeatures.AsyncResourceRegistration::resource) + .toList(); return Mono.just(new McpSchema.ListResourcesResult(resourceList, null)); }; } - private DefaultMcpSession.RequestHandler resourceTemplateListRequestHandler() { + private DefaultMcpSession.RequestHandler resourceTemplateListRequestHandler() { return params -> Mono.just(new McpSchema.ListResourceTemplatesResult(this.resourceTemplates, null)); } - private DefaultMcpSession.RequestHandler resourcesReadRequestHandler() { + private DefaultMcpSession.RequestHandler resourcesReadRequestHandler() { return params -> { McpSchema.ReadResourceRequest resourceRequest = transport.unmarshalFrom(params, new TypeReference() { }); var resourceUri = resourceRequest.uri(); - if (this.resources.containsKey(resourceUri)) { - return Mono.fromCallable(() -> this.resources.get(resourceUri).readHandler().apply(resourceRequest)) - .map(result -> (Object) result) - .subscribeOn(Schedulers.boundedElastic()); + McpServerFeatures.AsyncResourceRegistration registration = this.resources.get(resourceUri); + if (registration != null) { + return this.resources.get(resourceUri).readHandler().apply(resourceRequest); } return Mono.error(new McpError("Resource not found: " + resourceUri)); }; @@ -477,6 +669,41 @@ public class McpAsyncServer { * @param promptRegistration The prompt handler to add * @return Mono that completes when clients have been notified of the change */ + public Mono addPrompt(McpServerFeatures.AsyncPromptRegistration promptRegistration) { + if (promptRegistration == null) { + return Mono.error(new McpError("Prompt registration must not be null")); + } + if (this.serverCapabilities.prompts() == null) { + return Mono.error(new McpError("Server must be configured with prompt capabilities")); + } + + return Mono.defer(() -> { + McpServerFeatures.AsyncPromptRegistration registration = this.prompts + .putIfAbsent(promptRegistration.prompt().name(), promptRegistration); + if (registration != null) { + return Mono.error( + new McpError("Prompt with name '" + promptRegistration.prompt().name() + "' already exists")); + } + + logger.info("Added prompt handler: {}", promptRegistration.prompt().name()); + + // Servers that declared the listChanged capability SHOULD send a + // notification, + // when the list of available prompts changes + if (this.serverCapabilities.prompts().listChanged()) { + return notifyPromptsListChanged(); + } + return Mono.empty(); + }); + } + + /** + * Add a new prompt handler at runtime. + * @param promptRegistration The prompt handler to add + * @return Mono that completes when clients have been notified of the change + * @deprecated Use {@link #addPrompt(McpServerFeatures.AsyncPromptRegistration)}. + */ + @Deprecated public Mono addPrompt(PromptRegistration promptRegistration) { if (promptRegistration == null) { return Mono.error(new McpError("Prompt registration must not be null")); @@ -490,7 +717,7 @@ public class McpAsyncServer { .error(new McpError("Prompt with name '" + promptRegistration.prompt().name() + "' already exists")); } - this.prompts.put(promptRegistration.prompt().name(), promptRegistration); + this.prompts.put(promptRegistration.prompt().name(), McpServer.mapDeprecatedPrompt(promptRegistration)); logger.info("Added prompt handler: {}", promptRegistration.prompt().name()); @@ -515,18 +742,20 @@ public class McpAsyncServer { return Mono.error(new McpError("Server must be configured with prompt capabilities")); } - PromptRegistration removed = this.prompts.remove(promptName); + return Mono.defer(() -> { + McpServerFeatures.AsyncPromptRegistration removed = this.prompts.remove(promptName); - if (removed != null) { - logger.info("Removed prompt handler: {}", promptName); - // Servers that declared the listChanged capability SHOULD send a - // notification, when the list of available prompts changes - if (this.serverCapabilities.prompts().listChanged()) { - return this.notifyPromptsListChanged(); + if (removed != null) { + logger.info("Removed prompt handler: {}", promptName); + // Servers that declared the listChanged capability SHOULD send a + // notification, when the list of available prompts changes + if (this.serverCapabilities.prompts().listChanged()) { + return this.notifyPromptsListChanged(); + } + return Mono.empty(); } - return Mono.empty(); - } - return Mono.error(new McpError("Prompt with name '" + promptName + "' not found")); + return Mono.error(new McpError("Prompt with name '" + promptName + "' not found")); + }); } /** @@ -537,34 +766,35 @@ public class McpAsyncServer { return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_PROMPTS_LIST_CHANGED, null); } - private DefaultMcpSession.RequestHandler promptsListRequestHandler() { + private DefaultMcpSession.RequestHandler promptsListRequestHandler() { return params -> { // TODO: Implement pagination // McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, // new TypeReference() { // }); - var promptList = this.prompts.values().stream().map(PromptRegistration::prompt).toList(); + var promptList = this.prompts.values() + .stream() + .map(McpServerFeatures.AsyncPromptRegistration::prompt) + .toList(); return Mono.just(new McpSchema.ListPromptsResult(promptList, null)); }; } - private DefaultMcpSession.RequestHandler promptsGetRequestHandler() { + private DefaultMcpSession.RequestHandler promptsGetRequestHandler() { return params -> { McpSchema.GetPromptRequest promptRequest = transport.unmarshalFrom(params, new TypeReference() { }); // Implement prompt retrieval logic here - if (this.prompts.containsKey(promptRequest.name())) { - return Mono - .fromCallable(() -> this.prompts.get(promptRequest.name()).promptHandler().apply(promptRequest)) - .map(result -> (Object) result) - .subscribeOn(Schedulers.boundedElastic()); + McpServerFeatures.AsyncPromptRegistration registration = this.prompts.get(promptRequest.name()); + if (registration == null) { + return Mono.error(new McpError("Prompt not found: " + promptRequest.name())); } - return Mono.error(new McpError("Prompt not found: " + promptRequest.name())); + return registration.promptHandler().apply(promptRequest); }; } @@ -600,13 +830,10 @@ public class McpAsyncServer { * not be sent. * @return A handler that processes logging level change requests */ - private DefaultMcpSession.RequestHandler setLoggerRequestHandler() { + private DefaultMcpSession.RequestHandler setLoggerRequestHandler() { return params -> { - McpSchema.LoggingLevel setLoggerRequest = transport.unmarshalFrom(params, - new TypeReference() { - }); - - this.minLoggingLevel = setLoggerRequest; + this.minLoggingLevel = transport.unmarshalFrom(params, new TypeReference() { + }); return Mono.empty(); }; @@ -615,7 +842,7 @@ public class McpAsyncServer { // --------------------------------------- // Sampling // --------------------------------------- - private static TypeReference CREATE_MESSAGE_RESULT_TYPE_REF = new TypeReference<>() { + private static final TypeReference CREATE_MESSAGE_RESULT_TYPE_REF = new TypeReference<>() { }; /** diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java index e5fec07..1fbf47b 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java @@ -22,11 +22,14 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; +import java.util.stream.Collectors; + +import reactor.core.publisher.Mono; +import reactor.core.scheduler.Schedulers; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; import org.springframework.ai.mcp.spec.McpSchema.ResourceTemplate; -import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.ai.mcp.spec.McpTransport; import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.ai.mcp.util.Assert; @@ -47,6 +50,18 @@ import org.springframework.ai.mcp.util.Assert; * * *

    + * Thread Safety: Both synchronous and asynchronous server implementations are + * thread-safe. The synchronous server processes requests sequentially, while the + * asynchronous server can handle concurrent requests safely through its reactive + * programming model. + * + *

    + * Error Handling: The server implementations provide robust error handling through the + * McpError class. Errors are properly propagated to clients while maintaining the + * server's stability. Server implementations should use appropriate error codes and + * provide meaningful error messages to help diagnose issues. + * + *

    * The class provides factory methods to create either: *

      *
    • {@link McpAsyncServer} for non-blocking operations with CompletableFuture responses @@ -54,28 +69,40 @@ import org.springframework.ai.mcp.util.Assert; *
    * *

    - * Example of creating a basic server:

    {@code
    - * McpServer.using(transport)
    - *     .info("my-server", "1.0.0")
    + * Example of creating a basic synchronous server: 
    {@code
    + * McpServer.sync(transport)
    + *     .serverInfo("my-server", "1.0.0")
      *     .tool(new Tool("calculator", "Performs calculations", schema),
      *           args -> new CallToolResult("Result: " + calculate(args)))
    - *     .sync(); // or .async()
    + *     .build();
    + * }
    + * + * Example of creating a basic asynchronous server:
    {@code
    + * McpServer.async(transport)
    + *     .serverInfo("my-server", "1.0.0")
    + *     .tool(new Tool("calculator", "Performs calculations", schema),
    + *           args -> Mono.just(new CallToolResult("Result: " + calculate(args))))
    + *     .build();
      * }
    * *

    - * Example with comprehensive configuration:

    {@code
    - * McpServer.using(transport)
    - *     .info("advanced-server", "2.0.0")
    + * Example with comprehensive asynchronous configuration: 
    {@code
    + * McpServer.async(transport)
    + *     .serverInfo("advanced-server", "2.0.0")
      *     .capabilities(new ServerCapabilities(...))
      *     // Register tools
      *     .tools(
    - *         new ToolRegistration(calculatorTool, calculatorHandler),
    - *         new ToolRegistration(weatherTool, weatherHandler)
    + *         new McpServerFeatures.AsyncToolRegistration(calculatorTool,
    + *             args -> Mono.just(new CallToolResult("Result: " + calculate(args)))),
    + *         new McpServerFeatures.AsyncToolRegistration(weatherTool,
    + *             args -> Mono.just(new CallToolResult("Weather: " + getWeather(args))))
      *     )
      *     // Register resources
      *     .resources(
    - *         new ResourceRegistration(fileResource, fileHandler),
    - *         new ResourceRegistration(dbResource, dbHandler)
    + *         new McpServerFeatures.AsyncResourceRegistration(fileResource,
    + *             req -> Mono.just(new ReadResourceResult(readFile(req)))),
    + *         new McpServerFeatures.AsyncResourceRegistration(dbResource,
    + *             req -> Mono.just(new ReadResourceResult(queryDb(req))))
      *     )
      *     // Add resource templates
      *     .resourceTemplates(
    @@ -84,10 +111,12 @@ import org.springframework.ai.mcp.util.Assert;
      *     )
      *     // Register prompts
      *     .prompts(
    - *         new PromptRegistration(analysisPrompt, analysisHandler),
    - *         new PromptRegistration(summaryPrompt, summaryHandler)
    + *         new McpServerFeatures.AsyncPromptRegistration(analysisPrompt,
    + *             req -> Mono.just(new GetPromptResult(generateAnalysisPrompt(req)))),
    + *         new McpServerFeatures.AsyncPromptRegistration(summaryPrompt,
    + *             req -> Mono.just(new GetPromptResult(generateSummaryPrompt(req))))
      *     )
    - *     .async();
    + *     .build();
      * }
    * * @author Christian Tzolov @@ -97,115 +126,804 @@ import org.springframework.ai.mcp.util.Assert; */ public interface McpServer { - /** - * Registration of a tool with its handler function. Tools are the primary way for MCP - * servers to expose functionality to AI models. Each tool represents a specific - * capability, such as: - *
      - *
    • Performing calculations - *
    • Accessing external APIs - *
    • Querying databases - *
    • Manipulating files - *
    • Executing system commands - *
    - * - *

    - * Example tool registration:

    {@code
    -	 * new ToolRegistration(
    -	 *     new Tool(
    -	 *         "calculator",
    -	 *         "Performs mathematical calculations",
    -	 *         new JsonSchemaObject()
    -	 *             .required("expression")
    -	 *             .property("expression", JsonSchemaType.STRING)
    -	 *     ),
    -	 *     args -> {
    -	 *         String expr = (String) args.get("expression");
    -	 *         return new CallToolResult("Result: " + evaluate(expr));
    -	 *     }
    -	 * )
    -	 * }
    - * - * @param tool The tool definition including name, description, and parameter schema - * @param call The function that implements the tool's logic, receiving arguments and - * returning results - */ - public static record ToolRegistration(Tool tool, Function, CallToolResult> call) { - } - - /** - * Registration of a resource with its handler function. Resources provide context to - * AI models by exposing data such as: - *
      - *
    • File contents - *
    • Database records - *
    • API responses - *
    • System information - *
    • Application state - *
    - * - *

    - * Example resource registration:

    {@code
    -	 * new ResourceRegistration(
    -	 *     new Resource("docs", "Documentation files", "text/markdown"),
    -	 *     request -> {
    -	 *         String content = readFile(request.getPath());
    -	 *         return new ReadResourceResult(content);
    -	 *     }
    -	 * )
    -	 * }
    - * - * @param resource The resource definition including name, description, and MIME type - * @param readHandler The function that handles resource read requests - */ - public static record ResourceRegistration(McpSchema.Resource resource, - Function readHandler) { - } - - /** - * Registration of a prompt template with its handler function. Prompts provide - * structured templates for AI model interactions, supporting: - *
      - *
    • Consistent message formatting - *
    • Parameter substitution - *
    • Context injection - *
    • Response formatting - *
    • Instruction templating - *
    - * - *

    - * Example prompt registration:

    {@code
    -	 * new PromptRegistration(
    -	 *     new Prompt("analyze", "Code analysis template"),
    -	 *     request -> {
    -	 *         String code = request.getArguments().get("code");
    -	 *         return new GetPromptResult(
    -	 *             "Analyze this code:\n\n" + code + "\n\nProvide feedback on:"
    -	 *         );
    -	 *     }
    -	 * )
    -	 * }
    - * - * @param prompt The prompt definition including name and description - * @param promptHandler The function that processes prompt requests and returns - * formatted templates - */ - public static record PromptRegistration(McpSchema.Prompt prompt, - Function promptHandler) { - } - /** * Start building an MCP server with the specified transport. * @param transport The transport layer implementation for MCP communication * @return A new builder instance + * @deprecated Use {@link #sync(ServerMcpTransport)} or + * {@link #async(ServerMcpTransport)} to create a server instance. */ + @Deprecated public static Builder using(ServerMcpTransport transport) { return new Builder(transport); } /** - * Builder class for creating MCP servers with custom configuration. + * Asynchronous server specification. */ + class AsyncSpec { + + private static final McpSchema.Implementation DEFAULT_SERVER_INFO = new McpSchema.Implementation("mcp-server", + "1.0.0"); + + private final ServerMcpTransport transport; + + private McpSchema.Implementation serverInfo = DEFAULT_SERVER_INFO; + + private McpSchema.ServerCapabilities serverCapabilities; + + /** + * The Model Context Protocol (MCP) allows servers to expose tools that can be + * invoked by language models. Tools enable models to interact with external + * systems, such as querying databases, calling APIs, or performing computations. + * Each tool is uniquely identified by a name and includes metadata describing its + * schema. + */ + private final List tools = new ArrayList<>(); + + /** + * The Model Context Protocol (MCP) provides a standardized way for servers to + * expose resources to clients. Resources allow servers to share data that + * provides context to language models, such as files, database schemas, or + * application-specific information. Each resource is uniquely identified by a + * URI. + */ + private final Map resources = new HashMap<>(); + + private List resourceTemplates = new ArrayList<>(); + + /** + * The Model Context Protocol (MCP) provides a standardized way for servers to + * expose prompt templates to clients. Prompts allow servers to provide structured + * messages and instructions for interacting with language models. Clients can + * discover available prompts, retrieve their contents, and provide arguments to + * customize them. + */ + private final Map prompts = new HashMap<>(); + + private final List, Mono>> rootsChangeConsumers = new ArrayList<>(); + + private AsyncSpec(ServerMcpTransport transport) { + Assert.notNull(transport, "Transport must not be null"); + this.transport = transport; + } + + /** + * Sets the server implementation information that will be shared with clients + * during connection initialization. This helps with version compatibility, + * debugging, and server identification. + * @param serverInfo The server implementation details including name and version. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if serverInfo is null + */ + public AsyncSpec serverInfo(McpSchema.Implementation serverInfo) { + Assert.notNull(serverInfo, "Server info must not be null"); + this.serverInfo = serverInfo; + return this; + } + + /** + * Sets the server implementation information using name and version strings. This + * is a convenience method alternative to + * {@link #serverInfo(McpSchema.Implementation)}. + * @param name The server name. Must not be null or empty. + * @param version The server version. Must not be null or empty. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if name or version is null or empty + * @see #serverInfo(McpSchema.Implementation) + */ + public AsyncSpec serverInfo(String name, String version) { + Assert.hasText(name, "Name must not be null or empty"); + Assert.hasText(version, "Version must not be null or empty"); + this.serverInfo = new McpSchema.Implementation(name, version); + return this; + } + + /** + * Sets the server capabilities that will be advertised to clients during + * connection initialization. Capabilities define what features the server + * supports, such as: + *
      + *
    • Tool execution + *
    • Resource access + *
    • Prompt handling + *
    • Streaming responses + *
    • Batch operations + *
    + * @param serverCapabilities The server capabilities configuration. Must not be + * null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if serverCapabilities is null + */ + public AsyncSpec capabilities(McpSchema.ServerCapabilities serverCapabilities) { + this.serverCapabilities = serverCapabilities; + return this; + } + + /** + * Adds a single tool with its implementation handler to the server. This is a + * convenience method for registering individual tools without creating a + * {@link McpServerFeatures.AsyncToolRegistration} explicitly. + * + *

    + * Example usage:

    {@code
    +		 * .tool(
    +		 *     new Tool("calculator", "Performs calculations", schema),
    +		 *     args -> Mono.just(new CallToolResult("Result: " + calculate(args)))
    +		 * )
    +		 * }
    + * @param tool The tool definition including name, description, and schema. Must + * not be null. + * @param handler The function that implements the tool's logic. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if tool or handler is null + */ + public AsyncSpec tool(McpSchema.Tool tool, Function, Mono> handler) { + Assert.notNull(tool, "Tool must not be null"); + Assert.notNull(handler, "Handler must not be null"); + + this.tools.add(new McpServerFeatures.AsyncToolRegistration(tool, handler)); + + return this; + } + + /** + * Adds multiple tools with their handlers to the server using a List. This method + * is useful when tools are dynamically generated or loaded from a configuration + * source. + * @param toolRegistrations The list of tool registrations to add. Must not be + * null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if toolRegistrations is null + * @see #tools(McpServerFeatures.AsyncToolRegistration...) + */ + public AsyncSpec tools(List toolRegistrations) { + Assert.notNull(toolRegistrations, "Tool handlers list must not be null"); + this.tools.addAll(toolRegistrations); + return this; + } + + /** + * Adds multiple tools with their handlers to the server using varargs. This + * method provides a convenient way to register multiple tools inline. + * + *

    + * Example usage:

    {@code
    +		 * .tools(
    +		 *     new McpServerFeatures.AsyncToolRegistration(calculatorTool, calculatorHandler),
    +		 *     new McpServerFeatures.AsyncToolRegistration(weatherTool, weatherHandler),
    +		 *     new McpServerFeatures.AsyncToolRegistration(fileManagerTool, fileManagerHandler)
    +		 * )
    +		 * }
    + * @param toolRegistrations The tool registrations to add. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if toolRegistrations is null + * @see #tools(List) + */ + public AsyncSpec tools(McpServerFeatures.AsyncToolRegistration... toolRegistrations) { + for (McpServerFeatures.AsyncToolRegistration tool : toolRegistrations) { + this.tools.add(tool); + } + return this; + } + + /** + * Registers multiple resources with their handlers using a Map. This method is + * useful when resources are dynamically generated or loaded from a configuration + * source. + * @param resourceRegsitrations Map of resource name to registration. Must not be + * null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourceRegsitrations is null + * @see #resources(McpServerFeatures.AsyncResourceRegistration...) + */ + public AsyncSpec resources(Map resourceRegsitrations) { + Assert.notNull(resourceRegsitrations, "Resource handlers map must not be null"); + this.resources.putAll(resourceRegsitrations); + return this; + } + + /** + * Registers multiple resources with their handlers using a List. This method is + * useful when resources need to be added in bulk from a collection. + * @param resourceRegsitrations List of resource registrations. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourceRegsitrations is null + * @see #resources(McpServerFeatures.AsyncResourceRegistration...) + */ + public AsyncSpec resources(List resourceRegsitrations) { + Assert.notNull(resourceRegsitrations, "Resource handlers list must not be null"); + for (McpServerFeatures.AsyncResourceRegistration resource : resourceRegsitrations) { + this.resources.put(resource.resource().uri(), resource); + } + return this; + } + + /** + * Registers multiple resources with their handlers using varargs. This method + * provides a convenient way to register multiple resources inline. + * + *

    + * Example usage:

    {@code
    +		 * .resources(
    +		 *     new McpServerFeatures.AsyncResourceRegistration(fileResource, fileHandler),
    +		 *     new McpServerFeatures.AsyncResourceRegistration(dbResource, dbHandler),
    +		 *     new McpServerFeatures.AsyncResourceRegistration(apiResource, apiHandler)
    +		 * )
    +		 * }
    + * @param resourceRegistrations The resource registrations to add. Must not be + * null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourceRegistrations is null + */ + public AsyncSpec resources(McpServerFeatures.AsyncResourceRegistration... resourceRegistrations) { + Assert.notNull(resourceRegistrations, "Resource handlers list must not be null"); + for (McpServerFeatures.AsyncResourceRegistration resource : resourceRegistrations) { + this.resources.put(resource.resource().uri(), resource); + } + return this; + } + + /** + * Sets the resource templates that define patterns for dynamic resource access. + * Templates use URI patterns with placeholders that can be filled at runtime. + * + *

    + * Example usage:

    {@code
    +		 * .resourceTemplates(
    +		 *     new ResourceTemplate("file://{path}", "Access files by path"),
    +		 *     new ResourceTemplate("db://{table}/{id}", "Access database records")
    +		 * )
    +		 * }
    + * @param resourceTemplates List of resource templates. If null, clears existing + * templates. + * @return This builder instance for method chaining + * @see #resourceTemplates(ResourceTemplate...) + */ + public AsyncSpec resourceTemplates(List resourceTemplates) { + this.resourceTemplates.addAll(resourceTemplates); + return this; + } + + /** + * Sets the resource templates using varargs for convenience. This is an + * alternative to {@link #resourceTemplates(List)}. + * @param resourceTemplates The resource templates to set. + * @return This builder instance for method chaining + * @see #resourceTemplates(List) + */ + public AsyncSpec resourceTemplates(ResourceTemplate... resourceTemplates) { + for (ResourceTemplate resourceTemplate : resourceTemplates) { + this.resourceTemplates.add(resourceTemplate); + } + return this; + } + + /** + * Registers multiple prompts with their handlers using a Map. This method is + * useful when prompts are dynamically generated or loaded from a configuration + * source. + * + *

    + * Example usage:

    {@code
    +		 * .prompts(Map.of("analysis", new McpServerFeatures.AsyncPromptRegistration(
    +		 *     new Prompt("analysis", "Code analysis template"),
    +		 *     request -> Mono.just(new GetPromptResult(generateAnalysisPrompt(request)))
    +		 * )));
    +		 * }
    + * @param prompts Map of prompt name to registration. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if prompts is null + */ + public AsyncSpec prompts(Map prompts) { + this.prompts.putAll(prompts); + return this; + } + + /** + * Registers multiple prompts with their handlers using a List. This method is + * useful when prompts need to be added in bulk from a collection. + * @param prompts List of prompt registrations. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if prompts is null + * @see #prompts(McpServerFeatures.AsyncPromptRegistration...) + */ + public AsyncSpec prompts(List prompts) { + for (McpServerFeatures.AsyncPromptRegistration prompt : prompts) { + this.prompts.put(prompt.prompt().name(), prompt); + } + return this; + } + + /** + * Registers multiple prompts with their handlers using varargs. This method + * provides a convenient way to register multiple prompts inline. + * + *

    + * Example usage:

    {@code
    +		 * .prompts(
    +		 *     new McpServerFeatures.AsyncPromptRegistration(analysisPrompt, analysisHandler),
    +		 *     new McpServerFeatures.AsyncPromptRegistration(summaryPrompt, summaryHandler),
    +		 *     new McpServerFeatures.AsyncPromptRegistration(reviewPrompt, reviewHandler)
    +		 * )
    +		 * }
    + * @param prompts The prompt registrations to add. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if prompts is null + */ + public AsyncSpec prompts(McpServerFeatures.AsyncPromptRegistration... prompts) { + for (McpServerFeatures.AsyncPromptRegistration prompt : prompts) { + this.prompts.put(prompt.prompt().name(), prompt); + } + return this; + } + + /** + * Registers a consumer that will be notified when the list of roots changes. This + * is useful for updating resource availability dynamically, such as when new + * files are added or removed. + * @param consumer The consumer to register. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if consumer is null + */ + public AsyncSpec rootsChangeConsumer(Function, Mono> consumer) { + Assert.notNull(consumer, "Consumer must not be null"); + this.rootsChangeConsumers.add(consumer); + return this; + } + + /** + * Registers multiple consumers that will be notified when the list of roots + * changes. This method is useful when multiple consumers need to be registered at + * once. + * @param consumers The list of consumers to register. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if consumers is null + */ + public AsyncSpec rootsChangeConsumers(List, Mono>> consumers) { + Assert.notNull(consumers, "Consumers list must not be null"); + this.rootsChangeConsumers.addAll(consumers); + return this; + } + + /** + * Registers multiple consumers that will be notified when the list of roots + * changes using varargs. This method provides a convenient way to register + * multiple consumers inline. + * @param consumers The consumers to register. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if consumers is null + */ + public AsyncSpec rootsChangeConsumers(Function, Mono>... consumers) { + for (Function, Mono> consumer : consumers) { + this.rootsChangeConsumers.add(consumer); + } + return this; + } + + /** + * Builds an asynchronous MCP server that provides non-blocking operations. + * @return A new instance of {@link McpAsyncServer} configured with this builder's + * settings + */ + public McpAsyncServer build() { + return new McpAsyncServer(this.transport, + new McpServerFeatures.Async(this.serverInfo, this.serverCapabilities, this.tools, this.resources, + this.resourceTemplates, this.prompts, this.rootsChangeConsumers)); + } + + } + + /** + * Synchronous server specification. + */ + class SyncSpec { + + private static final McpSchema.Implementation DEFAULT_SERVER_INFO = new McpSchema.Implementation("mcp-server", + "1.0.0"); + + private final ServerMcpTransport transport; + + private McpSchema.Implementation serverInfo = DEFAULT_SERVER_INFO; + + private McpSchema.ServerCapabilities serverCapabilities; + + /** + * The Model Context Protocol (MCP) allows servers to expose tools that can be + * invoked by language models. Tools enable models to interact with external + * systems, such as querying databases, calling APIs, or performing computations. + * Each tool is uniquely identified by a name and includes metadata describing its + * schema. + */ + private final List tools = new ArrayList<>(); + + /** + * The Model Context Protocol (MCP) provides a standardized way for servers to + * expose resources to clients. Resources allow servers to share data that + * provides context to language models, such as files, database schemas, or + * application-specific information. Each resource is uniquely identified by a + * URI. + */ + private final Map resources = new HashMap<>(); + + private List resourceTemplates = new ArrayList<>(); + + /** + * The Model Context Protocol (MCP) provides a standardized way for servers to + * expose prompt templates to clients. Prompts allow servers to provide structured + * messages and instructions for interacting with language models. Clients can + * discover available prompts, retrieve their contents, and provide arguments to + * customize them. + */ + private Map prompts = new HashMap<>(); + + private List>> rootsChangeConsumers = new ArrayList<>(); + + private SyncSpec(ServerMcpTransport transport) { + Assert.notNull(transport, "Transport must not be null"); + this.transport = transport; + } + + /** + * Sets the server implementation information that will be shared with clients + * during connection initialization. This helps with version compatibility, + * debugging, and server identification. + * @param serverInfo The server implementation details including name and version. + * Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if serverInfo is null + */ + public SyncSpec serverInfo(McpSchema.Implementation serverInfo) { + Assert.notNull(serverInfo, "Server info must not be null"); + this.serverInfo = serverInfo; + return this; + } + + /** + * Sets the server implementation information using name and version strings. This + * is a convenience method alternative to + * {@link #serverInfo(McpSchema.Implementation)}. + * @param name The server name. Must not be null or empty. + * @param version The server version. Must not be null or empty. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if name or version is null or empty + * @see #serverInfo(McpSchema.Implementation) + */ + public SyncSpec serverInfo(String name, String version) { + Assert.hasText(name, "Name must not be null or empty"); + Assert.hasText(version, "Version must not be null or empty"); + this.serverInfo = new McpSchema.Implementation(name, version); + return this; + } + + /** + * Sets the server capabilities that will be advertised to clients during + * connection initialization. Capabilities define what features the server + * supports, such as: + *
      + *
    • Tool execution + *
    • Resource access + *
    • Prompt handling + *
    • Streaming responses + *
    • Batch operations + *
    + * @param serverCapabilities The server capabilities configuration. Must not be + * null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if serverCapabilities is null + */ + public SyncSpec capabilities(McpSchema.ServerCapabilities serverCapabilities) { + this.serverCapabilities = serverCapabilities; + return this; + } + + /** + * Adds a single tool with its implementation handler to the server. This is a + * convenience method for registering individual tools without creating a + * {@link ToolRegistration} explicitly. + * + *

    + * Example usage:

    {@code
    +		 * .tool(
    +		 *     new Tool("calculator", "Performs calculations", schema),
    +		 *     args -> new CallToolResult("Result: " + calculate(args))
    +		 * )
    +		 * }
    + * @param tool The tool definition including name, description, and schema. Must + * not be null. + * @param handler The function that implements the tool's logic. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if tool or handler is null + */ + public SyncSpec tool(McpSchema.Tool tool, Function, McpSchema.CallToolResult> handler) { + Assert.notNull(tool, "Tool must not be null"); + Assert.notNull(handler, "Handler must not be null"); + + this.tools.add(new McpServerFeatures.SyncToolRegistration(tool, handler)); + + return this; + } + + /** + * Adds multiple tools with their handlers to the server using a List. This method + * is useful when tools are dynamically generated or loaded from a configuration + * source. + * @param toolRegistrations The list of tool registrations to add. Must not be + * null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if toolRegistrations is null + * @see #tools(McpServerFeatures.SyncToolRegistration...) + */ + public SyncSpec tools(List toolRegistrations) { + Assert.notNull(toolRegistrations, "Tool handlers list must not be null"); + this.tools.addAll(toolRegistrations); + return this; + } + + /** + * Adds multiple tools with their handlers to the server using varargs. This + * method provides a convenient way to register multiple tools inline. + * + *

    + * Example usage:

    {@code
    +		 * .tools(
    +		 *     new ToolRegistration(calculatorTool, calculatorHandler),
    +		 *     new ToolRegistration(weatherTool, weatherHandler),
    +		 *     new ToolRegistration(fileManagerTool, fileManagerHandler)
    +		 * )
    +		 * }
    + * @param toolRegistrations The tool registrations to add. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if toolRegistrations is null + * @see #tools(List) + */ + public SyncSpec tools(McpServerFeatures.SyncToolRegistration... toolRegistrations) { + for (McpServerFeatures.SyncToolRegistration tool : toolRegistrations) { + this.tools.add(tool); + } + return this; + } + + /** + * Registers multiple resources with their handlers using a Map. This method is + * useful when resources are dynamically generated or loaded from a configuration + * source. + * @param resourceRegsitrations Map of resource name to registration. Must not be + * null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourceRegsitrations is null + * @see #resources(McpServerFeatures.SyncResourceRegistration...) + */ + public SyncSpec resources(Map resourceRegsitrations) { + Assert.notNull(resourceRegsitrations, "Resource handlers map must not be null"); + this.resources.putAll(resourceRegsitrations); + return this; + } + + /** + * Registers multiple resources with their handlers using a List. This method is + * useful when resources need to be added in bulk from a collection. + * @param resourceRegsitrations List of resource registrations. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourceRegsitrations is null + * @see #resources(McpServerFeatures.SyncResourceRegistration...) + */ + public SyncSpec resources(List resourceRegsitrations) { + Assert.notNull(resourceRegsitrations, "Resource handlers list must not be null"); + for (McpServerFeatures.SyncResourceRegistration resource : resourceRegsitrations) { + this.resources.put(resource.resource().uri(), resource); + } + return this; + } + + /** + * Registers multiple resources with their handlers using varargs. This method + * provides a convenient way to register multiple resources inline. + * + *

    + * Example usage:

    {@code
    +		 * .resources(
    +		 *     new ResourceRegistration(fileResource, fileHandler),
    +		 *     new ResourceRegistration(dbResource, dbHandler),
    +		 *     new ResourceRegistration(apiResource, apiHandler)
    +		 * )
    +		 * }
    + * @param resourceRegistrations The resource registrations to add. Must not be + * null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if resourceRegistrations is null + */ + public SyncSpec resources(McpServerFeatures.SyncResourceRegistration... resourceRegistrations) { + Assert.notNull(resourceRegistrations, "Resource handlers list must not be null"); + for (McpServerFeatures.SyncResourceRegistration resource : resourceRegistrations) { + this.resources.put(resource.resource().uri(), resource); + } + return this; + } + + /** + * Sets the resource templates that define patterns for dynamic resource access. + * Templates use URI patterns with placeholders that can be filled at runtime. + * + *

    + * Example usage:

    {@code
    +		 * .resourceTemplates(
    +		 *     new ResourceTemplate("file://{path}", "Access files by path"),
    +		 *     new ResourceTemplate("db://{table}/{id}", "Access database records")
    +		 * )
    +		 * }
    + * @param resourceTemplates List of resource templates. If null, clears existing + * templates. + * @return This builder instance for method chaining + * @see #resourceTemplates(ResourceTemplate...) + */ + public SyncSpec resourceTemplates(List resourceTemplates) { + this.resourceTemplates.addAll(resourceTemplates); + return this; + } + + /** + * Sets the resource templates using varargs for convenience. This is an + * alternative to {@link #resourceTemplates(List)}. + * @param resourceTemplates The resource templates to set. + * @return This builder instance for method chaining + * @see #resourceTemplates(List) + */ + public SyncSpec resourceTemplates(ResourceTemplate... resourceTemplates) { + for (ResourceTemplate resourceTemplate : resourceTemplates) { + this.resourceTemplates.add(resourceTemplate); + } + return this; + } + + /** + * Registers multiple prompts with their handlers using a Map. This method is + * useful when prompts are dynamically generated or loaded from a configuration + * source. + * + *

    + * Example usage:

    {@code
    +		 * Map prompts = new HashMap<>();
    +		 * prompts.put("analysis", new PromptRegistration(
    +		 *     new Prompt("analysis", "Code analysis template"),
    +		 *     request -> new GetPromptResult(generateAnalysisPrompt(request))
    +		 * ));
    +		 * .prompts(prompts)
    +		 * }
    + * @param prompts Map of prompt name to registration. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if prompts is null + */ + public SyncSpec prompts(Map prompts) { + this.prompts.putAll(prompts); + return this; + } + + /** + * Registers multiple prompts with their handlers using a List. This method is + * useful when prompts need to be added in bulk from a collection. + * @param prompts List of prompt registrations. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if prompts is null + * @see #prompts(McpServerFeatures.SyncPromptRegistration...) + */ + public SyncSpec prompts(List prompts) { + for (McpServerFeatures.SyncPromptRegistration prompt : prompts) { + this.prompts.put(prompt.prompt().name(), prompt); + } + return this; + } + + /** + * Registers multiple prompts with their handlers using varargs. This method + * provides a convenient way to register multiple prompts inline. + * + *

    + * Example usage:

    {@code
    +		 * .prompts(
    +		 *     new PromptRegistration(analysisPrompt, analysisHandler),
    +		 *     new PromptRegistration(summaryPrompt, summaryHandler),
    +		 *     new PromptRegistration(reviewPrompt, reviewHandler)
    +		 * )
    +		 * }
    + * @param prompts The prompt registrations to add. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if prompts is null + */ + public SyncSpec prompts(McpServerFeatures.SyncPromptRegistration... prompts) { + for (McpServerFeatures.SyncPromptRegistration prompt : prompts) { + this.prompts.put(prompt.prompt().name(), prompt); + } + return this; + } + + /** + * Registers a consumer that will be notified when the list of roots changes. This + * is useful for updating resource availability dynamically, such as when new + * files are added or removed. + * @param consumer The consumer to register. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if consumer is null + */ + public SyncSpec rootsChangeConsumer(Consumer> consumer) { + Assert.notNull(consumer, "Consumer must not be null"); + this.rootsChangeConsumers.add(consumer); + return this; + } + + /** + * Registers multiple consumers that will be notified when the list of roots + * changes. This method is useful when multiple consumers need to be registered at + * once. + * @param consumers The list of consumers to register. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if consumers is null + */ + public SyncSpec rootsChangeConsumers(List>> consumers) { + Assert.notNull(consumers, "Consumers list must not be null"); + this.rootsChangeConsumers.addAll(consumers); + return this; + } + + /** + * Registers multiple consumers that will be notified when the list of roots + * changes using varargs. This method provides a convenient way to register + * multiple consumers inline. + * @param consumers The consumers to register. Must not be null. + * @return This builder instance for method chaining + * @throws IllegalArgumentException if consumers is null + */ + public SyncSpec rootsChangeConsumers(Consumer>... consumers) { + for (Consumer> consumer : consumers) { + this.rootsChangeConsumers.add(consumer); + } + return this; + } + + /** + * Builds a synchronous MCP server that provides blocking operations. + * @return A new instance of {@link McpSyncServer} configured with this builder's + * settings + */ + public McpSyncServer build() { + McpServerFeatures.Sync syncFeatures = new McpServerFeatures.Sync(this.serverInfo, this.serverCapabilities, + this.tools, this.resources, this.resourceTemplates, this.prompts, this.rootsChangeConsumers); + return new McpSyncServer( + new McpAsyncServer(this.transport, McpServerFeatures.Async.fromSync(syncFeatures))); + } + + } + + /** + * Builds a synchronous MCP server that provides blocking operations. Synchronous + * servers process each request to completion before handling the next one, making + * them simpler to implement but potentially less performant for concurrent + * operations. + * @return A new instance of {@link SyncSpec} for configuring the server. + */ + static SyncSpec sync(ServerMcpTransport transport) { + return new SyncSpec(transport); + } + + /** + * Builds an asynchronous MCP server that provides non-blocking operations. + * Asynchronous servers can handle multiple requests concurrently using a functional + * paradigm with non-blocking server transports, making them more efficient for + * high-concurrency scenarios but more complex to implement. + * @return A new instance of {@link SyncSpec} for configuring the server. + */ + static AsyncSpec async(ServerMcpTransport transport) { + return new AsyncSpec(transport); + } + + /** + * Builder class for creating MCP servers with custom configuration. + * + * @deprecated Use {@link #sync(ServerMcpTransport)} or + * {@link #async(ServerMcpTransport)} to create a server. + */ + @Deprecated public static class Builder { private static final McpSchema.Implementation DEFAULT_SERVER_INFO = new McpSchema.Implementation("mcp-server", @@ -576,7 +1294,9 @@ public interface McpServer { * operations. * @return A new instance of {@link McpSyncServer} configured with this builder's * settings + * @deprecated Use {@link #sync(ServerMcpTransport)}. */ + @Deprecated public McpSyncServer sync() { return new McpSyncServer(async()); } @@ -588,13 +1308,156 @@ public interface McpServer { * but more complex to implement. * @return A new instance of {@link McpAsyncServer} configured with this builder's * settings + * @deprecated Use {@link #async(ServerMcpTransport)} */ + @Deprecated public McpAsyncServer async() { - return new McpAsyncServer(transport, serverInfo, serverCapabilities, tools, resources, resourceTemplates, prompts, rootsChangeConsumers); } } + /** + * Registration of a tool with its handler function. Tools are the primary way for MCP + * servers to expose functionality to AI models. Each tool represents a specific + * capability, such as: + *
      + *
    • Performing calculations + *
    • Accessing external APIs + *
    • Querying databases + *
    • Manipulating files + *
    • Executing system commands + *
    + * + *

    + * Example tool registration:

    {@code
    +	 * new ToolRegistration(
    +	 *     new Tool(
    +	 *         "calculator",
    +	 *         "Performs mathematical calculations",
    +	 *         new JsonSchemaObject()
    +	 *             .required("expression")
    +	 *             .property("expression", JsonSchemaType.STRING)
    +	 *     ),
    +	 *     args -> {
    +	 *         String expr = (String) args.get("expression");
    +	 *         return new CallToolResult("Result: " + evaluate(expr));
    +	 *     }
    +	 * )
    +	 * }
    + * + * @param tool The tool definition including name, description, and parameter schema + * @param call The function that implements the tool's logic, receiving arguments and + * returning results + * @deprecated Use {@link McpServerFeatures.SyncToolRegistration} or + * {@link McpServerFeatures.AsyncToolRegistration}. + */ + @Deprecated + public static record ToolRegistration(McpSchema.Tool tool, + Function, McpSchema.CallToolResult> call) { + } + + /** + * Registration of a resource with its handler function. Resources provide context to + * AI models by exposing data such as: + *
      + *
    • File contents + *
    • Database records + *
    • API responses + *
    • System information + *
    • Application state + *
    + * + *

    + * Example resource registration:

    {@code
    +	 * new ResourceRegistration(
    +	 *     new Resource("docs", "Documentation files", "text/markdown"),
    +	 *     request -> {
    +	 *         String content = readFile(request.getPath());
    +	 *         return new ReadResourceResult(content);
    +	 *     }
    +	 * )
    +	 * }
    + * + * @param resource The resource definition including name, description, and MIME type + * @param readHandler The function that handles resource read requests + * @deprecated Use {@link McpServerFeatures.SyncResourceRegistration} or + * {@link McpServerFeatures.AsyncResourceRegistration}. + */ + @Deprecated + public static record ResourceRegistration(McpSchema.Resource resource, + Function readHandler) { + } + + /** + * Registration of a prompt template with its handler function. Prompts provide + * structured templates for AI model interactions, supporting: + *
      + *
    • Consistent message formatting + *
    • Parameter substitution + *
    • Context injection + *
    • Response formatting + *
    • Instruction templating + *
    + * + *

    + * Example prompt registration:

    {@code
    +	 * new PromptRegistration(
    +	 *     new Prompt("analyze", "Code analysis template"),
    +	 *     request -> {
    +	 *         String code = request.getArguments().get("code");
    +	 *         return new GetPromptResult(
    +	 *             "Analyze this code:\n\n" + code + "\n\nProvide feedback on:"
    +	 *         );
    +	 *     }
    +	 * )
    +	 * }
    + * + * @param prompt The prompt definition including name and description + * @param promptHandler The function that processes prompt requests and returns + * formatted templates + * @deprecated Use {@link McpServerFeatures.SyncPromptRegistration} or + * {@link McpServerFeatures.AsyncPromptRegistration}. + */ + @Deprecated + public static record PromptRegistration(McpSchema.Prompt prompt, + Function promptHandler) { + } + + static McpServerFeatures.AsyncToolRegistration mapDeprecatedTool(ToolRegistration oldTool) { + return new McpServerFeatures.AsyncToolRegistration(oldTool.tool(), + map -> Mono.fromCallable(() -> oldTool.call().apply(map)).subscribeOn(Schedulers.boundedElastic())); + } + + static McpServerFeatures.AsyncResourceRegistration mapDeprecatedResource(ResourceRegistration oldResource) { + return new McpServerFeatures.AsyncResourceRegistration(oldResource.resource(), + req -> Mono.fromCallable(() -> oldResource.readHandler().apply(req)) + .subscribeOn(Schedulers.boundedElastic())); + } + + static McpServerFeatures.AsyncPromptRegistration mapDeprecatedPrompt(PromptRegistration oldPrompt) { + return new McpServerFeatures.AsyncPromptRegistration(oldPrompt.prompt(), + req -> Mono.fromCallable(() -> oldPrompt.promptHandler().apply(req)) + .subscribeOn(Schedulers.boundedElastic())); + } + + static List mapDeprecatedTools(List oldTools) { + return oldTools.stream().map(McpServer::mapDeprecatedTool).toList(); + } + + static Map mapDeprecatedResources( + Map oldResources) { + return oldResources.entrySet() + .stream() + .collect(Collectors.toMap(Map.Entry::getKey, e -> mapDeprecatedResource(e.getValue()))); + } + + static Map mapDeprecatedPrompts( + Map oldPrompts) { + return oldPrompts.entrySet() + .stream() + .collect(Collectors.toMap(Map.Entry::getKey, e -> mapDeprecatedPrompt(e.getValue()))); + } + } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java new file mode 100644 index 0000000..0faba95 --- /dev/null +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java @@ -0,0 +1,399 @@ +package org.springframework.ai.mcp.server; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Function; + +import reactor.core.publisher.Mono; +import reactor.core.scheduler.Schedulers; + +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.util.Assert; +import org.springframework.ai.mcp.util.Utils; + +/** + * MCP server features specification that a particular server can choose to support. + */ +public class McpServerFeatures { + + /** + * Asynchronous server features specification. + * + * @param serverInfo The server implementation details + * @param serverCapabilities The server capabilities + * @param tools The list of tool registrations + * @param resources The map of resource registrations + * @param resourceTemplates The list of resource templates + * @param prompts The map of prompt registrations + * @param rootsChangeConsumers The list of consumers that will be notified when the + * roots list changes + */ + record Async(McpSchema.Implementation serverInfo, McpSchema.ServerCapabilities serverCapabilities, + List tools, Map resources, + List resourceTemplates, + Map prompts, + List, Mono>> rootsChangeConsumers) { + + /** + * Create an instance and validate the arguments. + * @param serverInfo The server implementation details + * @param serverCapabilities The server capabilities + * @param tools The list of tool registrations + * @param resources The map of resource registrations + * @param resourceTemplates The list of resource templates + * @param prompts The map of prompt registrations + * @param rootsChangeConsumers The list of consumers that will be notified when + * the roots list changes + */ + Async(McpSchema.Implementation serverInfo, McpSchema.ServerCapabilities serverCapabilities, + List tools, Map resources, + List resourceTemplates, + Map prompts, + List, Mono>> rootsChangeConsumers) { + + Assert.notNull(serverInfo, "Server info must not be null"); + + this.serverInfo = serverInfo; + this.serverCapabilities = (serverCapabilities != null) ? serverCapabilities + : new McpSchema.ServerCapabilities(null, // experimental + new McpSchema.ServerCapabilities.LoggingCapabilities(), // Enable + // logging + // by + // default + !Utils.isEmpty(prompts) ? new McpSchema.ServerCapabilities.PromptCapabilities(false) : null, + !Utils.isEmpty(resources) + ? new McpSchema.ServerCapabilities.ResourceCapabilities(false, false) : null, + !Utils.isEmpty(tools) ? new McpSchema.ServerCapabilities.ToolCapabilities(false) : null); + + this.tools = (tools != null) ? tools : List.of(); + this.resources = (resources != null) ? resources : Map.of(); + this.resourceTemplates = (resourceTemplates != null) ? resourceTemplates : List.of(); + this.prompts = (prompts != null) ? prompts : Map.of(); + this.rootsChangeConsumers = (rootsChangeConsumers != null) ? rootsChangeConsumers : List.of(); + } + + /** + * Convert a synchronous specification into an asynchronous one and provide + * blocking code offloading to prevent accidental blocking of the non-blocking + * transport. + * @param syncSpec a potentially blocking, synchronous specification. + * @return a specification which is protected from blocking calls specified by the + * user. + */ + static Async fromSync(Sync syncSpec) { + List tools = new ArrayList<>(); + for (var tool : syncSpec.tools()) { + tools.add(AsyncToolRegistration.fromSync(tool)); + } + + Map resources = new HashMap<>(); + syncSpec.resources().forEach((key, resource) -> { + resources.put(key, AsyncResourceRegistration.fromSync(resource)); + }); + + Map prompts = new HashMap<>(); + syncSpec.prompts().forEach((key, prompt) -> { + prompts.put(key, AsyncPromptRegistration.fromSync(prompt)); + }); + + List, Mono>> rootChangeConsumers = new ArrayList<>(); + + for (var rootChangeConsumer : syncSpec.rootsChangeConsumers()) { + rootChangeConsumers.add(list -> Mono.fromRunnable(() -> rootChangeConsumer.accept(list)) + .subscribeOn(Schedulers.boundedElastic())); + } + + return new Async(syncSpec.serverInfo(), syncSpec.serverCapabilities(), tools, resources, + syncSpec.resourceTemplates(), prompts, rootChangeConsumers); + } + } + + /** + * Synchronous server features specification. + * + * @param serverInfo The server implementation details + * @param serverCapabilities The server capabilities + * @param tools The list of tool registrations + * @param resources The map of resource registrations + * @param resourceTemplates The list of resource templates + * @param prompts The map of prompt registrations + * @param rootsChangeConsumers The list of consumers that will be notified when the + * roots list changes + */ + record Sync(McpSchema.Implementation serverInfo, McpSchema.ServerCapabilities serverCapabilities, + List tools, + Map resources, + List resourceTemplates, + Map prompts, + List>> rootsChangeConsumers) { + + /** + * Create an instance and validate the arguments. + * @param serverInfo The server implementation details + * @param serverCapabilities The server capabilities + * @param tools The list of tool registrations + * @param resources The map of resource registrations + * @param resourceTemplates The list of resource templates + * @param prompts The map of prompt registrations + * @param rootsChangeConsumers The list of consumers that will be notified when + * the roots list changes + */ + Sync(McpSchema.Implementation serverInfo, McpSchema.ServerCapabilities serverCapabilities, + List tools, + Map resources, + List resourceTemplates, + Map prompts, + List>> rootsChangeConsumers) { + + Assert.notNull(serverInfo, "Server info must not be null"); + + this.serverInfo = serverInfo; + this.serverCapabilities = (serverCapabilities != null) ? serverCapabilities + : new McpSchema.ServerCapabilities(null, // experimental + new McpSchema.ServerCapabilities.LoggingCapabilities(), // Enable + // logging + // by + // default + !Utils.isEmpty(prompts) ? new McpSchema.ServerCapabilities.PromptCapabilities(false) : null, + !Utils.isEmpty(resources) + ? new McpSchema.ServerCapabilities.ResourceCapabilities(false, false) : null, + !Utils.isEmpty(tools) ? new McpSchema.ServerCapabilities.ToolCapabilities(false) : null); + + this.tools = (tools != null) ? tools : new ArrayList<>(); + this.resources = (resources != null) ? resources : new HashMap<>(); + this.resourceTemplates = (resourceTemplates != null) ? resourceTemplates : new ArrayList<>(); + this.prompts = (prompts != null) ? prompts : new HashMap<>(); + this.rootsChangeConsumers = (rootsChangeConsumers != null) ? rootsChangeConsumers : new ArrayList<>(); + } + + } + + /** + * Registration of a tool with its asynchronous handler function. Tools are the + * primary way for MCP servers to expose functionality to AI models. Each tool + * represents a specific capability, such as: + *
      + *
    • Performing calculations + *
    • Accessing external APIs + *
    • Querying databases + *
    • Manipulating files + *
    • Executing system commands + *
    + * + *

    + * Example tool registration:

    {@code
    +	 * new McpServerFeatures.AsyncToolRegistration(
    +	 *     new Tool(
    +	 *         "calculator",
    +	 *         "Performs mathematical calculations",
    +	 *         new JsonSchemaObject()
    +	 *             .required("expression")
    +	 *             .property("expression", JsonSchemaType.STRING)
    +	 *     ),
    +	 *     args -> {
    +	 *         String expr = (String) args.get("expression");
    +	 *         return Mono.just(new CallToolResult("Result: " + evaluate(expr)));
    +	 *     }
    +	 * )
    +	 * }
    + * + * @param tool The tool definition including name, description, and parameter schema + * @param call The function that implements the tool's logic, receiving arguments and + * returning results + */ + public record AsyncToolRegistration(McpSchema.Tool tool, + Function, Mono> call) { + + static AsyncToolRegistration fromSync(SyncToolRegistration tool) { + // FIXME: This is temporary, proper validation should be implemented + if (tool == null) { + return null; + } + return new AsyncToolRegistration(tool.tool(), + map -> Mono.fromCallable(() -> tool.call().apply(map)).subscribeOn(Schedulers.boundedElastic())); + } + } + + /** + * Registration of a resource with its asynchronous handler function. Resources + * provide context to AI models by exposing data such as: + *
      + *
    • File contents + *
    • Database records + *
    • API responses + *
    • System information + *
    • Application state + *
    + * + *

    + * Example resource registration:

    {@code
    +	 * new McpServerFeatures.AsyncResourceRegistration(
    +	 *     new Resource("docs", "Documentation files", "text/markdown"),
    +	 *     request -> {
    +	 *         String content = readFile(request.getPath());
    +	 *         return Mono.just(new ReadResourceResult(content));
    +	 *     }
    +	 * )
    +	 * }
    + * + * @param resource The resource definition including name, description, and MIME type + * @param readHandler The function that handles resource read requests + */ + public record AsyncResourceRegistration(McpSchema.Resource resource, + Function> readHandler) { + + static AsyncResourceRegistration fromSync(SyncResourceRegistration resource) { + // FIXME: This is temporary, proper validation should be implemented + if (resource == null) { + return null; + } + return new AsyncResourceRegistration(resource.resource(), + req -> Mono.fromCallable(() -> resource.readHandler().apply(req)) + .subscribeOn(Schedulers.boundedElastic())); + } + } + + /** + * Registration of a prompt template with its asynchronous handler function. Prompts + * provide structured templates for AI model interactions, supporting: + *
      + *
    • Consistent message formatting + *
    • Parameter substitution + *
    • Context injection + *
    • Response formatting + *
    • Instruction templating + *
    + * + *

    + * Example prompt registration:

    {@code
    +	 * new McpServerFeatures.AsyncPromptRegistration(
    +	 *     new Prompt("analyze", "Code analysis template"),
    +	 *     request -> {
    +	 *         String code = request.getArguments().get("code");
    +	 *         return Mono.just(new GetPromptResult(
    +	 *             "Analyze this code:\n\n" + code + "\n\nProvide feedback on:"
    +	 *         ));
    +	 *     }
    +	 * )
    +	 * }
    + * + * @param prompt The prompt definition including name and description + * @param promptHandler The function that processes prompt requests and returns + * formatted templates + */ + public record AsyncPromptRegistration(McpSchema.Prompt prompt, + Function> promptHandler) { + + static AsyncPromptRegistration fromSync(SyncPromptRegistration prompt) { + // FIXME: This is temporary, proper validation should be implemented + if (prompt == null) { + return null; + } + return new AsyncPromptRegistration(prompt.prompt(), + req -> Mono.fromCallable(() -> prompt.promptHandler().apply(req)) + .subscribeOn(Schedulers.boundedElastic())); + } + } + + /** + * Registration of a tool with its synchronous handler function. Tools are the primary + * way for MCP servers to expose functionality to AI models. Each tool represents a + * specific capability, such as: + *
      + *
    • Performing calculations + *
    • Accessing external APIs + *
    • Querying databases + *
    • Manipulating files + *
    • Executing system commands + *
    + * + *

    + * Example tool registration:

    {@code
    +	 * new McpServerFeatures.SyncToolRegistration(
    +	 *     new Tool(
    +	 *         "calculator",
    +	 *         "Performs mathematical calculations",
    +	 *         new JsonSchemaObject()
    +	 *             .required("expression")
    +	 *             .property("expression", JsonSchemaType.STRING)
    +	 *     ),
    +	 *     args -> {
    +	 *         String expr = (String) args.get("expression");
    +	 *         return new CallToolResult("Result: " + evaluate(expr));
    +	 *     }
    +	 * )
    +	 * }
    + * + * @param tool The tool definition including name, description, and parameter schema + * @param call The function that implements the tool's logic, receiving arguments and + * returning results + */ + public record SyncToolRegistration(McpSchema.Tool tool, + Function, McpSchema.CallToolResult> call) { + } + + /** + * Registration of a resource with its synchronous handler function. Resources provide + * context to AI models by exposing data such as: + *
      + *
    • File contents + *
    • Database records + *
    • API responses + *
    • System information + *
    • Application state + *
    + * + *

    + * Example resource registration:

    {@code
    +	 * new McpServerFeatures.SyncResourceRegistration(
    +	 *     new Resource("docs", "Documentation files", "text/markdown"),
    +	 *     request -> {
    +	 *         String content = readFile(request.getPath());
    +	 *         return new ReadResourceResult(content);
    +	 *     }
    +	 * )
    +	 * }
    + * + * @param resource The resource definition including name, description, and MIME type + * @param readHandler The function that handles resource read requests + */ + public record SyncResourceRegistration(McpSchema.Resource resource, + Function readHandler) { + } + + /** + * Registration of a prompt template with its synchronous handler function. Prompts + * provide structured templates for AI model interactions, supporting: + *
      + *
    • Consistent message formatting + *
    • Parameter substitution + *
    • Context injection + *
    • Response formatting + *
    • Instruction templating + *
    + * + *

    + * Example prompt registration:

    {@code
    +	 * new McpServerFeatures.SyncPromptRegistration(
    +	 *     new Prompt("analyze", "Code analysis template"),
    +	 *     request -> {
    +	 *         String code = request.getArguments().get("code");
    +	 *         return new GetPromptResult(
    +	 *             "Analyze this code:\n\n" + code + "\n\nProvide feedback on:"
    +	 *         );
    +	 *     }
    +	 * )
    +	 * }
    + * + * @param prompt The prompt definition including name and description + * @param promptHandler The function that processes prompt requests and returns + * formatted templates + */ + public record SyncPromptRegistration(McpSchema.Prompt prompt, + Function promptHandler) { + } + +} diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java index db564f0..97c949f 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java @@ -26,11 +26,42 @@ import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; import org.springframework.ai.mcp.util.Assert; /** - * Synchronous wrapper around {@link McpAsyncServer} that provides blocking operations. - * This class delegates all operations to an underlying async server instance while - * providing a synchronous API. + * A synchronous implementation of the Model Context Protocol (MCP) server that wraps + * {@link McpAsyncServer} to provide blocking operations. This class delegates all + * operations to an underlying async server instance while providing a simpler, + * synchronous API for scenarios where reactive programming is not required. + * + *

    + * The MCP server enables AI models to expose tools, resources, and prompts through a + * standardized interface. Key features available through this synchronous API include: + *

      + *
    • Tool registration and management for extending AI model capabilities + *
    • Resource handling with URI-based addressing for providing context + *
    • Prompt template management for standardized interactions + *
    • Real-time client notifications for state changes + *
    • Structured logging with configurable severity levels + *
    • Support for client-side AI model sampling + *
    + * + *

    + * While {@link McpAsyncServer} uses Project Reactor's Mono and Flux types for + * non-blocking operations, this class converts those into blocking calls, making it more + * suitable for: + *

      + *
    • Traditional synchronous applications + *
    • Simple scripting scenarios + *
    • Testing and debugging + *
    • Cases where reactive programming adds unnecessary complexity + *
    + * + *

    + * The server supports runtime modification of its capabilities through methods like + * {@link #addTool}, {@link #addResource}, and {@link #addPrompt}, automatically notifying + * connected clients of changes when configured to do so. * * @author Christian Tzolov + * @see McpAsyncServer + * @see McpSchema */ public class McpSyncServer { @@ -69,6 +100,16 @@ public class McpSyncServer { * Add a new tool handler. * @param toolHandler The tool handler to add */ + public void addTool(McpServerFeatures.SyncToolRegistration toolHandler) { + this.asyncServer.addTool(McpServerFeatures.AsyncToolRegistration.fromSync(toolHandler)).block(); + } + + /** + * Add a new tool handler. + * @param toolHandler The tool handler to add + * @deprecated Use {@link #addTool(McpServerFeatures.SyncToolRegistration)}. + */ + @Deprecated public void addTool(ToolRegistration toolHandler) { this.asyncServer.addTool(toolHandler).block(); } @@ -85,6 +126,16 @@ public class McpSyncServer { * Add a new resource handler. * @param resourceHandler The resource handler to add */ + public void addResource(McpServerFeatures.SyncResourceRegistration resourceHandler) { + this.asyncServer.addResource(McpServerFeatures.AsyncResourceRegistration.fromSync(resourceHandler)).block(); + } + + /** + * Add a new resource handler. + * @param resourceHandler The resource handler to add + * @deprecated Use {@link #addResource(McpServerFeatures.SyncResourceRegistration)}. + */ + @Deprecated public void addResource(ResourceRegistration resourceHandler) { this.asyncServer.addResource(resourceHandler).block(); } @@ -101,6 +152,16 @@ public class McpSyncServer { * Add a new prompt handler. * @param promptRegistration The prompt registration to add */ + public void addPrompt(McpServerFeatures.SyncPromptRegistration promptRegistration) { + this.asyncServer.addPrompt(McpServerFeatures.AsyncPromptRegistration.fromSync(promptRegistration)).block(); + } + + /** + * Add a new prompt handler. + * @param promptRegistration The prompt registration to add + * @deprecated Use {@link #addPrompt(McpServerFeatures.SyncPromptRegistration)}. + */ + @Deprecated public void addPrompt(PromptRegistration promptRegistration) { this.asyncServer.addPrompt(promptRegistration).block(); } @@ -120,28 +181,6 @@ public class McpSyncServer { this.asyncServer.notifyToolsListChanged().block(); } - /** - * Notify clients that the list of available resources has changed. - */ - public void notifyResourcesListChanged() { - this.asyncServer.notifyResourcesListChanged().block(); - } - - /** - * Notify clients that the list of available prompts has changed. - */ - public void notifyPromptsListChanged() { - this.asyncServer.notifyPromptsListChanged().block(); - } - - /** - * Send a logging message notification to all clients. - * @param loggingMessageNotification The logging message notification to send - */ - public void loggingNotification(LoggingMessageNotification loggingMessageNotification) { - this.asyncServer.loggingNotification(loggingMessageNotification).block(); - } - /** * Get the server capabilities that define the supported features and functionality. * @return The server capabilities @@ -174,6 +213,28 @@ public class McpSyncServer { return this.asyncServer.getClientInfo(); } + /** + * Notify clients that the list of available resources has changed. + */ + public void notifyResourcesListChanged() { + this.asyncServer.notifyResourcesListChanged().block(); + } + + /** + * Notify clients that the list of available prompts has changed. + */ + public void notifyPromptsListChanged() { + this.asyncServer.notifyPromptsListChanged().block(); + } + + /** + * Send a logging message notification to all clients. + * @param loggingMessageNotification The logging message notification to send + */ + public void loggingNotification(LoggingMessageNotification loggingMessageNotification) { + this.asyncServer.loggingNotification(loggingMessageNotification).block(); + } + /** * Close the server gracefully. */ @@ -199,13 +260,19 @@ public class McpSyncServer { /** * Create a new message using the sampling capabilities of the client. The Model * Context Protocol (MCP) provides a standardized way for servers to request LLM - * sampling (“completions” or “generations”) from language models via clients. This - * flow allows clients to maintain control over model access, selection, and + * sampling ("completions" or "generations") from language models via clients. + * + *

    + * This flow allows clients to maintain control over model access, selection, and * permissions while enabling servers to leverage AI capabilities—with no server API * keys necessary. Servers can request text or image-based interactions and optionally * include context from MCP servers in their prompts. + * + *

    + * Unlike its async counterpart, this method blocks until the message creation is + * complete, making it easier to use in synchronous code paths. * @param createMessageRequest The request to create a new message - * @return A Mono that completes when the message has been created + * @return The result of the message creation * @throws McpError if the client has not been initialized or does not support * sampling capabilities * @throws McpError if the client does not support the createMessage method diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java b/mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java index 8a1dde0..fffd710 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java @@ -63,7 +63,7 @@ public class DefaultMcpSession implements McpSession { private final ConcurrentHashMap> pendingResponses = new ConcurrentHashMap<>(); /** Map of request handlers keyed by method name */ - private final ConcurrentHashMap requestHandlers = new ConcurrentHashMap<>(); + private final ConcurrentHashMap> requestHandlers = new ConcurrentHashMap<>(); /** Map of notification handlers keyed by method name */ private final ConcurrentHashMap notificationHandlers = new ConcurrentHashMap<>(); @@ -79,16 +79,18 @@ public class DefaultMcpSession implements McpSession { /** * Functional interface for handling incoming JSON-RPC requests. Implementations * should process the request parameters and return a response. + * + * @param Response type */ @FunctionalInterface - public interface RequestHandler { + public interface RequestHandler { /** * Handles an incoming request with the given parameters. * @param params The request parameters * @return A Mono containing the response object */ - Mono handle(Object params); + Mono handle(Object params); } @@ -116,7 +118,7 @@ public class DefaultMcpSession implements McpSession { * @param notificationHandlers Map of method names to notification handlers */ public DefaultMcpSession(Duration requestTimeout, McpTransport transport, - Map requestHandlers, Map notificationHandlers) { + Map> requestHandlers, Map notificationHandlers) { Assert.notNull(requestTimeout, "The requstTimeout can not be null"); Assert.notNull(transport, "The transport can not be null"); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java index b5a00bf..2579f57 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import org.springframework.ai.mcp.spec.ClientMcpTransport; @@ -77,10 +78,10 @@ public abstract class AbstractMcpAsyncClientTests { this.mcpTransport = createMcpTransport(); assertThatCode(() -> { - mcpAsyncClient = McpClient.using(mcpTransport) + mcpAsyncClient = McpClient.async(mcpTransport) .requestTimeout(TIMEOUT) .capabilities(ClientCapabilities.builder().roots(true).build()) - .async(); + .build(); mcpAsyncClient.initialize().block(Duration.ofSeconds(10)); }).doesNotThrowAnyException(); } @@ -96,10 +97,10 @@ public abstract class AbstractMcpAsyncClientTests { @Test void testConstructorWithInvalidArguments() { - assertThatThrownBy(() -> McpClient.using(null).sync()).isInstanceOf(IllegalArgumentException.class) + assertThatThrownBy(() -> McpClient.sync(null).build()).isInstanceOf(IllegalArgumentException.class) .hasMessage("Transport must not be null"); - assertThatThrownBy(() -> McpClient.using(mcpTransport).requestTimeout(null).sync()) + assertThatThrownBy(() -> McpClient.sync(mcpTransport).requestTimeout(null).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Request timeout must not be null"); } @@ -195,10 +196,10 @@ public abstract class AbstractMcpAsyncClientTests { void testInitializeWithRootsListProviders() { var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.async(transport) .requestTimeout(TIMEOUT) .roots(new Root("file:///test/path", "test-root")) - .async(); + .build(); assertThatCode(() -> client.initialize().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); @@ -277,12 +278,12 @@ public abstract class AbstractMcpAsyncClientTests { AtomicBoolean promptsNotificationReceived = new AtomicBoolean(false); var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.async(transport) .requestTimeout(TIMEOUT) - .toolsChangeConsumer(tools -> toolsNotificationReceived.set(true)) - .resourcesChangeConsumer(resources -> resourcesNotificationReceived.set(true)) - .promptsChangeConsumer(prompts -> promptsNotificationReceived.set(true)) - .async(); + .toolsChangeConsumer(tools -> Mono.fromRunnable(() -> toolsNotificationReceived.set(true))) + .resourcesChangeConsumer(resources -> Mono.fromRunnable(() -> resourcesNotificationReceived.set(true))) + .promptsChangeConsumer(prompts -> Mono.fromRunnable(() -> promptsNotificationReceived.set(true))) + .build(); assertThatCode(() -> { client.initialize().block(); @@ -299,9 +300,11 @@ public abstract class AbstractMcpAsyncClientTests { var capabilities = ClientCapabilities.builder().sampling().build(); - var client = McpClient.using(transport).requestTimeout(TIMEOUT).capabilities(capabilities).sampling(request -> { - return CreateMessageResult.builder().message("test").model("test-model").build(); - }).async(); + var client = McpClient.async(transport) + .requestTimeout(TIMEOUT) + .capabilities(capabilities) + .sampling(request -> Mono.just(CreateMessageResult.builder().message("test").model("test-model").build())) + .build(); assertThatCode(() -> { client.initialize().block(Duration.ofSeconds(10)); @@ -319,14 +322,13 @@ public abstract class AbstractMcpAsyncClientTests { .sampling() .build(); - Function samplingHandler = request -> { - return CreateMessageResult.builder().message("test").model("test-model").build(); - }; - var client = McpClient.using(transport) + Function> samplingHandler = request -> Mono + .just(CreateMessageResult.builder().message("test").model("test-model").build()); + var client = McpClient.async(transport) .requestTimeout(TIMEOUT) .capabilities(capabilities) .sampling(samplingHandler) - .async(); + .build(); assertThatCode(() -> { var result = client.initialize().block(Duration.ofSeconds(10)); @@ -353,10 +355,10 @@ public abstract class AbstractMcpAsyncClientTests { AtomicBoolean logReceived = new AtomicBoolean(false); var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.async(transport) .requestTimeout(TIMEOUT) - .loggingConsumer(notification -> logReceived.set(true)) - .async(); + .loggingConsumer(notification -> Mono.fromRunnable(() -> logReceived.set(true))) + .build(); assertThatCode(() -> { client.initialize().block(Duration.ofSeconds(10)); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java index 9935f7f..c012612 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java @@ -72,10 +72,10 @@ public abstract class AbstractMcpSyncClientTests { this.mcpTransport = createMcpTransport(); assertThatCode(() -> { - mcpSyncClient = McpClient.using(mcpTransport) + mcpSyncClient = McpClient.sync(mcpTransport) .requestTimeout(TIMEOUT) .capabilities(ClientCapabilities.builder().roots(true).build()) - .sync(); + .build(); mcpSyncClient.initialize(); }).doesNotThrowAnyException(); } @@ -90,10 +90,10 @@ public abstract class AbstractMcpSyncClientTests { @Test void testConstructorWithInvalidArguments() { - assertThatThrownBy(() -> McpClient.using(null).sync()).isInstanceOf(IllegalArgumentException.class) + assertThatThrownBy(() -> McpClient.sync(null).build()).isInstanceOf(IllegalArgumentException.class) .hasMessage("Transport must not be null"); - assertThatThrownBy(() -> McpClient.using(mcpTransport).requestTimeout(null).sync()) + assertThatThrownBy(() -> McpClient.sync(mcpTransport).requestTimeout(null).build()) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Request timeout must not be null"); } @@ -180,10 +180,10 @@ public abstract class AbstractMcpSyncClientTests { void testInitializeWithRootsListProviders() { var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.sync(transport) .requestTimeout(TIMEOUT) .roots(new Root("file:///test/path", "test-root")) - .sync(); + .build(); assertThatCode(() -> { client.initialize(); @@ -262,12 +262,12 @@ public abstract class AbstractMcpSyncClientTests { AtomicBoolean promptsNotificationReceived = new AtomicBoolean(false); var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.sync(transport) .requestTimeout(TIMEOUT) .toolsChangeConsumer(tools -> toolsNotificationReceived.set(true)) .resourcesChangeConsumer(resources -> resourcesNotificationReceived.set(true)) .promptsChangeConsumer(prompts -> promptsNotificationReceived.set(true)) - .sync(); + .build(); assertThatCode(() -> { client.initialize(); @@ -295,10 +295,10 @@ public abstract class AbstractMcpSyncClientTests { AtomicBoolean logReceived = new AtomicBoolean(false); var transport = createMcpTransport(); - var client = McpClient.using(transport) + var client = McpClient.sync(transport) .requestTimeout(TIMEOUT) .loggingConsumer(notification -> logReceived.set(true)) - .sync(); + .build(); assertThatCode(() -> { client.initialize(); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java index 6c67b99..2922bf0 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java @@ -27,6 +27,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; import org.springframework.ai.mcp.MockMcpTransport; import org.springframework.ai.mcp.spec.McpError; @@ -48,12 +49,11 @@ class McpAsyncClientResponseHandlerTests { List receivedTools = new ArrayList<>(); // Create a consumer that will be called when tools change - Consumer> toolsChangeConsumer = tools -> { - receivedTools.addAll(tools); - }; + Function, Mono> toolsChangeConsumer = tools -> Mono + .fromRunnable(() -> receivedTools.addAll(tools)); // Create client with tools change consumer - McpAsyncClient asyncMcpClient = McpClient.using(transport).toolsChangeConsumer(toolsChangeConsumer).async(); + McpAsyncClient asyncMcpClient = McpClient.async(transport).toolsChangeConsumer(toolsChangeConsumer).build(); // Create a mock tools list that the server will return Map inputSchema = Map.of("type", "object", "properties", Map.of(), "required", List.of()); @@ -88,9 +88,9 @@ class McpAsyncClientResponseHandlerTests { void testRootsListRequestHandling() { MockMcpTransport transport = new MockMcpTransport(); - McpAsyncClient asyncMcpClient = McpClient.using(transport) + McpAsyncClient asyncMcpClient = McpClient.async(transport) .roots(new Root("file:///test/path", "test-root")) - .async(); + .build(); // Simulate incoming request McpSchema.JSONRPCRequest request = new McpSchema.JSONRPCRequest(McpSchema.JSONRPC_VERSION, @@ -118,14 +118,13 @@ class McpAsyncClientResponseHandlerTests { List receivedResources = new ArrayList<>(); // Create a consumer that will be called when resources change - Consumer> resourcesChangeConsumer = resources -> { - receivedResources.addAll(resources); - }; + Function, Mono> resourcesChangeConsumer = resources -> Mono + .fromRunnable(() -> receivedResources.addAll(resources)); // Create client with resources change consumer - McpAsyncClient asyncMcpClient = McpClient.using(transport) + McpAsyncClient asyncMcpClient = McpClient.async(transport) .resourcesChangeConsumer(resourcesChangeConsumer) - .async(); + .build(); // Create a mock resources list that the server will return McpSchema.Resource mockResource = new McpSchema.Resource("test://resource", "Test Resource", "A test resource", @@ -165,12 +164,11 @@ class McpAsyncClientResponseHandlerTests { List receivedPrompts = new ArrayList<>(); // Create a consumer that will be called when prompts change - Consumer> promptsChangeConsumer = prompts -> { - receivedPrompts.addAll(prompts); - }; + Function, Mono> promptsChangeConsumer = prompts -> Mono + .fromRunnable(() -> receivedPrompts.addAll(prompts)); // Create client with prompts change consumer - McpAsyncClient asyncMcpClient = McpClient.using(transport).promptsChangeConsumer(promptsChangeConsumer).async(); + McpAsyncClient asyncMcpClient = McpClient.async(transport).promptsChangeConsumer(promptsChangeConsumer).build(); // Create a mock prompts list that the server will return McpSchema.Prompt mockPrompt = new McpSchema.Prompt("test-prompt", "Test Prompt Description", @@ -207,17 +205,17 @@ class McpAsyncClientResponseHandlerTests { MockMcpTransport transport = new MockMcpTransport(); // Create a test sampling handler that echoes back the input - Function samplingHandler = request -> { + Function> samplingHandler = request -> { var content = request.messages().get(0).content(); - return new McpSchema.CreateMessageResult(McpSchema.Role.ASSISTANT, content, "test-model", - McpSchema.CreateMessageResult.StopReason.END_TURN); + return Mono.just(new McpSchema.CreateMessageResult(McpSchema.Role.ASSISTANT, content, "test-model", + McpSchema.CreateMessageResult.StopReason.END_TURN)); }; // Create client with sampling capability and handler - McpAsyncClient asyncMcpClient = McpClient.using(transport) + McpAsyncClient asyncMcpClient = McpClient.async(transport) .capabilities(ClientCapabilities.builder().sampling().build()) .sampling(samplingHandler) - .async(); + .build(); // Create a mock create message request var messageRequest = new McpSchema.CreateMessageRequest( @@ -259,9 +257,9 @@ class McpAsyncClientResponseHandlerTests { MockMcpTransport transport = new MockMcpTransport(); // Create client without sampling capability - McpAsyncClient asyncMcpClient = McpClient.using(transport) + McpAsyncClient asyncMcpClient = McpClient.async(transport) .capabilities(ClientCapabilities.builder().build()) // No sampling capability - .async(); + .build(); // Create a mock create message request var messageRequest = new McpSchema.CreateMessageRequest( @@ -292,7 +290,7 @@ class McpAsyncClientResponseHandlerTests { // Create client with sampling capability but null handler assertThatThrownBy( - () -> McpClient.using(transport).capabilities(ClientCapabilities.builder().sampling().build()).async()) + () -> McpClient.async(transport).capabilities(ClientCapabilities.builder().sampling().build()).build()) .isInstanceOf(McpError.class) .hasMessage("Sampling handler must not be null when client capabilities include sampling"); } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java index 7da6775..0c7c1aa 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java @@ -22,11 +22,9 @@ import java.util.List; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.server.McpServer.PromptRegistration; -import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; @@ -81,24 +79,24 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testConstructorWithInvalidArguments() { - assertThatThrownBy(() -> McpServer.using(null)).isInstanceOf(IllegalArgumentException.class) + assertThatThrownBy(() -> McpServer.async(null)).isInstanceOf(IllegalArgumentException.class) .hasMessage("Transport must not be null"); - assertThatThrownBy(() -> McpServer.using(createMcpTransport()).serverInfo((McpSchema.Implementation) null)) + assertThatThrownBy(() -> McpServer.async(createMcpTransport()).serverInfo((McpSchema.Implementation) null)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Server info must not be null"); } @Test void testGracefulShutdown() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); StepVerifier.create(mcpAsyncServer.closeGracefully()).verifyComplete(); } @Test void testImmediateClose() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpAsyncServer.close()).doesNotThrowAnyException(); } @@ -117,81 +115,80 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testAddTool() { Tool newTool = new McpSchema.Tool("new-tool", "New test tool", emptyJsonSchema); - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .async(); + .build(); - StepVerifier - .create(mcpAsyncServer.addTool(new ToolRegistration(newTool, args -> new CallToolResult(List.of(), false)))) + StepVerifier.create(mcpAsyncServer.addTool(new McpServerFeatures.AsyncToolRegistration(newTool, + args -> Mono.just(new CallToolResult(List.of(), false))))) .verifyComplete(); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testAddDuplicateTool() { Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .tool(duplicateTool, args -> new CallToolResult(List.of(), false)) - .async(); + .tool(duplicateTool, args -> Mono.just(new CallToolResult(List.of(), false))) + .build(); - StepVerifier - .create(mcpAsyncServer - .addTool(new ToolRegistration(duplicateTool, args -> new CallToolResult(List.of(), false)))) + StepVerifier.create(mcpAsyncServer.addTool(new McpServerFeatures.AsyncToolRegistration(duplicateTool, + args -> Mono.just(new CallToolResult(List.of(), false))))) .verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) .hasMessage("Tool with name '" + TEST_TOOL_NAME + "' already exists"); }); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testRemoveTool() { Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .tool(too, args -> new CallToolResult(List.of(), false)) - .async(); + .tool(too, args -> Mono.just(new CallToolResult(List.of(), false))) + .build(); StepVerifier.create(mcpAsyncServer.removeTool(TEST_TOOL_NAME)).verifyComplete(); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testRemoveNonexistentTool() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .async(); + .build(); StepVerifier.create(mcpAsyncServer.removeTool("nonexistent-tool")).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class).hasMessage("Tool with name 'nonexistent-tool' not found"); }); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testNotifyToolsListChanged() { Tool too = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .tool(too, args -> new CallToolResult(List.of(), false)) - .async(); + .tool(too, args -> Mono.just(new CallToolResult(List.of(), false))) + .build(); StepVerifier.create(mcpAsyncServer.notifyToolsListChanged()).verifyComplete(); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } // --------------------------------------- @@ -200,24 +197,24 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testNotifyResourcesListChanged() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); StepVerifier.create(mcpAsyncServer.notifyResourcesListChanged()).verifyComplete(); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testAddResource() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) - .async(); + .build(); Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", null); - ResourceRegistration registration = new ResourceRegistration(resource, - req -> new ReadResourceResult(List.of())); + McpServerFeatures.AsyncResourceRegistration registration = new McpServerFeatures.AsyncResourceRegistration( + resource, req -> Mono.just(new ReadResourceResult(List.of()))); StepVerifier.create(mcpAsyncServer.addResource(registration)).verifyComplete(); @@ -226,14 +223,15 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testAddResourceWithNullRegistration() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) - .async(); + .build(); - StepVerifier.create(mcpAsyncServer.addResource(null)).verifyErrorSatisfies(error -> { - assertThat(error).isInstanceOf(McpError.class).hasMessage("Resource must not be null"); - }); + StepVerifier.create(mcpAsyncServer.addResource((McpServerFeatures.AsyncResourceRegistration) null)) + .verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class).hasMessage("Resource must not be null"); + }); assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @@ -241,14 +239,14 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testAddResourceWithoutCapability() { // Create a server without resource capabilities - McpAsyncServer serverWithoutResources = McpServer.using(createMcpTransport()) + McpAsyncServer serverWithoutResources = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .async(); + .build(); Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", null); - ResourceRegistration registration = new ResourceRegistration(resource, - req -> new ReadResourceResult(List.of())); + McpServerFeatures.AsyncResourceRegistration registration = new McpServerFeatures.AsyncResourceRegistration( + resource, req -> Mono.just(new ReadResourceResult(List.of()))); StepVerifier.create(serverWithoutResources.addResource(registration)).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) @@ -259,9 +257,9 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testRemoveResourceWithoutCapability() { // Create a server without resource capabilities - McpAsyncServer serverWithoutResources = McpServer.using(createMcpTransport()) + McpAsyncServer serverWithoutResources = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .async(); + .build(); StepVerifier.create(serverWithoutResources.removeResource(TEST_RESOURCE_URI)).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) @@ -275,36 +273,37 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testNotifyPromptsListChanged() { - var mcpAsyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); StepVerifier.create(mcpAsyncServer.notifyPromptsListChanged()).verifyComplete(); - assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))); + assertThatCode(() -> mcpAsyncServer.closeGracefully().block(Duration.ofSeconds(10))).doesNotThrowAnyException(); } @Test void testAddPromptWithNullRegistration() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(false).build()) - .async(); + .build(); - StepVerifier.create(mcpAsyncServer.addPrompt(null)).verifyErrorSatisfies(error -> { - assertThat(error).isInstanceOf(McpError.class).hasMessage("Prompt registration must not be null"); - }); + StepVerifier.create(mcpAsyncServer.addPrompt((McpServerFeatures.AsyncPromptRegistration) null)) + .verifyErrorSatisfies(error -> { + assertThat(error).isInstanceOf(McpError.class).hasMessage("Prompt registration must not be null"); + }); } @Test void testAddPromptWithoutCapability() { // Create a server without prompt capabilities - McpAsyncServer serverWithoutPrompts = McpServer.using(createMcpTransport()) + McpAsyncServer serverWithoutPrompts = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .async(); + .build(); Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); - PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( - "Test prompt description", - List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + McpServerFeatures.AsyncPromptRegistration registration = new McpServerFeatures.AsyncPromptRegistration(prompt, + req -> Mono.just(new GetPromptResult("Test prompt description", List + .of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content")))))); StepVerifier.create(serverWithoutPrompts.addPrompt(registration)).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) @@ -315,9 +314,9 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testRemovePromptWithoutCapability() { // Create a server without prompt capabilities - McpAsyncServer serverWithoutPrompts = McpServer.using(createMcpTransport()) + McpAsyncServer serverWithoutPrompts = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .async(); + .build(); StepVerifier.create(serverWithoutPrompts.removePrompt(TEST_PROMPT_NAME)).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) @@ -330,15 +329,15 @@ public abstract class AbstractMcpAsyncServerTests { String TEST_PROMPT_NAME_TO_REMOVE = "TEST_PROMPT_NAME678"; Prompt prompt = new Prompt(TEST_PROMPT_NAME_TO_REMOVE, "Test Prompt", List.of()); - PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( - "Test prompt description", - List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + McpServerFeatures.AsyncPromptRegistration registration = new McpServerFeatures.AsyncPromptRegistration(prompt, + req -> Mono.just(new GetPromptResult("Test prompt description", List + .of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content")))))); - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) .prompts(registration) - .async(); + .build(); StepVerifier.create(mcpAsyncServer.removePrompt(TEST_PROMPT_NAME_TO_REMOVE)).verifyComplete(); @@ -347,10 +346,10 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testRemoveNonexistentPrompt() { - var mcpAsyncServer2 = McpServer.using(createMcpTransport()) + var mcpAsyncServer2 = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) - .async(); + .build(); StepVerifier.create(mcpAsyncServer2.removePrompt("nonexistent-prompt")).verifyErrorSatisfies(error -> { assertThat(error).isInstanceOf(McpError.class) @@ -371,15 +370,15 @@ public abstract class AbstractMcpAsyncServerTests { var rootsReceived = new McpSchema.Root[1]; var consumerCalled = new boolean[1]; - var singleConsumerServer = McpServer.using(createMcpTransport()) + var singleConsumerServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .rootsChangeConsumers(List.of(roots -> { + .rootsChangeConsumers(List.of(roots -> Mono.fromRunnable(() -> { consumerCalled[0] = true; if (!roots.isEmpty()) { rootsReceived[0] = roots.get(0); } - })) - .async(); + }))) + .build(); assertThat(singleConsumerServer).isNotNull(); assertThatCode(() -> singleConsumerServer.closeGracefully().block(Duration.ofSeconds(10))) @@ -391,13 +390,13 @@ public abstract class AbstractMcpAsyncServerTests { var consumer2Called = new boolean[1]; var rootsContent = new List[1]; - var multipleConsumersServer = McpServer.using(createMcpTransport()) + var multipleConsumersServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") - .rootsChangeConsumers(List.of(roots -> { + .rootsChangeConsumers(List.of(roots -> Mono.fromRunnable(() -> { consumer1Called[0] = true; rootsContent[0] = roots; - }, roots -> consumer2Called[0] = true)) - .async(); + }), roots -> Mono.fromRunnable(() -> consumer2Called[0] = true))) + .build(); assertThat(multipleConsumersServer).isNotNull(); assertThatCode(() -> multipleConsumersServer.closeGracefully().block(Duration.ofSeconds(10))) @@ -405,12 +404,12 @@ public abstract class AbstractMcpAsyncServerTests { onClose(); // Test error handling - var errorHandlingServer = McpServer.using(createMcpTransport()) + var errorHandlingServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .rootsChangeConsumers(List.of(roots -> { throw new RuntimeException("Test error"); })) - .async(); + .build(); assertThat(errorHandlingServer).isNotNull(); assertThatCode(() -> errorHandlingServer.closeGracefully().block(Duration.ofSeconds(10))) @@ -418,7 +417,7 @@ public abstract class AbstractMcpAsyncServerTests { onClose(); // Test without consumers - var noConsumersServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").async(); + var noConsumersServer = McpServer.async(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThat(noConsumersServer).isNotNull(); assertThatCode(() -> noConsumersServer.closeGracefully().block(Duration.ofSeconds(10))) @@ -431,10 +430,10 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testLoggingLevels() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) - .async(); + .build(); // Test all logging levels for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { @@ -450,10 +449,10 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testLoggingWithoutCapability() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().build()) // No logging capability - .async(); + .build(); var notification = McpSchema.LoggingMessageNotification.builder() .level(McpSchema.LoggingLevel.INFO) @@ -466,10 +465,10 @@ public abstract class AbstractMcpAsyncServerTests { @Test void testLoggingWithNullNotification() { - var mcpAsyncServer = McpServer.using(createMcpTransport()) + var mcpAsyncServer = McpServer.async(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) - .async(); + .build(); StepVerifier.create(mcpAsyncServer.loggingNotification(null)).verifyError(McpError.class); } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java index 73dcc40..ddb827a 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java @@ -17,15 +17,11 @@ package org.springframework.ai.mcp.server; import java.util.List; -import java.util.Map; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.ai.mcp.server.McpServer.PromptRegistration; -import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; @@ -81,31 +77,31 @@ public abstract class AbstractMcpSyncServerTests { @Test void testConstructorWithInvalidArguments() { - assertThatThrownBy(() -> McpServer.using(null)).isInstanceOf(IllegalArgumentException.class) + assertThatThrownBy(() -> McpServer.sync(null)).isInstanceOf(IllegalArgumentException.class) .hasMessage("Transport must not be null"); - assertThatThrownBy(() -> McpServer.using(createMcpTransport()).serverInfo((McpSchema.Implementation) null)) + assertThatThrownBy(() -> McpServer.sync(createMcpTransport()).serverInfo(null)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Server info must not be null"); } @Test void testGracefulShutdown() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); } @Test void testImmediateClose() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpSyncServer.close()).doesNotThrowAnyException(); } @Test void testGetAsyncServer() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThat(mcpSyncServer.getAsyncServer()).isNotNull(); @@ -126,14 +122,14 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddTool() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .sync(); + .build(); Tool newTool = new McpSchema.Tool("new-tool", "New test tool", emptyJsonSchema); assertThatCode(() -> mcpSyncServer - .addTool(new ToolRegistration(newTool, args -> new CallToolResult(List.of(), false)))) + .addTool(new McpServerFeatures.SyncToolRegistration(newTool, args -> new CallToolResult(List.of(), false)))) .doesNotThrowAnyException(); assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); @@ -143,14 +139,14 @@ public abstract class AbstractMcpSyncServerTests { void testAddDuplicateTool() { Tool duplicateTool = new McpSchema.Tool(TEST_TOOL_NAME, "Duplicate tool", emptyJsonSchema); - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .tool(duplicateTool, args -> new CallToolResult(List.of(), false)) - .sync(); + .build(); - assertThatThrownBy(() -> mcpSyncServer - .addTool(new ToolRegistration(duplicateTool, args -> new CallToolResult(List.of(), false)))) + assertThatThrownBy(() -> mcpSyncServer.addTool(new McpServerFeatures.SyncToolRegistration(duplicateTool, + args -> new CallToolResult(List.of(), false)))) .isInstanceOf(McpError.class) .hasMessage("Tool with name '" + TEST_TOOL_NAME + "' already exists"); @@ -161,11 +157,11 @@ public abstract class AbstractMcpSyncServerTests { void testRemoveTool() { Tool tool = new McpSchema.Tool(TEST_TOOL_NAME, "Test tool", emptyJsonSchema); - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) .tool(tool, args -> new CallToolResult(List.of(), false)) - .sync(); + .build(); assertThatCode(() -> mcpSyncServer.removeTool(TEST_TOOL_NAME)).doesNotThrowAnyException(); @@ -174,10 +170,10 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemoveNonexistentTool() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().tools(true).build()) - .sync(); + .build(); assertThatThrownBy(() -> mcpSyncServer.removeTool("nonexistent-tool")).isInstanceOf(McpError.class) .hasMessage("Tool with name 'nonexistent-tool' not found"); @@ -187,7 +183,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testNotifyToolsListChanged() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpSyncServer.notifyToolsListChanged()).doesNotThrowAnyException(); @@ -200,7 +196,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testNotifyResourcesListChanged() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpSyncServer.notifyResourcesListChanged()).doesNotThrowAnyException(); @@ -209,15 +205,15 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddResource() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) - .sync(); + .build(); Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", null); - ResourceRegistration registration = new ResourceRegistration(resource, - req -> new ReadResourceResult(List.of())); + McpServerFeatures.SyncResourceRegistration registration = new McpServerFeatures.SyncResourceRegistration( + resource, req -> new ReadResourceResult(List.of())); assertThatCode(() -> mcpSyncServer.addResource(registration)).doesNotThrowAnyException(); @@ -226,12 +222,13 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddResourceWithNullRegistration() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().resources(true, false).build()) - .sync(); + .build(); - assertThatThrownBy(() -> mcpSyncServer.addResource(null)).isInstanceOf(McpError.class) + assertThatThrownBy(() -> mcpSyncServer.addResource((McpServerFeatures.SyncResourceRegistration) null)) + .isInstanceOf(McpError.class) .hasMessage("Resource must not be null"); assertThatCode(() -> mcpSyncServer.closeGracefully()).doesNotThrowAnyException(); @@ -239,12 +236,12 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddResourceWithoutCapability() { - var serverWithoutResources = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var serverWithoutResources = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); Resource resource = new Resource(TEST_RESOURCE_URI, "Test Resource", "text/plain", "Test resource description", null); - ResourceRegistration registration = new ResourceRegistration(resource, - req -> new ReadResourceResult(List.of())); + McpServerFeatures.SyncResourceRegistration registration = new McpServerFeatures.SyncResourceRegistration( + resource, req -> new ReadResourceResult(List.of())); assertThatThrownBy(() -> serverWithoutResources.addResource(registration)).isInstanceOf(McpError.class) .hasMessage("Server must be configured with resource capabilities"); @@ -252,7 +249,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemoveResourceWithoutCapability() { - var serverWithoutResources = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var serverWithoutResources = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatThrownBy(() -> serverWithoutResources.removeResource(TEST_RESOURCE_URI)).isInstanceOf(McpError.class) .hasMessage("Server must be configured with resource capabilities"); @@ -264,7 +261,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testNotifyPromptsListChanged() { - var mcpSyncServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var mcpSyncServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatCode(() -> mcpSyncServer.notifyPromptsListChanged()).doesNotThrowAnyException(); @@ -273,23 +270,24 @@ public abstract class AbstractMcpSyncServerTests { @Test void testAddPromptWithNullRegistration() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(false).build()) - .sync(); + .build(); - assertThatThrownBy(() -> mcpSyncServer.addPrompt(null)).isInstanceOf(McpError.class) + assertThatThrownBy(() -> mcpSyncServer.addPrompt((McpServerFeatures.SyncPromptRegistration) null)) + .isInstanceOf(McpError.class) .hasMessage("Prompt registration must not be null"); } @Test void testAddPromptWithoutCapability() { - var serverWithoutPrompts = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var serverWithoutPrompts = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); - PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( - "Test prompt description", - List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + McpServerFeatures.SyncPromptRegistration registration = new McpServerFeatures.SyncPromptRegistration(prompt, + req -> new GetPromptResult("Test prompt description", List + .of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); assertThatThrownBy(() -> serverWithoutPrompts.addPrompt(registration)).isInstanceOf(McpError.class) .hasMessage("Server must be configured with prompt capabilities"); @@ -297,7 +295,7 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemovePromptWithoutCapability() { - var serverWithoutPrompts = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var serverWithoutPrompts = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThatThrownBy(() -> serverWithoutPrompts.removePrompt(TEST_PROMPT_NAME)).isInstanceOf(McpError.class) .hasMessage("Server must be configured with prompt capabilities"); @@ -306,15 +304,15 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemovePrompt() { Prompt prompt = new Prompt(TEST_PROMPT_NAME, "Test Prompt", List.of()); - PromptRegistration registration = new PromptRegistration(prompt, req -> new GetPromptResult( - "Test prompt description", - List.of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); + McpServerFeatures.SyncPromptRegistration registration = new McpServerFeatures.SyncPromptRegistration(prompt, + req -> new GetPromptResult("Test prompt description", List + .of(new PromptMessage(McpSchema.Role.ASSISTANT, new McpSchema.TextContent("Test content"))))); - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) .prompts(registration) - .sync(); + .build(); assertThatCode(() -> mcpSyncServer.removePrompt(TEST_PROMPT_NAME)).doesNotThrowAnyException(); @@ -323,10 +321,10 @@ public abstract class AbstractMcpSyncServerTests { @Test void testRemoveNonexistentPrompt() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().prompts(true).build()) - .sync(); + .build(); assertThatThrownBy(() -> mcpSyncServer.removePrompt("nonexistent-prompt")).isInstanceOf(McpError.class) .hasMessage("Prompt with name 'nonexistent-prompt' not found"); @@ -344,7 +342,7 @@ public abstract class AbstractMcpSyncServerTests { var rootsReceived = new McpSchema.Root[1]; var consumerCalled = new boolean[1]; - var singleConsumerServer = McpServer.using(createMcpTransport()) + var singleConsumerServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .rootsChangeConsumers(List.of(roots -> { consumerCalled[0] = true; @@ -352,7 +350,7 @@ public abstract class AbstractMcpSyncServerTests { rootsReceived[0] = roots.get(0); } })) - .sync(); + .build(); assertThat(singleConsumerServer).isNotNull(); assertThatCode(() -> singleConsumerServer.closeGracefully()).doesNotThrowAnyException(); @@ -363,32 +361,32 @@ public abstract class AbstractMcpSyncServerTests { var consumer2Called = new boolean[1]; var rootsContent = new List[1]; - var multipleConsumersServer = McpServer.using(createMcpTransport()) + var multipleConsumersServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .rootsChangeConsumers(List.of(roots -> { consumer1Called[0] = true; rootsContent[0] = roots; }, roots -> consumer2Called[0] = true)) - .sync(); + .build(); assertThat(multipleConsumersServer).isNotNull(); assertThatCode(() -> multipleConsumersServer.closeGracefully()).doesNotThrowAnyException(); onClose(); // Test error handling - var errorHandlingServer = McpServer.using(createMcpTransport()) + var errorHandlingServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .rootsChangeConsumers(List.of(roots -> { throw new RuntimeException("Test error"); })) - .sync(); + .build(); assertThat(errorHandlingServer).isNotNull(); assertThatCode(() -> errorHandlingServer.closeGracefully()).doesNotThrowAnyException(); onClose(); // Test without consumers - var noConsumersServer = McpServer.using(createMcpTransport()).serverInfo("test-server", "1.0.0").sync(); + var noConsumersServer = McpServer.sync(createMcpTransport()).serverInfo("test-server", "1.0.0").build(); assertThat(noConsumersServer).isNotNull(); assertThatCode(() -> noConsumersServer.closeGracefully()).doesNotThrowAnyException(); @@ -400,10 +398,10 @@ public abstract class AbstractMcpSyncServerTests { @Test void testLoggingLevels() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) - .sync(); + .build(); // Test all logging levels for (McpSchema.LoggingLevel level : McpSchema.LoggingLevel.values()) { @@ -419,10 +417,10 @@ public abstract class AbstractMcpSyncServerTests { @Test void testLoggingWithoutCapability() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().build()) // No logging capability - .sync(); + .build(); var notification = McpSchema.LoggingMessageNotification.builder() .level(McpSchema.LoggingLevel.INFO) @@ -435,10 +433,10 @@ public abstract class AbstractMcpSyncServerTests { @Test void testLoggingWithNullNotification() { - var mcpSyncServer = McpServer.using(createMcpTransport()) + var mcpSyncServer = McpServer.sync(createMcpTransport()) .serverInfo("test-server", "1.0.0") .capabilities(ServerCapabilities.builder().logging().build()) - .sync(); + .build(); assertThatThrownBy(() -> mcpSyncServer.loggingNotification(null)).isInstanceOf(McpError.class); } diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java index 71338a9..bc6bc06 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java @@ -36,7 +36,7 @@ import reactor.test.StepVerifier; import org.springframework.ai.mcp.client.McpClient; import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; import org.springframework.ai.mcp.server.McpServer; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; +import org.springframework.ai.mcp.server.McpServerFeatures; import org.springframework.ai.mcp.spec.McpError; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; @@ -63,7 +63,7 @@ public class HttpServletSseServerTransportIntegrationTests { private HttpServletSseServerTransport mcpServerTransport; - McpClient.Builder clientBuilder; + McpClient.SyncSpec clientBuilder; private Tomcat tomcat; @@ -99,7 +99,7 @@ public class HttpServletSseServerTransportIntegrationTests { throw new RuntimeException("Failed to start Tomcat", e); } - this.clientBuilder = McpClient.using(new HttpClientSseClientTransport("http://localhost:" + PORT)); + this.clientBuilder = McpClient.sync(new HttpClientSseClientTransport("http://localhost:" + PORT)); } @AfterEach @@ -120,7 +120,7 @@ public class HttpServletSseServerTransportIntegrationTests { @Test void testCreateMessageWithoutInitialization() { - var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(mcpServerTransport).serverInfo("test-server", "1.0.0").build(); var messages = List .of(new McpSchema.SamplingMessage(McpSchema.Role.USER, new McpSchema.TextContent("Test message"))); @@ -137,9 +137,9 @@ public class HttpServletSseServerTransportIntegrationTests { @Test void testCreateMessageWithoutSamplingCapabilities() { - var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(mcpServerTransport).serverInfo("test-server", "1.0.0").build(); - var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")).sync(); + var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")).build(); InitializeResult initResult = client.initialize(); assertThat(initResult).isNotNull(); @@ -159,7 +159,7 @@ public class HttpServletSseServerTransportIntegrationTests { @Test void testCreateMessageSuccess() { - var mcpAsyncServer = McpServer.using(mcpServerTransport).serverInfo("test-server", "1.0.0").async(); + var mcpAsyncServer = McpServer.async(mcpServerTransport).serverInfo("test-server", "1.0.0").build(); Function samplingHandler = request -> { assertThat(request.messages()).hasSize(1); @@ -172,7 +172,7 @@ public class HttpServletSseServerTransportIntegrationTests { var client = clientBuilder.clientInfo(new McpSchema.Implementation("Sample client", "0.0.0")) .capabilities(ClientCapabilities.builder().sampling().build()) .sampling(samplingHandler) - .sync(); + .build(); InitializeResult initResult = client.initialize(); assertThat(initResult).isNotNull(); @@ -199,13 +199,13 @@ public class HttpServletSseServerTransportIntegrationTests { List roots = List.of(new Root("uri1://", "root1"), new Root("uri2://", "root2")); AtomicReference> rootsRef = new AtomicReference<>(); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .rootsChangeConsumer(rootsUpdate -> rootsRef.set(rootsUpdate)) - .sync(); + .build(); var mcpClient = clientBuilder.capabilities(ClientCapabilities.builder().roots(true).build()) .roots(roots) - .sync(); + .build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -235,8 +235,8 @@ public class HttpServletSseServerTransportIntegrationTests { @Test void testToolCallSuccess() { var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); - ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), - request -> { + McpServerFeatures.SyncToolRegistration tool1 = new McpServerFeatures.SyncToolRegistration( + new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { String response = RestClient.create() .get() .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") @@ -246,12 +246,12 @@ public class HttpServletSseServerTransportIntegrationTests { return callResponse; }); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .capabilities(ServerCapabilities.builder().tools(true).build()) .tools(tool1) - .sync(); + .build(); - var mcpClient = clientBuilder.sync(); + var mcpClient = clientBuilder.build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -270,8 +270,8 @@ public class HttpServletSseServerTransportIntegrationTests { @Test void testToolListChangeHandlingSuccess() { var callResponse = new McpSchema.CallToolResult(List.of(new McpSchema.TextContent("CALL RESPONSE")), null); - ToolRegistration tool1 = new ToolRegistration(new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), - request -> { + McpServerFeatures.SyncToolRegistration tool1 = new McpServerFeatures.SyncToolRegistration( + new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { String response = RestClient.create() .get() .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") @@ -281,10 +281,10 @@ public class HttpServletSseServerTransportIntegrationTests { return callResponse; }); - var mcpServer = McpServer.using(mcpServerTransport) + var mcpServer = McpServer.sync(mcpServerTransport) .capabilities(ServerCapabilities.builder().tools(true).build()) .tools(tool1) - .sync(); + .build(); AtomicReference> toolsRef = new AtomicReference<>(); var mcpClient = clientBuilder.toolsChangeConsumer(toolsUpdate -> { @@ -295,7 +295,7 @@ public class HttpServletSseServerTransportIntegrationTests { .body(String.class); assertThat(response).isNotBlank(); toolsRef.set(toolsUpdate); - }).sync(); + }).build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); @@ -316,8 +316,8 @@ public class HttpServletSseServerTransportIntegrationTests { assertThat(toolsRef.get()).isEmpty(); }); - ToolRegistration tool2 = new ToolRegistration(new McpSchema.Tool("tool2", "tool2 description", emptyJsonSchema), - request -> callResponse); + McpServerFeatures.SyncToolRegistration tool2 = new McpServerFeatures.SyncToolRegistration( + new McpSchema.Tool("tool2", "tool2 description", emptyJsonSchema), request -> callResponse); mcpServer.addTool(tool2); @@ -331,8 +331,8 @@ public class HttpServletSseServerTransportIntegrationTests { @Test void testInitialize() { - var mcpServer = McpServer.using(mcpServerTransport).sync(); - var mcpClient = clientBuilder.sync(); + var mcpServer = McpServer.sync(mcpServerTransport).build(); + var mcpClient = clientBuilder.build(); InitializeResult initResult = mcpClient.initialize(); assertThat(initResult).isNotNull(); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java b/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java index acf7c44..9af6513 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java @@ -150,7 +150,7 @@ class DefaultMcpSessionTests { @Test void testRequestHandling() { String echoMessage = "Hello MCP!"; - Map requestHandlers = Map.of(ECHO_METHOD, + Map> requestHandlers = Map.of(ECHO_METHOD, params -> Mono.just(params)); transport = new MockMcpTransport(); session = new DefaultMcpSession(TIMEOUT, transport, requestHandlers, Map.of()); diff --git a/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java b/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java index 943f988..a3c5e44 100644 --- a/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java +++ b/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java @@ -26,6 +26,7 @@ import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator; import org.springframework.ai.chat.model.ToolContext; import org.springframework.ai.mcp.server.McpServer; +import org.springframework.ai.mcp.server.McpServerFeatures; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.model.ModelOptionsUtils; import org.springframework.ai.model.function.FunctionCallback; @@ -60,14 +61,62 @@ public final class ToolHelper { private ToolHelper() { } + public static List toSyncToolRegistration( + List functionCallbacks) { + return functionCallbacks.stream().map(ToolHelper::toSyncToolRegistration).toList(); + } + + @Deprecated public static List toToolRegistration(List functionCallbacks) { return functionCallbacks.stream().map(ToolHelper::toToolRegistration).toList(); } + public static List toSyncToolRegistration( + FunctionCallback... functionCallbacks) { + return toSyncToolRegistration(List.of(functionCallbacks)); + } + + @Deprecated public static List toToolRegistration(FunctionCallback... functionCallbacks) { return toToolRegistration(List.of(functionCallbacks)); } + /** + * Converts a Spring AI FunctionCallback to an MCP SyncToolRegistration. This enables + * Spring AI functions to be exposed as MCP tools that can be discovered and invoked + * by language models. + * + *

    + * The conversion process: + *

      + *
    • Creates an MCP Tool with the function's name and input schema
    • + *
    • Wraps the function's execution in a SyncToolRegistration that handles the MCP + * protocol
    • + *
    • Provides error handling and result formatting according to MCP + * specifications
    • + *
    + * + * You can use the FunctionCallback builder to create a new instance of + * FunctionCallback using either java.util.function.Function or Method reference. + * @param functionCallback the Spring AI function callback to convert + * @return an MCP SyncToolRegistration that wraps the function callback + * @throws RuntimeException if there's an error during the function execution + */ + public static McpServerFeatures.SyncToolRegistration toSyncToolRegistration(FunctionCallback functionCallback) { + var tool = new McpSchema.Tool(functionCallback.getName(), functionCallback.getName(), + functionCallback.getInputTypeSchema()); + + return new McpServerFeatures.SyncToolRegistration(tool, request -> { + try { + String callResult = functionCallback.call(ModelOptionsUtils.toJsonString(request)); + return new McpSchema.CallToolResult(List.of(new McpSchema.TextContent(callResult)), false); + } + catch (Exception e) { + return new McpSchema.CallToolResult(List.of(new McpSchema.TextContent(e.getMessage())), true); + } + }); + } + /** * Converts a Spring AI FunctionCallback to an MCP ToolRegistration. This enables * Spring AI functions to be exposed as MCP tools that can be discovered and invoked @@ -88,7 +137,9 @@ public final class ToolHelper { * @param functionCallback the Spring AI function callback to convert * @return an MCP ToolRegistration that wraps the function callback * @throws RuntimeException if there's an error during the function execution + * @deprecated Use {@link #toSyncToolRegistration(FunctionCallback)}. */ + @Deprecated public static McpServer.ToolRegistration toToolRegistration(FunctionCallback functionCallback) { var tool = new McpSchema.Tool(functionCallback.getName(), functionCallback.getName(), From 919433437c1b6066b50fdcf9e2a29629128ad418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dariusz=20J=C4=99drzejczyk?= Date: Thu, 23 Jan 2025 13:33:11 +0100 Subject: [PATCH 072/505] Polish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dariusz Jędrzejczyk --- .../ai/mcp/client/McpAsyncClient.java | 31 ++++-- .../ai/mcp/client/McpClient.java | 98 ++++++++++++++----- .../ai/mcp/client/McpClientFeatures.java | 21 ++-- .../ai/mcp/client/McpSyncClient.java | 9 ++ .../ai/mcp/server/McpAsyncServer.java | 33 ++++++- .../ai/mcp/server/McpServer.java | 55 ++++++----- .../ai/mcp/server/McpServerFeatures.java | 2 + .../ai/mcp/server/McpSyncServer.java | 1 + 8 files changed, 181 insertions(+), 69 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index 22d0804..5d82881 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -517,7 +517,7 @@ public class McpAsyncClient { return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_ROOTS_LIST_CHANGED); } - private RequestHandler rootsListRequestHandler() { + private RequestHandler rootsListRequestHandler() { return params -> { McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, new TypeReference() { @@ -545,10 +545,10 @@ public class McpAsyncClient { // -------------------------- // Tools // -------------------------- - private static TypeReference CALL_TOOL_RESULT_TYPE_REF = new TypeReference<>() { + private static final TypeReference CALL_TOOL_RESULT_TYPE_REF = new TypeReference<>() { }; - private static TypeReference LIST_TOOLS_RESULT_TYPE_REF = new TypeReference<>() { + private static final TypeReference LIST_TOOLS_RESULT_TYPE_REF = new TypeReference<>() { }; /** @@ -601,6 +601,7 @@ public class McpAsyncClient { * list to all registered consumers 3. Handling any errors that occur during this * process */ + @Deprecated private NotificationHandler toolsChangeNotificationHandler( List>> toolsChangeConsumers) { @@ -631,6 +632,10 @@ public class McpAsyncClient { // TODO: params are not used yet return params -> listTools().flatMap(listToolsResult -> Flux.fromIterable(toolsChangeConsumers) .flatMap(consumer -> consumer.apply(listToolsResult.tools())) + .onErrorResume(error -> { + logger.error("Error handling tools list change notification", error); + return Mono.empty(); + }) .then()); } @@ -638,13 +643,13 @@ public class McpAsyncClient { // Resources // -------------------------- - private static TypeReference LIST_RESOURCES_RESULT_TYPE_REF = new TypeReference<>() { + private static final TypeReference LIST_RESOURCES_RESULT_TYPE_REF = new TypeReference<>() { }; - private static TypeReference READ_RESOURCE_RESULT_TYPE_REF = new TypeReference<>() { + private static final TypeReference READ_RESOURCE_RESULT_TYPE_REF = new TypeReference<>() { }; - private static TypeReference LIST_RESOURCE_TEMPLATES_RESULT_TYPE_REF = new TypeReference<>() { + private static final TypeReference LIST_RESOURCE_TEMPLATES_RESULT_TYPE_REF = new TypeReference<>() { }; /** @@ -742,6 +747,7 @@ public class McpAsyncClient { VOID_TYPE_REFERENCE); } + @Deprecated private NotificationHandler resourcesChangeNotificationHandler( List>> resourcesChangeConsumers) { @@ -759,16 +765,20 @@ public class McpAsyncClient { List, Mono>> resourcesChangeConsumers) { return params -> listResources().flatMap(listResourcesResult -> Flux.fromIterable(resourcesChangeConsumers) .flatMap(consumer -> consumer.apply(listResourcesResult.resources())) + .onErrorResume(error -> { + logger.error("Error handling resources list change notification", error); + return Mono.empty(); + }) .then()); } // -------------------------- // Prompts // -------------------------- - private static TypeReference LIST_PROMPTS_RESULT_TYPE_REF = new TypeReference<>() { + private static final TypeReference LIST_PROMPTS_RESULT_TYPE_REF = new TypeReference<>() { }; - private static TypeReference GET_PROMPT_RESULT_TYPE_REF = new TypeReference<>() { + private static final TypeReference GET_PROMPT_RESULT_TYPE_REF = new TypeReference<>() { }; /** @@ -808,6 +818,7 @@ public class McpAsyncClient { return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_PROMPTS_LIST_CHANGED); } + @Deprecated private NotificationHandler promptsChangeNotificationHandler( List>> promptsChangeConsumers) { @@ -827,6 +838,10 @@ public class McpAsyncClient { List, Mono>> promptsChangeConsumers) { return params -> listPrompts().flatMap(listPromptsResult -> Flux.fromIterable(promptsChangeConsumers) .flatMap(consumer -> consumer.apply(listPromptsResult.prompts())) + .onErrorResume(error -> { + logger.error("Error handling prompts list change notification", error); + return Mono.empty(); + }) .then()); } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java index 69a811e..e11a9a7 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java @@ -65,7 +65,7 @@ import org.springframework.ai.mcp.util.Assert; * .requestTimeout(Duration.ofSeconds(5)) * .build(); * } - * + * * Example of creating a basic asynchronous client:
    {@code
      * McpClient.async(transport)
      *     .requestTimeout(Duration.ofSeconds(5))
    @@ -114,6 +114,40 @@ import org.springframework.ai.mcp.util.Assert;
      */
     public interface McpClient {
     
    +	/**
    +	 * Start building a synchronous MCP client with the specified transport layer. The
    +	 * synchronous MCP client provides blocking operations. Synchronous clients wait for
    +	 * each operation to complete before returning, making them simpler to use but
    +	 * potentially less performant for concurrent operations. The transport layer handles
    +	 * the low-level communication between client and server using protocols like stdio or
    +	 * Server-Sent Events (SSE).
    +	 * @param transport The transport layer implementation for MCP communication. Common
    +	 * implementations include {@code StdioClientTransport} for stdio-based communication
    +	 * and {@code SseClientTransport} for SSE-based communication.
    +	 * @return A new builder instance for configuring the client
    +	 * @throws IllegalArgumentException if transport is null
    +	 */
    +	static SyncSpec sync(ClientMcpTransport transport) {
    +		return new SyncSpec(transport);
    +	}
    +
    +	/**
    +	 * Start building an asynchronous MCP client with the specified transport layer. The
    +	 * asynchronous MCP client provides non-blocking operations. Asynchronous clients
    +	 * return reactive primitives (Mono/Flux) immediately, allowing for concurrent
    +	 * operations and reactive programming patterns. The transport layer handles the
    +	 * low-level communication between client and server using protocols like stdio or
    +	 * Server-Sent Events (SSE).
    +	 * @param transport The transport layer implementation for MCP communication. Common
    +	 * implementations include {@code StdioClientTransport} for stdio-based communication
    +	 * and {@code SseClientTransport} for SSE-based communication.
    +	 * @return A new builder instance for configuring the client
    +	 * @throws IllegalArgumentException if transport is null
    +	 */
    +	static AsyncSpec async(ClientMcpTransport transport) {
    +		return new AsyncSpec(transport);
    +	}
    +
     	/**
     	 * Start building an MCP client with the specified transport layer. The transport
     	 * layer handles the low-level communication between client and server using protocols
    @@ -371,7 +405,20 @@ public interface McpClient {
     	}
     
     	/**
    -	 * Synchronous client specification.
    +	 * Synchronous client specification. This class follows the builder pattern to provide
    +	 * a fluent API for setting up clients with custom configurations.
    +	 *
    +	 * 

    + * The builder supports configuration of: + *

      + *
    • Transport layer for client-server communication + *
    • Request timeouts for operation boundaries + *
    • Client capabilities for feature negotiation + *
    • Client implementation details for version tracking + *
    • Root URIs for resource access + *
    • Change notification handlers for tools, resources, and prompts + *
    • Custom message sampling logic + *
    */ class SyncSpec { @@ -381,21 +428,22 @@ public interface McpClient { private ClientCapabilities capabilities; - private Implementation clientInfo = new Implementation("Spring AI MCP Client", "0.3.1"); + private Implementation clientInfo = new Implementation("Spring AI MCP Client", "1.0.0"); - private Map roots = new HashMap<>(); + private final Map roots = new HashMap<>(); - private List>> toolsChangeConsumers = new ArrayList<>(); + private final List>> toolsChangeConsumers = new ArrayList<>(); - private List>> resourcesChangeConsumers = new ArrayList<>(); + private final List>> resourcesChangeConsumers = new ArrayList<>(); - private List>> promptsChangeConsumers = new ArrayList<>(); + private final List>> promptsChangeConsumers = new ArrayList<>(); - private List> loggingConsumers = new ArrayList<>(); + private final List> loggingConsumers = new ArrayList<>(); private Function samplingHandler; private SyncSpec(ClientMcpTransport transport) { + Assert.notNull(transport, "Transport must not be null"); this.transport = transport; } @@ -581,7 +629,20 @@ public interface McpClient { } /** - * Asynchronous client specification. + * Asynchronous client specification. This class follows the builder pattern to + * provide a fluent API for setting up clients with custom configurations. + * + *

    + * The builder supports configuration of: + *

      + *
    • Transport layer for client-server communication + *
    • Request timeouts for operation boundaries + *
    • Client capabilities for feature negotiation + *
    • Client implementation details for version tracking + *
    • Root URIs for resource access + *
    • Change notification handlers for tools, resources, and prompts + *
    • Custom message sampling logic + *
    */ class AsyncSpec { @@ -593,19 +654,20 @@ public interface McpClient { private Implementation clientInfo = new Implementation("Spring AI MCP Client", "0.3.1"); - private Map roots = new HashMap<>(); + private final Map roots = new HashMap<>(); - private List, Mono>> toolsChangeConsumers = new ArrayList<>(); + private final List, Mono>> toolsChangeConsumers = new ArrayList<>(); - private List, Mono>> resourcesChangeConsumers = new ArrayList<>(); + private final List, Mono>> resourcesChangeConsumers = new ArrayList<>(); - private List, Mono>> promptsChangeConsumers = new ArrayList<>(); + private final List, Mono>> promptsChangeConsumers = new ArrayList<>(); - private List>> loggingConsumers = new ArrayList<>(); + private final List>> loggingConsumers = new ArrayList<>(); private Function> samplingHandler; private AsyncSpec(ClientMcpTransport transport) { + Assert.notNull(transport, "Transport must not be null"); this.transport = transport; } @@ -789,12 +851,4 @@ public interface McpClient { } - static SyncSpec sync(ClientMcpTransport transport) { - return new SyncSpec(transport); - } - - static AsyncSpec async(ClientMcpTransport transport) { - return new AsyncSpec(transport); - } - } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java index 9277398..7d8bb17 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java @@ -16,8 +16,8 @@ import org.springframework.ai.mcp.util.Assert; import org.springframework.ai.mcp.util.Utils; /** - * Internal representation of features and capabilities for Model Context Protocol (MCP) - * clients. This class provides two record types for managing client features: + * Representation of features and capabilities for Model Context Protocol (MCP) clients. + * This class provides two record types for managing client features: *
      *
    • {@link Async} for non-blocking operations with Project Reactor's Mono responses *
    • {@link Sync} for blocking operations with direct responses @@ -38,6 +38,7 @@ import org.springframework.ai.mcp.util.Utils; * through the {@link Async#fromSync} method, which ensures proper handling of blocking * operations in non-blocking contexts by scheduling them on a bounded elastic scheduler. * + * @author Dariusz Jędrzejczyk * @see McpClient * @see McpSchema.Implementation * @see McpSchema.ClientCapabilities @@ -92,10 +93,10 @@ class McpClientFeatures { samplingHandler != null ? new McpSchema.ClientCapabilities.Sampling() : null); this.roots = roots != null ? new ConcurrentHashMap<>(roots) : new ConcurrentHashMap<>(); - this.toolsChangeConsumers = toolsChangeConsumers; - this.resourcesChangeConsumers = resourcesChangeConsumers; - this.promptsChangeConsumers = promptsChangeConsumers; - this.loggingConsumers = loggingConsumers; + this.toolsChangeConsumers = toolsChangeConsumers != null ? toolsChangeConsumers : List.of(); + this.resourcesChangeConsumers = resourcesChangeConsumers != null ? resourcesChangeConsumers : List.of(); + this.promptsChangeConsumers = promptsChangeConsumers != null ? promptsChangeConsumers : List.of(); + this.loggingConsumers = loggingConsumers != null ? loggingConsumers : List.of(); this.samplingHandler = samplingHandler; } @@ -189,10 +190,10 @@ class McpClientFeatures { samplingHandler != null ? new McpSchema.ClientCapabilities.Sampling() : null); this.roots = roots != null ? new HashMap<>(roots) : new HashMap<>(); - this.toolsChangeConsumers = toolsChangeConsumers; - this.resourcesChangeConsumers = resourcesChangeConsumers; - this.promptsChangeConsumers = promptsChangeConsumers; - this.loggingConsumers = loggingConsumers; + this.toolsChangeConsumers = toolsChangeConsumers != null ? toolsChangeConsumers : List.of(); + this.resourcesChangeConsumers = resourcesChangeConsumers != null ? resourcesChangeConsumers : List.of(); + this.promptsChangeConsumers = promptsChangeConsumers != null ? promptsChangeConsumers : List.of(); + this.loggingConsumers = loggingConsumers != null ? loggingConsumers : List.of(); this.samplingHandler = samplingHandler; } } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java index 954f7aa..1d008ab 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java @@ -21,6 +21,7 @@ import java.time.Duration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.ai.mcp.spec.McpSchema; import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; @@ -74,6 +75,14 @@ public class McpSyncClient implements AutoCloseable { private final McpAsyncClient delegate; + /** + * Create a new McpSyncClient with the given delegate. + * @param delegate the asynchronous kernel on top of which this synchronous client + * provides a blocking API. + * @deprecated Use {@link McpClient#sync(ClientMcpTransport)} to obtain an instance. + */ + @Deprecated + // TODO make the constructor package private post-deprecation public McpSyncClient(McpAsyncClient delegate) { Assert.notNull(delegate, "The delegate can not be null"); this.delegate = delegate; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index d5e3043..8d406a5 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -84,6 +84,7 @@ import org.springframework.ai.mcp.util.Utils; * connected clients of changes when configured to do so. * * @author Christian Tzolov + * @author Dariusz Jędrzejczyk * @see McpServer * @see McpSchema * @see DefaultMcpSession @@ -137,7 +138,7 @@ public class McpAsyncServer { Map> requestHandlers = new HashMap<>(); // Initialize request handlers for standard MCP methods - requestHandlers.put(McpSchema.METHOD_INITIALIZE, initializeRequestHandler()); + requestHandlers.put(McpSchema.METHOD_INITIALIZE, asyncInitializeRequestHandler()); // Ping MUST respond with an empty data, but not NULL response. requestHandlers.put(McpSchema.METHOD_PING, (params) -> Mono.just("")); @@ -287,6 +288,28 @@ public class McpAsyncServer { // --------------------------------------- // Lifecycle Management // --------------------------------------- + private DefaultMcpSession.RequestHandler asyncInitializeRequestHandler() { + return params -> { + McpSchema.InitializeRequest initializeRequest = transport.unmarshalFrom(params, + new TypeReference() { + }); + this.clientCapabilities = initializeRequest.capabilities(); + this.clientInfo = initializeRequest.clientInfo(); + logger.info("Client initialize request - Protocol: {}, Capabilities: {}, Info: {}", + initializeRequest.protocolVersion(), initializeRequest.capabilities(), + initializeRequest.clientInfo()); + + if (!McpSchema.LATEST_PROTOCOL_VERSION.equals(initializeRequest.protocolVersion())) { + return Mono.error(new McpError( + "Unsupported protocol version from client: " + initializeRequest.protocolVersion())); + } + + return Mono.just(new McpSchema.InitializeResult(McpSchema.LATEST_PROTOCOL_VERSION, this.serverCapabilities, + this.serverInfo, null)); + }; + } + + @Deprecated private DefaultMcpSession.RequestHandler initializeRequestHandler() { return params -> { McpSchema.InitializeRequest initializeRequest = transport.unmarshalFrom(params, @@ -360,7 +383,7 @@ public class McpAsyncServer { this.mcpSession.close(); } - private static TypeReference LIST_ROOTS_RESULT_TYPE_REF = new TypeReference<>() { + private static final TypeReference LIST_ROOTS_RESULT_TYPE_REF = new TypeReference<>() { }; /** @@ -399,6 +422,10 @@ public class McpAsyncServer { List, Mono>> rootsChangeConsumers) { return params -> listRoots().flatMap(listRootsResult -> Flux.fromIterable(rootsChangeConsumers) .flatMap(consumer -> consumer.apply(listRootsResult.roots())) + .onErrorResume(error -> { + logger.error("Error handling roots list change notification", error); + return Mono.empty(); + }) .then()); } @@ -654,7 +681,7 @@ public class McpAsyncServer { var resourceUri = resourceRequest.uri(); McpServerFeatures.AsyncResourceRegistration registration = this.resources.get(resourceUri); if (registration != null) { - return this.resources.get(resourceUri).readHandler().apply(resourceRequest); + return registration.readHandler().apply(resourceRequest); } return Mono.error(new McpError("Resource not found: " + resourceUri)); }; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java index 1fbf47b..615fd51 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java @@ -120,12 +120,37 @@ import org.springframework.ai.mcp.util.Assert; * }
    * * @author Christian Tzolov + * @author Dariusz Jędrzejczyk * @see McpAsyncServer * @see McpSyncServer * @see McpTransport */ public interface McpServer { + /** + * Starts building a synchronous MCP server that provides blocking operations. + * Synchronous servers process each request to completion before handling the next + * one, making them simpler to implement but potentially less performant for + * concurrent operations. + * @param transport The transport layer implementation for MCP communication + * @return A new instance of {@link SyncSpec} for configuring the server. + */ + static SyncSpec sync(ServerMcpTransport transport) { + return new SyncSpec(transport); + } + + /** + * Starts building an asynchronous MCP server that provides blocking operations. + * Asynchronous servers can handle multiple requests concurrently using a functional + * paradigm with non-blocking server transports, making them more efficient for + * high-concurrency scenarios but more complex to implement. + * @param transport The transport layer implementation for MCP communication + * @return A new instance of {@link SyncSpec} for configuring the server. + */ + static AsyncSpec async(ServerMcpTransport transport) { + return new AsyncSpec(transport); + } + /** * Start building an MCP server with the specified transport. * @param transport The transport layer implementation for MCP communication @@ -170,7 +195,7 @@ public interface McpServer { */ private final Map resources = new HashMap<>(); - private List resourceTemplates = new ArrayList<>(); + private final List resourceTemplates = new ArrayList<>(); /** * The Model Context Protocol (MCP) provides a standardized way for servers to @@ -547,7 +572,7 @@ public interface McpServer { */ private final Map resources = new HashMap<>(); - private List resourceTemplates = new ArrayList<>(); + private final List resourceTemplates = new ArrayList<>(); /** * The Model Context Protocol (MCP) provides a standardized way for servers to @@ -556,9 +581,9 @@ public interface McpServer { * discover available prompts, retrieve their contents, and provide arguments to * customize them. */ - private Map prompts = new HashMap<>(); + private final Map prompts = new HashMap<>(); - private List>> rootsChangeConsumers = new ArrayList<>(); + private final List>> rootsChangeConsumers = new ArrayList<>(); private SyncSpec(ServerMcpTransport transport) { Assert.notNull(transport, "Transport must not be null"); @@ -895,28 +920,6 @@ public interface McpServer { } - /** - * Builds a synchronous MCP server that provides blocking operations. Synchronous - * servers process each request to completion before handling the next one, making - * them simpler to implement but potentially less performant for concurrent - * operations. - * @return A new instance of {@link SyncSpec} for configuring the server. - */ - static SyncSpec sync(ServerMcpTransport transport) { - return new SyncSpec(transport); - } - - /** - * Builds an asynchronous MCP server that provides non-blocking operations. - * Asynchronous servers can handle multiple requests concurrently using a functional - * paradigm with non-blocking server transports, making them more efficient for - * high-concurrency scenarios but more complex to implement. - * @return A new instance of {@link SyncSpec} for configuring the server. - */ - static AsyncSpec async(ServerMcpTransport transport) { - return new AsyncSpec(transport); - } - /** * Builder class for creating MCP servers with custom configuration. * diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java index 0faba95..2dd4e66 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java @@ -16,6 +16,8 @@ import org.springframework.ai.mcp.util.Utils; /** * MCP server features specification that a particular server can choose to support. + * + * @author Dariusz Jędrzejczyk */ public class McpServerFeatures { diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java index 97c949f..004f7a3 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java @@ -60,6 +60,7 @@ import org.springframework.ai.mcp.util.Assert; * connected clients of changes when configured to do so. * * @author Christian Tzolov + * @author Dariusz Jędrzejczyk * @see McpAsyncServer * @see McpSchema */ From 7359750cdbb15a39aec746cb422cfa2baf30771f Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 23 Jan 2025 14:05:32 +0100 Subject: [PATCH 073/505] Update 0.6.0-MIGRATION-GUIDE.md remove unrelated sections --- mcp-docs/0.6.0-MIGRATION-GUIDE.md | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/mcp-docs/0.6.0-MIGRATION-GUIDE.md b/mcp-docs/0.6.0-MIGRATION-GUIDE.md index 37592d0..2034273 100644 --- a/mcp-docs/0.6.0-MIGRATION-GUIDE.md +++ b/mcp-docs/0.6.0-MIGRATION-GUIDE.md @@ -237,22 +237,3 @@ The following APIs are deprecated and will be removed in a future release: - `McpServer.ResourceRegistration` - Use `McpServerFeatures.SyncResourceRegistration` or `McpServerFeatures.AsyncResourceRegistration` instead - `McpServer.PromptRegistration` - Use `McpServerFeatures.SyncPromptRegistration` or `McpServerFeatures.AsyncPromptRegistration` instead - `ToolHelper.toToolRegistration()` - Use `ToolHelper.toSyncToolRegistration()` instead - -## Benefits of Migration - -1. **Improved Type Safety**: The new builder patterns and feature classes provide better compile-time type checking. - -2. **Clear Async/Sync Separation**: Distinct builders and features for sync and async operations make the code intent clearer. - -3. **Enhanced Reactive Support**: Async operations now properly integrate with Project Reactor's `Mono` type. - -4. **Better Error Handling**: More consistent error handling across sync and async operations. - -5. **Simplified Configuration**: Builder patterns provide a more intuitive way to configure clients and servers. - -## Additional Notes - -- The migration primarily focuses on builder patterns and feature organization -- Functional behavior remains the same after migration -- Async operations now properly integrate with Project Reactor -- All deprecated APIs will continue to work but will be removed in a future release From a83f41381afc524411dd774564df1c24bb80b9ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dariusz=20J=C4=99drzejczyk?= Date: Thu, 23 Jan 2025 14:57:25 +0100 Subject: [PATCH 074/505] Align abstract tests in mcp-test with mcp-core (#70) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dariusz Jędrzejczyk --- ....java => AbstractMcpAsyncClientTests.java} | 2 +- ...s.java => AbstractMcpSyncClientTests.java} | 2 +- ....java => AbstractMcpAsyncServerTests.java} | 2 +- ...s.java => AbstractMcpSyncServerTests.java} | 3 +- .../transport/BlaBlockingInputStream.java | 81 ------------------- .../client/WebFluxSseMcpAsyncClientTests.java | 2 +- .../client/WebFluxSseMcpSyncClientTests.java | 2 +- .../server/WebFluxSseMcpAsyncServerTests.java | 2 +- .../server/WebFluxSseMcpSyncServerTests.java | 2 +- .../WebMvcSseAsyncServerTransportTests.java | 2 +- .../WebMvcSseSyncServerTransportTests.java | 2 +- .../client/AbstractMcpAsyncClientTests.java | 1 + .../client/AbstractMcpSyncClientTests.java | 1 + .../server/AbstractMcpAsyncServerTests.java | 1 + .../server/AbstractMcpSyncServerTests.java | 1 + 15 files changed, 14 insertions(+), 92 deletions(-) rename mcp-test/src/main/java/org/springframework/ai/mcp/client/{BlaAbstractMcpAsyncClientTests.java => AbstractMcpAsyncClientTests.java} (99%) rename mcp-test/src/main/java/org/springframework/ai/mcp/client/{BlaAbstractMcpSyncClientTests.java => AbstractMcpSyncClientTests.java} (99%) rename mcp-test/src/main/java/org/springframework/ai/mcp/server/{BlaAbstractMcpAsyncServerTests.java => AbstractMcpAsyncServerTests.java} (99%) rename mcp-test/src/main/java/org/springframework/ai/mcp/server/{BlaAbstractMcpSyncServerTests.java => AbstractMcpSyncServerTests.java} (99%) delete mode 100644 mcp-test/src/main/java/org/springframework/ai/mcp/server/transport/BlaBlockingInputStream.java diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java similarity index 99% rename from mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java rename to mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java index edceae9..2579f57 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpAsyncClientTests.java +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java @@ -54,7 +54,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; * @author Christian Tzolov * @author Dariusz Jędrzejczyk */ -public abstract class BlaAbstractMcpAsyncClientTests { +public abstract class AbstractMcpAsyncClientTests { private McpAsyncClient mcpAsyncClient; diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java similarity index 99% rename from mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java rename to mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java index 26e453c..c012612 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/client/BlaAbstractMcpSyncClientTests.java +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java @@ -50,7 +50,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; * @author Christian Tzolov * @author Dariusz Jędrzejczyk */ -public abstract class BlaAbstractMcpSyncClientTests { +public abstract class AbstractMcpSyncClientTests { private McpSyncClient mcpSyncClient; diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java similarity index 99% rename from mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java rename to mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java index 807bcc5..0c7c1aa 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpAsyncServerTests.java +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java @@ -48,7 +48,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; * * @author Christian Tzolov */ -public abstract class BlaAbstractMcpAsyncServerTests { +public abstract class AbstractMcpAsyncServerTests { private static final String TEST_TOOL_NAME = "test-tool"; diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java b/mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java similarity index 99% rename from mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java rename to mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java index 415f08e..ddb827a 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/server/BlaAbstractMcpSyncServerTests.java +++ b/mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java @@ -17,7 +17,6 @@ package org.springframework.ai.mcp.server; import java.util.List; -import java.util.Map; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -46,7 +45,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; * * @author Christian Tzolov */ -public abstract class BlaAbstractMcpSyncServerTests { +public abstract class AbstractMcpSyncServerTests { private static final String TEST_TOOL_NAME = "test-tool"; diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/server/transport/BlaBlockingInputStream.java b/mcp-test/src/main/java/org/springframework/ai/mcp/server/transport/BlaBlockingInputStream.java deleted file mode 100644 index 270eaae..0000000 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/server/transport/BlaBlockingInputStream.java +++ /dev/null @@ -1,81 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.server.transport; - -import java.io.IOException; -import java.io.InputStream; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; - -public class BlaBlockingInputStream extends InputStream { - - private final BlockingQueue queue = new LinkedBlockingQueue<>(); - - private volatile boolean completed = false; - - private volatile boolean closed = false; - - @Override - public int read() throws IOException { - if (closed) { - throw new IOException("Stream is closed"); - } - - try { - Integer value = queue.poll(); - if (value == null) { - if (completed) { - return -1; - } - value = queue.take(); // Blocks until data is available - if (value == null && completed) { - return -1; - } - } - return value; - } - catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new IOException("Read interrupted", e); - } - } - - public void write(int b) { - if (!closed && !completed) { - queue.offer(b); - } - } - - public void write(byte[] data) { - if (!closed && !completed) { - for (byte b : data) { - queue.offer((int) b & 0xFF); - } - } - } - - public void complete() { - this.completed = true; - } - - @Override - public void close() { - this.closed = true; - this.completed = true; - this.queue.clear(); - } - -} \ No newline at end of file diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java index 0a15af2..761dd6a 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java @@ -30,7 +30,7 @@ import org.springframework.web.reactive.function.client.WebClient; * @author Christian Tzolov */ @Timeout(15) // Giving extra time beyond the client timeout -class WebFluxSseMcpAsyncClientTests extends BlaAbstractMcpAsyncClientTests { +class WebFluxSseMcpAsyncClientTests extends AbstractMcpAsyncClientTests { static String host = "http://localhost:3001"; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java index 2e1a4d9..41153af 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java @@ -30,7 +30,7 @@ import org.springframework.web.reactive.function.client.WebClient; * @author Christian Tzolov */ @Timeout(15) // Giving extra time beyond the client timeout -class WebFluxSseMcpSyncClientTests extends BlaAbstractMcpSyncClientTests { +class WebFluxSseMcpSyncClientTests extends AbstractMcpSyncClientTests { static String host = "http://localhost:3001"; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java index 753216a..b90c9a5 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java @@ -33,7 +33,7 @@ import org.springframework.web.reactive.function.server.RouterFunctions; * @author Christian Tzolov */ @Timeout(15) // Giving extra time beyond the client timeout -class WebFluxSseMcpAsyncServerTests extends BlaAbstractMcpAsyncServerTests { +class WebFluxSseMcpAsyncServerTests extends AbstractMcpAsyncServerTests { private static final int PORT = 8181; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java index 097ed77..048d639 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java @@ -33,7 +33,7 @@ import org.springframework.web.reactive.function.server.RouterFunctions; * @author Christian Tzolov */ @Timeout(15) // Giving extra time beyond the client timeout -class WebFluxSseMcpSyncServerTests extends BlaAbstractMcpSyncServerTests { +class WebFluxSseMcpSyncServerTests extends AbstractMcpSyncServerTests { private static final int PORT = 8182; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java index 18dcd16..374a5c5 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java @@ -33,7 +33,7 @@ import org.springframework.web.servlet.function.RouterFunction; import org.springframework.web.servlet.function.ServerResponse; @Timeout(15) -class WebMvcSseAsyncServerTransportTests extends BlaAbstractMcpAsyncServerTests { +class WebMvcSseAsyncServerTransportTests extends AbstractMcpAsyncServerTests { private static final String MESSAGE_ENDPOINT = "/mcp/message"; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java index fb3926d..2c44c57 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java @@ -33,7 +33,7 @@ import org.springframework.web.servlet.function.RouterFunction; import org.springframework.web.servlet.function.ServerResponse; @Timeout(15) -class WebMvcSseSyncServerTransportTests extends BlaAbstractMcpSyncServerTests { +class WebMvcSseSyncServerTransportTests extends AbstractMcpSyncServerTests { private static final String MESSAGE_ENDPOINT = "/mcp/message"; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java index 2579f57..0d7fd0b 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java @@ -54,6 +54,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; * @author Christian Tzolov * @author Dariusz Jędrzejczyk */ +// KEEP IN SYNC with the class in mcp-test module public abstract class AbstractMcpAsyncClientTests { private McpAsyncClient mcpAsyncClient; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java index c012612..c046b9e 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java @@ -50,6 +50,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; * @author Christian Tzolov * @author Dariusz Jędrzejczyk */ +// KEEP IN SYNC with the class in mcp-test module public abstract class AbstractMcpSyncClientTests { private McpSyncClient mcpSyncClient; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java index 0c7c1aa..869d34a 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java @@ -48,6 +48,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; * * @author Christian Tzolov */ +// KEEP IN SYNC with the class in mcp-test module public abstract class AbstractMcpAsyncServerTests { private static final String TEST_TOOL_NAME = "test-tool"; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java index ddb827a..f627bdc 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java @@ -45,6 +45,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; * * @author Christian Tzolov */ +// KEEP IN SYNC with the class in mcp-test module public abstract class AbstractMcpSyncServerTests { private static final String TEST_TOOL_NAME = "test-tool"; From 516da0bada0c408a1f57c5348d4504016ca28f3a Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 23 Jan 2025 18:06:21 +0100 Subject: [PATCH 075/505] minor migration gide update --- mcp-docs/0.6.0-MIGRATION-GUIDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcp-docs/0.6.0-MIGRATION-GUIDE.md b/mcp-docs/0.6.0-MIGRATION-GUIDE.md index 2034273..8f3b157 100644 --- a/mcp-docs/0.6.0-MIGRATION-GUIDE.md +++ b/mcp-docs/0.6.0-MIGRATION-GUIDE.md @@ -1,4 +1,4 @@ -# Spring AI MCP 0.5.0 Migration Guide +# Spring AI MCP 0.6.0 Migration Guide This guide outlines the steps required to migrate your code to Spring AI MCP 0.6.0. From 48ab97bf237795c2f5ba1ee37351fa225d3dafb6 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 24 Jan 2025 13:08:41 +0100 Subject: [PATCH 076/505] fix(transport): Add cleanup logic for inbound processing in StdioServerTransport Resolves #72 Signed-off-by: Christian Tzolov --- .../transport/StdioServerTransport.java | 91 ++++++++++--------- 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java index 5f8e78b..e9b88d2 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java @@ -118,6 +118,11 @@ public class StdioServerTransport implements ServerMcpTransport { .flatMap(message -> Mono.just(message) .transform(inboundMessageHandler) .contextWrite(ctx -> ctx.put("observation", "myObservation"))) + .doOnComplete(() -> { + this.outboundSink.tryEmitComplete(); + this.inboundScheduler.dispose(); + this.outboundScheduler.dispose(); + }) .subscribe(); } @@ -184,51 +189,51 @@ public class StdioServerTransport implements ServerMcpTransport { */ private void startOutboundProcessing() { Function, Flux> outboundConsumer = messages -> messages // @formatter:off - .doOnSubscribe(subscription -> outboundReady.tryEmitValue(null)) - .publishOn(outboundScheduler) - .handle((message, sink) -> { - if (message != null && !isClosing) { - try { - String jsonMessage = objectMapper.writeValueAsString(message); - // Escape any embedded newlines in the JSON message as per spec - jsonMessage = jsonMessage.replace("\r\n", "\\n").replace("\n", "\\n").replace("\r", "\\n"); + .doOnSubscribe(subscription -> outboundReady.tryEmitValue(null)) + .publishOn(outboundScheduler) + .handle((message, sink) -> { + if (message != null && !isClosing) { + try { + String jsonMessage = objectMapper.writeValueAsString(message); + // Escape any embedded newlines in the JSON message as per spec + jsonMessage = jsonMessage.replace("\r\n", "\\n").replace("\n", "\\n").replace("\r", "\\n"); - synchronized (outputStream) { - outputStream.write(jsonMessage.getBytes(StandardCharsets.UTF_8)); - outputStream.write("\n".getBytes(StandardCharsets.UTF_8)); - outputStream.flush(); - } - sink.next(message); - } - catch (IOException e) { - if (!isClosing) { - logger.error("Error writing message", e); - sink.error(new RuntimeException(e)); - } - else { - logger.debug("Stream closed during shutdown", e); - } - } - } - else if (isClosing) { - sink.complete(); - } - }) - .doOnComplete(() -> { - isClosing = true; - outboundSink.tryEmitComplete(); - }) - .doOnError(e -> { - if (!isClosing) { - logger.error("Error in outbound processing", e); - isClosing = true; - outboundSink.tryEmitComplete(); - } - }) - .map(msg -> (JSONRPCMessage) msg); + synchronized (outputStream) { + outputStream.write(jsonMessage.getBytes(StandardCharsets.UTF_8)); + outputStream.write("\n".getBytes(StandardCharsets.UTF_8)); + outputStream.flush(); + } + sink.next(message); + } + catch (IOException e) { + if (!isClosing) { + logger.error("Error writing message", e); + sink.error(new RuntimeException(e)); + } + else { + logger.debug("Stream closed during shutdown", e); + } + } + } + else if (isClosing) { + sink.complete(); + } + }) + .doOnComplete(() -> { + isClosing = true; + outboundSink.tryEmitComplete(); + }) + .doOnError(e -> { + if (!isClosing) { + logger.error("Error in outbound processing", e); + isClosing = true; + outboundSink.tryEmitComplete(); + } + }) + .map(msg -> (JSONRPCMessage) msg); - outboundConsumer.apply(outboundSink.asFlux()).subscribe(); - } // @formatter:on + outboundConsumer.apply(outboundSink.asFlux()).subscribe(); + } // @formatter:on @Override public Mono closeGracefully() { From a424b3665373ddb03df71a6cfb3f8b8cdb7a3099 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 24 Jan 2025 12:59:30 +0100 Subject: [PATCH 077/505] feat: Add protocol version negotiation Implement protocol version negotiation between MCP client and server to ensure compatibility and graceful version handling. The server will now suggest the latest supported version when an unsupported version is requested, while the client will verify version compatibility during initialization. - Support multiple protocol versions in both client and server - Negotiate compatible version during initialization - Fall back to latest version when unsupported version requested - Add comprehensive test coverage for version negotiation Resolves #71 Signed-off-by: Christian Tzolov --- .../ai/mcp/client/McpAsyncClient.java | 23 ++- .../ai/mcp/client/McpClientFeatures.java | 3 - .../ai/mcp/server/McpAsyncServer.java | 30 +++- .../springframework/ai/mcp/util/Assert.java | 16 +- .../ai/mcp/MockMcpTransport.java | 8 +- .../McpAsyncClientResponseHandlerTests.java | 1 - .../client/McpClientProtocolVersionTests.java | 170 ++++++++++++++++++ .../server/McpServerProtocolVersionTests.java | 132 ++++++++++++++ 8 files changed, 370 insertions(+), 13 deletions(-) create mode 100644 mcp/src/test/java/org/springframework/ai/mcp/client/McpClientProtocolVersionTests.java create mode 100644 mcp/src/test/java/org/springframework/ai/mcp/server/McpServerProtocolVersionTests.java diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java index 5d82881..7f6ccc1 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java @@ -146,6 +146,11 @@ public class McpAsyncClient { */ private final McpTransport transport; + /** + * Supported protocol versions. + */ + private List protocolVersions = List.of(McpSchema.LATEST_PROTOCOL_VERSION); + /** * Create a new McpAsyncClient with the given transport and session request-response * timeout. @@ -257,6 +262,8 @@ public class McpAsyncClient { Assert.notNull(requestTimeout, "Request timeout must not be null"); Assert.notNull(clientInfo, "Client info must not be null"); + this.protocolVersions = List.of(McpSchema.LATEST_PROTOCOL_VERSION); + this.clientInfo = clientInfo; this.clientCapabilities = (clientCapabilities != null) ? clientCapabilities @@ -360,8 +367,11 @@ public class McpAsyncClient { * @return the initialize result. */ public Mono initialize() { + + String latestVersion = this.protocolVersions.get(this.protocolVersions.size() - 1); + McpSchema.InitializeRequest initializeRequest = new McpSchema.InitializeRequest(// @formatter:off - McpSchema.LATEST_PROTOCOL_VERSION, + latestVersion, this.clientCapabilities, this.clientInfo); // @formatter:on @@ -378,7 +388,7 @@ public class McpAsyncClient { initializeResult.protocolVersion(), initializeResult.capabilities(), initializeResult.serverInfo(), initializeResult.instructions()); - if (!McpSchema.LATEST_PROTOCOL_VERSION.equals(initializeResult.protocolVersion())) { + if (!this.protocolVersions.contains(initializeResult.protocolVersion())) { return Mono.error(new McpError( "Unsupported protocol version from the server: " + initializeResult.protocolVersion())); } @@ -911,4 +921,13 @@ public class McpAsyncClient { return this.mcpSession.sendNotification(McpSchema.METHOD_LOGGING_SET_LEVEL, params); } + /** + * This method is package-private and used for test only. Should not be called by user + * code. + * @param protocolVersions the Client supported protocol versions. + */ + void setProtocolVersions(List protocolVersions) { + this.protocolVersions = protocolVersions; + } + } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java index 7d8bb17..05be98d 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java @@ -67,7 +67,6 @@ class McpClientFeatures { /** * Create an instance and validate the arguments. - * @param clientInfo the client implementation information. * @param clientCapabilities the client capabilities. * @param roots the roots. * @param toolsChangeConsumers the tools change consumers. @@ -85,7 +84,6 @@ class McpClientFeatures { Function> samplingHandler) { Assert.notNull(clientInfo, "Client info must not be null"); - this.clientInfo = clientInfo; this.clientCapabilities = (clientCapabilities != null) ? clientCapabilities : new McpSchema.ClientCapabilities(null, @@ -182,7 +180,6 @@ class McpClientFeatures { Function samplingHandler) { Assert.notNull(clientInfo, "Client info must not be null"); - this.clientInfo = clientInfo; this.clientCapabilities = (clientCapabilities != null) ? clientCapabilities : new McpSchema.ClientCapabilities(null, diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java index 8d406a5..00971b7 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java @@ -122,12 +122,18 @@ public class McpAsyncServer { private LoggingLevel minLoggingLevel = LoggingLevel.DEBUG; + /** + * Supported protocol versions. + */ + private List protocolVersions = List.of(McpSchema.LATEST_PROTOCOL_VERSION); + /** * Create a new McpAsyncServer with the given transport and capabilities. * @param mcpTransport The transport layer implementation for MCP communication. * @param features The MCP server supported features. */ McpAsyncServer(ServerMcpTransport mcpTransport, McpServerFeatures.Async features) { + this.serverInfo = features.serverInfo(); this.serverCapabilities = features.serverCapabilities(); this.tools.addAll(features.tools()); @@ -210,6 +216,7 @@ public class McpAsyncServer { Map resources, List resourceTemplates, Map prompts, List>> rootsChangeConsumers) { + this.protocolVersions = List.of(McpSchema.LATEST_PROTOCOL_VERSION); this.serverInfo = serverInfo; if (!Utils.isEmpty(tools)) { this.tools.addAll(McpServer.mapDeprecatedTools(tools)); @@ -299,12 +306,18 @@ public class McpAsyncServer { initializeRequest.protocolVersion(), initializeRequest.capabilities(), initializeRequest.clientInfo()); - if (!McpSchema.LATEST_PROTOCOL_VERSION.equals(initializeRequest.protocolVersion())) { - return Mono.error(new McpError( - "Unsupported protocol version from client: " + initializeRequest.protocolVersion())); + String serverProtocolVersion = this.protocolVersions.get(this.protocolVersions.size() - 1); + + if (this.protocolVersions.contains(initializeRequest.protocolVersion())) { + serverProtocolVersion = initializeRequest.protocolVersion(); + } + else { + logger.warn( + "Client requested unsupported protocol version: {}, so the server will sugggest the {} version instead", + initializeRequest.protocolVersion(), serverProtocolVersion); } - return Mono.just(new McpSchema.InitializeResult(McpSchema.LATEST_PROTOCOL_VERSION, this.serverCapabilities, + return Mono.just(new McpSchema.InitializeResult(serverProtocolVersion, this.serverCapabilities, this.serverInfo, null)); }; } @@ -903,4 +916,13 @@ public class McpAsyncServer { CREATE_MESSAGE_RESULT_TYPE_REF); } + /** + * This method is package-private and used for test only. Should not be called by user + * code. + * @param protocolVersions the Client supported protocol versions. + */ + void setProtocolVersions(List protocolVersions) { + this.protocolVersions = protocolVersions; + } + } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java b/mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java index 8d4ea23..0dc1fc1 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java @@ -16,11 +16,13 @@ package org.springframework.ai.mcp.util; +import java.util.Collection; + import reactor.util.annotation.Nullable; /** * Assertion utility class that assists in validating arguments. - * + * * @author Christian Tzolov */ @@ -29,6 +31,18 @@ import reactor.util.annotation.Nullable; */ public final class Assert { + /** + * Assert that the collection is not {@code null} and not empty. + * @param collection the collection to check + * @param message the exception message to use if the assertion fails + * @throws IllegalArgumentException if the collection is {@code null} or empty + */ + public static void notEmpty(@Nullable Collection collection, String message) { + if (collection == null || collection.isEmpty()) { + throw new IllegalArgumentException(message); + } + } + /** * Assert that an object is not {@code null}. * diff --git a/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java b/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java index 20736b1..1622418 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java @@ -32,7 +32,10 @@ import org.springframework.ai.mcp.spec.McpSchema.JSONRPCNotification; import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; import org.springframework.ai.mcp.spec.ServerMcpTransport; -@SuppressWarnings("unused") +/** + * A mock implementation of the {@link ClientMcpTransport} and {@link ServerMcpTransport} + * interfaces. + */ public class MockMcpTransport implements ClientMcpTransport, ServerMcpTransport { private final AtomicInteger inboundMessageCount = new AtomicInteger(0); @@ -91,6 +94,7 @@ public class MockMcpTransport implements ClientMcpTransport, ServerMcpTransport connected = false; outgoing.tryEmitComplete(); inbound.tryEmitComplete(); + // Wait for all subscribers to complete return Mono.empty(); }); } @@ -100,4 +104,4 @@ public class MockMcpTransport implements ClientMcpTransport, ServerMcpTransport return new ObjectMapper().convertValue(data, typeRef); } -} \ No newline at end of file +} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java index 2922bf0..c5b0ec8 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java @@ -20,7 +20,6 @@ import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.function.Consumer; import java.util.function.Function; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpClientProtocolVersionTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/McpClientProtocolVersionTests.java new file mode 100644 index 0000000..7a0be90 --- /dev/null +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/McpClientProtocolVersionTests.java @@ -0,0 +1,170 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.client; + +import java.time.Duration; +import java.util.List; + +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import org.springframework.ai.mcp.MockMcpTransport; +import org.springframework.ai.mcp.spec.McpError; +import org.springframework.ai.mcp.spec.McpSchema; +import org.springframework.ai.mcp.spec.McpSchema.InitializeResult; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for MCP protocol version negotiation and compatibility. + */ +class McpClientProtocolVersionTests { + + private static final Duration REQUEST_TIMEOUT = Duration.ofSeconds(30); + + private static final McpSchema.Implementation CLIENT_INFO = new McpSchema.Implementation("test-client", "1.0.0"); + + @Test + void shouldUseLatestVersionByDefault() { + MockMcpTransport transport = new MockMcpTransport(); + McpAsyncClient client = McpClient.async(transport) + .clientInfo(CLIENT_INFO) + .requestTimeout(REQUEST_TIMEOUT) + .build(); + + try { + Mono initializeResultMono = client.initialize(); + + StepVerifier.create(initializeResultMono).then(() -> { + McpSchema.JSONRPCRequest request = transport.getLastSentMessageAsRequest(); + assertThat(request.params()).isInstanceOf(McpSchema.InitializeRequest.class); + McpSchema.InitializeRequest initRequest = (McpSchema.InitializeRequest) request.params(); + assertThat(initRequest.protocolVersion()).isEqualTo(McpSchema.LATEST_PROTOCOL_VERSION); + + transport.simulateIncomingMessage(new McpSchema.JSONRPCResponse(McpSchema.JSONRPC_VERSION, request.id(), + new McpSchema.InitializeResult(McpSchema.LATEST_PROTOCOL_VERSION, null, + new McpSchema.Implementation("test-server", "1.0.0"), null), + null)); + }).assertNext(result -> { + assertThat(result.protocolVersion()).isEqualTo(McpSchema.LATEST_PROTOCOL_VERSION); + }).verifyComplete(); + + } + finally { + // Ensure cleanup happens even if test fails + StepVerifier.create(client.closeGracefully()).verifyComplete(); + } + } + + @Test + void shouldNegotiateSpecificVersion() { + String oldVersion = "0.1.0"; + MockMcpTransport transport = new MockMcpTransport(); + McpAsyncClient client = McpClient.async(transport) + .clientInfo(CLIENT_INFO) + .requestTimeout(REQUEST_TIMEOUT) + .build(); + + client.setProtocolVersions(List.of(oldVersion, McpSchema.LATEST_PROTOCOL_VERSION)); + + try { + Mono initializeResultMono = client.initialize(); + + StepVerifier.create(initializeResultMono).then(() -> { + McpSchema.JSONRPCRequest request = transport.getLastSentMessageAsRequest(); + assertThat(request.params()).isInstanceOf(McpSchema.InitializeRequest.class); + McpSchema.InitializeRequest initRequest = (McpSchema.InitializeRequest) request.params(); + assertThat(initRequest.protocolVersion()).isIn(List.of(oldVersion, McpSchema.LATEST_PROTOCOL_VERSION)); + + transport.simulateIncomingMessage(new McpSchema.JSONRPCResponse(McpSchema.JSONRPC_VERSION, request.id(), + new McpSchema.InitializeResult(oldVersion, null, + new McpSchema.Implementation("test-server", "1.0.0"), null), + null)); + }).assertNext(result -> { + assertThat(result.protocolVersion()).isEqualTo(oldVersion); + }).verifyComplete(); + } + finally { + StepVerifier.create(client.closeGracefully()).verifyComplete(); + } + } + + @Test + void shouldFailForUnsupportedVersion() { + String unsupportedVersion = "999.999.999"; + MockMcpTransport transport = new MockMcpTransport(); + McpAsyncClient client = McpClient.async(transport) + .clientInfo(CLIENT_INFO) + .requestTimeout(REQUEST_TIMEOUT) + .build(); + + try { + Mono initializeResultMono = client.initialize(); + + StepVerifier.create(initializeResultMono).then(() -> { + McpSchema.JSONRPCRequest request = transport.getLastSentMessageAsRequest(); + assertThat(request.params()).isInstanceOf(McpSchema.InitializeRequest.class); + + transport.simulateIncomingMessage(new McpSchema.JSONRPCResponse(McpSchema.JSONRPC_VERSION, request.id(), + new McpSchema.InitializeResult(unsupportedVersion, null, + new McpSchema.Implementation("test-server", "1.0.0"), null), + null)); + }).expectError(McpError.class).verify(); + } + finally { + StepVerifier.create(client.closeGracefully()).verifyComplete(); + } + } + + @Test + void shouldUseHighestVersionWhenMultipleSupported() { + String oldVersion = "0.1.0"; + String middleVersion = "0.2.0"; + String latestVersion = McpSchema.LATEST_PROTOCOL_VERSION; + + MockMcpTransport transport = new MockMcpTransport(); + McpAsyncClient client = McpClient.async(transport) + .clientInfo(CLIENT_INFO) + .requestTimeout(REQUEST_TIMEOUT) + .build(); + + client.setProtocolVersions(List.of(oldVersion, middleVersion, latestVersion)); + + try { + Mono initializeResultMono = client.initialize(); + + StepVerifier.create(initializeResultMono).then(() -> { + McpSchema.JSONRPCRequest request = transport.getLastSentMessageAsRequest(); + McpSchema.InitializeRequest initRequest = (McpSchema.InitializeRequest) request.params(); + assertThat(initRequest.protocolVersion()).isEqualTo(latestVersion); + + transport.simulateIncomingMessage(new McpSchema.JSONRPCResponse(McpSchema.JSONRPC_VERSION, request.id(), + new McpSchema.InitializeResult(latestVersion, null, + new McpSchema.Implementation("test-server", "1.0.0"), null), + null)); + }).assertNext(result -> { + assertThat(result.protocolVersion()).isEqualTo(latestVersion); + }).verifyComplete(); + } + finally { + StepVerifier.create(client.closeGracefully()).verifyComplete(); + } + + } + +} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/McpServerProtocolVersionTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/McpServerProtocolVersionTests.java new file mode 100644 index 0000000..f557921 --- /dev/null +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/McpServerProtocolVersionTests.java @@ -0,0 +1,132 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.server; + +import java.util.List; +import java.util.UUID; + +import org.junit.jupiter.api.Test; + +import org.springframework.ai.mcp.MockMcpTransport; +import org.springframework.ai.mcp.spec.McpSchema; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for MCP server protocol version negotiation and compatibility. + */ +class McpServerProtocolVersionTests { + + private static final McpSchema.Implementation SERVER_INFO = new McpSchema.Implementation("test-server", "1.0.0"); + + private static final McpSchema.Implementation CLIENT_INFO = new McpSchema.Implementation("test-client", "1.0.0"); + + private McpSchema.JSONRPCRequest jsonRpcInitializeRequest(String requestId, String protocolVersion) { + return new McpSchema.JSONRPCRequest(McpSchema.JSONRPC_VERSION, McpSchema.METHOD_INITIALIZE, requestId, + new McpSchema.InitializeRequest(protocolVersion, null, CLIENT_INFO)); + } + + @Test + void shouldUseLatestVersionByDefault() { + MockMcpTransport transport = new MockMcpTransport(); + McpAsyncServer server = McpServer.async(transport).serverInfo(SERVER_INFO).build(); + + String requestId = UUID.randomUUID().toString(); + + transport.simulateIncomingMessage(jsonRpcInitializeRequest(requestId, McpSchema.LATEST_PROTOCOL_VERSION)); + + McpSchema.JSONRPCMessage response = transport.getLastSentMessage(); + assertThat(response).isInstanceOf(McpSchema.JSONRPCResponse.class); + McpSchema.JSONRPCResponse jsonResponse = (McpSchema.JSONRPCResponse) response; + assertThat(jsonResponse.id()).isEqualTo(requestId); + assertThat(jsonResponse.result()).isInstanceOf(McpSchema.InitializeResult.class); + McpSchema.InitializeResult result = (McpSchema.InitializeResult) jsonResponse.result(); + assertThat(result.protocolVersion()).isEqualTo(McpSchema.LATEST_PROTOCOL_VERSION); + + server.closeGracefully().subscribe(); + } + + @Test + void shouldNegotiateSpecificVersion() { + String oldVersion = "0.1.0"; + MockMcpTransport transport = new MockMcpTransport(); + McpAsyncServer server = McpServer.async(transport).serverInfo(SERVER_INFO).build(); + + server.setProtocolVersions(List.of(oldVersion, McpSchema.LATEST_PROTOCOL_VERSION)); + + String requestId = UUID.randomUUID().toString(); + + transport.simulateIncomingMessage(jsonRpcInitializeRequest(requestId, oldVersion)); + + McpSchema.JSONRPCMessage response = transport.getLastSentMessage(); + assertThat(response).isInstanceOf(McpSchema.JSONRPCResponse.class); + McpSchema.JSONRPCResponse jsonResponse = (McpSchema.JSONRPCResponse) response; + assertThat(jsonResponse.id()).isEqualTo(requestId); + assertThat(jsonResponse.result()).isInstanceOf(McpSchema.InitializeResult.class); + McpSchema.InitializeResult result = (McpSchema.InitializeResult) jsonResponse.result(); + assertThat(result.protocolVersion()).isEqualTo(oldVersion); + + server.closeGracefully().subscribe(); + } + + @Test + void shouldSuggestLatestVersionForUnsupportedVersion() { + String unsupportedVersion = "999.999.999"; + MockMcpTransport transport = new MockMcpTransport(); + McpAsyncServer server = McpServer.async(transport).serverInfo(SERVER_INFO).build(); + + String requestId = UUID.randomUUID().toString(); + + transport.simulateIncomingMessage(jsonRpcInitializeRequest(requestId, unsupportedVersion)); + + McpSchema.JSONRPCMessage response = transport.getLastSentMessage(); + assertThat(response).isInstanceOf(McpSchema.JSONRPCResponse.class); + McpSchema.JSONRPCResponse jsonResponse = (McpSchema.JSONRPCResponse) response; + assertThat(jsonResponse.id()).isEqualTo(requestId); + assertThat(jsonResponse.result()).isInstanceOf(McpSchema.InitializeResult.class); + McpSchema.InitializeResult result = (McpSchema.InitializeResult) jsonResponse.result(); + assertThat(result.protocolVersion()).isEqualTo(McpSchema.LATEST_PROTOCOL_VERSION); + + server.closeGracefully().subscribe(); + } + + @Test + void shouldUseHighestVersionWhenMultipleSupported() { + String oldVersion = "0.1.0"; + String middleVersion = "0.2.0"; + String latestVersion = McpSchema.LATEST_PROTOCOL_VERSION; + + MockMcpTransport transport = new MockMcpTransport(); + McpAsyncServer server = McpServer.async(transport).serverInfo(SERVER_INFO).build(); + + server.setProtocolVersions(List.of(oldVersion, middleVersion, latestVersion)); + + String requestId = UUID.randomUUID().toString(); + transport.simulateIncomingMessage(jsonRpcInitializeRequest(requestId, latestVersion)); + + McpSchema.JSONRPCMessage response = transport.getLastSentMessage(); + assertThat(response).isInstanceOf(McpSchema.JSONRPCResponse.class); + McpSchema.JSONRPCResponse jsonResponse = (McpSchema.JSONRPCResponse) response; + assertThat(jsonResponse.id()).isEqualTo(requestId); + assertThat(jsonResponse.result()).isInstanceOf(McpSchema.InitializeResult.class); + McpSchema.InitializeResult result = (McpSchema.InitializeResult) jsonResponse.result(); + assertThat(result.protocolVersion()).isEqualTo(latestVersion); + + server.closeGracefully().subscribe(); + } + +} From d75adb68c7b9b7f80b90934511f497fdb2582721 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 24 Jan 2025 18:25:35 +0100 Subject: [PATCH 078/505] feat(sse): expand accepted HTTP status codes for SSE stream connection Accept HTTP status codes 200, 201, 202, and 206 as valid responses for SSE stream connection. Improves error message to include actual status code. Removes unused main method. Resolves #68 --- .../mcp/client/transport/FlowSseClient.java | 31 ++----------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java index 3fa932a..4b6191d 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java +++ b/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java @@ -198,8 +198,9 @@ public class FlowSseClient { info -> subscriberFactory.apply(lineSubscriber)); future.thenAccept(response -> { - if (response.statusCode() != 200) { - throw new RuntimeException("Failed to connect to SSE stream: " + response.statusCode()); + int status = response.statusCode(); + if (status != 200 && status != 201 && status != 202 && status != 206) { + throw new RuntimeException("Failed to connect to SSE stream. Unexpected status code: " + status); } }).exceptionally(throwable -> { eventHandler.onError(throwable); @@ -207,30 +208,4 @@ public class FlowSseClient { }); } - // public static void main(String[] args) { - - // FlowSseClient sseClient = new FlowSseClient( - // HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build()); - - // var eventHandler = new SSEEventHandler() { - // @Override - // public void onEvent(SSEEvent event) { - // System.out.println("Received event: " + event); - // } - - // @Override - // public void onError(Throwable error) { - // System.out.println("Error: " + error); - // } - // }; - // sseClient.subscribe("http://localhost:8080/sse", eventHandler); - - // try { - // Thread.sleep(100000); - // } - // catch (InterruptedException e) { - // e.printStackTrace(); - // } - // } - } From e7505ba24714694dd034934ff6d417ff2b1f0ee4 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 24 Jan 2025 18:39:38 +0100 Subject: [PATCH 079/505] Release version 0.6.0 --- mcp-bom/pom.xml | 2 +- mcp-docs/pom.xml | 2 +- mcp-test/pom.xml | 4 ++-- mcp-transport/mcp-webflux-sse-transport/pom.xml | 6 +++--- mcp-transport/mcp-webmvc-sse-transport/pom.xml | 6 +++--- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/mcp-bom/pom.xml b/mcp-bom/pom.xml index b418d0c..9abd5eb 100644 --- a/mcp-bom/pom.xml +++ b/mcp-bom/pom.xml @@ -7,7 +7,7 @@ org.springframework.experimental mcp-parent - 0.6.0-SNAPSHOT + 0.6.0 mcp-bom diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index 0967cb1..9f0d61b 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental mcp-parent - 0.6.0-SNAPSHOT + 0.6.0 mcp-docs Spring AI MCP Docs diff --git a/mcp-test/pom.xml b/mcp-test/pom.xml index 6ca4339..212003a 100644 --- a/mcp-test/pom.xml +++ b/mcp-test/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0-SNAPSHOT + 0.6.0 mcp-test jar @@ -24,7 +24,7 @@ org.springframework.experimental mcp - 0.6.0-SNAPSHOT + 0.6.0 diff --git a/mcp-transport/mcp-webflux-sse-transport/pom.xml b/mcp-transport/mcp-webflux-sse-transport/pom.xml index fd51d01..df23747 100644 --- a/mcp-transport/mcp-webflux-sse-transport/pom.xml +++ b/mcp-transport/mcp-webflux-sse-transport/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0-SNAPSHOT + 0.6.0 ../../pom.xml mcp-webflux-sse-transport @@ -25,13 +25,13 @@ org.springframework.experimental mcp - 0.6.0-SNAPSHOT + 0.6.0 org.springframework.experimental mcp-test - 0.6.0-SNAPSHOT + 0.6.0 test diff --git a/mcp-transport/mcp-webmvc-sse-transport/pom.xml b/mcp-transport/mcp-webmvc-sse-transport/pom.xml index 9d24d95..95c7df1 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/pom.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0-SNAPSHOT + 0.6.0 ../../pom.xml mcp-webmvc-sse-transport @@ -25,13 +25,13 @@ org.springframework.experimental mcp - 0.6.0-SNAPSHOT + 0.6.0 org.springframework.experimental mcp-test - 0.6.0-SNAPSHOT + 0.6.0 test diff --git a/mcp/pom.xml b/mcp/pom.xml index f8e5c20..3febfbf 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0-SNAPSHOT + 0.6.0 mcp jar diff --git a/pom.xml b/pom.xml index 2d583ca..d750215 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0-SNAPSHOT + 0.6.0 pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index 7d31418..ab74c04 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0-SNAPSHOT + 0.6.0 spring-ai-mcp Spring AI MCP From dd64cd88c23c0210b939db2f180476ec54ae1715 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 24 Jan 2025 18:40:03 +0100 Subject: [PATCH 080/505] Next development version --- mcp-bom/pom.xml | 2 +- mcp-docs/pom.xml | 2 +- mcp-test/pom.xml | 4 ++-- mcp-transport/mcp-webflux-sse-transport/pom.xml | 6 +++--- mcp-transport/mcp-webmvc-sse-transport/pom.xml | 6 +++--- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/mcp-bom/pom.xml b/mcp-bom/pom.xml index 9abd5eb..23e86ad 100644 --- a/mcp-bom/pom.xml +++ b/mcp-bom/pom.xml @@ -7,7 +7,7 @@ org.springframework.experimental mcp-parent - 0.6.0 + 0.7.0-SNAPSHOT mcp-bom diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index 9f0d61b..c1a7de1 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental mcp-parent - 0.6.0 + 0.7.0-SNAPSHOT mcp-docs Spring AI MCP Docs diff --git a/mcp-test/pom.xml b/mcp-test/pom.xml index 212003a..802ace2 100644 --- a/mcp-test/pom.xml +++ b/mcp-test/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0 + 0.7.0-SNAPSHOT mcp-test jar @@ -24,7 +24,7 @@ org.springframework.experimental mcp - 0.6.0 + 0.7.0-SNAPSHOT diff --git a/mcp-transport/mcp-webflux-sse-transport/pom.xml b/mcp-transport/mcp-webflux-sse-transport/pom.xml index df23747..54c73fd 100644 --- a/mcp-transport/mcp-webflux-sse-transport/pom.xml +++ b/mcp-transport/mcp-webflux-sse-transport/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0 + 0.7.0-SNAPSHOT ../../pom.xml mcp-webflux-sse-transport @@ -25,13 +25,13 @@ org.springframework.experimental mcp - 0.6.0 + 0.7.0-SNAPSHOT org.springframework.experimental mcp-test - 0.6.0 + 0.7.0-SNAPSHOT test diff --git a/mcp-transport/mcp-webmvc-sse-transport/pom.xml b/mcp-transport/mcp-webmvc-sse-transport/pom.xml index 95c7df1..7957e60 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/pom.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0 + 0.7.0-SNAPSHOT ../../pom.xml mcp-webmvc-sse-transport @@ -25,13 +25,13 @@ org.springframework.experimental mcp - 0.6.0 + 0.7.0-SNAPSHOT org.springframework.experimental mcp-test - 0.6.0 + 0.7.0-SNAPSHOT test diff --git a/mcp/pom.xml b/mcp/pom.xml index 3febfbf..6a81ca3 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0 + 0.7.0-SNAPSHOT mcp jar diff --git a/pom.xml b/pom.xml index d750215..68ba29c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0 + 0.7.0-SNAPSHOT pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index ab74c04..fd2e156 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.6.0 + 0.7.0-SNAPSHOT spring-ai-mcp Spring AI MCP From 25ad5ed052847f0543070a99c256f6bd7a085b4f Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 24 Jan 2025 20:24:08 +0100 Subject: [PATCH 081/505] Remove the spring-ai-mcp module from the MCP Java SDK Signed-off-by: Christian Tzolov --- mcp-bom/pom.xml | 6 - pom.xml | 1 - spring-ai-mcp/README.md | 5 - spring-ai-mcp/pom.xml | 53 ----- .../ai/mcp/spring/McpFunctionCallback.java | 68 ------ .../ai/mcp/spring/ToolHelper.java | 218 ------------------ 6 files changed, 351 deletions(-) delete mode 100644 spring-ai-mcp/README.md delete mode 100644 spring-ai-mcp/pom.xml delete mode 100644 spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/McpFunctionCallback.java delete mode 100644 spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java diff --git a/mcp-bom/pom.xml b/mcp-bom/pom.xml index 23e86ad..eb73bc8 100644 --- a/mcp-bom/pom.xml +++ b/mcp-bom/pom.xml @@ -54,12 +54,6 @@ ${project.version} - - - org.springframework.experimental - spring-ai-mcp - ${project.version} - diff --git a/pom.xml b/pom.xml index 68ba29c..2092d7d 100644 --- a/pom.xml +++ b/pom.xml @@ -107,7 +107,6 @@ mcp mcp-transport/mcp-webflux-sse-transport mcp-transport/mcp-webmvc-sse-transport - spring-ai-mcp mcp-docs mcp-test diff --git a/spring-ai-mcp/README.md b/spring-ai-mcp/README.md deleted file mode 100644 index 8ba646f..0000000 --- a/spring-ai-mcp/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Spring AI MCP Spring - -Spring Integration module for Model Control Protocol (MCP) that provides Spring-specific functionality for working with MCP clients. - -Find more at [Java MCP SDK](https://docs.spring.io/spring-ai-mcp/reference/spring-mcp.html) \ No newline at end of file diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml deleted file mode 100644 index fd2e156..0000000 --- a/spring-ai-mcp/pom.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - 4.0.0 - - org.springframework.experimental - mcp-parent - 0.7.0-SNAPSHOT - - spring-ai-mcp - Spring AI MCP - Spring Framework integration for Model Context Protocol (MCP), providing Spring AI function calling capabilities and Spring-friendly abstractions for MCP clients and MCP servers - https://github.com/spring-projects-experimental/spring-ai-mcp - - - https://github.com/spring-projects-experimental/spring-ai-mcp - git://github.com/spring-projects-experimental/spring-ai-mcp.git - git@github.com:spring-projects-experimental/spring-ai-mcp.git - - - - - org.springframework.ai - spring-ai-core - ${spring-ai.version} - - - org.springframework - spring-context - - - org.springframework - spring-messaging - - - - - - org.springframework.experimental - mcp - ${project.version} - - - - org.springframework - spring-core - ${springframework.version} - - - - - diff --git a/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/McpFunctionCallback.java b/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/McpFunctionCallback.java deleted file mode 100644 index e06b026..0000000 --- a/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/McpFunctionCallback.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ai.mcp.spring; - -import java.util.Map; - -import org.springframework.ai.mcp.client.McpSyncClient; -import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.Tool; - -import org.springframework.ai.model.ModelOptionsUtils; -import org.springframework.ai.model.function.FunctionCallback; - -/** - * @author Christian Tzolov - */ - -public class McpFunctionCallback implements FunctionCallback { - - // TODO: revisit function calling as well to handle the async case - private final McpSyncClient mcpClient; - - private final Tool tool; - - public McpFunctionCallback(McpSyncClient clientSession, Tool tool) { - this.mcpClient = clientSession; - this.tool = tool; - } - - @Override - public String getName() { - return this.tool.name(); - } - - @Override - public String getDescription() { - return this.tool.description(); - } - - @Override - public String getInputTypeSchema() { - return ModelOptionsUtils.toJsonString(this.tool.inputSchema()); - } - - @Override - public String call(String functionInput) { - Map arguments = ModelOptionsUtils.jsonToMap(functionInput); - CallToolResult response = this.mcpClient.callTool(new CallToolRequest(this.getName(), arguments)); - // Todo handle errors - return ModelOptionsUtils.toJsonString(response.content()); - } - -} diff --git a/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java b/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java deleted file mode 100644 index a3c5e44..0000000 --- a/spring-ai-mcp/src/main/java/org/springframework/ai/mcp/spring/ToolHelper.java +++ /dev/null @@ -1,218 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.spring; - -import java.util.List; -import java.util.Map; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.module.jsonSchema.JsonSchema; -import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator; - -import org.springframework.ai.chat.model.ToolContext; -import org.springframework.ai.mcp.server.McpServer; -import org.springframework.ai.mcp.server.McpServerFeatures; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.model.ModelOptionsUtils; -import org.springframework.ai.model.function.FunctionCallback; -import org.springframework.util.ClassUtils; - -/** - * Utility class that provides helper methods for working with Model Context Protocol - * (MCP) tools in a Spring AI environment. This class facilitates the integration between - * Spring AI's function callbacks and MCP's tool system. - * - *

    - * The MCP tool system enables servers to expose executable functionality to language - * models, allowing them to interact with external systems, perform computations, and take - * actions in the real world. Each tool is uniquely identified by a name and includes - * metadata describing its schema. - * - *

    - * This helper class provides methods to: - *

      - *
    • Convert Spring AI's {@link FunctionCallback} instances to MCP tool - * registrations
    • - *
    • Generate JSON schemas for tool input validation
    • - *
    - * - * @author Christian Tzolov - * @see org.springframework.ai.model.function.FunctionCallback - * @see org.springframework.ai.mcp.server.McpServer.ToolRegistration - * @see org.springframework.ai.mcp.spec.McpSchema.Tool - */ -public final class ToolHelper { - - private ToolHelper() { - } - - public static List toSyncToolRegistration( - List functionCallbacks) { - return functionCallbacks.stream().map(ToolHelper::toSyncToolRegistration).toList(); - } - - @Deprecated - public static List toToolRegistration(List functionCallbacks) { - return functionCallbacks.stream().map(ToolHelper::toToolRegistration).toList(); - } - - public static List toSyncToolRegistration( - FunctionCallback... functionCallbacks) { - return toSyncToolRegistration(List.of(functionCallbacks)); - } - - @Deprecated - public static List toToolRegistration(FunctionCallback... functionCallbacks) { - return toToolRegistration(List.of(functionCallbacks)); - } - - /** - * Converts a Spring AI FunctionCallback to an MCP SyncToolRegistration. This enables - * Spring AI functions to be exposed as MCP tools that can be discovered and invoked - * by language models. - * - *

    - * The conversion process: - *

      - *
    • Creates an MCP Tool with the function's name and input schema
    • - *
    • Wraps the function's execution in a SyncToolRegistration that handles the MCP - * protocol
    • - *
    • Provides error handling and result formatting according to MCP - * specifications
    • - *
    - * - * You can use the FunctionCallback builder to create a new instance of - * FunctionCallback using either java.util.function.Function or Method reference. - * @param functionCallback the Spring AI function callback to convert - * @return an MCP SyncToolRegistration that wraps the function callback - * @throws RuntimeException if there's an error during the function execution - */ - public static McpServerFeatures.SyncToolRegistration toSyncToolRegistration(FunctionCallback functionCallback) { - var tool = new McpSchema.Tool(functionCallback.getName(), functionCallback.getName(), - functionCallback.getInputTypeSchema()); - - return new McpServerFeatures.SyncToolRegistration(tool, request -> { - try { - String callResult = functionCallback.call(ModelOptionsUtils.toJsonString(request)); - return new McpSchema.CallToolResult(List.of(new McpSchema.TextContent(callResult)), false); - } - catch (Exception e) { - return new McpSchema.CallToolResult(List.of(new McpSchema.TextContent(e.getMessage())), true); - } - }); - } - - /** - * Converts a Spring AI FunctionCallback to an MCP ToolRegistration. This enables - * Spring AI functions to be exposed as MCP tools that can be discovered and invoked - * by language models. - * - *

    - * The conversion process: - *

      - *
    • Creates an MCP Tool with the function's name and input schema
    • - *
    • Wraps the function's execution in a ToolRegistration that handles the MCP - * protocol
    • - *
    • Provides error handling and result formatting according to MCP - * specifications
    • - *
    - * - * You can use the FunctionCallback builder to create a new instance of - * FunctionCallback using either java.util.function.Function or Method reference. - * @param functionCallback the Spring AI function callback to convert - * @return an MCP ToolRegistration that wraps the function callback - * @throws RuntimeException if there's an error during the function execution - * @deprecated Use {@link #toSyncToolRegistration(FunctionCallback)}. - */ - @Deprecated - public static McpServer.ToolRegistration toToolRegistration(FunctionCallback functionCallback) { - - var tool = new McpSchema.Tool(functionCallback.getName(), functionCallback.getName(), - functionCallback.getInputTypeSchema()); - - return new McpServer.ToolRegistration(tool, request -> { - try { - String callResult = functionCallback.call(ModelOptionsUtils.toJsonString(request)); - return new McpSchema.CallToolResult(List.of(new McpSchema.TextContent(callResult)), false); - } - catch (Exception e) { - return new McpSchema.CallToolResult(List.of(new McpSchema.TextContent(e.getMessage())), true); - } - }); - } - - /** - * Generates a JSON schema for a map of named classes using the default ObjectMapper. - * This schema can be used to validate tool inputs according to the MCP specification. - * @param namedClasses a map of class names to their corresponding Class objects - * @return a JSON schema string that describes the structure of the named classes - * @throws RuntimeException if schema generation fails - * @see #generateJsonSchema(Map, ObjectMapper) - */ - public static String generateJsonSchema(Map> namedClasses) { - return generateJsonSchema(namedClasses, new ObjectMapper()); - } - - /** - * Generates a JSON schema for a map of named classes using a custom ObjectMapper. The - * generated schema follows the JSON Schema Draft 2020-12 specification and describes - * the structure of the provided classes. - * - *

    - * This method: - *

      - *
    • Creates a schema that validates the structure of tool inputs
    • - *
    • Excludes ToolContext class from schema generation
    • - *
    • Uses Jackson's JsonSchemaGenerator for accurate type representation
    • - *
    - * @param namedClasses a map of class names to their corresponding Class objects - * @param mapper the ObjectMapper to use for JSON processing - * @return a JSON schema string that describes the structure of the named classes - * @throws RuntimeException if schema generation fails - */ - public static String generateJsonSchema(Map> namedClasses, ObjectMapper mapper) { - try { - JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper); - - ObjectNode rootNode = mapper.createObjectNode(); - rootNode.put("$schema", "https://json-schema.org/draft/2020-12/schema"); - rootNode.put("type", "object"); - ObjectNode propertiesNode = rootNode.putObject("properties"); - - for (Map.Entry> entry : namedClasses.entrySet()) { - String className = entry.getKey(); - Class clazz = entry.getValue(); - - if (ClassUtils.isAssignable(clazz, ToolContext.class)) { - // Skip the ToolContext class from the schema generation. - continue; - } - - JsonSchema schema = schemaGen.generateSchema(clazz); - JsonNode schemaNode = mapper.valueToTree(schema); - propertiesNode.set(className, schemaNode); - } - - return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode); - } - catch (Exception e) { - throw new RuntimeException(e); - } - } - -} From 3112e5ede7f7bfe905b16fc25d3c5258a582dd17 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 24 Jan 2025 22:08:16 +0100 Subject: [PATCH 082/505] Refactor package structure and dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Updated package prefix: `org.springframework.ai.mcp` → `org.modelcontextprotocol` - Changed POM groupId: `org.springframework.experimental` → `org.modelcontextprotocol.sdk` - Update all dependecies and BOM - Updated documentation references accordingly Signed-off-by: Christian Tzolov --- .github/ISSUE_TEMPLATE/miscellaneous.md | 5 +- README.md | 27 +- mcp-bom/pom.xml | 22 +- mcp-docs/0.5.0-BREAKING-CHANGES.md | 105 -------- mcp-docs/0.6.0-MIGRATION-GUIDE.md | 239 ------------------ mcp-docs/pom.xml | 2 +- .../src/main/antora/modules/ROOT/nav.adoc | 1 - .../ROOT/pages/dependency-management.adoc | 13 +- .../main/antora/modules/ROOT/pages/mcp.adoc | 14 +- .../antora/modules/ROOT/pages/overview.adoc | 32 +-- .../antora/modules/ROOT/pages/spring-mcp.adoc | 162 ------------ mcp-test/pom.xml | 12 +- .../MockMcpTransport.java | 13 +- .../client/AbstractMcpAsyncClientTests.java | 31 ++- .../client/AbstractMcpSyncClientTests.java | 33 ++- .../server/AbstractMcpAsyncServerTests.java | 27 +- .../server/AbstractMcpSyncServerTests.java | 27 +- .../mcp-webflux-sse-transport/README.md | 2 +- .../mcp-webflux-sse-transport/pom.xml | 14 +- .../transport/WebFluxSseClientTransport.java | 14 +- .../transport/WebFluxSseServerTransport.java | 10 +- .../WebFluxSseIntegrationTests.java | 42 +-- .../client/WebFluxSseMcpAsyncClientTests.java | 6 +- .../client/WebFluxSseMcpSyncClientTests.java | 6 +- .../WebFluxSseClientTransportTests.java | 6 +- .../server/WebFluxSseMcpAsyncServerTests.java | 6 +- .../server/WebFluxSseMcpSyncServerTests.java | 6 +- .../server/transport/BlockingInputStream.java | 2 +- .../transport/_SseServerTransportTests.java_ | 0 .../mcp-webmvc-sse-transport/README.md | 2 +- .../mcp-webmvc-sse-transport/pom.xml | 14 +- .../transport/WebMvcSseServerTransport.java | 11 +- .../WebMvcSseAsyncServerTransportTests.java | 6 +- .../server/WebMvcSseIntegrationTests.java | 40 ++- .../WebMvcSseSyncServerTransportTests.java | 6 +- .../src/test/resources/logback.xml | 8 +- mcp/pom.xml | 12 +- .../client/McpAsyncClient.java | 48 ++-- .../client/McpClient.java | 21 +- .../client/McpClientFeatures.java | 9 +- .../client/McpSyncClient.java | 17 +- .../client/transport/FlowSseClient.java | 2 +- .../HttpClientSseClientTransport.java | 22 +- .../client/transport/ServerParameters.java | 5 +- .../transport/StdioClientTransport.java | 11 +- .../server/McpAsyncServer.java | 31 ++- .../server/McpServer.java | 18 +- .../server/McpServerFeatures.java | 9 +- .../server/McpSyncServer.java | 18 +- .../HttpServletSseServerTransport.java | 9 +- .../transport/StdioServerTransport.java | 11 +- .../spec/ClientMcpTransport.java | 2 +- .../spec/DefaultMcpSession.java | 5 +- .../spec/McpError.java | 4 +- .../spec/McpSchema.java | 2 +- .../spec/McpSession.java | 2 +- .../spec/McpTransport.java | 5 +- .../spec/ServerMcpTransport.java | 2 +- .../util/Assert.java | 2 +- .../util/Utils.java | 2 +- .../MockMcpTransport.java | 13 +- .../client/AbstractMcpAsyncClientTests.java | 31 ++- .../client/AbstractMcpSyncClientTests.java | 33 ++- .../McpAsyncClientResponseHandlerTests.java | 13 +- .../client/McpClientProtocolVersionTests.java | 11 +- .../client/ServletSseMcpAsyncClientTests.java | 7 +- .../client/ServletSseMcpSyncClientTests.java | 7 +- .../client/StdioMcpAsyncClientTests.java | 9 +- .../client/StdioMcpSyncClientTests.java | 9 +- .../HttpClientSseClientTransportTests.java | 6 +- .../server/AbstractMcpAsyncServerTests.java | 27 +- .../server/AbstractMcpSyncServerTests.java | 27 +- .../server/McpServerProtocolVersionTests.java | 7 +- .../server/ServletSseMcpAsyncServerTests.java | 7 +- .../server/ServletSseMcpSyncServerTests.java | 7 +- .../server/StdioMcpAsyncServerTests.java | 7 +- .../server/StdioMcpSyncServerTests.java | 7 +- .../server/transport/BlockingInputStream.java | 2 +- ...letSseServerTransportIntegrationTests.java | 42 ++- .../transport/StdioServerTransportTests.java | 7 +- .../spec/DefaultMcpSessionTests.java | 5 +- .../ai/mcp/attic/ClientSessionTests2.java | 79 ------ .../ai/mcp/attic/ClientSessionTests3.java | 74 ------ .../ai/mcp/attic/SSEClient.java | 183 -------------- .../ai/mcp/attic/ServerParametersParser.java | 90 ------- .../ai/mcp/attic/_DemoServer.java_ | 61 ----- .../ai/mcp/attic/_MainSSE.java_ | 81 ------ pom.xml | 20 +- 88 files changed, 483 insertions(+), 1624 deletions(-) delete mode 100644 mcp-docs/0.5.0-BREAKING-CHANGES.md delete mode 100644 mcp-docs/0.6.0-MIGRATION-GUIDE.md delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc rename mcp-test/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/MockMcpTransport.java (90%) rename mcp-test/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/AbstractMcpAsyncClientTests.java (92%) rename mcp-test/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/AbstractMcpSyncClientTests.java (89%) rename mcp-test/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/AbstractMcpAsyncServerTests.java (95%) rename mcp-test/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/AbstractMcpSyncServerTests.java (95%) rename mcp-transport/mcp-webflux-sse-transport/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/transport/WebFluxSseClientTransport.java (96%) rename mcp-transport/mcp-webflux-sse-transport/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/transport/WebFluxSseServerTransport.java (98%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/WebFluxSseIntegrationTests.java (91%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/WebFluxSseMcpAsyncClientTests.java (91%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/WebFluxSseMcpSyncClientTests.java (91%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/transport/WebFluxSseClientTransportTests.java (98%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/WebFluxSseMcpAsyncServerTests.java (91%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/WebFluxSseMcpSyncServerTests.java (91%) rename {mcp/src/test/java/org/springframework/ai/mcp => mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol}/server/transport/BlockingInputStream.java (97%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/transport/_SseServerTransportTests.java_ (100%) rename mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/transport/WebMvcSseServerTransport.java (98%) rename mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/WebMvcSseAsyncServerTransportTests.java (95%) rename mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/WebMvcSseIntegrationTests.java (92%) rename mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/WebMvcSseSyncServerTransportTests.java (95%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/McpAsyncClient.java (96%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/McpClient.java (98%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/McpClientFeatures.java (98%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/McpSyncClient.java (96%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/transport/FlowSseClient.java (99%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/transport/HttpClientSseClientTransport.java (93%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/transport/ServerParameters.java (97%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/transport/StdioClientTransport.java (97%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/McpAsyncServer.java (97%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/McpServer.java (99%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/McpServerFeatures.java (98%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/McpSyncServer.java (94%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/transport/HttpServletSseServerTransport.java (98%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/transport/StdioServerTransport.java (96%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/spec/ClientMcpTransport.java (94%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/spec/DefaultMcpSession.java (99%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/spec/McpError.java (88%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/spec/McpSchema.java (99%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/spec/McpSession.java (98%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/spec/McpTransport.java (96%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/spec/ServerMcpTransport.java (94%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/util/Assert.java (98%) rename mcp/src/main/java/org/{springframework/ai/mcp => modelcontextprotocol}/util/Utils.java (98%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/MockMcpTransport.java (90%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/AbstractMcpAsyncClientTests.java (92%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/AbstractMcpSyncClientTests.java (89%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/McpAsyncClientResponseHandlerTests.java (97%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/McpClientProtocolVersionTests.java (95%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/ServletSseMcpAsyncClientTests.java (90%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/ServletSseMcpSyncClientTests.java (90%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/StdioMcpAsyncClientTests.java (83%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/StdioMcpSyncClientTests.java (88%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/client/transport/HttpClientSseClientTransportTests.java (97%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/AbstractMcpAsyncServerTests.java (95%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/AbstractMcpSyncServerTests.java (95%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/McpServerProtocolVersionTests.java (97%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/ServletSseMcpAsyncServerTests.java (85%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/ServletSseMcpSyncServerTests.java (85%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/StdioMcpAsyncServerTests.java (85%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/StdioMcpSyncServerTests.java (85%) rename {mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp => mcp/src/test/java/org/modelcontextprotocol}/server/transport/BlockingInputStream.java (97%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/transport/HttpServletSseServerTransportIntegrationTests.java (88%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/server/transport/StdioServerTransportTests.java (96%) rename mcp/src/test/java/org/{springframework/ai/mcp => modelcontextprotocol}/spec/DefaultMcpSessionTests.java (98%) delete mode 100644 mcp/src/test/java/org/springframework/ai/mcp/attic/ClientSessionTests2.java delete mode 100644 mcp/src/test/java/org/springframework/ai/mcp/attic/ClientSessionTests3.java delete mode 100644 mcp/src/test/java/org/springframework/ai/mcp/attic/SSEClient.java delete mode 100644 mcp/src/test/java/org/springframework/ai/mcp/attic/ServerParametersParser.java delete mode 100644 mcp/src/test/java/org/springframework/ai/mcp/attic/_DemoServer.java_ delete mode 100644 mcp/src/test/java/org/springframework/ai/mcp/attic/_MainSSE.java_ diff --git a/.github/ISSUE_TEMPLATE/miscellaneous.md b/.github/ISSUE_TEMPLATE/miscellaneous.md index 80ee92a..d77c625 100644 --- a/.github/ISSUE_TEMPLATE/miscellaneous.md +++ b/.github/ISSUE_TEMPLATE/miscellaneous.md @@ -10,8 +10,7 @@ assignees: '' For anything other than bug reports and feature requests (performance, refactoring, etc), just go ahead and file the issue. Please provide as many details as possible. -If you have a question or a support request, please open a new discussion on [GitHub Discussions](https://github.com/spring-projects-experimental/spring-ai-mcp/discussions) -or ask a question on [StackOverflow](https://stackoverflow.com/questions/tagged/spring-ai-mcp). +If you have a question or a support request, please open a new discussion on [GitHub Discussions](https://github.com/modelcontextprotocol/java-sdk/discussions) -Please do **not** create issues on the [Issue Tracker](https://github.com/spring-projects-experimental/spring-ai-mcp/issues) for questions or support requests. +Please do **not** create issues on the [Issue Tracker](https://github.com/modelcontextprotocol/java-sdk/issues) for questions or support requests. We would like to keep the issue tracker **exclusively** for bug reports and feature requests. diff --git a/README.md b/README.md index f6116ae..6982146 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Java & Spring MCP -[![Build Status](https://github.com/spring-projects-experimental/spring-ai-mcp/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/spring-projects-experimental/spring-ai-mcp/actions/workflows/continuous-integration.yml) +[![Build Status](https://github.com/modelcontextprotocol/java-sdk/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/modelcontextprotocol/java-sdk/actions/workflows/continuous-integration.yml) Set of projects that provide Java SDK and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns. @@ -28,8 +28,8 @@ Java implementation of the Model Context Protocol specification. It includes: - Servlet-based SSE server (`HttpServletSseServerTransport`) for HTTP SSE Server streaming using traditional Servlet API #### Optional SSE Transports -- [WebFlux SSE Transport](https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webflux-sse-transport) - Reactive HTTP streaming with Spring WebFlux (Client & Server) -- [WebMvc SSE Transport](https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webmvc-sse-transport) - Spring MVC based HTTP SSE transport (Server only). +- [WebFlux SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webflux-sse-transport) - Reactive HTTP streaming with Spring WebFlux (Client & Server) +- [WebMvc SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webmvc-sse-transport) - Spring MVC based HTTP SSE transport (Server only). You can use the core `HttpClientSseClientTransport` transport as a SSE client. ### [Spring AI MCP](https://docs.spring.io/spring-ai-mcp/reference/spring-mcp.html) @@ -47,27 +47,21 @@ Add the following dependencies to your Maven project: ```xml - org.springframework.experimental + org.modelcontextprotocol.sdk mcp - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-webflux-sse-transport - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-webmvc-sse-transport - - - - org.springframework.experimental - spring-ai-mcp - ``` This is a milestone release, not available on Maven Central. @@ -105,7 +99,6 @@ Explore these MCP examples in the [spring-ai-examples/model-context-protocol](ht - [Java MCP SDK documentation](mcp/README.md) - [Reference documentation](docs/ref-index.md) -- [Spring Integration documentation](spring-ai-mcp/README.md) ## Development @@ -125,7 +118,7 @@ mvn test ## Contributing -This is an experimental Spring project. Contributions are welcome! Please: +Contributions are welcome! Please: 1. Fork the repository 2. Create a feature branch @@ -138,9 +131,9 @@ This is an experimental Spring project. Contributions are welcome! Please: ## Links -- [GitHub Repository](https://github.com/spring-projects-experimental/spring-ai-mcp) -- [Issue Tracker](https://github.com/spring-projects-experimental/spring-ai-mcp/issues) -- [CI/CD](https://github.com/spring-projects-experimental/spring-ai-mcp/actions) +- [GitHub Repository](https://github.com/modelcontextprotocol/java-sdk) +- [Issue Tracker](https://github.com/modelcontextprotocol/java-sdk/issues) +- [CI/CD](https://github.com/modelcontextprotocol/java-sdk/actions) ## License diff --git a/mcp-bom/pom.xml b/mcp-bom/pom.xml index eb73bc8..a1b5164 100644 --- a/mcp-bom/pom.xml +++ b/mcp-bom/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT @@ -16,40 +16,40 @@ Spring AI MCP BOM Spring AI MCP Bill of Materials - https://github.com/spring-projects-experimental/spring-ai-mcp + https://github.com/modelcontextprotocol/java-sdk - - https://github.com/spring-projects-experimental/spring-ai-mcp - git://github.com/spring-projects-experimental/spring-ai-mcp.git - git@github.com/spring-projects-experimental/spring-ai-mcp.git - + + https://github.com/modelcontextprotocol/java-sdk + git://github.com/modelcontextprotocol/java-sdk.git + git@github.com/modelcontextprotocol/java-sdk.git + - org.springframework.experimental + org.modelcontextprotocol.sdk mcp ${project.version} - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-test ${project.version} - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-webflux-sse-transport ${project.version} - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-webmvc-sse-transport ${project.version} diff --git a/mcp-docs/0.5.0-BREAKING-CHANGES.md b/mcp-docs/0.5.0-BREAKING-CHANGES.md deleted file mode 100644 index 298c917..0000000 --- a/mcp-docs/0.5.0-BREAKING-CHANGES.md +++ /dev/null @@ -1,105 +0,0 @@ -# Breaking Changes for Spring AI MCP 0.5.0-SNAPSHOT - -## Major Changes - -1. Transport Implementation Modularization - - SSE transport implementations have been moved to dedicated modules: - - `mcp-webflux-sse-transport`: WebFlux-based SSE transport - - `mcp-webmvc-sse-transport`: WebMVC-based SSE transport - - Base MCP module no longer includes transport implementations - -2. Class Renames - - `SseClientTransport` → `WebFluxSseClientTransport` - - `SseServerTransport` → `WebFluxSseServerTransport` - -3. Project Structure - - Test utilities moved to new `mcp-test` module - - All samples moved to the the https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol - -## Migration Guide - -### 1. Update Dependencies - -If using SSE transport, add the appropriate transport module to your pom.xml: - -For WebFlux SSE transport: -```xml - - org.springframework.experimental - mcp-webflux-sse-transport - 0.5.0-SNAPSHOT - -``` - -For WebMVC SSE transport: -```xml - - org.springframework.experimental - mcp-webmvc-sse-transport - 0.5.0-SNAPSHOT - -``` - -### 2. Update Transport Class References - -Replace: -```java -import org.springframework.ai.mcp.client.transport.SseClientTransport; -import org.springframework.ai.mcp.server.transport.SseServerTransport; -``` - -With: -```java -// For WebFlux -import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; -import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; - -// Or for WebMVC -import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; -``` - -### 3. Update Transport Instantiation - -Replace: -```java -var transport = new SseClientTransport(webClientBuilder); -``` - -With: -```java -var transport = new WebFluxSseClientTransport(webClientBuilder); -``` - -Replace: -```java -var serverTransport = new SseServerTransport(objectMapper, messageEndpoint); -``` - -With: -```java -// For WebFlux -var serverTransport = new WebFluxSseServerTransport(objectMapper, messageEndpoint); - -// Or for WebMVC -var serverTransport = new WebMvcSseServerTransport(objectMapper, messageEndpoint); -``` - -### 4. Test Dependencies - -If you're using MCP test utilities, add the test module dependency: - -```xml - - org.springframework.experimental - mcp-test - 0.5.0-SNAPSHOT - test - -``` - -## Other Changes - -- Spring AI dependency updated to 1.0.0-M5 -- Improved dependency management and reduced transitive dependencies -- Sample application restructured under samples/ directory -- New test utilities and base test classes in mcp-test module diff --git a/mcp-docs/0.6.0-MIGRATION-GUIDE.md b/mcp-docs/0.6.0-MIGRATION-GUIDE.md deleted file mode 100644 index 8f3b157..0000000 --- a/mcp-docs/0.6.0-MIGRATION-GUIDE.md +++ /dev/null @@ -1,239 +0,0 @@ -# Spring AI MCP 0.6.0 Migration Guide - -This guide outlines the steps required to migrate your code to Spring AI MCP 0.6.0. - -## Key Changes - -- New builder patterns for `McpClient` and `McpServer` -- Introduction of dedicated feature classes for sync/async operations -- Enhanced type safety and reactive support -- Deprecated methods and classes marked for removal - -## Client Migration - -### Creating Clients - -Before: -```java -// Sync client -McpClient.using(transport) - .requestTimeout(Duration.ofSeconds(5)) - .sync(); - -// Async client -McpClient.using(transport) - .requestTimeout(Duration.ofSeconds(5)) - .async(); -``` - -After: -```java -// Sync client -McpClient.sync(transport) - .requestTimeout(Duration.ofSeconds(5)) - .build(); - -// Async client -McpClient.async(transport) - .requestTimeout(Duration.ofSeconds(5)) - .build(); -``` - -### Change Consumers - -Before: -```java -// Sync client -McpClient.using(transport) - .toolsChangeConsumer(tools -> handleTools(tools)) - .resourcesChangeConsumer(resources -> handleResources(resources)) - .promptsChangeConsumer(prompts -> handlePrompts(prompts)) - .sync(); - -// Async client -McpClient.using(transport) - .toolsChangeConsumer(tools -> handleTools(tools)) - .resourcesChangeConsumer(resources -> handleResources(resources)) - .promptsChangeConsumer(prompts -> handlePrompts(prompts)) - .async(); -``` - -After: -```java -// Sync client -McpClient.sync(transport) - .toolsChangeConsumer(tools -> handleTools(tools)) - .resourcesChangeConsumer(resources -> handleResources(resources)) - .promptsChangeConsumer(prompts -> handlePrompts(prompts)) - .build(); - -// Async client -McpClient.async(transport) - .toolsChangeConsumer(tools -> Mono.fromRunnable(() -> handleTools(tools))) - .resourcesChangeConsumer(resources -> Mono.fromRunnable(() -> handleResources(resources))) - .promptsChangeConsumer(prompts -> Mono.fromRunnable(() -> handlePrompts(prompts))) - .build(); -``` - -### Sampling Handlers - -Before: -```java -// Sync client -McpClient.using(transport) - .sampling(request -> new CreateMessageResult("response")) - .sync(); - -// Async client -McpClient.using(transport) - .sampling(request -> new CreateMessageResult("response")) - .async(); -``` - -After: -```java -// Sync client -McpClient.sync(transport) - .sampling(request -> new CreateMessageResult("response")) - .build(); - -// Async client -McpClient.async(transport) - .sampling(request -> Mono.just(new CreateMessageResult("response"))) - .build(); -``` - -## Server Migration - -### Creating Servers - -Before: -```java -// Sync server -McpServer.using(transport) - .serverInfo("test-server", "1.0.0") - .sync(); - -// Async server -McpServer.using(transport) - .serverInfo("test-server", "1.0.0") - .async(); -``` - -After: -```java -// Sync server -McpServer.sync(transport) - .serverInfo("test-server", "1.0.0") - .build(); - -// Async server -McpServer.async(transport) - .serverInfo("test-server", "1.0.0") - .build(); -``` - -### Tool Registration - -Before: -```java -// Using ToolRegistration record -new ToolRegistration( - new Tool("calculator", "Performs calculations", schema), - args -> new CallToolResult("result") -); -``` - -After: -```java -// Sync server -new McpServerFeatures.SyncToolRegistration( - new Tool("calculator", "Performs calculations", schema), - args -> new CallToolResult("result") -); - -// Async server -new McpServerFeatures.AsyncToolRegistration( - new Tool("calculator", "Performs calculations", schema), - args -> Mono.just(new CallToolResult("result")) -); -``` - -### Resource Registration - -Before: -```java -// Using ResourceRegistration record -new ResourceRegistration( - new Resource("docs", "Documentation", "text/markdown"), - request -> new ReadResourceResult(content) -); -``` - -After: -```java -// Sync server -new McpServerFeatures.SyncResourceRegistration( - new Resource("docs", "Documentation", "text/markdown"), - request -> new ReadResourceResult(content) -); - -// Async server -new McpServerFeatures.AsyncResourceRegistration( - new Resource("docs", "Documentation", "text/markdown"), - request -> Mono.just(new ReadResourceResult(content)) -); -``` - -### Prompt Registration - -Before: -```java -// Using PromptRegistration record -new PromptRegistration( - new Prompt("analyze", "Code analysis"), - request -> new GetPromptResult("result") -); -``` - -After: -```java -// Sync server -new McpServerFeatures.SyncPromptRegistration( - new Prompt("analyze", "Code analysis"), - request -> new GetPromptResult("result") -); - -// Async server -new McpServerFeatures.AsyncPromptRegistration( - new Prompt("analyze", "Code analysis"), - request -> Mono.just(new GetPromptResult("result")) -); -``` - -## Spring Integration Changes - -### Tool Helper Changes - -Before: -```java -ToolHelper.toToolRegistration(functionCallback); -ToolHelper.toToolRegistration(functionCallbacks); -``` - -After: -```java -ToolHelper.toSyncToolRegistration(functionCallback); -ToolHelper.toSyncToolRegistration(functionCallbacks); -``` - -## Deprecated APIs - -The following APIs are deprecated and will be removed in a future release: - -- `McpClient.using()` - Use `McpClient.sync()` or `McpClient.async()` instead -- `McpServer.using()` - Use `McpServer.sync()` or `McpServer.async()` instead -- `McpServer.ToolRegistration` - Use `McpServerFeatures.SyncToolRegistration` or `McpServerFeatures.AsyncToolRegistration` instead -- `McpServer.ResourceRegistration` - Use `McpServerFeatures.SyncResourceRegistration` or `McpServerFeatures.AsyncResourceRegistration` instead -- `McpServer.PromptRegistration` - Use `McpServerFeatures.SyncPromptRegistration` or `McpServerFeatures.AsyncPromptRegistration` instead -- `ToolHelper.toToolRegistration()` - Use `ToolHelper.toSyncToolRegistration()` instead diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index c1a7de1..43e4404 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -18,7 +18,7 @@ 4.0.0 - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT diff --git a/mcp-docs/src/main/antora/modules/ROOT/nav.adoc b/mcp-docs/src/main/antora/modules/ROOT/nav.adoc index 115ff34..5edc6ee 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/nav.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/nav.adoc @@ -1,4 +1,3 @@ * xref:overview.adoc[Overview] ** xref:dependency-management.adoc[Dependency Management] * xref:mcp.adoc[MCP Java SDK] -* xref:spring-mcp.adoc[Spring AI MCP] diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc index 0f01bc4..3aaf09e 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc @@ -20,7 +20,7 @@ Maven:: - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-bom 0.6.0-SNAPSHOT pom @@ -35,7 +35,7 @@ Gradle:: [source,groovy,indent=0,subs="verbatim,quotes"] ---- dependencies { - implementation platform("org.springframework.experimental:mcp-bom:0.6.0-SNAPSHOT") + implementation platform("org.modelcontextprotocol.sdk:mcp-bom:0.6.0-SNAPSHOT") //... } ---- @@ -53,17 +53,16 @@ The following dependencies are available and managed by the BOM: === Core Dependencies -* `org.springframework.experimental:mcp` - Core MCP library providing the base functionality and APIs for Model Context Protocol implementation. -* `org.springframework.experimental:spring-ai-mcp` - Spring AI integration with MCP, providing Spring-specific features and utilities. +* `org.modelcontextprotocol.sdk:mcp` - Core MCP library providing the base functionality and APIs for Model Context Protocol implementation. === Transport Dependencies -* `org.springframework.experimental:mcp-webflux-sse-transport` - WebFlux-based Server-Sent Events (SSE) transport implementation for reactive applications. -* `org.springframework.experimental:mcp-webmvc-sse-transport` - WebMVC-based Server-Sent Events (SSE) transport implementation for servlet-based applications. +* `org.modelcontextprotocol.sdk:mcp-webflux-sse-transport` - WebFlux-based Server-Sent Events (SSE) transport implementation for reactive applications. +* `org.modelcontextprotocol.sdk:mcp-webmvc-sse-transport` - WebMVC-based Server-Sent Events (SSE) transport implementation for servlet-based applications. === Testing Dependencies -* `org.springframework.experimental:mcp-test` - Testing utilities and support for MCP-based applications. +* `org.modelcontextprotocol.sdk:mcp-test` - Testing utilities and support for MCP-based applications. [[repositories]] === Milestone and Snapshot Repositories diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index dd3ed6f..86ca519 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -34,7 +34,7 @@ The core MCP functionality: [source,xml] ---- - org.springframework.experimental + org.modelcontextprotocol.sdk mcp ---- @@ -46,13 +46,13 @@ For HTTP SSE transport implementations, add one of the following dependencies ---- - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-webflux-sse-transport - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-webmvc-sse-transport ---- @@ -64,7 +64,7 @@ The core MCP functionality: [source,groovy] ---- dependencies { - implementation 'org.springframework.experimental:mcp' + implementation 'org.modelcontextprotocol.sdk:mcp' } ---- + @@ -74,10 +74,10 @@ For HTTP SSE transport implementations, add one of the following dependencies [source,groovy] ---- // Spring WebFlux-based SSE client and server transport -implementation 'org.springframework.experimental:mcp-webflux-sse-transport' +implementation 'org.modelcontextprotocol.sdk:mcp-webflux-sse-transport' // Spring WebMVC-based SSE server transport -implementation 'org.springframework.experimental:mcp-webmvc-sse-transport' +implementation 'org.modelcontextprotocol.sdk:mcp-webmvc-sse-transport' ---- ====== @@ -543,7 +543,7 @@ public class McpServerConfig implements WebMvcConfigurer { } ---- + -(You can implment non Spring web container as well link:https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java[HttpServletSseServerTransportIntegrationTests]) +(You can implment non Spring web container as well link:https://github.com/modelcontextprotocol/java-sdk/blob/main/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java[HttpServletSseServerTransportIntegrationTests]) + Implements the MCP HTTP with SSE transport specification using the traditional Servlet API, providing: + diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index 8e6dbac..d428584 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -25,20 +25,10 @@ Core implementation of the Model Context Protocol specification, providing: ** Servlet-based SSE server (`HttpServletSseServerTransport`) for HTTP SSE Server streaming using traditional Servlet API * *Optional SSE Transports* -** link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webflux-sse-transport[WebFlux SSE Transport] - Reactive HTTP streaming with Spring WebFlux (Client & Server) -** link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webmvc-sse-transport[WebMvc SSE Transport] - Spring MVC based SSE transport (Server only). +** link:https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webflux-sse-transport[WebFlux SSE Transport] - Reactive HTTP streaming with Spring WebFlux (Client & Server) +** link:https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webmvc-sse-transport[WebMvc SSE Transport] - Spring MVC based SSE transport (Server only). You can use the core `HttpClientSseClientTransport` transport as a SSE client. -=== xref:spring-mcp.adoc[Spring AI MCP] -Spring integration features: - -* Spring AI tool/function calling system integration -* Bidirectional conversion between Spring AI function callbacks and MCP tools -* JSON schema generation for tool input validation -* Automatic type conversion and error handling -* Spring-friendly MCP client abstractions -* Auto-configurations (WIP) - == Getting Started [tabs] @@ -49,27 +39,22 @@ Maven:: ---- - org.springframework.experimental + org.modelcontextprotocol.sdk mcp - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-webflux-sse-transport - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-webmvc-sse-transport - - - org.springframework.experimental - spring-ai-mcp - ---- + Add Spring milestone repository: @@ -93,10 +78,9 @@ Gradle:: [source,groovy] ---- dependencies { - implementation 'org.springframework.experimental:mcp' // Core - implementation 'org.springframework.experimental:mcp-webflux-sse-transport' // Optional - implementation 'org.springframework.experimental:mcp-webmvc-sse-transport' // Optional - implementation 'org.springframework.experimental:spring-ai-mcp' // Optional + implementation 'org.modelcontextprotocol.sdk:mcp' // Core + implementation 'org.modelcontextprotocol.sdk:mcp-webflux-sse-transport' // Optional + implementation 'org.modelcontextprotocol.sdk:mcp-webmvc-sse-transport' // Optional } repositories { diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc deleted file mode 100644 index fd28fa9..0000000 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/spring-mcp.adoc +++ /dev/null @@ -1,162 +0,0 @@ -= Spring AI MCP Spring -:page-title: Spring AI MCP Spring -:doctype: book -:icons: font -:source-highlighter: highlight.js -:toc: left - -Spring Integration module for Model Control Protocol (MCP) that provides Spring-specific functionality for working with MCP clients. - -== Overview - -The `spring-ai-mcp` module is part of the https://github.com/spring-projects-experimental/spring-ai-mcp[Spring AI MCP] project. It provides Spring Framework integration for the Model Control Protocol (MCP), enabling seamless integration of MCP functionality within Spring applications. - -== Features - -* Spring integration for MCP clients -* Bidirectional conversion between Spring AI function callbacks and MCP tools -* JSON schema generation for tool input validation -* Automatic type conversion and error handling -* Integration with Spring AI's function calling capabilities - -== Main Components - -=== McpFunctionCallback - -The `McpFunctionCallback` class implements Spring AI's `FunctionCallback` interface and provides integration between Spring AI's function calling system and MCP tools. Key features include: - -* Automatic conversion between JSON and Java objects for tool arguments -* Synchronous tool execution support -* Error handling and result formatting -* Integration with Spring AI's function calling system - -Example usage: - -[source,java] ----- -// Create an MCP client -McpSyncClient mcpClient = McpClient.using(transport) - .sync(); - -// Create a function callback for an MCP tool -Tool calculatorTool = new Tool("calculator", "Basic calculator", - Map.of("operation", "string", "a", "number", "b", "number")); -FunctionCallback callback = new McpFunctionCallback(mcpClient, calculatorTool); - -// Use the callback with Spring AI -String result = callback.call("{\"operation\": \"add\", \"a\": 2, \"b\": 3}"); ----- - -=== ToolHelper - -The `ToolHelper` utility class facilitates the integration between Spring AI's function callbacks and MCP's tool system. It provides methods for: - -* Converting Spring AI's `FunctionCallback` instances to MCP tool registrations -* Generating JSON schemas for tool input validation -* Handling error cases and result formatting - -Example usage: - -[source,java] ----- -// Convert Spring AI function callbacks to MCP tool registrations -List callbacks = List.of( - new CalculatorFunction(), - new WeatherFunction() -); -List tools = ToolHelper.toToolRegistration(callbacks); - -// Generate JSON schema for tool inputs -Map> inputTypes = Map.of( - "calculator", CalculatorInput.class, - "weather", WeatherInput.class -); -String schema = ToolHelper.generateJsonSchema(inputTypes); ----- - -==== Converting Function Callbacks to Tools - -The `ToolHelper` provides several methods to convert Spring AI function callbacks to MCP tools: - -[source,java] ----- -// Convert a single function callback -ToolRegistration tool = ToolHelper.toToolRegistration(myCallback); - -// Convert multiple callbacks -List tools = ToolHelper.toToolRegistration(callback1, callback2); - -// Convert a list of callbacks -List tools = ToolHelper.toToolRegistration(callbackList); ----- - -==== JSON Schema Generation - -The `ToolHelper` can generate JSON schemas for tool input validation: - -[source,java] ----- -// Using default ObjectMapper -String schema = ToolHelper.generateJsonSchema(inputTypes); - -// Using custom ObjectMapper -ObjectMapper mapper = new ObjectMapper(); -String schema = ToolHelper.generateJsonSchema(inputTypes, mapper); ----- - -The generated schema follows the JSON Schema Draft 2020-12 specification and: -* Validates the structure of tool inputs -* Excludes ToolContext class from schema generation -* Uses Jackson's JsonSchemaGenerator for accurate type representation - -== Usage - -To use this module, add the following dependency to your Maven project: - -[source,xml] ----- - - org.springframework.experimental - spring-ai-mcp - ----- - -Reffer to the xref:dependency-management.adoc[Dependency Management] page for more information. - -=== Example: Creating an MCP Tool Server with Spring AI Functions - -[source,java] ----- -@Configuration -class McpConfig { - - @Bean - McpServer mcpServer(List callbacks) { - // Convert Spring AI callbacks to MCP tools - List tools = ToolHelper.toToolRegistration(callbacks); - - return McpServer.using(transport) - .info("spring-ai-server", "1.0.0") - .tools(tools) - .sync(); - } - - @Bean - FunctionCallback calculatorFunction() { - return FunctionCallback.builder() - .name("calculator") - .description("Basic calculator") - .function(input -> { - // Function implementation - return result; - }) - .build(); - } -} ----- - -This configuration: -1. Creates Spring AI function callbacks -2. Converts them to MCP tools using ToolHelper -3. Registers the tools with an MCP server -4. Makes the tools available for discovery and execution by MCP clients diff --git a/mcp-test/pom.xml b/mcp-test/pom.xml index 802ace2..e1edaf2 100644 --- a/mcp-test/pom.xml +++ b/mcp-test/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT @@ -12,17 +12,17 @@ jar Tests for the Java MCP SDK Provides some shared test fasilities for the MCP Java SDK - https://github.com/spring-projects-experimental/spring-ai-mcp + https://github.com/modelcontextprotocol/java-sdk - https://github.com/spring-projects-experimental/spring-ai-mcp - git://github.com/spring-projects-experimental/spring-ai-mcp.git - git@github.com:spring-projects-experimental/spring-ai-mcp.git + https://github.com/modelcontextprotocol/java-sdk + git://github.com/modelcontextprotocol/java-sdk.git + git@github.com/modelcontextprotocol/java-sdk.git - org.springframework.experimental + org.modelcontextprotocol.sdk mcp 0.7.0-SNAPSHOT diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/MockMcpTransport.java b/mcp-test/src/main/java/org/modelcontextprotocol/MockMcpTransport.java similarity index 90% rename from mcp-test/src/main/java/org/springframework/ai/mcp/MockMcpTransport.java rename to mcp-test/src/main/java/org/modelcontextprotocol/MockMcpTransport.java index 20736b1..c15d922 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/MockMcpTransport.java +++ b/mcp-test/src/main/java/org/modelcontextprotocol/MockMcpTransport.java @@ -14,24 +14,23 @@ * limitations under the License. */ -package org.springframework.ai.mcp; +package org.modelcontextprotocol; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.ServerMcpTransport; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCNotification; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; import reactor.core.scheduler.Schedulers; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCNotification; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; -import org.springframework.ai.mcp.spec.ServerMcpTransport; - @SuppressWarnings("unused") public class MockMcpTransport implements ClientMcpTransport, ServerMcpTransport { diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java b/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java similarity index 92% rename from mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java rename to mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java index 2579f57..ccc84cc 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java +++ b/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.time.Duration; import java.util.Map; @@ -25,24 +25,23 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolRequest; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import org.modelcontextprotocol.spec.McpSchema.GetPromptRequest; +import org.modelcontextprotocol.spec.McpSchema.Prompt; +import org.modelcontextprotocol.spec.McpSchema.Resource; +import org.modelcontextprotocol.spec.McpSchema.Root; +import org.modelcontextprotocol.spec.McpSchema.SubscribeRequest; +import org.modelcontextprotocol.spec.McpSchema.Tool; +import org.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; +import org.modelcontextprotocol.spec.McpTransport; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; -import org.springframework.ai.mcp.spec.McpSchema.Prompt; -import org.springframework.ai.mcp.spec.McpSchema.Resource; -import org.springframework.ai.mcp.spec.McpSchema.Root; -import org.springframework.ai.mcp.spec.McpSchema.SubscribeRequest; -import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.ai.mcp.spec.McpSchema.UnsubscribeRequest; -import org.springframework.ai.mcp.spec.McpTransport; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java b/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java similarity index 89% rename from mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java rename to mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java index c012612..7f02fa2 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java +++ b/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.time.Duration; import java.util.Map; @@ -23,22 +23,21 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.ListResourceTemplatesResult; -import org.springframework.ai.mcp.spec.McpSchema.ListResourcesResult; -import org.springframework.ai.mcp.spec.McpSchema.ListToolsResult; -import org.springframework.ai.mcp.spec.McpSchema.ReadResourceResult; -import org.springframework.ai.mcp.spec.McpSchema.Resource; -import org.springframework.ai.mcp.spec.McpSchema.Root; -import org.springframework.ai.mcp.spec.McpSchema.SubscribeRequest; -import org.springframework.ai.mcp.spec.McpSchema.TextContent; -import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.ai.mcp.spec.McpSchema.UnsubscribeRequest; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolRequest; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.ListResourceTemplatesResult; +import org.modelcontextprotocol.spec.McpSchema.ListResourcesResult; +import org.modelcontextprotocol.spec.McpSchema.ListToolsResult; +import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import org.modelcontextprotocol.spec.McpSchema.Resource; +import org.modelcontextprotocol.spec.McpSchema.Root; +import org.modelcontextprotocol.spec.McpSchema.SubscribeRequest; +import org.modelcontextprotocol.spec.McpSchema.TextContent; +import org.modelcontextprotocol.spec.McpSchema.Tool; +import org.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java b/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java similarity index 95% rename from mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java rename to mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java index 0c7c1aa..a9360cb 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java +++ b/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import java.time.Duration; import java.util.List; @@ -22,22 +22,21 @@ import java.util.List; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import org.modelcontextprotocol.spec.McpSchema.Prompt; +import org.modelcontextprotocol.spec.McpSchema.PromptMessage; +import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import org.modelcontextprotocol.spec.McpSchema.Resource; +import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import org.modelcontextprotocol.spec.McpSchema.Tool; +import org.modelcontextprotocol.spec.McpTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; -import org.springframework.ai.mcp.spec.McpSchema.Prompt; -import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; -import org.springframework.ai.mcp.spec.McpSchema.ReadResourceResult; -import org.springframework.ai.mcp.spec.McpSchema.Resource; -import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.ai.mcp.spec.McpTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java b/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java similarity index 95% rename from mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java rename to mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java index ddb827a..83fae26 100644 --- a/mcp-test/src/main/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java +++ b/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java @@ -14,26 +14,25 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import java.util.List; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; -import org.springframework.ai.mcp.spec.McpSchema.Prompt; -import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; -import org.springframework.ai.mcp.spec.McpSchema.ReadResourceResult; -import org.springframework.ai.mcp.spec.McpSchema.Resource; -import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.ai.mcp.spec.McpTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import org.modelcontextprotocol.spec.McpSchema.Prompt; +import org.modelcontextprotocol.spec.McpSchema.PromptMessage; +import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import org.modelcontextprotocol.spec.McpSchema.Resource; +import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import org.modelcontextprotocol.spec.McpSchema.Tool; +import org.modelcontextprotocol.spec.McpTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; diff --git a/mcp-transport/mcp-webflux-sse-transport/README.md b/mcp-transport/mcp-webflux-sse-transport/README.md index 57e4d11..a38741f 100644 --- a/mcp-transport/mcp-webflux-sse-transport/README.md +++ b/mcp-transport/mcp-webflux-sse-transport/README.md @@ -2,7 +2,7 @@ ```xml - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-webflux-sse-transport ``` diff --git a/mcp-transport/mcp-webflux-sse-transport/pom.xml b/mcp-transport/mcp-webflux-sse-transport/pom.xml index 54c73fd..fb65db4 100644 --- a/mcp-transport/mcp-webflux-sse-transport/pom.xml +++ b/mcp-transport/mcp-webflux-sse-transport/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT ../../pom.xml @@ -13,23 +13,23 @@ jar WebFlux implementation of the Java MCP SSE transport - https://github.com/spring-projects-experimental/spring-ai-mcp + https://github.com/modelcontextprotocol/java-sdk - https://github.com/spring-projects-experimental/spring-ai-mcp - git://github.com/spring-projects-experimental/spring-ai-mcp.git - git@github.com:spring-projects-experimental/spring-ai-mcp.git + https://github.com/modelcontextprotocol/java-sdk + git://github.com/modelcontextprotocol/java-sdk.git + git@github.com/modelcontextprotocol/java-sdk.git - org.springframework.experimental + org.modelcontextprotocol.sdk mcp 0.7.0-SNAPSHOT - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-test 0.7.0-SNAPSHOT test diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java similarity index 96% rename from mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java rename to mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java index a4605c6..78a4291 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.client.transport; +package org.modelcontextprotocol.client.transport; import java.io.IOException; import java.util.function.BiConsumer; @@ -21,6 +21,11 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; +import org.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.Disposable; @@ -32,11 +37,6 @@ import reactor.core.scheduler.Schedulers; import reactor.util.retry.Retry; import reactor.util.retry.Retry.RetrySignal; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; -import org.springframework.ai.mcp.util.Assert; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.MediaType; import org.springframework.http.codec.ServerSentEvent; @@ -44,7 +44,7 @@ import org.springframework.web.reactive.function.client.WebClient; /** * Server-Sent Events (SSE) implementation of the - * {@link org.springframework.ai.mcp.spec.McpTransport} that follows the MCP HTTP with SSE + * {@link org.modelcontextprotocol.spec.McpTransport} that follows the MCP HTTP with SSE * transport specification. * *

    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java similarity index 98% rename from mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java rename to mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java index 6126eba..8baf696 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebFluxSseServerTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java @@ -1,4 +1,4 @@ -package org.springframework.ai.mcp.server.transport; +package org.modelcontextprotocol.server.transport; import java.io.IOException; import java.time.Duration; @@ -9,16 +9,16 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.ServerMcpTransport; +import org.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.ServerMcpTransport; -import org.springframework.ai.mcp.util.Assert; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.codec.ServerSentEvent; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/WebFluxSseIntegrationTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/WebFluxSseIntegrationTests.java similarity index 91% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/WebFluxSseIntegrationTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/WebFluxSseIntegrationTests.java index ca968cf..9ac21b1 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/WebFluxSseIntegrationTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/WebFluxSseIntegrationTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp; +package org.modelcontextprotocol; import java.time.Duration; import java.util.List; @@ -28,27 +28,27 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import org.modelcontextprotocol.client.McpClient; +import org.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import org.modelcontextprotocol.client.transport.WebFluxSseClientTransport; +import org.modelcontextprotocol.server.McpServer; +import org.modelcontextprotocol.server.McpServerFeatures; +import org.modelcontextprotocol.server.transport.WebFluxSseServerTransport; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import org.modelcontextprotocol.spec.McpSchema.InitializeResult; +import org.modelcontextprotocol.spec.McpSchema.Role; +import org.modelcontextprotocol.spec.McpSchema.Root; +import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import org.modelcontextprotocol.spec.McpSchema.Tool; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.client.McpClient; -import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; -import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; -import org.springframework.ai.mcp.server.McpServer; -import org.springframework.ai.mcp.server.McpServerFeatures; -import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; -import org.springframework.ai.mcp.spec.McpSchema.InitializeResult; -import org.springframework.ai.mcp.spec.McpSchema.Role; -import org.springframework.ai.mcp.spec.McpSchema.Root; -import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.client.RestClient; @@ -373,7 +373,7 @@ public class WebFluxSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -413,7 +413,7 @@ public class WebFluxSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -430,7 +430,7 @@ public class WebFluxSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java similarity index 91% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java index 761dd6a..9f726c4 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpAsyncClientTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import org.junit.jupiter.api.Timeout; +import org.modelcontextprotocol.client.transport.WebFluxSseClientTransport; +import org.modelcontextprotocol.spec.ClientMcpTransport; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; -import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; -import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.web.reactive.function.client.WebClient; /** diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java similarity index 91% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java index 41153af..4371bff 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/WebFluxSseMcpSyncClientTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import org.junit.jupiter.api.Timeout; +import org.modelcontextprotocol.client.transport.WebFluxSseClientTransport; +import org.modelcontextprotocol.spec.ClientMcpTransport; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; -import org.springframework.ai.mcp.client.transport.WebFluxSseClientTransport; -import org.springframework.ai.mcp.spec.ClientMcpTransport; import org.springframework.web.reactive.function.client.WebClient; /** diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransportTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java similarity index 98% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransportTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java index a75f851..ec47529 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/client/transport/WebFluxSseClientTransportTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client.transport; +package org.modelcontextprotocol.client.transport; import java.time.Duration; import java.util.Map; @@ -26,6 +26,8 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; import reactor.core.publisher.Flux; @@ -33,8 +35,6 @@ import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; import org.springframework.http.codec.ServerSentEvent; import org.springframework.web.reactive.function.client.WebClient; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java similarity index 91% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java index b90c9a5..b149fa0 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpAsyncServerTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java @@ -14,15 +14,15 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Timeout; +import org.modelcontextprotocol.server.transport.WebFluxSseServerTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; -import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.function.server.RouterFunctions; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java similarity index 91% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java index 048d639..6d00edc 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebFluxSseMcpSyncServerTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java @@ -14,15 +14,15 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Timeout; +import org.modelcontextprotocol.server.transport.WebFluxSseServerTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; -import org.springframework.ai.mcp.server.transport.WebFluxSseServerTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.web.reactive.function.server.RouterFunctions; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/BlockingInputStream.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java similarity index 97% rename from mcp/src/test/java/org/springframework/ai/mcp/server/transport/BlockingInputStream.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java index 96690db..b7de2b9 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/BlockingInputStream.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.server.transport; +package org.modelcontextprotocol.server.transport; import java.io.IOException; import java.io.InputStream; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/_SseServerTransportTests.java_ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/_SseServerTransportTests.java_ similarity index 100% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/_SseServerTransportTests.java_ rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/_SseServerTransportTests.java_ diff --git a/mcp-transport/mcp-webmvc-sse-transport/README.md b/mcp-transport/mcp-webmvc-sse-transport/README.md index 0b73e73..22ed7e4 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/README.md +++ b/mcp-transport/mcp-webmvc-sse-transport/README.md @@ -2,7 +2,7 @@ ```xml - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-webmvc-sse-transport ``` diff --git a/mcp-transport/mcp-webmvc-sse-transport/pom.xml b/mcp-transport/mcp-webmvc-sse-transport/pom.xml index 7957e60..7dcb169 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/pom.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT ../../pom.xml @@ -13,23 +13,23 @@ jar Spring Web MVC implementation of the Java MCP SSE transport - https://github.com/spring-projects-experimental/spring-ai-mcp + https://github.com/modelcontextprotocol/java-sdk - https://github.com/spring-projects-experimental/spring-ai-mcp - git://github.com/spring-projects-experimental/spring-ai-mcp.git - git@github.com:spring-projects-experimental/spring-ai-mcp.git + https://github.com/modelcontextprotocol/java-sdk + git://github.com/modelcontextprotocol/java-sdk.git + git@github.com/modelcontextprotocol/java-sdk.git - org.springframework.experimental + org.modelcontextprotocol.sdk mcp 0.7.0-SNAPSHOT - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-test 0.7.0-SNAPSHOT test diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java similarity index 98% rename from mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java rename to mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java index cee0b48..cfbc467 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/springframework/ai/mcp/server/transport/WebMvcSseServerTransport.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server.transport; +package org.modelcontextprotocol.server.transport; import java.io.IOException; import java.util.UUID; @@ -23,14 +23,14 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.ServerMcpTransport; +import org.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.ServerMcpTransport; -import org.springframework.ai.mcp.util.Assert; import org.springframework.http.HttpStatus; import org.springframework.web.servlet.function.RouterFunction; import org.springframework.web.servlet.function.RouterFunctions; @@ -271,6 +271,7 @@ public class WebMvcSseServerTransport implements ServerMcpTransport { // Convert the message to a Mono, apply the handler, and block for the // response + @SuppressWarnings("unused") McpSchema.JSONRPCMessage response = Mono.just(message).transform(connectHandler).block(); return ServerResponse.ok().build(); diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java similarity index 95% rename from mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java rename to mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java index 374a5c5..aad11c5 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseAsyncServerTransportTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java @@ -14,16 +14,16 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; import org.junit.jupiter.api.Timeout; +import org.modelcontextprotocol.server.transport.WebMvcSseServerTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; -import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseIntegrationTests.java similarity index 92% rename from mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java rename to mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseIntegrationTests.java index 308be78..0c9f629 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseIntegrationTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseIntegrationTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import java.time.Duration; import java.util.List; @@ -29,24 +29,22 @@ import org.apache.catalina.startup.Tomcat; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.modelcontextprotocol.client.McpClient; +import org.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import org.modelcontextprotocol.server.transport.WebMvcSseServerTransport; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import org.modelcontextprotocol.spec.McpSchema.InitializeResult; +import org.modelcontextprotocol.spec.McpSchema.Role; +import org.modelcontextprotocol.spec.McpSchema.Root; +import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import org.modelcontextprotocol.spec.McpSchema.Tool; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.client.McpClient; -import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; -import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; -import org.springframework.ai.mcp.spec.McpSchema.InitializeResult; -import org.springframework.ai.mcp.spec.McpSchema.Role; -import org.springframework.ai.mcp.spec.McpSchema.Root; -import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestClient; @@ -62,8 +60,6 @@ import static org.awaitility.Awaitility.await; public class WebMvcSseIntegrationTests { - private static final Logger logger = LoggerFactory.getLogger(WebMvcSseIntegrationTests.class); - private static final int PORT = 8183; private static final String MESSAGE_ENDPOINT = "/mcp/message"; @@ -411,7 +407,7 @@ public class WebMvcSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -448,7 +444,7 @@ public class WebMvcSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -465,7 +461,7 @@ public class WebMvcSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java similarity index 95% rename from mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java rename to mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java index 2c44c57..545ec01 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/springframework/ai/mcp/server/WebMvcSseSyncServerTransportTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java @@ -14,16 +14,16 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; import org.junit.jupiter.api.Timeout; +import org.modelcontextprotocol.server.transport.WebMvcSseServerTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; -import org.springframework.ai.mcp.server.transport.WebMvcSseServerTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml b/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml index 517af52..e300a15 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml @@ -9,16 +9,16 @@ - + - + - + - + diff --git a/mcp/pom.xml b/mcp/pom.xml index 6a81ca3..d727c55 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -4,20 +4,20 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT mcp jar Java MCP SDK - Java SDK implementation of the Model Context Protocol, enabling seamless integration with language models and AI tools - https://github.com/spring-projects-experimental/spring-ai-mcp + Java SDK implementation of the Model Context Protocol, enabling seamless integration with language models and AI tools + https://github.com/modelcontextprotocol/java-sdk - https://github.com/spring-projects-experimental/spring-ai-mcp - git://github.com/spring-projects-experimental/spring-ai-mcp.git - git@github.com:spring-projects-experimental/spring-ai-mcp.git + https://github.com/modelcontextprotocol/java-sdk + git://github.com/modelcontextprotocol/java-sdk.git + git@github.com/modelcontextprotocol/java-sdk.git diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java similarity index 96% rename from mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java rename to mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java index 7f6ccc1..8ec3f9c 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.time.Duration; import java.util.ArrayList; @@ -25,35 +25,34 @@ import java.util.function.Consumer; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.DefaultMcpSession; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpTransport; +import org.modelcontextprotocol.spec.DefaultMcpSession.NotificationHandler; +import org.modelcontextprotocol.spec.DefaultMcpSession.RequestHandler; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import org.modelcontextprotocol.spec.McpSchema.GetPromptRequest; +import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import org.modelcontextprotocol.spec.McpSchema.Implementation; +import org.modelcontextprotocol.spec.McpSchema.ListPromptsResult; +import org.modelcontextprotocol.spec.McpSchema.LoggingLevel; +import org.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; +import org.modelcontextprotocol.spec.McpSchema.PaginatedRequest; +import org.modelcontextprotocol.spec.McpSchema.Root; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities.RootCapabilities; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities.Sampling; +import org.modelcontextprotocol.util.Assert; +import org.modelcontextprotocol.util.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.DefaultMcpSession; -import org.springframework.ai.mcp.spec.DefaultMcpSession.NotificationHandler; -import org.springframework.ai.mcp.spec.DefaultMcpSession.RequestHandler; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities.RootCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities.Sampling; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; -import org.springframework.ai.mcp.spec.McpSchema.Implementation; -import org.springframework.ai.mcp.spec.McpSchema.ListPromptsResult; -import org.springframework.ai.mcp.spec.McpSchema.LoggingLevel; -import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; -import org.springframework.ai.mcp.spec.McpSchema.PaginatedRequest; -import org.springframework.ai.mcp.spec.McpSchema.Root; -import org.springframework.ai.mcp.spec.McpTransport; -import org.springframework.ai.mcp.util.Assert; -import org.springframework.ai.mcp.util.Utils; - /** * The Model Context Protocol (MCP) client implementation that provides asynchronous * communication with MCP servers using Project Reactor's Mono and Flux types. @@ -529,6 +528,7 @@ public class McpAsyncClient { private RequestHandler rootsListRequestHandler() { return params -> { + @SuppressWarnings("unused") McpSchema.PaginatedRequest request = transport.unmarshalFrom(params, new TypeReference() { }); diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java similarity index 98% rename from mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java rename to mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java index e11a9a7..83801c9 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.time.Duration; import java.util.ArrayList; @@ -24,18 +24,17 @@ import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpTransport; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import org.modelcontextprotocol.spec.McpSchema.Implementation; +import org.modelcontextprotocol.spec.McpSchema.Root; +import org.modelcontextprotocol.util.Assert; import reactor.core.publisher.Mono; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; -import org.springframework.ai.mcp.spec.McpSchema.Implementation; -import org.springframework.ai.mcp.spec.McpSchema.Root; -import org.springframework.ai.mcp.spec.McpTransport; -import org.springframework.ai.mcp.util.Assert; - /** * Factory class for creating Model Context Protocol (MCP) clients. MCP is a protocol that * enables AI models to interact with external tools and resources through a standardized diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpClientFeatures.java similarity index 98% rename from mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java rename to mcp/src/main/java/org/modelcontextprotocol/client/McpClientFeatures.java index 05be98d..9733b86 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpClientFeatures.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpClientFeatures.java @@ -1,4 +1,4 @@ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.util.ArrayList; import java.util.HashMap; @@ -8,13 +8,12 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; import java.util.function.Function; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.util.Assert; +import org.modelcontextprotocol.util.Utils; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.util.Assert; -import org.springframework.ai.mcp.util.Utils; - /** * Representation of features and capabilities for Model Context Protocol (MCP) clients. * This class provides two record types for managing client features: diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpSyncClient.java similarity index 96% rename from mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java rename to mcp/src/main/java/org/modelcontextprotocol/client/McpSyncClient.java index 1d008ab..fa464a7 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/McpSyncClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpSyncClient.java @@ -14,21 +14,20 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.time.Duration; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.GetPromptRequest; +import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import org.modelcontextprotocol.spec.McpSchema.ListPromptsResult; +import org.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; -import org.springframework.ai.mcp.spec.McpSchema.ListPromptsResult; -import org.springframework.ai.mcp.util.Assert; - /** * A synchronous client implementation for the Model Context Protocol (MCP) that wraps an * {@link McpAsyncClient} to provide blocking operations. diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/transport/FlowSseClient.java similarity index 99% rename from mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java rename to mcp/src/main/java/org/modelcontextprotocol/client/transport/FlowSseClient.java index 4b6191d..2f6d798 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/FlowSseClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/transport/FlowSseClient.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.client.transport; +package org.modelcontextprotocol.client.transport; import java.net.URI; import java.net.http.HttpClient; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java b/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java similarity index 93% rename from mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java rename to mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java index 68f1032..4a48d7c 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java @@ -13,20 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.client.transport; +package org.modelcontextprotocol.client.transport; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import org.modelcontextprotocol.client.transport.FlowSseClient.SseEvent; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; +import org.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - -import org.springframework.ai.mcp.client.transport.FlowSseClient.SseEvent; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; -import org.springframework.ai.mcp.util.Assert; - import reactor.core.publisher.Mono; import java.io.IOException; @@ -43,7 +41,7 @@ import java.util.function.Function; /** * Server-Sent Events (SSE) implementation of the - * {@link org.springframework.ai.mcp.spec.McpTransport} that follows the MCP HTTP with SSE + * {@link org.modelcontextprotocol.spec.McpTransport} that follows the MCP HTTP with SSE * transport specification, using Java's HttpClient. * *

    @@ -65,8 +63,8 @@ import java.util.function.Function; * * * @author Christian Tzolov - * @see org.springframework.ai.mcp.spec.McpTransport - * @see org.springframework.ai.mcp.spec.ClientMcpTransport + * @see org.modelcontextprotocol.spec.McpTransport + * @see org.modelcontextprotocol.spec.ClientMcpTransport */ public class HttpClientSseClientTransport implements ClientMcpTransport { diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/ServerParameters.java b/mcp/src/main/java/org/modelcontextprotocol/client/transport/ServerParameters.java similarity index 97% rename from mcp/src/main/java/org/springframework/ai/mcp/client/transport/ServerParameters.java rename to mcp/src/main/java/org/modelcontextprotocol/client/transport/ServerParameters.java index a5c6858..9a0e574 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/ServerParameters.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/transport/ServerParameters.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client.transport; +package org.modelcontextprotocol.client.transport; import java.util.ArrayList; import java.util.Arrays; @@ -25,8 +25,7 @@ import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; - -import org.springframework.ai.mcp.util.Assert; +import org.modelcontextprotocol.util.Assert; /** * Server parameters for stdio client. diff --git a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java b/mcp/src/main/java/org/modelcontextprotocol/client/transport/StdioClientTransport.java similarity index 97% rename from mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java rename to mcp/src/main/java/org/modelcontextprotocol/client/transport/StdioClientTransport.java index 74d001a..b30eb59 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/client/transport/StdioClientTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/transport/StdioClientTransport.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client.transport; +package org.modelcontextprotocol.client.transport; import java.io.BufferedReader; import java.io.IOException; @@ -30,6 +30,10 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; +import org.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; @@ -38,11 +42,6 @@ import reactor.core.publisher.Sinks; import reactor.core.scheduler.Scheduler; import reactor.core.scheduler.Schedulers; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; -import org.springframework.ai.mcp.util.Assert; - /** * Implementation of the MCP Stdio transport that communicates with a server process using * standard input/output streams. Messages are exchanged as newline-delimited JSON-RPC diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java similarity index 97% rename from mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java rename to mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java index 00971b7..131d42a 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import java.time.Duration; import java.util.HashMap; @@ -27,27 +27,26 @@ import java.util.function.Consumer; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; +import org.modelcontextprotocol.server.McpServer.PromptRegistration; +import org.modelcontextprotocol.server.McpServer.ResourceRegistration; +import org.modelcontextprotocol.server.McpServer.ToolRegistration; +import org.modelcontextprotocol.spec.DefaultMcpSession; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.ServerMcpTransport; +import org.modelcontextprotocol.spec.DefaultMcpSession.NotificationHandler; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.LoggingLevel; +import org.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; +import org.modelcontextprotocol.spec.McpSchema.Tool; +import org.modelcontextprotocol.util.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; -import org.springframework.ai.mcp.server.McpServer.PromptRegistration; -import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; -import org.springframework.ai.mcp.spec.DefaultMcpSession; -import org.springframework.ai.mcp.spec.DefaultMcpSession.NotificationHandler; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.LoggingLevel; -import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; -import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.ai.mcp.spec.ServerMcpTransport; -import org.springframework.ai.mcp.util.Utils; - /** * The Model Context Protocol (MCP) server implementation that provides asynchronous * communication using Project Reactor's Mono and Flux types. diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java similarity index 99% rename from mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java rename to mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java index 615fd51..3e28c3c 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServer.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import java.util.ArrayList; import java.util.HashMap; @@ -24,16 +24,15 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.ResourceTemplate; +import org.modelcontextprotocol.util.Assert; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.ResourceTemplate; -import org.springframework.ai.mcp.spec.McpTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; -import org.springframework.ai.mcp.util.Assert; - /** * Factory class for creating Model Context Protocol (MCP) servers. MCP servers expose * tools, resources, and prompts to AI models through a standardized interface. @@ -520,7 +519,8 @@ public interface McpServer { * @return This builder instance for method chaining * @throws IllegalArgumentException if consumers is null */ - public AsyncSpec rootsChangeConsumers(Function, Mono>... consumers) { + public AsyncSpec rootsChangeConsumers( + @SuppressWarnings("unchecked") Function, Mono>... consumers) { for (Function, Mono> consumer : consumers) { this.rootsChangeConsumers.add(consumer); } diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpServerFeatures.java similarity index 98% rename from mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java rename to mcp/src/main/java/org/modelcontextprotocol/server/McpServerFeatures.java index 2dd4e66..b97794d 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpServerFeatures.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpServerFeatures.java @@ -1,4 +1,4 @@ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import java.util.ArrayList; import java.util.HashMap; @@ -7,13 +7,12 @@ import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.util.Assert; +import org.modelcontextprotocol.util.Utils; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.util.Assert; -import org.springframework.ai.mcp.util.Utils; - /** * MCP server features specification that a particular server can choose to support. * diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java similarity index 94% rename from mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java rename to mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java index 004f7a3..1233f3a 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/McpSyncServer.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java @@ -14,16 +14,16 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; -import org.springframework.ai.mcp.server.McpServer.PromptRegistration; -import org.springframework.ai.mcp.server.McpServer.ResourceRegistration; -import org.springframework.ai.mcp.server.McpServer.ToolRegistration; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.LoggingMessageNotification; -import org.springframework.ai.mcp.util.Assert; +import org.modelcontextprotocol.server.McpServer.PromptRegistration; +import org.modelcontextprotocol.server.McpServer.ResourceRegistration; +import org.modelcontextprotocol.server.McpServer.ToolRegistration; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; +import org.modelcontextprotocol.util.Assert; /** * A synchronous implementation of the Model Context Protocol (MCP) server that wraps diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java b/mcp/src/main/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java similarity index 98% rename from mcp/src/main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java rename to mcp/src/main/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java index d5ae27b..37529d8 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.server.transport; +package org.modelcontextprotocol.server.transport; import java.io.BufferedReader; import java.io.IOException; @@ -32,14 +32,13 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.ServerMcpTransport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.ServerMcpTransport; - /** * A Servlet-based implementation of the MCP HTTP with Server-Sent Events (SSE) transport * specification. This implementation provides similar functionality to diff --git a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java similarity index 96% rename from mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java rename to mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java index e9b88d2..cf54cb0 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server.transport; +package org.modelcontextprotocol.server.transport; import java.io.BufferedReader; import java.io.IOException; @@ -28,6 +28,10 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.ServerMcpTransport; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; +import org.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; @@ -36,11 +40,6 @@ import reactor.core.publisher.Sinks; import reactor.core.scheduler.Scheduler; import reactor.core.scheduler.Schedulers; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; -import org.springframework.ai.mcp.spec.ServerMcpTransport; -import org.springframework.ai.mcp.util.Assert; - /** * Implementation of the MCP Stdio transport for servers that communicates using standard * input/output streams. Messages are exchanged as newline-delimited JSON-RPC messages diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/ClientMcpTransport.java b/mcp/src/main/java/org/modelcontextprotocol/spec/ClientMcpTransport.java similarity index 94% rename from mcp/src/main/java/org/springframework/ai/mcp/spec/ClientMcpTransport.java rename to mcp/src/main/java/org/modelcontextprotocol/spec/ClientMcpTransport.java index 4b5af3b..92c0973 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/ClientMcpTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/ClientMcpTransport.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.spec; +package org.modelcontextprotocol.spec; /** * Marker interface for the client-side MCP transport. diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java b/mcp/src/main/java/org/modelcontextprotocol/spec/DefaultMcpSession.java similarity index 99% rename from mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java rename to mcp/src/main/java/org/modelcontextprotocol/spec/DefaultMcpSession.java index fffd710..efddf80 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/DefaultMcpSession.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/DefaultMcpSession.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.spec; +package org.modelcontextprotocol.spec; import java.time.Duration; import java.util.Map; @@ -23,14 +23,13 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; import com.fasterxml.jackson.core.type.TypeReference; +import org.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.Disposable; import reactor.core.publisher.Mono; import reactor.core.publisher.MonoSink; -import org.springframework.ai.mcp.util.Assert; - /** * Default implementation of the MCP (Model Context Protocol) session that manages * bidirectional JSON-RPC communication between clients and servers. This implementation diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpError.java b/mcp/src/main/java/org/modelcontextprotocol/spec/McpError.java similarity index 88% rename from mcp/src/main/java/org/springframework/ai/mcp/spec/McpError.java rename to mcp/src/main/java/org/modelcontextprotocol/spec/McpError.java index 94170ff..d12c87e 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpError.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/McpError.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.spec; +package org.modelcontextprotocol.spec; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCResponse.JSONRPCError; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCResponse.JSONRPCError; public class McpError extends RuntimeException { diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java b/mcp/src/main/java/org/modelcontextprotocol/spec/McpSchema.java similarity index 99% rename from mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java rename to mcp/src/main/java/org/modelcontextprotocol/spec/McpSchema.java index e107fb6..e2d49c3 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSchema.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/McpSchema.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.spec; +package org.modelcontextprotocol.spec; import java.io.IOException; import java.util.HashMap; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSession.java b/mcp/src/main/java/org/modelcontextprotocol/spec/McpSession.java similarity index 98% rename from mcp/src/main/java/org/springframework/ai/mcp/spec/McpSession.java rename to mcp/src/main/java/org/modelcontextprotocol/spec/McpSession.java index 533baa8..e53f7c8 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpSession.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/McpSession.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.spec; +package org.modelcontextprotocol.spec; import java.util.Map; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpTransport.java b/mcp/src/main/java/org/modelcontextprotocol/spec/McpTransport.java similarity index 96% rename from mcp/src/main/java/org/springframework/ai/mcp/spec/McpTransport.java rename to mcp/src/main/java/org/modelcontextprotocol/spec/McpTransport.java index 48c6965..7d9e30c 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/McpTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/McpTransport.java @@ -14,15 +14,14 @@ * limitations under the License. */ -package org.springframework.ai.mcp.spec; +package org.modelcontextprotocol.spec; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; import reactor.core.publisher.Mono; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCMessage; - /** * Defines the asynchronous transport layer for the Model Context Protocol (MCP). * diff --git a/mcp/src/main/java/org/springframework/ai/mcp/spec/ServerMcpTransport.java b/mcp/src/main/java/org/modelcontextprotocol/spec/ServerMcpTransport.java similarity index 94% rename from mcp/src/main/java/org/springframework/ai/mcp/spec/ServerMcpTransport.java rename to mcp/src/main/java/org/modelcontextprotocol/spec/ServerMcpTransport.java index bb3d829..2b7f584 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/spec/ServerMcpTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/ServerMcpTransport.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.spec; +package org.modelcontextprotocol.spec; /** * Marker interface for the server-side MCP transport. diff --git a/mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java b/mcp/src/main/java/org/modelcontextprotocol/util/Assert.java similarity index 98% rename from mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java rename to mcp/src/main/java/org/modelcontextprotocol/util/Assert.java index 0dc1fc1..90e6b61 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/util/Assert.java +++ b/mcp/src/main/java/org/modelcontextprotocol/util/Assert.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.util; +package org.modelcontextprotocol.util; import java.util.Collection; diff --git a/mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java b/mcp/src/main/java/org/modelcontextprotocol/util/Utils.java similarity index 98% rename from mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java rename to mcp/src/main/java/org/modelcontextprotocol/util/Utils.java index 622ad26..9ba3ac1 100644 --- a/mcp/src/main/java/org/springframework/ai/mcp/util/Utils.java +++ b/mcp/src/main/java/org/modelcontextprotocol/util/Utils.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.util; +package org.modelcontextprotocol.util; import java.util.Collection; import java.util.Map; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java b/mcp/src/test/java/org/modelcontextprotocol/MockMcpTransport.java similarity index 90% rename from mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java rename to mcp/src/test/java/org/modelcontextprotocol/MockMcpTransport.java index 1622418..ccbc228 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/MockMcpTransport.java +++ b/mcp/src/test/java/org/modelcontextprotocol/MockMcpTransport.java @@ -14,24 +14,23 @@ * limitations under the License. */ -package org.springframework.ai.mcp; +package org.modelcontextprotocol; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.ServerMcpTransport; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCNotification; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; import reactor.core.scheduler.Schedulers; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCNotification; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; -import org.springframework.ai.mcp.spec.ServerMcpTransport; - /** * A mock implementation of the {@link ClientMcpTransport} and {@link ServerMcpTransport} * interfaces. diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java similarity index 92% rename from mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java rename to mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java index 0d7fd0b..8deb544 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.time.Duration; import java.util.Map; @@ -25,24 +25,23 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolRequest; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import org.modelcontextprotocol.spec.McpSchema.GetPromptRequest; +import org.modelcontextprotocol.spec.McpSchema.Prompt; +import org.modelcontextprotocol.spec.McpSchema.Resource; +import org.modelcontextprotocol.spec.McpSchema.Root; +import org.modelcontextprotocol.spec.McpSchema.SubscribeRequest; +import org.modelcontextprotocol.spec.McpSchema.Tool; +import org.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; +import org.modelcontextprotocol.spec.McpTransport; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptRequest; -import org.springframework.ai.mcp.spec.McpSchema.Prompt; -import org.springframework.ai.mcp.spec.McpSchema.Resource; -import org.springframework.ai.mcp.spec.McpSchema.Root; -import org.springframework.ai.mcp.spec.McpSchema.SubscribeRequest; -import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.ai.mcp.spec.McpSchema.UnsubscribeRequest; -import org.springframework.ai.mcp.spec.McpTransport; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java similarity index 89% rename from mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java rename to mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java index c046b9e..6dd181c 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/AbstractMcpSyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.time.Duration; import java.util.Map; @@ -23,22 +23,21 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - -import org.springframework.ai.mcp.spec.ClientMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.ListResourceTemplatesResult; -import org.springframework.ai.mcp.spec.McpSchema.ListResourcesResult; -import org.springframework.ai.mcp.spec.McpSchema.ListToolsResult; -import org.springframework.ai.mcp.spec.McpSchema.ReadResourceResult; -import org.springframework.ai.mcp.spec.McpSchema.Resource; -import org.springframework.ai.mcp.spec.McpSchema.Root; -import org.springframework.ai.mcp.spec.McpSchema.SubscribeRequest; -import org.springframework.ai.mcp.spec.McpSchema.TextContent; -import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.ai.mcp.spec.McpSchema.UnsubscribeRequest; +import org.modelcontextprotocol.spec.ClientMcpTransport; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolRequest; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.ListResourceTemplatesResult; +import org.modelcontextprotocol.spec.McpSchema.ListResourcesResult; +import org.modelcontextprotocol.spec.McpSchema.ListToolsResult; +import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import org.modelcontextprotocol.spec.McpSchema.Resource; +import org.modelcontextprotocol.spec.McpSchema.Root; +import org.modelcontextprotocol.spec.McpSchema.SubscribeRequest; +import org.modelcontextprotocol.spec.McpSchema.TextContent; +import org.modelcontextprotocol.spec.McpSchema.Tool; +import org.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java similarity index 97% rename from mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java rename to mcp/src/test/java/org/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java index c5b0ec8..59eb632 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientResponseHandlerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.time.Duration; import java.util.ArrayList; @@ -26,14 +26,13 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; +import org.modelcontextprotocol.MockMcpTransport; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.Root; import reactor.core.publisher.Mono; -import org.springframework.ai.mcp.MockMcpTransport; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.Root; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.awaitility.Awaitility.await; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpClientProtocolVersionTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/McpClientProtocolVersionTests.java similarity index 95% rename from mcp/src/test/java/org/springframework/ai/mcp/client/McpClientProtocolVersionTests.java rename to mcp/src/test/java/org/modelcontextprotocol/client/McpClientProtocolVersionTests.java index 7a0be90..f67a375 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpClientProtocolVersionTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/McpClientProtocolVersionTests.java @@ -14,20 +14,19 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.time.Duration; import java.util.List; import org.junit.jupiter.api.Test; +import org.modelcontextprotocol.MockMcpTransport; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.InitializeResult; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.MockMcpTransport; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.InitializeResult; - import static org.assertj.core.api.Assertions.assertThat; /** diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpAsyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java similarity index 90% rename from mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpAsyncClientTests.java rename to mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java index 86e6976..1e9000e 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java @@ -14,15 +14,14 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import org.junit.jupiter.api.Timeout; +import org.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import org.modelcontextprotocol.spec.ClientMcpTransport; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; -import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; -import org.springframework.ai.mcp.spec.ClientMcpTransport; - /** * Tests for the {@link McpSyncClient} with {@link HttpClientSseClientTransport}. * diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpSyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java similarity index 90% rename from mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpSyncClientTests.java rename to mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java index f33bc97..428df4b 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpSyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java @@ -14,15 +14,14 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import org.junit.jupiter.api.Timeout; +import org.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import org.modelcontextprotocol.spec.ClientMcpTransport; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; -import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; -import org.springframework.ai.mcp.spec.ClientMcpTransport; - /** * Tests for the {@link McpSyncClient} with {@link HttpClientSseClientTransport}. * diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpAsyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpAsyncClientTests.java similarity index 83% rename from mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpAsyncClientTests.java rename to mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpAsyncClientTests.java index 94c9b41..0ff41ed 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpAsyncClientTests.java @@ -14,13 +14,12 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import org.junit.jupiter.api.Timeout; - -import org.springframework.ai.mcp.client.transport.ServerParameters; -import org.springframework.ai.mcp.client.transport.StdioClientTransport; -import org.springframework.ai.mcp.spec.ClientMcpTransport; +import org.modelcontextprotocol.client.transport.ServerParameters; +import org.modelcontextprotocol.client.transport.StdioClientTransport; +import org.modelcontextprotocol.spec.ClientMcpTransport; /** * Tests for the {@link McpAsyncClient} with {@link StdioClientTransport}. diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpSyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpSyncClientTests.java similarity index 88% rename from mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpSyncClientTests.java rename to mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpSyncClientTests.java index 962bc2a..9b80223 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpSyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpSyncClientTests.java @@ -14,16 +14,15 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client; +package org.modelcontextprotocol.client; import java.util.concurrent.atomic.AtomicReference; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; - -import org.springframework.ai.mcp.client.transport.ServerParameters; -import org.springframework.ai.mcp.client.transport.StdioClientTransport; -import org.springframework.ai.mcp.spec.ClientMcpTransport; +import org.modelcontextprotocol.client.transport.ServerParameters; +import org.modelcontextprotocol.client.transport.StdioClientTransport; +import org.modelcontextprotocol.spec.ClientMcpTransport; import static org.assertj.core.api.Assertions.assertThat; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransportTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java similarity index 97% rename from mcp/src/test/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransportTests.java rename to mcp/src/test/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java index f50aeb3..fa99b4a 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/transport/HttpClientSseClientTransportTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.client.transport; +package org.modelcontextprotocol.client.transport; import java.time.Duration; import java.util.Map; @@ -25,14 +25,14 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; import org.springframework.http.codec.ServerSentEvent; import static org.assertj.core.api.Assertions.assertThat; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java similarity index 95% rename from mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java rename to mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java index 869d34a..7c26278 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import java.time.Duration; import java.util.List; @@ -22,22 +22,21 @@ import java.util.List; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import org.modelcontextprotocol.spec.McpSchema.Prompt; +import org.modelcontextprotocol.spec.McpSchema.PromptMessage; +import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import org.modelcontextprotocol.spec.McpSchema.Resource; +import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import org.modelcontextprotocol.spec.McpSchema.Tool; +import org.modelcontextprotocol.spec.McpTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; -import org.springframework.ai.mcp.spec.McpSchema.Prompt; -import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; -import org.springframework.ai.mcp.spec.McpSchema.ReadResourceResult; -import org.springframework.ai.mcp.spec.McpSchema.Resource; -import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.ai.mcp.spec.McpTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java similarity index 95% rename from mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java rename to mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java index f627bdc..2d3b163 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/AbstractMcpSyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java @@ -14,26 +14,25 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import java.util.List; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.GetPromptResult; -import org.springframework.ai.mcp.spec.McpSchema.Prompt; -import org.springframework.ai.mcp.spec.McpSchema.PromptMessage; -import org.springframework.ai.mcp.spec.McpSchema.ReadResourceResult; -import org.springframework.ai.mcp.spec.McpSchema.Resource; -import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.Tool; -import org.springframework.ai.mcp.spec.McpTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import org.modelcontextprotocol.spec.McpSchema.Prompt; +import org.modelcontextprotocol.spec.McpSchema.PromptMessage; +import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import org.modelcontextprotocol.spec.McpSchema.Resource; +import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import org.modelcontextprotocol.spec.McpSchema.Tool; +import org.modelcontextprotocol.spec.McpTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/McpServerProtocolVersionTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/McpServerProtocolVersionTests.java similarity index 97% rename from mcp/src/test/java/org/springframework/ai/mcp/server/McpServerProtocolVersionTests.java rename to mcp/src/test/java/org/modelcontextprotocol/server/McpServerProtocolVersionTests.java index f557921..7e0f63d 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/McpServerProtocolVersionTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/McpServerProtocolVersionTests.java @@ -14,15 +14,14 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import java.util.List; import java.util.UUID; import org.junit.jupiter.api.Test; - -import org.springframework.ai.mcp.MockMcpTransport; -import org.springframework.ai.mcp.spec.McpSchema; +import org.modelcontextprotocol.MockMcpTransport; +import org.modelcontextprotocol.spec.McpSchema; import static org.assertj.core.api.Assertions.assertThat; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpAsyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java similarity index 85% rename from mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpAsyncServerTests.java rename to mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java index 584938b..3a29dbf 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java @@ -14,13 +14,12 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Timeout; - -import org.springframework.ai.mcp.server.transport.HttpServletSseServerTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.modelcontextprotocol.server.transport.HttpServletSseServerTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; /** * Tests for {@link McpAsyncServer} using {@link HttpServletSseServerTransport}. diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpSyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java similarity index 85% rename from mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpSyncServerTests.java rename to mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java index 2d3390d..7f0d1c6 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpSyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java @@ -14,13 +14,12 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Timeout; - -import org.springframework.ai.mcp.server.transport.HttpServletSseServerTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.modelcontextprotocol.server.transport.HttpServletSseServerTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; /** * Tests for {@link McpSyncServer} using {@link HttpServletSseServerTransport}. diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpAsyncServerTests.java similarity index 85% rename from mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java rename to mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpAsyncServerTests.java index 9f15658..9ad20eb 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpAsyncServerTests.java @@ -14,12 +14,11 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import org.junit.jupiter.api.Timeout; - -import org.springframework.ai.mcp.server.transport.StdioServerTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.modelcontextprotocol.server.transport.StdioServerTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; /** * Tests for {@link McpAsyncServer} using {@link StdioServerTransport}. diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpSyncServerTests.java similarity index 85% rename from mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java rename to mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpSyncServerTests.java index 6bcc4be..26fbaaf 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/StdioMcpSyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpSyncServerTests.java @@ -14,12 +14,11 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server; +package org.modelcontextprotocol.server; import org.junit.jupiter.api.Timeout; - -import org.springframework.ai.mcp.server.transport.StdioServerTransport; -import org.springframework.ai.mcp.spec.ServerMcpTransport; +import org.modelcontextprotocol.server.transport.StdioServerTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; /** * Tests for {@link McpSyncServer} using {@link StdioServerTransport}. diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/BlockingInputStream.java b/mcp/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java similarity index 97% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/BlockingInputStream.java rename to mcp/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java index 96690db..b7de2b9 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/springframework/ai/mcp/server/transport/BlockingInputStream.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.server.transport; +package org.modelcontextprotocol.server.transport; import java.io.IOException; import java.io.InputStream; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java similarity index 88% rename from mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java rename to mcp/src/test/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java index bc6bc06..3ebf857 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.mcp.server.transport; +package org.modelcontextprotocol.server.transport; import java.time.Duration; import java.util.List; @@ -29,25 +29,23 @@ import org.apache.catalina.startup.Tomcat; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.modelcontextprotocol.client.McpClient; +import org.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import org.modelcontextprotocol.server.McpServer; +import org.modelcontextprotocol.server.McpServerFeatures; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.CallToolResult; +import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import org.modelcontextprotocol.spec.McpSchema.InitializeResult; +import org.modelcontextprotocol.spec.McpSchema.Role; +import org.modelcontextprotocol.spec.McpSchema.Root; +import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import org.modelcontextprotocol.spec.McpSchema.Tool; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.client.McpClient; -import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; -import org.springframework.ai.mcp.server.McpServer; -import org.springframework.ai.mcp.server.McpServerFeatures; -import org.springframework.ai.mcp.spec.McpError; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.ClientCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageRequest; -import org.springframework.ai.mcp.spec.McpSchema.CreateMessageResult; -import org.springframework.ai.mcp.spec.McpSchema.InitializeResult; -import org.springframework.ai.mcp.spec.McpSchema.Role; -import org.springframework.ai.mcp.spec.McpSchema.Root; -import org.springframework.ai.mcp.spec.McpSchema.ServerCapabilities; -import org.springframework.ai.mcp.spec.McpSchema.Tool; import org.springframework.web.client.RestClient; import static org.assertj.core.api.Assertions.assertThat; @@ -55,8 +53,6 @@ import static org.awaitility.Awaitility.await; public class HttpServletSseServerTransportIntegrationTests { - private static final Logger logger = LoggerFactory.getLogger(HttpServletSseServerTransportIntegrationTests.class); - private static final int PORT = 8184; private static final String MESSAGE_ENDPOINT = "/mcp/message"; @@ -239,7 +235,7 @@ public class HttpServletSseServerTransportIntegrationTests { new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { String response = RestClient.create() .get() - .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -274,7 +270,7 @@ public class HttpServletSseServerTransportIntegrationTests { new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { String response = RestClient.create() .get() - .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -290,7 +286,7 @@ public class HttpServletSseServerTransportIntegrationTests { var mcpClient = clientBuilder.toolsChangeConsumer(toolsUpdate -> { String response = RestClient.create() .get() - .uri("https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/transport/StdioServerTransportTests.java similarity index 96% rename from mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java rename to mcp/src/test/java/org/modelcontextprotocol/server/transport/StdioServerTransportTests.java index c6ce443..0dd790b 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/server/transport/StdioServerTransportTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/transport/StdioServerTransportTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.server.transport; +package org.modelcontextprotocol.server.transport; import java.io.ByteArrayOutputStream; import java.io.InputStream; @@ -27,12 +27,11 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.modelcontextprotocol.spec.McpSchema; +import org.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; - import static org.assertj.core.api.Assertions.assertThat; /** diff --git a/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java b/mcp/src/test/java/org/modelcontextprotocol/spec/DefaultMcpSessionTests.java similarity index 98% rename from mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java rename to mcp/src/test/java/org/modelcontextprotocol/spec/DefaultMcpSessionTests.java index 9af6513..0dcd1d4 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/spec/DefaultMcpSessionTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/spec/DefaultMcpSessionTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ai.mcp.spec; +package org.modelcontextprotocol.spec; import java.time.Duration; import java.util.Map; @@ -23,14 +23,13 @@ import com.fasterxml.jackson.core.type.TypeReference; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.modelcontextprotocol.MockMcpTransport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; import reactor.test.StepVerifier; -import org.springframework.ai.mcp.MockMcpTransport; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/ClientSessionTests2.java b/mcp/src/test/java/org/springframework/ai/mcp/attic/ClientSessionTests2.java deleted file mode 100644 index 47e6e73..0000000 --- a/mcp/src/test/java/org/springframework/ai/mcp/attic/ClientSessionTests2.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ai.mcp.attic; - -import java.time.Duration; - -import org.springframework.ai.mcp.client.McpClient; -import org.springframework.ai.mcp.client.McpSyncClient; -import org.springframework.ai.mcp.client.transport.ServerParameters; -import org.springframework.ai.mcp.client.transport.StdioClientTransport; -import org.springframework.ai.mcp.spec.McpSchema.ListResourcesResult; -import org.springframework.ai.mcp.spec.McpSchema.ListToolsResult; -import org.springframework.ai.mcp.spec.McpSchema.Resource; - -/** - * @author Christian Tzolov - * @since 1.0.0 - */ -public class ClientSessionTests2 { - - public static void main(String[] args) { - - var stdioParams = ServerParameters.builder("uv") - .args("--directory", "dir", "run", "mcp-server-sqlite", "--db-path", "~/test.db") - .build(); - - try (McpSyncClient clientSession = McpClient.using(new StdioClientTransport(stdioParams)) - .requestTimeout(Duration.ofSeconds(10)) - .sync()) { - - clientSession.initialize(); - - ListToolsResult tools = clientSession.listTools(null); - System.out.println("Tools: " + tools); - - clientSession.ping(); - - // CallToolRequest callToolRequest = new CallToolRequest("echo", - // Map.of("message", "Hello MCP Spring AI!")); - // CallToolResult callToolResult = - // clientSession.callTool(callToolRequest); - // System.out.println("Call Tool Result: " + callToolResult); - // // - // clientSession.sendRootsListChanged(); - - // Resources - ListResourcesResult resources = clientSession.listResources(null); - System.out.println("Resources Size: " + resources.resources().size()); - System.out.println("Resources: " + resources); - for (Resource resource : resources.resources()) { - System.out.println(clientSession.readResource(resource)); - - } - - // var resourceTemplate = clientSession.listResourceTemplates(null); - // System.out.println("Resource Templates: " + resourceTemplate); - - // stdioClient.awaitForExit(); - } - catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/ClientSessionTests3.java b/mcp/src/test/java/org/springframework/ai/mcp/attic/ClientSessionTests3.java deleted file mode 100644 index f147aa5..0000000 --- a/mcp/src/test/java/org/springframework/ai/mcp/attic/ClientSessionTests3.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ai.mcp.attic; - -import java.time.Duration; - -import org.springframework.ai.mcp.client.McpClient; -import org.springframework.ai.mcp.client.McpSyncClient; -import org.springframework.ai.mcp.client.transport.ServerParameters; -import org.springframework.ai.mcp.client.transport.StdioClientTransport; -import org.springframework.ai.mcp.spec.McpSchema.ListResourcesResult; -import org.springframework.ai.mcp.spec.McpSchema.ListToolsResult; -import org.springframework.ai.mcp.spec.McpSchema.Resource; - -/** - * @author Christian Tzolov - * @since 1.0.0 - */ -public class ClientSessionTests3 { - - public static void main(String[] args) { - - var stdioParams = ServerParameters.builder("uv") - .args("--directory", "dir", "run", "mcp-server-sqlite", "--db-path", "~/test.db") - .build(); - - McpSyncClient clientSession = null; - try { - - clientSession = McpClient.using(new StdioClientTransport(stdioParams)) - .requestTimeout(Duration.ofSeconds(10)) - .sync(); - - clientSession.initialize(); - - ListToolsResult tools = clientSession.listTools(null); - System.out.println("Tools: " + tools); - - clientSession.ping(); - - // Resources - ListResourcesResult resources = clientSession.listResources(null); - System.out.println("Resources Size: " + resources.resources().size()); - System.out.println("Resources: " + resources); - for (Resource resource : resources.resources()) { - System.out.println(clientSession.readResource(resource)); - - } - } - catch (Exception e) { - e.printStackTrace(); - } - finally { - if (clientSession != null) { - clientSession.close(); - } - } - } - -} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/SSEClient.java b/mcp/src/test/java/org/springframework/ai/mcp/attic/SSEClient.java deleted file mode 100644 index 3b75999..0000000 --- a/mcp/src/test/java/org/springframework/ai/mcp/attic/SSEClient.java +++ /dev/null @@ -1,183 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.attic; - -/** - * @author Christian Tzolov - * @since 1.0.0 - */ - -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; -import java.time.Duration; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.atomic.AtomicReference; -import java.util.regex.Pattern; -import java.util.stream.Stream; - -public class SSEClient { - - private final HttpClient httpClient; - - private static final Pattern EVENT_DATA_PATTERN = Pattern.compile("^data:(.+)$", Pattern.MULTILINE); - - private static final Pattern EVENT_ID_PATTERN = Pattern.compile("^id:(.+)$", Pattern.MULTILINE); - - private static final Pattern EVENT_TYPE_PATTERN = Pattern.compile("^event:(.+)$", Pattern.MULTILINE); - - public SSEClient() { - this.httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build(); - } - - public void subscribe(String url, SSEEventHandler eventHandler) { - HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(url)) - .header("Accept", "text/event-stream") - .header("Cache-Control", "no-cache") - .GET() - .build(); - - CompletableFuture future = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofLines()) - .thenAccept(response -> { - if (response.statusCode() == 200) { - processSSEStream(response, eventHandler); - } - else { - throw new RuntimeException("Failed to connect to SSE stream: " + response.statusCode()); - } - }); - - // Handle errors - future.exceptionally(throwable -> { - eventHandler.onError(throwable); - return null; - }); - } - - private void processSSEStream(HttpResponse> response, SSEEventHandler eventHandler) { - StringBuilder eventBuilder = new StringBuilder(); - AtomicReference currentEventId = new AtomicReference<>(); - AtomicReference currentEventType = new AtomicReference<>("message"); // default - // event - // type - - response.body().forEach(line -> { - if (line.isEmpty()) { - // Empty line means end of event - if (eventBuilder.length() > 0) { - String eventData = eventBuilder.toString(); - SSEEvent event = parseEvent(eventData, currentEventId.get(), currentEventType.get()); - eventHandler.onEvent(event); - eventBuilder.setLength(0); - } - } - else { - if (line.startsWith("data:")) { - var matcher = EVENT_DATA_PATTERN.matcher(line); - if (matcher.find()) { - eventBuilder.append(matcher.group(1).trim()).append("\n"); - } - } - else if (line.startsWith("id:")) { - var matcher = EVENT_ID_PATTERN.matcher(line); - if (matcher.find()) { - currentEventId.set(matcher.group(1).trim()); - } - } - else if (line.startsWith("event:")) { - var matcher = EVENT_TYPE_PATTERN.matcher(line); - if (matcher.find()) { - currentEventType.set(matcher.group(1).trim()); - } - } - } - }); - } - - private SSEEvent parseEvent(String eventData, String eventId, String eventType) { - return new SSEEvent(eventId, eventType, eventData.trim()); - } - - // Event handler interface - public interface SSEEventHandler { - - void onEvent(SSEEvent event); - - void onError(Throwable error); - - } - - // SSE Event class - public static class SSEEvent { - - private final String id; - - private final String type; - - private final String data; - - public SSEEvent(String id, String type, String data) { - this.id = id; - this.type = type; - this.data = data; - } - - public String getId() { - return id; - } - - public String getType() { - return type; - } - - public String getData() { - return data; - } - - @Override - public String toString() { - return "SSEEvent{" + "id='" + id + '\'' + ", type='" + type + '\'' + ", data='" + data + '\'' + '}'; - } - - } - - public static void main(String[] args) { - SSEClient sseClient = new SSEClient(); - - var eventHandler = new SSEEventHandler() { - @Override - public void onEvent(SSEEvent event) { - System.out.println("Received event: " + event); - } - - @Override - public void onError(Throwable error) { - System.out.println("Error: " + error); - } - }; - sseClient.subscribe("http://localhost:8080/sse", eventHandler); - - try { - Thread.sleep(100000); - } - catch (InterruptedException e) { - e.printStackTrace(); - } - } - -} \ No newline at end of file diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/ServerParametersParser.java b/mcp/src/test/java/org/springframework/ai/mcp/attic/ServerParametersParser.java deleted file mode 100644 index e093723..0000000 --- a/mcp/src/test/java/org/springframework/ai/mcp/attic/ServerParametersParser.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ai.mcp.attic; - -import java.util.List; -import java.util.Map; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.ObjectMapper; - -import org.springframework.ai.mcp.attic.ServerParametersParser.McpServerConfigurations.McpServerConfiguration; - -/** - * @author Christian Tzolov - * @author Dariusz Jędrzejczyk - */ - -public class ServerParametersParser { - - @JsonInclude(JsonInclude.Include.NON_ABSENT) - public record McpServerConfigurations(// @formatter:off - @JsonProperty("mcpServers") Map mcpServers) { - - @JsonInclude(JsonInclude.Include.NON_ABSENT) - public record McpServerConfiguration( - @JsonProperty("command") String command, - @JsonProperty("args") List args, - @JsonProperty("env") Map env) { - } - } // @formatter:on - - public static void main(String[] args) throws Exception { - ObjectMapper objectMapper = new ObjectMapper(); - - // Assuming the JSON is in a file named "servers.json" - String jsonInput = """ - { - "mcpServers": { - "filesystem": { - "command": "npx", - "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"] - }, - "git": { - "command": "uvx", - "args": ["mcp-server-git", "--repository", "path/to/git/repo"] - }, - "github": { - "command": "npx", - "args": ["-y", "@modelcontextprotocol/server-github"], - "env": { - "GITHUB_PERSONAL_ACCESS_TOKEN": "" - } - }, - "postgres": { - "command": "npx", - "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"] - } - } - } - """; - - // Deserialize JSON into McpServers - McpServerConfigurations servers = objectMapper.readValue(jsonInput, McpServerConfigurations.class); - - // Access individual servers - for (Map.Entry entry : servers.mcpServers().entrySet()) { - System.out.println("Key: " + entry.getKey()); - System.out.println("Command: " + entry.getValue().command()); - System.out.println("Arguments: " + String.join(", ", entry.getValue().args())); - System.out.println("Environment Variables: " + entry.getValue().env()); - System.out.println("-----------"); - } - } - -} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/_DemoServer.java_ b/mcp/src/test/java/org/springframework/ai/mcp/attic/_DemoServer.java_ deleted file mode 100644 index df1fc0b..0000000 --- a/mcp/src/test/java/org/springframework/ai/mcp/attic/_DemoServer.java_ +++ /dev/null @@ -1,61 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.attic; - -import java.util.List; -import java.util.Map; - -import com.fasterxml.jackson.databind.ObjectMapper; -import reactor.netty.http.server.HttpServer; - -import org.springframework.ai.mcp.server.McpServer; -import org.springframework.ai.mcp.server.transport.SseServerTransport; -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.http.server.reactive.HttpHandler; -import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; -import org.springframework.web.reactive.function.server.RouterFunctions; - -/** - * - * https://docs.spring.io/spring-framework/reference/web/webflux-functional.html#webflux-fn-running - * https://docs.spring.io/spring-framework/reference/web/webflux/reactive-spring.html#webflux-httphandler - * - * @author Christian Tzolov - */ - -public class DemoServer { - - public static void main(String[] args) { - SseServerTransport transport = new SseServerTransport(new ObjectMapper(), "/mcp/message"); - - var mcpServer = McpServer.using(transport) - .serverInfo("Weather Forecast", "1.0.0") - .tool(new McpSchema.Tool("weather", "Weather forecast tool by location", "{ \"type\": \"object\" }"), - (arguments) -> { - String city = (String) arguments.get("city"); - return new CallToolResult(List.of(), false); - }) - .async(); - - HttpHandler httpHandler = RouterFunctions.toHttpHandler(transport.getRouterFunction()); - ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); - HttpServer httpServer = HttpServer.create().port(8080).handle(adapter); - httpServer.bindNow().onDispose().block(); - - } - -} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/attic/_MainSSE.java_ b/mcp/src/test/java/org/springframework/ai/mcp/attic/_MainSSE.java_ deleted file mode 100644 index e4c3004..0000000 --- a/mcp/src/test/java/org/springframework/ai/mcp/attic/_MainSSE.java_ +++ /dev/null @@ -1,81 +0,0 @@ -/* -* Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.springframework.ai.mcp.attic; - -import java.time.Duration; -import java.util.Map; - -import org.springframework.ai.mcp.client.McpClient; -import org.springframework.ai.mcp.client.McpSyncClient; -import org.springframework.ai.mcp.client.transport.SseClientTransport; -import org.springframework.ai.mcp.spec.McpSchema.CallToolRequest; -import org.springframework.ai.mcp.spec.McpSchema.CallToolResult; -import org.springframework.ai.mcp.spec.McpSchema.ListPromptsResult; -import org.springframework.ai.mcp.spec.McpSchema.ListResourcesResult; -import org.springframework.ai.mcp.spec.McpSchema.ListToolsResult; -import org.springframework.ai.mcp.spec.McpSchema.Resource; -import org.springframework.web.reactive.function.client.WebClient; - -/** - * @author Christian Tzolov - * @since 1.0.0 - */ - -public class MainSSE { - - public static void main(String[] args) { - - try (McpSyncClient mcpClient = McpClient - .using(new SseClientTransport(WebClient.builder().baseUrl("http://localhost:3001"))) - .requestTimeout(Duration.ofSeconds(1000)) - .sync()) { - - mcpClient.initialize(); - - ListToolsResult tools = mcpClient.listTools(); - System.out.println("Tools: " + tools); - - mcpClient.ping(); - - CallToolRequest callToolRequest = new CallToolRequest("echo", Map.of("message", "Hello MCP Spring AI!")); - CallToolResult callToolResult = mcpClient.callTool(callToolRequest); - System.out.println("Call Tool Result: " + callToolResult); - - // mcpClient.sendRootsListChanged(); - - // Resources - ListResourcesResult resources = mcpClient.listResources(); - System.out.println("Resources Size: " + resources.resources().size()); - System.out.println("Resources: " + resources); - for (Resource resource : resources.resources()) { - System.out.println(mcpClient.readResource(resource)); - } - - var resourceTemplate = mcpClient.listResourceTemplates(); - System.out.println("Resource Templates: " + resourceTemplate); - - ListPromptsResult prompts = mcpClient.listPrompts(); - for (var prompt : prompts.prompts()) { - System.out.println("Prompt: " + prompt); - } - - } - catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/pom.xml b/pom.xml index 2092d7d..c30f00b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,12 +4,18 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.springframework.experimental + org.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT pom - https://github.com/spring-projects-experimental/spring-ai-mcp + https://github.com/modelcontextprotocol/java-sdk + + + https://github.com/modelcontextprotocol/java-sdk + git://github.com/modelcontextprotocol/java-sdk.git + git@github.com/modelcontextprotocol/java-sdk.git + Spring AI MCP Parent Java SDK and Spring Framework integration for the Model Context Protocol (MCP), enabling interaction with AI models and tools through a standardized interface @@ -36,18 +42,14 @@ Dariusz Jędrzejczyk - - https://github.com/spring-projects-experimental/spring-ai-mcp - git://github.com/spring-projects-experimental/spring-ai-mcp.git - git@github.com:spring-projects-experimental/spring-ai-mcp.git - + Github Issues - https://github.com/spring-projects-experimental/spring-ai-mcp/issues + https://github.com/modelcontextprotocol/java-sdk/issues Github Actions - https://github.com/spring-projects-experimental/spring-ai-mcp/actions + https://github.com/modelcontextprotocol/java-sdk/actions From 413d138d0cda29b95efb1b116a71c1f77e39cbcd Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 24 Jan 2025 23:03:17 +0100 Subject: [PATCH 083/505] Change license from Apache to MIT Resolves #1 Signed-off-by: Christian Tzolov --- LICENSE | 214 ++---------------- README.md | 2 +- .../antora/modules/ROOT/pages/overview.adoc | 2 +- .../MockMcpTransport.java | 12 - .../client/AbstractMcpAsyncClientTests.java | 12 - .../client/AbstractMcpSyncClientTests.java | 12 - .../server/AbstractMcpAsyncServerTests.java | 12 - .../server/AbstractMcpSyncServerTests.java | 12 - .../transport/WebFluxSseClientTransport.java | 12 - .../WebFluxSseIntegrationTests.java | 18 +- .../client/WebFluxSseMcpAsyncClientTests.java | 12 - .../client/WebFluxSseMcpSyncClientTests.java | 12 - .../WebFluxSseClientTransportTests.java | 12 - .../server/WebFluxSseMcpAsyncServerTests.java | 12 - .../server/WebFluxSseMcpSyncServerTests.java | 12 - .../server/transport/BlockingInputStream.java | 12 - .../transport/WebMvcSseServerTransport.java | 12 - .../WebMvcSseAsyncServerTransportTests.java | 12 - .../server/WebMvcSseIntegrationTests.java | 18 +- .../WebMvcSseSyncServerTransportTests.java | 12 - .../client/McpAsyncClient.java | 12 - .../client/McpClient.java | 12 - .../client/McpClientFeatures.java | 4 + .../client/McpSyncClient.java | 12 - .../client/transport/FlowSseClient.java | 12 - .../HttpClientSseClientTransport.java | 12 - .../client/transport/ServerParameters.java | 12 - .../transport/StdioClientTransport.java | 12 - .../server/McpAsyncServer.java | 12 - .../server/McpServer.java | 12 - .../server/McpServerFeatures.java | 4 + .../server/McpSyncServer.java | 12 - .../HttpServletSseServerTransport.java | 12 - .../transport/StdioServerTransport.java | 12 - .../spec/ClientMcpTransport.java | 12 - .../spec/DefaultMcpSession.java | 12 - .../modelcontextprotocol/spec/McpError.java | 12 - .../modelcontextprotocol/spec/McpSchema.java | 12 - .../modelcontextprotocol/spec/McpSession.java | 12 - .../spec/McpTransport.java | 12 - .../spec/ServerMcpTransport.java | 12 - .../org/modelcontextprotocol/util/Assert.java | 12 - .../org/modelcontextprotocol/util/Utils.java | 12 - .../MockMcpTransport.java | 12 - .../client/AbstractMcpAsyncClientTests.java | 12 - .../client/AbstractMcpSyncClientTests.java | 12 - .../McpAsyncClientResponseHandlerTests.java | 12 - .../client/McpClientProtocolVersionTests.java | 12 - .../client/ServletSseMcpAsyncClientTests.java | 12 - .../client/ServletSseMcpSyncClientTests.java | 12 - .../client/StdioMcpAsyncClientTests.java | 12 - .../client/StdioMcpSyncClientTests.java | 12 - .../HttpClientSseClientTransportTests.java | 12 - .../server/AbstractMcpAsyncServerTests.java | 12 - .../server/AbstractMcpSyncServerTests.java | 12 - .../server/McpServerProtocolVersionTests.java | 12 - .../server/ServletSseMcpAsyncServerTests.java | 12 - .../server/ServletSseMcpSyncServerTests.java | 12 - .../server/StdioMcpAsyncServerTests.java | 12 - .../server/StdioMcpSyncServerTests.java | 12 - .../server/transport/BlockingInputStream.java | 12 - ...letSseServerTransportIntegrationTests.java | 18 +- .../transport/StdioServerTransportTests.java | 12 - .../spec/DefaultMcpSessionTests.java | 12 - pom.xml | 13 +- 65 files changed, 42 insertions(+), 923 deletions(-) diff --git a/LICENSE b/LICENSE index 261eeb9..252046e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,21 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +MIT License - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +Copyright (c) 2025 Broadcom - 1. Definitions. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 6982146..3d985bb 100644 --- a/README.md +++ b/README.md @@ -137,4 +137,4 @@ Contributions are welcome! Please: ## License -This project is licensed under the [Apache License 2.0](LICENSE). +This project is licensed under the [MIT](LICENSE). diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index d428584..28d4cb4 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -123,4 +123,4 @@ mvn test == License -This project is licensed under the link:LICENSE[Apache License 2.0]. +This project is licensed under the link:LICENSE[MIT]. diff --git a/mcp-test/src/main/java/org/modelcontextprotocol/MockMcpTransport.java b/mcp-test/src/main/java/org/modelcontextprotocol/MockMcpTransport.java index c15d922..9660d19 100644 --- a/mcp-test/src/main/java/org/modelcontextprotocol/MockMcpTransport.java +++ b/mcp-test/src/main/java/org/modelcontextprotocol/MockMcpTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol; diff --git a/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java b/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java index ccc84cc..b4e2b30 100644 --- a/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java +++ b/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java b/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java index 7f02fa2..8115903 100644 --- a/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java +++ b/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java b/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java index a9360cb..43f0ff8 100644 --- a/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java +++ b/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java b/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java index 83fae26..8a10bf8 100644 --- a/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java +++ b/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java index 78a4291..3a8375b 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client.transport; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/WebFluxSseIntegrationTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/WebFluxSseIntegrationTests.java index 9ac21b1..67a9191 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/WebFluxSseIntegrationTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/WebFluxSseIntegrationTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol; @@ -373,7 +361,7 @@ public class WebFluxSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/specification/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -413,7 +401,7 @@ public class WebFluxSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/specification/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -430,7 +418,7 @@ public class WebFluxSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/specification/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java index 9f726c4..2299bf3 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java index 4371bff..a154987 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java index ec47529..80de0a8 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client.transport; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java index b149fa0..5a4f797 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java index 6d00edc..df9eacd 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java index b7de2b9..ec4b136 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. */ package org.modelcontextprotocol.server.transport; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java index cfbc467..aa00066 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server.transport; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java index aad11c5..846482f 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseIntegrationTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseIntegrationTests.java index 0c9f629..96fbc3e 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseIntegrationTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseIntegrationTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; @@ -407,7 +395,7 @@ public class WebMvcSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/specification/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -444,7 +432,7 @@ public class WebMvcSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/specification/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -461,7 +449,7 @@ public class WebMvcSseIntegrationTests { // perform a blocking call to a remote service String response = RestClient.create() .get() - .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/specification/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java index 545ec01..8024173 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java index 8ec3f9c..4962b37 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java index 83801c9..7cf5341 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpClientFeatures.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpClientFeatures.java index 9733b86..6cbc456 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpClientFeatures.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpClientFeatures.java @@ -1,3 +1,7 @@ +/* + * Copyright 2024-2024 the original author or authors. + */ + package org.modelcontextprotocol.client; import java.util.ArrayList; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpSyncClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpSyncClient.java index fa464a7..a44afbd 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpSyncClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpSyncClient.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/transport/FlowSseClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/transport/FlowSseClient.java index 2f6d798..f382f9c 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/transport/FlowSseClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/transport/FlowSseClient.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. */ package org.modelcontextprotocol.client.transport; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java b/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java index 4a48d7c..dc886a5 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client.transport; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/transport/ServerParameters.java b/mcp/src/main/java/org/modelcontextprotocol/client/transport/ServerParameters.java index 9a0e574..04f5f88 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/transport/ServerParameters.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/transport/ServerParameters.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client.transport; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/transport/StdioClientTransport.java b/mcp/src/main/java/org/modelcontextprotocol/client/transport/StdioClientTransport.java index b30eb59..ec7c816 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/transport/StdioClientTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/transport/StdioClientTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client.transport; diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java index 131d42a..04c6a85 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java index 3e28c3c..7564f00 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpServerFeatures.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpServerFeatures.java index b97794d..162b431 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpServerFeatures.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpServerFeatures.java @@ -1,3 +1,7 @@ +/* + * Copyright 2024-2024 the original author or authors. + */ + package org.modelcontextprotocol.server; import java.util.ArrayList; diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java index 1233f3a..898b1c6 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java b/mcp/src/main/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java index 37529d8..6a56798 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. */ package org.modelcontextprotocol.server.transport; diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java index cf54cb0..e0dd865 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server.transport; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/ClientMcpTransport.java b/mcp/src/main/java/org/modelcontextprotocol/spec/ClientMcpTransport.java index 92c0973..eff6c15 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/ClientMcpTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/ClientMcpTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. */ package org.modelcontextprotocol.spec; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/DefaultMcpSession.java b/mcp/src/main/java/org/modelcontextprotocol/spec/DefaultMcpSession.java index efddf80..5a89a1a 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/DefaultMcpSession.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/DefaultMcpSession.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.spec; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/McpError.java b/mcp/src/main/java/org/modelcontextprotocol/spec/McpError.java index d12c87e..df79238 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/McpError.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/McpError.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. */ package org.modelcontextprotocol.spec; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/McpSchema.java b/mcp/src/main/java/org/modelcontextprotocol/spec/McpSchema.java index e2d49c3..153ca99 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/McpSchema.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/McpSchema.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.spec; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/McpSession.java b/mcp/src/main/java/org/modelcontextprotocol/spec/McpSession.java index e53f7c8..50ecc52 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/McpSession.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/McpSession.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.spec; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/McpTransport.java b/mcp/src/main/java/org/modelcontextprotocol/spec/McpTransport.java index 7d9e30c..577ae5b 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/McpTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/McpTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.spec; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/ServerMcpTransport.java b/mcp/src/main/java/org/modelcontextprotocol/spec/ServerMcpTransport.java index 2b7f584..182be85 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/ServerMcpTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/spec/ServerMcpTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. */ package org.modelcontextprotocol.spec; diff --git a/mcp/src/main/java/org/modelcontextprotocol/util/Assert.java b/mcp/src/main/java/org/modelcontextprotocol/util/Assert.java index 90e6b61..bee6c44 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/util/Assert.java +++ b/mcp/src/main/java/org/modelcontextprotocol/util/Assert.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.util; diff --git a/mcp/src/main/java/org/modelcontextprotocol/util/Utils.java b/mcp/src/main/java/org/modelcontextprotocol/util/Utils.java index 9ba3ac1..2a8da98 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/util/Utils.java +++ b/mcp/src/main/java/org/modelcontextprotocol/util/Utils.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.util; diff --git a/mcp/src/test/java/org/modelcontextprotocol/MockMcpTransport.java b/mcp/src/test/java/org/modelcontextprotocol/MockMcpTransport.java index ccbc228..c62c0d4 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/MockMcpTransport.java +++ b/mcp/src/test/java/org/modelcontextprotocol/MockMcpTransport.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java index 8deb544..e76e389 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java index 6dd181c..79378fa 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java index 59eb632..6a4ee28 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/McpClientProtocolVersionTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/McpClientProtocolVersionTests.java index f67a375..88e18f8 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/McpClientProtocolVersionTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/McpClientProtocolVersionTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java index 1e9000e..5c841b6 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java index 428df4b..8b6f257 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpAsyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpAsyncClientTests.java index 0ff41ed..58de6f8 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpAsyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpAsyncClientTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpSyncClientTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpSyncClientTests.java index 9b80223..d5607fd 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpSyncClientTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpSyncClientTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java b/mcp/src/test/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java index fa99b4a..74593d3 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.client.transport; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java index 7c26278..0913d29 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java index 2d3b163..cc1b4fe 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/McpServerProtocolVersionTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/McpServerProtocolVersionTests.java index 7e0f63d..1e05231 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/McpServerProtocolVersionTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/McpServerProtocolVersionTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java index 3a29dbf..52836e4 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java index 7f0d1c6..14f6e30 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpAsyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpAsyncServerTests.java index 9ad20eb..717b6b0 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpAsyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpAsyncServerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpSyncServerTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpSyncServerTests.java index 26fbaaf..2bc8491 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpSyncServerTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpSyncServerTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java b/mcp/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java index b7de2b9..ec4b136 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* https://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. */ package org.modelcontextprotocol.server.transport; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java index 3ebf857..0e6802c 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024 - 2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server.transport; @@ -235,7 +223,7 @@ public class HttpServletSseServerTransportIntegrationTests { new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { String response = RestClient.create() .get() - .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/specification/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -270,7 +258,7 @@ public class HttpServletSseServerTransportIntegrationTests { new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), request -> { String response = RestClient.create() .get() - .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/specification/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); @@ -286,7 +274,7 @@ public class HttpServletSseServerTransportIntegrationTests { var mcpClient = clientBuilder.toolsChangeConsumer(toolsUpdate -> { String response = RestClient.create() .get() - .uri("https://github.com/modelcontextprotocol/java-sdk/blob/main/README.md") + .uri("https://github.com/modelcontextprotocol/specification/blob/main/README.md") .retrieve() .body(String.class); assertThat(response).isNotBlank(); diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/transport/StdioServerTransportTests.java b/mcp/src/test/java/org/modelcontextprotocol/server/transport/StdioServerTransportTests.java index 0dd790b..f564a87 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/transport/StdioServerTransportTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/server/transport/StdioServerTransportTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.server.transport; diff --git a/mcp/src/test/java/org/modelcontextprotocol/spec/DefaultMcpSessionTests.java b/mcp/src/test/java/org/modelcontextprotocol/spec/DefaultMcpSessionTests.java index 0dcd1d4..6ee5345 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/spec/DefaultMcpSessionTests.java +++ b/mcp/src/test/java/org/modelcontextprotocol/spec/DefaultMcpSessionTests.java @@ -1,17 +1,5 @@ /* * Copyright 2024-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. */ package org.modelcontextprotocol.spec; diff --git a/pom.xml b/pom.xml index c30f00b..97dd9a2 100644 --- a/pom.xml +++ b/pom.xml @@ -26,13 +26,12 @@ https://spring.io - - - Apache 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - repo - - + + + MIT License + http://www.opensource.org/licenses/mit-license.php + + From f91fe15ec6bc20c938c20ef96a062d1e66e428d2 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 24 Jan 2025 23:25:13 +0100 Subject: [PATCH 084/505] Remove redundand code Resolves #4 Signed-off-by: Christian Tzolov --- .../transport/_SseServerTransportTests.java_ | 283 --------- .../client/McpAsyncClient.java | 166 +----- .../client/McpClient.java | 256 -------- .../server/McpAsyncServer.java | 241 +------- .../server/McpServer.java | 561 +----------------- .../server/McpSyncServer.java | 33 -- 6 files changed, 7 insertions(+), 1533 deletions(-) delete mode 100644 mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/_SseServerTransportTests.java_ diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/_SseServerTransportTests.java_ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/_SseServerTransportTests.java_ deleted file mode 100644 index 80f31a2..0000000 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/_SseServerTransportTests.java_ +++ /dev/null @@ -1,283 +0,0 @@ -package org.springframework.ai.mcp.server.transport; - -import java.time.Duration; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Timeout; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import reactor.core.Disposable; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; -import reactor.test.StepVerifier; - -import org.springframework.ai.mcp.spec.McpSchema; -import org.springframework.ai.mcp.spec.McpSchema.JSONRPCRequest; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.codec.ServerSentEvent; -import org.springframework.test.web.reactive.server.WebTestClient; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -/** - * Tests for the {@link SseServerTransport} class. - * - * @author Christian Tzolov - */ -@Timeout(15) -class SseServerTransportTests { - - private static final Logger logger = LoggerFactory.getLogger(SseServerTransportTests.class); - - private ObjectMapper objectMapper; - - private String messageEndpoint; - - private SseServerTransport transport; - - private WebTestClient webTestClient; - - @BeforeEach - void setUp() { - objectMapper = new ObjectMapper(); - messageEndpoint = "/message"; - transport = new SseServerTransport(objectMapper, messageEndpoint); - webTestClient = WebTestClient.bindToRouterFunction(transport.getRouterFunction()).build(); - } - - @Test - void constructorValidation() { - assertThatThrownBy(() -> new SseServerTransport(null, "/message")).isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("ObjectMapper must not be null"); - - assertThatThrownBy(() -> new SseServerTransport(new ObjectMapper(), null)) - .isInstanceOf(IllegalArgumentException.class) - .hasMessageContaining("Message endpoint must not be null"); - } - - @Test - void testSseConnectionEstablishment() { - List> events = new ArrayList<>(); - - webTestClient.get() - .uri("/sse") - .accept(MediaType.TEXT_EVENT_STREAM) - .exchange() - .expectStatus() - .isOk() - .expectHeader() - .contentTypeCompatibleWith(MediaType.TEXT_EVENT_STREAM) - .returnResult(String.class) - .getResponseBody() - .map(data -> ServerSentEvent.builder().data(data).build()) - .take(1) // Take only the initial endpoint event - .subscribe(events::add); - - // Wait a bit for the event to be received - StepVerifier.create(Mono.delay(Duration.ofMillis(500))).expectNextCount(1).verifyComplete(); - - assertThat(events).hasSize(1); - assertThat(events.get(0).data()).isEqualTo(messageEndpoint); - } - - @Test - void testMessageHandling() { - AtomicReference receivedMessage = new AtomicReference<>(); - - // Set up message handler - transport.connect(message -> { - message.doOnNext(receivedMessage::set).subscribe(); - return Mono.empty(); - }).block(); - - // Create a test message - JSONRPCRequest testMessage = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "test-method", "test-id", - Map.of("key", "value")); - - // Send message to endpoint - webTestClient.post() - .uri(messageEndpoint) - .contentType(MediaType.APPLICATION_JSON) - .bodyValue(testMessage) - .exchange() - .expectStatus() - .isOk(); - - // Verify the message was received and processed - assertThat(receivedMessage.get()).isNotNull(); - McpSchema.JSONRPCRequest receivedRequest = (McpSchema.JSONRPCRequest) receivedMessage.get(); - assertThat(receivedRequest.id()).isEqualTo(testMessage.id()); - assertThat(receivedRequest.method()).isEqualTo(testMessage.method()); - } - - @Test - @Disabled("Flaky test") - void testBroadcastMessage() { - // Create test clients - int clientCount = 3; - CountDownLatch connectLatch = new CountDownLatch(clientCount); - CountDownLatch messageLatch = new CountDownLatch(clientCount); - - List>> allReceivedEvents = new ArrayList<>(); - List subscriptions = new ArrayList<>(); - - // Connect clients - for (int i = 0; i < clientCount; i++) { - List> clientEvents = new ArrayList<>(); - allReceivedEvents.add(clientEvents); - - Flux> eventStream = webTestClient.get() - .uri("/sse") - .accept(MediaType.TEXT_EVENT_STREAM) - .exchange() - .expectStatus() - .isOk() - .returnResult(String.class) - .getResponseBody() - .map(data -> ServerSentEvent.builder().data(data).build()); - - Disposable subscription = eventStream.doOnNext(event -> { - clientEvents.add(event); - if (event.event() != null && event.event().equals(SseServerTransport.ENDPOINT_EVENT_TYPE)) { - connectLatch.countDown(); - } - else if (event.event() != null && event.event().equals(SseServerTransport.MESSAGE_EVENT_TYPE)) { - messageLatch.countDown(); - } - }).subscribe(); - - subscriptions.add(subscription); - } - - // Wait for all clients to connect - try { - assertThat(connectLatch.await(5, TimeUnit.SECONDS)).isTrue(); - } - catch (InterruptedException e) { - throw new RuntimeException(e); - } - - // Verify initial connections - for (List> events : allReceivedEvents) { - assertThat(events).hasSize(1); - assertThat(events.get(0).data()).isEqualTo(messageEndpoint); - } - - // Give clients time to fully establish their subscriptions - logger.debug("Waiting for subscriptions to stabilize..."); - try { - Thread.sleep(1000); - } - catch (InterruptedException e) { - throw new RuntimeException(e); - } - logger.debug("Sending broadcast message to {} clients", clientCount); - - // Send broadcast message - JSONRPCRequest broadcastMessage = new JSONRPCRequest(McpSchema.JSONRPC_VERSION, "broadcast", "broadcast-id", - Map.of("message", "Hello all!")); - - // Send the message - transport.sendMessage(broadcastMessage).block(Duration.ofSeconds(5)); - - // Wait for all clients to receive the broadcast - try { - assertThat(messageLatch.await(5, TimeUnit.SECONDS)).isTrue(); - } - catch (InterruptedException e) { - throw new RuntimeException(e); - } - - // Verify each client received both messages - for (List> events : allReceivedEvents) { - assertThat(events).hasSize(2); - assertThat(events.get(0).data()).isEqualTo(messageEndpoint); - assertThat(events.get(1).data()).contains("broadcast-id"); - } - - // Cleanup - subscriptions.forEach(Disposable::dispose); - } - - @Test - void testGracefulShutdown() { - // Connect a client - Flux> eventStream = webTestClient.get() - .uri("/sse") - .accept(MediaType.TEXT_EVENT_STREAM) - .exchange() - .expectStatus() - .isOk() - .returnResult(String.class) - .getResponseBody() - .map(data -> ServerSentEvent.builder().data(data).build()); - - List> receivedEvents = new ArrayList<>(); - eventStream.subscribe(receivedEvents::add); - - // Wait for connection - StepVerifier.create(Mono.delay(Duration.ofMillis(500))).expectNextCount(1).verifyComplete(); - - // Initiate shutdown - transport.closeGracefully().block(Duration.ofSeconds(5)); - - // Verify server rejects new connections with timeout - webTestClient.get() - .uri("/sse") - .accept(MediaType.TEXT_EVENT_STREAM) - .exchange() - .expectStatus() - .isEqualTo(HttpStatus.SERVICE_UNAVAILABLE) - .expectBody(String.class) - .isEqualTo("Server is shutting down"); - - // Verify server rejects new messages with timeout - webTestClient.post() - .uri(messageEndpoint) - .contentType(MediaType.APPLICATION_JSON) - .bodyValue(""" - { - "jsonrpc": "2.0", - "method": "test", - "id": "1", - "params": {} - } - """) - .exchange() - .expectStatus() - .isEqualTo(HttpStatus.SERVICE_UNAVAILABLE) - .expectBody(String.class) - .isEqualTo("Server is shutting down"); - } - - @Test - void testInvalidMessageHandling() { - // Test invalid JSON - webTestClient.post() - .uri(messageEndpoint) - .contentType(MediaType.APPLICATION_JSON) - .bodyValue("invalid json") - .exchange() - .expectStatus() - .isBadRequest(); - - // Test invalid message format - webTestClient.post().uri(messageEndpoint).contentType(MediaType.APPLICATION_JSON).bodyValue(""" - { - "invalid": "message" - } - """).exchange().expectStatus().isBadRequest(); - } - -} diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java index 4962b37..875de37 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java @@ -15,24 +15,21 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import org.modelcontextprotocol.spec.ClientMcpTransport; import org.modelcontextprotocol.spec.DefaultMcpSession; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpTransport; import org.modelcontextprotocol.spec.DefaultMcpSession.NotificationHandler; import org.modelcontextprotocol.spec.DefaultMcpSession.RequestHandler; +import org.modelcontextprotocol.spec.McpError; +import org.modelcontextprotocol.spec.McpSchema; import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; import org.modelcontextprotocol.spec.McpSchema.GetPromptRequest; import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; -import org.modelcontextprotocol.spec.McpSchema.Implementation; import org.modelcontextprotocol.spec.McpSchema.ListPromptsResult; import org.modelcontextprotocol.spec.McpSchema.LoggingLevel; import org.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; import org.modelcontextprotocol.spec.McpSchema.PaginatedRequest; import org.modelcontextprotocol.spec.McpSchema.Root; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities.RootCapabilities; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities.Sampling; +import org.modelcontextprotocol.spec.McpTransport; import org.modelcontextprotocol.util.Assert; import org.modelcontextprotocol.util.Utils; import org.slf4j.Logger; @@ -221,107 +218,6 @@ public class McpAsyncClient { } - /** - * Create a new McpAsyncClient with the given transport and session request-response - * timeout. - * @param transport the transport to use. - * @param requestTimeout the session request-response timeout. - * @param clientInfo the client implementation information. - * @param clientCapabilities the client capabilities. - * @param roots the roots. - * @param toolsChangeConsumers the tools change consumers. - * @param resourcesChangeConsumers the resources change consumers. - * @param promptsChangeConsumers the prompts change consumers. - * @param loggingConsumers the logging consumers. - * @param samplingHandler the sampling handler. - * @deprecated Use {@link McpClient#async(ClientMcpTransport)} to obtain an instance. - */ - @Deprecated - public McpAsyncClient(ClientMcpTransport transport, Duration requestTimeout, Implementation clientInfo, - ClientCapabilities clientCapabilities, Map roots, - List>> toolsChangeConsumers, - List>> resourcesChangeConsumers, - List>> promptsChangeConsumers, - List> loggingConsumers, - Function samplingHandler) { - - Assert.notNull(transport, "Transport must not be null"); - Assert.notNull(requestTimeout, "Request timeout must not be null"); - Assert.notNull(clientInfo, "Client info must not be null"); - - this.protocolVersions = List.of(McpSchema.LATEST_PROTOCOL_VERSION); - - this.clientInfo = clientInfo; - - this.clientCapabilities = (clientCapabilities != null) ? clientCapabilities - : new McpSchema.ClientCapabilities(null, !Utils.isEmpty(roots) ? new RootCapabilities(false) : null, - samplingHandler != null ? new Sampling() : null); - - this.transport = transport; - - this.roots = roots != null ? new ConcurrentHashMap<>(roots) : new ConcurrentHashMap<>(); - - // Request Handlers - Map> requestHandlers = new HashMap<>(); - - // Roots List Request Handler - if (this.clientCapabilities.roots() != null) { - requestHandlers.put(McpSchema.METHOD_ROOTS_LIST, rootsListRequestHandler()); - } - - // Sampling Handler - if (this.clientCapabilities.sampling() != null) { - if (samplingHandler == null) { - throw new McpError("Sampling handler must not be null when client capabilities include sampling"); - } - this.samplingHandler = r -> Mono.fromCallable(() -> samplingHandler.apply(r)) - .subscribeOn(Schedulers.boundedElastic()); - requestHandlers.put(McpSchema.METHOD_SAMPLING_CREATE_MESSAGE, samplingCreateMessageHandler()); - } - - // Notification Handlers - Map notificationHandlers = new HashMap<>(); - - // Tools Change Notification - List>> toolsChangeConsumersFinal = new ArrayList<>(); - toolsChangeConsumersFinal.add((notification) -> logger.info("Tools changed: {}", notification)); - if (!Utils.isEmpty(toolsChangeConsumers)) { - toolsChangeConsumersFinal.addAll(toolsChangeConsumers); - } - notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_TOOLS_LIST_CHANGED, - toolsChangeNotificationHandler(toolsChangeConsumersFinal)); - - // Resources Change Notification - List>> resourcesChangeConsumersFinal = new ArrayList<>(); - resourcesChangeConsumersFinal.add((notification) -> logger.info("Resources changed: {}", notification)); - if (!Utils.isEmpty(resourcesChangeConsumers)) { - resourcesChangeConsumersFinal.addAll(resourcesChangeConsumers); - } - notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_RESOURCES_LIST_CHANGED, - resourcesChangeNotificationHandler(resourcesChangeConsumersFinal)); - - // Prompts Change Notification - List>> promptsChangeConsumersFinal = new ArrayList<>(); - promptsChangeConsumersFinal.add((notification) -> logger.info("Prompts changed: {}", notification)); - if (!Utils.isEmpty(promptsChangeConsumers)) { - promptsChangeConsumersFinal.addAll(promptsChangeConsumers); - } - notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_PROMPTS_LIST_CHANGED, - promptsChangeNotificationHandler(promptsChangeConsumersFinal)); - - // Utility Logging Notification - List> loggingConsumersFinal = new ArrayList<>(); - loggingConsumersFinal.add((notification) -> logger.info("Logging: {}", notification)); - if (!Utils.isEmpty(loggingConsumers)) { - loggingConsumersFinal.addAll(loggingConsumers); - } - notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_MESSAGE, - loggingNotificationHandler(loggingConsumersFinal)); - - this.mcpSession = new DefaultMcpSession(requestTimeout, transport, requestHandlers, notificationHandlers); - - } - // -------------------------- // Lifecycle // -------------------------- @@ -587,32 +483,6 @@ public class McpAsyncClient { LIST_TOOLS_RESULT_TYPE_REF); } - /** - * Creates a notification handler for tools/list_changed notifications from the - * server. When the server's available tools change, it sends a notification to inform - * connected clients. This handler automatically fetches the updated tool list and - * distributes it to all registered consumers. - * @param toolsChangeConsumers List of consumers that will be notified when the tools - * list changes. Each consumer receives the complete updated list of tools. - * @return A NotificationHandler that processes tools/list_changed notifications by: - * 1. Fetching the current list of tools from the server 2. Distributing the updated - * list to all registered consumers 3. Handling any errors that occur during this - * process - */ - @Deprecated - private NotificationHandler toolsChangeNotificationHandler( - List>> toolsChangeConsumers) { - - return params -> listTools().flatMap(listToolsResult -> Mono.fromRunnable(() -> { - for (Consumer> toolsChangeConsumer : toolsChangeConsumers) { - toolsChangeConsumer.accept(listToolsResult.tools()); - } - }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { - logger.error("Error handling tools list change notification", error); - return Mono.empty(); - }).then(); // Convert to Mono - } - /** * Creates a notification handler for tools/list_changed notifications from the * server. When the server's available tools change, it sends a notification to inform @@ -745,20 +615,6 @@ public class McpAsyncClient { VOID_TYPE_REFERENCE); } - @Deprecated - private NotificationHandler resourcesChangeNotificationHandler( - List>> resourcesChangeConsumers) { - - return params -> listResources().flatMap(listResourcesResult -> Mono.fromRunnable(() -> { - for (Consumer> resourceChangeConsumer : resourcesChangeConsumers) { - resourceChangeConsumer.accept(listResourcesResult.resources()); - } - }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { - logger.error("Error handling resources list change notification", error); - return Mono.empty(); - }).then(); - } - private NotificationHandler asyncResourcesChangeNotificationHandler( List, Mono>> resourcesChangeConsumers) { return params -> listResources().flatMap(listResourcesResult -> Flux.fromIterable(resourcesChangeConsumers) @@ -816,22 +672,6 @@ public class McpAsyncClient { return this.mcpSession.sendNotification(McpSchema.METHOD_NOTIFICATION_PROMPTS_LIST_CHANGED); } - @Deprecated - private NotificationHandler promptsChangeNotificationHandler( - List>> promptsChangeConsumers) { - - return params -> {// @formatter:off - return listPrompts().flatMap(listPromptsResult -> Mono.fromRunnable(() -> { - for (Consumer> promptChangeConsumer : promptsChangeConsumers) { - promptChangeConsumer.accept(listPromptsResult.prompts()); - } - }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { - logger.error("Error handling prompts list change notification", error); - return Mono.empty(); - }).then(); // Convert to Mono - }; // @formatter:on - } - private NotificationHandler asyncPromptsChangeNotificationHandler( List, Mono>> promptsChangeConsumers) { return params -> listPrompts().flatMap(listPromptsResult -> Flux.fromIterable(promptsChangeConsumers) diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java index 7cf5341..2580ab0 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java @@ -135,262 +135,6 @@ public interface McpClient { return new AsyncSpec(transport); } - /** - * Start building an MCP client with the specified transport layer. The transport - * layer handles the low-level communication between client and server using protocols - * like stdio or Server-Sent Events (SSE). - * @param transport The transport layer implementation for MCP communication. Common - * implementations include {@code StdioClientTransport} for stdio-based communication - * and {@code SseClientTransport} for SSE-based communication. - * @return A new builder instance for configuring the client - * @throws IllegalArgumentException if transport is null - * @deprecated Use {@link #sync(ClientMcpTransport)} or - * {@link #async(ClientMcpTransport)} specification builder to configure the client - * and build an instance. - */ - @Deprecated - public static Builder using(ClientMcpTransport transport) { - return new Builder(transport); - } - - /** - * Builder class for creating and configuring MCP clients. This class follows the - * builder pattern to provide a fluent API for setting up clients with custom - * configurations. - * - *

    - * The builder supports configuration of: - *

      - *
    • Transport layer for client-server communication - *
    • Request timeouts for operation boundaries - *
    • Client capabilities for feature negotiation - *
    • Client implementation details for version tracking - *
    • Root URIs for resource access - *
    • Change notification handlers for tools, resources, and prompts - *
    • Custom message sampling logic - *
    - * - * @deprecated Use {@link #sync(ClientMcpTransport)} or - * {@link #async(ClientMcpTransport)} specification builder to instantiate an - * instance. - */ - @Deprecated - public static class Builder { - - private final ClientMcpTransport transport; - - private Duration requestTimeout = Duration.ofSeconds(20); // Default timeout - - private ClientCapabilities capabilities; - - private Implementation clientInfo = new Implementation("Spring AI MCP Client", "0.3.1"); - - private Map roots = new HashMap<>(); - - private List>> toolsChangeConsumers = new ArrayList<>(); - - private List>> resourcesChangeConsumers = new ArrayList<>(); - - private List>> promptsChangeConsumers = new ArrayList<>(); - - private List> loggingConsumers = new ArrayList<>(); - - private Function samplingHandler; - - private Builder(ClientMcpTransport transport) { - Assert.notNull(transport, "Transport must not be null"); - this.transport = transport; - } - - /** - * Sets the duration to wait for server responses before timing out requests. This - * timeout applies to all requests made through the client, including tool calls, - * resource access, and prompt operations. - * @param requestTimeout The duration to wait before timing out requests. Must not - * be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if requestTimeout is null - */ - public Builder requestTimeout(Duration requestTimeout) { - Assert.notNull(requestTimeout, "Request timeout must not be null"); - this.requestTimeout = requestTimeout; - return this; - } - - /** - * Sets the client capabilities that will be advertised to the server during - * connection initialization. Capabilities define what features the client - * supports, such as tool execution, resource access, and prompt handling. - * @param capabilities The client capabilities configuration. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if capabilities is null - */ - public Builder capabilities(ClientCapabilities capabilities) { - Assert.notNull(capabilities, "Capabilities must not be null"); - this.capabilities = capabilities; - return this; - } - - /** - * Sets the client implementation information that will be shared with the server - * during connection initialization. This helps with version compatibility and - * debugging. - * @param clientInfo The client implementation details including name and version. - * Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if clientInfo is null - */ - public Builder clientInfo(Implementation clientInfo) { - Assert.notNull(clientInfo, "Client info must not be null"); - this.clientInfo = clientInfo; - return this; - } - - /** - * Sets the root URIs that this client can access. Roots define the base URIs for - * resources that the client can request from the server. For example, a root - * might be "file://workspace" for accessing workspace files. - * @param roots A list of root definitions. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if roots is null - */ - public Builder roots(List roots) { - Assert.notNull(roots, "Roots must not be null"); - for (Root root : roots) { - this.roots.put(root.uri(), root); - } - return this; - } - - /** - * Sets the root URIs that this client can access, using a varargs parameter for - * convenience. This is an alternative to {@link #roots(List)}. - * @param roots An array of root definitions. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if roots is null - * @see #roots(List) - */ - public Builder roots(Root... roots) { - Assert.notNull(roots, "Roots must not be null"); - for (Root root : roots) { - this.roots.put(root.uri(), root); - } - return this; - } - - /** - * Sets a custom sampling handler for processing message creation requests. The - * sampling handler can modify or validate messages before they are sent to the - * server, enabling custom processing logic. - * @param samplingHandler A function that processes message requests and returns - * results. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if samplingHandler is null - */ - public Builder sampling(Function samplingHandler) { - Assert.notNull(samplingHandler, "Sampling handler must not be null"); - this.samplingHandler = samplingHandler; - return this; - } - - /** - * Adds a consumer to be notified when the available tools change. This allows the - * client to react to changes in the server's tool capabilities, such as tools - * being added or removed. - * @param toolsChangeConsumer A consumer that receives the updated list of - * available tools. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if toolsChangeConsumer is null - */ - public Builder toolsChangeConsumer(Consumer> toolsChangeConsumer) { - Assert.notNull(toolsChangeConsumer, "Tools change consumer must not be null"); - this.toolsChangeConsumers.add(toolsChangeConsumer); - return this; - } - - /** - * Adds a consumer to be notified when the available resources change. This allows - * the client to react to changes in the server's resource availability, such as - * files being added or removed. - * @param resourcesChangeConsumer A consumer that receives the updated list of - * available resources. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if resourcesChangeConsumer is null - */ - public Builder resourcesChangeConsumer(Consumer> resourcesChangeConsumer) { - Assert.notNull(resourcesChangeConsumer, "Resources change consumer must not be null"); - this.resourcesChangeConsumers.add(resourcesChangeConsumer); - return this; - } - - /** - * Adds a consumer to be notified when the available prompts change. This allows - * the client to react to changes in the server's prompt templates, such as new - * templates being added or existing ones being modified. - * @param promptsChangeConsumer A consumer that receives the updated list of - * available prompts. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if promptsChangeConsumer is null - */ - public Builder promptsChangeConsumer(Consumer> promptsChangeConsumer) { - Assert.notNull(promptsChangeConsumer, "Prompts change consumer must not be null"); - this.promptsChangeConsumers.add(promptsChangeConsumer); - return this; - } - - /** - * Adds a consumer to be notified when logging messages are received from the - * server. This allows the client to react to log messages, such as warnings or - * errors, that are sent by the server. - * @param loggingConsumer A consumer that receives logging messages. Must not be - * null. - * @return This builder instance for method chaining - */ - public Builder loggingConsumer(Consumer loggingConsumer) { - Assert.notNull(loggingConsumer, "Logging consumer must not be null"); - this.loggingConsumers.add(loggingConsumer); - return this; - } - - /** - * Adds multiple consumers to be notified when logging messages are received from - * the server. This allows the client to react to log messages, such as warnings - * or errors, that are sent by the server. - * @param loggingConsumers A list of consumers that receive logging messages. Must - * not be null. - * @return This builder instance for method chaining - */ - public Builder loggingConsumers(List> loggingConsumers) { - Assert.notNull(loggingConsumers, "Logging consumers must not be null"); - this.loggingConsumers.addAll(loggingConsumers); - return this; - } - - /** - * Builds a synchronous MCP client that provides blocking operations. Synchronous - * clients wait for each operation to complete before returning, making them - * simpler to use but potentially less performant for concurrent operations. - * @return A new instance of {@link McpSyncClient} configured with this builder's - * settings - */ - public McpSyncClient sync() { - return new McpSyncClient(async()); - } - - /** - * Builds an asynchronous MCP client that provides non-blocking operations. - * Asynchronous clients return CompletableFuture objects immediately, allowing for - * concurrent operations and reactive programming patterns. - * @return A new instance of {@link McpAsyncClient} configured with this builder's - * settings - */ - public McpAsyncClient async() { - return new McpAsyncClient(transport, requestTimeout, clientInfo, capabilities, roots, toolsChangeConsumers, - resourcesChangeConsumers, promptsChangeConsumers, loggingConsumers, samplingHandler); - } - - } - /** * Synchronous client specification. This class follows the builder pattern to provide * a fluent API for setting up clients with custom configurations. diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java index 04c6a85..9086714 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java @@ -11,29 +11,24 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.function.Consumer; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; -import org.modelcontextprotocol.server.McpServer.PromptRegistration; -import org.modelcontextprotocol.server.McpServer.ResourceRegistration; -import org.modelcontextprotocol.server.McpServer.ToolRegistration; import org.modelcontextprotocol.spec.DefaultMcpSession; +import org.modelcontextprotocol.spec.DefaultMcpSession.NotificationHandler; import org.modelcontextprotocol.spec.McpError; import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.ServerMcpTransport; -import org.modelcontextprotocol.spec.DefaultMcpSession.NotificationHandler; import org.modelcontextprotocol.spec.McpSchema.CallToolResult; import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; import org.modelcontextprotocol.spec.McpSchema.LoggingLevel; import org.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; import org.modelcontextprotocol.spec.McpSchema.Tool; +import org.modelcontextprotocol.spec.ServerMcpTransport; import org.modelcontextprotocol.util.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -import reactor.core.scheduler.Schedulers; /** * The Model Context Protocol (MCP) server implementation that provides asynchronous @@ -183,102 +178,6 @@ public class McpAsyncServer { notificationHandlers); } - /** - * Create a new McpAsyncServer with the given transport and capabilities. - * @param mcpTransport The transport layer implementation for MCP communication - * @param serverInfo The server implementation details - * @param serverCapabilities The server capabilities - * @param tools The list of tool registrations - * @param resources The map of resource registrations - * @param resourceTemplates The list of resource templates - * @param prompts The map of prompt registrations - * @param rootsChangeConsumers The list of consumers that will be notified when the - * roots list changes - * @deprecated Use {@link McpServer#sync(ServerMcpTransport)} or - * {@link McpServer#async(ServerMcpTransport)} to create a new server instance. - */ - @Deprecated - public McpAsyncServer(ServerMcpTransport mcpTransport, McpSchema.Implementation serverInfo, - McpSchema.ServerCapabilities serverCapabilities, List tools, - Map resources, List resourceTemplates, - Map prompts, List>> rootsChangeConsumers) { - - this.protocolVersions = List.of(McpSchema.LATEST_PROTOCOL_VERSION); - this.serverInfo = serverInfo; - if (!Utils.isEmpty(tools)) { - this.tools.addAll(McpServer.mapDeprecatedTools(tools)); - } - if (!Utils.isEmpty(resources)) { - this.resources.putAll(McpServer.mapDeprecatedResources(resources)); - } - if (!Utils.isEmpty(resourceTemplates)) { - this.resourceTemplates.addAll(resourceTemplates); - } - if (!Utils.isEmpty(prompts)) { - this.prompts.putAll(McpServer.mapDeprecatedPrompts(prompts)); - } - - this.serverCapabilities = (serverCapabilities != null) ? serverCapabilities : new McpSchema.ServerCapabilities( - null, // experimental - new McpSchema.ServerCapabilities.LoggingCapabilities(), // Enable logging - // by default - !Utils.isEmpty(this.prompts) ? new McpSchema.ServerCapabilities.PromptCapabilities(false) : null, - !Utils.isEmpty(this.resources) ? new McpSchema.ServerCapabilities.ResourceCapabilities(false, false) - : null, - !Utils.isEmpty(this.tools) ? new McpSchema.ServerCapabilities.ToolCapabilities(false) : null); - - Map> requestHandlers = new HashMap<>(); - - // Initialize request handlers for standard MCP methods - requestHandlers.put(McpSchema.METHOD_INITIALIZE, initializeRequestHandler()); - - // Ping MUST respond with an empty data, but not NULL response. - requestHandlers.put(McpSchema.METHOD_PING, (params) -> Mono.just("")); - - // Add tools API handlers if the tool capability is enabled - if (this.serverCapabilities.tools() != null) { - requestHandlers.put(McpSchema.METHOD_TOOLS_LIST, toolsListRequestHandler()); - requestHandlers.put(McpSchema.METHOD_TOOLS_CALL, toolsCallRequestHandler()); - } - - // Add resources API handlers if provided - if (!Utils.isEmpty(this.resources)) { - requestHandlers.put(McpSchema.METHOD_RESOURCES_LIST, resourcesListRequestHandler()); - requestHandlers.put(McpSchema.METHOD_RESOURCES_READ, resourcesReadRequestHandler()); - } - - // Add resource templates API handlers if provided. - if (!Utils.isEmpty(this.resourceTemplates)) { - requestHandlers.put(McpSchema.METHOD_RESOURCES_TEMPLATES_LIST, resourceTemplateListRequestHandler()); - } - - // Add prompts API handlers if provider exists - if (!Utils.isEmpty(this.prompts)) { - requestHandlers.put(McpSchema.METHOD_PROMPT_LIST, promptsListRequestHandler()); - requestHandlers.put(McpSchema.METHOD_PROMPT_GET, promptsGetRequestHandler()); - } - - // Add logging API handlers if the logging capability is enabled - if (this.serverCapabilities.logging() != null) { - requestHandlers.put(McpSchema.METHOD_LOGGING_SET_LEVEL, setLoggerRequestHandler()); - } - - Map notificationHandlers = new HashMap<>(); - - notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_INITIALIZED, (params) -> Mono.empty()); - - if (Utils.isEmpty(rootsChangeConsumers)) { - rootsChangeConsumers = List.of((roots) -> logger - .warn("Roots list changed notification, but no consumers provided. Roots list changed: {}", roots)); - } - notificationHandlers.put(McpSchema.METHOD_NOTIFICATION_ROOTS_LIST_CHANGED, - rootsListChnagedNotificationHandler(rootsChangeConsumers)); - - this.transport = mcpTransport; - this.mcpSession = new DefaultMcpSession(Duration.ofSeconds(10), mcpTransport, requestHandlers, - notificationHandlers); - } - // --------------------------------------- // Lifecycle Management // --------------------------------------- @@ -309,33 +208,6 @@ public class McpAsyncServer { }; } - @Deprecated - private DefaultMcpSession.RequestHandler initializeRequestHandler() { - return params -> { - McpSchema.InitializeRequest initializeRequest = transport.unmarshalFrom(params, - new TypeReference() { - }); - - this.clientCapabilities = initializeRequest.capabilities(); - this.clientInfo = initializeRequest.clientInfo(); - - logger.info("Client initialize request - Protocol: {}, Capabilities: {}, Info: {}", - initializeRequest.protocolVersion(), initializeRequest.capabilities(), - initializeRequest.clientInfo()); - - if (!McpSchema.LATEST_PROTOCOL_VERSION.equals(initializeRequest.protocolVersion())) { - return Mono.error(new McpError( - "Unsupported protocol version from client: " + initializeRequest.protocolVersion())) - .publishOn(Schedulers.boundedElastic()); - } - - return Mono - .just(new McpSchema.InitializeResult(McpSchema.LATEST_PROTOCOL_VERSION, this.serverCapabilities, - this.serverInfo, null)) - .publishOn(Schedulers.boundedElastic()); - }; - } - /** * Get the server capabilities that define the supported features and functionality. * @return The server capabilities @@ -404,20 +276,6 @@ public class McpAsyncServer { LIST_ROOTS_RESULT_TYPE_REF); } - @Deprecated - private NotificationHandler rootsListChnagedNotificationHandler( - List>> rootsChangeConsumers) { - - return params -> { - return listRoots().flatMap(listRootsResult -> Mono.fromRunnable(() -> { - rootsChangeConsumers.stream().forEach(consumer -> consumer.accept(listRootsResult.roots())); - }).subscribeOn(Schedulers.boundedElastic())).onErrorResume(error -> { - logger.error("Error handling roots list change notification", error); - return Mono.empty(); - }).then(); - }; - } - private NotificationHandler asyncRootsListChangedNotificationHandler( List, Mono>> rootsChangeConsumers) { return params -> listRoots().flatMap(listRootsResult -> Flux.fromIterable(rootsChangeConsumers) @@ -469,40 +327,6 @@ public class McpAsyncServer { }); } - /** - * Add a new tool registration at runtime. - * @param toolRegistration The tool registration to add - * @return Mono that completes when clients have been notified of the change - * @deprecated Use {@link #addTool(McpServerFeatures.AsyncToolRegistration)}. - */ - @Deprecated - public Mono addTool(ToolRegistration toolRegistration) { - if (toolRegistration == null) { - return Mono.error(new McpError("Tool registration must not be null")); - } - if (toolRegistration.tool() == null) { - return Mono.error(new McpError("Tool must not be null")); - } - if (toolRegistration.call() == null) { - return Mono.error(new McpError("Tool call handler must not be null")); - } - if (this.serverCapabilities.tools() == null) { - return Mono.error(new McpError("Server must be configured with tool capabilities")); - } - - // Check for duplicate tool names - if (this.tools.stream().anyMatch(th -> th.tool().name().equals(toolRegistration.tool().name()))) { - return Mono.error(new McpError("Tool with name '" + toolRegistration.tool().name() + "' already exists")); - } - - this.tools.add(McpServer.mapDeprecatedTool(toolRegistration)); - logger.info("Added tool handler: {}", toolRegistration.tool().name()); - if (this.serverCapabilities.tools().listChanged()) { - return notifyToolsListChanged(); - } - return Mono.empty(); - } - /** * Remove a tool handler at runtime. * @param toolName The name of the tool handler to remove @@ -595,35 +419,6 @@ public class McpAsyncServer { }); } - /** - * Add a new resource handler at runtime. - * @param resourceHandler The resource handler to add - * @return Mono that completes when clients have been notified of the change - * @deprecated Use {@link #addResource(McpServerFeatures.AsyncResourceRegistration)}. - */ - @Deprecated - public Mono addResource(ResourceRegistration resourceHandler) { - if (resourceHandler == null || resourceHandler.resource() == null) { - return Mono.error(new McpError("Resource must not be null")); - } - - if (this.serverCapabilities.resources() == null) { - return Mono.error(new McpError("Server must be configured with resource capabilities")); - } - - if (this.resources.containsKey(resourceHandler.resource().uri())) { - return Mono - .error(new McpError("Resource with URI '" + resourceHandler.resource().uri() + "' already exists")); - } - - this.resources.put(resourceHandler.resource().uri(), McpServer.mapDeprecatedResource(resourceHandler)); - logger.info("Added resource handler: {}", resourceHandler.resource().uri()); - if (this.serverCapabilities.resources().listChanged()) { - return notifyResourcesListChanged(); - } - return Mono.empty(); - } - /** * Remove a resource handler at runtime. * @param resourceUri The URI of the resource handler to remove @@ -724,38 +519,6 @@ public class McpAsyncServer { }); } - /** - * Add a new prompt handler at runtime. - * @param promptRegistration The prompt handler to add - * @return Mono that completes when clients have been notified of the change - * @deprecated Use {@link #addPrompt(McpServerFeatures.AsyncPromptRegistration)}. - */ - @Deprecated - public Mono addPrompt(PromptRegistration promptRegistration) { - if (promptRegistration == null) { - return Mono.error(new McpError("Prompt registration must not be null")); - } - if (this.serverCapabilities.prompts() == null) { - return Mono.error(new McpError("Server must be configured with prompt capabilities")); - } - - if (this.prompts.containsKey(promptRegistration.prompt().name())) { - return Mono - .error(new McpError("Prompt with name '" + promptRegistration.prompt().name() + "' already exists")); - } - - this.prompts.put(promptRegistration.prompt().name(), McpServer.mapDeprecatedPrompt(promptRegistration)); - - logger.info("Added prompt handler: {}", promptRegistration.prompt().name()); - - // Servers that declared the listChanged capability SHOULD send a notification, - // when the list of available prompts changes - if (this.serverCapabilities.prompts().listChanged()) { - return notifyPromptsListChanged(); - } - return Mono.empty(); - } - /** * Remove a prompt handler at runtime. * @param promptName The name of the prompt handler to remove diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java index 7564f00..870282f 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java @@ -10,16 +10,14 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; -import java.util.stream.Collectors; import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; import org.modelcontextprotocol.spec.McpSchema.CallToolResult; import org.modelcontextprotocol.spec.McpSchema.ResourceTemplate; +import org.modelcontextprotocol.spec.McpTransport; +import org.modelcontextprotocol.spec.ServerMcpTransport; import org.modelcontextprotocol.util.Assert; import reactor.core.publisher.Mono; -import reactor.core.scheduler.Schedulers; /** * Factory class for creating Model Context Protocol (MCP) servers. MCP servers expose @@ -138,18 +136,6 @@ public interface McpServer { return new AsyncSpec(transport); } - /** - * Start building an MCP server with the specified transport. - * @param transport The transport layer implementation for MCP communication - * @return A new builder instance - * @deprecated Use {@link #sync(ServerMcpTransport)} or - * {@link #async(ServerMcpTransport)} to create a server instance. - */ - @Deprecated - public static Builder using(ServerMcpTransport transport) { - return new Builder(transport); - } - /** * Asynchronous server specification. */ @@ -908,547 +894,4 @@ public interface McpServer { } - /** - * Builder class for creating MCP servers with custom configuration. - * - * @deprecated Use {@link #sync(ServerMcpTransport)} or - * {@link #async(ServerMcpTransport)} to create a server. - */ - @Deprecated - public static class Builder { - - private static final McpSchema.Implementation DEFAULT_SERVER_INFO = new McpSchema.Implementation("mcp-server", - "1.0.0"); - - private final ServerMcpTransport transport; - - private McpSchema.Implementation serverInfo = DEFAULT_SERVER_INFO; - - private McpSchema.ServerCapabilities serverCapabilities; - - /** - * The Model Context Protocol (MCP) allows servers to expose tools that can be - * invoked by language models. Tools enable models to interact with external - * systems, such as querying databases, calling APIs, or performing computations. - * Each tool is uniquely identified by a name and includes metadata describing its - * schema. - */ - private final List tools = new ArrayList<>(); - - /** - * The Model Context Protocol (MCP) provides a standardized way for servers to - * expose resources to clients. Resources allow servers to share data that - * provides context to language models, such as files, database schemas, or - * application-specific information. Each resource is uniquely identified by a - * URI. - */ - private Map resources = new HashMap<>(); - - private List resourceTemplates = new ArrayList<>(); - - /** - * The Model Context Protocol (MCP) provides a standardized way for servers to - * expose prompt templates to clients. Prompts allow servers to provide structured - * messages and instructions for interacting with language models. Clients can - * discover available prompts, retrieve their contents, and provide arguments to - * customize them. - */ - private Map prompts = new HashMap<>(); - - private List>> rootsChangeConsumers = new ArrayList<>(); - - private Builder(ServerMcpTransport transport) { - Assert.notNull(transport, "Transport must not be null"); - this.transport = transport; - } - - /** - * Sets the server implementation information that will be shared with clients - * during connection initialization. This helps with version compatibility, - * debugging, and server identification. - * @param serverInfo The server implementation details including name and version. - * Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if serverInfo is null - */ - public Builder serverInfo(McpSchema.Implementation serverInfo) { - Assert.notNull(serverInfo, "Server info must not be null"); - this.serverInfo = serverInfo; - return this; - } - - /** - * Sets the server implementation information using name and version strings. This - * is a convenience method alternative to - * {@link #serverInfo(McpSchema.Implementation)}. - * @param name The server name. Must not be null or empty. - * @param version The server version. Must not be null or empty. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if name or version is null or empty - * @see #serverInfo(McpSchema.Implementation) - */ - public Builder serverInfo(String name, String version) { - Assert.hasText(name, "Name must not be null or empty"); - Assert.hasText(version, "Version must not be null or empty"); - this.serverInfo = new McpSchema.Implementation(name, version); - return this; - } - - /** - * Sets the server capabilities that will be advertised to clients during - * connection initialization. Capabilities define what features the server - * supports, such as: - *
      - *
    • Tool execution - *
    • Resource access - *
    • Prompt handling - *
    • Streaming responses - *
    • Batch operations - *
    - * @param serverCapabilities The server capabilities configuration. Must not be - * null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if serverCapabilities is null - */ - public Builder capabilities(McpSchema.ServerCapabilities serverCapabilities) { - this.serverCapabilities = serverCapabilities; - return this; - } - - /** - * Adds a single tool with its implementation handler to the server. This is a - * convenience method for registering individual tools without creating a - * {@link ToolRegistration} explicitly. - * - *

    - * Example usage:

    {@code
    -		 * .tool(
    -		 *     new Tool("calculator", "Performs calculations", schema),
    -		 *     args -> new CallToolResult("Result: " + calculate(args))
    -		 * )
    -		 * }
    - * @param tool The tool definition including name, description, and schema. Must - * not be null. - * @param handler The function that implements the tool's logic. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if tool or handler is null - */ - public Builder tool(McpSchema.Tool tool, Function, McpSchema.CallToolResult> handler) { - Assert.notNull(tool, "Tool must not be null"); - Assert.notNull(handler, "Handler must not be null"); - - this.tools.add(new ToolRegistration(tool, handler)); - - return this; - } - - /** - * Adds multiple tools with their handlers to the server using a List. This method - * is useful when tools are dynamically generated or loaded from a configuration - * source. - * @param toolRegistrations The list of tool registrations to add. Must not be - * null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if toolRegistrations is null - * @see #tools(ToolRegistration...) - */ - public Builder tools(List toolRegistrations) { - Assert.notNull(toolRegistrations, "Tool handlers list must not be null"); - this.tools.addAll(toolRegistrations); - return this; - } - - /** - * Adds multiple tools with their handlers to the server using varargs. This - * method provides a convenient way to register multiple tools inline. - * - *

    - * Example usage:

    {@code
    -		 * .tools(
    -		 *     new ToolRegistration(calculatorTool, calculatorHandler),
    -		 *     new ToolRegistration(weatherTool, weatherHandler),
    -		 *     new ToolRegistration(fileManagerTool, fileManagerHandler)
    -		 * )
    -		 * }
    - * @param toolRegistrations The tool registrations to add. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if toolRegistrations is null - * @see #tools(List) - */ - public Builder tools(ToolRegistration... toolRegistrations) { - for (ToolRegistration tool : toolRegistrations) { - this.tools.add(tool); - } - return this; - } - - /** - * Registers multiple resources with their handlers using a Map. This method is - * useful when resources are dynamically generated or loaded from a configuration - * source. - * @param resourceRegsitrations Map of resource name to registration. Must not be - * null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if resourceRegsitrations is null - * @see #resources(ResourceRegistration...) - */ - public Builder resources(Map resourceRegsitrations) { - Assert.notNull(resourceRegsitrations, "Resource handlers map must not be null"); - this.resources.putAll(resourceRegsitrations); - return this; - } - - /** - * Registers multiple resources with their handlers using a List. This method is - * useful when resources need to be added in bulk from a collection. - * @param resourceRegsitrations List of resource registrations. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if resourceRegsitrations is null - * @see #resources(ResourceRegistration...) - */ - public Builder resources(List resourceRegsitrations) { - Assert.notNull(resourceRegsitrations, "Resource handlers list must not be null"); - for (ResourceRegistration resource : resourceRegsitrations) { - this.resources.put(resource.resource().uri(), resource); - } - return this; - } - - /** - * Registers multiple resources with their handlers using varargs. This method - * provides a convenient way to register multiple resources inline. - * - *

    - * Example usage:

    {@code
    -		 * .resources(
    -		 *     new ResourceRegistration(fileResource, fileHandler),
    -		 *     new ResourceRegistration(dbResource, dbHandler),
    -		 *     new ResourceRegistration(apiResource, apiHandler)
    -		 * )
    -		 * }
    - * @param resourceRegistrations The resource registrations to add. Must not be - * null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if resourceRegistrations is null - */ - public Builder resources(ResourceRegistration... resourceRegistrations) { - Assert.notNull(resourceRegistrations, "Resource handlers list must not be null"); - for (ResourceRegistration resource : resourceRegistrations) { - this.resources.put(resource.resource().uri(), resource); - } - return this; - } - - /** - * Sets the resource templates that define patterns for dynamic resource access. - * Templates use URI patterns with placeholders that can be filled at runtime. - * - *

    - * Example usage:

    {@code
    -		 * .resourceTemplates(
    -		 *     new ResourceTemplate("file://{path}", "Access files by path"),
    -		 *     new ResourceTemplate("db://{table}/{id}", "Access database records")
    -		 * )
    -		 * }
    - * @param resourceTemplates List of resource templates. If null, clears existing - * templates. - * @return This builder instance for method chaining - * @see #resourceTemplates(ResourceTemplate...) - */ - public Builder resourceTemplates(List resourceTemplates) { - this.resourceTemplates = resourceTemplates; - return this; - } - - /** - * Sets the resource templates using varargs for convenience. This is an - * alternative to {@link #resourceTemplates(List)}. - * @param resourceTemplates The resource templates to set. - * @return This builder instance for method chaining - * @see #resourceTemplates(List) - */ - public Builder resourceTemplates(ResourceTemplate... resourceTemplates) { - for (ResourceTemplate resourceTemplate : resourceTemplates) { - this.resourceTemplates.add(resourceTemplate); - } - return this; - } - - /** - * Registers multiple prompts with their handlers using a Map. This method is - * useful when prompts are dynamically generated or loaded from a configuration - * source. - * - *

    - * Example usage:

    {@code
    -		 * Map prompts = new HashMap<>();
    -		 * prompts.put("analysis", new PromptRegistration(
    -		 *     new Prompt("analysis", "Code analysis template"),
    -		 *     request -> new GetPromptResult(generateAnalysisPrompt(request))
    -		 * ));
    -		 * .prompts(prompts)
    -		 * }
    - * @param prompts Map of prompt name to registration. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if prompts is null - */ - public Builder prompts(Map prompts) { - this.prompts.putAll(prompts); - return this; - } - - /** - * Registers multiple prompts with their handlers using a List. This method is - * useful when prompts need to be added in bulk from a collection. - * @param prompts List of prompt registrations. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if prompts is null - * @see #prompts(PromptRegistration...) - */ - public Builder prompts(List prompts) { - for (PromptRegistration prompt : prompts) { - this.prompts.put(prompt.prompt().name(), prompt); - } - return this; - } - - /** - * Registers multiple prompts with their handlers using varargs. This method - * provides a convenient way to register multiple prompts inline. - * - *

    - * Example usage:

    {@code
    -		 * .prompts(
    -		 *     new PromptRegistration(analysisPrompt, analysisHandler),
    -		 *     new PromptRegistration(summaryPrompt, summaryHandler),
    -		 *     new PromptRegistration(reviewPrompt, reviewHandler)
    -		 * )
    -		 * }
    - * @param prompts The prompt registrations to add. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if prompts is null - */ - public Builder prompts(PromptRegistration... prompts) { - for (PromptRegistration prompt : prompts) { - this.prompts.put(prompt.prompt().name(), prompt); - } - return this; - } - - /** - * Registers a consumer that will be notified when the list of roots changes. This - * is useful for updating resource availability dynamically, such as when new - * files are added or removed. - * @param consumer The consumer to register. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if consumer is null - */ - public Builder rootsChangeConsumer(Consumer> consumer) { - Assert.notNull(consumer, "Consumer must not be null"); - this.rootsChangeConsumers.add(consumer); - return this; - } - - /** - * Registers multiple consumers that will be notified when the list of roots - * changes. This method is useful when multiple consumers need to be registered at - * once. - * @param consumers The list of consumers to register. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if consumers is null - */ - public Builder rootsChangeConsumers(List>> consumers) { - Assert.notNull(consumers, "Consumers list must not be null"); - this.rootsChangeConsumers.addAll(consumers); - return this; - } - - /** - * Registers multiple consumers that will be notified when the list of roots - * changes using varargs. This method provides a convenient way to register - * multiple consumers inline. - * @param consumers The consumers to register. Must not be null. - * @return This builder instance for method chaining - * @throws IllegalArgumentException if consumers is null - */ - public Builder rootsChangeConsumers(Consumer>... consumers) { - for (Consumer> consumer : consumers) { - this.rootsChangeConsumers.add(consumer); - } - return this; - } - - /** - * Builds a synchronous MCP server that provides blocking operations. Synchronous - * servers process each request to completion before handling the next one, making - * them simpler to implement but potentially less performant for concurrent - * operations. - * @return A new instance of {@link McpSyncServer} configured with this builder's - * settings - * @deprecated Use {@link #sync(ServerMcpTransport)}. - */ - @Deprecated - public McpSyncServer sync() { - return new McpSyncServer(async()); - } - - /** - * Builds an asynchronous MCP server that provides non-blocking operations. - * Asynchronous servers can handle multiple requests concurrently using - * CompletableFuture, making them more efficient for high-concurrency scenarios - * but more complex to implement. - * @return A new instance of {@link McpAsyncServer} configured with this builder's - * settings - * @deprecated Use {@link #async(ServerMcpTransport)} - */ - @Deprecated - public McpAsyncServer async() { - return new McpAsyncServer(transport, serverInfo, serverCapabilities, tools, resources, resourceTemplates, - prompts, rootsChangeConsumers); - } - - } - - /** - * Registration of a tool with its handler function. Tools are the primary way for MCP - * servers to expose functionality to AI models. Each tool represents a specific - * capability, such as: - *
      - *
    • Performing calculations - *
    • Accessing external APIs - *
    • Querying databases - *
    • Manipulating files - *
    • Executing system commands - *
    - * - *

    - * Example tool registration:

    {@code
    -	 * new ToolRegistration(
    -	 *     new Tool(
    -	 *         "calculator",
    -	 *         "Performs mathematical calculations",
    -	 *         new JsonSchemaObject()
    -	 *             .required("expression")
    -	 *             .property("expression", JsonSchemaType.STRING)
    -	 *     ),
    -	 *     args -> {
    -	 *         String expr = (String) args.get("expression");
    -	 *         return new CallToolResult("Result: " + evaluate(expr));
    -	 *     }
    -	 * )
    -	 * }
    - * - * @param tool The tool definition including name, description, and parameter schema - * @param call The function that implements the tool's logic, receiving arguments and - * returning results - * @deprecated Use {@link McpServerFeatures.SyncToolRegistration} or - * {@link McpServerFeatures.AsyncToolRegistration}. - */ - @Deprecated - public static record ToolRegistration(McpSchema.Tool tool, - Function, McpSchema.CallToolResult> call) { - } - - /** - * Registration of a resource with its handler function. Resources provide context to - * AI models by exposing data such as: - *
      - *
    • File contents - *
    • Database records - *
    • API responses - *
    • System information - *
    • Application state - *
    - * - *

    - * Example resource registration:

    {@code
    -	 * new ResourceRegistration(
    -	 *     new Resource("docs", "Documentation files", "text/markdown"),
    -	 *     request -> {
    -	 *         String content = readFile(request.getPath());
    -	 *         return new ReadResourceResult(content);
    -	 *     }
    -	 * )
    -	 * }
    - * - * @param resource The resource definition including name, description, and MIME type - * @param readHandler The function that handles resource read requests - * @deprecated Use {@link McpServerFeatures.SyncResourceRegistration} or - * {@link McpServerFeatures.AsyncResourceRegistration}. - */ - @Deprecated - public static record ResourceRegistration(McpSchema.Resource resource, - Function readHandler) { - } - - /** - * Registration of a prompt template with its handler function. Prompts provide - * structured templates for AI model interactions, supporting: - *
      - *
    • Consistent message formatting - *
    • Parameter substitution - *
    • Context injection - *
    • Response formatting - *
    • Instruction templating - *
    - * - *

    - * Example prompt registration:

    {@code
    -	 * new PromptRegistration(
    -	 *     new Prompt("analyze", "Code analysis template"),
    -	 *     request -> {
    -	 *         String code = request.getArguments().get("code");
    -	 *         return new GetPromptResult(
    -	 *             "Analyze this code:\n\n" + code + "\n\nProvide feedback on:"
    -	 *         );
    -	 *     }
    -	 * )
    -	 * }
    - * - * @param prompt The prompt definition including name and description - * @param promptHandler The function that processes prompt requests and returns - * formatted templates - * @deprecated Use {@link McpServerFeatures.SyncPromptRegistration} or - * {@link McpServerFeatures.AsyncPromptRegistration}. - */ - @Deprecated - public static record PromptRegistration(McpSchema.Prompt prompt, - Function promptHandler) { - } - - static McpServerFeatures.AsyncToolRegistration mapDeprecatedTool(ToolRegistration oldTool) { - return new McpServerFeatures.AsyncToolRegistration(oldTool.tool(), - map -> Mono.fromCallable(() -> oldTool.call().apply(map)).subscribeOn(Schedulers.boundedElastic())); - } - - static McpServerFeatures.AsyncResourceRegistration mapDeprecatedResource(ResourceRegistration oldResource) { - return new McpServerFeatures.AsyncResourceRegistration(oldResource.resource(), - req -> Mono.fromCallable(() -> oldResource.readHandler().apply(req)) - .subscribeOn(Schedulers.boundedElastic())); - } - - static McpServerFeatures.AsyncPromptRegistration mapDeprecatedPrompt(PromptRegistration oldPrompt) { - return new McpServerFeatures.AsyncPromptRegistration(oldPrompt.prompt(), - req -> Mono.fromCallable(() -> oldPrompt.promptHandler().apply(req)) - .subscribeOn(Schedulers.boundedElastic())); - } - - static List mapDeprecatedTools(List oldTools) { - return oldTools.stream().map(McpServer::mapDeprecatedTool).toList(); - } - - static Map mapDeprecatedResources( - Map oldResources) { - return oldResources.entrySet() - .stream() - .collect(Collectors.toMap(Map.Entry::getKey, e -> mapDeprecatedResource(e.getValue()))); - } - - static Map mapDeprecatedPrompts( - Map oldPrompts) { - return oldPrompts.entrySet() - .stream() - .collect(Collectors.toMap(Map.Entry::getKey, e -> mapDeprecatedPrompt(e.getValue()))); - } - } diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java b/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java index 898b1c6..aab1457 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java @@ -4,9 +4,6 @@ package org.modelcontextprotocol.server; -import org.modelcontextprotocol.server.McpServer.PromptRegistration; -import org.modelcontextprotocol.server.McpServer.ResourceRegistration; -import org.modelcontextprotocol.server.McpServer.ToolRegistration; import org.modelcontextprotocol.spec.McpError; import org.modelcontextprotocol.spec.McpSchema; import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; @@ -93,16 +90,6 @@ public class McpSyncServer { this.asyncServer.addTool(McpServerFeatures.AsyncToolRegistration.fromSync(toolHandler)).block(); } - /** - * Add a new tool handler. - * @param toolHandler The tool handler to add - * @deprecated Use {@link #addTool(McpServerFeatures.SyncToolRegistration)}. - */ - @Deprecated - public void addTool(ToolRegistration toolHandler) { - this.asyncServer.addTool(toolHandler).block(); - } - /** * Remove a tool handler. * @param toolName The name of the tool handler to remove @@ -119,16 +106,6 @@ public class McpSyncServer { this.asyncServer.addResource(McpServerFeatures.AsyncResourceRegistration.fromSync(resourceHandler)).block(); } - /** - * Add a new resource handler. - * @param resourceHandler The resource handler to add - * @deprecated Use {@link #addResource(McpServerFeatures.SyncResourceRegistration)}. - */ - @Deprecated - public void addResource(ResourceRegistration resourceHandler) { - this.asyncServer.addResource(resourceHandler).block(); - } - /** * Remove a resource handler. * @param resourceUri The URI of the resource handler to remove @@ -145,16 +122,6 @@ public class McpSyncServer { this.asyncServer.addPrompt(McpServerFeatures.AsyncPromptRegistration.fromSync(promptRegistration)).block(); } - /** - * Add a new prompt handler. - * @param promptRegistration The prompt registration to add - * @deprecated Use {@link #addPrompt(McpServerFeatures.SyncPromptRegistration)}. - */ - @Deprecated - public void addPrompt(PromptRegistration promptRegistration) { - this.asyncServer.addPrompt(promptRegistration).block(); - } - /** * Remove a prompt handler. * @param promptName The name of the prompt handler to remove From 0f62a508cef04d74159c9c773b04caf776fb40eb Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 27 Jan 2025 23:19:11 +0100 Subject: [PATCH 085/505] reomove old GH actions --- .../artifactory-milestone-release.yml | 38 ----------- .github/workflows/artifactory-staging.yml | 38 ----------- .github/workflows/continuous-integration.yml | 65 ------------------- .github/workflows/deploy-docs.yml | 28 -------- .github/workflows/maven-central-release.yml | 62 ------------------ 5 files changed, 231 deletions(-) delete mode 100644 .github/workflows/artifactory-milestone-release.yml delete mode 100644 .github/workflows/artifactory-staging.yml delete mode 100644 .github/workflows/continuous-integration.yml delete mode 100644 .github/workflows/deploy-docs.yml delete mode 100644 .github/workflows/maven-central-release.yml diff --git a/.github/workflows/artifactory-milestone-release.yml b/.github/workflows/artifactory-milestone-release.yml deleted file mode 100644 index 98697f9..0000000 --- a/.github/workflows/artifactory-milestone-release.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Artifactory Milestone Release - -on: - workflow_dispatch: - inputs: - releaseVersion: - description: "Milestone release version" - required: true - -jobs: - build: - name: Release milestone to Artifactory - runs-on: ubuntu-latest - steps: - - name: Checkout source code - uses: actions/checkout@v4 - - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' - cache: 'maven' - - - name: Capture release version - run: echo RELEASE_VERSION=${{ github.event.inputs.releaseVersion }} >> $GITHUB_ENV - - - name: Update release version - run: mvn versions:set -DgenerateBackupPoms=false -DnewVersion=$RELEASE_VERSION - - - name: Enforce release rules - run: mvn org.apache.maven.plugins:maven-enforcer-plugin:enforce -Drules=requireReleaseDeps - - - name: Build with Maven and deploy to Artifactory's milestone repository - env: - ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - run: mvn -P artifactory-milestone -P javadoc -s settings.xml --batch-mode -Dmaven.test.skip=true deploy diff --git a/.github/workflows/artifactory-staging.yml b/.github/workflows/artifactory-staging.yml deleted file mode 100644 index 04493b2..0000000 --- a/.github/workflows/artifactory-staging.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Artifactory Staging - -on: - workflow_dispatch: - inputs: - releaseVersion: - description: "Release version" - required: true - -jobs: - build: - name: Stage release to Artifactory - runs-on: ubuntu-latest - steps: - - name: Checkout source code - uses: actions/checkout@v4 - - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' - cache: 'maven' - - - name: Capture release version - run: echo RELEASE_VERSION=${{ github.event.inputs.releaseVersion }} >> $GITHUB_ENV - - - name: Update release version - run: mvn versions:set -DgenerateBackupPoms=false -DnewVersion=$RELEASE_VERSION - - - name: Enforce release rules - run: mvn org.apache.maven.plugins:maven-enforcer-plugin:enforce -Drules=requireReleaseDeps - - - name: Build with Maven and deploy to Artifactory staging repository - env: - ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - run: mvn -P artifactory-staging -P javadoc -s settings.xml --batch-mode -Dmaven.test.skip=true deploy diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml deleted file mode 100644 index e119a70..0000000 --- a/.github/workflows/continuous-integration.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: CI/CD build - -on: - push: - branches: [ "main" ] - -jobs: - build: - name: Build branch - runs-on: ubuntu-latest - steps: - - name: Checkout source code - uses: actions/checkout@v4 - - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' - cache: 'maven' - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - - - name: Build with Maven and deploy to Artifactory - env: - ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - run: | - mvn -s settings.xml -Pjavadoc --batch-mode --update-snapshots deploy - - - name: Generate Java docs - run: mvn -Pjavadoc -B javadoc:aggregate - - - name: Capture project version - run: echo PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version --quiet -DforceStdout) >> $GITHUB_ENV - -# - name: Generate assembly -# working-directory: spring-ai-docs -# run: mvn assembly:single - - -# - name: Setup SSH key -# env: -# DOCS_SSH_KEY: ${{ secrets.DOCS_SSH_KEY }} -# DOCS_SSH_HOST_KEY: ${{ secrets.DOCS_SSH_HOST_KEY }} -# run: | -# mkdir "$HOME/.ssh" -# echo "$DOCS_SSH_KEY" > "$HOME/.ssh/key" -# chmod 600 "$HOME/.ssh/key" -# echo "$DOCS_SSH_HOST_KEY" > "$HOME/.ssh/known_hosts" -# -# - name: Deploy docs -# env: -# DOCS_HOST: ${{ secrets.DOCS_HOST }} -# DOCS_PATH: ${{ secrets.DOCS_PATH }} -# DOCS_USERNAME: ${{ secrets.DOCS_USERNAME }} -# working-directory: spring-ai-docs/target -# run: | -# unzip spring-ai-$PROJECT_VERSION-docs.zip -# ssh -i $HOME/.ssh/key $DOCS_USERNAME@$DOCS_HOST "cd $DOCS_PATH && mkdir -p $PROJECT_VERSION" -# scp -i $HOME/.ssh/key -r api $DOCS_USERNAME@$DOCS_HOST:$DOCS_PATH/$PROJECT_VERSION - diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml deleted file mode 100644 index de69a21..0000000 --- a/.github/workflows/deploy-docs.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Deploy Docs -on: - workflow_dispatch: - push: - branches: [main, '[0-9].[0-9].x' ] - tags: ['v[0-9].[0-9].[0-9]', 'v[0-9].[0-9].[0-9]-*'] -permissions: - actions: write -jobs: - build: - runs-on: ubuntu-latest - if: github.repository_owner == 'spring-projects-experimental' - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - ref: docs-build - fetch-depth: 1 - - name: Dispatch (partial build) - if: github.ref_type == 'branch' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: gh workflow run deploy-docs.yml -r $(git rev-parse --abbrev-ref HEAD) -f build-refname=${{ github.ref_name }} - - name: Dispatch (full build) - if: github.ref_type == 'tag' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: gh workflow run deploy-docs.yml -r $(git rev-parse --abbrev-ref HEAD) \ No newline at end of file diff --git a/.github/workflows/maven-central-release.yml b/.github/workflows/maven-central-release.yml deleted file mode 100644 index d3de026..0000000 --- a/.github/workflows/maven-central-release.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: Maven Central Release - -on: - workflow_dispatch: - inputs: - releaseVersion: - description: "Release version" - required: true - -jobs: - build: - runs-on: ubuntu-latest - steps: - - - name: Capture release version - run: echo RELEASE_VERSION=${{ github.event.inputs.releaseVersion }} >> $GITHUB_ENV - - - name: Prepare directory structure - run: | - mkdir -p nexus/org/springframework/experimental/mcp-parent/$RELEASE_VERSION - mkdir -p nexus/org/springframework/experimental/mcp/$RELEASE_VERSION - mkdir -p nexus/org/springframework/experimental/spring-ai-mcp/$RELEASE_VERSION - - - name: Download release files from Artifactory - env: - ARTIFACTORY_URL: "https://repo.spring.io/libs-staging-local/org/springframework/experimental" - ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - run: | - echo "Downloading parent POM artifacts" - cd nexus/org/springframework/experimental/spring-ai-mcp/$RELEASE_VERSION - wget --user="$ARTIFACTORY_USERNAME" --password="$ARTIFACTORY_PASSWORD" $ARTIFACTORY_URL/spring-ai-mcp/$RELEASE_VERSION/spring-ai-mcp-$RELEASE_VERSION.pom - - echo "Downloading core artifacts" - cd ../../../../../.. - cd nexus/org/springframework/experimental/mcp/$RELEASE_VERSION - wget --user="$ARTIFACTORY_USERNAME" --password="$ARTIFACTORY_PASSWORD" $ARTIFACTORY_URL/mcp/$RELEASE_VERSION/mcp-$RELEASE_VERSION.pom - wget --user="$ARTIFACTORY_USERNAME" --password="$ARTIFACTORY_PASSWORD" $ARTIFACTORY_URL/mcp/$RELEASE_VERSION/mcp-$RELEASE_VERSION.jar - wget --user="$ARTIFACTORY_USERNAME" --password="$ARTIFACTORY_PASSWORD" $ARTIFACTORY_URL/mcp/$RELEASE_VERSION/mcp-$RELEASE_VERSION-javadoc.jar - wget --user="$ARTIFACTORY_USERNAME" --password="$ARTIFACTORY_PASSWORD" $ARTIFACTORY_URL/mcp/$RELEASE_VERSION/mcp-$RELEASE_VERSION-sources.jar - - echo "Downloading spring artifacts" - cd ../../../../../.. - cd nexus/org/springframework/experimental/spring-ai-mcp/$RELEASE_VERSION - wget --user="$ARTIFACTORY_USERNAME" --password="$ARTIFACTORY_PASSWORD" $ARTIFACTORY_URL/spring-ai-mcp/$RELEASE_VERSION/spring-ai-mcp-$RELEASE_VERSION.pom - wget --user="$ARTIFACTORY_USERNAME" --password="$ARTIFACTORY_PASSWORD" $ARTIFACTORY_URL/spring-ai-mcp/$RELEASE_VERSION/spring-ai-mcp-$RELEASE_VERSION.jar - wget --user="$ARTIFACTORY_USERNAME" --password="$ARTIFACTORY_PASSWORD" $ARTIFACTORY_URL/spring-ai-mcp/$RELEASE_VERSION/spring-ai-mcp-$RELEASE_VERSION-javadoc.jar - wget --user="$ARTIFACTORY_USERNAME" --password="$ARTIFACTORY_PASSWORD" $ARTIFACTORY_URL/spring-ai-mcp/$RELEASE_VERSION/spring-ai-mcp-$RELEASE_VERSION-sources.jar - - - name: Sign artifacts and release them to Maven Central - uses: spring-io/nexus-sync-action@main - id: nexus - with: - url: ${{ secrets.OSSRH_URL }} - username: ${{ secrets.OSSRH_S01_TOKEN_USERNAME }} - password: ${{ secrets.OSSRH_S01_TOKEN_PASSWORD }} - staging-profile-name: ${{ secrets.OSSRH_STAGING_PROFILE_NAME }} - create: true - upload: true - close: true - release: true - generate-checksums: true \ No newline at end of file From 8d946bbdff108d86660c50fce5cb87ca08a4c527 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 10:50:15 +0100 Subject: [PATCH 086/505] initial maven central relese configuraitons --- .github/workflows/maven-central-release.yml | 38 ++++++++++ pom.xml | 81 +++++++++++++-------- 2 files changed, 87 insertions(+), 32 deletions(-) create mode 100644 .github/workflows/maven-central-release.yml diff --git a/.github/workflows/maven-central-release.yml b/.github/workflows/maven-central-release.yml new file mode 100644 index 0000000..4d67ce0 --- /dev/null +++ b/.github/workflows/maven-central-release.yml @@ -0,0 +1,38 @@ +name: Release to Maven Central + +on: + push: + tags: + - 'v*' + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Java + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE + + - name: Build and Test + run: mvn clean verify + + - name: Publish to Maven Central + run: | + mvn --batch-mode \ + -Prelease \ + -Pjavadoc \ + deploy + env: + MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} diff --git a/pom.xml b/pom.xml index 97dd9a2..8462e58 100644 --- a/pom.xml +++ b/pom.xml @@ -26,12 +26,12 @@ https://spring.io - - - MIT License - http://www.opensource.org/licenses/mit-license.php - - + + + MIT License + http://www.opensource.org/licenses/mit-license.php + + @@ -51,13 +51,11 @@ https://github.com/modelcontextprotocol/java-sdk/actions - - spring-snapshots - https://repo.spring.io/libs-snapshot-local - - false - - + + ossrh + Central Repository OSSRH + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + @@ -299,26 +297,45 @@ - artifactory-staging + relesae + + + + org.sonatype.central + central-publishing-maven-plugin + 0.7.0 + true + + central + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.1.0 + + + sign-artifacts + verify + + sign + + + + --pinentry-mode + loopback + + + + + + + - spring-staging - https://repo.spring.io/libs-staging-local - - false - - - - - - artifactory-milestone - - - spring-milestones - https://repo.spring.io/libs-milestone-local - - false - + ossrh + Central Repository OSSRH + https://oss.sonatype.org/service/local/staging/deploy/maven2/ @@ -365,4 +382,4 @@ -
    + \ No newline at end of file From 2d7228d47c5586c8f3010a2847a35f2c291c44a1 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 13:06:05 +0100 Subject: [PATCH 087/505] Clean the pom --- mcp-docs/pom.xml | 2 +- mcp-docs/src/main/javadoc/overview.html | 2 +- mcp/README.md | 2 - .../client/McpClient.java | 2 +- pom.xml | 40 ++++++++++--------- settings.xml | 24 ----------- 6 files changed, 24 insertions(+), 48 deletions(-) delete mode 100644 settings.xml diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index 43e4404..fe61156 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -71,7 +71,7 @@ src/assembly/javadocs.xml - spring-ai-mcp-${project.version} + mcp-${project.version} true diff --git a/mcp-docs/src/main/javadoc/overview.html b/mcp-docs/src/main/javadoc/overview.html index 3a30a69..9dabad0 100644 --- a/mcp-docs/src/main/javadoc/overview.html +++ b/mcp-docs/src/main/javadoc/overview.html @@ -17,7 +17,7 @@

    - This document is the API specification for Spring AI + This document is the API specification for MCP Java SDK

    diff --git a/mcp/README.md b/mcp/README.md index 0fcffcb..0e2257d 100644 --- a/mcp/README.md +++ b/mcp/README.md @@ -1,5 +1,3 @@ # Java MCP SDK Java SDK implementation of the Model Context Protocol, enabling seamless integration with language models and AI tools. - -Find more at [Java MCP SDK](https://docs.spring.io/spring-ai-mcp/reference/mcp.html) \ No newline at end of file diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java b/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java index 2580ab0..554c408 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java @@ -159,7 +159,7 @@ public interface McpClient { private ClientCapabilities capabilities; - private Implementation clientInfo = new Implementation("Spring AI MCP Client", "1.0.0"); + private Implementation clientInfo = new Implementation("Java SDK MCP Client", "1.0.0"); private final Map roots = new HashMap<>(); diff --git a/pom.xml b/pom.xml index 8462e58..782c331 100644 --- a/pom.xml +++ b/pom.xml @@ -17,13 +17,13 @@ git@github.com/modelcontextprotocol/java-sdk.git - Spring AI MCP Parent - Java SDK and Spring Framework integration for the Model Context Protocol (MCP), enabling interaction with AI models and tools through a standardized interface + Java SDK MCP Parent + Java SDK for the Model Context Protocol (MCP), enabling interaction with AI models and tools through a standardized interface - Spring Framework - https://spring.io + Anthropic + https://www.anthropic.com @@ -65,7 +65,6 @@ 17 17 - 1.0.0-M5 3.26.3 5.10.2 5.11.0 @@ -297,16 +296,23 @@ - relesae + release - org.sonatype.central - central-publishing-maven-plugin - 0.7.0 + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.7 true - central + ossrh + https://s01.oss.sonatype.org/ + + false @@ -332,10 +338,13 @@ + + ossrh + https://s01.oss.sonatype.org/content/repositories/snapshots + ossrh - Central Repository OSSRH - https://oss.sonatype.org/service/local/staging/deploy/maven2/ + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ @@ -350,13 +359,6 @@ pom import - - org.springframework.ai - spring-ai-bom - ${spring-ai.version} - pom - import - diff --git a/settings.xml b/settings.xml deleted file mode 100644 index 890e930..0000000 --- a/settings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - spring-snapshots - ${env.ARTIFACTORY_USERNAME} - ${env.ARTIFACTORY_PASSWORD} - - - spring-staging - ${env.ARTIFACTORY_USERNAME} - ${env.ARTIFACTORY_PASSWORD} - - - spring-milestones - ${env.ARTIFACTORY_USERNAME} - ${env.ARTIFACTORY_PASSWORD} - - - - \ No newline at end of file From 5b10f70021df75517bd949ed84e26b63889cf4c0 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 13:12:08 +0100 Subject: [PATCH 088/505] Add manual relese trigger --- .github/workflows/maven-central-release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/maven-central-release.yml b/.github/workflows/maven-central-release.yml index 4d67ce0..c760997 100644 --- a/.github/workflows/maven-central-release.yml +++ b/.github/workflows/maven-central-release.yml @@ -1,6 +1,7 @@ name: Release to Maven Central on: + workflow_dispatch: push: tags: - 'v*' From 1aaf2d369a79ee515c2ebb67a04467bca4134239 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 13:23:25 +0100 Subject: [PATCH 089/505] Fix the GH action secret names --- .github/workflows/maven-central-release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven-central-release.yml b/.github/workflows/maven-central-release.yml index c760997..31114c8 100644 --- a/.github/workflows/maven-central-release.yml +++ b/.github/workflows/maven-central-release.yml @@ -21,7 +21,7 @@ jobs: server-id: ossrh server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD - gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} + gpg-private-key: ${{ secrets.GPG_SECRET_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE - name: Build and Test @@ -36,4 +36,4 @@ jobs: env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} - MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} From d391598be7f4a5a2657b098c2eb026c929359c5b Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 13:46:07 +0100 Subject: [PATCH 090/505] Extend maven gpg configuration --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 782c331..350985e 100644 --- a/pom.xml +++ b/pom.xml @@ -331,6 +331,7 @@ --pinentry-mode loopback + ${env.MAVEN_GPG_PASSPHRASE} @@ -384,4 +385,4 @@ - \ No newline at end of file + From 01592fff4505a8ce12e62c5d5eb44ba9d284cdb9 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 14:08:47 +0100 Subject: [PATCH 091/505] Disable the mcp-docs as pom module --- .../client/transport/HttpClientSseClientTransport.java | 3 ++- pom.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java b/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java index dc886a5..f80f695 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java @@ -217,7 +217,8 @@ public class HttpClientSseClientTransport implements ClientMcpTransport { return Mono.fromFuture( httpClient.sendAsync(request, HttpResponse.BodyHandlers.discarding()).thenAccept(response -> { - if (response.statusCode() != 200) { + if (response.statusCode() != 200 && response.statusCode() != 201 && response.statusCode() != 202 + && response.statusCode() != 206) { logger.error("Error sending message: {}", response.statusCode()); } })); diff --git a/pom.xml b/pom.xml index 350985e..379cf17 100644 --- a/pom.xml +++ b/pom.xml @@ -105,7 +105,7 @@ mcp mcp-transport/mcp-webflux-sse-transport mcp-transport/mcp-webmvc-sse-transport - mcp-docs + mcp-test From 2f5fcdbcbe9127a30e4e29da3245955fb8df4132 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 14:31:05 +0100 Subject: [PATCH 092/505] Add CI GH action workflow --- .github/workflows/continuous-integration.yml | 38 ++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/continuous-integration.yml diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml new file mode 100644 index 0000000..9e991c4 --- /dev/null +++ b/.github/workflows/continuous-integration.yml @@ -0,0 +1,38 @@ +name: CI/CD build + +on: + push: + branches: [ "main" ] + +jobs: + build: + name: Build branch + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Build with Maven and deploy to Sonatype snapshot repository + env: + MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} + run: | + mvn -Pjavadoc -Prelease --batch-mode --update-snapshots deploy + + - name: Generate Java docs + run: mvn -Pjavadoc -B javadoc:aggregate + + - name: Capture project version + run: echo PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version --quiet -DforceStdout) >> $GITHUB_ENV From 6296a883313bdc9ebc75f86745e47bcafe93c42b Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 14:36:31 +0100 Subject: [PATCH 093/505] Update license text and GH actions --- .github/workflows/maven-central-release.yml | 5 +++++ LICENSE | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/maven-central-release.yml b/.github/workflows/maven-central-release.yml index 31114c8..87b338c 100644 --- a/.github/workflows/maven-central-release.yml +++ b/.github/workflows/maven-central-release.yml @@ -24,6 +24,11 @@ jobs: gpg-private-key: ${{ secrets.GPG_SECRET_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + - name: Build and Test run: mvn clean verify diff --git a/LICENSE b/LICENSE index 252046e..5264c5b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 Broadcom +Copyright (c) 2025 the original author or authors. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 2e0b60dc3b68f88882dd839c038e9fb258250440 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 14:39:40 +0100 Subject: [PATCH 094/505] Fix the MAVEN_GPG_PASSPHRASE in GH CI workflow --- .github/workflows/continuous-integration.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 9e991c4..d0dd3e9 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -28,6 +28,7 @@ jobs: env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} run: | mvn -Pjavadoc -Prelease --batch-mode --update-snapshots deploy From 76495078be94b54ede7aa1d8c58873cc1b3a85ec Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 14:43:08 +0100 Subject: [PATCH 095/505] further CI wf improvements --- .github/workflows/continuous-integration.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index d0dd3e9..51c921a 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -18,6 +18,11 @@ jobs: java-version: '17' distribution: 'temurin' cache: 'maven' + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.GPG_SECRET_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE - name: Setup Node.js uses: actions/setup-node@v4 From c8766098f6954caa66658c470fe5822b5982c61c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dariusz=20J=C4=99drzejczyk?= Date: Tue, 28 Jan 2025 15:53:56 +0100 Subject: [PATCH 096/505] Reorder StdioServerTransport shutdown procedure to avoid errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dariusz Jędrzejczyk --- .../transport/StdioServerTransport.java | 31 ++++++------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java b/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java index e0dd865..52845a9 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java @@ -105,10 +105,10 @@ public class StdioServerTransport implements ServerMcpTransport { .flatMap(message -> Mono.just(message) .transform(inboundMessageHandler) .contextWrite(ctx -> ctx.put("observation", "myObservation"))) - .doOnComplete(() -> { + .doOnTerminate(() -> { + // The outbound processing will dispose its scheduler upon completion this.outboundSink.tryEmitComplete(); this.inboundScheduler.dispose(); - this.outboundScheduler.dispose(); }) .subscribe(); } @@ -208,13 +208,13 @@ public class StdioServerTransport implements ServerMcpTransport { }) .doOnComplete(() -> { isClosing = true; - outboundSink.tryEmitComplete(); + outboundScheduler.dispose(); }) .doOnError(e -> { if (!isClosing) { logger.error("Error in outbound processing", e); isClosing = true; - outboundSink.tryEmitComplete(); + outboundScheduler.dispose(); } }) .map(msg -> (JSONRPCMessage) msg); @@ -224,26 +224,15 @@ public class StdioServerTransport implements ServerMcpTransport { @Override public Mono closeGracefully() { - - return Mono.fromRunnable(() -> { + return Mono.defer(() -> { isClosing = true; logger.debug("Initiating graceful shutdown"); - }).then(Mono.defer(() -> { - // First complete the sinks to stop processing + // Completing the inbound causes the outbound to be completed as well, so + // we only close the inbound. inboundSink.tryEmitComplete(); - outboundSink.tryEmitComplete(); - return Mono.delay(Duration.ofMillis(100)); - })).then(Mono.fromRunnable(() -> { - try { - // Dispose schedulers with longer timeout - inboundScheduler.dispose(); - outboundScheduler.dispose(); - logger.info("Graceful shutdown completed"); - } - catch (Exception e) { - logger.error("Error during graceful shutdown", e); - } - })).then().subscribeOn(Schedulers.boundedElastic()); + logger.info("Graceful shutdown complete"); + return Mono.empty(); + }).subscribeOn(Schedulers.boundedElastic()); } @Override From 91a03320090926b4103f7fbbb07b34ccff08ac2b Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 17:04:45 +0100 Subject: [PATCH 097/505] Update nexus-staging-maven-plugin conf --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 379cf17..b683519 100644 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,7 @@ ossrh Central Repository OSSRH - https://oss.sonatype.org/service/local/staging/deploy/maven2/ + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ From 181e1f25ab85f02a8b1f638c8b2b4c9e7caa2ab3 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 17:23:07 +0100 Subject: [PATCH 098/505] Change the top domain from org to io --- .github/workflows/continuous-integration.yml | 2 +- README.md | 6 +-- mcp-bom/pom.xml | 10 ++--- mcp-docs/pom.xml | 2 +- .../ROOT/pages/dependency-management.adoc | 12 +++--- .../main/antora/modules/ROOT/pages/mcp.adoc | 12 +++--- .../antora/modules/ROOT/pages/overview.adoc | 12 +++--- mcp-test/pom.xml | 4 +- .../MockMcpTransport.java | 12 +++--- .../client/AbstractMcpAsyncClientTests.java | 32 ++++++++------- .../client/AbstractMcpSyncClientTests.java | 34 ++++++++-------- .../server/AbstractMcpAsyncServerTests.java | 29 ++++++++------ .../server/AbstractMcpSyncServerTests.java | 29 ++++++++------ .../mcp-webflux-sse-transport/README.md | 2 +- .../mcp-webflux-sse-transport/pom.xml | 6 +-- .../transport/WebFluxSseClientTransport.java | 14 +++---- .../transport/WebFluxSseServerTransport.java | 10 ++--- .../WebFluxSseIntegrationTests.java | 36 ++++++++--------- .../client/WebFluxSseMcpAsyncClientTests.java | 8 ++-- .../client/WebFluxSseMcpSyncClientTests.java | 8 ++-- .../WebFluxSseClientTransportTests.java | 7 ++-- .../server/WebFluxSseMcpAsyncServerTests.java | 8 ++-- .../server/WebFluxSseMcpSyncServerTests.java | 8 ++-- .../server/transport/BlockingInputStream.java | 2 +- .../mcp-webmvc-sse-transport/README.md | 2 +- .../mcp-webmvc-sse-transport/pom.xml | 6 +-- .../transport/WebMvcSseServerTransport.java | 10 ++--- .../WebMvcSseAsyncServerTransportTests.java | 7 ++-- .../server/WebMvcSseIntegrationTests.java | 32 ++++++++------- .../WebMvcSseSyncServerTransportTests.java | 7 ++-- .../src/test/resources/logback.xml | 8 ++-- mcp/pom.xml | 2 +- .../client/McpAsyncClient.java | 40 +++++++++---------- .../client/McpClient.java | 20 +++++----- .../client/McpClientFeatures.java | 8 ++-- .../client/McpSyncClient.java | 16 ++++---- .../client/transport/FlowSseClient.java | 2 +- .../HttpClientSseClientTransport.java | 20 +++++----- .../client/transport/ServerParameters.java | 4 +- .../transport/StdioClientTransport.java | 10 ++--- .../server/McpAsyncServer.java | 24 +++++------ .../server/McpServer.java | 14 +++---- .../server/McpServerFeatures.java | 8 ++-- .../server/McpSyncServer.java | 12 +++--- .../HttpServletSseServerTransport.java | 8 ++-- .../transport/StdioServerTransport.java | 10 ++--- .../spec/ClientMcpTransport.java | 2 +- .../spec/DefaultMcpSession.java | 4 +- .../modelcontextprotocol/spec/McpError.java | 4 +- .../modelcontextprotocol/spec/McpSchema.java | 2 +- .../modelcontextprotocol/spec/McpSession.java | 2 +- .../spec/McpTransport.java | 4 +- .../spec/ServerMcpTransport.java | 2 +- .../modelcontextprotocol/util/Assert.java | 2 +- .../modelcontextprotocol/util/Utils.java | 2 +- .../MockMcpTransport.java | 12 +++--- .../client/AbstractMcpAsyncClientTests.java | 32 ++++++++------- .../client/AbstractMcpSyncClientTests.java | 34 ++++++++-------- .../McpAsyncClientResponseHandlerTests.java | 14 ++++--- .../client/McpClientProtocolVersionTests.java | 12 +++--- .../client/ServletSseMcpAsyncClientTests.java | 7 ++-- .../client/ServletSseMcpSyncClientTests.java | 7 ++-- .../client/StdioMcpAsyncClientTests.java | 9 +++-- .../client/StdioMcpSyncClientTests.java | 9 +++-- .../HttpClientSseClientTransportTests.java | 7 ++-- .../server/AbstractMcpAsyncServerTests.java | 29 ++++++++------ .../server/AbstractMcpSyncServerTests.java | 29 ++++++++------ .../server/McpServerProtocolVersionTests.java | 8 ++-- .../server/ServletSseMcpAsyncServerTests.java | 7 ++-- .../server/ServletSseMcpSyncServerTests.java | 7 ++-- .../server/StdioMcpAsyncServerTests.java | 7 ++-- .../server/StdioMcpSyncServerTests.java | 7 ++-- .../server/transport/BlockingInputStream.java | 2 +- ...letSseServerTransportIntegrationTests.java | 33 +++++++-------- .../transport/StdioServerTransportTests.java | 7 ++-- .../spec/DefaultMcpSessionTests.java | 7 +++- pom.xml | 2 +- 77 files changed, 470 insertions(+), 417 deletions(-) rename mcp-test/src/main/java/{org => io}/modelcontextprotocol/MockMcpTransport.java (88%) rename mcp-test/src/main/java/{org => io}/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java (91%) rename mcp-test/src/main/java/{org => io}/modelcontextprotocol/client/AbstractMcpSyncClientTests.java (88%) rename mcp-test/src/main/java/{org => io}/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java (94%) rename mcp-test/src/main/java/{org => io}/modelcontextprotocol/server/AbstractMcpSyncServerTests.java (94%) rename mcp-transport/mcp-webflux-sse-transport/src/main/java/{org => io}/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java (96%) rename mcp-transport/mcp-webflux-sse-transport/src/main/java/{org => io}/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java (98%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/{org => io}/modelcontextprotocol/WebFluxSseIntegrationTests.java (93%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/{org => io}/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java (81%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/{org => io}/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java (82%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/{org => io}/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java (97%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/{org => io}/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java (82%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/{org => io}/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java (83%) rename mcp-transport/mcp-webflux-sse-transport/src/test/java/{org => io}/modelcontextprotocol/server/transport/BlockingInputStream.java (96%) rename mcp-transport/mcp-webmvc-sse-transport/src/main/java/{org => io}/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java (98%) rename mcp-transport/mcp-webmvc-sse-transport/src/test/java/{org => io}/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java (93%) rename mcp-transport/mcp-webmvc-sse-transport/src/test/java/{org => io}/modelcontextprotocol/server/WebMvcSseIntegrationTests.java (94%) rename mcp-transport/mcp-webmvc-sse-transport/src/test/java/{org => io}/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java (93%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/client/McpAsyncClient.java (95%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/client/McpClient.java (97%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/client/McpClientFeatures.java (98%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/client/McpSyncClient.java (96%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/client/transport/FlowSseClient.java (99%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java (93%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/client/transport/ServerParameters.java (97%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/client/transport/StdioClientTransport.java (97%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/server/McpAsyncServer.java (97%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/server/McpServer.java (98%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/server/McpServerFeatures.java (98%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/server/McpSyncServer.java (95%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java (98%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/server/transport/StdioServerTransport.java (96%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/spec/ClientMcpTransport.java (84%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/spec/DefaultMcpSession.java (99%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/spec/McpError.java (77%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/spec/McpSchema.java (99%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/spec/McpSession.java (98%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/spec/McpTransport.java (96%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/spec/ServerMcpTransport.java (84%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/util/Assert.java (98%) rename mcp/src/main/java/{org => io}/modelcontextprotocol/util/Utils.java (97%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/MockMcpTransport.java (89%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java (91%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/client/AbstractMcpSyncClientTests.java (88%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java (96%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/client/McpClientProtocolVersionTests.java (93%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java (84%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java (84%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/client/StdioMcpAsyncClientTests.java (69%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/client/StdioMcpSyncClientTests.java (81%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java (96%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java (94%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/server/AbstractMcpSyncServerTests.java (94%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/server/McpServerProtocolVersionTests.java (95%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java (70%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java (70%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/server/StdioMcpAsyncServerTests.java (67%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/server/StdioMcpSyncServerTests.java (67%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/server/transport/BlockingInputStream.java (96%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java (91%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/server/transport/StdioServerTransportTests.java (95%) rename mcp/src/test/java/{org => io}/modelcontextprotocol/spec/DefaultMcpSessionTests.java (96%) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 51c921a..a9bc8fd 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -35,7 +35,7 @@ jobs: MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} MAVEN_GPG_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} run: | - mvn -Pjavadoc -Prelease --batch-mode --update-snapshots deploy + mvn -Pjavadoc -Prelease -DskipTests --batch-mode --update-snapshots deploy - name: Generate Java docs run: mvn -Pjavadoc -B javadoc:aggregate diff --git a/README.md b/README.md index 3d985bb..c994354 100644 --- a/README.md +++ b/README.md @@ -47,19 +47,19 @@ Add the following dependencies to your Maven project: ```xml - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-webflux-sse-transport - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-webmvc-sse-transport ``` diff --git a/mcp-bom/pom.xml b/mcp-bom/pom.xml index a1b5164..a524793 100644 --- a/mcp-bom/pom.xml +++ b/mcp-bom/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT @@ -28,28 +28,28 @@ - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp ${project.version} - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-test ${project.version} - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-webflux-sse-transport ${project.version} - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-webmvc-sse-transport ${project.version} diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index fe61156..feac637 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -18,7 +18,7 @@ 4.0.0 - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc index 3aaf09e..7fcbba5 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc @@ -20,7 +20,7 @@ Maven:: - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-bom 0.6.0-SNAPSHOT pom @@ -35,7 +35,7 @@ Gradle:: [source,groovy,indent=0,subs="verbatim,quotes"] ---- dependencies { - implementation platform("org.modelcontextprotocol.sdk:mcp-bom:0.6.0-SNAPSHOT") + implementation platform("io.modelcontextprotocol.sdk:mcp-bom:0.6.0-SNAPSHOT") //... } ---- @@ -53,16 +53,16 @@ The following dependencies are available and managed by the BOM: === Core Dependencies -* `org.modelcontextprotocol.sdk:mcp` - Core MCP library providing the base functionality and APIs for Model Context Protocol implementation. +* `io.modelcontextprotocol.sdk:mcp` - Core MCP library providing the base functionality and APIs for Model Context Protocol implementation. === Transport Dependencies -* `org.modelcontextprotocol.sdk:mcp-webflux-sse-transport` - WebFlux-based Server-Sent Events (SSE) transport implementation for reactive applications. -* `org.modelcontextprotocol.sdk:mcp-webmvc-sse-transport` - WebMVC-based Server-Sent Events (SSE) transport implementation for servlet-based applications. +* `io.modelcontextprotocol.sdk:mcp-webflux-sse-transport` - WebFlux-based Server-Sent Events (SSE) transport implementation for reactive applications. +* `io.modelcontextprotocol.sdk:mcp-webmvc-sse-transport` - WebMVC-based Server-Sent Events (SSE) transport implementation for servlet-based applications. === Testing Dependencies -* `org.modelcontextprotocol.sdk:mcp-test` - Testing utilities and support for MCP-based applications. +* `io.modelcontextprotocol.sdk:mcp-test` - Testing utilities and support for MCP-based applications. [[repositories]] === Milestone and Snapshot Repositories diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index 86ca519..6237ed1 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -34,7 +34,7 @@ The core MCP functionality: [source,xml] ---- - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp ---- @@ -46,13 +46,13 @@ For HTTP SSE transport implementations, add one of the following dependencies ---- - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-webflux-sse-transport - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-webmvc-sse-transport ---- @@ -64,7 +64,7 @@ The core MCP functionality: [source,groovy] ---- dependencies { - implementation 'org.modelcontextprotocol.sdk:mcp' + implementation 'io.modelcontextprotocol.sdk:mcp' } ---- + @@ -74,10 +74,10 @@ For HTTP SSE transport implementations, add one of the following dependencies [source,groovy] ---- // Spring WebFlux-based SSE client and server transport -implementation 'org.modelcontextprotocol.sdk:mcp-webflux-sse-transport' +implementation 'io.modelcontextprotocol.sdk:mcp-webflux-sse-transport' // Spring WebMVC-based SSE server transport -implementation 'org.modelcontextprotocol.sdk:mcp-webmvc-sse-transport' +implementation 'io.modelcontextprotocol.sdk:mcp-webmvc-sse-transport' ---- ====== diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index 28d4cb4..e3ec80b 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -39,19 +39,19 @@ Maven:: ---- - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-webflux-sse-transport - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-webmvc-sse-transport @@ -78,9 +78,9 @@ Gradle:: [source,groovy] ---- dependencies { - implementation 'org.modelcontextprotocol.sdk:mcp' // Core - implementation 'org.modelcontextprotocol.sdk:mcp-webflux-sse-transport' // Optional - implementation 'org.modelcontextprotocol.sdk:mcp-webmvc-sse-transport' // Optional + implementation 'io.modelcontextprotocol.sdk:mcp' // Core + implementation 'io.modelcontextprotocol.sdk:mcp-webflux-sse-transport' // Optional + implementation 'io.modelcontextprotocol.sdk:mcp-webmvc-sse-transport' // Optional } repositories { diff --git a/mcp-test/pom.xml b/mcp-test/pom.xml index e1edaf2..e6b4170 100644 --- a/mcp-test/pom.xml +++ b/mcp-test/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT @@ -22,7 +22,7 @@ - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp 0.7.0-SNAPSHOT diff --git a/mcp-test/src/main/java/org/modelcontextprotocol/MockMcpTransport.java b/mcp-test/src/main/java/io/modelcontextprotocol/MockMcpTransport.java similarity index 88% rename from mcp-test/src/main/java/org/modelcontextprotocol/MockMcpTransport.java rename to mcp-test/src/main/java/io/modelcontextprotocol/MockMcpTransport.java index 9660d19..0604768 100644 --- a/mcp-test/src/main/java/org/modelcontextprotocol/MockMcpTransport.java +++ b/mcp-test/src/main/java/io/modelcontextprotocol/MockMcpTransport.java @@ -2,18 +2,18 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol; +package io.modelcontextprotocol; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.ServerMcpTransport; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCNotification; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCNotification; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; diff --git a/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java b/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java similarity index 91% rename from mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java rename to mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java index b4e2b30..affbc4d 100644 --- a/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java +++ b/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java @@ -2,31 +2,33 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.time.Duration; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; +import io.modelcontextprotocol.client.McpAsyncClient; +import io.modelcontextprotocol.client.McpClient; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpTransport; +import io.modelcontextprotocol.spec.McpSchema.CallToolRequest; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import io.modelcontextprotocol.spec.McpSchema.GetPromptRequest; +import io.modelcontextprotocol.spec.McpSchema.Prompt; +import io.modelcontextprotocol.spec.McpSchema.Resource; +import io.modelcontextprotocol.spec.McpSchema.Root; +import io.modelcontextprotocol.spec.McpSchema.SubscribeRequest; +import io.modelcontextprotocol.spec.McpSchema.Tool; +import io.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolRequest; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; -import org.modelcontextprotocol.spec.McpSchema.GetPromptRequest; -import org.modelcontextprotocol.spec.McpSchema.Prompt; -import org.modelcontextprotocol.spec.McpSchema.Resource; -import org.modelcontextprotocol.spec.McpSchema.Root; -import org.modelcontextprotocol.spec.McpSchema.SubscribeRequest; -import org.modelcontextprotocol.spec.McpSchema.Tool; -import org.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; -import org.modelcontextprotocol.spec.McpTransport; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; diff --git a/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java b/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java similarity index 88% rename from mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java rename to mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java index 8115903..df08498 100644 --- a/mcp-test/src/main/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java +++ b/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java @@ -2,30 +2,32 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.time.Duration; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; +import io.modelcontextprotocol.client.McpClient; +import io.modelcontextprotocol.client.McpSyncClient; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.CallToolRequest; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.ListResourceTemplatesResult; +import io.modelcontextprotocol.spec.McpSchema.ListResourcesResult; +import io.modelcontextprotocol.spec.McpSchema.ListToolsResult; +import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import io.modelcontextprotocol.spec.McpSchema.Resource; +import io.modelcontextprotocol.spec.McpSchema.Root; +import io.modelcontextprotocol.spec.McpSchema.SubscribeRequest; +import io.modelcontextprotocol.spec.McpSchema.TextContent; +import io.modelcontextprotocol.spec.McpSchema.Tool; +import io.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolRequest; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.ListResourceTemplatesResult; -import org.modelcontextprotocol.spec.McpSchema.ListResourcesResult; -import org.modelcontextprotocol.spec.McpSchema.ListToolsResult; -import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; -import org.modelcontextprotocol.spec.McpSchema.Resource; -import org.modelcontextprotocol.spec.McpSchema.Root; -import org.modelcontextprotocol.spec.McpSchema.SubscribeRequest; -import org.modelcontextprotocol.spec.McpSchema.TextContent; -import org.modelcontextprotocol.spec.McpSchema.Tool; -import org.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; diff --git a/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java b/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java similarity index 94% rename from mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java rename to mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java index 43f0ff8..730f367 100644 --- a/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java +++ b/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java @@ -2,26 +2,29 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import java.time.Duration; import java.util.List; +import io.modelcontextprotocol.server.McpAsyncServer; +import io.modelcontextprotocol.server.McpServer; +import io.modelcontextprotocol.server.McpServerFeatures; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import io.modelcontextprotocol.spec.McpSchema.Prompt; +import io.modelcontextprotocol.spec.McpSchema.PromptMessage; +import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import io.modelcontextprotocol.spec.McpSchema.Resource; +import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import io.modelcontextprotocol.spec.McpSchema.Tool; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; -import org.modelcontextprotocol.spec.McpSchema.Prompt; -import org.modelcontextprotocol.spec.McpSchema.PromptMessage; -import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; -import org.modelcontextprotocol.spec.McpSchema.Resource; -import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; -import org.modelcontextprotocol.spec.McpSchema.Tool; -import org.modelcontextprotocol.spec.McpTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; diff --git a/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java b/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java similarity index 94% rename from mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java rename to mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java index 8a10bf8..9c44a82 100644 --- a/mcp-test/src/main/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java +++ b/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java @@ -2,25 +2,28 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import java.util.List; +import io.modelcontextprotocol.server.McpServer; +import io.modelcontextprotocol.server.McpServerFeatures; +import io.modelcontextprotocol.server.McpSyncServer; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import io.modelcontextprotocol.spec.McpSchema.Prompt; +import io.modelcontextprotocol.spec.McpSchema.PromptMessage; +import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import io.modelcontextprotocol.spec.McpSchema.Resource; +import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import io.modelcontextprotocol.spec.McpSchema.Tool; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; -import org.modelcontextprotocol.spec.McpSchema.Prompt; -import org.modelcontextprotocol.spec.McpSchema.PromptMessage; -import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; -import org.modelcontextprotocol.spec.McpSchema.Resource; -import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; -import org.modelcontextprotocol.spec.McpSchema.Tool; -import org.modelcontextprotocol.spec.McpTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; diff --git a/mcp-transport/mcp-webflux-sse-transport/README.md b/mcp-transport/mcp-webflux-sse-transport/README.md index a38741f..475882b 100644 --- a/mcp-transport/mcp-webflux-sse-transport/README.md +++ b/mcp-transport/mcp-webflux-sse-transport/README.md @@ -2,7 +2,7 @@ ```xml - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-webflux-sse-transport ``` diff --git a/mcp-transport/mcp-webflux-sse-transport/pom.xml b/mcp-transport/mcp-webflux-sse-transport/pom.xml index fb65db4..d737a38 100644 --- a/mcp-transport/mcp-webflux-sse-transport/pom.xml +++ b/mcp-transport/mcp-webflux-sse-transport/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT ../../pom.xml @@ -23,13 +23,13 @@ - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp 0.7.0-SNAPSHOT - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-test 0.7.0-SNAPSHOT test diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java similarity index 96% rename from mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java rename to mcp-transport/mcp-webflux-sse-transport/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java index 3a8375b..4ab5cdd 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java @@ -1,7 +1,7 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.client.transport; +package io.modelcontextprotocol.client.transport; import java.io.IOException; import java.util.function.BiConsumer; @@ -9,11 +9,11 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; +import io.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.Disposable; @@ -32,7 +32,7 @@ import org.springframework.web.reactive.function.client.WebClient; /** * Server-Sent Events (SSE) implementation of the - * {@link org.modelcontextprotocol.spec.McpTransport} that follows the MCP HTTP with SSE + * {@link io.modelcontextprotocol.spec.McpTransport} that follows the MCP HTTP with SSE * transport specification. * *

    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java b/mcp-transport/mcp-webflux-sse-transport/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java similarity index 98% rename from mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java rename to mcp-transport/mcp-webflux-sse-transport/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java index 8baf696..2dbc929 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java @@ -1,4 +1,4 @@ -package org.modelcontextprotocol.server.transport; +package io.modelcontextprotocol.server.transport; import java.io.IOException; import java.time.Duration; @@ -9,10 +9,10 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.ServerMcpTransport; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/WebFluxSseIntegrationTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/WebFluxSseIntegrationTests.java similarity index 93% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/WebFluxSseIntegrationTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/WebFluxSseIntegrationTests.java index 67a9191..4cd24c6 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/WebFluxSseIntegrationTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/WebFluxSseIntegrationTests.java @@ -1,7 +1,7 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol; +package io.modelcontextprotocol; import java.time.Duration; import java.util.List; @@ -11,28 +11,28 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.client.McpClient; +import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport; +import io.modelcontextprotocol.server.McpServer; +import io.modelcontextprotocol.server.McpServerFeatures; +import io.modelcontextprotocol.server.transport.WebFluxSseServerTransport; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import io.modelcontextprotocol.spec.McpSchema.InitializeResult; +import io.modelcontextprotocol.spec.McpSchema.Role; +import io.modelcontextprotocol.spec.McpSchema.Root; +import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import io.modelcontextprotocol.spec.McpSchema.Tool; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.modelcontextprotocol.client.McpClient; -import org.modelcontextprotocol.client.transport.HttpClientSseClientTransport; -import org.modelcontextprotocol.client.transport.WebFluxSseClientTransport; -import org.modelcontextprotocol.server.McpServer; -import org.modelcontextprotocol.server.McpServerFeatures; -import org.modelcontextprotocol.server.transport.WebFluxSseServerTransport; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; -import org.modelcontextprotocol.spec.McpSchema.InitializeResult; -import org.modelcontextprotocol.spec.McpSchema.Role; -import org.modelcontextprotocol.spec.McpSchema.Root; -import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; -import org.modelcontextprotocol.spec.McpSchema.Tool; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; import reactor.test.StepVerifier; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java similarity index 81% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java index 2299bf3..79a9db8 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java @@ -2,11 +2,13 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; +import io.modelcontextprotocol.client.AbstractMcpAsyncClientTests; +import io.modelcontextprotocol.client.McpAsyncClient; +import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport; +import io.modelcontextprotocol.spec.ClientMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.client.transport.WebFluxSseClientTransport; -import org.modelcontextprotocol.spec.ClientMcpTransport; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java similarity index 82% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java index a154987..16108c6 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java @@ -2,11 +2,13 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; +import io.modelcontextprotocol.client.AbstractMcpSyncClientTests; +import io.modelcontextprotocol.client.McpSyncClient; +import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport; +import io.modelcontextprotocol.spec.ClientMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.client.transport.WebFluxSseClientTransport; -import org.modelcontextprotocol.spec.ClientMcpTransport; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java similarity index 97% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java index 80de0a8..a09700d 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client.transport; +package io.modelcontextprotocol.client.transport; import java.time.Duration; import java.util.Map; @@ -10,12 +10,13 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; import reactor.core.publisher.Flux; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java similarity index 82% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java index 5a4f797..b26afd6 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java @@ -2,12 +2,14 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.server.AbstractMcpAsyncServerTests; +import io.modelcontextprotocol.server.McpAsyncServer; +import io.modelcontextprotocol.server.transport.WebFluxSseServerTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.server.transport.WebFluxSseServerTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java similarity index 83% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java index df9eacd..0ad5c73 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java @@ -2,12 +2,14 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.server.AbstractMcpSyncServerTests; +import io.modelcontextprotocol.server.McpSyncServer; +import io.modelcontextprotocol.server.transport.WebFluxSseServerTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.server.transport.WebFluxSseServerTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; import reactor.netty.DisposableServer; import reactor.netty.http.server.HttpServer; diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java similarity index 96% rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java rename to mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java index ec4b136..0ab72a9 100644 --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java +++ b/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java @@ -1,7 +1,7 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.server.transport; +package io.modelcontextprotocol.server.transport; import java.io.IOException; import java.io.InputStream; diff --git a/mcp-transport/mcp-webmvc-sse-transport/README.md b/mcp-transport/mcp-webmvc-sse-transport/README.md index 22ed7e4..1e63e47 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/README.md +++ b/mcp-transport/mcp-webmvc-sse-transport/README.md @@ -2,7 +2,7 @@ ```xml - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-webmvc-sse-transport ``` diff --git a/mcp-transport/mcp-webmvc-sse-transport/pom.xml b/mcp-transport/mcp-webmvc-sse-transport/pom.xml index 7dcb169..4e3e910 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/pom.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT ../../pom.xml @@ -23,13 +23,13 @@ - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp 0.7.0-SNAPSHOT - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-test 0.7.0-SNAPSHOT test diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java similarity index 98% rename from mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java rename to mcp-transport/mcp-webmvc-sse-transport/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java index aa00066..7339311 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/org/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server.transport; +package io.modelcontextprotocol.server.transport; import java.io.IOException; import java.util.UUID; @@ -11,10 +11,10 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.ServerMcpTransport; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java similarity index 93% rename from mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java rename to mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java index 846482f..d00c17e 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java @@ -2,15 +2,16 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.server.AbstractMcpAsyncServerTests; +import io.modelcontextprotocol.server.transport.WebMvcSseServerTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.server.transport.WebMvcSseServerTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseIntegrationTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java similarity index 94% rename from mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseIntegrationTests.java rename to mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java index 96fbc3e..6600ab4 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseIntegrationTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java @@ -1,7 +1,7 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import java.time.Duration; import java.util.List; @@ -10,6 +10,22 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.client.McpClient; +import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import io.modelcontextprotocol.server.McpServer; +import io.modelcontextprotocol.server.McpServerFeatures; +import io.modelcontextprotocol.server.transport.WebMvcSseServerTransport; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import io.modelcontextprotocol.spec.McpSchema.InitializeResult; +import io.modelcontextprotocol.spec.McpSchema.Role; +import io.modelcontextprotocol.spec.McpSchema.Root; +import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import io.modelcontextprotocol.spec.McpSchema.Tool; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.LifecycleState; @@ -17,20 +33,6 @@ import org.apache.catalina.startup.Tomcat; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.client.McpClient; -import org.modelcontextprotocol.client.transport.HttpClientSseClientTransport; -import org.modelcontextprotocol.server.transport.WebMvcSseServerTransport; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; -import org.modelcontextprotocol.spec.McpSchema.InitializeResult; -import org.modelcontextprotocol.spec.McpSchema.Role; -import org.modelcontextprotocol.spec.McpSchema.Root; -import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; -import org.modelcontextprotocol.spec.McpSchema.Tool; import reactor.test.StepVerifier; import org.springframework.context.annotation.Bean; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java similarity index 93% rename from mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java rename to mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java index 8024173..7539790 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/org/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java @@ -2,15 +2,16 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.server.AbstractMcpSyncServerTests; +import io.modelcontextprotocol.server.transport.WebMvcSseServerTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.server.transport.WebMvcSseServerTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml b/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml index e300a15..bc1140b 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml @@ -9,16 +9,16 @@ - + - + - + - + diff --git a/mcp/pom.xml b/mcp/pom.xml index d727c55..9890371 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java b/mcp/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java similarity index 95% rename from mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java rename to mcp/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java index 875de37..9a0933e 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpAsyncClient.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java @@ -1,7 +1,7 @@ /* * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.time.Duration; import java.util.ArrayList; @@ -13,25 +13,25 @@ import java.util.function.Consumer; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.DefaultMcpSession; -import org.modelcontextprotocol.spec.DefaultMcpSession.NotificationHandler; -import org.modelcontextprotocol.spec.DefaultMcpSession.RequestHandler; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; -import org.modelcontextprotocol.spec.McpSchema.GetPromptRequest; -import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; -import org.modelcontextprotocol.spec.McpSchema.ListPromptsResult; -import org.modelcontextprotocol.spec.McpSchema.LoggingLevel; -import org.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; -import org.modelcontextprotocol.spec.McpSchema.PaginatedRequest; -import org.modelcontextprotocol.spec.McpSchema.Root; -import org.modelcontextprotocol.spec.McpTransport; -import org.modelcontextprotocol.util.Assert; -import org.modelcontextprotocol.util.Utils; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.DefaultMcpSession; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpTransport; +import io.modelcontextprotocol.spec.DefaultMcpSession.NotificationHandler; +import io.modelcontextprotocol.spec.DefaultMcpSession.RequestHandler; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import io.modelcontextprotocol.spec.McpSchema.GetPromptRequest; +import io.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import io.modelcontextprotocol.spec.McpSchema.ListPromptsResult; +import io.modelcontextprotocol.spec.McpSchema.LoggingLevel; +import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; +import io.modelcontextprotocol.spec.McpSchema.PaginatedRequest; +import io.modelcontextprotocol.spec.McpSchema.Root; +import io.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.util.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java b/mcp/src/main/java/io/modelcontextprotocol/client/McpClient.java similarity index 97% rename from mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java rename to mcp/src/main/java/io/modelcontextprotocol/client/McpClient.java index 554c408..7ab01b7 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpClient.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/McpClient.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.time.Duration; import java.util.ArrayList; @@ -12,15 +12,15 @@ import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpTransport; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; -import org.modelcontextprotocol.spec.McpSchema.Implementation; -import org.modelcontextprotocol.spec.McpSchema.Root; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpTransport; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import io.modelcontextprotocol.spec.McpSchema.Implementation; +import io.modelcontextprotocol.spec.McpSchema.Root; +import io.modelcontextprotocol.util.Assert; import reactor.core.publisher.Mono; /** diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpClientFeatures.java b/mcp/src/main/java/io/modelcontextprotocol/client/McpClientFeatures.java similarity index 98% rename from mcp/src/main/java/org/modelcontextprotocol/client/McpClientFeatures.java rename to mcp/src/main/java/io/modelcontextprotocol/client/McpClientFeatures.java index 6cbc456..284b93f 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpClientFeatures.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/McpClientFeatures.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.util.ArrayList; import java.util.HashMap; @@ -12,9 +12,9 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; import java.util.function.Function; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.util.Assert; -import org.modelcontextprotocol.util.Utils; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.util.Utils; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/McpSyncClient.java b/mcp/src/main/java/io/modelcontextprotocol/client/McpSyncClient.java similarity index 96% rename from mcp/src/main/java/org/modelcontextprotocol/client/McpSyncClient.java rename to mcp/src/main/java/io/modelcontextprotocol/client/McpSyncClient.java index a44afbd..0178b4b 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/McpSyncClient.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/McpSyncClient.java @@ -2,17 +2,17 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.time.Duration; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.GetPromptRequest; -import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; -import org.modelcontextprotocol.spec.McpSchema.ListPromptsResult; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.GetPromptRequest; +import io.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import io.modelcontextprotocol.spec.McpSchema.ListPromptsResult; +import io.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/transport/FlowSseClient.java b/mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java similarity index 99% rename from mcp/src/main/java/org/modelcontextprotocol/client/transport/FlowSseClient.java rename to mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java index f382f9c..7fc6799 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/transport/FlowSseClient.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java @@ -1,7 +1,7 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.client.transport; +package io.modelcontextprotocol.client.transport; import java.net.URI; import java.net.http.HttpClient; diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java b/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java similarity index 93% rename from mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java rename to mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java index f80f695..7af5294 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java @@ -1,16 +1,16 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.client.transport; +package io.modelcontextprotocol.client.transport; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.modelcontextprotocol.client.transport.FlowSseClient.SseEvent; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.client.transport.FlowSseClient.SseEvent; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; +import io.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; @@ -29,7 +29,7 @@ import java.util.function.Function; /** * Server-Sent Events (SSE) implementation of the - * {@link org.modelcontextprotocol.spec.McpTransport} that follows the MCP HTTP with SSE + * {@link io.modelcontextprotocol.spec.McpTransport} that follows the MCP HTTP with SSE * transport specification, using Java's HttpClient. * *

    @@ -51,8 +51,8 @@ import java.util.function.Function; * * * @author Christian Tzolov - * @see org.modelcontextprotocol.spec.McpTransport - * @see org.modelcontextprotocol.spec.ClientMcpTransport + * @see io.modelcontextprotocol.spec.McpTransport + * @see io.modelcontextprotocol.spec.ClientMcpTransport */ public class HttpClientSseClientTransport implements ClientMcpTransport { diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/transport/ServerParameters.java b/mcp/src/main/java/io/modelcontextprotocol/client/transport/ServerParameters.java similarity index 97% rename from mcp/src/main/java/org/modelcontextprotocol/client/transport/ServerParameters.java rename to mcp/src/main/java/io/modelcontextprotocol/client/transport/ServerParameters.java index 04f5f88..25a0227 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/transport/ServerParameters.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/ServerParameters.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client.transport; +package io.modelcontextprotocol.client.transport; import java.util.ArrayList; import java.util.Arrays; @@ -13,7 +13,7 @@ import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.util.Assert; /** * Server parameters for stdio client. diff --git a/mcp/src/main/java/org/modelcontextprotocol/client/transport/StdioClientTransport.java b/mcp/src/main/java/io/modelcontextprotocol/client/transport/StdioClientTransport.java similarity index 97% rename from mcp/src/main/java/org/modelcontextprotocol/client/transport/StdioClientTransport.java rename to mcp/src/main/java/io/modelcontextprotocol/client/transport/StdioClientTransport.java index ec7c816..462837b 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/client/transport/StdioClientTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/StdioClientTransport.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client.transport; +package io.modelcontextprotocol.client.transport; import java.io.BufferedReader; import java.io.IOException; @@ -18,10 +18,10 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; +import io.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java b/mcp/src/main/java/io/modelcontextprotocol/server/McpAsyncServer.java similarity index 97% rename from mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java rename to mcp/src/main/java/io/modelcontextprotocol/server/McpAsyncServer.java index 9086714..a6c9475 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpAsyncServer.java +++ b/mcp/src/main/java/io/modelcontextprotocol/server/McpAsyncServer.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import java.time.Duration; import java.util.HashMap; @@ -14,17 +14,17 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; -import org.modelcontextprotocol.spec.DefaultMcpSession; -import org.modelcontextprotocol.spec.DefaultMcpSession.NotificationHandler; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.LoggingLevel; -import org.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; -import org.modelcontextprotocol.spec.McpSchema.Tool; -import org.modelcontextprotocol.spec.ServerMcpTransport; -import org.modelcontextprotocol.util.Utils; +import io.modelcontextprotocol.spec.DefaultMcpSession; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.spec.DefaultMcpSession.NotificationHandler; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.LoggingLevel; +import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; +import io.modelcontextprotocol.spec.McpSchema.Tool; +import io.modelcontextprotocol.util.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java b/mcp/src/main/java/io/modelcontextprotocol/server/McpServer.java similarity index 98% rename from mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java rename to mcp/src/main/java/io/modelcontextprotocol/server/McpServer.java index 870282f..54c7a28 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpServer.java +++ b/mcp/src/main/java/io/modelcontextprotocol/server/McpServer.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import java.util.ArrayList; import java.util.HashMap; @@ -11,12 +11,12 @@ import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.ResourceTemplate; -import org.modelcontextprotocol.spec.McpTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.ResourceTemplate; +import io.modelcontextprotocol.util.Assert; import reactor.core.publisher.Mono; /** diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpServerFeatures.java b/mcp/src/main/java/io/modelcontextprotocol/server/McpServerFeatures.java similarity index 98% rename from mcp/src/main/java/org/modelcontextprotocol/server/McpServerFeatures.java rename to mcp/src/main/java/io/modelcontextprotocol/server/McpServerFeatures.java index 162b431..c8f8399 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpServerFeatures.java +++ b/mcp/src/main/java/io/modelcontextprotocol/server/McpServerFeatures.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import java.util.ArrayList; import java.util.HashMap; @@ -11,9 +11,9 @@ import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.util.Assert; -import org.modelcontextprotocol.util.Utils; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.util.Utils; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java b/mcp/src/main/java/io/modelcontextprotocol/server/McpSyncServer.java similarity index 95% rename from mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java rename to mcp/src/main/java/io/modelcontextprotocol/server/McpSyncServer.java index aab1457..1de0139 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/McpSyncServer.java +++ b/mcp/src/main/java/io/modelcontextprotocol/server/McpSyncServer.java @@ -2,13 +2,13 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification; +import io.modelcontextprotocol.util.Assert; /** * A synchronous implementation of the Model Context Protocol (MCP) server that wraps diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java b/mcp/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java similarity index 98% rename from mcp/src/main/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java rename to mcp/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java index 6a56798..98b8ea5 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransport.java @@ -1,7 +1,7 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.server.transport; +package io.modelcontextprotocol.server.transport; import java.io.BufferedReader; import java.io.IOException; @@ -14,15 +14,15 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.ServerMcpTransport; import jakarta.servlet.AsyncContext; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.ServerMcpTransport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; diff --git a/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java b/mcp/src/main/java/io/modelcontextprotocol/server/transport/StdioServerTransport.java similarity index 96% rename from mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java rename to mcp/src/main/java/io/modelcontextprotocol/server/transport/StdioServerTransport.java index 52845a9..506e387 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/server/transport/StdioServerTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/server/transport/StdioServerTransport.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server.transport; +package io.modelcontextprotocol.server.transport; import java.io.BufferedReader; import java.io.IOException; @@ -16,10 +16,10 @@ import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.ServerMcpTransport; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; +import io.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/ClientMcpTransport.java b/mcp/src/main/java/io/modelcontextprotocol/spec/ClientMcpTransport.java similarity index 84% rename from mcp/src/main/java/org/modelcontextprotocol/spec/ClientMcpTransport.java rename to mcp/src/main/java/io/modelcontextprotocol/spec/ClientMcpTransport.java index eff6c15..8a9b4ce 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/ClientMcpTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/spec/ClientMcpTransport.java @@ -1,7 +1,7 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.spec; +package io.modelcontextprotocol.spec; /** * Marker interface for the client-side MCP transport. diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/DefaultMcpSession.java b/mcp/src/main/java/io/modelcontextprotocol/spec/DefaultMcpSession.java similarity index 99% rename from mcp/src/main/java/org/modelcontextprotocol/spec/DefaultMcpSession.java rename to mcp/src/main/java/io/modelcontextprotocol/spec/DefaultMcpSession.java index 5a89a1a..eb7ce49 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/DefaultMcpSession.java +++ b/mcp/src/main/java/io/modelcontextprotocol/spec/DefaultMcpSession.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.spec; +package io.modelcontextprotocol.spec; import java.time.Duration; import java.util.Map; @@ -11,7 +11,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; import com.fasterxml.jackson.core.type.TypeReference; -import org.modelcontextprotocol.util.Assert; +import io.modelcontextprotocol.util.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.Disposable; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/McpError.java b/mcp/src/main/java/io/modelcontextprotocol/spec/McpError.java similarity index 77% rename from mcp/src/main/java/org/modelcontextprotocol/spec/McpError.java rename to mcp/src/main/java/io/modelcontextprotocol/spec/McpError.java index df79238..13e4324 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/McpError.java +++ b/mcp/src/main/java/io/modelcontextprotocol/spec/McpError.java @@ -1,9 +1,9 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.spec; +package io.modelcontextprotocol.spec; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCResponse.JSONRPCError; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCResponse.JSONRPCError; public class McpError extends RuntimeException { diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/McpSchema.java b/mcp/src/main/java/io/modelcontextprotocol/spec/McpSchema.java similarity index 99% rename from mcp/src/main/java/org/modelcontextprotocol/spec/McpSchema.java rename to mcp/src/main/java/io/modelcontextprotocol/spec/McpSchema.java index 153ca99..1c6bb61 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/McpSchema.java +++ b/mcp/src/main/java/io/modelcontextprotocol/spec/McpSchema.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.spec; +package io.modelcontextprotocol.spec; import java.io.IOException; import java.util.HashMap; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/McpSession.java b/mcp/src/main/java/io/modelcontextprotocol/spec/McpSession.java similarity index 98% rename from mcp/src/main/java/org/modelcontextprotocol/spec/McpSession.java rename to mcp/src/main/java/io/modelcontextprotocol/spec/McpSession.java index 50ecc52..92b4607 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/McpSession.java +++ b/mcp/src/main/java/io/modelcontextprotocol/spec/McpSession.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.spec; +package io.modelcontextprotocol.spec; import java.util.Map; diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/McpTransport.java b/mcp/src/main/java/io/modelcontextprotocol/spec/McpTransport.java similarity index 96% rename from mcp/src/main/java/org/modelcontextprotocol/spec/McpTransport.java rename to mcp/src/main/java/io/modelcontextprotocol/spec/McpTransport.java index 577ae5b..344a50b 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/McpTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/spec/McpTransport.java @@ -2,12 +2,12 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.spec; +package io.modelcontextprotocol.spec; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCMessage; import reactor.core.publisher.Mono; /** diff --git a/mcp/src/main/java/org/modelcontextprotocol/spec/ServerMcpTransport.java b/mcp/src/main/java/io/modelcontextprotocol/spec/ServerMcpTransport.java similarity index 84% rename from mcp/src/main/java/org/modelcontextprotocol/spec/ServerMcpTransport.java rename to mcp/src/main/java/io/modelcontextprotocol/spec/ServerMcpTransport.java index 182be85..1359143 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/spec/ServerMcpTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/spec/ServerMcpTransport.java @@ -1,7 +1,7 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.spec; +package io.modelcontextprotocol.spec; /** * Marker interface for the server-side MCP transport. diff --git a/mcp/src/main/java/org/modelcontextprotocol/util/Assert.java b/mcp/src/main/java/io/modelcontextprotocol/util/Assert.java similarity index 98% rename from mcp/src/main/java/org/modelcontextprotocol/util/Assert.java rename to mcp/src/main/java/io/modelcontextprotocol/util/Assert.java index bee6c44..d68188c 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/util/Assert.java +++ b/mcp/src/main/java/io/modelcontextprotocol/util/Assert.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.util; +package io.modelcontextprotocol.util; import java.util.Collection; diff --git a/mcp/src/main/java/org/modelcontextprotocol/util/Utils.java b/mcp/src/main/java/io/modelcontextprotocol/util/Utils.java similarity index 97% rename from mcp/src/main/java/org/modelcontextprotocol/util/Utils.java rename to mcp/src/main/java/io/modelcontextprotocol/util/Utils.java index 2a8da98..0f799ca 100644 --- a/mcp/src/main/java/org/modelcontextprotocol/util/Utils.java +++ b/mcp/src/main/java/io/modelcontextprotocol/util/Utils.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.util; +package io.modelcontextprotocol.util; import java.util.Collection; import java.util.Map; diff --git a/mcp/src/test/java/org/modelcontextprotocol/MockMcpTransport.java b/mcp/src/test/java/io/modelcontextprotocol/MockMcpTransport.java similarity index 89% rename from mcp/src/test/java/org/modelcontextprotocol/MockMcpTransport.java rename to mcp/src/test/java/io/modelcontextprotocol/MockMcpTransport.java index c62c0d4..1679ab7 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/MockMcpTransport.java +++ b/mcp/src/test/java/io/modelcontextprotocol/MockMcpTransport.java @@ -2,18 +2,18 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol; +package io.modelcontextprotocol; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.ServerMcpTransport; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCNotification; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCNotification; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.publisher.Sinks; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java similarity index 91% rename from mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java rename to mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java index e76e389..ea61844 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java @@ -2,31 +2,33 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.time.Duration; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; +import io.modelcontextprotocol.client.McpAsyncClient; +import io.modelcontextprotocol.client.McpClient; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpTransport; +import io.modelcontextprotocol.spec.McpSchema.CallToolRequest; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import io.modelcontextprotocol.spec.McpSchema.GetPromptRequest; +import io.modelcontextprotocol.spec.McpSchema.Prompt; +import io.modelcontextprotocol.spec.McpSchema.Resource; +import io.modelcontextprotocol.spec.McpSchema.Root; +import io.modelcontextprotocol.spec.McpSchema.SubscribeRequest; +import io.modelcontextprotocol.spec.McpSchema.Tool; +import io.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolRequest; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; -import org.modelcontextprotocol.spec.McpSchema.GetPromptRequest; -import org.modelcontextprotocol.spec.McpSchema.Prompt; -import org.modelcontextprotocol.spec.McpSchema.Resource; -import org.modelcontextprotocol.spec.McpSchema.Root; -import org.modelcontextprotocol.spec.McpSchema.SubscribeRequest; -import org.modelcontextprotocol.spec.McpSchema.Tool; -import org.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; -import org.modelcontextprotocol.spec.McpTransport; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java similarity index 88% rename from mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java rename to mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java index 79378fa..6a630c4 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/AbstractMcpSyncClientTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java @@ -2,30 +2,32 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.time.Duration; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; +import io.modelcontextprotocol.client.McpClient; +import io.modelcontextprotocol.client.McpSyncClient; +import io.modelcontextprotocol.spec.ClientMcpTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.CallToolRequest; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.ListResourceTemplatesResult; +import io.modelcontextprotocol.spec.McpSchema.ListResourcesResult; +import io.modelcontextprotocol.spec.McpSchema.ListToolsResult; +import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import io.modelcontextprotocol.spec.McpSchema.Resource; +import io.modelcontextprotocol.spec.McpSchema.Root; +import io.modelcontextprotocol.spec.McpSchema.SubscribeRequest; +import io.modelcontextprotocol.spec.McpSchema.TextContent; +import io.modelcontextprotocol.spec.McpSchema.Tool; +import io.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.spec.ClientMcpTransport; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolRequest; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.ListResourceTemplatesResult; -import org.modelcontextprotocol.spec.McpSchema.ListResourcesResult; -import org.modelcontextprotocol.spec.McpSchema.ListToolsResult; -import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; -import org.modelcontextprotocol.spec.McpSchema.Resource; -import org.modelcontextprotocol.spec.McpSchema.Root; -import org.modelcontextprotocol.spec.McpSchema.SubscribeRequest; -import org.modelcontextprotocol.spec.McpSchema.TextContent; -import org.modelcontextprotocol.spec.McpSchema.Tool; -import org.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java similarity index 96% rename from mcp/src/test/java/org/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java rename to mcp/src/test/java/io/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java index 6a4ee28..a58df5e 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.time.Duration; import java.util.ArrayList; @@ -13,12 +13,14 @@ import java.util.function.Function; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.MockMcpTransport; +import io.modelcontextprotocol.client.McpAsyncClient; +import io.modelcontextprotocol.client.McpClient; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.Root; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.MockMcpTransport; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.Root; import reactor.core.publisher.Mono; import static org.assertj.core.api.Assertions.assertThat; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/McpClientProtocolVersionTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/McpClientProtocolVersionTests.java similarity index 93% rename from mcp/src/test/java/org/modelcontextprotocol/client/McpClientProtocolVersionTests.java rename to mcp/src/test/java/io/modelcontextprotocol/client/McpClientProtocolVersionTests.java index 88e18f8..317f571 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/McpClientProtocolVersionTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/McpClientProtocolVersionTests.java @@ -2,16 +2,18 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.time.Duration; import java.util.List; +import io.modelcontextprotocol.MockMcpTransport; +import io.modelcontextprotocol.client.McpAsyncClient; +import io.modelcontextprotocol.client.McpClient; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.InitializeResult; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.MockMcpTransport; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.InitializeResult; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java similarity index 84% rename from mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java rename to mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java index 5c841b6..d96dc7f 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java @@ -2,11 +2,12 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; +import io.modelcontextprotocol.client.McpSyncClient; +import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import io.modelcontextprotocol.spec.ClientMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.client.transport.HttpClientSseClientTransport; -import org.modelcontextprotocol.spec.ClientMcpTransport; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java similarity index 84% rename from mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java rename to mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java index 8b6f257..0ae22ac 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java @@ -2,11 +2,12 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; +import io.modelcontextprotocol.client.McpSyncClient; +import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import io.modelcontextprotocol.spec.ClientMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.client.transport.HttpClientSseClientTransport; -import org.modelcontextprotocol.spec.ClientMcpTransport; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpAsyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java similarity index 69% rename from mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpAsyncClientTests.java rename to mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java index 58de6f8..44c2876 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpAsyncClientTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java @@ -2,12 +2,13 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; +import io.modelcontextprotocol.client.McpAsyncClient; +import io.modelcontextprotocol.client.transport.ServerParameters; +import io.modelcontextprotocol.client.transport.StdioClientTransport; +import io.modelcontextprotocol.spec.ClientMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.client.transport.ServerParameters; -import org.modelcontextprotocol.client.transport.StdioClientTransport; -import org.modelcontextprotocol.spec.ClientMcpTransport; /** * Tests for the {@link McpAsyncClient} with {@link StdioClientTransport}. diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpSyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java similarity index 81% rename from mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpSyncClientTests.java rename to mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java index d5607fd..ef7c83b 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/StdioMcpSyncClientTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java @@ -2,15 +2,16 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client; +package io.modelcontextprotocol.client; import java.util.concurrent.atomic.AtomicReference; +import io.modelcontextprotocol.client.McpSyncClient; +import io.modelcontextprotocol.client.transport.ServerParameters; +import io.modelcontextprotocol.client.transport.StdioClientTransport; +import io.modelcontextprotocol.spec.ClientMcpTransport; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.client.transport.ServerParameters; -import org.modelcontextprotocol.client.transport.StdioClientTransport; -import org.modelcontextprotocol.spec.ClientMcpTransport; import static org.assertj.core.api.Assertions.assertThat; diff --git a/mcp/src/test/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java similarity index 96% rename from mcp/src/test/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java rename to mcp/src/test/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java index 74593d3..2d37b4a 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java @@ -2,19 +2,20 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.client.transport; +package io.modelcontextprotocol.client.transport; import java.time.Duration; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; +import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; import reactor.core.publisher.Mono; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java similarity index 94% rename from mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java rename to mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java index 0913d29..ff1162c 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java @@ -2,26 +2,29 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import java.time.Duration; import java.util.List; +import io.modelcontextprotocol.server.McpAsyncServer; +import io.modelcontextprotocol.server.McpServer; +import io.modelcontextprotocol.server.McpServerFeatures; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import io.modelcontextprotocol.spec.McpSchema.Prompt; +import io.modelcontextprotocol.spec.McpSchema.PromptMessage; +import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import io.modelcontextprotocol.spec.McpSchema.Resource; +import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import io.modelcontextprotocol.spec.McpSchema.Tool; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; -import org.modelcontextprotocol.spec.McpSchema.Prompt; -import org.modelcontextprotocol.spec.McpSchema.PromptMessage; -import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; -import org.modelcontextprotocol.spec.McpSchema.Resource; -import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; -import org.modelcontextprotocol.spec.McpSchema.Tool; -import org.modelcontextprotocol.spec.McpTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java similarity index 94% rename from mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java rename to mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java index cc1b4fe..37c02c8 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/AbstractMcpSyncServerTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java @@ -2,25 +2,28 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import java.util.List; +import io.modelcontextprotocol.server.McpServer; +import io.modelcontextprotocol.server.McpServerFeatures; +import io.modelcontextprotocol.server.McpSyncServer; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.GetPromptResult; +import io.modelcontextprotocol.spec.McpSchema.Prompt; +import io.modelcontextprotocol.spec.McpSchema.PromptMessage; +import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult; +import io.modelcontextprotocol.spec.McpSchema.Resource; +import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import io.modelcontextprotocol.spec.McpSchema.Tool; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.GetPromptResult; -import org.modelcontextprotocol.spec.McpSchema.Prompt; -import org.modelcontextprotocol.spec.McpSchema.PromptMessage; -import org.modelcontextprotocol.spec.McpSchema.ReadResourceResult; -import org.modelcontextprotocol.spec.McpSchema.Resource; -import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; -import org.modelcontextprotocol.spec.McpSchema.Tool; -import org.modelcontextprotocol.spec.McpTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/McpServerProtocolVersionTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java similarity index 95% rename from mcp/src/test/java/org/modelcontextprotocol/server/McpServerProtocolVersionTests.java rename to mcp/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java index 1e05231..74498ff 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/McpServerProtocolVersionTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java @@ -2,14 +2,16 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import java.util.List; import java.util.UUID; +import io.modelcontextprotocol.MockMcpTransport; +import io.modelcontextprotocol.server.McpAsyncServer; +import io.modelcontextprotocol.server.McpServer; +import io.modelcontextprotocol.spec.McpSchema; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.MockMcpTransport; -import org.modelcontextprotocol.spec.McpSchema; import static org.assertj.core.api.Assertions.assertThat; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java similarity index 70% rename from mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java rename to mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java index 52836e4..02d140f 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java @@ -2,12 +2,13 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.server.McpAsyncServer; +import io.modelcontextprotocol.server.transport.HttpServletSseServerTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.server.transport.HttpServletSseServerTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; /** * Tests for {@link McpAsyncServer} using {@link HttpServletSseServerTransport}. diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java similarity index 70% rename from mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java rename to mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java index 14f6e30..9b64e3e 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java @@ -2,12 +2,13 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.server.McpSyncServer; +import io.modelcontextprotocol.server.transport.HttpServletSseServerTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.server.transport.HttpServletSseServerTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; /** * Tests for {@link McpSyncServer} using {@link HttpServletSseServerTransport}. diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpAsyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpAsyncServerTests.java similarity index 67% rename from mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpAsyncServerTests.java rename to mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpAsyncServerTests.java index 717b6b0..75646fd 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpAsyncServerTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpAsyncServerTests.java @@ -2,11 +2,12 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; +import io.modelcontextprotocol.server.McpAsyncServer; +import io.modelcontextprotocol.server.transport.StdioServerTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.server.transport.StdioServerTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; /** * Tests for {@link McpAsyncServer} using {@link StdioServerTransport}. diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpSyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpSyncServerTests.java similarity index 67% rename from mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpSyncServerTests.java rename to mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpSyncServerTests.java index 2bc8491..073bbcb 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/StdioMcpSyncServerTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpSyncServerTests.java @@ -2,11 +2,12 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server; +package io.modelcontextprotocol.server; +import io.modelcontextprotocol.server.McpSyncServer; +import io.modelcontextprotocol.server.transport.StdioServerTransport; +import io.modelcontextprotocol.spec.ServerMcpTransport; import org.junit.jupiter.api.Timeout; -import org.modelcontextprotocol.server.transport.StdioServerTransport; -import org.modelcontextprotocol.spec.ServerMcpTransport; /** * Tests for {@link McpSyncServer} using {@link StdioServerTransport}. diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java b/mcp/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java similarity index 96% rename from mcp/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java rename to mcp/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java index ec4b136..0ab72a9 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/transport/BlockingInputStream.java +++ b/mcp/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java @@ -1,7 +1,7 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.server.transport; +package io.modelcontextprotocol.server.transport; import java.io.IOException; import java.io.InputStream; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java similarity index 91% rename from mcp/src/test/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java rename to mcp/src/test/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java index 0e6802c..6fe7fe0 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java @@ -1,7 +1,7 @@ /* * Copyright 2024 - 2024 the original author or authors. */ -package org.modelcontextprotocol.server.transport; +package io.modelcontextprotocol.server.transport; import java.time.Duration; import java.util.List; @@ -10,6 +10,22 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.client.McpClient; +import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport; +import io.modelcontextprotocol.server.McpServer; +import io.modelcontextprotocol.server.McpServerFeatures; +import io.modelcontextprotocol.server.transport.HttpServletSseServerTransport; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.CallToolResult; +import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; +import io.modelcontextprotocol.spec.McpSchema.CreateMessageResult; +import io.modelcontextprotocol.spec.McpSchema.InitializeResult; +import io.modelcontextprotocol.spec.McpSchema.Role; +import io.modelcontextprotocol.spec.McpSchema.Root; +import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities; +import io.modelcontextprotocol.spec.McpSchema.Tool; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.LifecycleState; @@ -17,21 +33,6 @@ import org.apache.catalina.startup.Tomcat; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.client.McpClient; -import org.modelcontextprotocol.client.transport.HttpClientSseClientTransport; -import org.modelcontextprotocol.server.McpServer; -import org.modelcontextprotocol.server.McpServerFeatures; -import org.modelcontextprotocol.spec.McpError; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.CallToolResult; -import org.modelcontextprotocol.spec.McpSchema.ClientCapabilities; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageRequest; -import org.modelcontextprotocol.spec.McpSchema.CreateMessageResult; -import org.modelcontextprotocol.spec.McpSchema.InitializeResult; -import org.modelcontextprotocol.spec.McpSchema.Role; -import org.modelcontextprotocol.spec.McpSchema.Root; -import org.modelcontextprotocol.spec.McpSchema.ServerCapabilities; -import org.modelcontextprotocol.spec.McpSchema.Tool; import reactor.test.StepVerifier; import org.springframework.web.client.RestClient; diff --git a/mcp/src/test/java/org/modelcontextprotocol/server/transport/StdioServerTransportTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportTests.java similarity index 95% rename from mcp/src/test/java/org/modelcontextprotocol/server/transport/StdioServerTransportTests.java rename to mcp/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportTests.java index f564a87..a06cfe6 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/server/transport/StdioServerTransportTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportTests.java @@ -2,7 +2,7 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.server.transport; +package io.modelcontextprotocol.server.transport; import java.io.ByteArrayOutputStream; import java.io.InputStream; @@ -11,12 +11,13 @@ import java.nio.charset.StandardCharsets; import java.util.Map; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.server.transport.StdioServerTransport; +import io.modelcontextprotocol.spec.McpSchema; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.spec.McpSchema; -import org.modelcontextprotocol.spec.McpSchema.JSONRPCRequest; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; diff --git a/mcp/src/test/java/org/modelcontextprotocol/spec/DefaultMcpSessionTests.java b/mcp/src/test/java/io/modelcontextprotocol/spec/DefaultMcpSessionTests.java similarity index 96% rename from mcp/src/test/java/org/modelcontextprotocol/spec/DefaultMcpSessionTests.java rename to mcp/src/test/java/io/modelcontextprotocol/spec/DefaultMcpSessionTests.java index 6ee5345..2b7bf34 100644 --- a/mcp/src/test/java/org/modelcontextprotocol/spec/DefaultMcpSessionTests.java +++ b/mcp/src/test/java/io/modelcontextprotocol/spec/DefaultMcpSessionTests.java @@ -2,16 +2,19 @@ * Copyright 2024-2024 the original author or authors. */ -package org.modelcontextprotocol.spec; +package io.modelcontextprotocol.spec; import java.time.Duration; import java.util.Map; import com.fasterxml.jackson.core.type.TypeReference; +import io.modelcontextprotocol.MockMcpTransport; +import io.modelcontextprotocol.spec.DefaultMcpSession; +import io.modelcontextprotocol.spec.McpError; +import io.modelcontextprotocol.spec.McpSchema; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.modelcontextprotocol.MockMcpTransport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; diff --git a/pom.xml b/pom.xml index b683519..b562247 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.modelcontextprotocol.sdk + io.modelcontextprotocol.sdk mcp-parent 0.7.0-SNAPSHOT From 1a506d05633997c6d46f8ff47a4d5696361350be Mon Sep 17 00:00:00 2001 From: Christian Tzolov <1351573+tzolov@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:52:23 +0100 Subject: [PATCH 099/505] Update pom.xml update nexus plugin version to 1.7.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b562247..4115541 100644 --- a/pom.xml +++ b/pom.xml @@ -302,7 +302,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.7 + 1.7.0 true ossrh From c78c1adcc692559f3c1cc369e3745221675f69c6 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 19:36:27 +0100 Subject: [PATCH 100/505] Migrate to central-publishing-maven-plugin --- .github/workflows/continuous-integration.yml | 2 +- .github/workflows/maven-central-release.yml | 2 +- pom.xml | 35 ++++---------------- 3 files changed, 8 insertions(+), 31 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index a9bc8fd..1306cdf 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -18,7 +18,7 @@ jobs: java-version: '17' distribution: 'temurin' cache: 'maven' - server-id: ossrh + server-id: central server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD gpg-private-key: ${{ secrets.GPG_SECRET_KEY }} diff --git a/.github/workflows/maven-central-release.yml b/.github/workflows/maven-central-release.yml index 87b338c..4418440 100644 --- a/.github/workflows/maven-central-release.yml +++ b/.github/workflows/maven-central-release.yml @@ -18,7 +18,7 @@ jobs: java-version: '17' distribution: 'temurin' cache: 'maven' - server-id: ossrh + server-id: central server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD gpg-private-key: ${{ secrets.GPG_SECRET_KEY }} diff --git a/pom.xml b/pom.xml index 4115541..d1bdc29 100644 --- a/pom.xml +++ b/pom.xml @@ -50,13 +50,6 @@ Github Actions https://github.com/modelcontextprotocol/java-sdk/actions - - - ossrh - Central Repository OSSRH - https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ - - UTF-8 @@ -300,19 +293,13 @@ - org.sonatype.plugins - nexus-staging-maven-plugin - 1.7.0 + org.sonatype.central + central-publishing-maven-plugin + 0.7.0 true - ossrh - https://s01.oss.sonatype.org/ - - false + central + false @@ -338,16 +325,6 @@ - - - ossrh - https://s01.oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ - - @@ -385,4 +362,4 @@ - + \ No newline at end of file From a439e4ae6a19c0f306ae0f7573ee65de5e9ad640 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Tue, 28 Jan 2025 19:45:56 +0100 Subject: [PATCH 101/505] Re-enable the CI tests --- .github/workflows/continuous-integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 1306cdf..fffdec2 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -35,7 +35,7 @@ jobs: MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} MAVEN_GPG_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} run: | - mvn -Pjavadoc -Prelease -DskipTests --batch-mode --update-snapshots deploy + mvn -Pjavadoc -Prelease --batch-mode --update-snapshots deploy - name: Generate Java docs run: mvn -Pjavadoc -B javadoc:aggregate From 7e73152ada562b978a2e8c8b3a2a579e70582b8f Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Tue, 28 Jan 2025 08:49:41 -0500 Subject: [PATCH 102/505] Convert asciidoc/antor docs to mintlify --- mintlify-docs/docs/dependency-management.mdx | 104 +++++++ mintlify-docs/docs/mcp-capabilities.mdx | 139 +++++++++ mintlify-docs/docs/mcp-client.mdx | 232 ++++++++++++++ mintlify-docs/docs/mcp-overview.mdx | 85 ++++++ mintlify-docs/docs/mcp-server.mdx | 98 ++++++ mintlify-docs/docs/mcp-transport.mdx | 144 +++++++++ mintlify-docs/docs/overview.mdx | 55 ++++ mintlify-docs/favicon.svg | 12 + mintlify-docs/images/class-diagrams.puml | 282 ++++++++++++++++++ mintlify-docs/images/mcp-stack.svg | 197 ++++++++++++ .../spring-ai-mcp-client-architecture.jpg | Bin 0 -> 702970 bytes .../spring-ai-mcp-server-architecture.jpg | Bin 0 -> 809495 bytes .../images/spring-ai-mcp-uml-classdiagram.svg | 1 + mintlify-docs/mint.json | 41 +++ 14 files changed, 1390 insertions(+) create mode 100644 mintlify-docs/docs/dependency-management.mdx create mode 100644 mintlify-docs/docs/mcp-capabilities.mdx create mode 100644 mintlify-docs/docs/mcp-client.mdx create mode 100644 mintlify-docs/docs/mcp-overview.mdx create mode 100644 mintlify-docs/docs/mcp-server.mdx create mode 100644 mintlify-docs/docs/mcp-transport.mdx create mode 100644 mintlify-docs/docs/overview.mdx create mode 100644 mintlify-docs/favicon.svg create mode 100644 mintlify-docs/images/class-diagrams.puml create mode 100644 mintlify-docs/images/mcp-stack.svg create mode 100644 mintlify-docs/images/spring-ai-mcp-client-architecture.jpg create mode 100644 mintlify-docs/images/spring-ai-mcp-server-architecture.jpg create mode 100644 mintlify-docs/images/spring-ai-mcp-uml-classdiagram.svg create mode 100644 mintlify-docs/mint.json diff --git a/mintlify-docs/docs/dependency-management.mdx b/mintlify-docs/docs/dependency-management.mdx new file mode 100644 index 0000000..204c51c --- /dev/null +++ b/mintlify-docs/docs/dependency-management.mdx @@ -0,0 +1,104 @@ +--- +title: Dependency Management +description: Guide to managing dependencies for the Model Context Protocol (MCP) Java SDK +--- + +# Dependency Management + +## Bill of Materials (BOM) + +The Bill of Materials (BOM) declares the recommended versions of all the dependencies used by a given release. +Using the BOM from your application's build script avoids the need for you to specify and maintain the dependency versions yourself. +Instead, the version of the BOM you're using determines the utilized dependency versions. +It also ensures that you're using supported and tested versions of the dependencies by default, unless you choose to override them. + +Add the BOM to your project: + + + +```xml + + + + org.modelcontextprotocol.sdk + mcp-bom + 0.6.0-SNAPSHOT + pom + import + + + +``` + + + +```groovy +dependencies { + implementation platform("org.modelcontextprotocol.sdk:mcp-bom:0.6.0-SNAPSHOT") + //... +} +``` + +Gradle users can also use the Spring AI MCP BOM by leveraging Gradle (5.0+) native support for declaring dependency constraints using a Maven BOM. +This is implemented by adding a 'platform' dependency handler method to the dependencies section of your Gradle build script. +As shown in the snippet below this can then be followed by version-less declarations of the Starter Dependencies for the one or more spring-ai modules you wish to use, e.g. spring-ai-openai. + + + +Replace the version number with the version of the BOM you want to use. + +## Available Dependencies + +The following dependencies are available and managed by the BOM: + +### Core Dependencies + +- `org.modelcontextprotocol.sdk:mcp` - Core MCP library providing the base functionality and APIs for Model Context Protocol implementation. + +### Transport Dependencies + +- `org.modelcontextprotocol.sdk:mcp-webflux-sse-transport` - WebFlux-based Server-Sent Events (SSE) transport implementation for reactive applications. +- `org.modelcontextprotocol.sdk:mcp-webmvc-sse-transport` - WebMVC-based Server-Sent Events (SSE) transport implementation for servlet-based applications. + +### Testing Dependencies + +- `org.modelcontextprotocol.sdk:mcp-test` - Testing utilities and support for MCP-based applications. + +### Milestone and Snapshot Repositories + +To use the Milestone and Snapshot version, you need to add references to the Spring Milestone and/or Snapshot repositories in your build file. +Add the following repository definitions to your Maven or Gradle build file: + + + +```xml + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + false + + + +``` + + + +```groovy +repositories { + maven { url 'https://repo.spring.io/milestone' } + maven { url 'https://repo.spring.io/snapshot' } +} +``` + + diff --git a/mintlify-docs/docs/mcp-capabilities.mdx b/mintlify-docs/docs/mcp-capabilities.mdx new file mode 100644 index 0000000..aceda05 --- /dev/null +++ b/mintlify-docs/docs/mcp-capabilities.mdx @@ -0,0 +1,139 @@ +--- +title: MCP Server Capabilities +description: Configure and manage Model Context Protocol (MCP) server capabilities including tools, resources, and prompts +--- + +# Model Context Protocol Server Capabilities + +The server can be configured with various capabilities: + +```java +var capabilities = ServerCapabilities.builder() + .resources(false, true) // Resource support with list changes notifications + .tools(true) // Tool support with list changes notifications + .prompts(true) // Prompt support with list changes notifications + .logging() // Enable logging support (enabled by default with loging level INFO) + .build(); +``` + +## Logging Support + +The server provides structured logging capabilities that allow sending log messages to clients with different severity levels: + +```java +// Send a log message to clients +server.loggingNotification(LoggingMessageNotification.builder() + .level(LoggingLevel.INFO) + .logger("custom-logger") + .data("Custom log message") + .build()); +``` + +Clients can control the minimum logging level they receive through the `mcpClient.setLoggingLevel(level)` request. Messages below the set level will be filtered out. +Supported logging levels (in order of increasing severity): DEBUG (0), INFO (1), NOTICE (2), WARNING (3), ERROR (4), CRITICAL (5), ALERT (6), EMERGENCY (7) + +## Tool Registration + + + +```java +// Sync tool registration +var syncToolRegistration = new McpServerFeatures.SyncToolRegistration( + new Tool("calculator", "Basic calculator", Map.of( + "operation", "string", + "a", "number", + "b", "number" + )), + arguments -> { + // Tool implementation + return new CallToolResult(result, false); + } +); +``` + + + +```java +// Async tool registration +var asyncToolRegistration = new McpServerFeatures.AsyncToolRegistration( + new Tool("calculator", "Basic calculator", Map.of( + "operation", "string", + "a", "number", + "b", "number" + )), + arguments -> { + // Tool implementation + return Mono.just(new CallToolResult(result, false)); + } +); +``` + + + +## Resource Registration + + + +```java +// Sync resource registration +var syncResourceRegistration = new McpServerFeatures.SyncResourceRegistration( + new Resource("custom://resource", "name", "description", "mime-type", null), + request -> { + // Resource read implementation + return new ReadResourceResult(contents); + } +); +``` + + + +```java +// Async resource registration +var asyncResourceRegistration = new McpServerFeatures.AsyncResourceRegistration( + new Resource("custom://resource", "name", "description", "mime-type", null), + request -> { + // Resource read implementation + return Mono.just(new ReadResourceResult(contents)); + } +); +``` + + + +## Prompt Registration + + + +```java +// Sync prompt registration +var syncPromptRegistration = new McpServerFeatures.SyncPromptRegistration( + new Prompt("greeting", "description", List.of( + new PromptArgument("name", "description", true) + )), + request -> { + // Prompt implementation + return new GetPromptResult(description, messages); + } +); +``` + + + +```java +// Async prompt registration +var asyncPromptRegistration = new McpServerFeatures.AsyncPromptRegistration( + new Prompt("greeting", "description", List.of( + new PromptArgument("name", "description", true) + )), + request -> { + // Prompt implementation + return Mono.just(new GetPromptResult(description, messages)); + } +); +``` + + + +# Error Handling + +The SDK provides comprehensive error handling through the McpError class, covering protocol compatibility, transport communication, JSON-RPC messaging, tool execution, resource management, prompt handling, timeouts, and connection issues. This unified error handling approach ensures consistent and reliable error management across both synchronous and asynchronous operations. diff --git a/mintlify-docs/docs/mcp-client.mdx b/mintlify-docs/docs/mcp-client.mdx new file mode 100644 index 0000000..0f78879 --- /dev/null +++ b/mintlify-docs/docs/mcp-client.mdx @@ -0,0 +1,232 @@ +--- +title: MCP Client +description: Learn how to use the Model Context Protocol (MCP) client to interact with MCP servers +--- + +# Model Context Protocol Client + +The MCP Client is a key component in the Model Context Protocol (MCP) architecture, responsible for establishing and managing connections with MCP servers. It implements the client-side of the protocol, handling: + +- Protocol version negotiation to ensure compatibility with servers +- Capability negotiation to determine available features +- Message transport and JSON-RPC communication +- Tool discovery and execution +- Resource access and management +- Prompt system interactions +- Optional features like roots management and sampling support + +The client provides both synchronous and asynchronous APIs for flexibility in different application contexts. + + + +```java +// Create a sync client with custom configuration +McpSyncClient client = McpClient.sync(transport) + .requestTimeout(Duration.ofSeconds(10)) + .capabilities(ClientCapabilities.builder() + .roots(true) // Enable roots capability + .sampling() // Enable sampling capability + .build()) + .sampling(request -> new CreateMessageResult(response)) + .build(); + +// Initialize connection +client.initialize(); + +// List available tools +ListToolsResult tools = client.listTools(); + +// Call a tool +CallToolResult result = client.callTool( + new CallToolRequest("calculator", + Map.of("operation", "add", "a", 2, "b", 3)) +); + +// List and read resources +ListResourcesResult resources = client.listResources(); +ReadResourceResult resource = client.readResource( + new ReadResourceRequest("resource://uri") +); + +// List and use prompts +ListPromptsResult prompts = client.listPrompts(); +GetPromptResult prompt = client.getPrompt( + new GetPromptRequest("greeting", Map.of("name", "Spring")) +); + +// Add/remove roots +client.addRoot(new Root("file:///path", "description")); +client.removeRoot("file:///path"); + +// Close client +client.closeGracefully(); +``` + + + +```java +// Create an async client with custom configuration +McpAsyncClient client = McpClient.async(transport) + .requestTimeout(Duration.ofSeconds(10)) + .capabilities(ClientCapabilities.builder() + .roots(true) // Enable roots capability + .sampling() // Enable sampling capability + .build()) + .sampling(request -> Mono.just(new CreateMessageResult(response))) + .toolsChangeConsumer(tools -> Mono.fromRunnable(() -> { + logger.info("Tools updated: {}", tools); + })) + .resourcesChangeConsumer(resources -> Mono.fromRunnable(() -> { + logger.info("Resources updated: {}", resources); + })) + .promptsChangeConsumer(prompts -> Mono.fromRunnable(() -> { + logger.info("Prompts updated: {}", prompts); + })) + .build(); + +// Initialize connection and use features +client.initialize() + .flatMap(initResult -> client.listTools()) + .flatMap(tools -> { + return client.callTool(new CallToolRequest( + "calculator", + Map.of("operation", "add", "a", 2, "b", 3) + )); + }) + .flatMap(result -> { + return client.listResources() + .flatMap(resources -> + client.readResource(new ReadResourceRequest("resource://uri")) + ); + }) + .flatMap(resource -> { + return client.listPrompts() + .flatMap(prompts -> + client.getPrompt(new GetPromptRequest( + "greeting", + Map.of("name", "Spring") + )) + ); + }) + .flatMap(prompt -> { + return client.addRoot(new Root("file:///path", "description")) + .then(client.removeRoot("file:///path")); + }) + .doFinally(signalType -> { + client.closeGracefully().subscribe(); + }) + .subscribe(); +``` + + + +## Client Features + +### Tool Execution + +Tools are server-side functions that can be discovered and executed by clients. The client provides methods to list available tools and execute them with parameters. + + + +```java +// List available tools +var tools = client.listTools(); +tools.forEach(tool -> System.out.println(tool.getName())); + +// Execute a tool +var result = client.executeTool("calculator", Map.of( + "operation", "add", + "a", 1, + "b", 2 +)); +``` + + + +```java +// List available tools +client.listTools() + .doOnNext(tools -> tools.forEach(tool -> + System.out.println(tool.getName()))) + .subscribe(); + +// Execute a tool +client.executeTool("calculator", Map.of( + "operation", "add", + "a", 1, + "b", 2 + )) + .subscribe(); +``` + + + +### Resource Access + +Resources are server-side data sources that can be accessed by clients using URI templates. The client provides methods to list available resources and retrieve their content. + + + +```java +// List available resources +var resources = client.listResources(); +resources.forEach(resource -> System.out.println(resource.getName())); + +// Get a resource +var content = client.getResource("file", Map.of( + "path", "/path/to/file.txt" +)); +``` + + + +```java +// List available resources +client.listResources() + .doOnNext(resources -> resources.forEach(resource -> + System.out.println(resource.getName()))) + .subscribe(); + +// Get a resource +client.getResource("file", Map.of( + "path", "/path/to/file.txt" + )) + .subscribe(); +``` + + + +### Prompt System + +The prompt system allows clients to interact with server-side prompt templates. The client provides methods to list available prompts and execute them with parameters. + + + +```java +// List available prompts +var prompts = client.listPrompts(); +prompts.forEach(prompt -> System.out.println(prompt.getName())); + +// Execute a prompt +var response = client.executePrompt("echo", Map.of( + "text", "Hello, World!" +)); +``` + + + +```java +// List available prompts +client.listPrompts() + .doOnNext(prompts -> prompts.forEach(prompt -> + System.out.println(prompt.getName()))) + .subscribe(); + +// Execute a prompt +client.executePrompt("echo", Map.of( + "text", "Hello, World!" + )) + .subscribe(); +``` + + diff --git a/mintlify-docs/docs/mcp-overview.mdx b/mintlify-docs/docs/mcp-overview.mdx new file mode 100644 index 0000000..68329fa --- /dev/null +++ b/mintlify-docs/docs/mcp-overview.mdx @@ -0,0 +1,85 @@ +--- +title: MCP Overview +description: Overview of the Model Context Protocol (MCP) architecture and key concepts +--- + +# Java MCP SDK + +Java SDK implementation of the [Model Context Protocol](https://modelcontextprotocol.io/introduction), enabling seamless integration with language models and AI tools. + +![Spring AI MCP Client Architecture](/images/spring-ai-mcp-client-architecture.jpg) +![Spring AI MCP Server Architecture](/images/spring-ai-mcp-server-architecture.jpg) + +## Features + +- Synchronous and Asynchronous MCP Client and MCP Server implementations +- Standard MCP operations support: + - Protocol [version compatibility negotiation](https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/lifecycle/#initialization) + - [Tool](https://spec.modelcontextprotocol.io/specification/2024-11-05/server/tools/) discovery, execution, list change notifications + - [Resource](https://spec.modelcontextprotocol.io/specification/2024-11-05/server/resources/) management with URI templates + - [Roots](https://spec.modelcontextprotocol.io/specification/2024-11-05/client/roots/) list management and notifications + - [Prompt](https://spec.modelcontextprotocol.io/specification/2024-11-05/server/prompts/) handling and management + - [Sampling](https://spec.modelcontextprotocol.io/specification/2024-11-05/client/sampling/) support for AI model interactions +- Multiple transport implementations: + - Core transports: + - Stdio-based transport for process-based communication + - Java HttpClient-based SSE client transport for HTTP SSE Client-side streaming + - Servlet-based SSE server transport for HTTP SSE Server streaming + - Spring-based transports: + - WebFlux SSE transport for reactive HTTP streaming + - WebMVC SSE transport for servlet-based HTTP streaming + +## Architecture + +![MCP Stack Architecture](/images/mcp-stack.svg) + +The SDK follows a layered architecture with clear separation of concerns: + +- **Client/Server Layer**: Both use McpSession for sync/async operations, with McpClient handling client-side protocol operations and McpServer managing server-side protocol operations. +- **Session Layer (McpSession)**: Manages communication patterns and state using DefaultMcpSession implementation. +- **Transport Layer (McpTransport)**: Handles JSON-RPC message serialization/deserialization via: + - StdioTransport (stdin/stdout) in the core module + - HTTP SSE transports in dedicated transport modules (Java HttpClient, Spring WebFlux, Spring WebMVC) + +Following class diagram illustrates the layered architecture of the MCP SDK, showing the relationships between core interfaces (McpTransport, McpSession), their implementations, and the client/server components. It highlights how the transport layer connects to sessions, which in turn support both synchronous and asynchronous client/server implementations. + +![MCP SDK Class Diagram](/images/spring-ai-mcp-uml-classdiagram.svg) + +Key Interactions: + +- **Client/Server Initialization**: Transport setup, protocol compatibility check, capability negotiation, and implementation details exchange. +- **Message Flow**: JSON-RPC message handling with validation, type-safe response processing, and error handling. +- **Resource Management**: Resource discovery, URI template-based access, subscription system, and content retrieval. + +## Dependencies + +Add the following dependency to your Maven project: + + + +The core MCP functionality: + +```xml + + org.modelcontextprotocol.sdk + mcp + +``` + +For HTTP SSE transport implementations, add one of the following dependencies: + +```xml + + + org.modelcontextprotocol.sdk + mcp-webflux-sse-transport + + + + + org.modelcontextprotocol.sdk + mcp-webmvc-sse-transport + +``` + + diff --git a/mintlify-docs/docs/mcp-server.mdx b/mintlify-docs/docs/mcp-server.mdx new file mode 100644 index 0000000..894e1f3 --- /dev/null +++ b/mintlify-docs/docs/mcp-server.mdx @@ -0,0 +1,98 @@ +--- +title: MCP Server +description: Learn how to implement and configure a Model Context Protocol (MCP) server +--- + +# Model Context Protocol Server + +The MCP Server is a foundational component in the Model Context Protocol (MCP) architecture that provides tools, resources, and capabilities to clients. It implements the server-side of the protocol, responsible for: + +- Exposing tools that clients can discover and execute +- Managing resources with URI-based access patterns +- Providing prompt templates and handling prompt requests +- Supporting capability negotiation with clients +- Implementing server-side protocol operations +- Managing concurrent client connections +- Providing structured logging and notifications + +The server supports both synchronous and asynchronous APIs, allowing for flexible integration in different application contexts. + + + +```java +// Create a server with custom configuration +McpSyncServer syncServer = McpServer.sync(transport) + .serverInfo("my-server", "1.0.0") + .capabilities(ServerCapabilities.builder() + .resources(true) // Enable resource support + .tools(true) // Enable tool support + .prompts(true) // Enable prompt support + .logging() // Enable logging support + .build()) + .build(); + +// Initialize the server +syncServer.initialize(); + +// Register tools, resources, and prompts +syncServer.registerTool(syncToolRegistration); +syncServer.registerResource(syncResourceRegistration); +syncServer.registerPrompt(syncPromptRegistration); + +// Send logging notifications +syncServer.loggingNotification(LoggingMessageNotification.builder() + .level(LoggingLevel.INFO) + .logger("custom-logger") + .data("Server initialized") + .build()); + +// Close the server when done +syncServer.close(); +``` + + + +```java +// Create an async server with custom configuration +McpAsyncServer asyncServer = McpServer.async(transport) + .serverInfo("my-server", "1.0.0") + .capabilities(ServerCapabilities.builder() + .resources(true) // Enable resource support + .tools(true) // Enable tool support + .prompts(true) // Enable prompt support + .logging() // Enable logging support + .build()) + .build(); + +// Initialize the server +asyncServer.initialize() + .doOnSuccess(v -> logger.info("Server initialized")) + .subscribe(); + +// Register tools, resources, and prompts +asyncServer.registerTool(asyncToolRegistration) + .doOnSuccess(v -> logger.info("Tool registered")) + .subscribe(); + +asyncServer.registerResource(asyncResourceRegistration) + .doOnSuccess(v -> logger.info("Resource registered")) + .subscribe(); + +asyncServer.registerPrompt(asyncPromptRegistration) + .doOnSuccess(v -> logger.info("Prompt registered")) + .subscribe(); + +// Send logging notifications +asyncServer.loggingNotification(LoggingMessageNotification.builder() + .level(LoggingLevel.INFO) + .logger("custom-logger") + .data("Server initialized") + .build()); + +// Close the server when done +asyncServer.close() + .doOnSuccess(v -> logger.info("Server closed")) + .subscribe(); +``` + + diff --git a/mintlify-docs/docs/mcp-transport.mdx b/mintlify-docs/docs/mcp-transport.mdx new file mode 100644 index 0000000..e0483d6 --- /dev/null +++ b/mintlify-docs/docs/mcp-transport.mdx @@ -0,0 +1,144 @@ +--- +title: MCP Transport +description: Understanding the Model Context Protocol (MCP) transport layer and available implementations +--- + +# Model Context Protocol Transport Layer + +The transport layer in the MCP SDK is responsible for handling the communication between clients and servers. It provides different implementations to support various communication protocols and patterns. The SDK includes several built-in transport implementations: + + + + + <> + Create in-process based transport: + + ```java + StdioServerTransport transport = new StdioServerTransport(new ObjectMapper()); + ``` + + Provides bidirectional JSON-RPC message handling over standard input/output streams with non-blocking message processing, serialization/deserialization, and graceful shutdown support. + + Key features: +

      +
    • Bidirectional communication through stdin/stdout
    • +
    • Process-based integration support
    • +
    • Simple setup and configuration
    • +
    • Lightweight implementation
    • +
    + + + + + <> +

    Creates WebFlux-based SSE server transport.
    Requires the mcp-webflux-sse-transport dependency.

    + +
    +      
    +        {`@Configuration
    +class McpConfig {
    +    @Bean
    +    WebFluxSseServerTransport webFluxSseServerTransport(ObjectMapper mapper) {
    +        return new WebFluxSseServerTransport(mapper, "/mcp/message");
    +    }
    +
    +    @Bean
    +    RouterFunction mcpRouterFunction(WebFluxSseServerTransport transport) {
    +        return transport.getRouterFunction();
    +    }
    +}`}
    +      
    +    
    + +

    Implements the MCP HTTP with SSE transport specification, providing:

    +
      +
    • Reactive HTTP streaming with WebFlux
    • +
    • Concurrent client connections through SSE endpoints
    • +
    • Message routing and session management
    • +
    • Graceful shutdown capabilities
    • +
    + +
    + + + + <> +

    Creates WebMvc-based SSE server transport.
    Requires the mcp-webmvc-sse-transport dependency.

    + +
    +      
    +        {`@Configuration
    +@EnableWebMvc
    +class McpConfig {
    +    @Bean
    +    WebMvcSseServerTransport webMvcSseServerTransport(ObjectMapper mapper) {
    +        return new WebMvcSseServerTransport(mapper, "/mcp/message");
    +    }
    +
    +    @Bean
    +    RouterFunction mcpRouterFunction(WebMvcSseServerTransport transport) {
    +        return transport.getRouterFunction();
    +    }
    +}`}
    +      
    +    
    + +

    Implements the MCP HTTP with SSE transport specification, providing:

    +
      +
    • Server-side event streaming
    • +
    • Integration with Spring WebMVC
    • +
    • Support for traditional web applications
    • +
    • Synchronous operation handling
    • +
    + +
    + + + + <> +

    + Creates a Servlet-based SSE server transport.
    + Included in the core mcp module.
    + The HttpServletSseServerTransport can be used with any Servlet container. + To use it with a Spring Web application, you can register it as a Servlet bean: +

    + +
    +      
    +        {`@Configuration
    +@EnableWebMvc
    +public class McpServerConfig implements WebMvcConfigurer {
    +
    +    @Bean
    +    public HttpServletSseServerTransport servletSseServerTransport() {
    +        return new HttpServletSseServerTransport(new ObjectMapper(), "/mcp/message");
    +    }
    +
    +    @Bean
    +    public ServletRegistrationBean customServletBean(HttpServletSseServerTransport servlet) {
    +        return new ServletRegistrationBean(servlet);
    +    }
    +}`}
    +      
    +    
    + +

    + Implements the MCP HTTP with SSE transport specification using the traditional Servlet API, providing: +

    +
      +
    • Asynchronous message handling using Servlet 6.0 async support
    • +
    • Session management for multiple client connections
    • +
    • + Two types of endpoints: +
        +
      • SSE endpoint (/sse) for server-to-client events
      • +
      • Message endpoint (configurable) for client-to-server requests
      • +
      +
    • +
    • Error handling and response formatting
    • +
    • Graceful shutdown support
    • +
    + +
    + + diff --git a/mintlify-docs/docs/overview.mdx b/mintlify-docs/docs/overview.mdx new file mode 100644 index 0000000..6624032 --- /dev/null +++ b/mintlify-docs/docs/overview.mdx @@ -0,0 +1,55 @@ +--- +title: Overview +description: Introduction to the Model Context Protocol (MCP) Java SDK +--- + +# Java & Spring MCP + +Java SDK and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture), enabling standardized interaction with AI models and tools through both synchronous and asynchronous communication. + +![Spring AI MCP Client Architecture](/images/spring-ai-mcp-client-architecture.jpg) +![Spring AI MCP Server Architecture](/images/spring-ai-mcp-server-architecture.jpg) + +## Core Components + +### [MCP Java SDK](/docs/mcp) +Core implementation of the Model Context Protocol specification, providing: + +- Synchronous and asynchronous [Client](/docs/mcp#mcp-client) and [Server](/docs/mcp#mcp-server) implementations +- Tool discovery and execution +- Resource management with URI templates +- Prompt handling and management +- Structured logging +- Request and Notification handling + +### MCP Transports + +#### Core Transports +- Stdio-based (`StdioClientTransport`, `StdioServerTransport`) for process-based communication +- Java HttpClient-based SSE client (`HttpClientSseClientTransport`) for HTTP SSE Client-side streaming +- Servlet-based SSE server (`HttpServletSseServerTransport`) for HTTP SSE Server streaming using traditional Servlet API + +#### Optional SSE Transports +- [WebFlux SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webflux-sse-transport) - Reactive HTTP streaming with Spring WebFlux (Client & Server) +- [WebMvc SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webmvc-sse-transport) - Spring MVC based SSE transport (Server only). +You can use the core `HttpClientSseClientTransport` transport as a SSE client. + +## Getting Started + + + +```xml + + + org.modelcontextprotocol.sdk + mcp + + + + + org.modelcontextprotocol.sdk + mcp-webflux-sse-transport + +``` + + diff --git a/mintlify-docs/favicon.svg b/mintlify-docs/favicon.svg new file mode 100644 index 0000000..03d9f85 --- /dev/null +++ b/mintlify-docs/favicon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/mintlify-docs/images/class-diagrams.puml b/mintlify-docs/images/class-diagrams.puml new file mode 100644 index 0000000..5b08c73 --- /dev/null +++ b/mintlify-docs/images/class-diagrams.puml @@ -0,0 +1,282 @@ +@startuml Core Components + +' Core Interfaces +interface McpTransport { + +Mono connect(Function, Mono> handler) + +Mono sendMessage(JSONRPCMessage message) + +void close() + +Mono closeGracefully() + + T unmarshalFrom(Object data, TypeReference typeRef) +} + +interface McpSession { + + Mono sendRequest(String method, Object requestParams, TypeReference typeRef) + +Mono sendNotification(String method, Map params) + +Mono closeGracefully() + +void close() +} + +' Core Implementation Classes +class DefaultMcpSession { + +interface RequestHandler + +interface NotificationHandler +} + +' Client Classes +class McpClient { + +{static} Builder using(ClientMcpTransport transport) +} + +class McpAsyncClient { + +Mono initialize() + +ServerCapabilities getServerCapabilities() + +Implementation getServerInfo() + +ClientCapabilities getClientCapabilities() + +Implementation getClientInfo() + +void close() + +Mono closeGracefully() + +Mono ping() + +Mono addRoot(Root root) + +Mono removeRoot(String rootUri) + +Mono rootsListChangedNotification() + +Mono callTool(CallToolRequest request) + +Mono listTools() + +Mono listResources() + +Mono readResource(ReadResourceRequest request) + +Mono listResourceTemplates() + +Mono subscribeResource(SubscribeRequest request) + +Mono unsubscribeResource(UnsubscribeRequest request) + +Mono listPrompts() + +Mono getPrompt(GetPromptRequest request) + +Mono setLoggingLevel(LoggingLevel level) +} + +class McpSyncClient { + +InitializeResult initialize() + +ServerCapabilities getServerCapabilities() + +Implementation getServerInfo() + +ClientCapabilities getClientCapabilities() + +Implementation getClientInfo() + +void close() + +boolean closeGracefully() + +Object ping() + +void addRoot(Root root) + +void removeRoot(String rootUri) + +void rootsListChangedNotification() + +CallToolResult callTool(CallToolRequest request) + +ListToolsResult listTools() + +ListResourcesResult listResources() + +ReadResourceResult readResource(ReadResourceRequest request) + +ListResourceTemplatesResult listResourceTemplates() + +void subscribeResource(SubscribeRequest request) + +void unsubscribeResource(UnsubscribeRequest request) + +ListPromptsResult listPrompts() + +GetPromptResult getPrompt(GetPromptRequest request) + +void setLoggingLevel(LoggingLevel level) +} + +' Server Classes +class McpServer { + +{static} Builder using(ServerMcpTransport transport) +} + +class McpAsyncServer { + + +ServerCapabilities getServerCapabilities() + +Implementation getServerInfo() + +ClientCapabilities getClientCapabilities() + +Implementation getClientInfo() + +void close() + +Mono closeGracefully() + + ' Tool Management + +Mono addTool(ToolRegistration toolRegistration) + +Mono removeTool(String toolName) + +Mono notifyToolsListChanged() + + ' Resource Management + +Mono addResource(ResourceRegistration resourceHandler) + +Mono removeResource(String resourceUri) + +Mono notifyResourcesListChanged() + + ' Prompt Management + +Mono addPrompt(PromptRegistration promptRegistration) + +Mono removePrompt(String promptName) + +Mono notifyPromptsListChanged() + + ' Logging + +Mono loggingNotification(LoggingMessageNotification notification) + + ' Sampling + +Mono createMessage(CreateMessageRequest request) +} + +class McpSyncServer { + +McpAsyncServer getAsyncServer() + + +ServerCapabilities getServerCapabilities() + +Implementation getServerInfo() + +ClientCapabilities getClientCapabilities() + +Implementation getClientInfo() + +void close() + +void closeGracefully() + + ' Tool Management + +void addTool(ToolRegistration toolHandler) + +void removeTool(String toolName) + +void notifyToolsListChanged() + + ' Resource Management + +void addResource(ResourceRegistration resourceHandler) + +void removeResource(String resourceUri) + +void notifyResourcesListChanged() + + ' Prompt Management + +void addPrompt(PromptRegistration promptRegistration) + +void removePrompt(String promptName) + +void notifyPromptsListChanged() + + ' Logging + +void loggingNotification(LoggingMessageNotification notification) + + ' Sampling + +CreateMessageResult createMessage(CreateMessageRequest request) +} + +' Transport Implementations +class StdioClientTransport implements ClientMcpTransport { + +void setErrorHandler(Consumer errorHandler) + +Sinks.Many getErrorSink() +} + +class StdioServerTransport implements ServerMcpTransport { +} + + +class HttpServletSseServerTransport implements ServerMcpTransport { +} + + +class HttpClientSseClientTransport implements ClientMcpTransport { +} + + +class WebFluxSseClientTransport implements ClientMcpTransport { +} + + +class WebFluxSseServerTransport implements ServerMcpTransport { + +RouterFunction getRouterFunction() +} + +class WebMvcSseServerTransport implements ServerMcpTransport { + +RouterFunction getRouterFunction() +} + + +' Schema and Error Classes +class McpSchema { + +class ErrorCodes + +interface Request + +interface JSONRPCMessage + +interface ResourceContents + +interface Content + +interface ServerCapabilities + +{static} JSONRPCMessage deserializeJsonRpcMessage() +} + +class McpError { +} + +' Relationships +McpTransport <|.. ClientMcpTransport +McpTransport <|.. ServerMcpTransport + +McpSession <|.. DefaultMcpSession +DefaultMcpSession --o McpAsyncClient +DefaultMcpSession --o McpAsyncServer + +McpClient ..> McpAsyncClient : creates +McpClient ..> McpSyncClient : creates +McpSyncClient --> McpAsyncClient : delegates to + +McpServer ..> McpAsyncServer : creates +McpServer ..> McpSyncServer : creates +McpSyncServer o-- McpAsyncServer + +DefaultMcpSession o-- McpTransport +McpSchema <.. McpSession : uses +McpError ..> McpSession : throws + +@enduml + +@startuml Message Flow + +package "MCP Schema" { + interface JSONRPCMessage { + +String jsonrpc() + } + + interface Request { + } + + class InitializeRequest + class CallToolRequest + class ListToolsRequest + class ListResourcesRequest + class ReadResourceRequest + class ListResourceTemplatesRequest + class ListPromptsRequest + class GetPromptRequest +} + +package "Resource Types" { + interface ResourceContents { + +String uri() + +String mimeType() + } + + class TextResourceContents + class BlobResourceContents + + interface Content { + +String type() + } + + class TextContent + class ImageContent + class EmbeddedResource + + interface Annotated { + +Annotations annotations() + } + + interface PromptOrResourceReference { + +String type() + } + + class PromptReference + class ResourceReference +} + +JSONRPCMessage <|.. Request +Request <|.. InitializeRequest +Request <|.. CallToolRequest +Request <|.. ListToolsRequest +Request <|.. ListResourcesRequest +Request <|.. ReadResourceRequest +Request <|.. ListResourceTemplatesRequest +Request <|.. ListPromptsRequest +Request <|.. GetPromptRequest + +ResourceContents <|.. TextResourceContents +ResourceContents <|.. BlobResourceContents + +Content <|.. TextContent +Content <|.. ImageContent +Content <|.. EmbeddedResource + +PromptOrResourceReference <|.. PromptReference +PromptOrResourceReference <|.. ResourceReference + +@enduml diff --git a/mintlify-docs/images/mcp-stack.svg b/mintlify-docs/images/mcp-stack.svg new file mode 100644 index 0000000..3847eaa --- /dev/null +++ b/mintlify-docs/images/mcp-stack.svg @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mintlify-docs/images/spring-ai-mcp-client-architecture.jpg b/mintlify-docs/images/spring-ai-mcp-client-architecture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f858b8d5ca623cca605b1e0c2ba6c86a4d29fbe6 GIT binary patch literal 702970 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 z zQ--G%;qX}qj6MvVOM31jS&C=qfRDwE29z?H?S4R(o6lPD;Ce5?TN(}Ok6#Z}Cz-s# zT7tEHek0oCc8|Vkyd1|Ei|T3-Br*=)fSmDhvA3U!RfIN$)xE;#f_Ar#X|W_ZIjqMM zAbM3Wxf4;NZLqRU8-~{=;9GWzZ^eX-d<8plu;+)4l6tRu4j$roMoJ&xOg|BpXv3Z3 zkW@RcphA4sk$gYPf;8)9)1FK@W-Cyg0xQmeeF~+%%spy0QY`53o|JPC!wofCR5l&( z+{&IYj$?q2(CL@}-8>F;0NUO2I>{!h!YW~8Uz80FbQs;g_W zjri7yqX9hBvJqm0U(nmAMUUC^&k5=g&cQ;UPZcfi8SwzOO_Jc)vKwU0*J58;4{x^ z)E#VoZ22L%mr)6Zz-x!{M8hjNxCvNuXGJR7{h~X)5NRz^{7jKTqWhZOlw0{v<)L3A zV_FuQ%>{B=O0mkBcx|x-MV{`rKIsO&rTIhbo*~QR@U>JyFbWf!#`U2bjm(Tc9|wW# z^JU+kC20K|fp^bWq@npY1j?&>d&Dd8SyW7lmi{c+>U2L6!PnVsK;LUI@G})jM9$aF z$9IF4XlMGBE}LG9wcB|ig3$Qao1}HKdfX#>}LG9uHQI^6I$Eq_pYTU1x!(G;;}HNvFoiSOUWc< zioB1Ua5V;^C8w~nx6a(8T{V=HkgyV3+dVX0UUM5T)g%{SKpalX zUI->Gr=##<=la?fLS*yNsM|m|i3;G9dO4MM{-x~Kc&|H=DcJGS(VX;O#`z32eeZZI zIU>>~;ENv^-`3*k@ziXba}3&TtMhyj4%Wc-Lak!D>H%oh4s|s-*FMkrDLlbzKhWOT zfpAdfV>aj?WH>jA-(tsW9p}rW$?wuJgx=Z`tBy5yv;(c%sPC@q0<5v?DNI;`>R#u@ z#evx(k6aM9@{LB|j5Ypg_l{+JJ3&+8vG{B+=TPI*Q0=xTOYxd~jWRGy+al83 z#1dq{$oz{HJ7Tff`iy>|jR5~!fhc&2^7---^w&#Q_0#~C7BTB0%;CQJH?EM&A=>?F z1vSmnFU@@~=uP>*@%a2v((!s*1a2;hrM$#bE^MeOout75;ZLf`N$JY9)2$l3L z&o|P3rpTu8Ebf2@?aUs3euTeZUd2l*uL8d0nO7*BkAtNO13%BO?)2=Pu%6hjHPzw$neR$PP@8tk7B9&)1Qj+h=$+ zIPPsK$cI#p274?j)%GNlv#+>fQs|aM6pBCWw)n_4X3+0ZEKjq?68lr~_eZS311icIF8j?#QO}mwJ^7lnVMgooJrM$SP=&a}sPC(RwRnw4< z?BigEx8?kn4NQYNcxv$iCF+eC?QRz*@DurYYs*9XM0X>NSwTSup(b73?x;MGZg%WO zWwiO&Z52RUL7z6YAgL~@*05f^h3Z+fVUV9CT&FspoAJ)0J}{jhpK%?1Aa3YQXeI*fN(X*^aE|2Gz1Y`llMGp&b_gGy4Et+wV~ zzP5T$(W+qU7Q=6PSCC8UPF%s9{~$xwAIkWoy@hp<$Hv=rl|)=;)G9 zuVb1I^Km~jDRbK7Vydn?1@Xq`x%_;&bXD2`cm_M6Zd=kr4x^+jzJ@t<3nZNX07oFJ zBu7h>J^^6cNS>VJMO%#DNMm$?(8r-%=P2&NG~-qS(m2FG6d&Hq^y7+@Cqxppa{21M zCyi6DRaBOqzZGR7h@6Z|?y6}3=>fIxy0Q}AuJIwN8D+5g6E&k9q16Rw{G3Vete)P} zi1?2ldF7o%8T%m(SzZPaa?MWl+J~62W#0sdYZb(Y{+IaYj}U3NN$+xqq0rzHy(dEr z`##Cu!_iST>0tzsZj+06B`O%lUR!>FPmEX3C!f3)-v^)OX2WuqlZG99f=UWr8Lw

    2Y} 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
    CS?oAGQYS-KrP>J>k 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ΞfZ3(ExoJXd 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 !!OSj~P(uHLIot{k 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

    xa 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

    2Uo+bG<0QGR@jr$=F2 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 Z1P&26MBosCLj(>HI7Hw-4uRi#{~z9ZTp9oX literal 0 HcmV?d00001 diff --git a/mintlify-docs/images/spring-ai-mcp-uml-classdiagram.svg b/mintlify-docs/images/spring-ai-mcp-uml-classdiagram.svg new file mode 100644 index 0000000..f83a586 --- /dev/null +++ b/mintlify-docs/images/spring-ai-mcp-uml-classdiagram.svg @@ -0,0 +1 @@ +McpTransportMono<Void> connect(Function<Mono<JSONRPCMessage>, Mono<JSONRPCMessage>> handler)Mono<Void> sendMessage(JSONRPCMessage message)void close()Mono<Void> closeGracefully()<T> T unmarshalFrom(Object data, TypeReference<T> typeRef)McpSession<T> Mono<T> sendRequest(String method, Object requestParams, TypeReference<T> typeRef)Mono<Void> sendNotification(String method, Map<String, Object> params)Mono<Void> closeGracefully()void close()DefaultMcpSessioninterface RequestHandlerinterface NotificationHandlerMcpClientBuilder using(ClientMcpTransport transport)McpAsyncClientMono<InitializeResult> initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully()Mono<Object> ping()Mono<Void> addRoot(Root root)Mono<Void> removeRoot(String rootUri)Mono<Void> rootsListChangedNotification()Mono<CallToolResult> callTool(CallToolRequest request)Mono<ListToolsResult> listTools()Mono<ListResourcesResult> listResources()Mono<ReadResourceResult> readResource(ReadResourceRequest request)Mono<ListResourceTemplatesResult> listResourceTemplates()Mono<Void> subscribeResource(SubscribeRequest request)Mono<Void> unsubscribeResource(UnsubscribeRequest request)Mono<ListPromptsResult> listPrompts()Mono<GetPromptResult> getPrompt(GetPromptRequest request)Mono<Void> setLoggingLevel(LoggingLevel level)McpSyncClientInitializeResult initialize()ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()boolean closeGracefully()Object ping()void addRoot(Root root)void removeRoot(String rootUri)void rootsListChangedNotification()CallToolResult callTool(CallToolRequest request)ListToolsResult listTools()ListResourcesResult listResources()ReadResourceResult readResource(ReadResourceRequest request)ListResourceTemplatesResult listResourceTemplates()void subscribeResource(SubscribeRequest request)void unsubscribeResource(UnsubscribeRequest request)ListPromptsResult listPrompts()GetPromptResult getPrompt(GetPromptRequest request)void setLoggingLevel(LoggingLevel level)McpServerBuilder using(ServerMcpTransport transport)McpAsyncServerServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()Mono<Void> closeGracefully() Mono<Void> addTool(ToolRegistration toolRegistration)Mono<Void> removeTool(String toolName)Mono<Void> notifyToolsListChanged() Mono<Void> addResource(ResourceRegistration resourceHandler)Mono<Void> removeResource(String resourceUri)Mono<Void> notifyResourcesListChanged() Mono<Void> addPrompt(PromptRegistration promptRegistration)Mono<Void> removePrompt(String promptName)Mono<Void> notifyPromptsListChanged() Mono<Void> loggingNotification(LoggingMessageNotification notification) Mono<CreateMessageResult> createMessage(CreateMessageRequest request)McpSyncServerMcpAsyncServer getAsyncServer() ServerCapabilities getServerCapabilities()Implementation getServerInfo()ClientCapabilities getClientCapabilities()Implementation getClientInfo()void close()void closeGracefully() void addTool(ToolRegistration toolHandler)void removeTool(String toolName)void notifyToolsListChanged() void addResource(ResourceRegistration resourceHandler)void removeResource(String resourceUri)void notifyResourcesListChanged() void addPrompt(PromptRegistration promptRegistration)void removePrompt(String promptName)void notifyPromptsListChanged() void loggingNotification(LoggingMessageNotification notification) CreateMessageResult createMessage(CreateMessageRequest request)StdioClientTransportvoid setErrorHandler(Consumer<String> errorHandler)Sinks.Many<String> getErrorSink()ClientMcpTransportStdioServerTransportServerMcpTransportHttpServletSseServerTransportHttpClientSseClientTransportWebFluxSseClientTransportWebFluxSseServerTransportRouterFunction<?> getRouterFunction()WebMvcSseServerTransportRouterFunction<?> getRouterFunction()McpSchemaclass ErrorCodesinterface Requestinterface JSONRPCMessageinterface ResourceContentsinterface Contentinterface ServerCapabilitiesJSONRPCMessage deserializeJsonRpcMessage()McpErrorcreatescreatesdelegates tocreatescreatesusesthrows \ No newline at end of file diff --git a/mintlify-docs/mint.json b/mintlify-docs/mint.json new file mode 100644 index 0000000..eb4ddaa --- /dev/null +++ b/mintlify-docs/mint.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://mintlify.com/schema.json", + "name": "Model Context Protocol Java SDK", + "logo": { + "dark": "/logo/dark.svg", + "light": "/logo/light.svg" + }, + "favicon": "/favicon.svg", + "colors": { + "primary": "#09090b", + "light": "#FAFAFA", + "dark": "#09090b" + }, + "topbarLinks": [], + "topbarCtaButton": { + "name": "GitHub", + "url": "https://github.com/modelcontextprotocol/java-sdk" + }, + "search": { + "location": "top" + }, + "navigation": [ + { + "group": "Getting Started", + "pages": [ + "docs/overview", + "docs/dependency-management" + ] + }, + { + "group": "MCP SDK Reference", + "pages": [ + "docs/mcp-overview", + "docs/mcp-client", + "docs/mcp-server", + "docs/mcp-transport", + "docs/mcp-capabilities" + ] + } + ] +} From 585f30cf339c5b54563db086c52b09e6520e6978 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Wed, 29 Jan 2025 13:40:48 +0100 Subject: [PATCH 103/505] Module and Package restructoring - mcp-transport -> mcp-spring - mcp-webflux-sse-transport -> mcp-spring-webflux - pom coordinates changed accordingly - mpc-webmvc-sse-transport -> mcp-spring-webmvc - pom coordinates changed accordingly - docs contains the mdx version of the documentation --- README.md | 8 ++--- .../docs/dependency-management.mdx | 4 +-- .../docs/mcp-capabilities.mdx | 0 {mintlify-docs => docs}/docs/mcp-client.mdx | 0 {mintlify-docs => docs}/docs/mcp-overview.mdx | 4 +-- {mintlify-docs => docs}/docs/mcp-server.mdx | 0 .../docs/mcp-transport.mdx | 4 +-- {mintlify-docs => docs}/docs/overview.mdx | 6 ++-- {mintlify-docs => docs}/favicon.svg | 0 .../images/class-diagrams.puml | 0 {mintlify-docs => docs}/images/mcp-stack.svg | 0 .../spring-ai-mcp-client-architecture.jpg | Bin .../spring-ai-mcp-server-architecture.jpg | Bin .../images/spring-ai-mcp-uml-classdiagram.svg | 0 {mintlify-docs => docs}/mint.json | 2 +- mcp-bom/pom.xml | 4 +-- .../ROOT/pages/dependency-management.adoc | 4 +-- .../main/antora/modules/ROOT/pages/mcp.adoc | 14 ++++---- .../antora/modules/ROOT/pages/overview.adoc | 12 +++---- .../mcp-spring-webflux}/README.md | 2 +- .../mcp-spring-webflux}/pom.xml | 2 +- .../transport/WebFluxSseClientTransport.java | 0 .../transport/WebFluxSseServerTransport.java | 0 .../WebFluxSseIntegrationTests.java | 0 .../client/WebFluxSseMcpAsyncClientTests.java | 2 -- .../client/WebFluxSseMcpSyncClientTests.java | 2 -- .../WebFluxSseClientTransportTests.java | 1 - .../server/WebFluxSseMcpAsyncServerTests.java | 2 -- .../server/WebFluxSseMcpSyncServerTests.java | 2 -- .../server/transport/BlockingInputStream.java | 0 .../src/test/resources/logback.xml | 0 .../mcp-spring-webmvc}/README.md | 2 +- .../mcp-spring-webmvc}/pom.xml | 2 +- .../transport/WebMvcSseServerTransport.java | 0 .../WebMvcSseAsyncServerTransportTests.java | 1 - .../server/WebMvcSseIntegrationTests.java | 2 -- .../WebMvcSseSyncServerTransportTests.java | 1 - .../src/test/resources/logback.xml | 0 .../client/AbstractMcpAsyncClientTests.java | 4 +-- .../client/AbstractMcpSyncClientTests.java | 2 -- .../server/AbstractMcpAsyncServerTests.java | 7 ++-- .../server/AbstractMcpSyncServerTests.java | 7 ++-- .../client/McpAsyncClient.java | 34 ++---------------- .../transport/StdioServerTransport.java | 3 +- .../client/AbstractMcpAsyncClientTests.java | 4 +-- .../client/AbstractMcpSyncClientTests.java | 2 -- .../McpAsyncClientResponseHandlerTests.java | 2 -- .../client/McpClientProtocolVersionTests.java | 2 -- .../client/ServletSseMcpAsyncClientTests.java | 1 - .../client/ServletSseMcpSyncClientTests.java | 1 - .../client/StdioMcpAsyncClientTests.java | 1 - .../client/StdioMcpSyncClientTests.java | 1 - .../HttpClientSseClientTransportTests.java | 1 - .../server/AbstractMcpAsyncServerTests.java | 7 ++-- .../server/AbstractMcpSyncServerTests.java | 7 ++-- .../server/McpServerProtocolVersionTests.java | 2 -- .../server/ServletSseMcpAsyncServerTests.java | 1 - .../server/ServletSseMcpSyncServerTests.java | 1 - .../server/StdioMcpAsyncServerTests.java | 1 - .../server/StdioMcpSyncServerTests.java | 1 - ...letSseServerTransportIntegrationTests.java | 1 - .../transport/StdioServerTransportTests.java | 1 - .../spec/DefaultMcpSessionTests.java | 3 -- pom.xml | 4 +-- 64 files changed, 51 insertions(+), 133 deletions(-) rename {mintlify-docs => docs}/docs/dependency-management.mdx (91%) rename {mintlify-docs => docs}/docs/mcp-capabilities.mdx (100%) rename {mintlify-docs => docs}/docs/mcp-client.mdx (100%) rename {mintlify-docs => docs}/docs/mcp-overview.mdx (97%) rename {mintlify-docs => docs}/docs/mcp-server.mdx (100%) rename {mintlify-docs => docs}/docs/mcp-transport.mdx (97%) rename {mintlify-docs => docs}/docs/overview.mdx (86%) rename {mintlify-docs => docs}/favicon.svg (100%) rename {mintlify-docs => docs}/images/class-diagrams.puml (100%) rename {mintlify-docs => docs}/images/mcp-stack.svg (100%) rename {mintlify-docs => docs}/images/spring-ai-mcp-client-architecture.jpg (100%) rename {mintlify-docs => docs}/images/spring-ai-mcp-server-architecture.jpg (100%) rename {mintlify-docs => docs}/images/spring-ai-mcp-uml-classdiagram.svg (100%) rename {mintlify-docs => docs}/mint.json (96%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/README.md (96%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/pom.xml (98%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java (100%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java (100%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/src/test/java/io/modelcontextprotocol/WebFluxSseIntegrationTests.java (100%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java (92%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java (92%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/src/test/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java (99%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java (92%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java (93%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java (100%) rename {mcp-transport/mcp-webflux-sse-transport => mcp-spring/mcp-spring-webflux}/src/test/resources/logback.xml (100%) rename {mcp-transport/mcp-webmvc-sse-transport => mcp-spring/mcp-spring-webmvc}/README.md (91%) rename {mcp-transport/mcp-webmvc-sse-transport => mcp-spring/mcp-spring-webmvc}/pom.xml (98%) rename {mcp-transport/mcp-webmvc-sse-transport => mcp-spring/mcp-spring-webmvc}/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java (100%) rename {mcp-transport/mcp-webmvc-sse-transport => mcp-spring/mcp-spring-webmvc}/src/test/java/io/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java (98%) rename {mcp-transport/mcp-webmvc-sse-transport => mcp-spring/mcp-spring-webmvc}/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java (99%) rename {mcp-transport/mcp-webmvc-sse-transport => mcp-spring/mcp-spring-webmvc}/src/test/java/io/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java (98%) rename {mcp-transport/mcp-webmvc-sse-transport => mcp-spring/mcp-spring-webmvc}/src/test/resources/logback.xml (100%) diff --git a/README.md b/README.md index c994354..4133b9a 100644 --- a/README.md +++ b/README.md @@ -28,8 +28,8 @@ Java implementation of the Model Context Protocol specification. It includes: - Servlet-based SSE server (`HttpServletSseServerTransport`) for HTTP SSE Server streaming using traditional Servlet API #### Optional SSE Transports -- [WebFlux SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webflux-sse-transport) - Reactive HTTP streaming with Spring WebFlux (Client & Server) -- [WebMvc SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webmvc-sse-transport) - Spring MVC based HTTP SSE transport (Server only). +- [WebFlux SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-spring/mcp-spring-webflux) - Reactive HTTP streaming with Spring WebFlux (Client & Server) +- [WebMvc SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-spring/mcp-spring-webmvc) - Spring MVC based HTTP SSE transport (Server only). You can use the core `HttpClientSseClientTransport` transport as a SSE client. ### [Spring AI MCP](https://docs.spring.io/spring-ai-mcp/reference/spring-mcp.html) @@ -54,13 +54,13 @@ Add the following dependencies to your Maven project: io.modelcontextprotocol.sdk - mcp-webflux-sse-transport + mcp-spring-webflux io.modelcontextprotocol.sdk - mcp-webmvc-sse-transport + mcp-spring-webmvc ``` diff --git a/mintlify-docs/docs/dependency-management.mdx b/docs/docs/dependency-management.mdx similarity index 91% rename from mintlify-docs/docs/dependency-management.mdx rename to docs/docs/dependency-management.mdx index 204c51c..dbd69e4 100644 --- a/mintlify-docs/docs/dependency-management.mdx +++ b/docs/docs/dependency-management.mdx @@ -57,8 +57,8 @@ The following dependencies are available and managed by the BOM: ### Transport Dependencies -- `org.modelcontextprotocol.sdk:mcp-webflux-sse-transport` - WebFlux-based Server-Sent Events (SSE) transport implementation for reactive applications. -- `org.modelcontextprotocol.sdk:mcp-webmvc-sse-transport` - WebMVC-based Server-Sent Events (SSE) transport implementation for servlet-based applications. +- `org.modelcontextprotocol.sdk:mcp-spring-webflux` - WebFlux-based Server-Sent Events (SSE) transport implementation for reactive applications. +- `org.modelcontextprotocol.sdk:mcp-spring-webmvc` - WebMVC-based Server-Sent Events (SSE) transport implementation for servlet-based applications. ### Testing Dependencies diff --git a/mintlify-docs/docs/mcp-capabilities.mdx b/docs/docs/mcp-capabilities.mdx similarity index 100% rename from mintlify-docs/docs/mcp-capabilities.mdx rename to docs/docs/mcp-capabilities.mdx diff --git a/mintlify-docs/docs/mcp-client.mdx b/docs/docs/mcp-client.mdx similarity index 100% rename from mintlify-docs/docs/mcp-client.mdx rename to docs/docs/mcp-client.mdx diff --git a/mintlify-docs/docs/mcp-overview.mdx b/docs/docs/mcp-overview.mdx similarity index 97% rename from mintlify-docs/docs/mcp-overview.mdx rename to docs/docs/mcp-overview.mdx index 68329fa..18ae2b7 100644 --- a/mintlify-docs/docs/mcp-overview.mdx +++ b/docs/docs/mcp-overview.mdx @@ -72,13 +72,13 @@ For HTTP SSE transport implementations, add one of the following dependencies: org.modelcontextprotocol.sdk - mcp-webflux-sse-transport + mcp-spring-webflux org.modelcontextprotocol.sdk - mcp-webmvc-sse-transport + mcp-spring-webmvc ``` diff --git a/mintlify-docs/docs/mcp-server.mdx b/docs/docs/mcp-server.mdx similarity index 100% rename from mintlify-docs/docs/mcp-server.mdx rename to docs/docs/mcp-server.mdx diff --git a/mintlify-docs/docs/mcp-transport.mdx b/docs/docs/mcp-transport.mdx similarity index 97% rename from mintlify-docs/docs/mcp-transport.mdx rename to docs/docs/mcp-transport.mdx index e0483d6..d9fc318 100644 --- a/mintlify-docs/docs/mcp-transport.mdx +++ b/docs/docs/mcp-transport.mdx @@ -31,7 +31,7 @@ The transport layer in the MCP SDK is responsible for handling the communication <> -

    Creates WebFlux-based SSE server transport.
    Requires the mcp-webflux-sse-transport dependency.

    +

    Creates WebFlux-based SSE server transport.
    Requires the mcp-spring-webflux dependency.

           
    @@ -63,7 +63,7 @@ class McpConfig {
     
     
       <>
    -    

    Creates WebMvc-based SSE server transport.
    Requires the mcp-webmvc-sse-transport dependency.

    +

    Creates WebMvc-based SSE server transport.
    Requires the mcp-spring-webmvc dependency.

           
    diff --git a/mintlify-docs/docs/overview.mdx b/docs/docs/overview.mdx
    similarity index 86%
    rename from mintlify-docs/docs/overview.mdx
    rename to docs/docs/overview.mdx
    index 6624032..28d9e3d 100644
    --- a/mintlify-docs/docs/overview.mdx
    +++ b/docs/docs/overview.mdx
    @@ -30,8 +30,8 @@ Core implementation of the Model Context Protocol specification, providing:
     - Servlet-based SSE server (`HttpServletSseServerTransport`) for HTTP SSE Server streaming using traditional Servlet API
     
     #### Optional SSE Transports
    -- [WebFlux SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webflux-sse-transport) - Reactive HTTP streaming with Spring WebFlux (Client & Server)
    -- [WebMvc SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webmvc-sse-transport) - Spring MVC based SSE transport (Server only). 
    +- [WebFlux SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-spring/mcp-spring-webflux) - Reactive HTTP streaming with Spring WebFlux (Client & Server)
    +- [WebMvc SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-spring/mcp-spring-webmvc) - Spring MVC based SSE transport (Server only). 
     You can use the core `HttpClientSseClientTransport` transport as a SSE client.
     
     ## Getting Started
    @@ -48,7 +48,7 @@ You can use the core `HttpClientSseClientTransport` transport as a SSE client.
     
     
         org.modelcontextprotocol.sdk
    -    mcp-webflux-sse-transport
    +    mcp-spring-webflux
     
     ```
       
    diff --git a/mintlify-docs/favicon.svg b/docs/favicon.svg
    similarity index 100%
    rename from mintlify-docs/favicon.svg
    rename to docs/favicon.svg
    diff --git a/mintlify-docs/images/class-diagrams.puml b/docs/images/class-diagrams.puml
    similarity index 100%
    rename from mintlify-docs/images/class-diagrams.puml
    rename to docs/images/class-diagrams.puml
    diff --git a/mintlify-docs/images/mcp-stack.svg b/docs/images/mcp-stack.svg
    similarity index 100%
    rename from mintlify-docs/images/mcp-stack.svg
    rename to docs/images/mcp-stack.svg
    diff --git a/mintlify-docs/images/spring-ai-mcp-client-architecture.jpg b/docs/images/spring-ai-mcp-client-architecture.jpg
    similarity index 100%
    rename from mintlify-docs/images/spring-ai-mcp-client-architecture.jpg
    rename to docs/images/spring-ai-mcp-client-architecture.jpg
    diff --git a/mintlify-docs/images/spring-ai-mcp-server-architecture.jpg b/docs/images/spring-ai-mcp-server-architecture.jpg
    similarity index 100%
    rename from mintlify-docs/images/spring-ai-mcp-server-architecture.jpg
    rename to docs/images/spring-ai-mcp-server-architecture.jpg
    diff --git a/mintlify-docs/images/spring-ai-mcp-uml-classdiagram.svg b/docs/images/spring-ai-mcp-uml-classdiagram.svg
    similarity index 100%
    rename from mintlify-docs/images/spring-ai-mcp-uml-classdiagram.svg
    rename to docs/images/spring-ai-mcp-uml-classdiagram.svg
    diff --git a/mintlify-docs/mint.json b/docs/mint.json
    similarity index 96%
    rename from mintlify-docs/mint.json
    rename to docs/mint.json
    index eb4ddaa..397b8c0 100644
    --- a/mintlify-docs/mint.json
    +++ b/docs/mint.json
    @@ -33,7 +33,7 @@
             "docs/mcp-overview",
             "docs/mcp-client",
             "docs/mcp-server",
    -        "docs/mcp-transport",
    +        "docs/mcp-spring",
             "docs/mcp-capabilities"
           ]
         }
    diff --git a/mcp-bom/pom.xml b/mcp-bom/pom.xml
    index a524793..26bfce4 100644
    --- a/mcp-bom/pom.xml
    +++ b/mcp-bom/pom.xml
    @@ -43,14 +43,14 @@
                 
                 
                     io.modelcontextprotocol.sdk
    -                mcp-webflux-sse-transport
    +                mcp-spring-webflux
                     ${project.version}
                 
     
                 
                 
                     io.modelcontextprotocol.sdk
    -                mcp-webmvc-sse-transport
    +                mcp-spring-webmvc
                     ${project.version}
                 
     
    diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc
    index 7fcbba5..517973c 100644
    --- a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc
    +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc
    @@ -57,8 +57,8 @@ The following dependencies are available and managed by the BOM:
     
     === Transport Dependencies
     
    -* `io.modelcontextprotocol.sdk:mcp-webflux-sse-transport` - WebFlux-based Server-Sent Events (SSE) transport implementation for reactive applications.
    -* `io.modelcontextprotocol.sdk:mcp-webmvc-sse-transport` - WebMVC-based Server-Sent Events (SSE) transport implementation for servlet-based applications.
    +* `io.modelcontextprotocol.sdk:mcp-spring-webflux` - WebFlux-based Server-Sent Events (SSE) transport implementation for reactive applications.
    +* `io.modelcontextprotocol.sdk:mcp-spring-webmvc` - WebMVC-based Server-Sent Events (SSE) transport implementation for servlet-based applications.
     
     === Testing Dependencies
     
    diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc
    index 6237ed1..7a48722 100644
    --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc
    +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc
    @@ -47,13 +47,13 @@ For HTTP SSE transport implementations, add one of the following dependencies
     
     
         io.modelcontextprotocol.sdk
    -    mcp-webflux-sse-transport
    +    mcp-spring-webflux
     
     
     
     
         io.modelcontextprotocol.sdk
    -    mcp-webmvc-sse-transport
    +    mcp-spring-webmvc
     
     ----
     
    @@ -74,10 +74,10 @@ For HTTP SSE transport implementations, add one of the following dependencies
     [source,groovy]
     ----
     // Spring WebFlux-based SSE client and server transport
    -implementation 'io.modelcontextprotocol.sdk:mcp-webflux-sse-transport'
    +implementation 'io.modelcontextprotocol.sdk:mcp-spring-webflux'
     
     // Spring WebMVC-based SSE server transport
    -implementation 'io.modelcontextprotocol.sdk:mcp-webmvc-sse-transport'
    +implementation 'io.modelcontextprotocol.sdk:mcp-spring-webmvc'
     ----
     ======
     
    @@ -267,7 +267,7 @@ McpTransport transport = new HttpClientSseClientTransport("http://your-mcp-serve
     SSE (WebFlux)::
     +
     Creates WebFlux-based SSE client transport.
    -Requires the `mcp-webflux-sse-transport` dependency.
    +Requires the `mcp-spring-webflux` dependency.
     +
     [source,java]
     ----
    @@ -464,7 +464,7 @@ Provides bidirectional JSON-RPC message handling over standard input/output stre
     SSE (WebFlux)::
     +
     Creates WebFlux-based SSE server transport.
    -Requires the `mcp-webflux-sse-transport` dependency.
    +Requires the `mcp-spring-webflux` dependency.
     +
     [source,java]
     ----
    @@ -492,7 +492,7 @@ Implements the MCP HTTP with SSE transport specification, providing:
     SSE (WebMvc)::
     +
     Creates WebMvc-based SSE server transport.
    -Requires the `mcp-webmvc-sse-transport` dependency.
    +Requires the `mcp-spring-webmvc` dependency.
     +
     [source,java]
     ----
    diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc
    index e3ec80b..9dc040b 100644
    --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc
    +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc
    @@ -25,8 +25,8 @@ Core implementation of the Model Context Protocol specification, providing:
     ** Servlet-based SSE server (`HttpServletSseServerTransport`) for HTTP SSE Server streaming using traditional Servlet API
     
     * *Optional SSE Transports*
    -** link:https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webflux-sse-transport[WebFlux SSE Transport] - Reactive HTTP streaming with Spring WebFlux (Client & Server)
    -** link:https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-transport/mcp-webmvc-sse-transport[WebMvc SSE Transport] - Spring MVC based SSE transport (Server only). 
    +** link:https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-spring/mcp-spring-webflux[WebFlux SSE Transport] - Reactive HTTP streaming with Spring WebFlux (Client & Server)
    +** link:https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-spring/mcp-spring-webmvc[WebMvc SSE Transport] - Spring MVC based SSE transport (Server only). 
     You can use the core `HttpClientSseClientTransport` transport as a SSE client.
     
     == Getting Started
    @@ -46,13 +46,13 @@ Maven::
     
     
         io.modelcontextprotocol.sdk
    -    mcp-webflux-sse-transport
    +    mcp-spring-webflux
     
     
     
     
         io.modelcontextprotocol.sdk
    -    mcp-webmvc-sse-transport
    +    mcp-spring-webmvc
     
     
     ----
    @@ -79,8 +79,8 @@ Gradle::
     ----
     dependencies {
         implementation 'io.modelcontextprotocol.sdk:mcp'                     // Core
    -    implementation 'io.modelcontextprotocol.sdk:mcp-webflux-sse-transport'  // Optional
    -    implementation 'io.modelcontextprotocol.sdk:mcp-webmvc-sse-transport'   // Optional
    +    implementation 'io.modelcontextprotocol.sdk:mcp-spring-webflux'  // Optional
    +    implementation 'io.modelcontextprotocol.sdk:mcp-spring-webmvc'   // Optional
     }
     
     repositories {
    diff --git a/mcp-transport/mcp-webflux-sse-transport/README.md b/mcp-spring/mcp-spring-webflux/README.md
    similarity index 96%
    rename from mcp-transport/mcp-webflux-sse-transport/README.md
    rename to mcp-spring/mcp-spring-webflux/README.md
    index 475882b..e701e41 100644
    --- a/mcp-transport/mcp-webflux-sse-transport/README.md
    +++ b/mcp-spring/mcp-spring-webflux/README.md
    @@ -3,7 +3,7 @@
     ```xml
     
         io.modelcontextprotocol.sdk
    -    mcp-webflux-sse-transport
    +    mcp-spring-webflux
     
     ```
     
    diff --git a/mcp-transport/mcp-webflux-sse-transport/pom.xml b/mcp-spring/mcp-spring-webflux/pom.xml
    similarity index 98%
    rename from mcp-transport/mcp-webflux-sse-transport/pom.xml
    rename to mcp-spring/mcp-spring-webflux/pom.xml
    index d737a38..ec93eea 100644
    --- a/mcp-transport/mcp-webflux-sse-transport/pom.xml
    +++ b/mcp-spring/mcp-spring-webflux/pom.xml
    @@ -9,7 +9,7 @@
     		0.7.0-SNAPSHOT
     		../../pom.xml
     	
    -	mcp-webflux-sse-transport
    +	mcp-spring-webflux
     	jar
     	WebFlux implementation of the Java MCP SSE transport
     	
    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java
    similarity index 100%
    rename from mcp-transport/mcp-webflux-sse-transport/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java
    rename to mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java
    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java
    similarity index 100%
    rename from mcp-transport/mcp-webflux-sse-transport/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java
    rename to mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransport.java
    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/WebFluxSseIntegrationTests.java b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/WebFluxSseIntegrationTests.java
    similarity index 100%
    rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/WebFluxSseIntegrationTests.java
    rename to mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/WebFluxSseIntegrationTests.java
    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java
    similarity index 92%
    rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java
    rename to mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java
    index 79a9db8..021ce46 100644
    --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java
    +++ b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpAsyncClientTests.java
    @@ -4,8 +4,6 @@
     
     package io.modelcontextprotocol.client;
     
    -import io.modelcontextprotocol.client.AbstractMcpAsyncClientTests;
    -import io.modelcontextprotocol.client.McpAsyncClient;
     import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
     import org.junit.jupiter.api.Timeout;
    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java
    similarity index 92%
    rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java
    rename to mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java
    index 16108c6..20eeb1d 100644
    --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java
    +++ b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/client/WebFluxSseMcpSyncClientTests.java
    @@ -4,8 +4,6 @@
     
     package io.modelcontextprotocol.client;
     
    -import io.modelcontextprotocol.client.AbstractMcpSyncClientTests;
    -import io.modelcontextprotocol.client.McpSyncClient;
     import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
     import org.junit.jupiter.api.Timeout;
    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java
    similarity index 99%
    rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java
    rename to mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java
    index a09700d..912e04f 100644
    --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java
    +++ b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransportTests.java
    @@ -10,7 +10,6 @@ import java.util.concurrent.atomic.AtomicInteger;
     import java.util.function.Function;
     
     import com.fasterxml.jackson.databind.ObjectMapper;
    -import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport;
     import io.modelcontextprotocol.spec.McpSchema;
     import io.modelcontextprotocol.spec.McpSchema.JSONRPCRequest;
     import org.junit.jupiter.api.AfterEach;
    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java
    similarity index 92%
    rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java
    rename to mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java
    index b26afd6..1ed0d99 100644
    --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java
    +++ b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpAsyncServerTests.java
    @@ -5,8 +5,6 @@
     package io.modelcontextprotocol.server;
     
     import com.fasterxml.jackson.databind.ObjectMapper;
    -import io.modelcontextprotocol.server.AbstractMcpAsyncServerTests;
    -import io.modelcontextprotocol.server.McpAsyncServer;
     import io.modelcontextprotocol.server.transport.WebFluxSseServerTransport;
     import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.junit.jupiter.api.Timeout;
    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java
    similarity index 93%
    rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java
    rename to mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java
    index 0ad5c73..4db00dd 100644
    --- a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java
    +++ b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/server/WebFluxSseMcpSyncServerTests.java
    @@ -5,8 +5,6 @@
     package io.modelcontextprotocol.server;
     
     import com.fasterxml.jackson.databind.ObjectMapper;
    -import io.modelcontextprotocol.server.AbstractMcpSyncServerTests;
    -import io.modelcontextprotocol.server.McpSyncServer;
     import io.modelcontextprotocol.server.transport.WebFluxSseServerTransport;
     import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.junit.jupiter.api.Timeout;
    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java b/mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java
    similarity index 100%
    rename from mcp-transport/mcp-webflux-sse-transport/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java
    rename to mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/server/transport/BlockingInputStream.java
    diff --git a/mcp-transport/mcp-webflux-sse-transport/src/test/resources/logback.xml b/mcp-spring/mcp-spring-webflux/src/test/resources/logback.xml
    similarity index 100%
    rename from mcp-transport/mcp-webflux-sse-transport/src/test/resources/logback.xml
    rename to mcp-spring/mcp-spring-webflux/src/test/resources/logback.xml
    diff --git a/mcp-transport/mcp-webmvc-sse-transport/README.md b/mcp-spring/mcp-spring-webmvc/README.md
    similarity index 91%
    rename from mcp-transport/mcp-webmvc-sse-transport/README.md
    rename to mcp-spring/mcp-spring-webmvc/README.md
    index 1e63e47..9adf5b2 100644
    --- a/mcp-transport/mcp-webmvc-sse-transport/README.md
    +++ b/mcp-spring/mcp-spring-webmvc/README.md
    @@ -3,7 +3,7 @@
     ```xml
     
         io.modelcontextprotocol.sdk
    -    mcp-webmvc-sse-transport
    +    mcp-spring-webmvc
     
     ```
     
    diff --git a/mcp-transport/mcp-webmvc-sse-transport/pom.xml b/mcp-spring/mcp-spring-webmvc/pom.xml
    similarity index 98%
    rename from mcp-transport/mcp-webmvc-sse-transport/pom.xml
    rename to mcp-spring/mcp-spring-webmvc/pom.xml
    index 4e3e910..fa5766a 100644
    --- a/mcp-transport/mcp-webmvc-sse-transport/pom.xml
    +++ b/mcp-spring/mcp-spring-webmvc/pom.xml
    @@ -9,7 +9,7 @@
     		0.7.0-SNAPSHOT
     		../../pom.xml
     	
    -	mcp-webmvc-sse-transport
    +	mcp-spring-webmvc
     	jar
     	Spring Web MVC implementation of the Java MCP SSE transport
     	
    diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java b/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java
    similarity index 100%
    rename from mcp-transport/mcp-webmvc-sse-transport/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java
    rename to mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransport.java
    diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java b/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java
    similarity index 98%
    rename from mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java
    rename to mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java
    index d00c17e..a819920 100644
    --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java
    +++ b/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcSseAsyncServerTransportTests.java
    @@ -5,7 +5,6 @@
     package io.modelcontextprotocol.server;
     
     import com.fasterxml.jackson.databind.ObjectMapper;
    -import io.modelcontextprotocol.server.AbstractMcpAsyncServerTests;
     import io.modelcontextprotocol.server.transport.WebMvcSseServerTransport;
     import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.apache.catalina.Context;
    diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java b/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java
    similarity index 99%
    rename from mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java
    rename to mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java
    index 6600ab4..62f6963 100644
    --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java
    +++ b/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java
    @@ -12,8 +12,6 @@ import java.util.function.Function;
     import com.fasterxml.jackson.databind.ObjectMapper;
     import io.modelcontextprotocol.client.McpClient;
     import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport;
    -import io.modelcontextprotocol.server.McpServer;
    -import io.modelcontextprotocol.server.McpServerFeatures;
     import io.modelcontextprotocol.server.transport.WebMvcSseServerTransport;
     import io.modelcontextprotocol.spec.McpError;
     import io.modelcontextprotocol.spec.McpSchema;
    diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java b/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java
    similarity index 98%
    rename from mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java
    rename to mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java
    index 7539790..249b4de 100644
    --- a/mcp-transport/mcp-webmvc-sse-transport/src/test/java/io/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java
    +++ b/mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcSseSyncServerTransportTests.java
    @@ -5,7 +5,6 @@
     package io.modelcontextprotocol.server;
     
     import com.fasterxml.jackson.databind.ObjectMapper;
    -import io.modelcontextprotocol.server.AbstractMcpSyncServerTests;
     import io.modelcontextprotocol.server.transport.WebMvcSseServerTransport;
     import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.apache.catalina.Context;
    diff --git a/mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml b/mcp-spring/mcp-spring-webmvc/src/test/resources/logback.xml
    similarity index 100%
    rename from mcp-transport/mcp-webmvc-sse-transport/src/test/resources/logback.xml
    rename to mcp-spring/mcp-spring-webmvc/src/test/resources/logback.xml
    diff --git a/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java b/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java
    index affbc4d..a904a87 100644
    --- a/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java
    +++ b/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java
    @@ -9,11 +9,8 @@ import java.util.Map;
     import java.util.concurrent.atomic.AtomicBoolean;
     import java.util.function.Function;
     
    -import io.modelcontextprotocol.client.McpAsyncClient;
    -import io.modelcontextprotocol.client.McpClient;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
     import io.modelcontextprotocol.spec.McpSchema;
    -import io.modelcontextprotocol.spec.McpTransport;
     import io.modelcontextprotocol.spec.McpSchema.CallToolRequest;
     import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities;
     import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest;
    @@ -25,6 +22,7 @@ import io.modelcontextprotocol.spec.McpSchema.Root;
     import io.modelcontextprotocol.spec.McpSchema.SubscribeRequest;
     import io.modelcontextprotocol.spec.McpSchema.Tool;
     import io.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest;
    +import io.modelcontextprotocol.spec.McpTransport;
     import org.junit.jupiter.api.AfterEach;
     import org.junit.jupiter.api.BeforeEach;
     import org.junit.jupiter.api.Disabled;
    diff --git a/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java b/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java
    index df08498..b1c58a6 100644
    --- a/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java
    +++ b/mcp-test/src/main/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java
    @@ -8,8 +8,6 @@ import java.time.Duration;
     import java.util.Map;
     import java.util.concurrent.atomic.AtomicBoolean;
     
    -import io.modelcontextprotocol.client.McpClient;
    -import io.modelcontextprotocol.client.McpSyncClient;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
     import io.modelcontextprotocol.spec.McpSchema;
     import io.modelcontextprotocol.spec.McpSchema.CallToolRequest;
    diff --git a/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java b/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java
    index 730f367..ca5783d 100644
    --- a/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java
    +++ b/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java
    @@ -7,13 +7,8 @@ package io.modelcontextprotocol.server;
     import java.time.Duration;
     import java.util.List;
     
    -import io.modelcontextprotocol.server.McpAsyncServer;
    -import io.modelcontextprotocol.server.McpServer;
    -import io.modelcontextprotocol.server.McpServerFeatures;
     import io.modelcontextprotocol.spec.McpError;
     import io.modelcontextprotocol.spec.McpSchema;
    -import io.modelcontextprotocol.spec.McpTransport;
    -import io.modelcontextprotocol.spec.ServerMcpTransport;
     import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
     import io.modelcontextprotocol.spec.McpSchema.GetPromptResult;
     import io.modelcontextprotocol.spec.McpSchema.Prompt;
    @@ -22,6 +17,8 @@ import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult;
     import io.modelcontextprotocol.spec.McpSchema.Resource;
     import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities;
     import io.modelcontextprotocol.spec.McpSchema.Tool;
    +import io.modelcontextprotocol.spec.McpTransport;
    +import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.junit.jupiter.api.AfterEach;
     import org.junit.jupiter.api.BeforeEach;
     import org.junit.jupiter.api.Test;
    diff --git a/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java b/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java
    index 9c44a82..f8b9575 100644
    --- a/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java
    +++ b/mcp-test/src/main/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java
    @@ -6,13 +6,8 @@ package io.modelcontextprotocol.server;
     
     import java.util.List;
     
    -import io.modelcontextprotocol.server.McpServer;
    -import io.modelcontextprotocol.server.McpServerFeatures;
    -import io.modelcontextprotocol.server.McpSyncServer;
     import io.modelcontextprotocol.spec.McpError;
     import io.modelcontextprotocol.spec.McpSchema;
    -import io.modelcontextprotocol.spec.McpTransport;
    -import io.modelcontextprotocol.spec.ServerMcpTransport;
     import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
     import io.modelcontextprotocol.spec.McpSchema.GetPromptResult;
     import io.modelcontextprotocol.spec.McpSchema.Prompt;
    @@ -21,6 +16,8 @@ import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult;
     import io.modelcontextprotocol.spec.McpSchema.Resource;
     import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities;
     import io.modelcontextprotocol.spec.McpSchema.Tool;
    +import io.modelcontextprotocol.spec.McpTransport;
    +import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.junit.jupiter.api.AfterEach;
     import org.junit.jupiter.api.BeforeEach;
     import org.junit.jupiter.api.Test;
    diff --git a/mcp/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java b/mcp/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java
    index 9a0933e..31d3175 100644
    --- a/mcp/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java
    +++ b/mcp/src/main/java/io/modelcontextprotocol/client/McpAsyncClient.java
    @@ -9,17 +9,15 @@ import java.util.HashMap;
     import java.util.List;
     import java.util.Map;
     import java.util.concurrent.ConcurrentHashMap;
    -import java.util.function.Consumer;
     import java.util.function.Function;
     
     import com.fasterxml.jackson.core.type.TypeReference;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
     import io.modelcontextprotocol.spec.DefaultMcpSession;
    -import io.modelcontextprotocol.spec.McpError;
    -import io.modelcontextprotocol.spec.McpSchema;
    -import io.modelcontextprotocol.spec.McpTransport;
     import io.modelcontextprotocol.spec.DefaultMcpSession.NotificationHandler;
     import io.modelcontextprotocol.spec.DefaultMcpSession.RequestHandler;
    +import io.modelcontextprotocol.spec.McpError;
    +import io.modelcontextprotocol.spec.McpSchema;
     import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities;
     import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest;
     import io.modelcontextprotocol.spec.McpSchema.CreateMessageResult;
    @@ -30,13 +28,13 @@ import io.modelcontextprotocol.spec.McpSchema.LoggingLevel;
     import io.modelcontextprotocol.spec.McpSchema.LoggingMessageNotification;
     import io.modelcontextprotocol.spec.McpSchema.PaginatedRequest;
     import io.modelcontextprotocol.spec.McpSchema.Root;
    +import io.modelcontextprotocol.spec.McpTransport;
     import io.modelcontextprotocol.util.Assert;
     import io.modelcontextprotocol.util.Utils;
     import org.slf4j.Logger;
     import org.slf4j.LoggerFactory;
     import reactor.core.publisher.Flux;
     import reactor.core.publisher.Mono;
    -import reactor.core.scheduler.Schedulers;
     
     /**
      * The Model Context Protocol (MCP) client implementation that provides asynchronous
    @@ -686,32 +684,6 @@ public class McpAsyncClient {
     	// --------------------------
     	// Logging
     	// --------------------------
    -	/**
    -	 * Create a notification handler for logging notifications from the server. This
    -	 * handler automatically distributes logging messages to all registered consumers.
    -	 * @param loggingConsumers List of consumers that will be notified when a logging
    -	 * message is received. Each consumer receives the logging message notification.
    -	 * @return A NotificationHandler that processes log notifications by distributing the
    -	 * message to all registered consumers
    -	 */
    -	private NotificationHandler loggingNotificationHandler(
    -			List> loggingConsumers) {
    -
    -		return params -> {
    -
    -			McpSchema.LoggingMessageNotification loggingMessageNotification = transport.unmarshalFrom(params,
    -					new TypeReference() {
    -					});
    -
    -			return Mono.fromRunnable(() -> {
    -				for (Consumer loggingConsumer : loggingConsumers) {
    -					loggingConsumer.accept(loggingMessageNotification);
    -				}
    -			}).subscribeOn(Schedulers.boundedElastic()).then();
    -
    -		};
    -	}
    -
     	/**
     	 * Create a notification handler for logging notifications from the server. This
     	 * handler automatically distributes logging messages to all registered consumers.
    diff --git a/mcp/src/main/java/io/modelcontextprotocol/server/transport/StdioServerTransport.java b/mcp/src/main/java/io/modelcontextprotocol/server/transport/StdioServerTransport.java
    index 506e387..818aa28 100644
    --- a/mcp/src/main/java/io/modelcontextprotocol/server/transport/StdioServerTransport.java
    +++ b/mcp/src/main/java/io/modelcontextprotocol/server/transport/StdioServerTransport.java
    @@ -10,15 +10,14 @@ import java.io.InputStream;
     import java.io.InputStreamReader;
     import java.io.OutputStream;
     import java.nio.charset.StandardCharsets;
    -import java.time.Duration;
     import java.util.concurrent.Executors;
     import java.util.function.Function;
     
     import com.fasterxml.jackson.core.type.TypeReference;
     import com.fasterxml.jackson.databind.ObjectMapper;
     import io.modelcontextprotocol.spec.McpSchema;
    -import io.modelcontextprotocol.spec.ServerMcpTransport;
     import io.modelcontextprotocol.spec.McpSchema.JSONRPCMessage;
    +import io.modelcontextprotocol.spec.ServerMcpTransport;
     import io.modelcontextprotocol.util.Assert;
     import org.slf4j.Logger;
     import org.slf4j.LoggerFactory;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java
    index ea61844..974f9c3 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpAsyncClientTests.java
    @@ -9,11 +9,8 @@ import java.util.Map;
     import java.util.concurrent.atomic.AtomicBoolean;
     import java.util.function.Function;
     
    -import io.modelcontextprotocol.client.McpAsyncClient;
    -import io.modelcontextprotocol.client.McpClient;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
     import io.modelcontextprotocol.spec.McpSchema;
    -import io.modelcontextprotocol.spec.McpTransport;
     import io.modelcontextprotocol.spec.McpSchema.CallToolRequest;
     import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities;
     import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest;
    @@ -25,6 +22,7 @@ import io.modelcontextprotocol.spec.McpSchema.Root;
     import io.modelcontextprotocol.spec.McpSchema.SubscribeRequest;
     import io.modelcontextprotocol.spec.McpSchema.Tool;
     import io.modelcontextprotocol.spec.McpSchema.UnsubscribeRequest;
    +import io.modelcontextprotocol.spec.McpTransport;
     import org.junit.jupiter.api.AfterEach;
     import org.junit.jupiter.api.BeforeEach;
     import org.junit.jupiter.api.Disabled;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java
    index 6a630c4..0750ccd 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/client/AbstractMcpSyncClientTests.java
    @@ -8,8 +8,6 @@ import java.time.Duration;
     import java.util.Map;
     import java.util.concurrent.atomic.AtomicBoolean;
     
    -import io.modelcontextprotocol.client.McpClient;
    -import io.modelcontextprotocol.client.McpSyncClient;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
     import io.modelcontextprotocol.spec.McpSchema;
     import io.modelcontextprotocol.spec.McpSchema.CallToolRequest;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java
    index a58df5e..d11fa0f 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/client/McpAsyncClientResponseHandlerTests.java
    @@ -14,8 +14,6 @@ import com.fasterxml.jackson.core.JsonProcessingException;
     import com.fasterxml.jackson.core.type.TypeReference;
     import com.fasterxml.jackson.databind.ObjectMapper;
     import io.modelcontextprotocol.MockMcpTransport;
    -import io.modelcontextprotocol.client.McpAsyncClient;
    -import io.modelcontextprotocol.client.McpClient;
     import io.modelcontextprotocol.spec.McpError;
     import io.modelcontextprotocol.spec.McpSchema;
     import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/McpClientProtocolVersionTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/McpClientProtocolVersionTests.java
    index 317f571..58e486e 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/client/McpClientProtocolVersionTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/client/McpClientProtocolVersionTests.java
    @@ -8,8 +8,6 @@ import java.time.Duration;
     import java.util.List;
     
     import io.modelcontextprotocol.MockMcpTransport;
    -import io.modelcontextprotocol.client.McpAsyncClient;
    -import io.modelcontextprotocol.client.McpClient;
     import io.modelcontextprotocol.spec.McpError;
     import io.modelcontextprotocol.spec.McpSchema;
     import io.modelcontextprotocol.spec.McpSchema.InitializeResult;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java
    index d96dc7f..56ac8f5 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpAsyncClientTests.java
    @@ -4,7 +4,6 @@
     
     package io.modelcontextprotocol.client;
     
    -import io.modelcontextprotocol.client.McpSyncClient;
     import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
     import org.junit.jupiter.api.Timeout;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java
    index 0ae22ac..d76d0bf 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/client/ServletSseMcpSyncClientTests.java
    @@ -4,7 +4,6 @@
     
     package io.modelcontextprotocol.client;
     
    -import io.modelcontextprotocol.client.McpSyncClient;
     import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
     import org.junit.jupiter.api.Timeout;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java
    index 44c2876..ce74812 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpAsyncClientTests.java
    @@ -4,7 +4,6 @@
     
     package io.modelcontextprotocol.client;
     
    -import io.modelcontextprotocol.client.McpAsyncClient;
     import io.modelcontextprotocol.client.transport.ServerParameters;
     import io.modelcontextprotocol.client.transport.StdioClientTransport;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java
    index ef7c83b..9f2bc4a 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/client/StdioMcpSyncClientTests.java
    @@ -6,7 +6,6 @@ package io.modelcontextprotocol.client;
     
     import java.util.concurrent.atomic.AtomicReference;
     
    -import io.modelcontextprotocol.client.McpSyncClient;
     import io.modelcontextprotocol.client.transport.ServerParameters;
     import io.modelcontextprotocol.client.transport.StdioClientTransport;
     import io.modelcontextprotocol.spec.ClientMcpTransport;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java b/mcp/src/test/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java
    index 2d37b4a..294056f 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransportTests.java
    @@ -9,7 +9,6 @@ import java.util.Map;
     import java.util.concurrent.atomic.AtomicInteger;
     import java.util.function.Function;
     
    -import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport;
     import io.modelcontextprotocol.spec.McpSchema;
     import io.modelcontextprotocol.spec.McpSchema.JSONRPCRequest;
     import org.junit.jupiter.api.AfterEach;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java
    index ff1162c..dcc103b 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpAsyncServerTests.java
    @@ -7,13 +7,8 @@ package io.modelcontextprotocol.server;
     import java.time.Duration;
     import java.util.List;
     
    -import io.modelcontextprotocol.server.McpAsyncServer;
    -import io.modelcontextprotocol.server.McpServer;
    -import io.modelcontextprotocol.server.McpServerFeatures;
     import io.modelcontextprotocol.spec.McpError;
     import io.modelcontextprotocol.spec.McpSchema;
    -import io.modelcontextprotocol.spec.McpTransport;
    -import io.modelcontextprotocol.spec.ServerMcpTransport;
     import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
     import io.modelcontextprotocol.spec.McpSchema.GetPromptResult;
     import io.modelcontextprotocol.spec.McpSchema.Prompt;
    @@ -22,6 +17,8 @@ import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult;
     import io.modelcontextprotocol.spec.McpSchema.Resource;
     import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities;
     import io.modelcontextprotocol.spec.McpSchema.Tool;
    +import io.modelcontextprotocol.spec.McpTransport;
    +import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.junit.jupiter.api.AfterEach;
     import org.junit.jupiter.api.BeforeEach;
     import org.junit.jupiter.api.Test;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java
    index 37c02c8..bdcd7ae 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/server/AbstractMcpSyncServerTests.java
    @@ -6,13 +6,8 @@ package io.modelcontextprotocol.server;
     
     import java.util.List;
     
    -import io.modelcontextprotocol.server.McpServer;
    -import io.modelcontextprotocol.server.McpServerFeatures;
    -import io.modelcontextprotocol.server.McpSyncServer;
     import io.modelcontextprotocol.spec.McpError;
     import io.modelcontextprotocol.spec.McpSchema;
    -import io.modelcontextprotocol.spec.McpTransport;
    -import io.modelcontextprotocol.spec.ServerMcpTransport;
     import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
     import io.modelcontextprotocol.spec.McpSchema.GetPromptResult;
     import io.modelcontextprotocol.spec.McpSchema.Prompt;
    @@ -21,6 +16,8 @@ import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult;
     import io.modelcontextprotocol.spec.McpSchema.Resource;
     import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities;
     import io.modelcontextprotocol.spec.McpSchema.Tool;
    +import io.modelcontextprotocol.spec.McpTransport;
    +import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.junit.jupiter.api.AfterEach;
     import org.junit.jupiter.api.BeforeEach;
     import org.junit.jupiter.api.Test;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java
    index 74498ff..9735872 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java
    @@ -8,8 +8,6 @@ import java.util.List;
     import java.util.UUID;
     
     import io.modelcontextprotocol.MockMcpTransport;
    -import io.modelcontextprotocol.server.McpAsyncServer;
    -import io.modelcontextprotocol.server.McpServer;
     import io.modelcontextprotocol.spec.McpSchema;
     import org.junit.jupiter.api.Test;
     
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java
    index 02d140f..715f636 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpAsyncServerTests.java
    @@ -5,7 +5,6 @@
     package io.modelcontextprotocol.server;
     
     import com.fasterxml.jackson.databind.ObjectMapper;
    -import io.modelcontextprotocol.server.McpAsyncServer;
     import io.modelcontextprotocol.server.transport.HttpServletSseServerTransport;
     import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.junit.jupiter.api.Timeout;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java
    index 9b64e3e..208de7f 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/server/ServletSseMcpSyncServerTests.java
    @@ -5,7 +5,6 @@
     package io.modelcontextprotocol.server;
     
     import com.fasterxml.jackson.databind.ObjectMapper;
    -import io.modelcontextprotocol.server.McpSyncServer;
     import io.modelcontextprotocol.server.transport.HttpServletSseServerTransport;
     import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.junit.jupiter.api.Timeout;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpAsyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpAsyncServerTests.java
    index 75646fd..e933d63 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpAsyncServerTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpAsyncServerTests.java
    @@ -4,7 +4,6 @@
     
     package io.modelcontextprotocol.server;
     
    -import io.modelcontextprotocol.server.McpAsyncServer;
     import io.modelcontextprotocol.server.transport.StdioServerTransport;
     import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.junit.jupiter.api.Timeout;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpSyncServerTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpSyncServerTests.java
    index 073bbcb..d935041 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpSyncServerTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/server/StdioMcpSyncServerTests.java
    @@ -4,7 +4,6 @@
     
     package io.modelcontextprotocol.server;
     
    -import io.modelcontextprotocol.server.McpSyncServer;
     import io.modelcontextprotocol.server.transport.StdioServerTransport;
     import io.modelcontextprotocol.spec.ServerMcpTransport;
     import org.junit.jupiter.api.Timeout;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java
    index 6fe7fe0..4a292da 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportIntegrationTests.java
    @@ -14,7 +14,6 @@ import io.modelcontextprotocol.client.McpClient;
     import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport;
     import io.modelcontextprotocol.server.McpServer;
     import io.modelcontextprotocol.server.McpServerFeatures;
    -import io.modelcontextprotocol.server.transport.HttpServletSseServerTransport;
     import io.modelcontextprotocol.spec.McpError;
     import io.modelcontextprotocol.spec.McpSchema;
     import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportTests.java b/mcp/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportTests.java
    index a06cfe6..43e5019 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportTests.java
    @@ -11,7 +11,6 @@ import java.nio.charset.StandardCharsets;
     import java.util.Map;
     
     import com.fasterxml.jackson.databind.ObjectMapper;
    -import io.modelcontextprotocol.server.transport.StdioServerTransport;
     import io.modelcontextprotocol.spec.McpSchema;
     import io.modelcontextprotocol.spec.McpSchema.JSONRPCRequest;
     import org.junit.jupiter.api.AfterEach;
    diff --git a/mcp/src/test/java/io/modelcontextprotocol/spec/DefaultMcpSessionTests.java b/mcp/src/test/java/io/modelcontextprotocol/spec/DefaultMcpSessionTests.java
    index 2b7bf34..9d011af 100644
    --- a/mcp/src/test/java/io/modelcontextprotocol/spec/DefaultMcpSessionTests.java
    +++ b/mcp/src/test/java/io/modelcontextprotocol/spec/DefaultMcpSessionTests.java
    @@ -9,9 +9,6 @@ import java.util.Map;
     
     import com.fasterxml.jackson.core.type.TypeReference;
     import io.modelcontextprotocol.MockMcpTransport;
    -import io.modelcontextprotocol.spec.DefaultMcpSession;
    -import io.modelcontextprotocol.spec.McpError;
    -import io.modelcontextprotocol.spec.McpSchema;
     import org.junit.jupiter.api.AfterEach;
     import org.junit.jupiter.api.BeforeEach;
     import org.junit.jupiter.api.Test;
    diff --git a/pom.xml b/pom.xml
    index d1bdc29..0edd15f 100644
    --- a/pom.xml
    +++ b/pom.xml
    @@ -96,8 +96,8 @@
     	
     		mcp-bom
     		mcp
    -		mcp-transport/mcp-webflux-sse-transport
    -		mcp-transport/mcp-webmvc-sse-transport
    +		mcp-spring/mcp-spring-webflux
    +		mcp-spring/mcp-spring-webmvc
     		
     		mcp-test
     	
    
    From 8cd3cfdf3f84942537808d8fd232d2964e08ea47 Mon Sep 17 00:00:00 2001
    From: Christian Tzolov 
    Date: Wed, 29 Jan 2025 14:32:43 +0100
    Subject: [PATCH 104/505] Improve docs
    
    ---
     README.md                                     |  40 +-
     docs/docs/dependency-management.mdx           |  38 -
     docs/docs/mcp-overview.mdx                    |   6 +-
     docs/docs/overview.mdx                        |  32 +-
     docs/images/java-mcp-client-architecture.jpg  | Bin 0 -> 676694 bytes
     docs/images/java-mcp-server-architecture.jpg  | Bin 0 -> 859935 bytes
     ...gram.svg => java-mcp-uml-classdiagram.svg} |   0
     .../spring-ai-mcp-client-architecture.jpg     | Bin 702970 -> 0 bytes
     .../spring-ai-mcp-server-architecture.jpg     | Bin 809495 -> 0 bytes
     docs/mint.json                                |   2 +-
     mcp-bom/pom.xml                               |   4 +-
     mcp-docs/pom.xml                              |  89 ---
     mcp-docs/src/assembly/javadocs.xml            |  31 -
     mcp-docs/src/main/antora/antora-playbook.yml  |  48 --
     mcp-docs/src/main/antora/antora.yml           |  12 -
     .../modules/ROOT/images/class-diagrams.puml   | 282 --------
     .../antora/modules/ROOT/images/mcp-stack.svg  | 197 -----
     .../spring-ai-mcp-clinet-architecture.jpg     | Bin 702970 -> 0 bytes
     .../spring-ai-mcp-server-architecture.jpg     | Bin 809495 -> 0 bytes
     .../images/spring-ai-mcp-uml-classdiagram.svg |   1 -
     .../src/main/antora/modules/ROOT/nav.adoc     |   3 -
     .../ROOT/pages/dependency-management.adoc     | 109 ---
     .../main/antora/modules/ROOT/pages/mcp.adoc   | 675 ------------------
     .../antora/modules/ROOT/pages/overview.adoc   | 126 ----
     .../resources/antora-resources/antora.yml     |   2 -
     mcp-docs/src/main/javadoc/overview.html       |  33 -
     pom.xml                                       |   9 -
     27 files changed, 18 insertions(+), 1721 deletions(-)
     create mode 100644 docs/images/java-mcp-client-architecture.jpg
     create mode 100644 docs/images/java-mcp-server-architecture.jpg
     rename docs/images/{spring-ai-mcp-uml-classdiagram.svg => java-mcp-uml-classdiagram.svg} (100%)
     delete mode 100644 docs/images/spring-ai-mcp-client-architecture.jpg
     delete mode 100644 docs/images/spring-ai-mcp-server-architecture.jpg
     delete mode 100644 mcp-docs/pom.xml
     delete mode 100644 mcp-docs/src/assembly/javadocs.xml
     delete mode 100644 mcp-docs/src/main/antora/antora-playbook.yml
     delete mode 100644 mcp-docs/src/main/antora/antora.yml
     delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/class-diagrams.puml
     delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/mcp-stack.svg
     delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-clinet-architecture.jpg
     delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-server-architecture.jpg
     delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-uml-classdiagram.svg
     delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/nav.adoc
     delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc
     delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc
     delete mode 100644 mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc
     delete mode 100644 mcp-docs/src/main/antora/resources/antora-resources/antora.yml
     delete mode 100644 mcp-docs/src/main/javadoc/overview.html
    
    diff --git a/README.md b/README.md
    index 4133b9a..d38005a 100644
    --- a/README.md
    +++ b/README.md
    @@ -1,26 +1,27 @@
    -# Java & Spring MCP
    +# MCP Java SDK
     [![Build Status](https://github.com/modelcontextprotocol/java-sdk/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/modelcontextprotocol/java-sdk/actions/workflows/continuous-integration.yml)
     
    -Set of projects that provide Java SDK and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). 
    +Set of projects that provide Java SDK integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture). 
     It enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns.
     
     ## 📚 Reference Documentation
    -For comprehensive guides and API documentation, visit the [Spring AI MCP Reference Documentation](https://docs.spring.io/spring-ai-mcp/reference/overview.html).
     
    -
    +For comprehensive guides and API documentation, visit the [MCP Java SDK Reference Documentation](docs/docs/overview.mdx).
     
    -
    +
    +
    +
     
     ## Projects
     
    -### [MCP Java SDK](https://docs.spring.io/spring-ai-mcp/reference/mcp.html)
    +### MCP 
     
     Java implementation of the Model Context Protocol specification. It includes:
     - Synchronous and asynchronous [MCP Client](https://docs.spring.io/spring-ai-mcp/reference/mcp.html#_mcp_client) and [MCP Server](https://docs.spring.io/spring-ai-mcp/reference/mcp.html#_mcp_server) implementations
     - Standard MCP operations support (tool discovery, resource management, prompt handling, structured logging). Support for request and notification handling.
     - [Stdio](https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/transports/#stdio) and [SSE](https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/transports/#http-with-sse) transport implementations. 
     
    -### MCP Transports
    +### MCP Spring
     
     #### Core Transports
     - Stdio-based (`StdioClientTransport`, `StdioServerTransport`) for process-based communication
    @@ -32,13 +33,6 @@ Java implementation of the Model Context Protocol specification. It includes:
     - [WebMvc SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-spring/mcp-spring-webmvc) - Spring MVC based HTTP SSE transport (Server only). 
     You can use the core `HttpClientSseClientTransport` transport as a SSE client.
     
    -### [Spring AI MCP](https://docs.spring.io/spring-ai-mcp/reference/spring-mcp.html)
    -
    -The Spring integration module provides Spring-specific functionality:
    -- Integration with Spring AI's function calling system
    -- Spring-friendly abstractions for MCP clients
    -- Auto-configurations (WIP)
    -
     
     ## Installation
     
    @@ -64,24 +58,6 @@ Add the following dependencies to your Maven project:
     
     ```
     
    -This is a milestone release, not available on Maven Central. 
    -Add this repository to your POM:
    -
    -```xml
    -
    -    
    -        spring-milestones
    -        Spring Milestones
    -        https://repo.spring.io/milestone
    -        
    -            false
    -        
    -    
    -
    -```
    -
    -Reffer to the [Dependency Management](https://docs.spring.io/spring-ai-mcp/reference/dependency-management.html) page for more information.
    -
     ## Example Demos
     
     Explore these MCP examples in the [spring-ai-examples/model-context-protocol](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol) repository:
    diff --git a/docs/docs/dependency-management.mdx b/docs/docs/dependency-management.mdx
    index dbd69e4..6520721 100644
    --- a/docs/docs/dependency-management.mdx
    +++ b/docs/docs/dependency-management.mdx
    @@ -64,41 +64,3 @@ The following dependencies are available and managed by the BOM:
     
     - `org.modelcontextprotocol.sdk:mcp-test` - Testing utilities and support for MCP-based applications.
     
    -### Milestone and Snapshot Repositories
    -
    -To use the Milestone and Snapshot version, you need to add references to the Spring Milestone and/or Snapshot repositories in your build file.
    -Add the following repository definitions to your Maven or Gradle build file:
    -
    -
    -  
    -```xml
    -
    -  
    -    spring-milestones
    -    Spring Milestones
    -    https://repo.spring.io/milestone
    -    
    -      false
    -    
    -  
    -  
    -    spring-snapshots
    -    Spring Snapshots
    -    https://repo.spring.io/snapshot
    -    
    -      false
    -    
    -  
    -
    -```
    -  
    -
    -  
    -```groovy
    -repositories {
    -    maven { url 'https://repo.spring.io/milestone' }
    -    maven { url 'https://repo.spring.io/snapshot' }
    -}
    -```
    -  
    -
    diff --git a/docs/docs/mcp-overview.mdx b/docs/docs/mcp-overview.mdx
    index 18ae2b7..d1d2742 100644
    --- a/docs/docs/mcp-overview.mdx
    +++ b/docs/docs/mcp-overview.mdx
    @@ -7,8 +7,8 @@ description: Overview of the Model Context Protocol (MCP) architecture and key c
     
     Java SDK implementation of the [Model Context Protocol](https://modelcontextprotocol.io/introduction), enabling seamless integration with language models and AI tools.
     
    -![Spring AI MCP Client Architecture](/images/spring-ai-mcp-client-architecture.jpg)
    -![Spring AI MCP Server Architecture](/images/spring-ai-mcp-server-architecture.jpg)
    +![Spring AI MCP Client Architecture](/images/java-mcp-client-architecture.jpg)
    +![Spring AI MCP Server Architecture](/images/java-mcp-server-architecture.jpg)
     
     ## Features
     
    @@ -43,7 +43,7 @@ The SDK follows a layered architecture with clear separation of concerns:
     
     Following class diagram illustrates the layered architecture of the MCP SDK, showing the relationships between core interfaces (McpTransport, McpSession), their implementations, and the client/server components. It highlights how the transport layer connects to sessions, which in turn support both synchronous and asynchronous client/server implementations.
     
    -![MCP SDK Class Diagram](/images/spring-ai-mcp-uml-classdiagram.svg)
    +![MCP SDK Class Diagram](/images/java-mcp-uml-classdiagram.svg)
     
     Key Interactions:
     
    diff --git a/docs/docs/overview.mdx b/docs/docs/overview.mdx
    index 28d9e3d..e9c5e32 100644
    --- a/docs/docs/overview.mdx
    +++ b/docs/docs/overview.mdx
    @@ -3,36 +3,12 @@ title: Overview
     description: Introduction to the Model Context Protocol (MCP) Java SDK
     ---
     
    -# Java & Spring MCP
    +# MCP Java SDK
     
    -Java SDK and Spring Framework integration for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture), enabling standardized interaction with AI models and tools through both synchronous and asynchronous communication.
    +Java SDK for the [Model Context Protocol](https://modelcontextprotocol.org/docs/concepts/architecture), enabling standardized interaction with AI models and tools through both synchronous and asynchronous communication.
     
    -![Spring AI MCP Client Architecture](/images/spring-ai-mcp-client-architecture.jpg)
    -![Spring AI MCP Server Architecture](/images/spring-ai-mcp-server-architecture.jpg)
    -
    -## Core Components
    -
    -### [MCP Java SDK](/docs/mcp)
    -Core implementation of the Model Context Protocol specification, providing:
    -
    -- Synchronous and asynchronous [Client](/docs/mcp#mcp-client) and [Server](/docs/mcp#mcp-server) implementations
    -- Tool discovery and execution
    -- Resource management with URI templates
    -- Prompt handling and management
    -- Structured logging
    -- Request and Notification handling
    -
    -### MCP Transports
    -
    -#### Core Transports
    -- Stdio-based (`StdioClientTransport`, `StdioServerTransport`) for process-based communication
    -- Java HttpClient-based SSE client (`HttpClientSseClientTransport`) for HTTP SSE Client-side streaming
    -- Servlet-based SSE server (`HttpServletSseServerTransport`) for HTTP SSE Server streaming using traditional Servlet API
    -
    -#### Optional SSE Transports
    -- [WebFlux SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-spring/mcp-spring-webflux) - Reactive HTTP streaming with Spring WebFlux (Client & Server)
    -- [WebMvc SSE Transport](https://github.com/modelcontextprotocol/java-sdk/tree/main/mcp-spring/mcp-spring-webmvc) - Spring MVC based SSE transport (Server only). 
    -You can use the core `HttpClientSseClientTransport` transport as a SSE client.
    +![Java MCP Client Architecture](/images/java-mcp-client-architecture.jpg)
    +![Java MCP Server Architecture](/images/java-mcp-server-architecture.jpg)
     
     ## Getting Started
     
    diff --git a/docs/images/java-mcp-client-architecture.jpg b/docs/images/java-mcp-client-architecture.jpg
    new file mode 100644
    index 0000000000000000000000000000000000000000..688a2b4ad0f92090bf0033ab5eb3b20fce1a8484
    GIT binary patch
    literal 676694
    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

    $1Iq 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�>qUf*{0N3T_ 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Ν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

  • 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%0A%J0Cu% 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 V0e}EN03ZMm00{iQB=D}|e*m2+WgGwi literal 0 HcmV?d00001 diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index 34bc9b9..0b2de5d 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -2,7 +2,8 @@ Java SDK and Spring Framework integration for the link:https://modelcontextprotocol.org/docs/concepts/architecture[Model Context Protocol], enabling standardized interaction with AI models and tools through both synchronous and asynchronous communication. -image::spring-ai-mcp-architecture.png[Spring AI MCP Architecture,600] +image::spring-ai-mcp-clinet-architecture.jpg[Spring AI MCP Client Architecture,600,float="right",align="left"] +image::spring-ai-mcp-server-architecture.jpg[Spring AI MCP Server Architecture,600,align="right"] == Core Components From 9aba371660a3905625836cdc3dbd5a3349ebae65 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 13 Jan 2025 11:12:56 +0100 Subject: [PATCH 057/505] feat: Add SSE transport tests for MCP client and server - Add tests for HttpServletSseServerTransport implementation - Add tests for HttpClientSseClientTransport implementation - Rename STDIO transport test classes for clarity --- .../client/ServletSseMcpAsyncClientTests.java | 60 +++++++++++++++++++ .../client/ServletSseMcpSyncClientTests.java | 60 +++++++++++++++++++ ...sts.java => StdioMcpAsyncClientTests.java} | 2 +- ...ests.java => StdioMcpSyncClientTests.java} | 2 +- .../server/ServletSseMcpAsyncServerTests.java | 38 ++++++++++++ .../server/ServletSseMcpSyncServerTests.java | 38 ++++++++++++ 6 files changed, 198 insertions(+), 2 deletions(-) create mode 100644 mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpAsyncClientTests.java create mode 100644 mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpSyncClientTests.java rename mcp/src/test/java/org/springframework/ai/mcp/client/{McpAsyncClientTests.java => StdioMcpAsyncClientTests.java} (95%) rename mcp/src/test/java/org/springframework/ai/mcp/client/{McpSyncClientTests.java => StdioMcpSyncClientTests.java} (96%) create mode 100644 mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpAsyncServerTests.java create mode 100644 mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpSyncServerTests.java diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpAsyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpAsyncClientTests.java new file mode 100644 index 0000000..86e6976 --- /dev/null +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpAsyncClientTests.java @@ -0,0 +1,60 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.client; + +import org.junit.jupiter.api.Timeout; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; + +import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; +import org.springframework.ai.mcp.spec.ClientMcpTransport; + +/** + * Tests for the {@link McpSyncClient} with {@link HttpClientSseClientTransport}. + * + * @author Christian Tzolov + */ +@Timeout(15) // Giving extra time beyond the client timeout +class ServletSseMcpAsyncClientTests extends AbstractMcpAsyncClientTests { + + String host = "http://localhost:3004"; + + // Uses the https://github.com/tzolov/mcp-everything-server-docker-image + @SuppressWarnings("resource") + GenericContainer container = new GenericContainer<>("docker.io/tzolov/mcp-everything-server:v1") + .withLogConsumer(outputFrame -> System.out.println(outputFrame.getUtf8String())) + .withExposedPorts(3001) + .waitingFor(Wait.forHttp("/").forStatusCode(404)); + + @Override + protected ClientMcpTransport createMcpTransport() { + return new HttpClientSseClientTransport(host); + } + + @Override + protected void onStart() { + container.start(); + int port = container.getMappedPort(3001); + host = "http://" + container.getHost() + ":" + port; + } + + @Override + protected void onClose() { + container.stop(); + } + +} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpSyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpSyncClientTests.java new file mode 100644 index 0000000..f33bc97 --- /dev/null +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/ServletSseMcpSyncClientTests.java @@ -0,0 +1,60 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.client; + +import org.junit.jupiter.api.Timeout; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; + +import org.springframework.ai.mcp.client.transport.HttpClientSseClientTransport; +import org.springframework.ai.mcp.spec.ClientMcpTransport; + +/** + * Tests for the {@link McpSyncClient} with {@link HttpClientSseClientTransport}. + * + * @author Christian Tzolov + */ +@Timeout(15) // Giving extra time beyond the client timeout +class ServletSseMcpSyncClientTests extends AbstractMcpSyncClientTests { + + String host = "http://localhost:3003"; + + // Uses the https://github.com/tzolov/mcp-everything-server-docker-image + @SuppressWarnings("resource") + GenericContainer container = new GenericContainer<>("docker.io/tzolov/mcp-everything-server:v1") + .withLogConsumer(outputFrame -> System.out.println(outputFrame.getUtf8String())) + .withExposedPorts(3001) + .waitingFor(Wait.forHttp("/").forStatusCode(404)); + + @Override + protected ClientMcpTransport createMcpTransport() { + return new HttpClientSseClientTransport(host); + } + + @Override + protected void onStart() { + container.start(); + int port = container.getMappedPort(3001); + host = "http://" + container.getHost() + ":" + port; + } + + @Override + protected void onClose() { + container.stop(); + } + +} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpAsyncClientTests.java similarity index 95% rename from mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientTests.java rename to mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpAsyncClientTests.java index ca37d72..94c9b41 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpAsyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpAsyncClientTests.java @@ -29,7 +29,7 @@ import org.springframework.ai.mcp.spec.ClientMcpTransport; * @author Dariusz Jędrzejczyk */ @Timeout(15) // Giving extra time beyond the client timeout -class McpAsyncClientTests extends AbstractMcpAsyncClientTests { +class StdioMcpAsyncClientTests extends AbstractMcpAsyncClientTests { @Override protected ClientMcpTransport createMcpTransport() { diff --git a/mcp/src/test/java/org/springframework/ai/mcp/client/McpSyncClientTests.java b/mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpSyncClientTests.java similarity index 96% rename from mcp/src/test/java/org/springframework/ai/mcp/client/McpSyncClientTests.java rename to mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpSyncClientTests.java index 3b881d0..962bc2a 100644 --- a/mcp/src/test/java/org/springframework/ai/mcp/client/McpSyncClientTests.java +++ b/mcp/src/test/java/org/springframework/ai/mcp/client/StdioMcpSyncClientTests.java @@ -34,7 +34,7 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Dariusz Jędrzejczyk */ @Timeout(15) // Giving extra time beyond the client timeout -class McpSyncClientTests extends AbstractMcpSyncClientTests { +class StdioMcpSyncClientTests extends AbstractMcpSyncClientTests { @Override protected ClientMcpTransport createMcpTransport() { diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpAsyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpAsyncServerTests.java new file mode 100644 index 0000000..584938b --- /dev/null +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpAsyncServerTests.java @@ -0,0 +1,38 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.server; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Timeout; + +import org.springframework.ai.mcp.server.transport.HttpServletSseServerTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; + +/** + * Tests for {@link McpAsyncServer} using {@link HttpServletSseServerTransport}. + * + * @author Christian Tzolov + */ +@Timeout(15) // Giving extra time beyond the client timeout +class ServletSseMcpAsyncServerTests extends AbstractMcpAsyncServerTests { + + @Override + protected ServerMcpTransport createMcpTransport() { + return new HttpServletSseServerTransport(new ObjectMapper(), "/mcp/message"); + } + +} diff --git a/mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpSyncServerTests.java b/mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpSyncServerTests.java new file mode 100644 index 0000000..2d3390d --- /dev/null +++ b/mcp/src/test/java/org/springframework/ai/mcp/server/ServletSseMcpSyncServerTests.java @@ -0,0 +1,38 @@ +/* + * Copyright 2024-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.mcp.server; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Timeout; + +import org.springframework.ai.mcp.server.transport.HttpServletSseServerTransport; +import org.springframework.ai.mcp.spec.ServerMcpTransport; + +/** + * Tests for {@link McpSyncServer} using {@link HttpServletSseServerTransport}. + * + * @author Christian Tzolov + */ +@Timeout(15) // Giving extra time beyond the client timeout +class ServletSseMcpSyncServerTests extends AbstractMcpSyncServerTests { + + @Override + protected ServerMcpTransport createMcpTransport() { + return new HttpServletSseServerTransport(new ObjectMapper(), "/mcp/message"); + } + +} From 18951d5f84f826cac767b9b601269bb05d98fee6 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 13 Jan 2025 11:21:15 +0100 Subject: [PATCH 058/505] Minor docs improvements --- README.md | 5 +++-- mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc | 2 ++ mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 866712b..5e587e0 100644 --- a/README.md +++ b/README.md @@ -23,11 +23,12 @@ Java implementation of the Model Context Protocol specification. It includes: #### Core Transports - Stdio-based (`StdioClientTransport`, `StdioServerTransport`) for process-based communication - Java HttpClient-based SSE client (`HttpClientSseClientTransport`) for HTTP streaming +- Servlet-based SSE server (`HttpServletSseServerTransport`) for HTTP SSE Server streaming using traditional Servlet API #### Optional SSE Transports - [WebFlux SSE Transport](https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webflux-sse-transport) - Reactive HTTP streaming with Spring WebFlux (Client & Server) -- [WebMvc SSE Transport](https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webmvc-sse-transport) - Servlet-based HTTP streaming (Server only). -Use the core `HttpClientSseClientTransport` for SSE clients. +- [WebMvc SSE Transport](https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webmvc-sse-transport) - Spring MVC based HTTP SSE transport (Server only). +You can use the core `HttpClientSseClientTransport` transport as a SSE client. ### [Spring AI MCP](https://docs.spring.io/spring-ai-mcp/reference/spring-mcp.html) diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc index c743410..f19d960 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/mcp.adoc @@ -541,6 +541,8 @@ public class McpServerConfig implements WebMvcConfigurer { } ---- + +(You can implment non Spring web container as well link:https://github.com/spring-projects-experimental/spring-ai-mcp/blob/main/mcp/src/test/java/org/springframework/ai/mcp/server/transport/HttpServletSseServerTransportIntegrationTests.java[HttpServletSseServerTransportIntegrationTests]) ++ Implements the MCP HTTP with SSE transport specification using the traditional Servlet API, providing: + * Asynchronous message handling using Servlet 6.0 async support diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc index 0b2de5d..8e6dbac 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/overview.adoc @@ -26,8 +26,8 @@ Core implementation of the Model Context Protocol specification, providing: * *Optional SSE Transports* ** link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webflux-sse-transport[WebFlux SSE Transport] - Reactive HTTP streaming with Spring WebFlux (Client & Server) -** link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webmvc-sse-transport[WebMvc SSE Transport] - Servlet-based HTTP streaming (Server only). -Use the core `HttpClientSseClientTransport` for SSE clients. +** link:https://github.com/spring-projects-experimental/spring-ai-mcp/tree/main/mcp-transport/mcp-webmvc-sse-transport[WebMvc SSE Transport] - Spring MVC based SSE transport (Server only). +You can use the core `HttpClientSseClientTransport` transport as a SSE client. === xref:spring-mcp.adoc[Spring AI MCP] Spring integration features: From ea49afccf52cab770af06124ea16f0d11c25b946 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 13 Jan 2025 11:34:16 +0100 Subject: [PATCH 059/505] docs: Minor documentation improvements --- .../0.5.0-BREAKING-CHANGES.md | 0 .../antora/modules/ROOT/pages/dependency-management.adoc | 7 ++++--- mcp-transport/mcp-webflux-sse-transport/README.md | 1 - mcp-transport/mcp-webmvc-sse-transport/README.md | 1 - 4 files changed, 4 insertions(+), 5 deletions(-) rename 0.5.0-BREAKING-CHANGES.md => mcp-docs/0.5.0-BREAKING-CHANGES.md (100%) diff --git a/0.5.0-BREAKING-CHANGES.md b/mcp-docs/0.5.0-BREAKING-CHANGES.md similarity index 100% rename from 0.5.0-BREAKING-CHANGES.md rename to mcp-docs/0.5.0-BREAKING-CHANGES.md diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc index 36d327f..b123aba 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc @@ -22,7 +22,7 @@ Maven:: org.springframework.experimental mcp-bom - 0.5.0-SNAPSHOT + 0.5.0 pom import @@ -35,8 +35,7 @@ Gradle:: [source,groovy,indent=0,subs="verbatim,quotes"] ---- dependencies { - implementation platform("org.springframework.experimental:mcp-bom:0.5.0-SNAPSHOT") - // Replace the following with the starter dependencies of specific modules you wish to use + implementation platform("org.springframework.experimental:mcp-bom:0.5.0") //... } ---- @@ -45,6 +44,8 @@ This is implemented by adding a 'platform' dependency handler method to the depe As shown in the snippet below this can then be followed by version-less declarations of the Starter Dependencies for the one or more spring-ai modules you wish to use, e.g. spring-ai-openai. ====== +Replace the version number with the version of the BOM you want to use. + [[dependencies]] == Available Dependencies diff --git a/mcp-transport/mcp-webflux-sse-transport/README.md b/mcp-transport/mcp-webflux-sse-transport/README.md index dd14397..57e4d11 100644 --- a/mcp-transport/mcp-webflux-sse-transport/README.md +++ b/mcp-transport/mcp-webflux-sse-transport/README.md @@ -4,7 +4,6 @@ org.springframework.experimental mcp-webflux-sse-transport - 0.5.0-SNAPSHOT ``` diff --git a/mcp-transport/mcp-webmvc-sse-transport/README.md b/mcp-transport/mcp-webmvc-sse-transport/README.md index a7c9941..0b73e73 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/README.md +++ b/mcp-transport/mcp-webmvc-sse-transport/README.md @@ -4,7 +4,6 @@ org.springframework.experimental mcp-webmvc-sse-transport - 0.5.0-SNAPSHOT ``` From d617d05772ac424cda05b1b689f781749cb1bb69 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 13 Jan 2025 11:38:41 +0100 Subject: [PATCH 060/505] README cleanup --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5e587e0..ef35c56 100644 --- a/README.md +++ b/README.md @@ -95,9 +95,9 @@ Explore these MCP examples in the [spring-ai-examples/model-context-protocol](ht - [Filesystem](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/filesystem) - Enables LLM interaction with local filesystem folders and files - [Brave](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/brave) - Enables natural language interactions with Brave Search, allowing you to perform internet searches. - [Theme Park API Example](https://github.com/habuma/spring-ai-examples/tree/main/spring-ai-mcp) - Shows how to create an MCP server and client with Spring AI, exposing Theme Park API tools -- [Http SSE Client + WebMvc SSE Server sample](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server) - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities. -* [WebFlux SSE Client + WebFlux SSE Server sample](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webflux-server) - Showcases how to create and use MCP WebFlux servers and clients with different capabilities - +- [Http SSE Client + WebMvc SSE Server](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webmvc-server) - Showcases how to create and use MCP WebMvc servers and HttpClient clients with different capabilities. +- [WebFlux SSE Client + WebFlux SSE Server](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-webflux-server) - Showcases how to create and use MCP WebFlux servers and clients with different capabilities +- [HttpClient SSE Client + Servlet SSE Server](https://github.com/spring-projects/spring-ai-examples/tree/main/model-context-protocol/mcp-servlet-server) - Showcases how to create and use MCP Servlet SSE Server and HttpClient SSE Client with different capabilities ## Documentation From ae737357e6e925587722ef4874686227b7f60ba3 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 13 Jan 2025 12:03:35 +0100 Subject: [PATCH 061/505] build: configure BOM for Maven Central deployment - Add required Maven Central metadata (URL, SCM information) - Configure flatten-maven-plugin for proper POM flattening - Remove unnecessary local build configurations --- mcp-bom/pom.xml | 53 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/mcp-bom/pom.xml b/mcp-bom/pom.xml index abae513..6f6314d 100644 --- a/mcp-bom/pom.xml +++ b/mcp-bom/pom.xml @@ -8,17 +8,21 @@ org.springframework.experimental mcp-parent 0.5.0-SNAPSHOT - ../pom.xml mcp-bom pom + Spring AI MCP BOM Spring AI MCP Bill of Materials - - ${basedir}/.. - + https://github.com/spring-projects-experimental/spring-ai-mcp + + + https://github.com/spring-projects-experimental/spring-ai-mcp + git://github.com/spring-projects-experimental/spring-ai-mcp.git + git@github.com/spring-projects-experimental/spring-ai-mcp.git + @@ -58,4 +62,43 @@ - + + + + + org.codehaus.mojo + flatten-maven-plugin + ${flatten-maven-plugin.version} + + + flatten + process-resources + + flatten + + + true + ossrh + + remove + keep + remove + keep + keep + resolve + + + + + clean + clean + + clean + + + + + + + + \ No newline at end of file From c4e2c798457b28e6be6080dc95dfe675c75c2937 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 13 Jan 2025 12:27:03 +0100 Subject: [PATCH 062/505] Release version 0.5.0 --- mcp-bom/pom.xml | 2 +- mcp-docs/pom.xml | 2 +- mcp-test/pom.xml | 4 ++-- mcp-transport/mcp-webflux-sse-transport/pom.xml | 6 +++--- mcp-transport/mcp-webmvc-sse-transport/pom.xml | 6 +++--- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/mcp-bom/pom.xml b/mcp-bom/pom.xml index 6f6314d..5f7ec93 100644 --- a/mcp-bom/pom.xml +++ b/mcp-bom/pom.xml @@ -7,7 +7,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.5.0 mcp-bom diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index a9dfc71..d70f198 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.5.0 mcp-docs Spring AI MCP Docs diff --git a/mcp-test/pom.xml b/mcp-test/pom.xml index 9da326a..07dfb40 100644 --- a/mcp-test/pom.xml +++ b/mcp-test/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.5.0 mcp-test jar @@ -24,7 +24,7 @@ org.springframework.experimental mcp - 0.5.0-SNAPSHOT + 0.5.0 diff --git a/mcp-transport/mcp-webflux-sse-transport/pom.xml b/mcp-transport/mcp-webflux-sse-transport/pom.xml index dfb94e6..4a148b6 100644 --- a/mcp-transport/mcp-webflux-sse-transport/pom.xml +++ b/mcp-transport/mcp-webflux-sse-transport/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.5.0 ../../pom.xml mcp-webflux-sse-transport @@ -25,13 +25,13 @@ org.springframework.experimental mcp - 0.5.0-SNAPSHOT + 0.5.0 org.springframework.experimental mcp-test - 0.5.0-SNAPSHOT + 0.5.0 test diff --git a/mcp-transport/mcp-webmvc-sse-transport/pom.xml b/mcp-transport/mcp-webmvc-sse-transport/pom.xml index 7833d52..1ad2c79 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/pom.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.5.0 ../../pom.xml mcp-webmvc-sse-transport @@ -25,13 +25,13 @@ org.springframework.experimental mcp - 0.5.0-SNAPSHOT + 0.5.0 org.springframework.experimental mcp-test - 0.5.0-SNAPSHOT + 0.5.0 test diff --git a/mcp/pom.xml b/mcp/pom.xml index 2f8272f..3e7fad6 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.5.0 mcp jar diff --git a/pom.xml b/pom.xml index ea037cf..2e1dc9d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.5.0 pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index b19e570..2789f4d 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0-SNAPSHOT + 0.5.0 spring-ai-mcp Spring AI MCP From 9d90e4875ffefca8b3e342e44ce834dabc3d3857 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 13 Jan 2025 12:27:18 +0100 Subject: [PATCH 063/505] Next development version --- mcp-bom/pom.xml | 2 +- mcp-docs/pom.xml | 2 +- mcp-test/pom.xml | 4 ++-- mcp-transport/mcp-webflux-sse-transport/pom.xml | 6 +++--- mcp-transport/mcp-webmvc-sse-transport/pom.xml | 6 +++--- mcp/pom.xml | 2 +- pom.xml | 2 +- spring-ai-mcp/pom.xml | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/mcp-bom/pom.xml b/mcp-bom/pom.xml index 5f7ec93..b418d0c 100644 --- a/mcp-bom/pom.xml +++ b/mcp-bom/pom.xml @@ -7,7 +7,7 @@ org.springframework.experimental mcp-parent - 0.5.0 + 0.6.0-SNAPSHOT mcp-bom diff --git a/mcp-docs/pom.xml b/mcp-docs/pom.xml index d70f198..0967cb1 100644 --- a/mcp-docs/pom.xml +++ b/mcp-docs/pom.xml @@ -20,7 +20,7 @@ org.springframework.experimental mcp-parent - 0.5.0 + 0.6.0-SNAPSHOT mcp-docs Spring AI MCP Docs diff --git a/mcp-test/pom.xml b/mcp-test/pom.xml index 07dfb40..6ca4339 100644 --- a/mcp-test/pom.xml +++ b/mcp-test/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0 + 0.6.0-SNAPSHOT mcp-test jar @@ -24,7 +24,7 @@ org.springframework.experimental mcp - 0.5.0 + 0.6.0-SNAPSHOT diff --git a/mcp-transport/mcp-webflux-sse-transport/pom.xml b/mcp-transport/mcp-webflux-sse-transport/pom.xml index 4a148b6..fd51d01 100644 --- a/mcp-transport/mcp-webflux-sse-transport/pom.xml +++ b/mcp-transport/mcp-webflux-sse-transport/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0 + 0.6.0-SNAPSHOT ../../pom.xml mcp-webflux-sse-transport @@ -25,13 +25,13 @@ org.springframework.experimental mcp - 0.5.0 + 0.6.0-SNAPSHOT org.springframework.experimental mcp-test - 0.5.0 + 0.6.0-SNAPSHOT test diff --git a/mcp-transport/mcp-webmvc-sse-transport/pom.xml b/mcp-transport/mcp-webmvc-sse-transport/pom.xml index 1ad2c79..9d24d95 100644 --- a/mcp-transport/mcp-webmvc-sse-transport/pom.xml +++ b/mcp-transport/mcp-webmvc-sse-transport/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0 + 0.6.0-SNAPSHOT ../../pom.xml mcp-webmvc-sse-transport @@ -25,13 +25,13 @@ org.springframework.experimental mcp - 0.5.0 + 0.6.0-SNAPSHOT org.springframework.experimental mcp-test - 0.5.0 + 0.6.0-SNAPSHOT test diff --git a/mcp/pom.xml b/mcp/pom.xml index 3e7fad6..f8e5c20 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0 + 0.6.0-SNAPSHOT mcp jar diff --git a/pom.xml b/pom.xml index 2e1dc9d..2d583ca 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0 + 0.6.0-SNAPSHOT pom https://github.com/spring-projects-experimental/spring-ai-mcp diff --git a/spring-ai-mcp/pom.xml b/spring-ai-mcp/pom.xml index 2789f4d..7d31418 100644 --- a/spring-ai-mcp/pom.xml +++ b/spring-ai-mcp/pom.xml @@ -6,7 +6,7 @@ org.springframework.experimental mcp-parent - 0.5.0 + 0.6.0-SNAPSHOT spring-ai-mcp Spring AI MCP From 7a5793d0f3da6f677124da273971d53f8d2371bb Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 13 Jan 2025 12:36:45 +0100 Subject: [PATCH 064/505] docs: Update dependency management version --- .../main/antora/modules/ROOT/pages/dependency-management.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc index b123aba..0f01bc4 100644 --- a/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc +++ b/mcp-docs/src/main/antora/modules/ROOT/pages/dependency-management.adoc @@ -22,7 +22,7 @@ Maven:: org.springframework.experimental mcp-bom - 0.5.0 + 0.6.0-SNAPSHOT pom import @@ -35,7 +35,7 @@ Gradle:: [source,groovy,indent=0,subs="verbatim,quotes"] ---- dependencies { - implementation platform("org.springframework.experimental:mcp-bom:0.5.0") + implementation platform("org.springframework.experimental:mcp-bom:0.6.0-SNAPSHOT") //... } ---- From 2199e34cf89f8df68ac01300e2f3294bf43bd7e9 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Mon, 13 Jan 2025 13:27:07 +0100 Subject: [PATCH 065/505] Fix the MCP Server Architecture diagram --- .../spring-ai-mcp-server-architecture.jpg | Bin 801473 -> 809495 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-server-architecture.jpg b/mcp-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-server-architecture.jpg index c800a5e3f849ae11ca6bf56bc612f7de69d17ff2..c6ebea0c3220becc1864a09cdd3c47425fe74246 100644 GIT binary patch literal 809495 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�>qUf*{0N3T_ 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Ν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

    $1Iq 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