@1mcp/agent 0.27.4 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/build/commands/app/consolidate.js +1 -1
  2. package/build/commands/app/consolidate.js.map +1 -1
  3. package/build/commands/mcp/add.js +1 -1
  4. package/build/commands/mcp/add.js.map +1 -1
  5. package/build/commands/mcp/enable.js +1 -1
  6. package/build/commands/mcp/enable.js.map +1 -1
  7. package/build/commands/mcp/index.d.ts.map +1 -1
  8. package/build/commands/mcp/index.js +64 -1
  9. package/build/commands/mcp/index.js.map +1 -1
  10. package/build/commands/mcp/install.d.ts +28 -0
  11. package/build/commands/mcp/install.d.ts.map +1 -0
  12. package/build/commands/mcp/install.js +472 -0
  13. package/build/commands/mcp/install.js.map +1 -0
  14. package/build/commands/mcp/list.d.ts +3 -0
  15. package/build/commands/mcp/list.d.ts.map +1 -1
  16. package/build/commands/mcp/list.js +49 -4
  17. package/build/commands/mcp/list.js.map +1 -1
  18. package/build/commands/mcp/remove.js +1 -1
  19. package/build/commands/mcp/remove.js.map +1 -1
  20. package/build/commands/mcp/status.js +1 -1
  21. package/build/commands/mcp/status.js.map +1 -1
  22. package/build/commands/mcp/tokens.js +1 -1
  23. package/build/commands/mcp/tokens.js.map +1 -1
  24. package/build/commands/mcp/uninstall.d.ts +28 -0
  25. package/build/commands/mcp/uninstall.d.ts.map +1 -0
  26. package/build/commands/mcp/uninstall.js +103 -0
  27. package/build/commands/mcp/uninstall.js.map +1 -0
  28. package/build/commands/mcp/update.d.ts +16 -1
  29. package/build/commands/mcp/update.d.ts.map +1 -1
  30. package/build/commands/mcp/update.js +33 -2
  31. package/build/commands/mcp/update.js.map +1 -1
  32. package/build/commands/mcp/utils/installWizard.d.ts +35 -0
  33. package/build/commands/mcp/utils/installWizard.d.ts.map +1 -0
  34. package/build/commands/mcp/utils/installWizard.js +137 -0
  35. package/build/commands/mcp/utils/installWizard.js.map +1 -0
  36. package/build/commands/mcp/utils/mcpServerConfig.d.ts +31 -0
  37. package/build/commands/mcp/utils/mcpServerConfig.d.ts.map +1 -0
  38. package/build/commands/mcp/utils/mcpServerConfig.js +79 -0
  39. package/build/commands/mcp/utils/mcpServerConfig.js.map +1 -0
  40. package/build/commands/mcp/utils/serverUtils.d.ts +40 -0
  41. package/build/commands/mcp/utils/serverUtils.d.ts.map +1 -0
  42. package/build/commands/mcp/utils/serverUtils.js +103 -0
  43. package/build/commands/mcp/utils/serverUtils.js.map +1 -0
  44. package/build/commands/mcp/wizard/components/serverDetailsDisplay.d.ts +14 -0
  45. package/build/commands/mcp/wizard/components/serverDetailsDisplay.d.ts.map +1 -0
  46. package/build/commands/mcp/wizard/components/serverDetailsDisplay.js +56 -0
  47. package/build/commands/mcp/wizard/components/serverDetailsDisplay.js.map +1 -0
  48. package/build/commands/mcp/wizard/components/stepIndicator.d.ts +11 -0
  49. package/build/commands/mcp/wizard/components/stepIndicator.d.ts.map +1 -0
  50. package/build/commands/mcp/wizard/components/stepIndicator.js +38 -0
  51. package/build/commands/mcp/wizard/components/stepIndicator.js.map +1 -0
  52. package/build/commands/mcp/wizard/components/welcomeScreen.d.ts +5 -0
  53. package/build/commands/mcp/wizard/components/welcomeScreen.d.ts.map +1 -0
  54. package/build/commands/mcp/wizard/components/welcomeScreen.js +25 -0
  55. package/build/commands/mcp/wizard/components/welcomeScreen.js.map +1 -0
  56. package/build/commands/mcp/wizard/configuration.d.ts +31 -0
  57. package/build/commands/mcp/wizard/configuration.d.ts.map +1 -0
  58. package/build/commands/mcp/wizard/configuration.js +360 -0
  59. package/build/commands/mcp/wizard/configuration.js.map +1 -0
  60. package/build/commands/mcp/wizard/display.d.ts +31 -0
  61. package/build/commands/mcp/wizard/display.d.ts.map +1 -0
  62. package/build/commands/mcp/wizard/display.js +131 -0
  63. package/build/commands/mcp/wizard/display.js.map +1 -0
  64. package/build/commands/mcp/wizard/index.d.ts +8 -0
  65. package/build/commands/mcp/wizard/index.d.ts.map +1 -0
  66. package/build/commands/mcp/wizard/index.js +10 -0
  67. package/build/commands/mcp/wizard/index.js.map +1 -0
  68. package/build/commands/mcp/wizard/metadata.d.ts +48 -0
  69. package/build/commands/mcp/wizard/metadata.d.ts.map +1 -0
  70. package/build/commands/mcp/wizard/metadata.js +126 -0
  71. package/build/commands/mcp/wizard/metadata.js.map +1 -0
  72. package/build/commands/mcp/wizard/navigation/keyboardHandler.d.ts +14 -0
  73. package/build/commands/mcp/wizard/navigation/keyboardHandler.d.ts.map +1 -0
  74. package/build/commands/mcp/wizard/navigation/keyboardHandler.js +99 -0
  75. package/build/commands/mcp/wizard/navigation/keyboardHandler.js.map +1 -0
  76. package/build/commands/mcp/wizard/navigation.d.ts +12 -0
  77. package/build/commands/mcp/wizard/navigation.d.ts.map +1 -0
  78. package/build/commands/mcp/wizard/navigation.js +99 -0
  79. package/build/commands/mcp/wizard/navigation.js.map +1 -0
  80. package/build/commands/mcp/wizard/search.d.ts +23 -0
  81. package/build/commands/mcp/wizard/search.d.ts.map +1 -0
  82. package/build/commands/mcp/wizard/search.js +101 -0
  83. package/build/commands/mcp/wizard/search.js.map +1 -0
  84. package/build/commands/mcp/wizard/selection.d.ts +14 -0
  85. package/build/commands/mcp/wizard/selection.d.ts.map +1 -0
  86. package/build/commands/mcp/wizard/selection.js +40 -0
  87. package/build/commands/mcp/wizard/selection.js.map +1 -0
  88. package/build/commands/registry/search.d.ts +1 -1
  89. package/build/commands/registry/search.d.ts.map +1 -1
  90. package/build/commands/registry/search.js +10 -7
  91. package/build/commands/registry/search.js.map +1 -1
  92. package/build/commands/serve/index.d.ts +10 -0
  93. package/build/commands/serve/index.d.ts.map +1 -1
  94. package/build/commands/serve/index.js +28 -1
  95. package/build/commands/serve/index.js.map +1 -1
  96. package/build/commands/serve/serve.d.ts +2 -0
  97. package/build/commands/serve/serve.d.ts.map +1 -1
  98. package/build/commands/serve/serve.js +33 -8
  99. package/build/commands/serve/serve.js.map +1 -1
  100. package/build/commands/shared/{configUtils.d.ts → baseConfigUtils.d.ts} +1 -1
  101. package/build/commands/shared/baseConfigUtils.d.ts.map +1 -0
  102. package/build/commands/shared/{configUtils.js → baseConfigUtils.js} +1 -1
  103. package/build/commands/shared/baseConfigUtils.js.map +1 -0
  104. package/build/config/configManager.d.ts +125 -0
  105. package/build/config/configManager.d.ts.map +1 -0
  106. package/build/config/configManager.js +412 -0
  107. package/build/config/configManager.js.map +1 -0
  108. package/build/constants/mcp.d.ts +1 -1
  109. package/build/constants/mcp.js +1 -1
  110. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts +1 -1
  111. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts.map +1 -1
  112. package/build/core/capabilities/asyncLoadingOrchestrator.js +6 -1
  113. package/build/core/capabilities/asyncLoadingOrchestrator.js.map +1 -1
  114. package/build/core/capabilities/capabilityAggregator.d.ts +1 -0
  115. package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -1
  116. package/build/core/capabilities/capabilityAggregator.js +21 -0
  117. package/build/core/capabilities/capabilityAggregator.js.map +1 -1
  118. package/build/core/capabilities/internal/discoveryTools.d.ts +28 -0
  119. package/build/core/capabilities/internal/discoveryTools.d.ts.map +1 -0
  120. package/build/core/capabilities/internal/discoveryTools.js +59 -0
  121. package/build/core/capabilities/internal/discoveryTools.js.map +1 -0
  122. package/build/core/capabilities/internal/installationTools.d.ts +20 -0
  123. package/build/core/capabilities/internal/installationTools.d.ts.map +1 -0
  124. package/build/core/capabilities/internal/installationTools.js +36 -0
  125. package/build/core/capabilities/internal/installationTools.js.map +1 -0
  126. package/build/core/capabilities/internal/managementTools.d.ts +32 -0
  127. package/build/core/capabilities/internal/managementTools.d.ts.map +1 -0
  128. package/build/core/capabilities/internal/managementTools.js +69 -0
  129. package/build/core/capabilities/internal/managementTools.js.map +1 -0
  130. package/build/core/capabilities/internalCapabilitiesProvider.d.ts +41 -0
  131. package/build/core/capabilities/internalCapabilitiesProvider.d.ts.map +1 -0
  132. package/build/core/capabilities/internalCapabilitiesProvider.js +275 -0
  133. package/build/core/capabilities/internalCapabilitiesProvider.js.map +1 -0
  134. package/build/core/client/clientManager.d.ts +5 -0
  135. package/build/core/client/clientManager.d.ts.map +1 -1
  136. package/build/core/client/clientManager.js +34 -0
  137. package/build/core/client/clientManager.js.map +1 -1
  138. package/build/core/configChangeHandler.d.ts +78 -0
  139. package/build/core/configChangeHandler.d.ts.map +1 -0
  140. package/build/core/configChangeHandler.js +310 -0
  141. package/build/core/configChangeHandler.js.map +1 -0
  142. package/build/core/flags/flagManager.d.ts +90 -0
  143. package/build/core/flags/flagManager.d.ts.map +1 -0
  144. package/build/core/flags/flagManager.js +209 -0
  145. package/build/core/flags/flagManager.js.map +1 -0
  146. package/build/core/protocol/requestHandlers.d.ts.map +1 -1
  147. package/build/core/protocol/requestHandlers.js +32 -1
  148. package/build/core/protocol/requestHandlers.js.map +1 -1
  149. package/build/core/server/agentConfig.d.ts +20 -0
  150. package/build/core/server/agentConfig.d.ts.map +1 -1
  151. package/build/core/server/agentConfig.js +40 -0
  152. package/build/core/server/agentConfig.js.map +1 -1
  153. package/build/core/server/pidFileManager.d.ts +14 -1
  154. package/build/core/server/pidFileManager.d.ts.map +1 -1
  155. package/build/core/server/pidFileManager.js +24 -2
  156. package/build/core/server/pidFileManager.js.map +1 -1
  157. package/build/core/server/serverManager.d.ts +46 -1
  158. package/build/core/server/serverManager.d.ts.map +1 -1
  159. package/build/core/server/serverManager.js +260 -3
  160. package/build/core/server/serverManager.js.map +1 -1
  161. package/build/core/tools/handlers/searchHandler.js +1 -1
  162. package/build/core/tools/handlers/searchHandler.js.map +1 -1
  163. package/build/core/tools/handlers/serverManagementHandler.d.ts +262 -0
  164. package/build/core/tools/handlers/serverManagementHandler.d.ts.map +1 -0
  165. package/build/core/tools/handlers/serverManagementHandler.js +430 -0
  166. package/build/core/tools/handlers/serverManagementHandler.js.map +1 -0
  167. package/build/core/tools/internal/adapters/discoveryAdapter.d.ts +148 -0
  168. package/build/core/tools/internal/adapters/discoveryAdapter.d.ts.map +1 -0
  169. package/build/core/tools/internal/adapters/discoveryAdapter.js +163 -0
  170. package/build/core/tools/internal/adapters/discoveryAdapter.js.map +1 -0
  171. package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts +62 -0
  172. package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts.map +1 -0
  173. package/build/core/tools/internal/adapters/helpers/configTransformers.js +79 -0
  174. package/build/core/tools/internal/adapters/helpers/configTransformers.js.map +1 -0
  175. package/build/core/tools/internal/adapters/index.d.ts +58 -0
  176. package/build/core/tools/internal/adapters/index.d.ts.map +1 -0
  177. package/build/core/tools/internal/adapters/index.js +85 -0
  178. package/build/core/tools/internal/adapters/index.js.map +1 -0
  179. package/build/core/tools/internal/adapters/installation/directInstallation.d.ts +16 -0
  180. package/build/core/tools/internal/adapters/installation/directInstallation.d.ts.map +1 -0
  181. package/build/core/tools/internal/adapters/installation/directInstallation.js +103 -0
  182. package/build/core/tools/internal/adapters/installation/directInstallation.js.map +1 -0
  183. package/build/core/tools/internal/adapters/installation/packageResolver.d.ts +7 -0
  184. package/build/core/tools/internal/adapters/installation/packageResolver.d.ts.map +1 -0
  185. package/build/core/tools/internal/adapters/installation/packageResolver.js +86 -0
  186. package/build/core/tools/internal/adapters/installation/packageResolver.js.map +1 -0
  187. package/build/core/tools/internal/adapters/installation/types.d.ts +100 -0
  188. package/build/core/tools/internal/adapters/installation/types.d.ts.map +1 -0
  189. package/build/core/tools/internal/adapters/installation/types.js +2 -0
  190. package/build/core/tools/internal/adapters/installation/types.js.map +1 -0
  191. package/build/core/tools/internal/adapters/installationAdapter.d.ts +89 -0
  192. package/build/core/tools/internal/adapters/installationAdapter.d.ts.map +1 -0
  193. package/build/core/tools/internal/adapters/installationAdapter.js +335 -0
  194. package/build/core/tools/internal/adapters/installationAdapter.js.map +1 -0
  195. package/build/core/tools/internal/adapters/management/index.d.ts +5 -0
  196. package/build/core/tools/internal/adapters/management/index.d.ts.map +1 -0
  197. package/build/core/tools/internal/adapters/management/index.js +5 -0
  198. package/build/core/tools/internal/adapters/management/index.js.map +1 -0
  199. package/build/core/tools/internal/adapters/management/managementAdapter.d.ts +51 -0
  200. package/build/core/tools/internal/adapters/management/managementAdapter.d.ts.map +1 -0
  201. package/build/core/tools/internal/adapters/management/managementAdapter.js +402 -0
  202. package/build/core/tools/internal/adapters/management/managementAdapter.js.map +1 -0
  203. package/build/core/tools/internal/adapters/management/toolHandlers.d.ts +6 -0
  204. package/build/core/tools/internal/adapters/management/toolHandlers.d.ts.map +1 -0
  205. package/build/core/tools/internal/adapters/management/toolHandlers.js +154 -0
  206. package/build/core/tools/internal/adapters/management/toolHandlers.js.map +1 -0
  207. package/build/core/tools/internal/adapters/management/types.d.ts +179 -0
  208. package/build/core/tools/internal/adapters/management/types.d.ts.map +1 -0
  209. package/build/core/tools/internal/adapters/management/types.js +2 -0
  210. package/build/core/tools/internal/adapters/management/types.js.map +1 -0
  211. package/build/core/tools/internal/adapters/management/validation.d.ts +9 -0
  212. package/build/core/tools/internal/adapters/management/validation.d.ts.map +1 -0
  213. package/build/core/tools/internal/adapters/management/validation.js +204 -0
  214. package/build/core/tools/internal/adapters/management/validation.js.map +1 -0
  215. package/build/core/tools/internal/adapters/validation/configValidation.d.ts +22 -0
  216. package/build/core/tools/internal/adapters/validation/configValidation.d.ts.map +1 -0
  217. package/build/core/tools/internal/adapters/validation/configValidation.js +185 -0
  218. package/build/core/tools/internal/adapters/validation/configValidation.js.map +1 -0
  219. package/build/core/tools/internal/discoveryHandlers.d.ts +26 -0
  220. package/build/core/tools/internal/discoveryHandlers.d.ts.map +1 -0
  221. package/build/core/tools/internal/discoveryHandlers.js +283 -0
  222. package/build/core/tools/internal/discoveryHandlers.js.map +1 -0
  223. package/build/core/tools/internal/index.d.ts +279 -0
  224. package/build/core/tools/internal/index.d.ts.map +1 -0
  225. package/build/core/tools/internal/index.js +236 -0
  226. package/build/core/tools/internal/index.js.map +1 -0
  227. package/build/core/tools/internal/installationHandlers.d.ts +18 -0
  228. package/build/core/tools/internal/installationHandlers.d.ts.map +1 -0
  229. package/build/core/tools/internal/installationHandlers.js +314 -0
  230. package/build/core/tools/internal/installationHandlers.js.map +1 -0
  231. package/build/core/tools/internal/managementHandlers.d.ts +26 -0
  232. package/build/core/tools/internal/managementHandlers.d.ts.map +1 -0
  233. package/build/core/tools/internal/managementHandlers.js +306 -0
  234. package/build/core/tools/internal/managementHandlers.js.map +1 -0
  235. package/build/core/tools/internal/schemas/discovery.d.ts +233 -0
  236. package/build/core/tools/internal/schemas/discovery.d.ts.map +1 -0
  237. package/build/core/tools/internal/schemas/discovery.js +189 -0
  238. package/build/core/tools/internal/schemas/discovery.js.map +1 -0
  239. package/build/core/tools/internal/schemas/edit.d.ts +96 -0
  240. package/build/core/tools/internal/schemas/edit.d.ts.map +1 -0
  241. package/build/core/tools/internal/schemas/edit.js +76 -0
  242. package/build/core/tools/internal/schemas/edit.js.map +1 -0
  243. package/build/core/tools/internal/schemas/index.d.ts +629 -0
  244. package/build/core/tools/internal/schemas/index.d.ts.map +1 -0
  245. package/build/core/tools/internal/schemas/index.js +158 -0
  246. package/build/core/tools/internal/schemas/index.js.map +1 -0
  247. package/build/core/tools/internal/schemas/installation.d.ts +210 -0
  248. package/build/core/tools/internal/schemas/installation.d.ts.map +1 -0
  249. package/build/core/tools/internal/schemas/installation.js +212 -0
  250. package/build/core/tools/internal/schemas/installation.js.map +1 -0
  251. package/build/core/tools/internal/schemas/management.d.ts +232 -0
  252. package/build/core/tools/internal/schemas/management.d.ts.map +1 -0
  253. package/build/core/tools/internal/schemas/management.js +188 -0
  254. package/build/core/tools/internal/schemas/management.js.map +1 -0
  255. package/build/core/tools/internal/toolHandlers.d.ts +7 -0
  256. package/build/core/tools/internal/toolHandlers.d.ts.map +1 -0
  257. package/build/core/tools/internal/toolHandlers.js +8 -0
  258. package/build/core/tools/internal/toolHandlers.js.map +1 -0
  259. package/build/core/tools/internal/toolSchemas.d.ts +16 -0
  260. package/build/core/tools/internal/toolSchemas.d.ts.map +1 -0
  261. package/build/core/tools/internal/toolSchemas.js +22 -0
  262. package/build/core/tools/internal/toolSchemas.js.map +1 -0
  263. package/build/domains/installation/configurators/cliArgsConfigurator.d.ts +7 -0
  264. package/build/domains/installation/configurators/cliArgsConfigurator.d.ts.map +1 -0
  265. package/build/domains/installation/configurators/cliArgsConfigurator.js +146 -0
  266. package/build/domains/installation/configurators/cliArgsConfigurator.js.map +1 -0
  267. package/build/domains/installation/configurators/envVarConfigurator.d.ts +7 -0
  268. package/build/domains/installation/configurators/envVarConfigurator.d.ts.map +1 -0
  269. package/build/domains/installation/configurators/envVarConfigurator.js +122 -0
  270. package/build/domains/installation/configurators/envVarConfigurator.js.map +1 -0
  271. package/build/domains/installation/configurators/tagsConfigurator.d.ts +23 -0
  272. package/build/domains/installation/configurators/tagsConfigurator.d.ts.map +1 -0
  273. package/build/domains/installation/configurators/tagsConfigurator.js +46 -0
  274. package/build/domains/installation/configurators/tagsConfigurator.js.map +1 -0
  275. package/build/domains/installation/index.d.ts +12 -0
  276. package/build/domains/installation/index.d.ts.map +1 -0
  277. package/build/domains/installation/index.js +16 -0
  278. package/build/domains/installation/index.js.map +1 -0
  279. package/build/domains/installation/metadata/defaultsProvider.d.ts +12 -0
  280. package/build/domains/installation/metadata/defaultsProvider.d.ts.map +1 -0
  281. package/build/domains/installation/metadata/defaultsProvider.js +43 -0
  282. package/build/domains/installation/metadata/defaultsProvider.js.map +1 -0
  283. package/build/domains/installation/metadata/metadataExtractor.d.ts +11 -0
  284. package/build/domains/installation/metadata/metadataExtractor.d.ts.map +1 -0
  285. package/build/domains/installation/metadata/metadataExtractor.js +59 -0
  286. package/build/domains/installation/metadata/metadataExtractor.js.map +1 -0
  287. package/build/domains/installation/types.d.ts +27 -0
  288. package/build/domains/installation/types.d.ts.map +1 -0
  289. package/build/domains/installation/types.js +5 -0
  290. package/build/domains/installation/types.js.map +1 -0
  291. package/build/domains/installation/validators/conflictDetector.d.ts +24 -0
  292. package/build/domains/installation/validators/conflictDetector.d.ts.map +1 -0
  293. package/build/domains/installation/validators/conflictDetector.js +41 -0
  294. package/build/domains/installation/validators/conflictDetector.js.map +1 -0
  295. package/build/domains/installation/validators/serverNameValidator.d.ts +17 -0
  296. package/build/domains/installation/validators/serverNameValidator.d.ts.map +1 -0
  297. package/build/domains/installation/validators/serverNameValidator.js +58 -0
  298. package/build/domains/installation/validators/serverNameValidator.js.map +1 -0
  299. package/build/domains/registry/formatters/serverDetailFormatter.js +22 -9
  300. package/build/domains/registry/formatters/serverDetailFormatter.js.map +1 -1
  301. package/build/domains/registry/mcpRegistryClient.d.ts.map +1 -1
  302. package/build/domains/registry/mcpRegistryClient.js +46 -18
  303. package/build/domains/registry/mcpRegistryClient.js.map +1 -1
  304. package/build/domains/registry/mcpToolSchemas.d.ts +2 -2
  305. package/build/domains/registry/mcpToolSchemas.d.ts.map +1 -1
  306. package/build/domains/registry/mcpToolSchemas.js +1 -1
  307. package/build/domains/registry/mcpToolSchemas.js.map +1 -1
  308. package/build/domains/registry/types.d.ts +2 -3
  309. package/build/domains/registry/types.d.ts.map +1 -1
  310. package/build/domains/server-management/index.d.ts +11 -0
  311. package/build/domains/server-management/index.d.ts.map +1 -0
  312. package/build/domains/server-management/index.js +13 -0
  313. package/build/domains/server-management/index.js.map +1 -0
  314. package/build/domains/server-management/progressTrackingService.d.ts +49 -0
  315. package/build/domains/server-management/progressTrackingService.d.ts.map +1 -0
  316. package/build/domains/server-management/progressTrackingService.js +102 -0
  317. package/build/domains/server-management/progressTrackingService.js.map +1 -0
  318. package/build/domains/server-management/serverInstallationService.d.ts +48 -0
  319. package/build/domains/server-management/serverInstallationService.d.ts.map +1 -0
  320. package/build/domains/server-management/serverInstallationService.js +299 -0
  321. package/build/domains/server-management/serverInstallationService.js.map +1 -0
  322. package/build/domains/server-management/services/versionResolver.d.ts +36 -0
  323. package/build/domains/server-management/services/versionResolver.d.ts.map +1 -0
  324. package/build/domains/server-management/services/versionResolver.js +74 -0
  325. package/build/domains/server-management/services/versionResolver.js.map +1 -0
  326. package/build/domains/server-management/types.d.ts +215 -0
  327. package/build/domains/server-management/types.d.ts.map +1 -0
  328. package/build/domains/server-management/types.js +28 -0
  329. package/build/domains/server-management/types.js.map +1 -0
  330. package/build/server.d.ts +1 -1
  331. package/build/server.d.ts.map +1 -1
  332. package/build/server.js +18 -12
  333. package/build/server.js.map +1 -1
  334. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js +2 -2
  335. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js.map +1 -1
  336. package/build/utils/schemaUtils.d.ts +25 -0
  337. package/build/utils/schemaUtils.d.ts.map +1 -0
  338. package/build/utils/schemaUtils.js +43 -0
  339. package/build/utils/schemaUtils.js.map +1 -0
  340. package/package.json +3 -2
  341. package/build/application/services/configReloadService.d.ts +0 -55
  342. package/build/application/services/configReloadService.d.ts.map +0 -1
  343. package/build/application/services/configReloadService.js +0 -195
  344. package/build/application/services/configReloadService.js.map +0 -1
  345. package/build/commands/mcp/utils/configUtils.d.ts +0 -71
  346. package/build/commands/mcp/utils/configUtils.d.ts.map +0 -1
  347. package/build/commands/mcp/utils/configUtils.js +0 -326
  348. package/build/commands/mcp/utils/configUtils.js.map +0 -1
  349. package/build/commands/shared/configUtils.d.ts.map +0 -1
  350. package/build/commands/shared/configUtils.js.map +0 -1
@@ -0,0 +1,472 @@
1
+ import { MCPRegistryClient } from '../../domains/registry/mcpRegistryClient.js';
2
+ import { createServerInstallationService, getProgressTrackingService } from '../../domains/server-management/index.js';
3
+ import logger from '../../logger/logger.js';
4
+ import boxen from 'boxen';
5
+ import chalk from 'chalk';
6
+ import { InstallWizard } from './utils/installWizard.js';
7
+ import { backupConfig, getAllServers, initializeConfigContext, reloadMcpConfig, serverExists, } from './utils/mcpServerConfig.js';
8
+ import { generateOperationId, parseServerNameVersion, validateVersion } from './utils/serverUtils.js';
9
+ /**
10
+ * Build the install command configuration
11
+ */
12
+ export function buildInstallCommand(yargs) {
13
+ return yargs
14
+ .positional('serverName', {
15
+ describe: 'Server name or name@version to install',
16
+ type: 'string',
17
+ demandOption: false,
18
+ })
19
+ .option('force', {
20
+ describe: 'Force installation even if already exists',
21
+ type: 'boolean',
22
+ default: false,
23
+ })
24
+ .option('dry-run', {
25
+ describe: 'Show what would be installed without installing',
26
+ type: 'boolean',
27
+ default: false,
28
+ })
29
+ .option('interactive', {
30
+ describe: 'Launch interactive wizard for guided installation',
31
+ type: 'boolean',
32
+ default: false,
33
+ alias: 'i',
34
+ })
35
+ .option('verbose', {
36
+ describe: 'Detailed output',
37
+ type: 'boolean',
38
+ default: false,
39
+ alias: 'v',
40
+ })
41
+ .example([
42
+ ['$0 mcp install', 'Launch interactive installation wizard'],
43
+ ['$0 mcp install filesystem', 'Install latest version (requires exact registry ID)'],
44
+ ['$0 mcp install io.github.user/filesystem', 'Install with full registry ID'],
45
+ ['1mcp registry search mysql && 1mcp mcp install <registry-id>', 'Search then install workflow'],
46
+ ['$0 mcp install filesystem@1.0.0', 'Install specific version'],
47
+ ['$0 mcp install filesystem --interactive', 'Install with interactive configuration'],
48
+ ['$0 mcp install filesystem --force', 'Force reinstallation'],
49
+ ['$0 mcp install filesystem --dry-run', 'Preview installation'],
50
+ ]);
51
+ }
52
+ /**
53
+ * Install command handler
54
+ */
55
+ export async function installCommand(argv) {
56
+ const { serverName: inputServerName, config: configPath, 'config-dir': configDir, force = false, dryRun = false, verbose = false, interactive = false, } = argv;
57
+ try {
58
+ // Initialize configuration context
59
+ initializeConfigContext(configPath, configDir);
60
+ if (verbose) {
61
+ logger.info('Starting installation process...');
62
+ }
63
+ // Launch interactive wizard if no server name provided or --interactive flag set
64
+ if (!inputServerName || interactive) {
65
+ await runInteractiveInstallation(argv);
66
+ return;
67
+ }
68
+ // Parse server name and version
69
+ const { name: registryServerId, version } = parseServerNameVersion(inputServerName);
70
+ // Validate version format if provided
71
+ if (version && !validateVersion(version)) {
72
+ throw new Error(`Invalid version format: '${version}'. Expected semantic version (e.g., 1.2.3).`);
73
+ }
74
+ if (verbose) {
75
+ logger.info(`Parsed registry server ID: ${registryServerId}, version: ${version || 'latest'}`);
76
+ }
77
+ // For registry installations, we need to validate the registry server ID format
78
+ // and then derive a valid local server name
79
+ validateRegistryServerId(registryServerId);
80
+ // Derive a valid local server name from the registry ID
81
+ const serverName = deriveLocalServerName(registryServerId);
82
+ if (verbose) {
83
+ logger.info(`Derived local server name: ${serverName} from registry ID: ${registryServerId}`);
84
+ }
85
+ // Check if server already exists
86
+ if (serverExists(serverName)) {
87
+ if (!force) {
88
+ throw new Error(`Server '${serverName}' already exists. Use --force to reinstall.`);
89
+ }
90
+ if (verbose) {
91
+ logger.info(`Server '${serverName}' exists, will reinstall due to --force flag`);
92
+ }
93
+ }
94
+ // Dry run mode
95
+ if (dryRun) {
96
+ console.log('šŸ” Dry run mode - no changes will be made\n');
97
+ console.log(`Would install: ${serverName}${version ? `@${version}` : ''}`);
98
+ console.log(`From registry: https://registry.modelcontextprotocol.io\n`);
99
+ console.log('Use without --dry-run to perform actual installation.');
100
+ return;
101
+ }
102
+ // Create operation ID for tracking
103
+ const operationId = generateOperationId();
104
+ const progressTracker = getProgressTrackingService();
105
+ // Start progress tracking
106
+ progressTracker.startOperation(operationId, 'install', 5);
107
+ try {
108
+ // Get installation service
109
+ const installationService = createServerInstallationService();
110
+ // Update progress: Validating
111
+ progressTracker.updateProgress(operationId, 1, 'Validating server', `Checking registry for ${serverName}`);
112
+ // Create backup if replacing existing server
113
+ let backupPath;
114
+ if (serverExists(serverName)) {
115
+ progressTracker.updateProgress(operationId, 2, 'Creating backup', `Backing up existing configuration`);
116
+ backupPath = backupConfig();
117
+ logger.info(`Backup created: ${backupPath}`);
118
+ }
119
+ // Update progress: Installing
120
+ progressTracker.updateProgress(operationId, 3, 'Installing server', `Installing ${serverName}${version ? `@${version}` : ''}`);
121
+ // Perform installation - pass the registry server ID for fetching from registry
122
+ // but use the derived local name for configuration
123
+ const result = await installationService.installServer(registryServerId, version, {
124
+ force,
125
+ verbose,
126
+ localServerName: serverName, // Pass the derived local name
127
+ registryServerId: registryServerId, // Pass the registry ID for tagging
128
+ });
129
+ // Update progress: Finalizing
130
+ progressTracker.updateProgress(operationId, 4, 'Finalizing', 'Saving configuration');
131
+ // Save the configuration returned by the installation service
132
+ if (result.config) {
133
+ const { setServer } = await import('./utils/mcpServerConfig.js');
134
+ setServer(serverName, result.config);
135
+ if (verbose) {
136
+ logger.info(`Configuration saved for server '${serverName}'`);
137
+ }
138
+ }
139
+ // Update progress: Reloading
140
+ progressTracker.updateProgress(operationId, 5, 'Reloading configuration', 'Applying changes');
141
+ // Reload MCP configuration
142
+ reloadMcpConfig();
143
+ // Update progress: Complete (completeOperation logs completion)
144
+ // Complete the operation
145
+ const duration = result.installedAt ? Date.now() - result.installedAt.getTime() : 0;
146
+ progressTracker.completeOperation(operationId, {
147
+ success: true,
148
+ operationId,
149
+ duration,
150
+ message: `Successfully installed ${serverName}`,
151
+ });
152
+ // Report success
153
+ console.log(`\nāœ… Successfully installed server '${serverName}'${version ? ` version ${version}` : ''}`);
154
+ if (backupPath) {
155
+ console.log(`šŸ“ Backup created: ${backupPath}`);
156
+ }
157
+ if (result.warnings.length > 0) {
158
+ console.log('\nāš ļø Warnings:');
159
+ result.warnings.forEach((warning) => console.log(` • ${warning}`));
160
+ }
161
+ }
162
+ catch (error) {
163
+ progressTracker.failOperation(operationId, error);
164
+ throw error;
165
+ }
166
+ }
167
+ catch (error) {
168
+ const errorMessage = error instanceof Error ? error.message : String(error);
169
+ // Enhanced error guidance for registry-related failures
170
+ if (errorMessage.includes('Failed to fetch server with ID') ||
171
+ errorMessage.includes('not found in registry') ||
172
+ (errorMessage.includes('Server') && errorMessage.includes('not found'))) {
173
+ console.error(`\nāŒ Server '${inputServerName}' not found in registry.\n`);
174
+ console.error(`šŸ’” Suggestions:\n`);
175
+ console.error(` • Search for available servers:`);
176
+ console.error(` 1mcp registry search ${inputServerName}\n`);
177
+ console.error(` • Use interactive mode to browse:`);
178
+ console.error(` 1mcp mcp install --interactive\n`);
179
+ console.error(` • Try the full registry ID if you know it:`);
180
+ console.error(` 1mcp mcp install io.github.username/${inputServerName}\n`);
181
+ console.error(` • View available servers:`);
182
+ console.error(` 1mcp registry search\n`);
183
+ }
184
+ else {
185
+ console.error(`\nāŒ Installation failed: ${errorMessage}\n`);
186
+ }
187
+ if (error instanceof Error && error.stack) {
188
+ logger.error('Installation error stack:', error.stack);
189
+ }
190
+ throw error;
191
+ }
192
+ }
193
+ /**
194
+ * Validate registry server ID format
195
+ * Registry server IDs can contain dots, slashes, and hyphens (e.g., io.github.user/server-name)
196
+ */
197
+ function validateRegistryServerId(registryId) {
198
+ if (!registryId || registryId.trim().length === 0) {
199
+ throw new Error('Registry server ID cannot be empty');
200
+ }
201
+ const trimmedId = registryId.trim();
202
+ // Check for invalid characters that should never be in server IDs
203
+ // eslint-disable-next-line no-control-regex
204
+ const invalidChars = /[<>"\\|?*\x00-\x1f]/;
205
+ if (invalidChars.test(trimmedId)) {
206
+ throw new Error(`Registry server ID contains invalid characters: ${registryId}`);
207
+ }
208
+ // Check length limits
209
+ if (trimmedId.length > 255) {
210
+ throw new Error(`Registry server ID too long (max 255 characters): ${registryId}`);
211
+ }
212
+ // Check for invalid patterns
213
+ if (trimmedId.includes('//') || trimmedId.startsWith('/') || trimmedId.endsWith('/')) {
214
+ throw new Error(`Registry server ID has invalid format: ${registryId}`);
215
+ }
216
+ logger.debug(`Registry server ID validation passed: ${trimmedId}`);
217
+ }
218
+ /**
219
+ * Derive a valid local server name from a registry server ID
220
+ * Example: io.github.SnowLeopard-AI/bigquery-mcp -> bigquery-mcp
221
+ */
222
+ function deriveLocalServerName(registryId) {
223
+ // Extract the last part after the slash, or use the full ID if no slash
224
+ const lastPart = registryId.includes('/') ? registryId.split('/').pop() : registryId;
225
+ // If it already starts with a letter and only contains valid chars, use it as-is
226
+ const localNameRegex = /^[a-zA-Z][a-zA-Z0-9_-]*$/;
227
+ if (localNameRegex.test(lastPart) && lastPart.length <= 50) {
228
+ return lastPart;
229
+ }
230
+ // Otherwise, sanitize it:
231
+ // 1. Replace invalid characters with underscores
232
+ // 2. Ensure it starts with a letter
233
+ // 3. Truncate if too long
234
+ let sanitized = lastPart.replace(/[^a-zA-Z0-9_-]/g, '_');
235
+ // Ensure it starts with a letter
236
+ if (!/^[a-zA-Z]/.test(sanitized)) {
237
+ sanitized = `server_${sanitized}`;
238
+ }
239
+ // Truncate to 50 characters if longer
240
+ if (sanitized.length > 50) {
241
+ sanitized = sanitized.substring(0, 50);
242
+ }
243
+ // Ensure it's not empty after sanitization
244
+ if (sanitized.length === 0) {
245
+ sanitized = 'server';
246
+ }
247
+ logger.debug(`Derived local server name '${sanitized}' from registry ID '${registryId}'`);
248
+ return sanitized;
249
+ }
250
+ /**
251
+ * Run interactive installation workflow
252
+ */
253
+ async function runInteractiveInstallation(argv) {
254
+ const { serverName: initialServerId, config: configPath, 'config-dir': configDir, force = false, dryRun = false, verbose = false, } = argv;
255
+ // Initialize configuration context
256
+ initializeConfigContext(configPath, configDir);
257
+ // Create registry client
258
+ const registryClient = new MCPRegistryClient({
259
+ baseUrl: 'https://registry.modelcontextprotocol.io',
260
+ timeout: 30000,
261
+ cache: {
262
+ defaultTtl: 300,
263
+ maxSize: 100,
264
+ cleanupInterval: 60000,
265
+ },
266
+ });
267
+ // Create wizard
268
+ const wizard = new InstallWizard(registryClient);
269
+ // Get existing server names for conflict detection
270
+ const getExistingNames = () => Object.keys(getAllServers());
271
+ // Run wizard loop (supports installing multiple servers)
272
+ let continueInstalling = true;
273
+ let currentServerId = initialServerId;
274
+ try {
275
+ while (continueInstalling) {
276
+ const existingNames = getExistingNames();
277
+ const wizardResult = await wizard.run(currentServerId, existingNames);
278
+ if (wizardResult.cancelled) {
279
+ console.log('\nāŒ Installation cancelled.\n');
280
+ wizard.cleanup();
281
+ process.exit(0);
282
+ }
283
+ // Perform installation with collected configuration
284
+ try {
285
+ const registryServerId = wizardResult.serverId;
286
+ const version = wizardResult.version;
287
+ const serverName = wizardResult.localName || deriveLocalServerName(registryServerId);
288
+ // Use forceOverride from wizard if user selected override option
289
+ const shouldForce = force || wizardResult.forceOverride || false;
290
+ // Check if server already exists (early check)
291
+ const serverAlreadyExists = serverExists(serverName);
292
+ if (serverAlreadyExists && !shouldForce) {
293
+ console.error(`\nāŒ Server '${serverName}' already exists. Use --force to reinstall.\n`);
294
+ wizard.cleanup();
295
+ if (wizardResult.installAnother) {
296
+ currentServerId = undefined;
297
+ continue;
298
+ }
299
+ process.exit(1);
300
+ }
301
+ // Dry run mode
302
+ if (dryRun) {
303
+ console.log('šŸ” Dry run mode - no changes will be made\n');
304
+ console.log(`Would install: ${serverName}${version ? `@${version}` : ''}`);
305
+ console.log(`From registry: https://registry.modelcontextprotocol.io\n`);
306
+ if (wizardResult.installAnother) {
307
+ currentServerId = undefined;
308
+ continue;
309
+ }
310
+ wizard.cleanup();
311
+ process.exit(0);
312
+ }
313
+ // Create operation ID for tracking
314
+ const operationId = generateOperationId();
315
+ const progressTracker = getProgressTrackingService();
316
+ // Helper function to show step indicator
317
+ const showStepIndicator = (currentStep, skipClear = false) => {
318
+ if (!skipClear) {
319
+ console.clear();
320
+ }
321
+ const steps = ['Search', 'Select', 'Configure', 'Confirm', 'Install'];
322
+ const stepBar = steps
323
+ .map((step, index) => {
324
+ const num = index + 1;
325
+ if (num < currentStep) {
326
+ return chalk.green(`āœ“ ${step}`);
327
+ }
328
+ else if (num === currentStep) {
329
+ return chalk.cyan.bold(`ā–ŗ ${step}`);
330
+ }
331
+ else {
332
+ return chalk.gray(`ā—‹ ${step}`);
333
+ }
334
+ })
335
+ .join(' → ');
336
+ console.log(boxen(stepBar, { padding: { left: 2, right: 2, top: 0, bottom: 0 }, borderStyle: 'round' }));
337
+ console.log('');
338
+ };
339
+ // Show Install step indicator (clear screen before starting)
340
+ showStepIndicator(5, false);
341
+ // Start progress tracking
342
+ progressTracker.startOperation(operationId, 'install', 5);
343
+ try {
344
+ // Get installation service
345
+ const installationService = createServerInstallationService();
346
+ // Update progress: Validating
347
+ console.log(chalk.cyan('ā³ Validating server...'));
348
+ progressTracker.updateProgress(operationId, 1, 'Validating server', `Checking registry for ${serverName}`);
349
+ // Create backup if replacing existing server
350
+ let backupPath;
351
+ if (serverAlreadyExists) {
352
+ console.log(chalk.cyan('ā³ Creating backup...'));
353
+ progressTracker.updateProgress(operationId, 2, 'Creating backup', `Backing up existing configuration`);
354
+ backupPath = backupConfig();
355
+ console.log(chalk.gray(` Backup created: ${backupPath}`));
356
+ logger.info(`Backup created: ${backupPath}`);
357
+ // Remove the existing server before reinstalling to prevent duplicates
358
+ const { removeServer } = await import('./utils/mcpServerConfig.js');
359
+ const removed = removeServer(serverName);
360
+ if (removed) {
361
+ console.log(chalk.gray(` Removed existing server '${serverName}'`));
362
+ if (verbose) {
363
+ logger.info(`Removed existing server '${serverName}' before reinstalling`);
364
+ }
365
+ }
366
+ }
367
+ // Update progress: Installing
368
+ console.log(chalk.cyan(`ā³ Installing ${serverName}${version ? `@${version}` : ''}...`));
369
+ progressTracker.updateProgress(operationId, 3, 'Installing server', `Installing ${serverName}${version ? `@${version}` : ''}`);
370
+ // Perform installation
371
+ const result = await installationService.installServer(registryServerId, version, {
372
+ force: shouldForce,
373
+ verbose,
374
+ localServerName: serverName,
375
+ registryServerId: registryServerId, // Pass the registry ID for tagging
376
+ tags: wizardResult.tags,
377
+ env: wizardResult.env,
378
+ args: wizardResult.args,
379
+ });
380
+ // Update progress: Finalizing
381
+ console.log(chalk.cyan('ā³ Finalizing...'));
382
+ progressTracker.updateProgress(operationId, 4, 'Finalizing', 'Saving configuration');
383
+ // Save the configuration returned by the installation service
384
+ if (result.config) {
385
+ const { setServer } = await import('./utils/mcpServerConfig.js');
386
+ setServer(serverName, result.config);
387
+ if (verbose) {
388
+ logger.info(`Configuration saved for server '${serverName}'`);
389
+ }
390
+ }
391
+ // Update progress: Reloading
392
+ console.log(chalk.cyan('ā³ Reloading configuration...'));
393
+ progressTracker.updateProgress(operationId, 5, 'Reloading configuration', 'Applying changes');
394
+ // Reload MCP configuration
395
+ reloadMcpConfig();
396
+ // Complete the operation
397
+ const duration = result.installedAt ? Date.now() - result.installedAt.getTime() : 0;
398
+ progressTracker.completeOperation(operationId, {
399
+ success: true,
400
+ operationId,
401
+ duration,
402
+ message: `Successfully installed ${serverName}`,
403
+ });
404
+ // Show completed step indicator with all steps marked as done (don't clear logs)
405
+ console.log('');
406
+ showStepIndicator(6, true); // 6 means all steps are completed, true = skip clear
407
+ // Report success
408
+ console.log(chalk.green.bold(`āœ… Successfully installed server '${serverName}'${version ? ` version ${version}` : ''}`));
409
+ if (backupPath) {
410
+ console.log(chalk.gray(`šŸ“ Backup created: ${backupPath}`));
411
+ }
412
+ if (result.warnings.length > 0) {
413
+ console.log(chalk.yellow('\nāš ļø Warnings:'));
414
+ result.warnings.forEach((warning) => console.log(chalk.yellow(` • ${warning}`)));
415
+ }
416
+ }
417
+ catch (error) {
418
+ progressTracker.failOperation(operationId, error);
419
+ throw error;
420
+ }
421
+ }
422
+ catch (error) {
423
+ const errorMessage = error instanceof Error ? error.message : String(error);
424
+ // Enhanced error guidance for registry-related failures in interactive mode
425
+ if (errorMessage.includes('Failed to fetch server with ID') ||
426
+ errorMessage.includes('not found in registry') ||
427
+ (errorMessage.includes('Server') && errorMessage.includes('not found'))) {
428
+ console.error(`\nāŒ Server '${wizardResult.serverId}' not found in registry.\n`);
429
+ console.error(`šŸ’” Suggestions:\n`);
430
+ console.error(` • Try searching for the server first:`);
431
+ console.error(` 1mcp registry search ${wizardResult.serverId}\n`);
432
+ console.error(` • Use the exact Registry ID from search results\n`);
433
+ console.error(` • Try searching with different keywords\n`);
434
+ console.error(` • Or continue to search for another server\n`);
435
+ }
436
+ else {
437
+ console.error(`\nāŒ Installation failed: ${errorMessage}\n`);
438
+ }
439
+ if (error instanceof Error && error.stack) {
440
+ logger.error('Installation error stack:', error.stack);
441
+ }
442
+ if (wizardResult.installAnother) {
443
+ const continueAfterError = await wizard.run(undefined, getExistingNames());
444
+ if (continueAfterError.cancelled) {
445
+ wizard.cleanup();
446
+ process.exit(1);
447
+ }
448
+ currentServerId = undefined;
449
+ continue;
450
+ }
451
+ wizard.cleanup();
452
+ process.exit(1);
453
+ }
454
+ // Check if user wants to install another
455
+ if (wizardResult.installAnother) {
456
+ currentServerId = undefined;
457
+ continueInstalling = true;
458
+ }
459
+ else {
460
+ continueInstalling = false;
461
+ }
462
+ }
463
+ }
464
+ finally {
465
+ // Always cleanup wizard resources
466
+ wizard.cleanup();
467
+ }
468
+ // Explicitly exit after successful completion to prevent hanging
469
+ // This ensures stdin doesn't keep the process alive
470
+ process.exit(0);
471
+ }
472
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/mcp/install.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface ListCommandArgs extends GlobalOptions {
5
5
  'show-secrets'?: boolean;
6
6
  tags?: string;
7
7
  verbose?: boolean;
8
+ outdated?: boolean;
8
9
  }
9
10
  /**
10
11
  * Build the list command configuration
@@ -17,6 +18,8 @@ export declare function buildListCommand(yargs: Argv): Argv<{
17
18
  tags: string | undefined;
18
19
  } & {
19
20
  verbose: boolean;
21
+ } & {
22
+ outdated: boolean;
20
23
  }>;
21
24
  /**
22
25
  * List all configured MCP servers
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAStD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAKlC,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI;;;;;;;;GA8B3C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FtE"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAStD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAMlC,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI;;;;;;;;;;GAoC3C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FtE"}
@@ -1,6 +1,8 @@
1
+ import { createServerInstallationService } from '../../domains/server-management/serverInstallationService.js';
1
2
  import { inferTransportType } from '../../transport/transportFactory.js';
2
3
  import { redactCommandArgs, redactSensitiveValue, redactUrl, sanitizeHeaders, } from '../../utils/validation/sanitization.js';
3
- import { getAllServers, initializeConfigContext, parseTags, validateConfigPath } from './utils/configUtils.js';
4
+ import { getAllServers, initializeConfigContext, parseTags, validateConfigPath } from './utils/mcpServerConfig.js';
5
+ import { calculateServerStatus } from './utils/serverUtils.js';
4
6
  import { validateTags } from './utils/validation.js';
5
7
  /**
6
8
  * Build the list command configuration
@@ -27,12 +29,18 @@ export function buildListCommand(yargs) {
27
29
  type: 'boolean',
28
30
  default: false,
29
31
  alias: 'v',
32
+ })
33
+ .option('outdated', {
34
+ describe: 'Show only servers with available updates',
35
+ type: 'boolean',
36
+ default: false,
30
37
  })
31
38
  .example([
32
39
  ['$0 mcp list', 'List all enabled servers'],
33
40
  ['$0 mcp list --show-disabled', 'List all servers including disabled'],
34
41
  ['$0 mcp list --show-secrets', 'Show sensitive values in verbose output'],
35
42
  ['$0 mcp list --tags=prod,api', 'List servers with specific tags'],
43
+ ['$0 mcp list --outdated', 'List only servers with available updates'],
36
44
  ['$0 mcp list --verbose', 'List servers with detailed config'],
37
45
  ]);
38
46
  }
@@ -41,7 +49,7 @@ export function buildListCommand(yargs) {
41
49
  */
42
50
  export async function listCommand(argv) {
43
51
  try {
44
- const { config: configPath, 'config-dir': configDir, 'show-disabled': showDisabled = false, 'show-secrets': showSecrets = false, tags: tagsFilter, verbose = false, } = argv;
52
+ const { config: configPath, 'config-dir': configDir, 'show-disabled': showDisabled = false, 'show-secrets': showSecrets = false, tags: tagsFilter, verbose = false, outdated = false, } = argv;
45
53
  // Initialize config context with CLI options
46
54
  initializeConfigContext(configPath, configDir);
47
55
  // Validate config path
@@ -57,8 +65,11 @@ export async function listCommand(argv) {
57
65
  console.log('\nšŸ’” Use "server add <name>" to add your first server.');
58
66
  return;
59
67
  }
60
- // Filter servers
61
- const filteredServers = filterServers(allServers, showDisabled, tagsFilter);
68
+ // Filter servers (apply outdated filter if requested)
69
+ let filteredServers = filterServers(allServers, showDisabled, tagsFilter);
70
+ if (outdated) {
71
+ filteredServers = await getOutdatedServers(filteredServers);
72
+ }
62
73
  if (Object.keys(filteredServers).length === 0) {
63
74
  if (tagsFilter) {
64
75
  console.log(`No servers found matching the specified tags: ${tagsFilter}`);
@@ -105,6 +116,29 @@ export async function listCommand(argv) {
105
116
  process.exit(1);
106
117
  }
107
118
  }
119
+ /**
120
+ * Filter servers to show only those with available updates
121
+ */
122
+ async function getOutdatedServers(servers) {
123
+ const outdated = {};
124
+ // Create service to check for updates
125
+ const installationService = createServerInstallationService();
126
+ // Get list of server names
127
+ const serverNames = Object.keys(servers);
128
+ // Check for updates for all servers
129
+ const updateResults = await installationService.checkForUpdates(serverNames);
130
+ // Filter to only servers with available updates
131
+ const serversWithUpdates = updateResults
132
+ .filter((result) => result.hasUpdate || result.updateAvailable)
133
+ .map((result) => result.serverName);
134
+ // Return only outdated servers
135
+ for (const serverName of serversWithUpdates) {
136
+ if (servers[serverName]) {
137
+ outdated[serverName] = servers[serverName];
138
+ }
139
+ }
140
+ return outdated;
141
+ }
108
142
  /**
109
143
  * Filter servers based on criteria
110
144
  */
@@ -135,11 +169,22 @@ function filterServers(servers, showDisabled, tagsFilter) {
135
169
  function displayServer(name, config, verbose, showSecrets = false) {
136
170
  const statusIcon = config.disabled ? 'šŸ”“' : '🟢';
137
171
  const statusText = config.disabled ? 'Disabled' : 'Enabled';
172
+ // Get installation metadata
173
+ const version = 'unknown';
174
+ // Calculate server status
175
+ const serverStatus = calculateServerStatus(version);
138
176
  // Infer type if missing
139
177
  const inferredConfig = config.type ? config : inferTransportType(config, name);
140
178
  const displayType = inferredConfig.type || 'unknown';
179
+ // Display with installation metadata
141
180
  console.log(`${statusIcon} ${name} (${statusText})`);
142
181
  console.log(` Type: ${displayType}`);
182
+ console.log(` Version: ${version}`);
183
+ // Show status if outdated
184
+ if (serverStatus === 'outdated') {
185
+ console.log(` Status: āš ļø Update available`);
186
+ }
187
+ // Installation date would be shown here when metadata storage is fully implemented
143
188
  // Type-specific information
144
189
  if (inferredConfig.type === 'stdio') {
145
190
  console.log(` Command: ${inferredConfig.command}`);