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 ;
67import com .github .codeboyzhou .mcp .declarative .server .McpHttpServer ;
78import com .github .codeboyzhou .mcp .declarative .server .component .McpServerPromptFactory ;
89import com .github .codeboyzhou .mcp .declarative .server .component .McpServerResourceFactory ;
910import com .github .codeboyzhou .mcp .declarative .server .component .McpServerToolFactory ;
1011import com .github .codeboyzhou .mcp .declarative .server .configurable .ConfigurableMcpHttpSseServerFactory ;
12+ import com .github .codeboyzhou .mcp .declarative .server .configurable .ConfigurableMcpHttpStreamableServerFactory ;
1113import com .github .codeboyzhou .mcp .declarative .server .configurable .ConfigurableMcpServerFactory ;
1214import com .github .codeboyzhou .mcp .declarative .server .configurable .ConfigurableMcpStdioServerFactory ;
1315import com .github .codeboyzhou .mcp .declarative .server .simple .SimpleMcpHttpSseServerFactory ;
1921import com .google .inject .Guice ;
2022import com .google .inject .Injector ;
2123import io .modelcontextprotocol .server .McpAsyncServer ;
22- import io .modelcontextprotocol .spec .McpServerTransportProvider ;
24+ import io .modelcontextprotocol .spec .McpServerTransportProviderBase ;
2325import io .modelcontextprotocol .util .Assert ;
2426import org .slf4j .Logger ;
2527import org .slf4j .LoggerFactory ;
@@ -44,23 +46,23 @@ public static McpServers run(Class<?> applicationMainClass, String[] args) {
4446 public void startStdioServer (SimpleMcpServerBaseInfo serverInfo ) {
4547 SimpleMcpStdioServerFactory factory = new SimpleMcpStdioServerFactory ();
4648 McpAsyncServer server = factory .create (serverInfo );
47- registerComponents (server );
49+ registerComponentsTo (server );
4850 }
4951
5052 public void startSseServer (SimpleMcpHttpSseServerInfo serverInfo ) {
5153 SimpleMcpHttpSseServerFactory factory = new SimpleMcpHttpSseServerFactory ();
5254 McpAsyncServer server = factory .create (serverInfo );
5355 McpHttpServer httpserver = new McpHttpServer ();
5456 httpserver .use (factory .transportProvider (serverInfo )).bind (serverInfo .port ()).start ();
55- registerComponents (server );
57+ registerComponentsTo (server );
5658 }
5759
5860 public void startStreamableServer (SimpleMcpHttpStreamableServerInfo serverInfo ) {
5961 SimpleMcpHttpStreamableServerFactory factory = new SimpleMcpHttpStreamableServerFactory ();
6062 McpAsyncServer server = factory .create (serverInfo );
6163 McpHttpServer httpserver = new McpHttpServer ();
6264 httpserver .use (factory .transportProvider (serverInfo )).bind (serverInfo .port ()).start ();
63- registerComponents (server );
65+ registerComponentsTo (server );
6466 }
6567
6668 public void startServer (String configFileName ) {
@@ -80,17 +82,24 @@ private void doStartServer(McpServerConfiguration configuration) {
8082 return ;
8183 }
8284
83- ConfigurableMcpServerFactory <? extends McpServerTransportProvider > factory ;
85+ ConfigurableMcpServerFactory <? extends McpServerTransportProviderBase > factory ;
8486 if (configuration .stdio ()) {
8587 factory = new ConfigurableMcpStdioServerFactory (configuration );
8688 } else {
87- factory = new ConfigurableMcpHttpSseServerFactory (configuration );
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+ }
8897 }
8998 McpAsyncServer server = factory .create ();
90- registerComponents (server );
99+ registerComponentsTo (server );
91100 }
92101
93- private void registerComponents (McpAsyncServer server ) {
102+ private void registerComponentsTo (McpAsyncServer server ) {
94103 injector .getInstance (McpServerResourceFactory .class ).registerTo (server );
95104 injector .getInstance (McpServerPromptFactory .class ).registerTo (server );
96105 injector .getInstance (McpServerToolFactory .class ).registerTo (server );
0 commit comments