Skip to content

Commit 4702a2e

Browse files
committed
adjust the McpTransportContext support
Signed-off-by: Christian Tzolov <[email protected]>
1 parent 7a2c476 commit 4702a2e

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

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

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -243,15 +243,20 @@ private ServerResponse handleGet(ServerRequest request) {
243243
String lastId = request.headers().asHttpHeaders().getFirst(MCP_LAST_ID);
244244

245245
try {
246-
session.replay(lastId).toIterable().forEach(message -> {
247-
try {
248-
sessionTransport.sendMessage(message).block();
249-
}
250-
catch (Exception e) {
251-
logger.error("Failed to replay message: {}", e.getMessage());
252-
sseBuilder.error(e);
253-
}
254-
});
246+
session.replay(lastId)
247+
.contextWrite(ctx -> ctx.put(McpTransportContext.KEY, transportContext))
248+
.toIterable()
249+
.forEach(message -> {
250+
try {
251+
sessionTransport.sendMessage(message)
252+
.contextWrite(ctx -> ctx.put(McpTransportContext.KEY, transportContext))
253+
.block();
254+
}
255+
catch (Exception e) {
256+
logger.error("Failed to replay message: {}", e.getMessage());
257+
sseBuilder.error(e);
258+
}
259+
});
255260
}
256261
catch (Exception e) {
257262
logger.error("Failed to replay messages: {}", e.getMessage());
@@ -331,11 +336,15 @@ private ServerResponse handlePost(ServerRequest request) {
331336
}
332337

333338
if (message instanceof McpSchema.JSONRPCResponse jsonrpcResponse) {
334-
session.accept(jsonrpcResponse).block();
339+
session.accept(jsonrpcResponse)
340+
.contextWrite(ctx -> ctx.put(McpTransportContext.KEY, transportContext))
341+
.block();
335342
return ServerResponse.accepted().build();
336343
}
337344
else if (message instanceof McpSchema.JSONRPCNotification jsonrpcNotification) {
338-
session.accept(jsonrpcNotification).block();
345+
session.accept(jsonrpcNotification)
346+
.contextWrite(ctx -> ctx.put(McpTransportContext.KEY, transportContext))
347+
.block();
339348
return ServerResponse.accepted().build();
340349
}
341350
else if (message instanceof McpSchema.JSONRPCRequest jsonrpcRequest) {
@@ -352,7 +361,9 @@ else if (message instanceof McpSchema.JSONRPCRequest jsonrpcRequest) {
352361
sessionId, sseBuilder);
353362

354363
try {
355-
session.responseStream(jsonrpcRequest, sessionTransport).block();
364+
session.responseStream(jsonrpcRequest, sessionTransport)
365+
.contextWrite(ctx -> ctx.put(McpTransportContext.KEY, transportContext))
366+
.block();
356367
}
357368
catch (Exception e) {
358369
logger.error("Failed to handle request stream: {}", e.getMessage());

0 commit comments

Comments
 (0)