Skip to content

Commit 1cde186

Browse files
committed
修复发现注册到 nacos 上的 mcp server 时, 无法正确发现 https 协议的 mcp server 的问题
1 parent 1c5ba79 commit 1cde186

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

spring-ai-alibaba-mcp/spring-ai-alibaba-mcp-registry/src/main/java/com/alibaba/cloud/ai/mcp/discovery/client/transport/LoadbalancedMcpAsyncClient.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,16 @@ private void updateAll(NacosMcpServerEndpoint newServerEndpoint) {
355355
private McpAsyncClient clientByEndpoint(McpEndpointInfo mcpEndpointInfo, String exportPath) {
356356
McpAsyncClient asyncClient;
357357

358-
String baseUrl = "http://" + mcpEndpointInfo.getAddress() + ":" + mcpEndpointInfo.getPort();
358+
String protocol = mcpEndpointInfo.getProtocol();
359+
if (protocol == null || !"http".equals(protocol) && !"https".equals(protocol)) {
360+
if (mcpEndpointInfo.getPort() == 443) {
361+
protocol = "https";
362+
}
363+
else {
364+
protocol = "http";
365+
}
366+
}
367+
String baseUrl = protocol + "://" + mcpEndpointInfo.getAddress() + ":" + mcpEndpointInfo.getPort();
359368
WebClient.Builder webClientBuilder = webClientBuilderTemplate.clone().baseUrl(baseUrl);
360369

361370
WebFluxSseClientTransport transport;

spring-ai-alibaba-mcp/spring-ai-alibaba-mcp-registry/src/main/java/com/alibaba/cloud/ai/mcp/discovery/client/transport/LoadbalancedMcpSyncClient.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,16 @@ public void setLoggingLevel(McpSchema.LoggingLevel loggingLevel) {
294294

295295
private McpSyncClient clientByEndpoint(McpEndpointInfo mcpEndpointInfo, String exportPath) {
296296
McpSyncClient syncClient;
297-
String baseUrl = "http://" + mcpEndpointInfo.getAddress() + ":" + mcpEndpointInfo.getPort();
297+
String protocol = mcpEndpointInfo.getProtocol();
298+
if (protocol == null || !"http".equals(protocol) && !"https".equals(protocol)) {
299+
if (mcpEndpointInfo.getPort() == 443) {
300+
protocol = "https";
301+
}
302+
else {
303+
protocol = "http";
304+
}
305+
}
306+
String baseUrl = protocol + "://" + mcpEndpointInfo.getAddress() + ":" + mcpEndpointInfo.getPort();
298307
WebClient.Builder webClientBuilder = webClientBuilderTemplate.clone().baseUrl(baseUrl);
299308

300309
// Using the build method with link tracking

0 commit comments

Comments
 (0)