diff --git a/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStreamableServerTransportProvider.java b/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStreamableServerTransportProvider.java index fa51a0130..cbbfa14f7 100644 --- a/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStreamableServerTransportProvider.java +++ b/mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcStreamableServerTransportProvider.java @@ -295,6 +295,13 @@ private ServerResponse handleGet(ServerRequest request) { sseBuilder.onComplete(() -> { logger.debug("SSE connection completed for session: {}", sessionId); listeningStream.close(); + // If the sse connection is closed,it means that the client + // connection has been disconnected + // due to network issues, etc., + // and the session needs to be removed + if (sessionId != null) { + sessions.remove(sessionId); + } }); } }, Duration.ZERO);