@global-packages/mcp-kit 1.0.0 → 1.0.3
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/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +117 -71
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +27 -27
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +50 -35
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/doctor.d.ts +5 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +128 -104
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/env-check.d.ts.map +1 -1
- package/dist/commands/env-check.js +63 -40
- package/dist/commands/env-check.js.map +1 -1
- package/dist/commands/export.d.ts +6 -4
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +52 -41
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +109 -74
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +60 -56
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.d.ts +5 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +189 -87
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +56 -48
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.d.ts +5 -2
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +103 -45
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/open.d.ts.map +1 -1
- package/dist/commands/open.js +31 -23
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +60 -43
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +52 -48
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +52 -20
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +94 -76
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/toggle.d.ts.map +1 -1
- package/dist/commands/toggle.js +22 -24
- package/dist/commands/toggle.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +86 -62
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +43 -37
- package/dist/commands/validate.js.map +1 -1
- package/dist/constants.d.ts +3 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +377 -78
- package/dist/constants.js.map +1 -1
- package/dist/core/credentials.d.ts +15 -2
- package/dist/core/credentials.d.ts.map +1 -1
- package/dist/core/credentials.js +205 -116
- package/dist/core/credentials.js.map +1 -1
- package/dist/core/detector.d.ts +28 -2
- package/dist/core/detector.d.ts.map +1 -1
- package/dist/core/detector.js +101 -60
- package/dist/core/detector.js.map +1 -1
- package/dist/core/registry.d.ts +25 -1
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js +45 -33
- package/dist/core/registry.js.map +1 -1
- package/dist/core/validator.d.ts +18 -2
- package/dist/core/validator.d.ts.map +1 -1
- package/dist/core/validator.js +53 -30
- package/dist/core/validator.js.map +1 -1
- package/dist/core/writer.d.ts +19 -1
- package/dist/core/writer.d.ts.map +1 -1
- package/dist/core/writer.js +41 -35
- package/dist/core/writer.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +233 -123
- package/dist/index.js.map +1 -1
- package/dist/postinstall.js +25 -30
- package/dist/postinstall.js.map +1 -1
- package/dist/prompts/dev-prompts.d.ts +10 -2
- package/dist/prompts/dev-prompts.d.ts.map +1 -1
- package/dist/prompts/dev-prompts.js +87 -31
- package/dist/prompts/dev-prompts.js.map +1 -1
- package/dist/prompts/non-dev-prompts.d.ts +16 -2
- package/dist/prompts/non-dev-prompts.d.ts.map +1 -1
- package/dist/prompts/non-dev-prompts.js +90 -35
- package/dist/prompts/non-dev-prompts.js.map +1 -1
- package/dist/prompts/shared-prompts.d.ts +10 -1
- package/dist/prompts/shared-prompts.d.ts.map +1 -1
- package/dist/prompts/shared-prompts.js +66 -43
- package/dist/prompts/shared-prompts.js.map +1 -1
- package/dist/types.d.ts +22 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -2
- package/dist/types.js.map +1 -1
- package/dist/utils/fs.d.ts +36 -4
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +92 -28
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +18 -24
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/network.d.ts +12 -1
- package/dist/utils/network.d.ts.map +1 -1
- package/dist/utils/network.js +37 -9
- package/dist/utils/network.js.map +1 -1
- package/dist/utils/spinner.js +10 -19
- package/dist/utils/spinner.js.map +1 -1
- package/package.json +58 -16
- package/src/postinstall.ts +121 -0
package/dist/commands/init.js
CHANGED
|
@@ -1,117 +1,219 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { detectVsCodePath, detectOS, isNodeVersionCompatible, detectExistingMcps } from '../core/detector.js';
|
|
3
|
+
import { addServerToMcpJson } from '../core/writer.js';
|
|
4
|
+
import { storeCredential, buildEnvRefValue, ensureGitignored, getEnvFilePath } from '../core/credentials.js';
|
|
5
|
+
import { getMcpsForProfile } from '../core/registry.js';
|
|
6
|
+
import { askCredentialStorage, askMcpSelection } from '../prompts/shared-prompts.js';
|
|
7
|
+
import { collectDevAnswers } from '../prompts/dev-prompts.js';
|
|
8
|
+
import { collectNonDevAnswers } from '../prompts/non-dev-prompts.js';
|
|
9
|
+
import { log, printTable } from '../utils/logger.js';
|
|
10
|
+
import { safeReadJSON, safeWriteJSON, ensureDir } from '../utils/fs.js';
|
|
11
|
+
import { MCP_KIT_META_PATH, MCP_KIT_DIR } from '../constants.js';
|
|
12
|
+
import { createRequire } from 'node:module';
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
const _require = createRequire(import.meta.url);
|
|
15
|
+
const pkg = _require('../../package.json');
|
|
16
|
+
//
|
|
17
|
+
// Helpers
|
|
18
|
+
//
|
|
19
|
+
/**
|
|
20
|
+
* Replace ${KEY} placeholders in an args array with actual values.
|
|
21
|
+
*/
|
|
18
22
|
function buildArgs(mcp, answers) {
|
|
19
|
-
|
|
20
|
-
|
|
23
|
+
return mcp.args.map(arg => arg.replace(/\$\{([^}]+)\}/g, (_, key) => answers[key] ?? ''));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Build the resolved command for an MCP, handling any ${KEY} in command.
|
|
27
|
+
*/
|
|
28
|
+
function buildCommand(mcp, answers) {
|
|
29
|
+
return mcp.command.replace(/\$\{([^}]+)\}/g, (_, key) => answers[key] ?? mcp.command);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Determine which env var keys are embedded in args (via ${KEY} placeholders).
|
|
33
|
+
*/
|
|
34
|
+
function getArgEmbeddedKeys(mcp) {
|
|
35
|
+
const keys = new Set();
|
|
36
|
+
const allText = [...mcp.args, mcp.command].join(' ');
|
|
37
|
+
for (const match of allText.matchAll(/\$\{([^}]+)\}/g)) {
|
|
38
|
+
keys.add(match[1]);
|
|
21
39
|
}
|
|
22
|
-
return
|
|
40
|
+
return keys;
|
|
23
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Build the env record for an MCP server entry.
|
|
44
|
+
*/
|
|
24
45
|
function buildEnvRecord(mcp, answers, storage) {
|
|
46
|
+
const argEmbedded = getArgEmbeddedKeys(mcp);
|
|
25
47
|
const env = {};
|
|
26
48
|
for (const envVar of mcp.envVars) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
49
|
+
if (argEmbedded.has(envVar.key))
|
|
50
|
+
continue; // already in args
|
|
51
|
+
const value = answers[envVar.key] ?? '';
|
|
52
|
+
if (!value && !envVar.required)
|
|
53
|
+
continue; // skip empty optional
|
|
54
|
+
env[envVar.key] = buildEnvRefValue(envVar.key, storage, value);
|
|
32
55
|
}
|
|
33
56
|
return env;
|
|
34
57
|
}
|
|
35
|
-
async function runInit(options) {
|
|
58
|
+
export async function runInit(options) {
|
|
36
59
|
try {
|
|
60
|
+
// Validate flags
|
|
37
61
|
if (!options.dev && !options.nonDev) {
|
|
38
|
-
|
|
62
|
+
log.error('You must specify either --dev or --non-dev');
|
|
63
|
+
log.muted(' Usage: mcp-kit init --dev');
|
|
64
|
+
log.muted(' mcp-kit init --non-dev');
|
|
39
65
|
process.exit(1);
|
|
40
66
|
}
|
|
41
67
|
if (options.dev && options.nonDev) {
|
|
42
|
-
|
|
68
|
+
log.error('Use either --dev or --non-dev, not both');
|
|
43
69
|
process.exit(1);
|
|
44
70
|
}
|
|
45
|
-
|
|
46
|
-
|
|
71
|
+
// Node version check
|
|
72
|
+
if (!isNodeVersionCompatible()) {
|
|
73
|
+
log.error(`Node.js >= 18.0.0 is required. Current: ${process.version}`);
|
|
47
74
|
process.exit(1);
|
|
48
75
|
}
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
76
|
+
const profileMode = options.dev ? 'dev' : 'non-dev';
|
|
77
|
+
const modeLabel = profileMode === 'dev' ? 'Developer' : 'Non-Developer';
|
|
78
|
+
log.header(`\n mcp-kit - MCP Configuration Wizard\n Mode: ${modeLabel}`);
|
|
79
|
+
// Detect .vscode path
|
|
80
|
+
const vscodePaths = await detectVsCodePath();
|
|
81
|
+
const currentOS = detectOS();
|
|
82
|
+
log.success(`Detected OS: ${currentOS}`);
|
|
83
|
+
const sourceLabel = vscodePaths.source === 'project'
|
|
84
|
+
? 'project .vscode folder'
|
|
85
|
+
: vscodePaths.source === 'global'
|
|
86
|
+
? 'VS Code global config'
|
|
87
|
+
: 'created new .vscode folder';
|
|
88
|
+
log.success(`Found ${sourceLabel} at: ${vscodePaths.vscodeFolderPath}`);
|
|
89
|
+
// Check for existing config
|
|
90
|
+
const existingMcps = await detectExistingMcps(vscodePaths.mcpJsonPath);
|
|
91
|
+
if (existingMcps.length > 0) {
|
|
92
|
+
log.warn(`Found existing MCP config: ${existingMcps.join(', ')}`);
|
|
93
|
+
}
|
|
94
|
+
// Ask credential storage mode
|
|
95
|
+
const storage = await askCredentialStorage();
|
|
96
|
+
// Get MCP list for this profile
|
|
97
|
+
const profileMcps = getMcpsForProfile(profileMode);
|
|
98
|
+
// Ask which MCPs to configure
|
|
99
|
+
const selectedIds = await askMcpSelection(profileMcps, existingMcps);
|
|
100
|
+
if (selectedIds.length === 0) {
|
|
101
|
+
log.warn('No MCPs selected. Nothing to configure.');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const selectedMcps = profileMcps.filter(m => selectedIds.includes(m.id));
|
|
105
|
+
// Collect answers
|
|
106
|
+
const answers = profileMode === 'dev'
|
|
107
|
+
? await collectDevAnswers(selectedMcps, storage)
|
|
108
|
+
: await collectNonDevAnswers(selectedMcps, storage);
|
|
109
|
+
const envFilePath = getEnvFilePath(vscodePaths.vscodeFolderPath);
|
|
110
|
+
log.blank();
|
|
111
|
+
// DRY-RUN: preview only, do not write
|
|
112
|
+
if (options.dryRun) {
|
|
113
|
+
log.header('Dry-run preview - no files will be changed');
|
|
114
|
+
const rows = selectedMcps.map(mcp => {
|
|
115
|
+
const mcpAnswers = answers.get(mcp.id) ?? {};
|
|
116
|
+
const entry = {
|
|
117
|
+
type: 'stdio',
|
|
118
|
+
command: buildCommand(mcp, mcpAnswers),
|
|
119
|
+
args: buildArgs(mcp, mcpAnswers),
|
|
120
|
+
env: buildEnvRecord(mcp, mcpAnswers, storage),
|
|
121
|
+
};
|
|
122
|
+
if (entry.env && Object.keys(entry.env).length === 0)
|
|
123
|
+
delete entry.env;
|
|
124
|
+
return [
|
|
125
|
+
chalk.cyan(mcp.id),
|
|
126
|
+
mcp.name,
|
|
127
|
+
entry.command,
|
|
128
|
+
(entry.args ?? []).join(' '),
|
|
129
|
+
Object.keys(entry.env ?? {}).join(', ') || chalk.gray('-'),
|
|
130
|
+
];
|
|
131
|
+
});
|
|
132
|
+
printTable(['ID', 'Name', 'Command', 'Args', 'Env Vars'], rows);
|
|
133
|
+
log.blank();
|
|
134
|
+
log.muted(`Would write to: ${vscodePaths.mcpJsonPath}`);
|
|
135
|
+
log.muted('Remove --dry-run to apply these changes.');
|
|
136
|
+
return;
|
|
57
137
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
138
|
+
// LIVE: write to mcp.json
|
|
139
|
+
log.step('Writing mcp.json entries...');
|
|
140
|
+
const configured = [];
|
|
141
|
+
const failed = [];
|
|
142
|
+
for (const mcp of selectedMcps) {
|
|
143
|
+
try {
|
|
144
|
+
const mcpAnswers = answers.get(mcp.id) ?? {};
|
|
145
|
+
const argEmbedded = getArgEmbeddedKeys(mcp);
|
|
146
|
+
// Store secrets
|
|
147
|
+
for (const envVar of mcp.envVars) {
|
|
148
|
+
if (argEmbedded.has(envVar.key))
|
|
149
|
+
continue;
|
|
150
|
+
const value = mcpAnswers[envVar.key];
|
|
151
|
+
if (value && envVar.secret && storage !== 'inline') {
|
|
152
|
+
await storeCredential(envVar.key, value, storage, envFilePath);
|
|
153
|
+
}
|
|
71
154
|
}
|
|
155
|
+
// Build entry
|
|
156
|
+
const entry = {
|
|
157
|
+
type: 'stdio',
|
|
158
|
+
command: buildCommand(mcp, mcpAnswers),
|
|
159
|
+
args: buildArgs(mcp, mcpAnswers),
|
|
160
|
+
env: buildEnvRecord(mcp, mcpAnswers, storage),
|
|
161
|
+
};
|
|
162
|
+
// Remove empty env block
|
|
163
|
+
if (entry.env && Object.keys(entry.env).length === 0) {
|
|
164
|
+
delete entry.env;
|
|
165
|
+
}
|
|
166
|
+
await addServerToMcpJson(vscodePaths.mcpJsonPath, mcp.id, entry);
|
|
167
|
+
configured.push(mcp.name);
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
171
|
+
log.error(`Failed to configure ${mcp.name}: ${message}`);
|
|
172
|
+
failed.push(mcp.name);
|
|
72
173
|
}
|
|
73
|
-
const entry = {
|
|
74
|
-
command: mcp.command,
|
|
75
|
-
args: buildArgs(mcp, mcpAnswers),
|
|
76
|
-
env: buildEnvRecord(mcp, mcpAnswers, storage)
|
|
77
|
-
};
|
|
78
|
-
await (0, writer_1.addServerToMcpJson)(detected.mcpJsonPath, mcp.id, entry);
|
|
79
174
|
}
|
|
80
|
-
|
|
81
|
-
|
|
175
|
+
// Ensure .gitignore for dotenv mode
|
|
176
|
+
if (storage === 'dotenv') {
|
|
177
|
+
const projectDir = path.dirname(vscodePaths.vscodeFolderPath);
|
|
178
|
+
await ensureGitignored(projectDir);
|
|
82
179
|
}
|
|
83
|
-
|
|
84
|
-
await
|
|
85
|
-
|
|
180
|
+
// Update meta.json
|
|
181
|
+
await ensureDir(MCP_KIT_DIR);
|
|
182
|
+
const existingMeta = await safeReadJSON(MCP_KIT_META_PATH) ?? {};
|
|
183
|
+
const currentInstalled = existingMeta.installedMcps ?? [];
|
|
184
|
+
const meta = {
|
|
185
|
+
...existingMeta,
|
|
186
|
+
installedAt: existingMeta.installedAt ?? new Date().toISOString(),
|
|
86
187
|
lastUpdated: new Date().toISOString(),
|
|
87
|
-
profileMode
|
|
88
|
-
vscodePath:
|
|
188
|
+
profileMode,
|
|
189
|
+
vscodePath: vscodePaths.mcpJsonPath,
|
|
89
190
|
credentialStorage: storage,
|
|
90
|
-
installedMcps:
|
|
91
|
-
mcpKitVersion:
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
191
|
+
installedMcps: [...new Set([...currentInstalled, ...selectedIds])],
|
|
192
|
+
mcpKitVersion: pkg.version,
|
|
193
|
+
};
|
|
194
|
+
await safeWriteJSON(MCP_KIT_META_PATH, meta);
|
|
195
|
+
// Print final summary
|
|
196
|
+
log.blank();
|
|
197
|
+
log.header('✓ mcp-kit setup complete!');
|
|
198
|
+
log.blank();
|
|
199
|
+
const summaryRows = [
|
|
200
|
+
...configured.map(n => [chalk.green('✓'), n, 'configured']),
|
|
201
|
+
...failed.map(n => [chalk.red('✗'), n, 'failed']),
|
|
202
|
+
];
|
|
203
|
+
printTable(['', 'MCP', 'Result'], summaryRows);
|
|
204
|
+
log.muted(`Written to: ${vscodePaths.mcpJsonPath}`);
|
|
205
|
+
log.muted(`Credentials: ${storage}`);
|
|
206
|
+
log.blank();
|
|
207
|
+
log.step('Next step: Reload VS Code window');
|
|
208
|
+
log.muted(currentOS === 'windows'
|
|
209
|
+
? 'Windows: Ctrl+Shift+P → "Reload Window"'
|
|
210
|
+
: 'Mac/Linux: Cmd+Shift+P → "Reload Window"');
|
|
107
211
|
}
|
|
108
212
|
catch (err) {
|
|
109
|
-
const message = err instanceof Error ? err.message :
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
console.error(err.stack);
|
|
114
|
-
}
|
|
213
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
214
|
+
log.error(`Init failed: ${message}`);
|
|
215
|
+
if (process.env['DEBUG'])
|
|
216
|
+
console.error(err);
|
|
115
217
|
process.exit(1);
|
|
116
218
|
}
|
|
117
219
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAeA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA2EhD"}
|
package/dist/commands/install.js
CHANGED
|
@@ -1,68 +1,76 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const packageJson = require("../../package.json");
|
|
15
|
-
async function runInstall() {
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { appendText, ensureDir, safeWriteJSON } from '../utils/fs.js';
|
|
4
|
+
import { log } from '../utils/logger.js';
|
|
5
|
+
import { startSpinner, succeedSpinner, failSpinner } from '../utils/spinner.js';
|
|
6
|
+
import { isNodeVersionCompatible } from '../core/detector.js';
|
|
7
|
+
import { MCP_REGISTRY, MCP_KIT_META_PATH, MCP_KIT_DIR, MCP_KIT_INSTALL_LOG } from '../constants.js';
|
|
8
|
+
const _require = createRequire(import.meta.url);
|
|
9
|
+
const pkg = _require('../../package.json');
|
|
10
|
+
//
|
|
11
|
+
// mcp-kit install
|
|
12
|
+
//
|
|
13
|
+
export async function runInstall() {
|
|
16
14
|
try {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
log.header('mcp-kit - Pre-install MCP Packages');
|
|
16
|
+
// Node version check
|
|
17
|
+
if (!isNodeVersionCompatible()) {
|
|
18
|
+
log.error(`Node.js >= 18.0.0 is required. Current: ${process.version}`);
|
|
19
|
+
log.step('Download the latest Node.js from: https://nodejs.org');
|
|
21
20
|
process.exit(1);
|
|
22
21
|
}
|
|
22
|
+
await ensureDir(MCP_KIT_DIR);
|
|
23
|
+
const succeeded = [];
|
|
23
24
|
const failed = [];
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
for (const mcp of MCP_REGISTRY) {
|
|
26
|
+
// SonarQube uses a JAR file, not an npm package - skip global install
|
|
27
|
+
if (mcp.command === 'java') {
|
|
28
|
+
log.muted(` Skipping ${mcp.name} (JAR-based, not an npm package)`);
|
|
29
|
+
succeeded.push(mcp.name);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
// Python-based servers (e.g. AWS MCP) run via uv - skip npm install
|
|
33
|
+
if (mcp.command === 'uvx') {
|
|
34
|
+
log.muted(` Skipping ${mcp.name} (Python/uvx-based - install uv via: brew install uv)`);
|
|
35
|
+
succeeded.push(mcp.name);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
const spinner = startSpinner(`Installing ${mcp.name} (${mcp.npmPackage})...`);
|
|
27
39
|
try {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
succeeded
|
|
40
|
+
execSync(`npm install -g ${mcp.npmPackage}`, { stdio: 'ignore' });
|
|
41
|
+
succeedSpinner(spinner, `Installed ${mcp.name}`);
|
|
42
|
+
succeeded.push(mcp.name);
|
|
31
43
|
}
|
|
32
44
|
catch (err) {
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
failed.push(
|
|
45
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
46
|
+
failSpinner(spinner, `Failed: ${mcp.name}`);
|
|
47
|
+
failed.push(mcp.name);
|
|
48
|
+
await appendText(MCP_KIT_INSTALL_LOG, `[${new Date().toISOString()}] ${mcp.name} (${mcp.npmPackage}): ${message}\n`);
|
|
36
49
|
}
|
|
37
50
|
}
|
|
38
|
-
|
|
51
|
+
// Write meta.json
|
|
39
52
|
const meta = {
|
|
40
53
|
installedAt: new Date().toISOString(),
|
|
41
54
|
lastUpdated: new Date().toISOString(),
|
|
42
|
-
|
|
43
|
-
vscodePath: "",
|
|
44
|
-
credentialStorage: "keychain",
|
|
45
|
-
installedMcps: constants_1.MCP_REGISTRY.map((m) => m.id),
|
|
46
|
-
mcpKitVersion: packageJson.version
|
|
55
|
+
mcpKitVersion: pkg.version,
|
|
47
56
|
};
|
|
48
|
-
await
|
|
57
|
+
await safeWriteJSON(MCP_KIT_META_PATH, meta);
|
|
58
|
+
log.blank();
|
|
59
|
+
log.success(`Packages installed: ${succeeded.length}`);
|
|
49
60
|
if (failed.length > 0) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
await fs_extra_1.default.appendFile(errorLogPath, `${lines}\n`, "utf8");
|
|
61
|
+
log.warn(`Failed packages (${failed.length}): ${failed.join(', ')}`);
|
|
62
|
+
log.muted(`See install log: ${MCP_KIT_INSTALL_LOG}`);
|
|
53
63
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
64
|
+
log.blank();
|
|
65
|
+
log.info('Next step - configure your MCP servers:');
|
|
66
|
+
log.code('mcp-kit init --dev # for developers');
|
|
67
|
+
log.code('mcp-kit init --non-dev # for non-developers');
|
|
58
68
|
}
|
|
59
69
|
catch (err) {
|
|
60
|
-
const message = err instanceof Error ? err.message :
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
console.error(err.stack);
|
|
65
|
-
}
|
|
70
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
71
|
+
log.error(`Install failed: ${message}`);
|
|
72
|
+
if (process.env['DEBUG'])
|
|
73
|
+
console.error(err);
|
|
66
74
|
process.exit(1);
|
|
67
75
|
}
|
|
68
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/list.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
interface ListOptions {
|
|
2
2
|
available?: boolean;
|
|
3
3
|
dev?: boolean;
|
|
4
4
|
nonDev?: boolean;
|
|
5
|
-
|
|
5
|
+
json?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function runList(options: ListOptions): Promise<void>;
|
|
8
|
+
export {};
|
|
6
9
|
//# sourceMappingURL=list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEjE"}
|