Skip to content

Commit 499d114

Browse files
committed
Support generateId method for McpServerSession.Factory
Signed-off-by: JermaineHua <crazyhzm@apache.org>
1 parent b9e7d95 commit 499d114

File tree

7 files changed

+15
-5
lines changed

7 files changed

+15
-5
lines changed

mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransportProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ private Mono<ServerResponse> handleSseConnection(ServerRequest request) {
262262
.body(Flux.<ServerSentEvent<?>>create(sink -> {
263263
WebFluxMcpSessionTransport sessionTransport = new WebFluxMcpSessionTransport(sink);
264264

265-
String sessionId = UUID.randomUUID().toString();
265+
String sessionId = sessionFactory.generateId();
266266
McpServerSession session = sessionFactory.create(sessionId, sessionTransport);
267267

268268
logger.debug("Created new SSE connection for session: {}", sessionId);

mcp-spring/mcp-spring-webmvc/src/main/java/io/modelcontextprotocol/server/transport/WebMvcSseServerTransportProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ private ServerResponse handleSseConnection(ServerRequest request) {
247247
return ServerResponse.status(HttpStatus.SERVICE_UNAVAILABLE).body("Server is shutting down");
248248
}
249249

250-
String sessionId = UUID.randomUUID().toString();
250+
String sessionId = sessionFactory.generateId();
251251
logger.debug("Creating new SSE connection for session: {}", sessionId);
252252

253253
// Send initial endpoint event

mcp/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
208208
response.setHeader("Connection", "keep-alive");
209209
response.setHeader("Access-Control-Allow-Origin", "*");
210210

211-
String sessionId = UUID.randomUUID().toString();
211+
String sessionId = sessionFactory.generateId();
212212
AsyncContext asyncContext = request.startAsync();
213213
asyncContext.setTimeout(0);
214214

mcp/src/main/java/io/modelcontextprotocol/server/transport/StdioServerTransportProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public StdioServerTransportProvider(ObjectMapper objectMapper, InputStream input
9595
public void setSessionFactory(McpServerSession.Factory sessionFactory) {
9696
// Create a single session for the stdio connection
9797
var transport = new StdioMcpSessionTransport();
98-
String sessionId = UUID.randomUUID().toString();
98+
String sessionId = sessionFactory.generateId();
9999
this.session = sessionFactory.create(sessionId, transport);
100100
transport.initProcessing();
101101
}

mcp/src/main/java/io/modelcontextprotocol/spec/McpServerSession.java

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

33
import java.time.Duration;
44
import java.util.Map;
5+
import java.util.UUID;
56
import java.util.concurrent.ConcurrentHashMap;
67
import java.util.concurrent.atomic.AtomicInteger;
78
import java.util.concurrent.atomic.AtomicLong;
@@ -348,6 +349,14 @@ public interface Factory {
348349
*/
349350
McpServerSession create(String sessionId, McpServerTransport sessionTransport);
350351

352+
/**
353+
* Generates a unique session id.
354+
* @return a unique session id.
355+
*/
356+
default String generateId() {
357+
return UUID.randomUUID().toString();
358+
}
359+
351360
}
352361

353362
}

mcp/src/test/java/io/modelcontextprotocol/MockMcpServerTransportProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public MockMcpServerTransport getTransport() {
4444
@Override
4545
public void setSessionFactory(Factory sessionFactory) {
4646

47-
String sessionId = UUID.randomUUID().toString();
47+
String sessionId = sessionFactory.generateId();
4848
session = sessionFactory.create(sessionId, transport);
4949
}
5050

mcp/src/test/java/io/modelcontextprotocol/server/transport/StdioServerTransportProviderTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.io.PrintStream;
1111
import java.nio.charset.StandardCharsets;
1212
import java.util.Map;
13+
import java.util.UUID;
1314
import java.util.concurrent.CountDownLatch;
1415
import java.util.concurrent.TimeUnit;
1516
import java.util.concurrent.atomic.AtomicReference;

0 commit comments

Comments
 (0)