From bb97feb5d8f039258d439d308836273128ca92e5 Mon Sep 17 00:00:00 2001 From: lambochen Date: Fri, 25 Apr 2025 22:54:16 +0800 Subject: [PATCH 1/2] mcp server: support auth provider by request params Signed-off-by: lambochen --- .../McpWebFluxServerAutoConfiguration.java | 10 +++++++++- .../McpWebMvcServerAutoConfiguration.java | 9 +++++++-- pom.xml | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebFluxServerAutoConfiguration.java b/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebFluxServerAutoConfiguration.java index 563fafe9e18..5f9d08e0582 100644 --- a/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebFluxServerAutoConfiguration.java +++ b/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebFluxServerAutoConfiguration.java @@ -17,6 +17,7 @@ package org.springframework.ai.mcp.server.autoconfigure; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.server.McpServerAuthProvider; import io.modelcontextprotocol.server.transport.WebFluxSseServerTransportProvider; import io.modelcontextprotocol.spec.McpServerTransportProvider; @@ -75,9 +76,16 @@ public class McpWebFluxServerAutoConfiguration { @Bean @ConditionalOnMissingBean public WebFluxSseServerTransportProvider webFluxTransport(ObjectProvider objectMapperProvider, + ObjectProvider mcpServerAuthProviderObjectProvider, McpServerProperties serverProperties) { ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new); - return new WebFluxSseServerTransportProvider(objectMapper, serverProperties.getSseMessageEndpoint()); + McpServerAuthProvider authProvider = mcpServerAuthProviderObjectProvider.getIfAvailable(() -> null); + return WebFluxSseServerTransportProvider.builder() + .sseEndpoint(serverProperties.getSseEndpoint()) + .messageEndpoint(serverProperties.getSseMessageEndpoint()) + .objectMapper(objectMapper) + .authProvider(authProvider) + .build(); } // Router function for SSE transport used by Spring WebFlux to start an HTTP server. diff --git a/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebMvcServerAutoConfiguration.java b/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebMvcServerAutoConfiguration.java index 259fc3b37a2..608793606f1 100644 --- a/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebMvcServerAutoConfiguration.java +++ b/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebMvcServerAutoConfiguration.java @@ -17,6 +17,7 @@ package org.springframework.ai.mcp.server.autoconfigure; import com.fasterxml.jackson.databind.ObjectMapper; +import io.modelcontextprotocol.server.McpServerAuthProvider; import io.modelcontextprotocol.server.transport.WebMvcSseServerTransportProvider; import io.modelcontextprotocol.spec.McpServerTransportProvider; @@ -70,9 +71,13 @@ public class McpWebMvcServerAutoConfiguration { @Bean @ConditionalOnMissingBean public WebMvcSseServerTransportProvider webMvcSseServerTransportProvider( - ObjectProvider objectMapperProvider, McpServerProperties serverProperties) { + ObjectProvider objectMapperProvider, + ObjectProvider mcpServerAuthProviderObjectProvider, + McpServerProperties serverProperties) { ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new); - return new WebMvcSseServerTransportProvider(objectMapper, serverProperties.getSseMessageEndpoint()); + McpServerAuthProvider authProvider = mcpServerAuthProviderObjectProvider.getIfAvailable(() -> null); + return new WebMvcSseServerTransportProvider(objectMapper, serverProperties.getSseMessageEndpoint(), + serverProperties.getSseMessageEndpoint(), serverProperties.getSseEndpoint(), authProvider); } @Bean diff --git a/pom.xml b/pom.xml index b80480f88d7..bfcc7d92828 100644 --- a/pom.xml +++ b/pom.xml @@ -313,7 +313,7 @@ 4.12.0 - 0.9.0 + 0.10.0-SNAPSHOT 4.13.1 From cd8715330ae8d32f8da871f2020c116af5c231c1 Mon Sep 17 00:00:00 2001 From: lambochen Date: Fri, 25 Apr 2025 23:09:13 +0800 Subject: [PATCH 2/2] related class for mcp server Signed-off-by: lambochen --- .../server/autoconfigure/McpWebFluxServerAutoConfiguration.java | 2 ++ .../server/autoconfigure/McpWebMvcServerAutoConfiguration.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebFluxServerAutoConfiguration.java b/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebFluxServerAutoConfiguration.java index 5f9d08e0582..2dde2bba6d0 100644 --- a/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebFluxServerAutoConfiguration.java +++ b/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebFluxServerAutoConfiguration.java @@ -62,9 +62,11 @@ * } * * @author Christian Tzolov + * @author lambochen * @since 1.0.0 * @see McpServerProperties * @see WebFluxSseServerTransportProvider + * @see McpServerAuthProvider */ @AutoConfiguration @ConditionalOnClass({ WebFluxSseServerTransportProvider.class }) diff --git a/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebMvcServerAutoConfiguration.java b/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebMvcServerAutoConfiguration.java index 608793606f1..83fb6d22c42 100644 --- a/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebMvcServerAutoConfiguration.java +++ b/auto-configurations/mcp/spring-ai-autoconfigure-mcp-server/src/main/java/org/springframework/ai/mcp/server/autoconfigure/McpWebMvcServerAutoConfiguration.java @@ -57,9 +57,11 @@ * } * * @author Christian Tzolov + * @author lambochen * @since 1.0.0 * @see McpServerProperties * @see WebMvcSseServerTransportProvider + * @see McpServerAuthProvider */ @AutoConfiguration @ConditionalOnClass({ WebMvcSseServerTransportProvider.class })