(name: string, configManager: ConfigManager, scope: string = 'local')
| 958 | } |
| 959 | |
| 960 | async function addDockerMCPServer(name: string, configManager: ConfigManager, scope: string = 'local'): Promise<void> { |
| 961 | const spinner = logger.spinner(`Adding Docker MCP server: ${name}`) |
| 962 | |
| 963 | try { |
| 964 | // Check if server exists in catalog |
| 965 | const info = await getDockerMCPServerInfo(name) |
| 966 | |
| 967 | if (!info) { |
| 968 | spinner.fail(`Server "${name}" not found in Docker MCP catalog`) |
| 969 | logger.info('Run "bwc list --mcps" to see available servers') |
| 970 | return |
| 971 | } |
| 972 | |
| 973 | spinner.stop() |
| 974 | logger.info(`\n📦 ${name}`) |
| 975 | logger.info(` ${info}`) |
| 976 | |
| 977 | // Check if already installed |
| 978 | const installed = await listInstalledDockerMCPServers() |
| 979 | if (installed.includes(name)) { |
| 980 | // Check if it's already in BWC config |
| 981 | const trackedServers = await configManager.getInstalledMCPServers() |
| 982 | if (trackedServers.includes(name)) { |
| 983 | logger.warn(`Server "${name}" is already installed and tracked in BWC config`) |
| 984 | return |
| 985 | } |
| 986 | |
| 987 | // Server is installed but not tracked in BWC config |
| 988 | logger.warn(`Server "${name}" is already installed in Docker MCP`) |
| 989 | |
| 990 | const { shouldTrack } = await inquirer.prompt([ |
| 991 | { |
| 992 | type: 'confirm', |
| 993 | name: 'shouldTrack', |
| 994 | message: 'Would you like to add it to your BWC config file for tracking?', |
| 995 | default: true |
| 996 | } |
| 997 | ]) |
| 998 | |
| 999 | if (shouldTrack) { |
| 1000 | // Create the full MCP server configuration to store |
| 1001 | const serverConfig: MCPServerConfig = { |
| 1002 | provider: 'docker', |
| 1003 | transport: 'stdio', |
| 1004 | scope: scope as 'local' | 'user' | 'project', |
| 1005 | installedAt: new Date().toISOString(), |
| 1006 | registryName: name |
| 1007 | } |
| 1008 | await configManager.addInstalledMCPServer(name, serverConfig) |
| 1009 | spinner.succeed(`Server "${name}" added to BWC config for tracking`) |
| 1010 | } else { |
| 1011 | logger.info('Server not added to BWC config') |
| 1012 | } |
| 1013 | return |
| 1014 | } |
| 1015 | |
| 1016 | // Enable the server |
| 1017 | spinner.start(`Enabling ${name} in Docker MCP Toolkit...`) |
no test coverage detected