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}