001package org.nasdanika.ai.mcp;
002
003import org.nasdanika.cli.CommandBase;
004import org.nasdanika.cli.ParentCommands;
005import org.nasdanika.common.Description;
006
007import io.modelcontextprotocol.server.McpAsyncServer;
008import io.modelcontextprotocol.server.transport.StdioServerTransportProvider;
009import picocli.CommandLine.Command;
010import picocli.CommandLine.ParentCommand;
011
012@Command(
013                description = "MCP STDIO Transport",
014                versionProvider = ModuleVersionProvider.class,          
015                mixinStandardHelpOptions = true,
016                name = "stdio")
017@ParentCommands(McpAsyncServerProvider.class)
018@Description(icon = "https://docs.nasdanika.org/images/transfer.svg")
019public class StdioTransportCommand extends CommandBase {
020        
021        @ParentCommand
022        private McpAsyncServerProvider asyncServerProvider;
023
024        @Override
025        public Integer call() throws Exception {
026                StdioServerTransportProvider transportProvider = new StdioServerTransportProvider();            
027                McpAsyncServer asyncServer = asyncServerProvider.createServer(transportProvider);
028                Thread.sleep(1000); // Just in case
029                asyncServer.closeGracefully().block();
030                return 0;
031        }       
032        
033}