imcp 0.1.7 → 0.1.8
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.
- package/dist/cli/commands/install.js +1 -106
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/list.js +1 -90
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/pull.js +1 -16
- package/dist/cli/commands/pull.js.map +1 -0
- package/dist/cli/commands/serve.js +1 -33
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/uninstall.js +1 -46
- package/dist/cli/commands/uninstall.js.map +1 -0
- package/dist/cli/index.js +1 -65
- package/dist/cli/index.js.map +1 -0
- package/dist/core/installers/clients/BaseClientInstaller.js +1 -282
- package/dist/core/installers/clients/BaseClientInstaller.js.map +1 -0
- package/dist/core/installers/clients/ClientInstaller.js +1 -163
- package/dist/core/installers/clients/ClientInstaller.js.map +1 -0
- package/dist/core/installers/clients/ClientInstallerFactory.js +1 -36
- package/dist/core/installers/clients/ClientInstallerFactory.js.map +1 -0
- package/dist/core/installers/clients/ClineInstaller.js +1 -30
- package/dist/core/installers/clients/ClineInstaller.js.map +1 -0
- package/dist/core/installers/clients/ExtensionInstaller.js +1 -151
- package/dist/core/installers/clients/ExtensionInstaller.js.map +1 -0
- package/dist/core/installers/clients/GithubCopilotInstaller.js +1 -68
- package/dist/core/installers/clients/GithubCopilotInstaller.js.map +1 -0
- package/dist/core/installers/clients/MSRooCodeInstaller.js +1 -28
- package/dist/core/installers/clients/MSRooCodeInstaller.js.map +1 -0
- package/dist/core/installers/index.js +1 -8
- package/dist/core/installers/index.js.map +1 -0
- package/dist/core/installers/requirements/BaseInstaller.js +1 -56
- package/dist/core/installers/requirements/BaseInstaller.js.map +1 -0
- package/dist/core/installers/requirements/CommandInstaller.js +1 -213
- package/dist/core/installers/requirements/CommandInstaller.js.map +1 -0
- package/dist/core/installers/requirements/GeneralInstaller.js +1 -126
- package/dist/core/installers/requirements/GeneralInstaller.js.map +1 -0
- package/dist/core/installers/requirements/InstallerFactory.js +1 -99
- package/dist/core/installers/requirements/InstallerFactory.js.map +1 -0
- package/dist/core/installers/requirements/NpmInstaller.js +1 -235
- package/dist/core/installers/requirements/NpmInstaller.js.map +1 -0
- package/dist/core/installers/requirements/NugetInstaller.js +1 -188
- package/dist/core/installers/requirements/NugetInstaller.js.map +1 -0
- package/dist/core/installers/requirements/PipInstaller.js +1 -192
- package/dist/core/installers/requirements/PipInstaller.js.map +1 -0
- package/dist/core/installers/requirements/RequirementInstaller.js +1 -2
- package/dist/core/installers/requirements/RequirementInstaller.js.map +1 -0
- package/dist/core/loaders/ConfigurationLoader.js +1 -256
- package/dist/core/loaders/ConfigurationLoader.js.map +1 -0
- package/dist/core/loaders/ConfigurationProvider.js +1 -383
- package/dist/core/loaders/ConfigurationProvider.js.map +1 -0
- package/dist/core/loaders/InstallOperationManager.js +1 -310
- package/dist/core/loaders/InstallOperationManager.js.map +1 -0
- package/dist/core/loaders/ServerSchemaLoader.js +1 -108
- package/dist/core/loaders/ServerSchemaLoader.js.map +1 -0
- package/dist/core/loaders/ServerSchemaProvider.js +1 -89
- package/dist/core/loaders/ServerSchemaProvider.js.map +1 -0
- package/dist/core/loaders/SystemSettingsManager.js +1 -256
- package/dist/core/loaders/SystemSettingsManager.js.map +1 -0
- package/dist/core/metadatas/constants.js +1 -100
- package/dist/core/metadatas/constants.js.map +1 -0
- package/dist/core/metadatas/recordingConstants.js +1 -46
- package/dist/core/metadatas/recordingConstants.js.map +1 -0
- package/dist/core/metadatas/types.js +1 -15
- package/dist/core/metadatas/types.js.map +1 -0
- package/dist/core/onboard/FeedOnboardService.js +1 -422
- package/dist/core/onboard/FeedOnboardService.js.map +1 -0
- package/dist/core/onboard/OnboardProcessor.js +1 -333
- package/dist/core/onboard/OnboardProcessor.js.map +1 -0
- package/dist/core/onboard/OnboardStatus.js +1 -9
- package/dist/core/onboard/OnboardStatus.js.map +1 -0
- package/dist/core/onboard/OnboardStatusManager.js +1 -360
- package/dist/core/onboard/OnboardStatusManager.js.map +1 -0
- package/dist/core/validators/FeedValidator.js +1 -133
- package/dist/core/validators/FeedValidator.js.map +1 -0
- package/dist/core/validators/IServerValidator.js +1 -1
- package/dist/core/validators/IServerValidator.js.map +1 -0
- package/dist/core/validators/SSEServerValidator.js +1 -38
- package/dist/core/validators/SSEServerValidator.js.map +1 -0
- package/dist/core/validators/ServerValidatorFactory.js +1 -44
- package/dist/core/validators/ServerValidatorFactory.js.map +1 -0
- package/dist/core/validators/StdioServerValidator.js +1 -281
- package/dist/core/validators/StdioServerValidator.js.map +1 -0
- package/dist/index.js +1 -18
- package/dist/index.js.map +1 -0
- package/dist/services/InstallationService.js +1 -81
- package/dist/services/InstallationService.js.map +1 -0
- package/dist/services/MCPManager.js +1 -197
- package/dist/services/MCPManager.js.map +1 -0
- package/dist/services/RequirementService.js +1 -548
- package/dist/services/RequirementService.js.map +1 -0
- package/dist/services/ServerService.js +1 -127
- package/dist/services/ServerService.js.map +1 -0
- package/dist/services/TelemetryService.js +1 -53
- package/dist/services/TelemetryService.js.map +1 -0
- package/dist/utils/UpdateCheckTracker.js +1 -79
- package/dist/utils/UpdateCheckTracker.js.map +1 -0
- package/dist/utils/adoUtils.js +1 -254
- package/dist/utils/adoUtils.js.map +1 -0
- package/dist/utils/clientUtils.js +1 -65
- package/dist/utils/clientUtils.js.map +1 -0
- package/dist/utils/feedUtils.js +1 -28
- package/dist/utils/feedUtils.js.map +1 -0
- package/dist/utils/githubAuth.js +1 -177
- package/dist/utils/githubAuth.js.map +1 -0
- package/dist/utils/githubUtils.js +1 -125
- package/dist/utils/githubUtils.js.map +1 -0
- package/dist/utils/logger.js +1 -176
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/macroExpressionUtils.js +1 -93
- package/dist/utils/macroExpressionUtils.js.map +1 -0
- package/dist/utils/osUtils.js +1 -664
- package/dist/utils/osUtils.js.map +1 -0
- package/dist/utils/versionUtils.js +1 -101
- package/dist/utils/versionUtils.js.map +1 -0
- package/dist/web/contract/serverContract.js +1 -1
- package/dist/web/contract/serverContract.js.map +1 -0
- package/dist/web/public/js/api.js +2 -132
- package/dist/web/public/js/api.js.map +1 -0
- package/dist/web/public/js/detailsWidget.js +2 -264
- package/dist/web/public/js/detailsWidget.js.map +1 -0
- package/dist/web/public/js/flights/flights.js +2 -127
- package/dist/web/public/js/flights/flights.js.map +1 -0
- package/dist/web/public/js/modal/index.js +2 -52
- package/dist/web/public/js/modal/index.js.map +1 -0
- package/dist/web/public/js/modal/installModal.js +2 -162
- package/dist/web/public/js/modal/installModal.js.map +1 -0
- package/dist/web/public/js/modal/installation.js +2 -266
- package/dist/web/public/js/modal/installation.js.map +1 -0
- package/dist/web/public/js/modal/loadingModal.js +2 -182
- package/dist/web/public/js/modal/loadingModal.js.map +1 -0
- package/dist/web/public/js/modal/modalSetup.js +2 -595
- package/dist/web/public/js/modal/modalSetup.js.map +1 -0
- package/dist/web/public/js/modal/modalUtils.js +2 -37
- package/dist/web/public/js/modal/modalUtils.js.map +1 -0
- package/dist/web/public/js/modal/versionUtils.js +2 -20
- package/dist/web/public/js/modal/versionUtils.js.map +1 -0
- package/dist/web/public/js/modal.js +2 -42
- package/dist/web/public/js/modal.js.map +1 -0
- package/dist/web/public/js/notifications.js +2 -137
- package/dist/web/public/js/notifications.js.map +1 -0
- package/dist/web/public/js/onboard/formProcessor.js +2 -1037
- package/dist/web/public/js/onboard/formProcessor.js.map +1 -0
- package/dist/web/public/js/onboard/index.js +2 -374
- package/dist/web/public/js/onboard/index.js.map +1 -0
- package/dist/web/public/js/onboard/publishHandler.js +2 -172
- package/dist/web/public/js/onboard/publishHandler.js.map +1 -0
- package/dist/web/public/js/onboard/state.js +2 -76
- package/dist/web/public/js/onboard/state.js.map +1 -0
- package/dist/web/public/js/onboard/templates.js +2 -342
- package/dist/web/public/js/onboard/templates.js.map +1 -0
- package/dist/web/public/js/onboard/uiHandlers.js +2 -1076
- package/dist/web/public/js/onboard/uiHandlers.js.map +1 -0
- package/dist/web/public/js/onboard/validationHandlers.js +2 -493
- package/dist/web/public/js/onboard/validationHandlers.js.map +1 -0
- package/dist/web/public/js/serverCategoryDetails.js +2 -364
- package/dist/web/public/js/serverCategoryDetails.js.map +1 -0
- package/dist/web/public/js/serverCategoryList.js +2 -241
- package/dist/web/public/js/serverCategoryList.js.map +1 -0
- package/dist/web/public/js/settings.js +2 -314
- package/dist/web/public/js/settings.js.map +1 -0
- package/dist/web/server.js +1 -404
- package/dist/web/server.js.map +1 -0
- package/package.json +8 -2
- package/.github/ISSUE_TEMPLATE/JitAccess.yml +0 -28
- package/.github/acl/access.yml +0 -20
- package/.github/compliance/inventory.yml +0 -5
- package/.github/policies/jit.yml +0 -19
- package/.github/workflows/build.yml +0 -28
- package/.roo/rules-code/rules.md +0 -88
- package/dist/cli/commands/start.d.ts +0 -2
- package/dist/cli/commands/start.js +0 -32
- package/dist/cli/commands/sync.d.ts +0 -2
- package/dist/cli/commands/sync.js +0 -17
- package/dist/core/ConfigurationLoader.d.ts +0 -32
- package/dist/core/ConfigurationLoader.js +0 -236
- package/dist/core/ConfigurationProvider.d.ts +0 -35
- package/dist/core/ConfigurationProvider.js +0 -375
- package/dist/core/InstallationService.d.ts +0 -50
- package/dist/core/InstallationService.js +0 -350
- package/dist/core/MCPManager.d.ts +0 -28
- package/dist/core/MCPManager.js +0 -188
- package/dist/core/RequirementService.d.ts +0 -40
- package/dist/core/RequirementService.js +0 -110
- package/dist/core/ServerSchemaLoader.d.ts +0 -11
- package/dist/core/ServerSchemaLoader.js +0 -43
- package/dist/core/ServerSchemaProvider.d.ts +0 -17
- package/dist/core/ServerSchemaProvider.js +0 -120
- package/dist/core/constants.d.ts +0 -47
- package/dist/core/constants.js +0 -94
- package/dist/core/installers/BaseInstaller.d.ts +0 -74
- package/dist/core/installers/BaseInstaller.js +0 -253
- package/dist/core/installers/ClientInstaller.d.ts +0 -23
- package/dist/core/installers/ClientInstaller.js +0 -564
- package/dist/core/installers/CommandInstaller.d.ts +0 -37
- package/dist/core/installers/CommandInstaller.js +0 -173
- package/dist/core/installers/GeneralInstaller.d.ts +0 -33
- package/dist/core/installers/GeneralInstaller.js +0 -85
- package/dist/core/installers/InstallerFactory.d.ts +0 -54
- package/dist/core/installers/InstallerFactory.js +0 -97
- package/dist/core/installers/NpmInstaller.d.ts +0 -26
- package/dist/core/installers/NpmInstaller.js +0 -127
- package/dist/core/installers/PipInstaller.d.ts +0 -28
- package/dist/core/installers/PipInstaller.js +0 -127
- package/dist/core/installers/RequirementInstaller.d.ts +0 -33
- package/dist/core/installers/RequirementInstaller.js +0 -3
- package/dist/core/types.d.ts +0 -166
- package/dist/core/types.js +0 -16
- package/dist/services/InstallRequestValidator.d.ts +0 -21
- package/dist/services/InstallRequestValidator.js +0 -99
- package/dist/web/public/js/modal/installHandler.js +0 -227
- package/dist/web/public/js/modal/loadingUI.js +0 -74
- package/dist/web/public/js/modal/messageQueue.js +0 -112
- package/dist/web/public/js/modal/modalUI.js +0 -214
- package/dist/web/public/js/modal/version.js +0 -20
- package/dist/web/public/js/onboard/ONBOARDING_PAGE_DESIGN.md +0 -370
- package/docs/ONBOARDING_PAGE_DESIGN.md +0 -260
- package/docs/Telemetry.md +0 -136
- package/memory-bank/activeContext.md +0 -26
- package/memory-bank/decisionLog.md +0 -91
- package/memory-bank/productContext.md +0 -41
- package/memory-bank/progress.md +0 -35
- package/memory-bank/systemPatterns.md +0 -10
- package/src/cli/commands/install.ts +0 -139
- package/src/cli/commands/list.ts +0 -113
- package/src/cli/commands/pull.ts +0 -16
- package/src/cli/commands/serve.ts +0 -39
- package/src/cli/commands/uninstall.ts +0 -64
- package/src/cli/index.ts +0 -82
- package/src/core/installers/clients/BaseClientInstaller.ts +0 -341
- package/src/core/installers/clients/ClientInstaller.ts +0 -222
- package/src/core/installers/clients/ClientInstallerFactory.ts +0 -43
- package/src/core/installers/clients/ClineInstaller.ts +0 -35
- package/src/core/installers/clients/ExtensionInstaller.ts +0 -165
- package/src/core/installers/clients/GithubCopilotInstaller.ts +0 -79
- package/src/core/installers/clients/MSRooCodeInstaller.ts +0 -32
- package/src/core/installers/index.ts +0 -11
- package/src/core/installers/requirements/BaseInstaller.ts +0 -85
- package/src/core/installers/requirements/CommandInstaller.ts +0 -231
- package/src/core/installers/requirements/GeneralInstaller.ts +0 -133
- package/src/core/installers/requirements/InstallerFactory.ts +0 -114
- package/src/core/installers/requirements/NpmInstaller.ts +0 -271
- package/src/core/installers/requirements/NugetInstaller.ts +0 -203
- package/src/core/installers/requirements/PipInstaller.ts +0 -207
- package/src/core/installers/requirements/RequirementInstaller.ts +0 -42
- package/src/core/loaders/ConfigurationLoader.ts +0 -298
- package/src/core/loaders/ConfigurationProvider.ts +0 -462
- package/src/core/loaders/InstallOperationManager.ts +0 -367
- package/src/core/loaders/ServerSchemaLoader.ts +0 -117
- package/src/core/loaders/ServerSchemaProvider.ts +0 -99
- package/src/core/loaders/SystemSettingsManager.ts +0 -278
- package/src/core/metadatas/constants.ts +0 -122
- package/src/core/metadatas/recordingConstants.ts +0 -65
- package/src/core/metadatas/types.ts +0 -202
- package/src/core/onboard/FeedOnboardService.ts +0 -501
- package/src/core/onboard/OnboardProcessor.ts +0 -356
- package/src/core/onboard/OnboardStatus.ts +0 -60
- package/src/core/onboard/OnboardStatusManager.ts +0 -416
- package/src/core/validators/FeedValidator.ts +0 -135
- package/src/core/validators/IServerValidator.ts +0 -21
- package/src/core/validators/SSEServerValidator.ts +0 -43
- package/src/core/validators/ServerValidatorFactory.ts +0 -51
- package/src/core/validators/StdioServerValidator.ts +0 -313
- package/src/index.ts +0 -44
- package/src/services/InstallationService.ts +0 -102
- package/src/services/MCPManager.ts +0 -249
- package/src/services/RequirementService.ts +0 -627
- package/src/services/ServerService.ts +0 -161
- package/src/services/TelemetryService.ts +0 -59
- package/src/utils/UpdateCheckTracker.ts +0 -86
- package/src/utils/adoUtils.ts +0 -293
- package/src/utils/clientUtils.ts +0 -72
- package/src/utils/feedUtils.ts +0 -31
- package/src/utils/githubAuth.ts +0 -212
- package/src/utils/githubUtils.ts +0 -164
- package/src/utils/logger.ts +0 -195
- package/src/utils/macroExpressionUtils.ts +0 -104
- package/src/utils/osUtils.ts +0 -700
- package/src/utils/versionUtils.ts +0 -114
- package/src/web/contract/serverContract.ts +0 -74
- package/src/web/public/css/detailsWidget.css +0 -235
- package/src/web/public/css/modal.css +0 -757
- package/src/web/public/css/notifications.css +0 -101
- package/src/web/public/css/onboard.css +0 -107
- package/src/web/public/css/serverCategoryList.css +0 -120
- package/src/web/public/css/serverDetails.css +0 -139
- package/src/web/public/index.html +0 -359
- package/src/web/public/js/api.js +0 -132
- package/src/web/public/js/detailsWidget.js +0 -264
- package/src/web/public/js/flights/flights.js +0 -127
- package/src/web/public/js/modal/index.js +0 -52
- package/src/web/public/js/modal/installModal.js +0 -162
- package/src/web/public/js/modal/installation.js +0 -266
- package/src/web/public/js/modal/loadingModal.js +0 -182
- package/src/web/public/js/modal/modalSetup.js +0 -595
- package/src/web/public/js/modal/modalUtils.js +0 -37
- package/src/web/public/js/modal/versionUtils.js +0 -20
- package/src/web/public/js/modal.js +0 -42
- package/src/web/public/js/notifications.js +0 -137
- package/src/web/public/js/onboard/formProcessor.js +0 -1037
- package/src/web/public/js/onboard/index.js +0 -374
- package/src/web/public/js/onboard/publishHandler.js +0 -172
- package/src/web/public/js/onboard/state.js +0 -76
- package/src/web/public/js/onboard/templates.js +0 -342
- package/src/web/public/js/onboard/uiHandlers.js +0 -1076
- package/src/web/public/js/onboard/validationHandlers.js +0 -493
- package/src/web/public/js/serverCategoryDetails.js +0 -364
- package/src/web/public/js/serverCategoryList.js +0 -241
- package/src/web/public/js/settings.js +0 -314
- package/src/web/public/modal.html +0 -84
- package/src/web/public/onboard.html +0 -296
- package/src/web/public/settings.html +0 -135
- package/src/web/public/styles.css +0 -277
- package/src/web/server.ts +0 -478
- package/tsconfig.json +0 -18
- package/wiki/Installation.md +0 -3
- package/wiki/Publish.md +0 -3
|
@@ -1,107 +1,2 @@
|
|
|
1
|
-
import { Command } from '
|
|
2
|
-
import { serverService } from '../../services/ServerService.js';
|
|
3
|
-
import { Logger } from '../../utils/logger.js';
|
|
4
|
-
import { hasLocalFeeds } from '../../utils/feedUtils.js';
|
|
5
|
-
import { SUPPORTED_CLIENT_NAMES } from '../../core/metadatas/constants.js';
|
|
6
|
-
import { mcpManager } from '../../services/MCPManager.js';
|
|
7
|
-
export function createInstallCommand() {
|
|
8
|
-
return new Command('install')
|
|
9
|
-
.description('Install specific MCP servers')
|
|
10
|
-
.addHelpText('after', `
|
|
11
|
-
Examples:
|
|
12
|
-
# Install a server
|
|
13
|
-
$ imcp install --category ai-coder-tools --name github-tools
|
|
14
|
-
|
|
15
|
-
# Install with specific client targets (semicolon separated)
|
|
16
|
-
$ imcp install --category ai-coder-tools --name github-tools --clients "MSRooCode;GithubCopilot"
|
|
17
|
-
|
|
18
|
-
# Install with environment variables
|
|
19
|
-
$ imcp install --category ai-coder-tools --name github-tools --envs "GITHUB_TOKEN=abc123;API_KEY=xyz789"
|
|
20
|
-
`)
|
|
21
|
-
.requiredOption('--category <category>', 'Server category')
|
|
22
|
-
.requiredOption('--name <name>', 'Server name to install')
|
|
23
|
-
.option('--clients <clients>', 'Target clients (semicolon separated). Supported values: Cline, MSRooCode, GithubCopilot. If not specified, installs for all clients')
|
|
24
|
-
.option('--envs <envs>', 'Environment variables (semicolon separated key=value pairs)')
|
|
25
|
-
.action(async (options) => {
|
|
26
|
-
try {
|
|
27
|
-
// Check for local feeds existence at the start
|
|
28
|
-
const feedsExist = await hasLocalFeeds();
|
|
29
|
-
if (!feedsExist) {
|
|
30
|
-
Logger.log('Local feeds not found, syncing from remote...');
|
|
31
|
-
await serverService.syncFeeds();
|
|
32
|
-
}
|
|
33
|
-
await mcpManager.initialize();
|
|
34
|
-
const { category, name, verbose, clients, envs } = options;
|
|
35
|
-
Logger.debug(`Install options: ${JSON.stringify({ category, name, verbose, clients, envs })}`);
|
|
36
|
-
const serverName = name.trim();
|
|
37
|
-
Logger.debug(`Server name: ${serverName}`);
|
|
38
|
-
if (!await serverService.validateServerName(category, serverName)) {
|
|
39
|
-
Logger.error('Invalid server name or category provided.\n' +
|
|
40
|
-
'This could be because:\n' +
|
|
41
|
-
' 1. The server name or category is misspelled\n' +
|
|
42
|
-
' 2. Your local feeds are outdated\n\n' +
|
|
43
|
-
'Try running "imcp pull" to update your local feeds from remote.', { category, serverName });
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
// Parse and validate clients
|
|
47
|
-
const parsedClients = clients ? clients.split(';')
|
|
48
|
-
.map((c) => c.trim())
|
|
49
|
-
.filter(Boolean)
|
|
50
|
-
.map((c) => {
|
|
51
|
-
const clientName = c.toLowerCase();
|
|
52
|
-
const validClient = SUPPORTED_CLIENT_NAMES.find((name) => name.toLowerCase() === clientName);
|
|
53
|
-
if (!validClient) {
|
|
54
|
-
Logger.error(`Invalid client name: ${c}`);
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
return validClient;
|
|
58
|
-
})
|
|
59
|
-
.filter((c) => c !== null) : undefined;
|
|
60
|
-
if (parsedClients && parsedClients.length > 0) {
|
|
61
|
-
Logger.debug(`Target clients: ${JSON.stringify(parsedClients)}`);
|
|
62
|
-
}
|
|
63
|
-
// Parse environment variables
|
|
64
|
-
const parsedEnvs = {};
|
|
65
|
-
if (envs) {
|
|
66
|
-
const pairs = envs.split(';');
|
|
67
|
-
for (const pair of pairs) {
|
|
68
|
-
const [key, value] = pair.split('=').map((s) => s.trim());
|
|
69
|
-
if (key && value) {
|
|
70
|
-
parsedEnvs[key] = value;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
Logger.error(`Invalid environment variable format: ${pair}`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (Object.keys(parsedEnvs).length > 0) {
|
|
78
|
-
Logger.debug(`Environment variables: ${JSON.stringify(parsedEnvs)}`);
|
|
79
|
-
}
|
|
80
|
-
Logger.log(`Installing server: ${serverName}`);
|
|
81
|
-
const installOptions = {
|
|
82
|
-
force: false,
|
|
83
|
-
...(parsedClients?.length && { targetClients: parsedClients }),
|
|
84
|
-
...(Object.keys(parsedEnvs).length > 0 && { env: parsedEnvs })
|
|
85
|
-
};
|
|
86
|
-
const results = [await serverService.installMcpServer(category, serverName, installOptions)];
|
|
87
|
-
const { success, messages } = serverService.formatOperationResults(results);
|
|
88
|
-
messages.forEach((message) => {
|
|
89
|
-
if (success) {
|
|
90
|
-
Logger.log(`✓ ${message}`);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
Logger.error(`✗ ${message}`);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
if (!success) {
|
|
97
|
-
process.exit(1);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
102
|
-
Logger.error('Installation failed:', message);
|
|
103
|
-
process.exit(1);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
1
|
+
import{Command}from"commander";import{serverService}from"../../services/ServerService.js";import{Logger}from"../../utils/logger.js";import{hasLocalFeeds}from"../../utils/feedUtils.js";import{SUPPORTED_CLIENT_NAMES}from"../../core/metadatas/constants.js";import{mcpManager}from"../../services/MCPManager.js";export function createInstallCommand(){return new Command("install").description("Install specific MCP servers").addHelpText("after",'\nExamples:\n # Install a server\n $ imcp install --category ai-coder-tools --name github-tools\n\n # Install with specific client targets (semicolon separated)\n $ imcp install --category ai-coder-tools --name github-tools --clients "MSRooCode;GithubCopilot"\n\n # Install with environment variables\n $ imcp install --category ai-coder-tools --name github-tools --envs "GITHUB_TOKEN=abc123;API_KEY=xyz789"\n ').requiredOption("--category <category>","Server category").requiredOption("--name <name>","Server name to install").option("--clients <clients>","Target clients (semicolon separated). Supported values: Cline, MSRooCode, GithubCopilot. If not specified, installs for all clients").option("--envs <envs>","Environment variables (semicolon separated key=value pairs)").action((async e=>{try{await hasLocalFeeds()||(Logger.log("Local feeds not found, syncing from remote..."),await serverService.syncFeeds()),await mcpManager.initialize();const{category:r,name:o,verbose:t,clients:n,envs:s}=e;Logger.debug(`Install options: ${JSON.stringify({category:r,name:o,verbose:t,clients:n,envs:s})}`);const a=o.trim();Logger.debug(`Server name: ${a}`),await serverService.validateServerName(r,a)||(Logger.error('Invalid server name or category provided.\nThis could be because:\n 1. The server name or category is misspelled\n 2. Your local feeds are outdated\n\nTry running "imcp pull" to update your local feeds from remote.',{category:r,serverName:a}),process.exit(1));const i=n?n.split(";").map((e=>e.trim())).filter(Boolean).map((e=>{const r=e.toLowerCase(),o=SUPPORTED_CLIENT_NAMES.find((e=>e.toLowerCase()===r));return o||(Logger.error(`Invalid client name: ${e}`),null)})).filter((e=>null!==e)):void 0;i&&i.length>0&&Logger.debug(`Target clients: ${JSON.stringify(i)}`);const l={};if(s){const e=s.split(";");for(const r of e){const[e,o]=r.split("=").map((e=>e.trim()));e&&o?l[e]=o:Logger.error(`Invalid environment variable format: ${r}`)}}Object.keys(l).length>0&&Logger.debug(`Environment variables: ${JSON.stringify(l)}`),Logger.log(`Installing server: ${a}`);const c={force:!1,...i?.length&&{targetClients:i},...Object.keys(l).length>0&&{env:l}},g=[await serverService.installMcpServer(r,a,c)],{success:m,messages:v}=serverService.formatOperationResults(g);v.forEach((e=>{m?Logger.log(`✓ ${e}`):Logger.error(`✗ ${e}`)})),m||process.exit(1)}catch(e){const r=e instanceof Error?e.message:"Unknown error";Logger.error("Installation failed:",r),process.exit(1)}}))}
|
|
107
2
|
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Command","serverService","Logger","hasLocalFeeds","SUPPORTED_CLIENT_NAMES","mcpManager","createInstallCommand","description","addHelpText","requiredOption","option","action","async","options","log","syncFeeds","initialize","category","name","verbose","clients","envs","debug","JSON","stringify","serverName","trim","validateServerName","error","process","exit","parsedClients","split","map","c","filter","Boolean","clientName","toLowerCase","validClient","find","undefined","length","parsedEnvs","pairs","pair","key","value","s","Object","keys","installOptions","force","targetClients","env","results","installMcpServer","success","messages","formatOperationResults","forEach","message","Error"],"sources":["../../../src/cli/commands/install.ts"],"mappings":"OAASA,YAAe,mBACfC,kBAAqB,yCACrBC,WAAc,+BACdC,kBAAqB,kCAErBC,2BAA8B,2CAC9BC,eAAkB,sCAErB,SAAUC,uBACd,OAAO,IAAIN,QAAQ,WAChBO,YAAY,gCACZC,YAAY,QAAS,uaAWrBC,eACC,wBACA,mBAEDA,eACC,gBACA,0BAEDC,OACC,sBACA,uIAEDA,OACC,gBACA,+DAEDC,QAAOC,MAAOC,IAOb,UAE2BV,kBAEvBD,OAAOY,IAAI,uDACLb,cAAcc,mBAEhBV,WAAWW,aACjB,MAAMC,SAAEA,EAAQC,KAAEA,EAAIC,QAAEA,EAAOC,QAAEA,EAAOC,KAAEA,GAASR,EAEnDX,OAAOoB,MAAM,oBAAoBC,KAAKC,UAAU,CAAEP,WAAUC,OAAMC,UAASC,UAASC,YAEpF,MAAMI,EAAaP,EAAKQ,OACxBxB,OAAOoB,MAAM,gBAAgBG,WAElBxB,cAAc0B,mBAAmBV,EAAUQ,KACpDvB,OAAO0B,MACL,2NAKA,CAAEX,WAAUQ,eAEdI,QAAQC,KAAK,IAIf,MAAMC,EAAgBX,EAAUA,EAAQY,MAAM,KAC3CC,KAAKC,GAAcA,EAAER,SACrBS,OAAOC,SACPH,KAAKC,IACJ,MAAMG,EAAaH,EAAEI,cACfC,EAAcnC,uBAAuBoC,MAAMtB,GAAiBA,EAAKoB,gBAAkBD,IACzF,OAAKE,IACHrC,OAAO0B,MAAM,wBAAwBM,KAC9B,KAES,IAEnBC,QAAQD,GAAwC,OAANA,SAAcO,EAEvDV,GAAiBA,EAAcW,OAAS,GAC1CxC,OAAOoB,MAAM,mBAAmBC,KAAKC,UAAUO,MAIjD,MAAMY,EAAqC,GAC3C,GAAItB,EAAM,CACR,MAAMuB,EAAQvB,EAAKW,MAAM,KACzB,IAAK,MAAMa,KAAQD,EAAO,CACxB,MAAOE,EAAKC,GAASF,EAAKb,MAAM,KAAKC,KAAKe,GAAcA,EAAEtB,SACtDoB,GAAOC,EACTJ,EAAWG,GAAOC,EAElB7C,OAAO0B,MAAM,wCAAwCiB,IAEzD,CACF,CAEII,OAAOC,KAAKP,GAAYD,OAAS,GACnCxC,OAAOoB,MAAM,0BAA0BC,KAAKC,UAAUmB,MAGxDzC,OAAOY,IAAI,sBAAsBW,KAEjC,MAAM0B,EAAuC,CAC3CC,OAAO,KACHrB,GAAeW,QAAU,CAAEW,cAAetB,MAC1CkB,OAAOC,KAAKP,GAAYD,OAAS,GAAK,CAAEY,IAAKX,IAG7CY,EAAU,OAAOtD,cAAcuD,iBAAiBvC,EAAUQ,EAAY0B,KAEtEM,QAAEA,EAAOC,SAAEA,GAAazD,cAAc0D,uBAAuBJ,GAEnEG,EAASE,SAASC,IACZJ,EACFvD,OAAOY,IAAI,KAAK+C,KAEhB3D,OAAO0B,MAAM,KAAKiC,IACpB,IAGGJ,GACH5B,QAAQC,KAAK,EAEjB,CAAE,MAAOF,GACP,MAAMiC,EAAUjC,aAAiBkC,MAAQlC,EAAMiC,QAAU,gBACzD3D,OAAO0B,MAAM,uBAAwBiC,GACrChC,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
|
|
@@ -1,91 +1,2 @@
|
|
|
1
|
-
import { Command } from
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { LOCAL_FEEDS_DIR } from '../../core/metadatas/constants.js';
|
|
5
|
-
import { mcpManager } from '../../services/MCPManager.js';
|
|
6
|
-
import { Logger } from '../../utils/logger.js';
|
|
7
|
-
export function createListCommand() {
|
|
8
|
-
return new Command('list')
|
|
9
|
-
.description('List all available MCP servers from feeds')
|
|
10
|
-
.option('--pull', 'Sync with remote feeds before listing')
|
|
11
|
-
.action(async (options) => {
|
|
12
|
-
try {
|
|
13
|
-
Logger.debug({
|
|
14
|
-
action: 'list_command_started',
|
|
15
|
-
options
|
|
16
|
-
});
|
|
17
|
-
// If sync flag is provided, try to sync first
|
|
18
|
-
if (options.pull) {
|
|
19
|
-
try {
|
|
20
|
-
await mcpManager.syncFeeds();
|
|
21
|
-
}
|
|
22
|
-
catch (syncError) {
|
|
23
|
-
Logger.error('Failed to sync feeds, falling back to local feeds', syncError);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
await mcpManager.initialize();
|
|
27
|
-
Logger.debug({
|
|
28
|
-
action: 'ensuring_feeds_directory',
|
|
29
|
-
path: LOCAL_FEEDS_DIR
|
|
30
|
-
});
|
|
31
|
-
// Ensure feeds directory exists
|
|
32
|
-
await fs.mkdir(LOCAL_FEEDS_DIR, { recursive: true });
|
|
33
|
-
// Read all json files from feeds directory
|
|
34
|
-
Logger.debug('Reading feed files from directory...');
|
|
35
|
-
const files = await fs.readdir(LOCAL_FEEDS_DIR);
|
|
36
|
-
const jsonFiles = files.filter(file => file.endsWith('.json'));
|
|
37
|
-
Logger.debug({
|
|
38
|
-
action: 'found_feed_files',
|
|
39
|
-
count: jsonFiles.length,
|
|
40
|
-
files: jsonFiles
|
|
41
|
-
});
|
|
42
|
-
const feeds = [];
|
|
43
|
-
// Process each json file
|
|
44
|
-
for (const file of jsonFiles) {
|
|
45
|
-
Logger.debug(`Processing feed file: ${file}`);
|
|
46
|
-
try {
|
|
47
|
-
const filePath = path.join(LOCAL_FEEDS_DIR, file);
|
|
48
|
-
const content = await fs.readFile(filePath, 'utf8');
|
|
49
|
-
const feedConfig = JSON.parse(content);
|
|
50
|
-
Logger.debug({
|
|
51
|
-
action: 'processing_feed',
|
|
52
|
-
file,
|
|
53
|
-
feedName: feedConfig.name,
|
|
54
|
-
serverCount: feedConfig.mcpServers?.length ?? 0
|
|
55
|
-
});
|
|
56
|
-
// Extract only needed information
|
|
57
|
-
const simplifiedFeed = {
|
|
58
|
-
name: feedConfig.name,
|
|
59
|
-
displayName: feedConfig.displayName,
|
|
60
|
-
description: feedConfig.description,
|
|
61
|
-
mcpServers: feedConfig.mcpServers.map((server) => ({
|
|
62
|
-
name: server.name,
|
|
63
|
-
description: server.description
|
|
64
|
-
}))
|
|
65
|
-
};
|
|
66
|
-
feeds.push(simplifiedFeed);
|
|
67
|
-
Logger.debug(`Successfully processed feed: ${feedConfig.name}`);
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
Logger.error(`Failed to process feed file: ${file}`, error);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (feeds.length === 0) {
|
|
74
|
-
Logger.log('No feeds found.');
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
Logger.debug({
|
|
78
|
-
action: 'completed_processing',
|
|
79
|
-
totalFeeds: feeds.length,
|
|
80
|
-
totalServers: feeds.reduce((acc, feed) => acc + feed.mcpServers.length, 0)
|
|
81
|
-
});
|
|
82
|
-
// Output as formatted JSON
|
|
83
|
-
console.log(JSON.stringify(feeds, null, 2));
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
Logger.error('Failed to list servers', error);
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}
|
|
1
|
+
import{Command}from"commander";import fs from"fs/promises";import path from"path";import{LOCAL_FEEDS_DIR}from"../../core/metadatas/constants.js";import{mcpManager}from"../../services/MCPManager.js";import{Logger}from"../../utils/logger.js";export function createListCommand(){return new Command("list").description("List all available MCP servers from feeds").option("--pull","Sync with remote feeds before listing").action((async e=>{try{if(Logger.debug({action:"list_command_started",options:e}),e.pull)try{await mcpManager.syncFeeds()}catch(e){Logger.error("Failed to sync feeds, falling back to local feeds",e)}await mcpManager.initialize(),Logger.debug({action:"ensuring_feeds_directory",path:LOCAL_FEEDS_DIR}),await fs.mkdir(LOCAL_FEEDS_DIR,{recursive:!0}),Logger.debug("Reading feed files from directory...");const r=(await fs.readdir(LOCAL_FEEDS_DIR)).filter((e=>e.endsWith(".json")));Logger.debug({action:"found_feed_files",count:r.length,files:r});const o=[];for(const e of r){Logger.debug(`Processing feed file: ${e}`);try{const r=path.join(LOCAL_FEEDS_DIR,e),t=await fs.readFile(r,"utf8"),s=JSON.parse(t);Logger.debug({action:"processing_feed",file:e,feedName:s.name,serverCount:s.mcpServers?.length??0});const i={name:s.name,displayName:s.displayName,description:s.description,mcpServers:s.mcpServers.map((e=>({name:e.name,description:e.description})))};o.push(i),Logger.debug(`Successfully processed feed: ${s.name}`)}catch(r){Logger.error(`Failed to process feed file: ${e}`,r)}}if(0===o.length)return void Logger.log("No feeds found.");Logger.debug({action:"completed_processing",totalFeeds:o.length,totalServers:o.reduce(((e,r)=>e+r.mcpServers.length),0)})}catch(e){Logger.error("Failed to list servers",e),process.exit(1)}}))}
|
|
91
2
|
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Command","fs","path","LOCAL_FEEDS_DIR","mcpManager","Logger","createListCommand","description","option","action","async","options","debug","pull","syncFeeds","syncError","error","initialize","mkdir","recursive","jsonFiles","readdir","filter","file","endsWith","count","length","files","feeds","filePath","join","content","readFile","feedConfig","JSON","parse","feedName","name","serverCount","mcpServers","simplifiedFeed","displayName","map","server","push","log","totalFeeds","totalServers","reduce","acc","feed","process","exit"],"sources":["../../../src/cli/commands/list.ts"],"mappings":"OAASA,YAAe,mBACjBC,OAAQ,qBACRC,SAAU,cACRC,oBAAuB,2CACvBC,eAAkB,sCAClBC,WAAc,+BAcjB,SAAUC,oBACd,OAAO,IAAIN,QAAQ,QAChBO,YAAY,6CACZC,OAAO,SAAU,yCACjBC,QAAOC,MAAOC,IACb,IAOE,GANAN,OAAOO,MAAM,CACXH,OAAQ,uBACRE,YAIEA,EAAQE,KACV,UACQT,WAAWU,WACnB,CAAE,MAAOC,GACPV,OAAOW,MAAM,oDAAqDD,EACpE,OAEIX,WAAWa,aAEjBZ,OAAOO,MAAM,CACXH,OAAQ,2BACRP,KAAMC,wBAIFF,GAAGiB,MAAMf,gBAAiB,CAAEgB,WAAW,IAG7Cd,OAAOO,MAAM,wCACb,MACMQ,SADcnB,GAAGoB,QAAQlB,kBACPmB,QAAOC,GAAQA,EAAKC,SAAS,WAErDnB,OAAOO,MAAM,CACXH,OAAQ,mBACRgB,MAAOL,EAAUM,OACjBC,MAAOP,IAGT,MAAMQ,EAA0B,GAGhC,IAAK,MAAML,KAAQH,EAAW,CAC5Bf,OAAOO,MAAM,yBAAyBW,KACtC,IACE,MAAMM,EAAW3B,KAAK4B,KAAK3B,gBAAiBoB,GACtCQ,QAAgB9B,GAAG+B,SAASH,EAAU,QACtCI,EAAaC,KAAKC,MAAMJ,GAE9B1B,OAAOO,MAAM,CACXH,OAAQ,kBACRc,OACAa,SAAUH,EAAWI,KACrBC,YAAaL,EAAWM,YAAYb,QAAU,IAIhD,MAAMc,EAAiC,CACrCH,KAAMJ,EAAWI,KACjBI,YAAaR,EAAWQ,YACxBlC,YAAa0B,EAAW1B,YACxBgC,WAAYN,EAAWM,WAAWG,KAAKC,IAAgB,CACrDN,KAAMM,EAAON,KACb9B,YAAaoC,EAAOpC,iBAIxBqB,EAAMgB,KAAKJ,GACXnC,OAAOO,MAAM,gCAAgCqB,EAAWI,OAC1D,CAAE,MAAOrB,GACPX,OAAOW,MAAM,gCAAgCO,IAAQP,EACvD,CACF,CAEA,GAAqB,IAAjBY,EAAMF,OAER,YADArB,OAAOwC,IAAI,mBAIbxC,OAAOO,MAAM,CACXH,OAAQ,uBACRqC,WAAYlB,EAAMF,OAClBqB,aAAcnB,EAAMoB,QAAO,CAACC,EAAKC,IAASD,EAAMC,EAAKX,WAAWb,QAAQ,IAK5E,CAAE,MAAOV,GACPX,OAAOW,MAAM,yBAA0BA,GACvCmC,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
|
|
@@ -1,17 +1,2 @@
|
|
|
1
|
-
import { Command
|
|
2
|
-
import { serverService } from '../../services/ServerService.js';
|
|
3
|
-
export function createPullCommand() {
|
|
4
|
-
return new Command('pull')
|
|
5
|
-
.description('Pull MCP server configurations from remote feed source')
|
|
6
|
-
.action(async () => {
|
|
7
|
-
try {
|
|
8
|
-
await serverService.syncFeeds();
|
|
9
|
-
}
|
|
10
|
-
catch (error) {
|
|
11
|
-
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
12
|
-
console.error('Error syncing configurations:', message);
|
|
13
|
-
process.exit(1);
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
}
|
|
1
|
+
import{Command}from"commander";import{serverService}from"../../services/ServerService.js";export function createPullCommand(){return new Command("pull").description("Pull MCP server configurations from remote feed source").action((async()=>{try{await serverService.syncFeeds()}catch(e){e instanceof Error&&e.message,process.exit(1)}}))}
|
|
17
2
|
//# sourceMappingURL=pull.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Command","serverService","createPullCommand","description","action","async","syncFeeds","error","Error","message","process","exit"],"sources":["../../../src/cli/commands/pull.ts"],"mappings":"OAASA,YAAe,mBACfC,kBAAqB,yCAExB,SAAUC,oBACd,OAAO,IAAIF,QAAQ,QAChBG,YAAY,0DACZC,QAAOC,UACN,UACQJ,cAAcK,WACtB,CAAE,MAAOC,GACSA,aAAiBC,OAAQD,EAAME,QAE/CC,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
|
|
@@ -1,34 +1,2 @@
|
|
|
1
|
-
import { Command }
|
|
2
|
-
import { startWebServer } from '../../web/server.js';
|
|
3
|
-
import { mcpManager } from '../../services/MCPManager.js';
|
|
4
|
-
export function createServeCommand() {
|
|
5
|
-
return new Command('serve')
|
|
6
|
-
.description('Serve local web interface')
|
|
7
|
-
.option('-p, --port <port>', 'Port to run the server on', '3000')
|
|
8
|
-
.option('-f, --feed-file <filepath>', 'Path to a custom feed configuration file')
|
|
9
|
-
.option('-s, --schemas-directory <path>', 'Path to a directory containing adhoc schema files')
|
|
10
|
-
.action(async (options) => {
|
|
11
|
-
try {
|
|
12
|
-
// Sync feeds before start the local UI
|
|
13
|
-
await mcpManager.syncFeeds();
|
|
14
|
-
// Ensure MCP manager is initialized before starting the web server
|
|
15
|
-
await mcpManager.initialize(options.feedFile, options.schemasDirectory);
|
|
16
|
-
const port = parseInt(options.port, 10);
|
|
17
|
-
if (isNaN(port) || port < 1 || port > 65535) {
|
|
18
|
-
throw new Error('Invalid port number');
|
|
19
|
-
}
|
|
20
|
-
await startWebServer(port);
|
|
21
|
-
// The server is running, keep the process alive
|
|
22
|
-
process.on('SIGINT', () => {
|
|
23
|
-
console.log('\nShutting down server...');
|
|
24
|
-
process.exit(0);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
29
|
-
console.error('Failed to start web server:', message);
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
1
|
+
import{Command}from"commander";import{startWebServer}from"../../web/server.js";import{mcpManager}from"../../services/MCPManager.js";export function createServeCommand(){return new Command("serve").description("Serve local web interface").option("-p, --port <port>","Port to run the server on","3000").option("-f, --feed-file <filepath>","Path to a custom feed configuration file").option("-s, --schemas-directory <path>","Path to a directory containing adhoc schema files").action((async e=>{try{await mcpManager.syncFeeds(),await mcpManager.initialize(e.feedFile,e.schemasDirectory);const r=parseInt(e.port,10);if(isNaN(r)||r<1||r>65535)throw new Error("Invalid port number");await startWebServer(r),process.on("SIGINT",(()=>{process.exit(0)}))}catch(e){e instanceof Error&&e.message,process.exit(1)}}))}
|
|
34
2
|
//# sourceMappingURL=serve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Command","startWebServer","mcpManager","createServeCommand","description","option","action","async","options","syncFeeds","initialize","feedFile","schemasDirectory","port","parseInt","isNaN","Error","process","on","exit","error","message"],"sources":["../../../src/cli/commands/serve.ts"],"mappings":"OAASA,YAAe,mBACfC,mBAAsB,6BACtBC,eAAkB,sCAIrB,SAAUC,qBACd,OAAO,IAAIH,QAAQ,SAChBI,YAAY,6BACZC,OAAO,oBAAqB,4BAA6B,QACzDA,OAAO,6BAA8B,4CACrCA,OAAO,iCAAkC,qDACzCC,QAAOC,MAAOC,IACb,UAEQN,WAAWO,kBAGXP,WAAWQ,WAAWF,EAAQG,SAAUH,EAAQI,kBAEtD,MAAMC,EAAOC,SAASN,EAAQK,KAAM,IACpC,GAAIE,MAAMF,IAASA,EAAO,GAAKA,EAAO,MACpC,MAAM,IAAIG,MAAM,6BAGZf,eAAeY,GAGrBI,QAAQC,GAAG,UAAU,KAEnBD,QAAQE,KAAK,EAAE,GAEnB,CAAE,MAAOC,GACSA,aAAiBJ,OAAQI,EAAMC,QAE/CJ,QAAQE,KAAK,EACf,IAEN","ignoreList":[]}
|
|
@@ -1,47 +1,2 @@
|
|
|
1
|
-
import { Command
|
|
2
|
-
import { serverService } from '../../services/ServerService.js';
|
|
3
|
-
export function createUninstallCommand() {
|
|
4
|
-
return new Command('uninstall')
|
|
5
|
-
.description('Uninstall specific MCP servers')
|
|
6
|
-
.requiredOption('--category <category>', 'Server category')
|
|
7
|
-
.requiredOption('--names <names>', 'Server names (semicolon separated)')
|
|
8
|
-
.requiredOption('--targets <targets>', 'Target clients to uninstall from (semicolon separated)')
|
|
9
|
-
.option('--remove-data', 'Remove all associated data', true // Change default to true to ensure cleanup happens
|
|
10
|
-
)
|
|
11
|
-
.action(async (options) => {
|
|
12
|
-
try {
|
|
13
|
-
const serverNames = options.names.split(';').map((name) => name.trim());
|
|
14
|
-
const validNames = await serverService.validateServerName(options.category, serverNames);
|
|
15
|
-
if (!validNames) {
|
|
16
|
-
console.error('Invalid server names provided');
|
|
17
|
-
process.exit(1);
|
|
18
|
-
}
|
|
19
|
-
console.log(`Uninstalling servers: ${serverNames.join(', ')}`);
|
|
20
|
-
const results = await Promise.all(serverNames.map((serverName) => {
|
|
21
|
-
const targets = options.targets ? options.targets.split(';').map((t) => t.trim()) : [];
|
|
22
|
-
return serverService.uninstallMcpServer(options.category, serverName, {
|
|
23
|
-
removeData: options.removeData,
|
|
24
|
-
targets: targets
|
|
25
|
-
});
|
|
26
|
-
}));
|
|
27
|
-
const { success, messages } = serverService.formatOperationResults(results);
|
|
28
|
-
messages.forEach(message => {
|
|
29
|
-
if (success) {
|
|
30
|
-
console.log(`✓ ${message}`);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
console.error(`✗ ${message}`);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
if (!success) {
|
|
37
|
-
process.exit(1);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
42
|
-
console.error('Uninstallation failed:', message);
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
1
|
+
import{Command}from"commander";import{serverService}from"../../services/ServerService.js";export function createUninstallCommand(){return new Command("uninstall").description("Uninstall specific MCP servers").requiredOption("--category <category>","Server category").requiredOption("--names <names>","Server names (semicolon separated)").requiredOption("--targets <targets>","Target clients to uninstall from (semicolon separated)").option("--remove-data","Remove all associated data",!0).action((async e=>{try{const r=e.names.split(";").map((e=>e.trim()));await serverService.validateServerName(e.category,r)||process.exit(1);const t=await Promise.all(r.map((r=>{const t=e.targets?e.targets.split(";").map((e=>e.trim())):[];return serverService.uninstallMcpServer(e.category,r,{removeData:e.removeData,targets:t})}))),{success:a,messages:s}=serverService.formatOperationResults(t);s.forEach((e=>{})),a||process.exit(1)}catch(e){e instanceof Error&&e.message,process.exit(1)}}))}
|
|
47
2
|
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Command","serverService","createUninstallCommand","description","requiredOption","option","action","async","options","serverNames","names","split","map","name","trim","validateServerName","category","process","exit","results","Promise","all","serverName","targets","t","uninstallMcpServer","removeData","success","messages","formatOperationResults","forEach","message","error","Error"],"sources":["../../../src/cli/commands/uninstall.ts"],"mappings":"OAASA,YAAe,mBACfC,kBAAqB,yCAExB,SAAUC,yBACd,OAAO,IAAIF,QAAQ,aAChBG,YAAY,kCACZC,eACC,wBACA,mBAEDA,eACC,kBACA,sCAEDA,eACC,sBACA,0DAEDC,OACC,gBACA,8BACA,GAEDC,QAAOC,MAAOC,IACb,IACE,MAAMC,EAAcD,EAAQE,MAAMC,MAAM,KAAKC,KAAKC,GAAiBA,EAAKC,eAE/Cb,cAAcc,mBAAmBP,EAAQQ,SAAUP,IAG1EQ,QAAQC,KAAK,GAKf,MAAMC,QAAgBC,QAAQC,IAC5BZ,EAAYG,KAAKU,IACf,MAAMC,EAAUf,EAAQe,QAAUf,EAAQe,QAAQZ,MAAM,KAAKC,KAAKY,GAAcA,EAAEV,SAAU,GAC5F,OAAOb,cAAcwB,mBAAmBjB,EAAQQ,SAAUM,EAAY,CACpEI,WAAYlB,EAAQkB,WACpBH,QAASA,GACT,MAIAI,QAAEA,EAAOC,SAAEA,GAAa3B,cAAc4B,uBAAuBV,GACnES,EAASE,SAAQC,IAKf,IAGGJ,GACHV,QAAQC,KAAK,EAEjB,CAAE,MAAOc,GACSA,aAAiBC,OAAQD,EAAMD,QAE/Cd,QAAQC,KAAK,EACf,IAEN","ignoreList":[]}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,67 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Command }
|
|
3
|
-
import { createServeCommand } from './commands/serve.js';
|
|
4
|
-
import { Logger } from '../utils/logger.js';
|
|
5
|
-
import { checkForUpdates } from '../utils/versionUtils.js';
|
|
6
|
-
async function main() {
|
|
7
|
-
// Initialize the MCP manager
|
|
8
|
-
// await mcpManager.initialize();
|
|
9
|
-
const program = new Command();
|
|
10
|
-
program
|
|
11
|
-
.name('imcp')
|
|
12
|
-
.description('IMCP (Install Model Context Protocol) CLI')
|
|
13
|
-
.option('--verbose', 'Show detailed logs for all commands');
|
|
14
|
-
// Parse global options first
|
|
15
|
-
program.parseOptions(process.argv);
|
|
16
|
-
const opts = program.opts();
|
|
17
|
-
Logger.setVerbose(!!opts.verbose);
|
|
18
|
-
// Add all commands
|
|
19
|
-
program.addCommand(createServeCommand());
|
|
20
|
-
// program.addCommand(createListCommand());
|
|
21
|
-
// program.addCommand(createInstallCommand());
|
|
22
|
-
// program.addCommand(createUninstallCommand());
|
|
23
|
-
// program.addCommand(createPullCommand());
|
|
24
|
-
// Error handling for the entire CLI
|
|
25
|
-
program.exitOverride();
|
|
26
|
-
// Check for updates
|
|
27
|
-
await checkForUpdates();
|
|
28
|
-
try {
|
|
29
|
-
await program.parseAsync(process.argv);
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
const commanderError = error;
|
|
33
|
-
if (commanderError.code === 'commander.help') {
|
|
34
|
-
// Help was displayed, exit normally
|
|
35
|
-
process.exit(0);
|
|
36
|
-
}
|
|
37
|
-
else if (commanderError.code === 'commander.version') {
|
|
38
|
-
// Version was displayed, exit normally
|
|
39
|
-
process.exit(0);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
console.error('Error:', commanderError.message || 'An unknown error occurred');
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
// Handle unhandled promise rejections
|
|
48
|
-
process.on('unhandledRejection', (error) => {
|
|
49
|
-
if (error instanceof Error) {
|
|
50
|
-
console.error('Unhandled promise rejection:', error.message);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
console.error('Unhandled promise rejection:', error);
|
|
54
|
-
}
|
|
55
|
-
process.exit(1);
|
|
56
|
-
});
|
|
57
|
-
// Start the CLI
|
|
58
|
-
main().catch((error) => {
|
|
59
|
-
if (error instanceof Error) {
|
|
60
|
-
console.error('Fatal error:', error.message);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
console.error('Fatal error:', error);
|
|
64
|
-
}
|
|
65
|
-
process.exit(1);
|
|
66
|
-
});
|
|
2
|
+
import{Command}from"commander";import{createServeCommand}from"./commands/serve.js";import{Logger}from"../utils/logger.js";import{checkForUpdates}from"../utils/versionUtils.js";async function main(){const e=new Command;e.name("imcp").description("IMCP (Install Model Context Protocol) CLI").option("--verbose","Show detailed logs for all commands"),e.parseOptions(process.argv);const o=e.opts();Logger.setVerbose(!!o.verbose),e.addCommand(createServeCommand()),e.exitOverride(),await checkForUpdates();try{await e.parseAsync(process.argv)}catch(e){const o=e;"commander.help"===o.code||"commander.version"===o.code?process.exit(0):process.exit(1)}}process.on("unhandledRejection",(e=>{Error,process.exit(1)})),main().catch((e=>{Error,process.exit(1)}));
|
|
67
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Command","createServeCommand","Logger","checkForUpdates","async","main","program","name","description","option","parseOptions","process","argv","opts","setVerbose","verbose","addCommand","exitOverride","parseAsync","error","commanderError","code","exit","on","Error","catch"],"sources":["../../src/cli/index.ts"],"mappings":";OAESA,YAAe,mBACfC,uBAA0B,6BAM1BC,WAAc,4BACdC,oBAAuB,2BAOhCC,eAAeC,OAIb,MAAMC,EAAU,IAAIN,QACpBM,EACGC,KAAK,QACLC,YAAY,6CACZC,OAAO,YAAa,uCAGvBH,EAAQI,aAAaC,QAAQC,MAC7B,MAAMC,EAAOP,EAAQO,OACrBX,OAAOY,aAAaD,EAAKE,SAGzBT,EAAQU,WAAWf,sBAOnBK,EAAQW,qBAGFd,kBAEN,UACQG,EAAQY,WAAWP,QAAQC,KACnC,CAAE,MAAOO,GACP,MAAMC,EAAiBD,EAEK,mBAAxBC,EAAeC,MAGgB,sBAAxBD,EAAeC,KADxBV,QAAQW,KAAK,GAMbX,QAAQW,KAAK,EAEjB,CACF,CAGAX,QAAQY,GAAG,sBAAuBJ,IACXK,MAKrBb,QAAQW,KAAK,EAAE,IAIjBjB,OAAOoB,OAAON,IACSK,MAKrBb,QAAQW,KAAK,EAAE","ignoreList":[]}
|