@global-packages/mcp-kit 1.0.1 → 1.0.4

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 (120) hide show
  1. package/dist/commands/add.d.ts.map +1 -1
  2. package/dist/commands/add.js +117 -71
  3. package/dist/commands/add.js.map +1 -1
  4. package/dist/commands/backup.d.ts.map +1 -1
  5. package/dist/commands/backup.js +27 -27
  6. package/dist/commands/backup.js.map +1 -1
  7. package/dist/commands/completion.d.ts.map +1 -1
  8. package/dist/commands/completion.js +50 -35
  9. package/dist/commands/completion.js.map +1 -1
  10. package/dist/commands/doctor.d.ts +5 -1
  11. package/dist/commands/doctor.d.ts.map +1 -1
  12. package/dist/commands/doctor.js +128 -104
  13. package/dist/commands/doctor.js.map +1 -1
  14. package/dist/commands/env-check.d.ts.map +1 -1
  15. package/dist/commands/env-check.js +63 -40
  16. package/dist/commands/env-check.js.map +1 -1
  17. package/dist/commands/export.d.ts +6 -4
  18. package/dist/commands/export.d.ts.map +1 -1
  19. package/dist/commands/export.js +52 -41
  20. package/dist/commands/export.js.map +1 -1
  21. package/dist/commands/import.d.ts.map +1 -1
  22. package/dist/commands/import.js +109 -74
  23. package/dist/commands/import.js.map +1 -1
  24. package/dist/commands/info.d.ts.map +1 -1
  25. package/dist/commands/info.js +60 -56
  26. package/dist/commands/info.js.map +1 -1
  27. package/dist/commands/init.d.ts +5 -2
  28. package/dist/commands/init.d.ts.map +1 -1
  29. package/dist/commands/init.js +189 -87
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/install.d.ts.map +1 -1
  32. package/dist/commands/install.js +56 -48
  33. package/dist/commands/install.js.map +1 -1
  34. package/dist/commands/list.d.ts +5 -2
  35. package/dist/commands/list.d.ts.map +1 -1
  36. package/dist/commands/list.js +103 -45
  37. package/dist/commands/list.js.map +1 -1
  38. package/dist/commands/open.d.ts.map +1 -1
  39. package/dist/commands/open.js +31 -23
  40. package/dist/commands/open.js.map +1 -1
  41. package/dist/commands/remove.d.ts.map +1 -1
  42. package/dist/commands/remove.js +60 -43
  43. package/dist/commands/remove.js.map +1 -1
  44. package/dist/commands/reset.d.ts.map +1 -1
  45. package/dist/commands/reset.js +52 -48
  46. package/dist/commands/reset.js.map +1 -1
  47. package/dist/commands/search.d.ts.map +1 -1
  48. package/dist/commands/search.js +52 -20
  49. package/dist/commands/search.js.map +1 -1
  50. package/dist/commands/status.d.ts.map +1 -1
  51. package/dist/commands/status.js +94 -76
  52. package/dist/commands/status.js.map +1 -1
  53. package/dist/commands/toggle.d.ts.map +1 -1
  54. package/dist/commands/toggle.js +22 -24
  55. package/dist/commands/toggle.js.map +1 -1
  56. package/dist/commands/update.d.ts.map +1 -1
  57. package/dist/commands/update.js +86 -62
  58. package/dist/commands/update.js.map +1 -1
  59. package/dist/commands/validate.d.ts.map +1 -1
  60. package/dist/commands/validate.js +43 -37
  61. package/dist/commands/validate.js.map +1 -1
  62. package/dist/constants.d.ts +3 -1
  63. package/dist/constants.d.ts.map +1 -1
  64. package/dist/constants.js +377 -78
  65. package/dist/constants.js.map +1 -1
  66. package/dist/core/credentials.d.ts +15 -2
  67. package/dist/core/credentials.d.ts.map +1 -1
  68. package/dist/core/credentials.js +205 -116
  69. package/dist/core/credentials.js.map +1 -1
  70. package/dist/core/detector.d.ts +28 -2
  71. package/dist/core/detector.d.ts.map +1 -1
  72. package/dist/core/detector.js +101 -60
  73. package/dist/core/detector.js.map +1 -1
  74. package/dist/core/registry.d.ts +25 -1
  75. package/dist/core/registry.d.ts.map +1 -1
  76. package/dist/core/registry.js +45 -33
  77. package/dist/core/registry.js.map +1 -1
  78. package/dist/core/validator.d.ts +18 -2
  79. package/dist/core/validator.d.ts.map +1 -1
  80. package/dist/core/validator.js +53 -30
  81. package/dist/core/validator.js.map +1 -1
  82. package/dist/core/writer.d.ts +19 -1
  83. package/dist/core/writer.d.ts.map +1 -1
  84. package/dist/core/writer.js +41 -35
  85. package/dist/core/writer.js.map +1 -1
  86. package/dist/index.js +233 -122
  87. package/dist/index.js.map +1 -1
  88. package/dist/postinstall.js +25 -30
  89. package/dist/postinstall.js.map +1 -1
  90. package/dist/prompts/dev-prompts.d.ts +10 -2
  91. package/dist/prompts/dev-prompts.d.ts.map +1 -1
  92. package/dist/prompts/dev-prompts.js +87 -31
  93. package/dist/prompts/dev-prompts.js.map +1 -1
  94. package/dist/prompts/non-dev-prompts.d.ts +16 -2
  95. package/dist/prompts/non-dev-prompts.d.ts.map +1 -1
  96. package/dist/prompts/non-dev-prompts.js +90 -35
  97. package/dist/prompts/non-dev-prompts.js.map +1 -1
  98. package/dist/prompts/shared-prompts.d.ts +10 -1
  99. package/dist/prompts/shared-prompts.d.ts.map +1 -1
  100. package/dist/prompts/shared-prompts.js +66 -43
  101. package/dist/prompts/shared-prompts.js.map +1 -1
  102. package/dist/types.d.ts +22 -6
  103. package/dist/types.d.ts.map +1 -1
  104. package/dist/types.js +4 -2
  105. package/dist/types.js.map +1 -1
  106. package/dist/utils/fs.d.ts +36 -4
  107. package/dist/utils/fs.d.ts.map +1 -1
  108. package/dist/utils/fs.js +92 -28
  109. package/dist/utils/fs.js.map +1 -1
  110. package/dist/utils/logger.d.ts.map +1 -1
  111. package/dist/utils/logger.js +18 -24
  112. package/dist/utils/logger.js.map +1 -1
  113. package/dist/utils/network.d.ts +12 -1
  114. package/dist/utils/network.d.ts.map +1 -1
  115. package/dist/utils/network.js +37 -9
  116. package/dist/utils/network.js.map +1 -1
  117. package/dist/utils/spinner.js +10 -19
  118. package/dist/utils/spinner.js.map +1 -1
  119. package/package.json +62 -27
  120. package/src/postinstall.ts +121 -0
@@ -1,147 +1,171 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.runDoctor = runDoctor;
7
- const fs_extra_1 = __importDefault(require("fs-extra"));
8
- const constants_1 = require("../constants");
9
- const credentials_1 = require("../core/credentials");
10
- const detector_1 = require("../core/detector");
11
- const registry_1 = require("../core/registry");
12
- const writer_1 = require("../core/writer");
13
- const validator_1 = require("../core/validator");
14
- const logger_1 = require("../utils/logger");
15
- async function runDoctor() {
1
+ import fs from 'node:fs/promises';
2
+ import { detectVsCodePath } from '../core/detector.js';
3
+ import { readMcpJson } from '../core/writer.js';
4
+ import { getMcpById } from '../core/registry.js';
5
+ import { getCredential, getEnvFilePath } from '../core/credentials.js';
6
+ import { checkNetworkReachability, checkNpmPackageExists } from '../core/validator.js';
7
+ import { log } from '../utils/logger.js';
8
+ import { safeReadJSON } from '../utils/fs.js';
9
+ import { MCP_KIT_META_PATH } from '../constants.js';
10
+ export async function runDoctor(options = {}) {
16
11
  try {
17
- logger_1.log.header("🩺 Running diagnostics...");
18
- const detected = await (0, detector_1.detectVsCodePath)();
19
- if (!(await fs_extra_1.default.pathExists(detected.vscodeFolderPath))) {
20
- logger_1.log.warn("No .vscode folder found");
12
+ if (!options.json)
13
+ log.header('mcp-kit - Diagnostics');
14
+ const vscodePaths = await detectVsCodePath();
15
+ if (vscodePaths.source === 'created') {
16
+ log.warn('No .vscode folder found - created a new one at: ' + vscodePaths.vscodeFolderPath);
21
17
  }
22
18
  let config;
23
19
  try {
24
- config = await (0, writer_1.readMcpJson)(detected.mcpJsonPath);
20
+ config = await readMcpJson(vscodePaths.mcpJsonPath);
25
21
  }
26
- catch {
27
- logger_1.log.error("mcp.json is missing or malformed");
22
+ catch (err) {
23
+ const message = err instanceof Error ? err.message : String(err);
24
+ log.error('mcp.json is missing or malformed: ' + message);
25
+ log.step('Run "mcp-kit init dev" or "mcp-kit init non-dev" to create it.');
28
26
  process.exit(1);
29
- return;
30
27
  }
31
- if (Object.keys(config.servers).length === 0) {
32
- logger_1.log.error("mcp.json is missing or malformed");
33
- process.exit(1);
28
+ const serverIds = Object.keys(config.servers);
29
+ if (serverIds.length === 0) {
30
+ log.warn('mcp.json exists but has no configured servers.');
31
+ log.info('Run "mcp-kit init" to configure MCPs.');
32
+ return;
34
33
  }
35
- const meta = (await fs_extra_1.default.pathExists(constants_1.MCP_KIT_META_PATH)) ? await fs_extra_1.default.readJSON(constants_1.MCP_KIT_META_PATH) : {};
36
- const storage = (meta.credentialStorage || "keychain");
37
- const results = await Promise.all(Object.keys(config.servers).map(async (id) => {
38
- const mcp = (0, registry_1.getMcpById)(id);
34
+ const meta = await safeReadJSON(MCP_KIT_META_PATH);
35
+ const credStorage = meta?.credentialStorage ?? 'keychain';
36
+ const envFilePath = getEnvFilePath(vscodePaths.vscodeFolderPath);
37
+ log.step(`Checking ${serverIds.length} configured MCP(s) in parallel...\n`);
38
+ // Run all checks in parallel
39
+ const doctorResults = await Promise.all(serverIds.map(async (id) => {
40
+ const def = getMcpById(id);
41
+ const entry = config.servers[id];
39
42
  const issues = [];
40
43
  const suggestions = [];
44
+ // Check 1 - Credentials
41
45
  let credentialsPresent = true;
42
- let packageInstallable = true;
43
- let networkReachable;
44
- if (!mcp) {
45
- issues.push("MCP not found in registry");
46
- suggestions.push("Run `mcp-kit list --available` and re-add this MCP");
47
- return {
48
- mcpId: id,
49
- mcpName: id,
50
- configured: true,
51
- credentialsPresent: false,
52
- packageInstallable: false,
53
- issues,
54
- suggestions,
55
- status: "error"
56
- };
57
- }
58
- for (const envVar of mcp.envVars.filter((envItem) => envItem.secret)) {
59
- const value = await (0, credentials_1.getCredential)(envVar.key, storage);
60
- if (!value) {
61
- credentialsPresent = false;
62
- issues.push(`Missing credential: ${envVar.label}`);
63
- suggestions.push(`Run \`mcp-kit add ${id}\` to reconfigure`);
46
+ if (def) {
47
+ for (const envVar of def.envVars) {
48
+ if (!envVar.secret)
49
+ continue;
50
+ // Check if it's embedded in args (inline)
51
+ const inArgs = def.args.some(a => a.includes(`\${${envVar.key}}`));
52
+ if (inArgs)
53
+ continue;
54
+ let found = false;
55
+ if (credStorage === 'keychain' || credStorage === 'dotenv') {
56
+ const val = await getCredential(envVar.key, credStorage, envFilePath);
57
+ found = !!val;
58
+ }
59
+ else if (credStorage === 'inline') {
60
+ const envVal = entry?.env?.[envVar.key];
61
+ found = !!envVal && envVal !== '' && !envVal.startsWith('$(env:');
62
+ }
63
+ if (!found && envVar.required) {
64
+ credentialsPresent = false;
65
+ issues.push(`Missing credential: ${envVar.label} (${envVar.key})`);
66
+ suggestions.push(`Run "mcp-kit add ${id}" to reconfigure credentials`);
67
+ }
64
68
  }
65
69
  }
66
- if (mcp.requiresNetwork && mcp.healthCheckUrl) {
67
- networkReachable = await (0, validator_1.checkNetworkReachability)(mcp.healthCheckUrl);
70
+ // Check 2 - Network reachability
71
+ let networkReachable;
72
+ if (def?.requiresNetwork && def.healthCheckUrl) {
73
+ networkReachable = await checkNetworkReachability(def.healthCheckUrl);
68
74
  if (!networkReachable) {
69
- issues.push(`Cannot reach ${mcp.healthCheckUrl}`);
70
- suggestions.push("Check your VPN / firewall settings");
75
+ issues.push(`Cannot reach ${def.healthCheckUrl}`);
76
+ suggestions.push('Check your VPN / firewall settings and network connection');
71
77
  }
72
78
  }
73
- packageInstallable = await (0, validator_1.checkNpmPackageExists)(mcp.npmPackage);
74
- if (!packageInstallable) {
75
- issues.push(`Package ${mcp.npmPackage} not found on npm registry`);
76
- suggestions.push("Check npm registry or use offline cache");
79
+ // Check 3 - npm package installable
80
+ let packageInstallable = true;
81
+ if (def?.npmPackage) {
82
+ packageInstallable = await checkNpmPackageExists(def.npmPackage);
83
+ if (!packageInstallable) {
84
+ issues.push(`Package ${def.npmPackage} not found on npm registry`);
85
+ suggestions.push('Check npm registry availability or use offline cache via "mcp-kit install"');
86
+ }
77
87
  }
88
+ // Check 4 - mcp.json writable
78
89
  try {
79
- await fs_extra_1.default.access(detected.mcpJsonPath, fs_extra_1.default.constants.W_OK);
90
+ await fs.access(vscodePaths.mcpJsonPath, fs.constants.W_OK);
80
91
  }
81
92
  catch {
82
- issues.push("mcp.json is not writable");
83
- suggestions.push(`Check file permissions: chmod 644 ${detected.mcpJsonPath}`);
93
+ issues.push(`mcp.json is not writable: ${vscodePaths.mcpJsonPath}`);
94
+ suggestions.push(`Fix file permissions: chmod 644 ${vscodePaths.mcpJsonPath}`);
84
95
  }
85
- const configured = config.servers[id];
86
- if (configured.command !== mcp.command || !configured.args.some((arg) => arg.includes(mcp.npmPackage))) {
87
- issues.push("Args may be stale run `mcp-kit update`");
88
- suggestions.push("Run `mcp-kit update` to refresh command arguments");
96
+ // Check 5 - Args validity
97
+ if (def && entry) {
98
+ const firstPackageArg = entry.args.find(a => a.startsWith('@') || (a.includes('/') && !a.startsWith('-')));
99
+ if (firstPackageArg && !firstPackageArg.includes('@latest')) {
100
+ issues.push('Command args may be stale or mismatched');
101
+ suggestions.push('Run "mcp-kit update" to refresh to @latest');
102
+ }
89
103
  }
90
- const status = issues.length === 0
91
- ? "healthy"
92
- : issues.some((issue) => issue.startsWith("Missing credential") || issue.includes("not writable") || issue.includes("not found"))
93
- ? "error"
94
- : "warning";
104
+ // Determine overall status
105
+ const hasErrors = issues.some(i => i.includes('Missing credential') ||
106
+ i.includes('not found on npm') ||
107
+ i.includes('not writable'));
108
+ const status = issues.length === 0 ? 'healthy' : hasErrors ? 'error' : 'warning';
95
109
  return {
96
110
  mcpId: id,
97
- mcpName: mcp.name,
98
- configured: true,
111
+ mcpName: def?.name ?? id,
112
+ configured: !!entry,
99
113
  credentialsPresent,
100
114
  networkReachable,
101
115
  packageInstallable,
102
116
  issues,
103
117
  suggestions,
104
- status
118
+ status,
105
119
  };
106
120
  }));
107
- let healthy = 0;
108
- let warnings = 0;
109
- let errors = 0;
110
- for (const result of results) {
111
- if (result.status === "healthy") {
112
- healthy += 1;
113
- console.log(`✅ ${result.mcpName} Healthy`);
121
+ // Print results
122
+ log.blank();
123
+ let healthyCount = 0;
124
+ let warningCount = 0;
125
+ let errorCount = 0;
126
+ if (options.json) {
127
+ console.log(JSON.stringify(doctorResults, null, 2));
128
+ const hasErrors = doctorResults.some(r => r.status === 'error');
129
+ if (hasErrors)
130
+ process.exit(1);
131
+ return;
132
+ }
133
+ for (const result of doctorResults) {
134
+ if (result.status === 'healthy') {
135
+ log.success(`${result.mcpName} - Healthy`);
136
+ healthyCount++;
114
137
  }
115
- else if (result.status === "warning") {
116
- warnings += 1;
117
- console.log(`⚠️ ${result.mcpName} — Warning: ${result.issues[0]}`);
138
+ else if (result.status === 'warning') {
139
+ log.warn(`${result.mcpName} - Warning`);
140
+ result.issues.forEach(issue => log.muted(` • ${issue}`));
141
+ result.suggestions.forEach(sug => log.muted(` → ${sug}`));
142
+ warningCount++;
118
143
  }
119
144
  else {
120
- errors += 1;
121
- console.log(`❌ ${result.mcpName} — Error: ${result.issues[0]}`);
122
- }
123
- if (result.suggestions[0]) {
124
- console.log(`Fix: ${result.suggestions[0]}`);
145
+ log.error(`${result.mcpName} - Error`);
146
+ result.issues.forEach(issue => log.muted(` • ${issue}`));
147
+ result.suggestions.forEach(sug => log.muted(` → ${sug}`));
148
+ errorCount++;
125
149
  }
126
150
  }
127
- console.log("\nSummary:");
128
- console.log(`Healthy: ${healthy}`);
129
- console.log(`Warnings: ${warnings}`);
130
- console.log(`Errors: ${errors}`);
131
- if (errors > 0) {
132
- logger_1.log.info("Run `mcp-kit add <id>` to fix individual MCPs");
133
- logger_1.log.info("Run `mcp-kit reset` to start fresh");
151
+ // Summary
152
+ log.blank();
153
+ log.info(`Summary - Healthy: ${healthyCount} Warnings: ${warningCount} Errors: ${errorCount}`);
154
+ if (errorCount > 0 || warningCount > 0) {
155
+ log.blank();
156
+ log.step('Run "mcp-kit add <id>" to fix individual MCPs');
157
+ log.step('Run "mcp-kit reset" to start fresh');
158
+ }
159
+ // Exit 1 if any errors
160
+ if (errorCount > 0) {
134
161
  process.exit(1);
135
162
  }
136
- process.exit(0);
137
163
  }
138
164
  catch (err) {
139
- const message = err instanceof Error ? err.message : "Unknown error";
140
- logger_1.log.error(`Doctor failed: ${message}`);
141
- logger_1.log.muted("Suggestion: validate your network and local file permissions.");
142
- if (process.env.DEBUG && err instanceof Error) {
143
- console.error(err.stack);
144
- }
165
+ const message = err instanceof Error ? err.message : String(err);
166
+ log.error(`Doctor check failed: ${message}`);
167
+ if (process.env['DEBUG'])
168
+ console.error(err);
145
169
  process.exit(1);
146
170
  }
147
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"env-check.d.ts","sourceRoot":"","sources":["../../src/commands/env-check.ts"],"names":[],"mappings":"AAOA,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C9E"}
1
+ {"version":3,"file":"env-check.d.ts","sourceRoot":"","sources":["../../src/commands/env-check.ts"],"names":[],"mappings":"AAWA,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAUD,wBAAsB,WAAW,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8E9E"}
@@ -1,52 +1,75 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.runEnvCheck = runEnvCheck;
7
- const fs_extra_1 = __importDefault(require("fs-extra"));
8
- const node_path_1 = __importDefault(require("node:path"));
9
- const constants_1 = require("../constants");
10
- const detector_1 = require("../core/detector");
11
- const writer_1 = require("../core/writer");
12
- const logger_1 = require("../utils/logger");
13
- async function runEnvCheck(options = {}) {
1
+ import chalk from 'chalk';
2
+ import { detectVsCodePath } from '../core/detector.js';
3
+ import { readMcpJson } from '../core/writer.js';
4
+ import { getMcpById } from '../core/registry.js';
5
+ import { isEnvVarSet, printEnvProfileInstructions } from '../core/credentials.js';
6
+ import { log, printTable } from '../utils/logger.js';
7
+ export async function runEnvCheck(options = {}) {
14
8
  try {
15
- const detected = await (0, detector_1.detectVsCodePath)();
16
- const config = await (0, writer_1.readMcpJson)(detected.mcpJsonPath);
17
- const envPath = node_path_1.default.join(process.cwd(), ".env");
18
- const envContent = (await fs_extra_1.default.pathExists(envPath)) ? await fs_extra_1.default.readFile(envPath, "utf8") : "";
19
- const rows = [];
20
- for (const [id, server] of Object.entries(config.servers)) {
21
- const mcp = constants_1.MCP_REGISTRY.find((item) => item.id === id);
22
- if (!mcp) {
9
+ const vscodePaths = await detectVsCodePath();
10
+ const config = await readMcpJson(vscodePaths.mcpJsonPath);
11
+ const serverIds = Object.keys(config.servers);
12
+ if (serverIds.length === 0) {
13
+ log.warn('No MCP servers configured. Run "mcp-kit init dev" first.');
14
+ return;
15
+ }
16
+ const results = [];
17
+ for (const id of serverIds) {
18
+ const def = getMcpById(id);
19
+ if (!def || def.envVars.length === 0)
23
20
  continue;
24
- }
25
- for (const envVar of mcp.envVars) {
26
- const configured = server.env?.[envVar.key] || "";
27
- const isRef = configured.startsWith("${env:");
28
- const hasEnv = envContent.includes(`${envVar.key}=`);
29
- const status = configured.length === 0
30
- ? (envVar.required ? "Missing" : "Optional")
31
- : isRef
32
- ? (hasEnv ? "OK (.env)" : "Ref missing")
33
- : "Inline";
34
- rows.push([id, envVar.key, envVar.required ? "Yes" : "No", status]);
21
+ for (const envVar of def.envVars) {
22
+ results.push({
23
+ mcp: id,
24
+ key: envVar.key,
25
+ required: envVar.required,
26
+ set: isEnvVarSet(envVar.key),
27
+ secret: envVar.secret,
28
+ });
35
29
  }
36
30
  }
37
31
  if (options.json) {
38
- console.log(JSON.stringify(rows, null, 2));
32
+ console.log(JSON.stringify(results, null, 2));
33
+ return;
34
+ }
35
+ if (results.length === 0) {
36
+ log.success('All configured MCPs require no environment variables.');
39
37
  return;
40
38
  }
41
- (0, logger_1.printTable)(["MCP", "Env Key", "Required", "Status"], rows);
42
- process.exit(0);
39
+ log.header('Environment Variable Check');
40
+ const missing = results.filter(r => !r.set && r.required);
41
+ const optional = results.filter(r => !r.set && !r.required);
42
+ const present = results.filter(r => r.set);
43
+ const rows = results.map(r => [
44
+ r.mcp,
45
+ r.key,
46
+ r.required ? chalk.red('required') : chalk.gray('optional'),
47
+ r.set
48
+ ? chalk.green('✅ set')
49
+ : r.required
50
+ ? chalk.red('❌ missing')
51
+ : chalk.yellow('⚠ not set'),
52
+ ]);
53
+ printTable(['MCP', 'Variable', 'Required', 'Status'], rows);
54
+ log.blank();
55
+ log.muted(`${present.length} set ${optional.length} optional not set`);
56
+ if (missing.length > 0) {
57
+ log.blank();
58
+ log.warn(`${missing.length} required variable(s) are not set:\n`);
59
+ for (const r of missing) {
60
+ printEnvProfileInstructions(r.key);
61
+ }
62
+ log.blank();
63
+ process.exit(1);
64
+ }
65
+ log.blank();
66
+ log.success('All required environment variables are set.');
43
67
  }
44
68
  catch (err) {
45
- logger_1.log.error(`env-check failed: ${err instanceof Error ? err.message : "Unknown error"}`);
46
- logger_1.log.muted("Suggestion: run `mcp-kit init --dev` to repair env mappings.");
47
- if (process.env.DEBUG && err instanceof Error) {
48
- console.error(err.stack);
49
- }
69
+ const message = err instanceof Error ? err.message : String(err);
70
+ log.error(`env check failed: ${message}`);
71
+ if (process.env['DEBUG'])
72
+ console.error(err);
50
73
  process.exit(1);
51
74
  }
52
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"env-check.js","sourceRoot":"","sources":["../../src/commands/env-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-check.js","sourceRoot":"","sources":["../../src/commands/env-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAkBrD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAA2B,EAAE;IAC7D,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAC/C,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC;oBACX,GAAG,EAAE,EAAE;oBACP,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE3C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YAC3D,CAAC,CAAC,GAAG;gBACH,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;gBACtB,CAAC,CAAC,CAAC,CAAC,QAAQ;oBACZ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;oBACxB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;SAC9B,CAAC,CAAC;QAEH,UAAU,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;QAE5D,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,SAAS,QAAQ,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAExE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,sCAAsC,CAAC,CAAC;YAClE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;YACD,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;IAE7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,GAAG,CAAC,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,5 +1,7 @@
1
- export declare function runExport(options: {
2
- output: string;
3
- redact: boolean;
4
- }): Promise<void>;
1
+ interface ExportOptions {
2
+ output?: string;
3
+ redact?: boolean;
4
+ }
5
+ export declare function runExport(options: ExportOptions): Promise<void>;
6
+ export {};
5
7
  //# sourceMappingURL=export.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAMA,wBAAsB,SAAS,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD3F"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAgBA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DrE"}
@@ -1,54 +1,65 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.runExport = runExport;
7
- const fs_extra_1 = __importDefault(require("fs-extra"));
8
- const constants_1 = require("../constants");
9
- const detector_1 = require("../core/detector");
10
- const writer_1 = require("../core/writer");
11
- const logger_1 = require("../utils/logger");
12
- async function runExport(options) {
1
+ import path from 'node:path';
2
+ import { detectVsCodePath } from '../core/detector.js';
3
+ import { readMcpJson } from '../core/writer.js';
4
+ import { log } from '../utils/logger.js';
5
+ import { safeReadJSON, safeWriteJSON } from '../utils/fs.js';
6
+ import { MCP_KIT_META_PATH } from '../constants.js';
7
+ import { createRequire } from 'node:module';
8
+ const _require = createRequire(import.meta.url);
9
+ const pkg = _require('../../package.json');
10
+ export async function runExport(options) {
13
11
  try {
14
- const detected = await (0, detector_1.detectVsCodePath)();
15
- const config = await (0, writer_1.readMcpJson)(detected.mcpJsonPath);
16
- const meta = (await fs_extra_1.default.pathExists(constants_1.MCP_KIT_META_PATH)) ? await fs_extra_1.default.readJSON(constants_1.MCP_KIT_META_PATH) : {};
17
- const servers = JSON.parse(JSON.stringify(config.servers));
18
- if (options.redact) {
19
- for (const server of Object.values(servers)) {
20
- if (server.env) {
21
- for (const key of Object.keys(server.env)) {
22
- if (!server.env[key].startsWith("${env:")) {
23
- server.env[key] = "REDACTED";
24
- }
25
- }
12
+ const outputFile = options.output ?? 'mcp-kit-export.json';
13
+ const shouldRedact = options.redact !== false; // default true
14
+ const vscodePaths = await detectVsCodePath();
15
+ const config = await readMcpJson(vscodePaths.mcpJsonPath);
16
+ const meta = await safeReadJSON(MCP_KIT_META_PATH);
17
+ if (Object.keys(config.servers).length === 0) {
18
+ log.warn('No MCP servers configured. Nothing to export.');
19
+ return;
20
+ }
21
+ // Build sanitised server entries
22
+ const servers = {};
23
+ for (const [id, entry] of Object.entries(config.servers)) {
24
+ if (shouldRedact) {
25
+ const redactedEnv = {};
26
+ for (const [k, v] of Object.entries(entry.env ?? {})) {
27
+ // Redact if value looks like a real secret (not a ${env:KEY} ref)
28
+ redactedEnv[k] = v.startsWith('${env:') ? v : 'REDACTED';
26
29
  }
30
+ servers[id] = {
31
+ ...entry,
32
+ env: Object.keys(redactedEnv).length ? redactedEnv : undefined,
33
+ };
34
+ }
35
+ else {
36
+ servers[id] = { ...entry };
27
37
  }
28
38
  }
29
- const exportObject = {
39
+ const exportData = {
30
40
  exportedAt: new Date().toISOString(),
31
- mcpKitVersion: meta.mcpKitVersion || require("../../package.json").version,
32
- profileMode: meta.profileMode || "dev",
41
+ mcpKitVersion: pkg.version,
42
+ profileMode: meta?.profileMode ?? 'dev',
33
43
  servers,
34
- mcpIds: Object.keys(config.servers),
35
- instructions: "Run `mcp-kit import <this-file>` to apply"
44
+ mcpIds: Object.keys(servers),
45
+ instructions: 'Run "mcp-kit import <this-file>" to apply this configuration',
36
46
  };
37
- await fs_extra_1.default.writeJSON(options.output || "mcp-kit-export.json", exportObject, { spaces: 2 });
38
- logger_1.log.success(`Exported to ${options.output || "mcp-kit-export.json"}`);
39
- logger_1.log.info("Share this file with teammates who need the same MCP setup");
40
- if (!options.redact) {
41
- logger_1.log.warn("⚠️ Contains real credentials do not commit");
47
+ const outputPath = path.resolve(outputFile);
48
+ await safeWriteJSON(outputPath, exportData);
49
+ log.blank();
50
+ log.success(`Exported to: ${outputPath}`);
51
+ log.info('Share this file with teammates who need the same MCP setup.');
52
+ log.info(`They can apply it with: mcp-kit import ${path.basename(outputPath)}`);
53
+ if (!shouldRedact) {
54
+ log.blank();
55
+ log.warn('⚠ This export contains real credential values - do NOT commit to source control!');
42
56
  }
43
- process.exit(0);
44
57
  }
45
58
  catch (err) {
46
- const message = err instanceof Error ? err.message : "Unknown error";
47
- logger_1.log.error(`Export failed: ${message}`);
48
- logger_1.log.muted("Suggestion: verify output path is writable.");
49
- if (process.env.DEBUG && err instanceof Error) {
50
- console.error(err.stack);
51
- }
59
+ const message = err instanceof Error ? err.message : String(err);
60
+ log.error(`Export failed: ${message}`);
61
+ if (process.env['DEBUG'])
62
+ console.error(err);
52
63
  process.exit(1);
53
64
  }
54
65
  }