diff --git a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebClientStreamableHttpTransport.java b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebClientStreamableHttpTransport.java index 6d8e82f5..fd867efa 100644 --- a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebClientStreamableHttpTransport.java +++ b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebClientStreamableHttpTransport.java @@ -144,7 +144,7 @@ private DefaultMcpTransportSession createTransportSession() { : webClient.delete() .uri(this.endpoint) .header(HttpHeaders.MCP_SESSION_ID, sessionId) - .header(HttpHeaders.PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) + .header(HttpHeaders.MCP_PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) .retrieve() .toBodilessEntity() .onErrorComplete(e -> { @@ -204,7 +204,7 @@ private Mono reconnect(McpTransportStream stream) { Disposable connection = webClient.get() .uri(this.endpoint) .accept(MediaType.TEXT_EVENT_STREAM) - .header(HttpHeaders.PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) + .header(HttpHeaders.MCP_PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) .headers(httpHeaders -> { transportSession.sessionId().ifPresent(id -> httpHeaders.add(HttpHeaders.MCP_SESSION_ID, id)); if (stream != null) { @@ -265,7 +265,7 @@ public Mono sendMessage(McpSchema.JSONRPCMessage message) { Disposable connection = webClient.post() .uri(this.endpoint) .accept(MediaType.APPLICATION_JSON, MediaType.TEXT_EVENT_STREAM) - .header(HttpHeaders.PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) + .header(HttpHeaders.MCP_PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) .headers(httpHeaders -> { transportSession.sessionId().ifPresent(id -> httpHeaders.add(HttpHeaders.MCP_SESSION_ID, id)); }) diff --git a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java index 75caebef..013943b1 100644 --- a/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java +++ b/mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/client/transport/WebFluxSseClientTransport.java @@ -262,7 +262,7 @@ public Mono sendMessage(JSONRPCMessage message) { return webClient.post() .uri(messageEndpointUri) .contentType(MediaType.APPLICATION_JSON) - .header(HttpHeaders.PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) + .header(HttpHeaders.MCP_PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) .bodyValue(jsonText) .retrieve() .toBodilessEntity() @@ -295,7 +295,7 @@ protected Flux> eventStream() {// @formatter:off .get() .uri(this.sseEndpoint) .accept(MediaType.TEXT_EVENT_STREAM) - .header(HttpHeaders.PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) + .header(HttpHeaders.MCP_PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) .retrieve() .bodyToFlux(SSE_TYPE) .retryWhen(Retry.from(retrySignal -> retrySignal.handle(inboundRetryHandler))); diff --git a/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java b/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java index 3cfa7359..cebdce4b 100644 --- a/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java @@ -173,7 +173,7 @@ private Publisher createDelete(String sessionId) { .uri(uri) .header("Cache-Control", "no-cache") .header(HttpHeaders.MCP_SESSION_ID, sessionId) - .header(HttpHeaders.PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) + .header(HttpHeaders.MCP_PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) .DELETE(); return Mono.from(this.httpRequestCustomizer.customize(builder, "DELETE", uri, null)); }).flatMap(requestBuilder -> { @@ -243,7 +243,7 @@ private Mono reconnect(McpTransportStream stream) { var builder = requestBuilder.uri(uri) .header("Accept", TEXT_EVENT_STREAM) .header("Cache-Control", "no-cache") - .header(HttpHeaders.PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) + .header(HttpHeaders.MCP_PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) .GET(); return Mono.from(this.httpRequestCustomizer.customize(builder, "GET", uri, null)); }) @@ -398,7 +398,7 @@ public Mono sendMessage(McpSchema.JSONRPCMessage sentMessage) { .header("Accept", APPLICATION_JSON + ", " + TEXT_EVENT_STREAM) .header("Content-Type", APPLICATION_JSON) .header("Cache-Control", "no-cache") - .header(HttpHeaders.PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) + .header(HttpHeaders.MCP_PROTOCOL_VERSION, MCP_PROTOCOL_VERSION) .POST(HttpRequest.BodyPublishers.ofString(jsonBody)); return Mono.from(this.httpRequestCustomizer.customize(builder, "GET", uri, jsonBody)); }).flatMapMany(requestBuilder -> Flux.create(responseEventSink -> { diff --git a/mcp/src/main/java/io/modelcontextprotocol/spec/HttpHeaders.java b/mcp/src/main/java/io/modelcontextprotocol/spec/HttpHeaders.java index 65b80957..e2bbadb7 100644 --- a/mcp/src/main/java/io/modelcontextprotocol/spec/HttpHeaders.java +++ b/mcp/src/main/java/io/modelcontextprotocol/spec/HttpHeaders.java @@ -8,6 +8,7 @@ * Names of HTTP headers in use by MCP HTTP transports. * * @author Dariusz Jędrzejczyk + * @author Yanming Zhou */ public interface HttpHeaders { @@ -16,6 +17,11 @@ public interface HttpHeaders { */ String MCP_SESSION_ID = "mcp-session-id"; + /** + * Identifies the MCP protocol version. + */ + String MCP_PROTOCOL_VERSION = "MCP-Protocol-Version"; + /** * Identifies events within an SSE Stream. */ @@ -23,7 +29,9 @@ public interface HttpHeaders { /** * Identifies the MCP protocol version. + * @deprecated use {@link MCP_PROTOCOL_VERSION} instead */ - String PROTOCOL_VERSION = "MCP-Protocol-Version"; + @Deprecated(forRemoval = true) + String PROTOCOL_VERSION = MCP_PROTOCOL_VERSION; }