@global-packages/mcp-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +97 -0
  2. package/dist/commands/add.d.ts +2 -0
  3. package/dist/commands/add.d.ts.map +1 -0
  4. package/dist/commands/add.js +89 -0
  5. package/dist/commands/add.js.map +1 -0
  6. package/dist/commands/backup.d.ts +6 -0
  7. package/dist/commands/backup.d.ts.map +1 -0
  8. package/dist/commands/backup.js +35 -0
  9. package/dist/commands/backup.js.map +1 -0
  10. package/dist/commands/completion.d.ts +2 -0
  11. package/dist/commands/completion.d.ts.map +1 -0
  12. package/dist/commands/completion.js +84 -0
  13. package/dist/commands/completion.js.map +1 -0
  14. package/dist/commands/doctor.d.ts +2 -0
  15. package/dist/commands/doctor.d.ts.map +1 -0
  16. package/dist/commands/doctor.js +148 -0
  17. package/dist/commands/doctor.js.map +1 -0
  18. package/dist/commands/env-check.d.ts +6 -0
  19. package/dist/commands/env-check.d.ts.map +1 -0
  20. package/dist/commands/env-check.js +53 -0
  21. package/dist/commands/env-check.js.map +1 -0
  22. package/dist/commands/export.d.ts +5 -0
  23. package/dist/commands/export.d.ts.map +1 -0
  24. package/dist/commands/export.js +55 -0
  25. package/dist/commands/export.js.map +1 -0
  26. package/dist/commands/import.d.ts +2 -0
  27. package/dist/commands/import.d.ts.map +1 -0
  28. package/dist/commands/import.js +90 -0
  29. package/dist/commands/import.js.map +1 -0
  30. package/dist/commands/info.d.ts +6 -0
  31. package/dist/commands/info.d.ts.map +1 -0
  32. package/dist/commands/info.js +92 -0
  33. package/dist/commands/info.js.map +1 -0
  34. package/dist/commands/init.d.ts +5 -0
  35. package/dist/commands/init.d.ts.map +1 -0
  36. package/dist/commands/init.js +118 -0
  37. package/dist/commands/init.js.map +1 -0
  38. package/dist/commands/install.d.ts +2 -0
  39. package/dist/commands/install.d.ts.map +1 -0
  40. package/dist/commands/install.js +69 -0
  41. package/dist/commands/install.js.map +1 -0
  42. package/dist/commands/list.d.ts +6 -0
  43. package/dist/commands/list.d.ts.map +1 -0
  44. package/dist/commands/list.js +55 -0
  45. package/dist/commands/list.js.map +1 -0
  46. package/dist/commands/open.d.ts +2 -0
  47. package/dist/commands/open.d.ts.map +1 -0
  48. package/dist/commands/open.js +32 -0
  49. package/dist/commands/open.js.map +1 -0
  50. package/dist/commands/remove.d.ts +2 -0
  51. package/dist/commands/remove.d.ts.map +1 -0
  52. package/dist/commands/remove.js +57 -0
  53. package/dist/commands/remove.js.map +1 -0
  54. package/dist/commands/reset.d.ts +2 -0
  55. package/dist/commands/reset.d.ts.map +1 -0
  56. package/dist/commands/reset.js +61 -0
  57. package/dist/commands/reset.js.map +1 -0
  58. package/dist/commands/search.d.ts +6 -0
  59. package/dist/commands/search.d.ts.map +1 -0
  60. package/dist/commands/search.js +33 -0
  61. package/dist/commands/search.js.map +1 -0
  62. package/dist/commands/status.d.ts +6 -0
  63. package/dist/commands/status.d.ts.map +1 -0
  64. package/dist/commands/status.js +92 -0
  65. package/dist/commands/status.js.map +1 -0
  66. package/dist/commands/toggle.d.ts +3 -0
  67. package/dist/commands/toggle.d.ts.map +1 -0
  68. package/dist/commands/toggle.js +59 -0
  69. package/dist/commands/toggle.js.map +1 -0
  70. package/dist/commands/update.d.ts +2 -0
  71. package/dist/commands/update.d.ts.map +1 -0
  72. package/dist/commands/update.js +80 -0
  73. package/dist/commands/update.js.map +1 -0
  74. package/dist/commands/validate.d.ts +6 -0
  75. package/dist/commands/validate.d.ts.map +1 -0
  76. package/dist/commands/validate.js +77 -0
  77. package/dist/commands/validate.js.map +1 -0
  78. package/dist/constants.d.ts +7 -0
  79. package/dist/constants.d.ts.map +1 -0
  80. package/dist/constants.js +356 -0
  81. package/dist/constants.js.map +1 -0
  82. package/dist/core/credentials.d.ts +7 -0
  83. package/dist/core/credentials.d.ts.map +1 -0
  84. package/dist/core/credentials.js +144 -0
  85. package/dist/core/credentials.js.map +1 -0
  86. package/dist/core/detector.d.ts +8 -0
  87. package/dist/core/detector.d.ts.map +1 -0
  88. package/dist/core/detector.js +82 -0
  89. package/dist/core/detector.js.map +1 -0
  90. package/dist/core/registry.d.ts +7 -0
  91. package/dist/core/registry.d.ts.map +1 -0
  92. package/dist/core/registry.js +40 -0
  93. package/dist/core/registry.js.map +1 -0
  94. package/dist/core/validator.d.ts +6 -0
  95. package/dist/core/validator.d.ts.map +1 -0
  96. package/dist/core/validator.js +50 -0
  97. package/dist/core/validator.js.map +1 -0
  98. package/dist/core/writer.d.ts +7 -0
  99. package/dist/core/writer.d.ts.map +1 -0
  100. package/dist/core/writer.js +50 -0
  101. package/dist/core/writer.js.map +1 -0
  102. package/dist/index.d.ts +3 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +141 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/postinstall.d.ts +9 -0
  107. package/dist/postinstall.d.ts.map +1 -0
  108. package/dist/postinstall.js +100 -0
  109. package/dist/postinstall.js.map +1 -0
  110. package/dist/prompts/dev-prompts.d.ts +3 -0
  111. package/dist/prompts/dev-prompts.d.ts.map +1 -0
  112. package/dist/prompts/dev-prompts.js +40 -0
  113. package/dist/prompts/dev-prompts.js.map +1 -0
  114. package/dist/prompts/non-dev-prompts.d.ts +3 -0
  115. package/dist/prompts/non-dev-prompts.d.ts.map +1 -0
  116. package/dist/prompts/non-dev-prompts.js +43 -0
  117. package/dist/prompts/non-dev-prompts.js.map +1 -0
  118. package/dist/prompts/shared-prompts.d.ts +5 -0
  119. package/dist/prompts/shared-prompts.d.ts.map +1 -0
  120. package/dist/prompts/shared-prompts.js +59 -0
  121. package/dist/prompts/shared-prompts.js.map +1 -0
  122. package/dist/types.d.ts +79 -0
  123. package/dist/types.d.ts.map +1 -0
  124. package/dist/types.js +3 -0
  125. package/dist/types.js.map +1 -0
  126. package/dist/utils/fs.d.ts +5 -0
  127. package/dist/utils/fs.d.ts.map +1 -0
  128. package/dist/utils/fs.js +30 -0
  129. package/dist/utils/fs.js.map +1 -0
  130. package/dist/utils/logger.d.ts +13 -0
  131. package/dist/utils/logger.d.ts.map +1 -0
  132. package/dist/utils/logger.js +35 -0
  133. package/dist/utils/logger.js.map +1 -0
  134. package/dist/utils/network.d.ts +2 -0
  135. package/dist/utils/network.d.ts.map +1 -0
  136. package/dist/utils/network.js +17 -0
  137. package/dist/utils/network.js.map +1 -0
  138. package/dist/utils/spinner.d.ts +7 -0
  139. package/dist/utils/spinner.d.ts.map +1 -0
  140. package/dist/utils/spinner.js +24 -0
  141. package/dist/utils/spinner.js.map +1 -0
  142. package/package.json +74 -0
@@ -0,0 +1,55 @@
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) {
13
+ 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
+ }
26
+ }
27
+ }
28
+ }
29
+ const exportObject = {
30
+ exportedAt: new Date().toISOString(),
31
+ mcpKitVersion: meta.mcpKitVersion || require("../../package.json").version,
32
+ profileMode: meta.profileMode || "dev",
33
+ servers,
34
+ mcpIds: Object.keys(config.servers),
35
+ instructions: "Run `mcp-kit import <this-file>` to apply"
36
+ };
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");
42
+ }
43
+ process.exit(0);
44
+ }
45
+ 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
+ }
52
+ process.exit(1);
53
+ }
54
+ }
55
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":";;;;;AAMA,8BAgDC;AAtDD,wDAA0B;AAC1B,4CAAiD;AACjD,+CAAoD;AACpD,2CAA6C;AAC7C,4CAAsC;AAE/B,KAAK,UAAU,SAAS,CAAC,OAA4C;IAC1E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAgB,GAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAW,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,6BAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,6BAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAElG,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAA0B,CAAC;QAEpF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;oBACf,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;wBAC/B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG;YACnB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO;YAC1E,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;YACtC,OAAO;YACP,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACnC,YAAY,EAAE,2CAA2C;SAC1D,CAAC;QAEF,MAAM,kBAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,qBAAqB,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAEzF,YAAG,CAAC,OAAO,CAAC,eAAe,OAAO,CAAC,MAAM,IAAI,qBAAqB,EAAE,CAAC,CAAC;QACtE,YAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,YAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,YAAG,CAAC,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;QACvC,YAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runImport(file: string): Promise<void>;
2
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAWA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF3D"}
@@ -0,0 +1,90 @@
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.runImport = runImport;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const constants_1 = require("../constants");
11
+ const credentials_1 = require("../core/credentials");
12
+ const detector_1 = require("../core/detector");
13
+ const registry_1 = require("../core/registry");
14
+ const writer_1 = require("../core/writer");
15
+ const shared_prompts_1 = require("../prompts/shared-prompts");
16
+ const logger_1 = require("../utils/logger");
17
+ async function runImport(file) {
18
+ try {
19
+ const input = await fs_extra_1.default.readJSON(file);
20
+ if (!input || typeof input !== "object" || !("servers" in input)) {
21
+ throw new Error("Invalid import file. Missing 'servers' key.");
22
+ }
23
+ const detected = await (0, detector_1.detectVsCodePath)();
24
+ const existing = await (0, writer_1.readMcpJson)(detected.mcpJsonPath);
25
+ const incomingServers = input.servers;
26
+ const conflicts = Object.keys(incomingServers).filter((id) => Boolean(existing.servers[id]));
27
+ if (conflicts.length > 0) {
28
+ const overwrite = await (0, shared_prompts_1.askConfirm)(`Overwrite existing ${conflicts.join(", ")}?`);
29
+ if (!overwrite) {
30
+ logger_1.log.info("Import cancelled due to conflicts.");
31
+ process.exit(0);
32
+ }
33
+ }
34
+ const storage = await (0, shared_prompts_1.askCredentialStorage)();
35
+ for (const [id, server] of Object.entries(incomingServers)) {
36
+ const mcp = (0, registry_1.getMcpById)(id);
37
+ const env = { ...(server.env || {}) };
38
+ if (mcp) {
39
+ for (const envVar of mcp.envVars) {
40
+ const existingValue = env[envVar.key];
41
+ if (existingValue === "REDACTED" || !existingValue) {
42
+ const response = await inquirer_1.default.prompt([
43
+ {
44
+ type: envVar.secret ? "password" : "input",
45
+ name: "value",
46
+ message: `Enter value for ${envVar.label}`,
47
+ mask: envVar.secret ? "*" : undefined,
48
+ validate: (val) => !envVar.required || val.length > 0 || "This field is required"
49
+ }
50
+ ]);
51
+ if (response.value) {
52
+ if (envVar.secret) {
53
+ await (0, credentials_1.storeCredential)(envVar.key, response.value, storage);
54
+ }
55
+ env[envVar.key] = (0, credentials_1.buildEnvRefValue)(envVar.key, storage, response.value);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ await (0, writer_1.addServerToMcpJson)(detected.mcpJsonPath, id, {
61
+ command: server.command,
62
+ args: server.args,
63
+ env
64
+ });
65
+ }
66
+ await fs_extra_1.default.mkdirp(node_path_1.default.dirname(constants_1.MCP_KIT_META_PATH));
67
+ await fs_extra_1.default.writeJSON(constants_1.MCP_KIT_META_PATH, {
68
+ installedAt: new Date().toISOString(),
69
+ lastUpdated: new Date().toISOString(),
70
+ profileMode: input.profileMode || "dev",
71
+ vscodePath: detected.vscodeFolderPath,
72
+ credentialStorage: storage,
73
+ installedMcps: Object.keys(incomingServers),
74
+ mcpKitVersion: require("../../package.json").version
75
+ }, { spaces: 2 });
76
+ logger_1.log.success(`Imported ${Object.keys(incomingServers).length} MCPs from ${file}`);
77
+ logger_1.log.info("Reload VS Code to activate");
78
+ process.exit(0);
79
+ }
80
+ catch (err) {
81
+ const message = err instanceof Error ? err.message : "Unknown error";
82
+ logger_1.log.error(`Import failed: ${message}`);
83
+ logger_1.log.muted("Suggestion: verify import file format from `mcp-kit export`.");
84
+ if (process.env.DEBUG && err instanceof Error) {
85
+ console.error(err.stack);
86
+ }
87
+ process.exit(1);
88
+ }
89
+ }
90
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface InfoOptions {
2
+ json?: boolean;
3
+ }
4
+ export declare function runInfo(mcpId: string, options?: InfoOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FrF"}
@@ -0,0 +1,92 @@
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.runInfo = runInfo;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const boxen_1 = __importDefault(require("boxen"));
9
+ const detector_1 = require("../core/detector");
10
+ const registry_1 = require("../core/registry");
11
+ const writer_1 = require("../core/writer");
12
+ const constants_1 = require("../constants");
13
+ const logger_1 = require("../utils/logger");
14
+ async function runInfo(mcpId, options = {}) {
15
+ try {
16
+ const def = (0, registry_1.getMcpById)(mcpId);
17
+ if (!def) {
18
+ logger_1.log.error(`Unknown MCP: '${mcpId}'`);
19
+ logger_1.log.blank();
20
+ logger_1.log.info("Available IDs:");
21
+ constants_1.MCP_REGISTRY.forEach((m) => logger_1.log.muted(` ${m.id.padEnd(16)} ${m.name}`));
22
+ process.exit(1);
23
+ }
24
+ let isConfigured = false;
25
+ let entry;
26
+ try {
27
+ const vscodePaths = await (0, detector_1.detectVsCodePath)();
28
+ const config = await (0, writer_1.readMcpJson)(vscodePaths.mcpJsonPath);
29
+ isConfigured = mcpId in config.servers;
30
+ entry = config.servers[mcpId];
31
+ }
32
+ catch {
33
+ // not configured yet
34
+ }
35
+ if (options.json) {
36
+ console.log(JSON.stringify({
37
+ ...def,
38
+ configured: isConfigured,
39
+ entry: entry ?? null
40
+ }, null, 2));
41
+ return;
42
+ }
43
+ console.log((0, boxen_1.default)(`${chalk_1.default.bold.cyan(def.name)}\n${chalk_1.default.gray(def.description)}`, {
44
+ padding: { top: 0, bottom: 0, left: 2, right: 2 },
45
+ margin: 0,
46
+ borderColor: "cyan",
47
+ borderStyle: "round"
48
+ }));
49
+ logger_1.log.blank();
50
+ (0, logger_1.printTable)(["Property", "Value"], [
51
+ ["ID", def.id],
52
+ ["Category", def.category],
53
+ ["Npm Package", def.npmPackage],
54
+ ["Command", def.command],
55
+ ["Args", def.args.join(" ")],
56
+ ["Dev only", def.devOnly ? chalk_1.default.yellow("yes") : "no"],
57
+ ["Non-dev only", def.nonDevOnly ? chalk_1.default.yellow("yes") : "no"],
58
+ ["Configured", isConfigured ? chalk_1.default.green("✔ yes") : chalk_1.default.gray("no")],
59
+ ["Docs", chalk_1.default.underline.blue(def.docsUrl)]
60
+ ]);
61
+ if (def.envVars.length > 0) {
62
+ logger_1.log.blank();
63
+ logger_1.log.step("Required environment variables:");
64
+ logger_1.log.blank();
65
+ (0, logger_1.printTable)(["Key", "Label", "Required", "Secret", "Hint"], def.envVars.map((ev) => [
66
+ chalk_1.default.cyan(ev.key),
67
+ ev.label,
68
+ ev.required ? chalk_1.default.red("yes") : "no",
69
+ ev.secret ? chalk_1.default.yellow("yes") : "no",
70
+ ev.hint ?? ""
71
+ ]));
72
+ }
73
+ else {
74
+ logger_1.log.blank();
75
+ logger_1.log.success("No environment variables required.");
76
+ }
77
+ if (isConfigured && entry) {
78
+ logger_1.log.blank();
79
+ logger_1.log.step("Current mcp.json entry:");
80
+ console.log(chalk_1.default.gray(JSON.stringify(entry, null, 2)));
81
+ }
82
+ }
83
+ catch (err) {
84
+ const message = err instanceof Error ? err.message : String(err);
85
+ logger_1.log.error(`info failed: ${message}`);
86
+ if (process.env.DEBUG) {
87
+ console.error(err);
88
+ }
89
+ process.exit(1);
90
+ }
91
+ }
92
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function runInit(options: {
2
+ dev?: boolean;
3
+ nonDev?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAqCA,wBAAsB,OAAO,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGzF"}
@@ -0,0 +1,118 @@
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.runInit = runInit;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const constants_1 = require("../constants");
9
+ const detector_1 = require("../core/detector");
10
+ const registry_1 = require("../core/registry");
11
+ const writer_1 = require("../core/writer");
12
+ const credentials_1 = require("../core/credentials");
13
+ const dev_prompts_1 = require("../prompts/dev-prompts");
14
+ const non_dev_prompts_1 = require("../prompts/non-dev-prompts");
15
+ const shared_prompts_1 = require("../prompts/shared-prompts");
16
+ const logger_1 = require("../utils/logger");
17
+ const packageJson = require("../../package.json");
18
+ function buildArgs(mcp, answers) {
19
+ if (mcp.id === "filesystem" && answers.FILESYSTEM_ALLOWED_PATH) {
20
+ return [...mcp.args, answers.FILESYSTEM_ALLOWED_PATH];
21
+ }
22
+ return [...mcp.args];
23
+ }
24
+ function buildEnvRecord(mcp, answers, storage) {
25
+ const env = {};
26
+ for (const envVar of mcp.envVars) {
27
+ const rawValue = answers[envVar.key];
28
+ if (!rawValue && !envVar.required) {
29
+ continue;
30
+ }
31
+ env[envVar.key] = (0, credentials_1.buildEnvRefValue)(envVar.key, storage, rawValue);
32
+ }
33
+ return env;
34
+ }
35
+ async function runInit(options) {
36
+ try {
37
+ if (!options.dev && !options.nonDev) {
38
+ logger_1.log.error("Usage: mcp-kit init --dev OR mcp-kit init --non-dev");
39
+ process.exit(1);
40
+ }
41
+ if (options.dev && options.nonDev) {
42
+ logger_1.log.error("Use either --dev or --non-dev, not both");
43
+ process.exit(1);
44
+ }
45
+ if (!(0, detector_1.isNodeVersionCompatible)()) {
46
+ logger_1.log.error(`Node ${(0, detector_1.detectNodeVersion)()} detected. Node >= 18.0.0 is required.`);
47
+ process.exit(1);
48
+ }
49
+ const mode = options.dev ? "dev" : "non-dev";
50
+ logger_1.log.header(`🔧 mcp-kit — MCP Configuration Wizard\nMode: ${mode === "dev" ? "Developer" : "Non-Developer"}`);
51
+ const detected = await (0, detector_1.detectVsCodePath)();
52
+ logger_1.log.success(`Detected OS: ${(0, detector_1.detectOS)()}`);
53
+ logger_1.log.success(`Found .vscode at: ${detected.vscodeFolderPath} (source: ${detected.source})`);
54
+ const existing = await (0, detector_1.detectExistingMcps)(detected.mcpJsonPath);
55
+ if (existing.length > 0) {
56
+ logger_1.log.warn(`Found existing config: ${existing.join(", ")}`);
57
+ }
58
+ const storage = await (0, shared_prompts_1.askCredentialStorage)();
59
+ const available = (0, registry_1.getMcpsForProfile)(mode);
60
+ const selectedIds = await (0, shared_prompts_1.askMcpSelection)(available, existing);
61
+ const selected = available.filter((mcp) => selectedIds.includes(mcp.id));
62
+ const answers = mode === "dev"
63
+ ? await (0, dev_prompts_1.collectDevAnswers)(selected, storage)
64
+ : await (0, non_dev_prompts_1.collectNonDevAnswers)(selected, storage);
65
+ for (const mcp of selected) {
66
+ const mcpAnswers = answers.get(mcp.id) || {};
67
+ for (const envVar of mcp.envVars.filter((item) => item.secret)) {
68
+ const value = mcpAnswers[envVar.key];
69
+ if (value) {
70
+ await (0, credentials_1.storeCredential)(envVar.key, value, storage);
71
+ }
72
+ }
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
+ }
80
+ if (storage === "dotenv") {
81
+ await (0, credentials_1.ensureGitignore)(process.cwd());
82
+ }
83
+ await fs_extra_1.default.mkdirp(require("node:path").dirname(constants_1.MCP_KIT_META_PATH));
84
+ await fs_extra_1.default.writeJSON(constants_1.MCP_KIT_META_PATH, {
85
+ installedAt: new Date().toISOString(),
86
+ lastUpdated: new Date().toISOString(),
87
+ profileMode: mode,
88
+ vscodePath: detected.vscodeFolderPath,
89
+ credentialStorage: storage,
90
+ installedMcps: selected.map((mcp) => mcp.id),
91
+ mcpKitVersion: packageJson.version
92
+ }, { spaces: 2 });
93
+ console.log("─────────────────────────────────────");
94
+ logger_1.log.success("mcp-kit setup complete!");
95
+ console.log("─────────────────────────────────────");
96
+ console.log("Configured:");
97
+ for (const mcp of selected) {
98
+ logger_1.log.success(mcp.name);
99
+ }
100
+ console.log(`\nWritten to: ${detected.mcpJsonPath}`);
101
+ console.log(`Credentials: ${storage === "keychain" ? "System Keychain" : storage === "dotenv" ? ".env file" : "Inline"}`);
102
+ console.log("\nNext step: Reload VS Code window");
103
+ console.log('Mac/Linux: Cmd+Shift+P → "Reload Window"');
104
+ console.log('Windows: Ctrl+Shift+P → "Reload Window"');
105
+ console.log("─────────────────────────────────────");
106
+ process.exit(0);
107
+ }
108
+ catch (err) {
109
+ const message = err instanceof Error ? err.message : "Unknown error";
110
+ logger_1.log.error(`Init failed: ${message}`);
111
+ logger_1.log.muted("Suggestion: run `mcp-kit doctor` or retry with `DEBUG=1` for details.");
112
+ if (process.env.DEBUG && err instanceof Error) {
113
+ console.error(err.stack);
114
+ }
115
+ process.exit(1);
116
+ }
117
+ }
118
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runInstall(): Promise<void>;
2
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAUA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAyDhD"}
@@ -0,0 +1,69 @@
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.runInstall = runInstall;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const node_child_process_1 = require("node:child_process");
10
+ const constants_1 = require("../constants");
11
+ const detector_1 = require("../core/detector");
12
+ const spinner_1 = require("../utils/spinner");
13
+ const logger_1 = require("../utils/logger");
14
+ const packageJson = require("../../package.json");
15
+ async function runInstall() {
16
+ try {
17
+ logger_1.log.header("📦 Pre-installing MCP packages...");
18
+ if (!(0, detector_1.isNodeVersionCompatible)()) {
19
+ logger_1.log.error("Node >= 18.0.0 is required.");
20
+ logger_1.log.muted("Please upgrade Node and re-run `mcp-kit install`.");
21
+ process.exit(1);
22
+ }
23
+ const failed = [];
24
+ let succeeded = 0;
25
+ for (const mcp of constants_1.MCP_REGISTRY) {
26
+ const spinner = (0, spinner_1.startSpinner)(`Installing ${mcp.name}`);
27
+ try {
28
+ (0, node_child_process_1.execSync)(`npm install -g ${mcp.npmPackage}`, { stdio: "ignore" });
29
+ (0, spinner_1.succeedSpinner)(spinner, `Installed ${mcp.name}`);
30
+ succeeded += 1;
31
+ }
32
+ catch (err) {
33
+ const error = err instanceof Error ? err.message : "Unknown error";
34
+ (0, spinner_1.failSpinner)(spinner, `Failed: ${mcp.name} — ${error}`);
35
+ failed.push({ id: mcp.id, error });
36
+ }
37
+ }
38
+ await fs_extra_1.default.mkdirp(node_path_1.default.dirname(constants_1.MCP_KIT_META_PATH));
39
+ const meta = {
40
+ installedAt: new Date().toISOString(),
41
+ lastUpdated: new Date().toISOString(),
42
+ profileMode: "dev",
43
+ vscodePath: "",
44
+ credentialStorage: "keychain",
45
+ installedMcps: constants_1.MCP_REGISTRY.map((m) => m.id),
46
+ mcpKitVersion: packageJson.version
47
+ };
48
+ await fs_extra_1.default.writeJSON(constants_1.MCP_KIT_META_PATH, meta, { spaces: 2 });
49
+ if (failed.length > 0) {
50
+ const errorLogPath = node_path_1.default.join(node_path_1.default.dirname(constants_1.MCP_KIT_META_PATH), "install-errors.log");
51
+ const lines = failed.map((entry) => `${new Date().toISOString()} ${entry.id}: ${entry.error}`).join("\n");
52
+ await fs_extra_1.default.appendFile(errorLogPath, `${lines}\n`, "utf8");
53
+ }
54
+ logger_1.log.success(`Succeeded: ${succeeded} packages`);
55
+ logger_1.log.warn(`Failed: ${failed.length} packages${failed.length ? ` (${failed.map((f) => f.id).join(", ")})` : ""}`);
56
+ logger_1.log.info("Run `mcp-kit init --dev` or `mcp-kit init --non-dev` to configure.");
57
+ process.exit(0);
58
+ }
59
+ catch (err) {
60
+ const message = err instanceof Error ? err.message : "Unknown error";
61
+ logger_1.log.error(`Install failed: ${message}`);
62
+ logger_1.log.muted("Try again with stable network access or verify npm permissions.");
63
+ if (process.env.DEBUG && err instanceof Error) {
64
+ console.error(err.stack);
65
+ }
66
+ process.exit(1);
67
+ }
68
+ }
69
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function runList(options: {
2
+ available?: boolean;
3
+ dev?: boolean;
4
+ nonDev?: boolean;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAMA,wBAAsB,OAAO,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD9G"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runList = runList;
4
+ const constants_1 = require("../constants");
5
+ const detector_1 = require("../core/detector");
6
+ const registry_1 = require("../core/registry");
7
+ const writer_1 = require("../core/writer");
8
+ const logger_1 = require("../utils/logger");
9
+ async function runList(options) {
10
+ try {
11
+ const detected = await (0, detector_1.detectVsCodePath)();
12
+ const config = await (0, writer_1.readMcpJson)(detected.mcpJsonPath);
13
+ const configured = new Set(Object.keys(config.servers));
14
+ if (!options.available) {
15
+ const rows = Object.keys(config.servers).map((id) => {
16
+ const mcp = constants_1.MCP_REGISTRY.find((item) => item.id === id);
17
+ return [
18
+ id,
19
+ mcp?.name || id,
20
+ mcp?.category || "unknown",
21
+ mcp?.npmPackage || "unknown",
22
+ config.servers[id].command
23
+ ];
24
+ });
25
+ (0, logger_1.printTable)(["ID", "Name", "Category", "Package", "Command"], rows);
26
+ process.exit(0);
27
+ }
28
+ let source = constants_1.MCP_REGISTRY;
29
+ if (options.dev && !options.nonDev) {
30
+ source = (0, registry_1.getMcpsForProfile)("dev");
31
+ }
32
+ if (options.nonDev && !options.dev) {
33
+ source = (0, registry_1.getMcpsForProfile)("non-dev");
34
+ }
35
+ const rows = source.map((mcp) => [
36
+ `${configured.has(mcp.id) ? "✅ " : ""}${mcp.id}`,
37
+ mcp.name,
38
+ mcp.category,
39
+ mcp.devOnly ? "dev" : mcp.nonDevOnly ? "non-dev" : "all",
40
+ mcp.description
41
+ ]);
42
+ (0, logger_1.printTable)(["ID", "Name", "Category", "For", "Description"], rows);
43
+ process.exit(0);
44
+ }
45
+ catch (err) {
46
+ const message = err instanceof Error ? err.message : "Unknown error";
47
+ logger_1.log.error(`List failed: ${message}`);
48
+ logger_1.log.muted("Suggestion: run `mcp-kit init --dev` to bootstrap config.");
49
+ if (process.env.DEBUG && err instanceof Error) {
50
+ console.error(err.stack);
51
+ }
52
+ process.exit(1);
53
+ }
54
+ }
55
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runOpen(): Promise<void>;
2
+ //# sourceMappingURL=open.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAIA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB7C"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runOpen = runOpen;
4
+ const node_child_process_1 = require("node:child_process");
5
+ const detector_1 = require("../core/detector");
6
+ const logger_1 = require("../utils/logger");
7
+ async function runOpen() {
8
+ try {
9
+ const detected = await (0, detector_1.detectVsCodePath)();
10
+ const osName = (0, detector_1.detectOS)();
11
+ if (osName === "windows") {
12
+ (0, node_child_process_1.execSync)(`start "" "${detected.mcpJsonPath}"`, { stdio: "ignore", shell: "cmd.exe" });
13
+ }
14
+ else if (osName === "mac") {
15
+ (0, node_child_process_1.execSync)(`open "${detected.mcpJsonPath}"`, { stdio: "ignore" });
16
+ }
17
+ else {
18
+ (0, node_child_process_1.execSync)(`xdg-open "${detected.mcpJsonPath}"`, { stdio: "ignore" });
19
+ }
20
+ logger_1.log.success(`Opened ${detected.mcpJsonPath}`);
21
+ process.exit(0);
22
+ }
23
+ catch (err) {
24
+ logger_1.log.error(`open failed: ${err instanceof Error ? err.message : "Unknown error"}`);
25
+ logger_1.log.muted("Suggestion: open the mcp.json path manually from `mcp-kit status` output.");
26
+ if (process.env.DEBUG && err instanceof Error) {
27
+ console.error(err.stack);
28
+ }
29
+ process.exit(1);
30
+ }
31
+ }
32
+ //# sourceMappingURL=open.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":";;AAIA,0BAuBC;AA3BD,2DAA8C;AAC9C,+CAA8D;AAC9D,4CAAsC;AAE/B,KAAK,UAAU,OAAO;IAC3B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAgB,GAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAA,mBAAQ,GAAE,CAAC;QAE1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAA,6BAAQ,EAAC,aAAa,QAAQ,CAAC,WAAW,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACxF,CAAC;aAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAC5B,IAAA,6BAAQ,EAAC,SAAS,QAAQ,CAAC,WAAW,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,IAAA,6BAAQ,EAAC,aAAa,QAAQ,CAAC,WAAW,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,YAAG,CAAC,OAAO,CAAC,UAAU,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAG,CAAC,KAAK,CAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAClF,YAAG,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;QACvF,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runRemove(mcpId: string): Promise<void>;
2
+ //# sourceMappingURL=remove.d.ts.map