Skip to content

Commit 5a50763

Browse files
committed
Merge the main branch and resolve conflicts
Signed-off-by: Ahoo Wang <[email protected]>
1 parent 9b0ac0c commit 5a50763

File tree

4 files changed

+21
-15
lines changed

4 files changed

+21
-15
lines changed

auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebFluxServerAutoConfiguration.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.modelcontextprotocol.server.transport.WebFluxSseServerTransportProvider;
2121
import io.modelcontextprotocol.spec.McpServerTransportProvider;
2222

23+
import org.springframework.beans.factory.ObjectProvider;
2324
import org.springframework.boot.autoconfigure.AutoConfiguration;
2425
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2526
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -60,9 +61,9 @@
6061
* }</pre>
6162
*
6263
* @author Christian Tzolov
63-
* @since 1.0.0
6464
* @see McpServerProperties
6565
* @see WebFluxSseServerTransportProvider
66+
* @since 1.0.0
6667
*/
6768
@AutoConfiguration
6869
@ConditionalOnClass({ WebFluxSseServerTransportProvider.class })
@@ -73,8 +74,10 @@ public class McpWebFluxServerAutoConfiguration {
7374

7475
@Bean
7576
@ConditionalOnMissingBean
76-
public WebFluxSseServerTransportProvider webFluxTransport(McpServerProperties serverProperties) {
77-
return new WebFluxSseServerTransportProvider(new ObjectMapper(), serverProperties.getSseMessageEndpoint());
77+
public WebFluxSseServerTransportProvider webFluxTransport(ObjectProvider<ObjectMapper> objectMapperProvider,
78+
McpServerProperties serverProperties) {
79+
ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new);
80+
return new WebFluxSseServerTransportProvider(objectMapper, serverProperties.getSseMessageEndpoint());
7881
}
7982

8083
// Router function for SSE transport used by Spring WebFlux to start an HTTP server.

auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebMvcServerAutoConfiguration.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.modelcontextprotocol.server.transport.WebMvcSseServerTransportProvider;
2121
import io.modelcontextprotocol.spec.McpServerTransportProvider;
2222

23+
import org.springframework.beans.factory.ObjectProvider;
2324
import org.springframework.boot.autoconfigure.AutoConfiguration;
2425
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2526
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -68,8 +69,9 @@ public class McpWebMvcServerAutoConfiguration {
6869

6970
@Bean
7071
@ConditionalOnMissingBean
71-
public WebMvcSseServerTransportProvider webMvcSseServerTransportProvider(ObjectMapper objectMapper,
72-
McpServerProperties serverProperties) {
72+
public WebMvcSseServerTransportProvider webMvcSseServerTransportProvider(
73+
ObjectProvider<ObjectMapper> objectMapperProvider, McpServerProperties serverProperties) {
74+
ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new);
7375
return new WebMvcSseServerTransportProvider(objectMapper, serverProperties.getSseMessageEndpoint());
7476
}
7577

auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/test/java/org/springframework/ai/mcp/server/autoconfigure/McpWebFluxServerAutoConfigurationIT.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package org.springframework.ai.autoconfigure.mcp.server;
1+
package org.springframework.ai.mcp.server.autoconfigure;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import io.modelcontextprotocol.server.transport.WebFluxSseServerTransport;
5+
import io.modelcontextprotocol.server.transport.WebFluxSseServerTransportProvider;
56
import org.junit.jupiter.api.Test;
67
import org.springframework.boot.autoconfigure.AutoConfigurations;
78
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
@@ -17,23 +18,23 @@ class McpWebFluxServerAutoConfigurationIT {
1718
@Test
1819
void defaultConfiguration() {
1920
this.contextRunner.run(context -> {
20-
assertThat(context).hasSingleBean(WebFluxSseServerTransport.class);
21+
assertThat(context).hasSingleBean(WebFluxSseServerTransportProvider.class);
2122
assertThat(context).hasSingleBean(RouterFunction.class);
2223
});
2324
}
2425

2526
@Test
2627
void objectMapperConfiguration() {
2728
this.contextRunner.withBean(ObjectMapper.class, ObjectMapper::new).run(context -> {
28-
assertThat(context).hasSingleBean(WebFluxSseServerTransport.class);
29+
assertThat(context).hasSingleBean(WebFluxSseServerTransportProvider.class);
2930
assertThat(context).hasSingleBean(RouterFunction.class);
3031
});
3132
}
3233

3334
@Test
3435
void stdioEnabledConfiguration() {
3536
this.contextRunner.withPropertyValues("spring.ai.mcp.server.stdio=true").run(context -> {
36-
assertThat(context).doesNotHaveBean(WebFluxSseServerTransport.class);
37+
assertThat(context).doesNotHaveBean(WebFluxSseServerTransportProvider.class);
3738
});
3839
}
3940

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
1-
package org.springframework.ai.autoconfigure.mcp.server;
1+
package org.springframework.ai.mcp.server.autoconfigure;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import io.modelcontextprotocol.server.transport.WebMvcSseServerTransport;
4+
import io.modelcontextprotocol.server.transport.WebMvcSseServerTransportProvider;
55
import org.junit.jupiter.api.Test;
66
import org.springframework.boot.autoconfigure.AutoConfigurations;
77
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
88
import org.springframework.web.servlet.function.RouterFunction;
99
import static org.assertj.core.api.Assertions.assertThat;
1010

11-
class McpWebMvcServerAutoConfigurationTest {
11+
class McpWebMvcServerAutoConfigurationIT {
1212

1313
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration(
1414
AutoConfigurations.of(McpWebMvcServerAutoConfiguration.class, McpServerAutoConfiguration.class));
1515

1616
@Test
1717
void defaultConfiguration() {
1818
this.contextRunner.run(context -> {
19-
assertThat(context).hasSingleBean(WebMvcSseServerTransport.class);
19+
assertThat(context).hasSingleBean(WebMvcSseServerTransportProvider.class);
2020
assertThat(context).hasSingleBean(RouterFunction.class);
2121
});
2222
}
2323

2424
@Test
2525
void objectMapperConfiguration() {
2626
this.contextRunner.withBean(ObjectMapper.class, ObjectMapper::new).run(context -> {
27-
assertThat(context).hasSingleBean(WebMvcSseServerTransport.class);
27+
assertThat(context).hasSingleBean(WebMvcSseServerTransportProvider.class);
2828
assertThat(context).hasSingleBean(RouterFunction.class);
2929
});
3030
}
3131

3232
@Test
3333
void stdioEnabledConfiguration() {
3434
this.contextRunner.withPropertyValues("spring.ai.mcp.server.stdio=true").run(context -> {
35-
assertThat(context).doesNotHaveBean(WebMvcSseServerTransport.class);
35+
assertThat(context).doesNotHaveBean(WebMvcSseServerTransportProvider.class);
3636
});
3737
}
3838

0 commit comments

Comments
 (0)