diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java b/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java index e56a23f08..ceae846bf 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/client/transport/HttpClientStreamableHttpTransport.java @@ -679,7 +679,7 @@ public static class Builder { private Duration connectTimeout = Duration.ofSeconds(10); private List supportedProtocolVersions = List.of(ProtocolVersions.MCP_2025_03_26, - ProtocolVersions.MCP_2025_06_18, ProtocolVersions.MCP_2025_11_25); + ProtocolVersions.MCP_2025_06_18, ProtocolVersions.MCP_2025_11_25, ProtocolVersions.MCP_2026_07_28); private McpHttpClientTransportAuthorizationErrorHandler authorizationErrorHandler = McpHttpClientTransportAuthorizationErrorHandler.NOOP; diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java b/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java index 63e149ac9..db1c3e67b 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java @@ -981,7 +981,7 @@ public void close() { @Override public List protocolVersions() { return List.of(ProtocolVersions.MCP_2025_03_26, ProtocolVersions.MCP_2025_06_18, - ProtocolVersions.MCP_2025_11_25); + ProtocolVersions.MCP_2025_11_25, ProtocolVersions.MCP_2026_07_28); } public static Builder builder() { diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpServerTransportProviderBase.java b/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpServerTransportProviderBase.java index fa1ee055f..475f27c08 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpServerTransportProviderBase.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpServerTransportProviderBase.java @@ -83,7 +83,7 @@ default void close() { */ default List protocolVersions() { return List.of(ProtocolVersions.MCP_2024_11_05, ProtocolVersions.MCP_2025_03_26, - ProtocolVersions.MCP_2025_06_18, ProtocolVersions.MCP_2025_11_25); + ProtocolVersions.MCP_2025_06_18, ProtocolVersions.MCP_2025_11_25, ProtocolVersions.MCP_2026_07_28); } } diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpStatelessServerTransport.java b/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpStatelessServerTransport.java index ee28f5ff8..33277429c 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpStatelessServerTransport.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpStatelessServerTransport.java @@ -30,7 +30,7 @@ default void close() { default List protocolVersions() { return List.of(ProtocolVersions.MCP_2025_03_26, ProtocolVersions.MCP_2025_06_18, - ProtocolVersions.MCP_2025_11_25); + ProtocolVersions.MCP_2025_11_25, ProtocolVersions.MCP_2026_07_28); } } diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpTransport.java b/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpTransport.java index ab5fa3354..37fe4e840 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpTransport.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/spec/McpTransport.java @@ -102,7 +102,7 @@ static boolean isPeerClosed(Throwable t) { default List protocolVersions() { return List.of(ProtocolVersions.MCP_2024_11_05, ProtocolVersions.MCP_2025_03_26, - ProtocolVersions.MCP_2025_06_18, ProtocolVersions.MCP_2025_11_25); + ProtocolVersions.MCP_2025_06_18, ProtocolVersions.MCP_2025_11_25, ProtocolVersions.MCP_2026_07_28); } } diff --git a/mcp-core/src/main/java/io/modelcontextprotocol/spec/ProtocolVersions.java b/mcp-core/src/main/java/io/modelcontextprotocol/spec/ProtocolVersions.java index d3d34db62..591781c7f 100644 --- a/mcp-core/src/main/java/io/modelcontextprotocol/spec/ProtocolVersions.java +++ b/mcp-core/src/main/java/io/modelcontextprotocol/spec/ProtocolVersions.java @@ -26,4 +26,10 @@ public interface ProtocolVersions { */ String MCP_2025_11_25 = "2025-11-25"; + /** + * MCP protocol version for 2026-07-28. + * https://modelcontextprotocol.io/specification/2026-07-28 + */ + String MCP_2026_07_28 = "2026-07-28"; + } diff --git a/mcp-test/src/test/java/io/modelcontextprotocol/common/HttpClientStreamableHttpVersionNegotiationIntegrationTests.java b/mcp-test/src/test/java/io/modelcontextprotocol/common/HttpClientStreamableHttpVersionNegotiationIntegrationTests.java index 28432316c..0a43ee146 100644 --- a/mcp-test/src/test/java/io/modelcontextprotocol/common/HttpClientStreamableHttpVersionNegotiationIntegrationTests.java +++ b/mcp-test/src/test/java/io/modelcontextprotocol/common/HttpClientStreamableHttpVersionNegotiationIntegrationTests.java @@ -106,14 +106,14 @@ void usesLatestVersion() { .hasSize(3) .map(McpTestRequestRecordingServletFilter.Call::headers) .allSatisfy(headers -> assertThat(headers).containsEntry("mcp-protocol-version", - ProtocolVersions.MCP_2025_11_25)); + ProtocolVersions.MCP_2026_07_28)); assertThat(response).isNotNull(); assertThat(response.content()).hasSize(1) .first() .extracting(McpSchema.TextContent.class::cast) .extracting(McpSchema.TextContent::text) - .isEqualTo(ProtocolVersions.MCP_2025_11_25); + .isEqualTo(ProtocolVersions.MCP_2026_07_28); } } @@ -121,7 +121,7 @@ void usesLatestVersion() { @Test void usesServerSupportedVersion() { var transport = HttpClientStreamableHttpTransport.builder("http://localhost:" + PORT) - .supportedProtocolVersions(List.of(ProtocolVersions.MCP_2025_11_25, "2263-03-18")) + .supportedProtocolVersions(List.of(ProtocolVersions.MCP_2026_07_28, "2263-03-18")) .build(); try (var client = McpClient.sync(transport).build()) { client.initialize(); @@ -137,14 +137,14 @@ void usesServerSupportedVersion() { .hasSize(2) .map(McpTestRequestRecordingServletFilter.Call::headers) .allSatisfy(headers -> assertThat(headers).containsEntry("mcp-protocol-version", - ProtocolVersions.MCP_2025_11_25)); + ProtocolVersions.MCP_2026_07_28)); assertThat(response).isNotNull(); assertThat(response.content()).hasSize(1) .first() .extracting(McpSchema.TextContent.class::cast) .extracting(McpSchema.TextContent::text) - .isEqualTo(ProtocolVersions.MCP_2025_11_25); + .isEqualTo(ProtocolVersions.MCP_2026_07_28); } } @@ -155,7 +155,7 @@ void clientDoesNotSupportProtocolVersion20241105ByDefault() { // Testing it on the wire would require building a custom transport // We trust the protocolVersions() accessor instead assertThat(transport.protocolVersions()).containsExactly(ProtocolVersions.MCP_2025_03_26, - ProtocolVersions.MCP_2025_06_18, ProtocolVersions.MCP_2025_11_25); + ProtocolVersions.MCP_2025_06_18, ProtocolVersions.MCP_2025_11_25, ProtocolVersions.MCP_2026_07_28); } @Test diff --git a/mcp-test/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java b/mcp-test/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java index 3385b3a6e..b36f0e530 100644 --- a/mcp-test/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java +++ b/mcp-test/src/test/java/io/modelcontextprotocol/server/McpServerProtocolVersionTests.java @@ -41,7 +41,7 @@ void shouldUseLatestVersionByDefault() { String requestId = UUID.randomUUID().toString(); - transportProvider.simulateIncomingMessage(jsonRpcInitializeRequest(requestId, ProtocolVersions.MCP_2025_11_25)); + transportProvider.simulateIncomingMessage(jsonRpcInitializeRequest(requestId, ProtocolVersions.MCP_2026_07_28)); McpSchema.JSONRPCMessage response = serverTransport.getLastSentMessage(); assertThat(response).isInstanceOf(McpSchema.JSONRPCResponse.class);