Skip to content

Commit 477fbd6

Browse files
committed
Move McpTransportContext to common package, make impl immutable
Signed-off-by: Daniel Garnier-Moiroux <[email protected]>
1 parent 91bf8d6 commit 477fbd6

File tree

47 files changed

+74
-61
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+74
-61
lines changed

mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxSseServerTransportProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
import com.fasterxml.jackson.core.type.TypeReference;
1313
import com.fasterxml.jackson.databind.ObjectMapper;
1414

15-
import io.modelcontextprotocol.server.DefaultMcpTransportContext;
16-
import io.modelcontextprotocol.server.McpTransportContext;
15+
import io.modelcontextprotocol.common.McpTransportContext;
1716
import io.modelcontextprotocol.server.McpTransportContextExtractor;
1817
import io.modelcontextprotocol.spec.McpError;
1918
import io.modelcontextprotocol.spec.McpSchema;
@@ -201,7 +200,7 @@ public WebFluxSseServerTransportProvider(ObjectMapper objectMapper, String baseU
201200
public WebFluxSseServerTransportProvider(ObjectMapper objectMapper, String baseUrl, String messageEndpoint,
202201
String sseEndpoint, Duration keepAliveInterval) {
203202
this(objectMapper, baseUrl, messageEndpoint, sseEndpoint, keepAliveInterval,
204-
(serverRequest, context) -> context);
203+
(serverRequest) -> McpTransportContext.EMPTY);
205204
}
206205

207206
/**
@@ -491,7 +490,8 @@ public static class Builder {
491490

492491
private Duration keepAliveInterval;
493492

494-
private McpTransportContextExtractor<ServerRequest> contextExtractor = (serverRequest, context) -> context;
493+
private McpTransportContextExtractor<ServerRequest> contextExtractor = (
494+
serverRequest) -> McpTransportContext.EMPTY;
495495

496496
/**
497497
* Sets the ObjectMapper to use for JSON serialization/deserialization of MCP

mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxStatelessServerTransport.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
package io.modelcontextprotocol.server.transport;
66

77
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import io.modelcontextprotocol.common.McpTransportContext;
89
import io.modelcontextprotocol.server.McpStatelessServerHandler;
9-
import io.modelcontextprotocol.server.DefaultMcpTransportContext;
1010
import io.modelcontextprotocol.server.McpTransportContextExtractor;
1111
import io.modelcontextprotocol.spec.McpError;
1212
import io.modelcontextprotocol.spec.McpSchema;
1313
import io.modelcontextprotocol.spec.McpStatelessServerTransport;
14-
import io.modelcontextprotocol.server.McpTransportContext;
1514
import io.modelcontextprotocol.util.Assert;
1615
import org.slf4j.Logger;
1716
import org.slf4j.LoggerFactory;
@@ -151,7 +150,8 @@ public static class Builder {
151150

152151
private String mcpEndpoint = "/mcp";
153152

154-
private McpTransportContextExtractor<ServerRequest> contextExtractor = (serverRequest, context) -> context;
153+
private McpTransportContextExtractor<ServerRequest> contextExtractor = (
154+
serverRequest) -> McpTransportContext.EMPTY;
155155

156156
private Builder() {
157157
// used by a static method

mcp-spring/mcp-spring-webflux/src/main/java/io/modelcontextprotocol/server/transport/WebFluxStreamableServerTransportProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import com.fasterxml.jackson.core.type.TypeReference;
88
import com.fasterxml.jackson.databind.ObjectMapper;
9-
import io.modelcontextprotocol.server.DefaultMcpTransportContext;
9+
import io.modelcontextprotocol.common.McpTransportContext;
1010
import io.modelcontextprotocol.server.McpTransportContextExtractor;
1111
import io.modelcontextprotocol.spec.HttpHeaders;
1212
import io.modelcontextprotocol.spec.McpError;
@@ -15,7 +15,6 @@
1515
import io.modelcontextprotocol.spec.McpStreamableServerTransport;
1616
import io.modelcontextprotocol.spec.McpStreamableServerTransportProvider;
1717
import io.modelcontextprotocol.spec.ProtocolVersions;
18-
import io.modelcontextprotocol.server.McpTransportContext;
1918
import io.modelcontextprotocol.util.Assert;
2019
import io.modelcontextprotocol.util.KeepAliveScheduler;
2120

@@ -402,7 +401,8 @@ public static class Builder {
402401

403402
private String mcpEndpoint = "/mcp";
404403

405-
private McpTransportContextExtractor<ServerRequest> contextExtractor = (serverRequest, context) -> context;
404+
private McpTransportContextExtractor<ServerRequest> contextExtractor = (
405+
serverRequest) -> McpTransportContext.EMPTY;
406406

407407
private boolean disallowDelete;
408408

mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/WebFluxSseIntegrationTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package io.modelcontextprotocol;
66

77
import java.time.Duration;
8+
import java.util.Map;
89

910
import org.junit.jupiter.api.AfterEach;
1011
import org.junit.jupiter.api.BeforeEach;
@@ -20,6 +21,7 @@
2021
import io.modelcontextprotocol.client.McpClient;
2122
import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport;
2223
import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport;
24+
import io.modelcontextprotocol.common.McpTransportContext;
2325
import io.modelcontextprotocol.server.McpServer;
2426
import io.modelcontextprotocol.server.McpServer.AsyncSpecification;
2527
import io.modelcontextprotocol.server.McpServer.SingleSessionSyncSpecification;
@@ -42,10 +44,8 @@ class WebFluxSseIntegrationTests extends AbstractMcpClientServerIntegrationTests
4244

4345
private WebFluxSseServerTransportProvider mcpServerTransportProvider;
4446

45-
static McpTransportContextExtractor<ServerRequest> TEST_CONTEXT_EXTRACTOR = (r, tc) -> {
46-
tc.put("important", "value");
47-
return tc;
48-
};
47+
static McpTransportContextExtractor<ServerRequest> TEST_CONTEXT_EXTRACTOR = (r) -> McpTransportContext
48+
.create(Map.of("important", "value"));
4949

5050
@Override
5151
protected void prepareClients(int port, String mcpEndpoint) {

mcp-spring/mcp-spring-webflux/src/test/java/io/modelcontextprotocol/WebFluxStreamableIntegrationTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package io.modelcontextprotocol;
66

77
import java.time.Duration;
8+
import java.util.Map;
89

910
import org.junit.jupiter.api.AfterEach;
1011
import org.junit.jupiter.api.BeforeEach;
@@ -20,6 +21,7 @@
2021
import io.modelcontextprotocol.client.McpClient;
2122
import io.modelcontextprotocol.client.transport.HttpClientStreamableHttpTransport;
2223
import io.modelcontextprotocol.client.transport.WebClientStreamableHttpTransport;
24+
import io.modelcontextprotocol.common.McpTransportContext;
2325
import io.modelcontextprotocol.server.McpServer;
2426
import io.modelcontextprotocol.server.McpServer.AsyncSpecification;
2527
import io.modelcontextprotocol.server.McpServer.SyncSpecification;
@@ -40,10 +42,8 @@ class WebFluxStreamableIntegrationTests extends AbstractMcpClientServerIntegrati
4042

4143
private WebFluxStreamableServerTransportProvider mcpStreamableServerTransportProvider;
4244

43-
static McpTransportContextExtractor<ServerRequest> TEST_CONTEXT_EXTRACTOR = (r, tc) -> {
44-
tc.put("important", "value");
45-
return tc;
46-
};
45+
static McpTransportContextExtractor<ServerRequest> TEST_CONTEXT_EXTRACTOR = (r) -> McpTransportContext
46+
.create(Map.of("important", "value"));
4747

4848
@Override
4949
protected void prepareClients(int port, String mcpEndpoint) {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
import com.fasterxml.jackson.core.type.TypeReference;
1515
import com.fasterxml.jackson.databind.ObjectMapper;
1616

17-
import io.modelcontextprotocol.server.DefaultMcpTransportContext;
18-
import io.modelcontextprotocol.server.McpTransportContext;
17+
import io.modelcontextprotocol.common.McpTransportContext;
1918
import io.modelcontextprotocol.server.McpTransportContextExtractor;
2019
import io.modelcontextprotocol.spec.McpError;
2120
import io.modelcontextprotocol.spec.McpSchema;
@@ -192,7 +191,7 @@ public WebMvcSseServerTransportProvider(ObjectMapper objectMapper, String baseUr
192191
public WebMvcSseServerTransportProvider(ObjectMapper objectMapper, String baseUrl, String messageEndpoint,
193192
String sseEndpoint, Duration keepAliveInterval) {
194193
this(objectMapper, baseUrl, messageEndpoint, sseEndpoint, keepAliveInterval,
195-
(serverRequest, context) -> context);
194+
(serverRequest) -> McpTransportContext.EMPTY);
196195
}
197196

198197
/**
@@ -552,7 +551,8 @@ public static class Builder {
552551

553552
private Duration keepAliveInterval;
554553

555-
private McpTransportContextExtractor<ServerRequest> contextExtractor = (serverRequest, context) -> context;
554+
private McpTransportContextExtractor<ServerRequest> contextExtractor = (
555+
serverRequest) -> McpTransportContext.EMPTY;
556556

557557
/**
558558
* Sets the JSON object mapper to use for message serialization/deserialization.

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
package io.modelcontextprotocol.server.transport;
66

77
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import io.modelcontextprotocol.common.McpTransportContext;
89
import io.modelcontextprotocol.server.McpStatelessServerHandler;
9-
import io.modelcontextprotocol.server.DefaultMcpTransportContext;
1010
import io.modelcontextprotocol.server.McpTransportContextExtractor;
1111
import io.modelcontextprotocol.spec.McpError;
1212
import io.modelcontextprotocol.spec.McpSchema;
1313
import io.modelcontextprotocol.spec.McpStatelessServerTransport;
14-
import io.modelcontextprotocol.server.McpTransportContext;
1514
import io.modelcontextprotocol.util.Assert;
1615
import org.slf4j.Logger;
1716
import org.slf4j.LoggerFactory;
@@ -176,7 +175,8 @@ public static class Builder {
176175

177176
private String mcpEndpoint = "/mcp";
178177

179-
private McpTransportContextExtractor<ServerRequest> contextExtractor = (serverRequest, context) -> context;
178+
private McpTransportContextExtractor<ServerRequest> contextExtractor = (
179+
serverRequest) -> McpTransportContext.EMPTY;
180180

181181
private Builder() {
182182
// used by a static method

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
@@ -23,8 +23,7 @@
2323
import com.fasterxml.jackson.core.type.TypeReference;
2424
import com.fasterxml.jackson.databind.ObjectMapper;
2525

26-
import io.modelcontextprotocol.server.DefaultMcpTransportContext;
27-
import io.modelcontextprotocol.server.McpTransportContext;
26+
import io.modelcontextprotocol.common.McpTransportContext;
2827
import io.modelcontextprotocol.server.McpTransportContextExtractor;
2928
import io.modelcontextprotocol.spec.HttpHeaders;
3029
import io.modelcontextprotocol.spec.McpError;
@@ -604,7 +603,8 @@ public static class Builder {
604603

605604
private boolean disallowDelete = false;
606605

607-
private McpTransportContextExtractor<ServerRequest> contextExtractor = (serverRequest, context) -> context;
606+
private McpTransportContextExtractor<ServerRequest> contextExtractor = (
607+
serverRequest) -> McpTransportContext.EMPTY;
608608

609609
private Duration keepAliveInterval;
610610

mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcSseIntegrationTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import static org.assertj.core.api.Assertions.assertThat;
77

88
import java.time.Duration;
9+
import java.util.Map;
910

1011
import org.apache.catalina.LifecycleException;
1112
import org.apache.catalina.LifecycleState;
@@ -26,6 +27,7 @@
2627
import io.modelcontextprotocol.client.McpClient;
2728
import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport;
2829
import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport;
30+
import io.modelcontextprotocol.common.McpTransportContext;
2931
import io.modelcontextprotocol.server.McpServer.AsyncSpecification;
3032
import io.modelcontextprotocol.server.McpServer.SingleSessionSyncSpecification;
3133
import io.modelcontextprotocol.server.transport.WebMvcSseServerTransportProvider;
@@ -40,10 +42,8 @@ class WebMvcSseIntegrationTests extends AbstractMcpClientServerIntegrationTests
4042

4143
private WebMvcSseServerTransportProvider mcpServerTransportProvider;
4244

43-
static McpTransportContextExtractor<ServerRequest> TEST_CONTEXT_EXTRACTOR = (r, tc) -> {
44-
tc.put("important", "value");
45-
return tc;
46-
};
45+
static McpTransportContextExtractor<ServerRequest> TEST_CONTEXT_EXTRACTOR = r -> McpTransportContext
46+
.create(Map.of("important", "value"));
4747

4848
@Override
4949
protected void prepareClients(int port, String mcpEndpoint) {

mcp-spring/mcp-spring-webmvc/src/test/java/io/modelcontextprotocol/server/WebMvcStreamableIntegrationTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import static org.assertj.core.api.Assertions.assertThat;
77

88
import java.time.Duration;
9+
import java.util.Map;
910

1011
import org.apache.catalina.LifecycleException;
1112
import org.apache.catalina.LifecycleState;
@@ -26,6 +27,7 @@
2627
import io.modelcontextprotocol.client.McpClient;
2728
import io.modelcontextprotocol.client.transport.HttpClientStreamableHttpTransport;
2829
import io.modelcontextprotocol.client.transport.WebClientStreamableHttpTransport;
30+
import io.modelcontextprotocol.common.McpTransportContext;
2931
import io.modelcontextprotocol.server.McpServer.AsyncSpecification;
3032
import io.modelcontextprotocol.server.McpServer.SyncSpecification;
3133
import io.modelcontextprotocol.server.transport.WebMvcStreamableServerTransportProvider;
@@ -40,10 +42,8 @@ class WebMvcStreamableIntegrationTests extends AbstractMcpClientServerIntegratio
4042

4143
private WebMvcStreamableServerTransportProvider mcpServerTransportProvider;
4244

43-
static McpTransportContextExtractor<ServerRequest> TEST_CONTEXT_EXTRACTOR = (r, tc) -> {
44-
tc.put("important", "value");
45-
return tc;
46-
};
45+
static McpTransportContextExtractor<ServerRequest> TEST_CONTEXT_EXTRACTOR = r -> McpTransportContext
46+
.create(Map.of("important", "value"));
4747

4848
@Configuration
4949
@EnableWebMvc

0 commit comments

Comments
 (0)