Skip to content

Commit f5737f3

Browse files
committed
compute mcp url automatically
1 parent 33a55c9 commit f5737f3

2 files changed

Lines changed: 15 additions & 4 deletions

File tree

springdoc-openapi-starter-common-mcp/src/main/java/org/springdoc/ai/configuration/SpringDocAiAutoConfiguration.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import org.springframework.context.annotation.Bean;
5454
import org.springframework.context.annotation.Configuration;
5555
import org.springframework.context.annotation.Lazy;
56+
import org.springframework.core.env.Environment;
5657

5758
import static org.springdoc.ai.properties.SpringDocAiProperties.SPRINGDOC_MCP_ENABLED;
5859

@@ -96,15 +97,16 @@ McpCommunityToolAuditAspect mcpCommunityToolAuditAspect() {
9697
* @param springDocConfigProperties the springdoc config properties
9798
* @param aiProperties the AI properties
9899
* @param mcpToolCustomizers the MCP tool customizers
100+
* @param environment the Spring environment
99101
* @return the tool callback provider
100102
*/
101103
@Bean
102104
@ConditionalOnMissingBean
103105
OpenApiMcpToolCallbackProvider openApiMcpToolCallbackProvider(OpenAPIService openAPIService,
104106
SpringDocConfigProperties springDocConfigProperties, SpringDocAiProperties aiProperties,
105-
Optional<List<McpToolCustomizer>> mcpToolCustomizers) {
107+
Optional<List<McpToolCustomizer>> mcpToolCustomizers, Environment environment) {
106108
return new OpenApiMcpToolCallbackProvider(openAPIService, springDocConfigProperties, aiProperties,
107-
mcpToolCustomizers);
109+
mcpToolCustomizers, environment);
108110
}
109111

110112
/**

springdoc-openapi-starter-common-mcp/src/main/java/org/springdoc/ai/mcp/OpenApiMcpToolCallbackProvider.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444

4545
import org.springframework.ai.tool.ToolCallback;
4646
import org.springframework.ai.tool.ToolCallbackProvider;
47+
import org.springframework.core.env.Environment;
4748

4849
/**
4950
* A {@link ToolCallbackProvider} that bridges springdoc-openapi with Spring AI. It
@@ -86,6 +87,11 @@ public class OpenApiMcpToolCallbackProvider implements ToolCallbackProvider {
8687
*/
8788
private final Optional<List<McpToolCustomizer>> mcpToolCustomizers;
8889

90+
/**
91+
* The Spring environment for resolving server port.
92+
*/
93+
private final Environment environment;
94+
8995
/**
9096
* Cached tool callbacks, built lazily from the OpenAPI specification.
9197
*/
@@ -97,14 +103,16 @@ public class OpenApiMcpToolCallbackProvider implements ToolCallbackProvider {
97103
* @param springDocConfigProperties the springdoc config properties
98104
* @param aiProperties the AI properties
99105
* @param mcpToolCustomizers the MCP tool customizers
106+
* @param environment the Spring environment
100107
*/
101108
public OpenApiMcpToolCallbackProvider(OpenAPIService openAPIService,
102109
SpringDocConfigProperties springDocConfigProperties, SpringDocAiProperties aiProperties,
103-
Optional<List<McpToolCustomizer>> mcpToolCustomizers) {
110+
Optional<List<McpToolCustomizer>> mcpToolCustomizers, Environment environment) {
104111
this.openAPIService = openAPIService;
105112
this.springDocConfigProperties = springDocConfigProperties;
106113
this.aiProperties = aiProperties;
107114
this.mcpToolCustomizers = mcpToolCustomizers;
115+
this.environment = environment;
108116
}
109117

110118
@Override
@@ -187,7 +195,8 @@ private String resolveBaseUrl() {
187195
if (aiProperties.getBaseUrl() != null && !aiProperties.getBaseUrl().isEmpty()) {
188196
return aiProperties.getBaseUrl();
189197
}
190-
return "http://localhost:8080";
198+
String port = environment.getProperty("server.port", "8080");
199+
return "http://localhost:" + port;
191200
}
192201

193202
}

0 commit comments

Comments
 (0)