Skip to content

Commit 570d945

Browse files
committed
Polish HttpHeaders.MCP_SESSION_ID
- Use `Mcp-Session-Id` instead of `mcp-session-id` to align with specification although the header name is case-insensitive. - Use `HttpHeaders.MCP_SESSION_ID` instead of string literals. Signed-off-by: Yanming Zhou <[email protected]>
1 parent a0afdcd commit 570d945

File tree

4 files changed

+12
-10
lines changed

4 files changed

+12
-10
lines changed

mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,8 +443,10 @@ public Mono<Void> sendMessage(McpSchema.JSONRPCMessage sentMessage) {
443443
})).onErrorMap(CompletionException.class, t -> t.getCause()).onErrorComplete().subscribe();
444444

445445
})).flatMap(responseEvent -> {
446-
if (transportSession.markInitialized(
447-
responseEvent.responseInfo().headers().firstValue("mcp-session-id").orElseGet(() -> null))) {
446+
if (transportSession.markInitialized(responseEvent.responseInfo()
447+
.headers()
448+
.firstValue(HttpHeaders.MCP_SESSION_ID)
449+
.orElseGet(() -> null))) {
448450
// Once we have a session, we try to open an async stream for
449451
// the server to send notifications and requests out-of-band.
450452

mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public class HttpServletStreamableServerTransportProvider extends HttpServlet
102102
private McpStreamableServerSession.Factory sessionFactory;
103103

104104
/**
105-
* Map of active client sessions, keyed by mcp-session-id.
105+
* Map of active client sessions, keyed by Mcp-Session-Id.
106106
*/
107107
private final ConcurrentHashMap<String, McpStreamableServerSession> sessions = new ConcurrentHashMap<>();
108108

@@ -256,7 +256,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
256256
String sessionId = request.getHeader(HttpHeaders.MCP_SESSION_ID);
257257

258258
if (sessionId == null || sessionId.isBlank()) {
259-
badRequestErrors.add("Session ID required in mcp-session-id header");
259+
badRequestErrors.add("Session ID required in " + HttpHeaders.MCP_SESSION_ID + " header");
260260
}
261261

262262
if (!badRequestErrors.isEmpty()) {
@@ -438,7 +438,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
438438
String sessionId = request.getHeader(HttpHeaders.MCP_SESSION_ID);
439439

440440
if (sessionId == null || sessionId.isBlank()) {
441-
badRequestErrors.add("Session ID required in mcp-session-id header");
441+
badRequestErrors.add("Session ID required in " + HttpHeaders.MCP_SESSION_ID + " header");
442442
}
443443

444444
if (!badRequestErrors.isEmpty()) {
@@ -545,7 +545,7 @@ protected void doDelete(HttpServletRequest request, HttpServletResponse response
545545

546546
if (request.getHeader(HttpHeaders.MCP_SESSION_ID) == null) {
547547
this.responseError(response, HttpServletResponse.SC_BAD_REQUEST,
548-
new McpError("Session ID required in mcp-session-id header"));
548+
new McpError("Session ID required in " + HttpHeaders.MCP_SESSION_ID + " header"));
549549
return;
550550
}
551551

mcp-core/src/main/java/io/modelcontextprotocol/spec/HttpHeaders.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public interface HttpHeaders {
1414
/**
1515
* Identifies individual MCP sessions.
1616
*/
17-
String MCP_SESSION_ID = "mcp-session-id";
17+
String MCP_SESSION_ID = "Mcp-Session-Id";
1818

1919
/**
2020
* Identifies events within an SSE Stream.

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public class WebMvcStreamableServerTransportProvider implements McpStreamableSer
8989
private McpStreamableServerSession.Factory sessionFactory;
9090

9191
/**
92-
* Map of active client sessions, keyed by mcp-session-id.
92+
* Map of active client sessions, keyed by Mcp-Session-Id.
9393
*/
9494
private final ConcurrentHashMap<String, McpStreamableServerSession> sessions = new ConcurrentHashMap<>();
9595

@@ -241,7 +241,7 @@ private ServerResponse handleGet(ServerRequest request) {
241241
McpTransportContext transportContext = this.contextExtractor.extract(request);
242242

243243
if (!request.headers().asHttpHeaders().containsKey(HttpHeaders.MCP_SESSION_ID)) {
244-
return ServerResponse.badRequest().body("Session ID required in mcp-session-id header");
244+
return ServerResponse.badRequest().body("Session ID required in " + HttpHeaders.MCP_SESSION_ID + " header");
245245
}
246246

247247
String sessionId = request.headers().asHttpHeaders().getFirst(HttpHeaders.MCP_SESSION_ID);
@@ -434,7 +434,7 @@ private ServerResponse handleDelete(ServerRequest request) {
434434
McpTransportContext transportContext = this.contextExtractor.extract(request);
435435

436436
if (!request.headers().asHttpHeaders().containsKey(HttpHeaders.MCP_SESSION_ID)) {
437-
return ServerResponse.badRequest().body("Session ID required in mcp-session-id header");
437+
return ServerResponse.badRequest().body("Session ID required in " + HttpHeaders.MCP_SESSION_ID + " header");
438438
}
439439

440440
String sessionId = request.headers().asHttpHeaders().getFirst(HttpHeaders.MCP_SESSION_ID);

0 commit comments

Comments
 (0)