-
Notifications
You must be signed in to change notification settings - Fork 623
Open
Description
I am defining my McpTransportContextExtractor
implementation as:
@Internal
@Singleton
class DefaultMcpTransportContextExtractor implements McpTransportContextExtractor<HttpRequest<?>> {
public static final String HTTP_HEADER_MCP_PROTOCOL_VERSION = "MCP-Protocol-Version";
public static final String DEFAULT_PROTOCOL_VERSION = "2025-03-26";
public static final String HTTP_HEADER_MCP_SESSION_ID = "Mcp-Session-Id";
public static final String HTTP_HEADER_DEFAULT_LAST_EVENT_ID = "Last-Event-ID";
@Override
public McpTransportContext extract(HttpRequest<?> request, McpTransportContext transportContext) {
transportContext.put(HTTP_HEADER_MCP_PROTOCOL_VERSION,
request.getHeaders().get(HTTP_HEADER_MCP_PROTOCOL_VERSION, String.class)
.orElse(DEFAULT_PROTOCOL_VERSION));
request.getHeaders().get(HTTP_HEADER_MCP_SESSION_ID, String.class)
.ifPresent(v -> transportContext.put(HTTP_HEADER_MCP_SESSION_ID, v));
request.getHeaders().get(HTTP_HEADER_DEFAULT_LAST_EVENT_ID, String.class)
.ifPresent(v -> transportContext.put(HTTP_HEADER_DEFAULT_LAST_EVENT_ID, v));
return transportContext;
}
}
But given that the specification defines session id, last event and protocol version. I think it would be good if the McpTransportContextExtractor
contained default methods:
default String getSessionId() {
return null;
}
default String getLastEventId() {
return null;
}
default String getProtocolVersion() {
return "2025-03-26";
}
I can submit a PR if you think it is a good idea. With this change the TransportContext will have a clear API for those spec defined concepts.
Metadata
Metadata
Assignees
Labels
No labels