33import com .github .codeboyzhou .mcp .declarative .common .GuiceInjectorModule ;
44import com .github .codeboyzhou .mcp .declarative .configuration .McpServerConfiguration ;
55import com .github .codeboyzhou .mcp .declarative .configuration .YAMLConfigurationLoader ;
6- import com .github .codeboyzhou .mcp .declarative .enums .HttpMode ;
7- import com .github .codeboyzhou .mcp .declarative .server .McpHttpServer ;
6+ import com .github .codeboyzhou .mcp .declarative .enums .ServerMode ;
7+ import com .github .codeboyzhou .mcp .declarative .server .McpServerInfo ;
88import com .github .codeboyzhou .mcp .declarative .server .component .McpServerPromptFactory ;
99import com .github .codeboyzhou .mcp .declarative .server .component .McpServerResourceFactory ;
1010import com .github .codeboyzhou .mcp .declarative .server .component .McpServerToolFactory ;
11- import com .github .codeboyzhou .mcp .declarative .server .configurable .ConfigurableMcpHttpSseServerFactory ;
12- import com .github .codeboyzhou .mcp .declarative .server .configurable .ConfigurableMcpHttpStreamableServerFactory ;
13- import com .github .codeboyzhou .mcp .declarative .server .configurable .ConfigurableMcpServerFactory ;
14- import com .github .codeboyzhou .mcp .declarative .server .configurable .ConfigurableMcpStdioServerFactory ;
15- import com .github .codeboyzhou .mcp .declarative .server .simple .SimpleMcpHttpSseServerFactory ;
16- import com .github .codeboyzhou .mcp .declarative .server .simple .SimpleMcpHttpSseServerInfo ;
17- import com .github .codeboyzhou .mcp .declarative .server .simple .SimpleMcpHttpStreamableServerFactory ;
18- import com .github .codeboyzhou .mcp .declarative .server .simple .SimpleMcpHttpStreamableServerInfo ;
19- import com .github .codeboyzhou .mcp .declarative .server .simple .SimpleMcpServerBaseInfo ;
20- import com .github .codeboyzhou .mcp .declarative .server .simple .SimpleMcpStdioServerFactory ;
11+ import com .github .codeboyzhou .mcp .declarative .server .factory .McpSseServerFactory ;
12+ import com .github .codeboyzhou .mcp .declarative .server .factory .McpSseServerInfo ;
13+ import com .github .codeboyzhou .mcp .declarative .server .factory .McpStdioServerFactory ;
14+ import com .github .codeboyzhou .mcp .declarative .server .factory .McpStreamableServerFactory ;
15+ import com .github .codeboyzhou .mcp .declarative .server .factory .McpStreamableServerInfo ;
16+ import com .github .codeboyzhou .mcp .declarative .server .factory .configurable .AbstractConfigurableMcpServerFactory ;
17+ import com .github .codeboyzhou .mcp .declarative .server .factory .configurable .ConfigurableMcpSseServerFactory ;
18+ import com .github .codeboyzhou .mcp .declarative .server .factory .configurable .ConfigurableMcpStdioServerFactory ;
19+ import com .github .codeboyzhou .mcp .declarative .server .factory .configurable .ConfigurableMcpStreamableServerFactory ;
2120import com .google .inject .Guice ;
2221import com .google .inject .Injector ;
23- import io .modelcontextprotocol .server .McpAsyncServer ;
24- import io .modelcontextprotocol .spec .McpServerTransportProviderBase ;
22+ import io .modelcontextprotocol .server .McpSyncServer ;
2523import io .modelcontextprotocol .util .Assert ;
2624import org .slf4j .Logger ;
2725import org .slf4j .LoggerFactory ;
@@ -43,26 +41,22 @@ public static McpServers run(Class<?> applicationMainClass, String[] args) {
4341 return INSTANCE ;
4442 }
4543
46- public void startStdioServer (SimpleMcpServerBaseInfo serverInfo ) {
47- SimpleMcpStdioServerFactory factory = new SimpleMcpStdioServerFactory ();
48- McpAsyncServer server = factory .createServer (serverInfo );
49- registerComponentsTo (server );
44+ public void startStdioServer (McpServerInfo serverInfo ) {
45+ McpStdioServerFactory factory = new McpStdioServerFactory ();
46+ McpSyncServer server = factory .create (serverInfo );
47+ registerComponents (server );
5048 }
5149
52- public void startSseServer (SimpleMcpHttpSseServerInfo serverInfo ) {
53- SimpleMcpHttpSseServerFactory factory = new SimpleMcpHttpSseServerFactory ();
54- McpAsyncServer server = factory .createServer (serverInfo );
55- registerComponentsTo (server );
56- McpHttpServer httpserver = new McpHttpServer ();
57- httpserver .use (factory .transportProvider (serverInfo )).bind (serverInfo .port ()).start ();
50+ public void startSseServer (McpSseServerInfo serverInfo ) {
51+ McpSseServerFactory factory = new McpSseServerFactory ();
52+ McpSyncServer server = factory .create (serverInfo );
53+ registerComponents (server );
5854 }
5955
60- public void startStreamableServer (SimpleMcpHttpStreamableServerInfo serverInfo ) {
61- SimpleMcpHttpStreamableServerFactory factory = new SimpleMcpHttpStreamableServerFactory ();
62- McpAsyncServer server = factory .createServer (serverInfo );
63- registerComponentsTo (server );
64- McpHttpServer httpserver = new McpHttpServer ();
65- httpserver .use (factory .transportProvider (serverInfo )).bind (serverInfo .port ()).start ();
56+ public void startStreamableServer (McpStreamableServerInfo serverInfo ) {
57+ McpStreamableServerFactory factory = new McpStreamableServerFactory ();
58+ McpSyncServer server = factory .create (serverInfo );
59+ registerComponents (server );
6660 }
6761
6862 public void startServer (String configFileName ) {
@@ -82,29 +76,26 @@ private void doStartServer(McpServerConfiguration configuration) {
8276 return ;
8377 }
8478
85- ConfigurableMcpServerFactory <? extends McpServerTransportProviderBase > factory ;
86- if (configuration .stdio ()) {
79+ AbstractConfigurableMcpServerFactory factory ;
80+ final String mode = configuration .mode ().name ();
81+
82+ if (configuration .stdio () || ServerMode .STDIO .name ().equalsIgnoreCase (mode )) {
8783 factory = new ConfigurableMcpStdioServerFactory (configuration );
84+ } else if (ServerMode .SSE .name ().equalsIgnoreCase (mode )) {
85+ factory = new ConfigurableMcpSseServerFactory (configuration );
86+ } else if (ServerMode .STREAMABLE .name ().equalsIgnoreCase (mode )) {
87+ factory = new ConfigurableMcpStreamableServerFactory (configuration );
8888 } else {
89- final String httpMode = configuration .httpMode ().name ();
90- if (HttpMode .SSE .name ().equalsIgnoreCase (httpMode )) {
91- factory = new ConfigurableMcpHttpSseServerFactory (configuration );
92- } else if (HttpMode .STREAMABLE .name ().equalsIgnoreCase (httpMode )) {
93- factory = new ConfigurableMcpHttpStreamableServerFactory (configuration );
94- } else {
95- throw new NullPointerException ("factory is null, please check your configuration" );
96- }
89+ throw new NullPointerException ("factory is null, please check your configuration" );
9790 }
98- McpAsyncServer server = factory .createServer ();
99- registerComponentsTo (server );
91+
92+ McpSyncServer server = factory .create ();
93+ registerComponents (server );
10094 }
10195
102- private void registerComponentsTo (McpAsyncServer server ) {
103- McpServerResourceFactory resource = injector .getInstance (McpServerResourceFactory .class );
104- McpServerPromptFactory prompt = injector .getInstance (McpServerPromptFactory .class );
105- McpServerToolFactory tool = injector .getInstance (McpServerToolFactory .class );
106- resource .registerTo (server );
107- prompt .registerTo (server );
108- tool .registerTo (server );
96+ private void registerComponents (McpSyncServer server ) {
97+ injector .getInstance (McpServerResourceFactory .class ).register (server );
98+ injector .getInstance (McpServerPromptFactory .class ).register (server );
99+ injector .getInstance (McpServerToolFactory .class ).register (server );
109100 }
110101}
0 commit comments