From af2900f02e25ebf9c7abed9ddfe46ef5408338f5 Mon Sep 17 00:00:00 2001 From: Victor Sima Date: Sun, 20 Jul 2025 19:57:48 -0400 Subject: [PATCH] fix: websocket connection closes immediately --- .../sdk/server/WebSocketMcpKtorServerExtensions.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/WebSocketMcpKtorServerExtensions.kt b/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/WebSocketMcpKtorServerExtensions.kt index 9301749b..cb920c2a 100644 --- a/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/WebSocketMcpKtorServerExtensions.kt +++ b/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/WebSocketMcpKtorServerExtensions.kt @@ -7,6 +7,7 @@ import io.modelcontextprotocol.kotlin.sdk.Implementation import io.modelcontextprotocol.kotlin.sdk.LIB_VERSION import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities import io.modelcontextprotocol.kotlin.sdk.shared.IMPLEMENTATION_NAME +import kotlinx.coroutines.job /** * Registers a WebSocket route that establishes an MCP (Model Context Protocol) server session. @@ -98,7 +99,15 @@ private suspend fun Route.createMcpServer( server.connect(transport) handler(server) - server.close() + + // Wait for the WebSocket session to complete instead of closing immediately + // This keeps the connection alive while the transport handles messages + try { + // The transport's message handling loop will keep running until the client disconnects + session.coroutineContext.job.join() + } finally { + server.close() + } } private fun createMcpTransport(