Skip to content

Commit 3455173

Browse files
committed
fix(server): ConfigurableMcpHttpSseServer does not start properly
1 parent 21d6744 commit 3455173

File tree

3 files changed

+36
-14
lines changed

3 files changed

+36
-14
lines changed

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/AbstractConfigurableMcpServerFactory.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,9 @@
33
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerCapabilities;
44
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerChangeNotification;
55
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerConfiguration;
6-
import io.modelcontextprotocol.server.McpAsyncServer;
7-
import io.modelcontextprotocol.server.McpServer;
86
import io.modelcontextprotocol.spec.McpSchema;
97
import io.modelcontextprotocol.spec.McpServerTransportProvider;
108

11-
import java.time.Duration;
12-
139
public abstract class AbstractConfigurableMcpServerFactory<T extends McpServerTransportProvider> implements ConfigurableMcpServerFactory<T> {
1410

1511
protected final McpServerConfiguration configuration;
@@ -18,16 +14,6 @@ protected AbstractConfigurableMcpServerFactory(McpServerConfiguration configurat
1814
this.configuration = configuration;
1915
}
2016

21-
@Override
22-
public McpAsyncServer create() {
23-
return McpServer.async(transportProvider())
24-
.serverInfo(configuration.name(), configuration.version())
25-
.capabilities(serverCapabilities())
26-
.instructions(configuration.instructions())
27-
.requestTimeout(Duration.ofMillis(configuration.requestTimeout()))
28-
.build();
29-
}
30-
3117
@Override
3218
public McpSchema.ServerCapabilities serverCapabilities() {
3319
McpSchema.ServerCapabilities.Builder capabilities = McpSchema.ServerCapabilities.builder();

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/ConfigurableMcpHttpSseServerFactory.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
package com.github.codeboyzhou.mcp.declarative.server.factory;
22

3+
import com.github.codeboyzhou.mcp.declarative.common.NamedThreadFactory;
34
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerConfiguration;
45
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerSSE;
6+
import com.github.codeboyzhou.mcp.declarative.server.McpHttpServer;
57
import com.github.codeboyzhou.mcp.declarative.util.JsonHelper;
8+
import io.modelcontextprotocol.server.McpAsyncServer;
9+
import io.modelcontextprotocol.server.McpServer;
610
import io.modelcontextprotocol.server.transport.HttpServletSseServerTransportProvider;
711

12+
import java.time.Duration;
13+
import java.util.concurrent.Executors;
14+
815
public class ConfigurableMcpHttpSseServerFactory extends AbstractConfigurableMcpServerFactory<HttpServletSseServerTransportProvider> {
916

1017
public ConfigurableMcpHttpSseServerFactory(McpServerConfiguration configuration) {
@@ -20,4 +27,19 @@ public HttpServletSseServerTransportProvider transportProvider() {
2027
return new HttpServletSseServerTransportProvider(JsonHelper.MAPPER, baseUrl, messageEndpoint, sseEndpoint);
2128
}
2229

30+
@Override
31+
public McpAsyncServer create() {
32+
HttpServletSseServerTransportProvider transportProvider = transportProvider();
33+
McpAsyncServer server = McpServer.async(transportProvider)
34+
.serverInfo(configuration.name(), configuration.version())
35+
.capabilities(serverCapabilities())
36+
.instructions(configuration.instructions())
37+
.requestTimeout(Duration.ofMillis(configuration.requestTimeout()))
38+
.build();
39+
McpHttpServer httpServer = new McpHttpServer(transportProvider, configuration.sse().port());
40+
NamedThreadFactory threadFactory = new NamedThreadFactory(McpHttpServer.class.getSimpleName());
41+
Executors.newSingleThreadExecutor(threadFactory).execute(httpServer::start);
42+
return server;
43+
}
44+
2345
}

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/ConfigurableMcpStdioServerFactory.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.github.codeboyzhou.mcp.declarative.server.factory;
22

33
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerConfiguration;
4+
import io.modelcontextprotocol.server.McpAsyncServer;
5+
import io.modelcontextprotocol.server.McpServer;
46
import io.modelcontextprotocol.server.transport.StdioServerTransportProvider;
57
import io.modelcontextprotocol.spec.McpServerTransportProvider;
68

9+
import java.time.Duration;
10+
711
public class ConfigurableMcpStdioServerFactory extends AbstractConfigurableMcpServerFactory<McpServerTransportProvider> {
812

913
public ConfigurableMcpStdioServerFactory(McpServerConfiguration configuration) {
@@ -15,4 +19,14 @@ public McpServerTransportProvider transportProvider() {
1519
return new StdioServerTransportProvider();
1620
}
1721

22+
@Override
23+
public McpAsyncServer create() {
24+
return McpServer.async(transportProvider())
25+
.serverInfo(configuration.name(), configuration.version())
26+
.capabilities(serverCapabilities())
27+
.instructions(configuration.instructions())
28+
.requestTimeout(Duration.ofMillis(configuration.requestTimeout()))
29+
.build();
30+
}
31+
1832
}

0 commit comments

Comments
 (0)