@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.
- package/README.md +97 -0
- package/dist/commands/add.d.ts +2 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +89 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/backup.d.ts +6 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +35 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/completion.d.ts +2 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +84 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +148 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/env-check.d.ts +6 -0
- package/dist/commands/env-check.d.ts.map +1 -0
- package/dist/commands/env-check.js +53 -0
- package/dist/commands/env-check.js.map +1 -0
- package/dist/commands/export.d.ts +5 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +55 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/import.d.ts +2 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +90 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/info.d.ts +6 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +92 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +118 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.d.ts +2 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +69 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +6 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +55 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/open.d.ts +2 -0
- package/dist/commands/open.d.ts.map +1 -0
- package/dist/commands/open.js +32 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/remove.d.ts +2 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +57 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/reset.d.ts +2 -0
- package/dist/commands/reset.d.ts.map +1 -0
- package/dist/commands/reset.js +61 -0
- package/dist/commands/reset.js.map +1 -0
- package/dist/commands/search.d.ts +6 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +33 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +92 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/toggle.d.ts +3 -0
- package/dist/commands/toggle.d.ts.map +1 -0
- package/dist/commands/toggle.js +59 -0
- package/dist/commands/toggle.js.map +1 -0
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +80 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.d.ts +6 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +77 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +356 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/credentials.d.ts +7 -0
- package/dist/core/credentials.d.ts.map +1 -0
- package/dist/core/credentials.js +144 -0
- package/dist/core/credentials.js.map +1 -0
- package/dist/core/detector.d.ts +8 -0
- package/dist/core/detector.d.ts.map +1 -0
- package/dist/core/detector.js +82 -0
- package/dist/core/detector.js.map +1 -0
- package/dist/core/registry.d.ts +7 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +40 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/validator.d.ts +6 -0
- package/dist/core/validator.d.ts.map +1 -0
- package/dist/core/validator.js +50 -0
- package/dist/core/validator.js.map +1 -0
- package/dist/core/writer.d.ts +7 -0
- package/dist/core/writer.d.ts.map +1 -0
- package/dist/core/writer.js +50 -0
- package/dist/core/writer.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +141 -0
- package/dist/index.js.map +1 -0
- package/dist/postinstall.d.ts +9 -0
- package/dist/postinstall.d.ts.map +1 -0
- package/dist/postinstall.js +100 -0
- package/dist/postinstall.js.map +1 -0
- package/dist/prompts/dev-prompts.d.ts +3 -0
- package/dist/prompts/dev-prompts.d.ts.map +1 -0
- package/dist/prompts/dev-prompts.js +40 -0
- package/dist/prompts/dev-prompts.js.map +1 -0
- package/dist/prompts/non-dev-prompts.d.ts +3 -0
- package/dist/prompts/non-dev-prompts.d.ts.map +1 -0
- package/dist/prompts/non-dev-prompts.js +43 -0
- package/dist/prompts/non-dev-prompts.js.map +1 -0
- package/dist/prompts/shared-prompts.d.ts +5 -0
- package/dist/prompts/shared-prompts.d.ts.map +1 -0
- package/dist/prompts/shared-prompts.js +59 -0
- package/dist/prompts/shared-prompts.js.map +1 -0
- package/dist/types.d.ts +79 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/fs.d.ts +5 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +30 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +35 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/network.d.ts +2 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +17 -0
- package/dist/utils/network.js.map +1 -0
- package/dist/utils/spinner.d.ts +7 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +24 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,40 @@
|
|
|
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.getMcpById = getMcpById;
|
|
7
|
+
exports.getMcpsForProfile = getMcpsForProfile;
|
|
8
|
+
exports.getMcpsByCategory = getMcpsByCategory;
|
|
9
|
+
exports.getLatestVersion = getLatestVersion;
|
|
10
|
+
exports.enrichWithVersions = enrichWithVersions;
|
|
11
|
+
const axios_1 = __importDefault(require("axios"));
|
|
12
|
+
const constants_1 = require("../constants");
|
|
13
|
+
function getMcpById(id) {
|
|
14
|
+
return constants_1.MCP_REGISTRY.find((mcp) => mcp.id === id);
|
|
15
|
+
}
|
|
16
|
+
function getMcpsForProfile(mode) {
|
|
17
|
+
if (mode === "dev") {
|
|
18
|
+
return constants_1.MCP_REGISTRY.filter((mcp) => !mcp.nonDevOnly);
|
|
19
|
+
}
|
|
20
|
+
return constants_1.MCP_REGISTRY.filter((mcp) => !mcp.devOnly);
|
|
21
|
+
}
|
|
22
|
+
function getMcpsByCategory(category) {
|
|
23
|
+
return constants_1.MCP_REGISTRY.filter((mcp) => mcp.category === category);
|
|
24
|
+
}
|
|
25
|
+
async function getLatestVersion(npmPackage) {
|
|
26
|
+
try {
|
|
27
|
+
const response = await axios_1.default.get(`https://registry.npmjs.org/${npmPackage}/latest`, {
|
|
28
|
+
timeout: 5000
|
|
29
|
+
});
|
|
30
|
+
return response.data.version || "unknown";
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return "unknown";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function enrichWithVersions(mcps) {
|
|
37
|
+
const versions = await Promise.all(mcps.map((mcp) => getLatestVersion(mcp.npmPackage)));
|
|
38
|
+
return mcps.map((mcp, index) => ({ ...mcp, version: versions[index] }));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":";;;;;AAIA,gCAEC;AAED,8CAMC;AAED,8CAEC;AAED,4CASC;AAED,gDAGC;AAlCD,kDAA0B;AAC1B,4CAA4C;AAG5C,SAAgB,UAAU,CAAC,EAAU;IACnC,OAAO,wBAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAiB;IACjD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,wBAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,wBAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,iBAAiB,CAAC,QAAqB;IACrD,OAAO,wBAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACjE,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAuB,8BAA8B,UAAU,SAAS,EAAE;YACxG,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,IAAqB;IAC5D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { McpJsonConfig } from "../types";
|
|
2
|
+
export declare function validateMcpJson(config: unknown): McpJsonConfig;
|
|
3
|
+
export declare function checkNetworkReachability(url: string): Promise<boolean>;
|
|
4
|
+
export declare function checkNpmPackageExists(pkg: string): Promise<boolean>;
|
|
5
|
+
export declare function validateEnvVar(value: string, regex?: string): boolean;
|
|
6
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/core/validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAYzC,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAM9D;AAED,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO5E;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOzE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAMrE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
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.validateMcpJson = validateMcpJson;
|
|
7
|
+
exports.checkNetworkReachability = checkNetworkReachability;
|
|
8
|
+
exports.checkNpmPackageExists = checkNpmPackageExists;
|
|
9
|
+
exports.validateEnvVar = validateEnvVar;
|
|
10
|
+
const axios_1 = __importDefault(require("axios"));
|
|
11
|
+
const zod_1 = require("zod");
|
|
12
|
+
const mcpJsonSchema = zod_1.z.object({
|
|
13
|
+
servers: zod_1.z.record(zod_1.z.object({
|
|
14
|
+
command: zod_1.z.string(),
|
|
15
|
+
args: zod_1.z.array(zod_1.z.string()),
|
|
16
|
+
env: zod_1.z.record(zod_1.z.string()).optional()
|
|
17
|
+
}))
|
|
18
|
+
});
|
|
19
|
+
function validateMcpJson(config) {
|
|
20
|
+
const result = mcpJsonSchema.safeParse(config);
|
|
21
|
+
if (!result.success) {
|
|
22
|
+
throw new Error(`Invalid mcp.json format: ${result.error.issues.map((i) => i.message).join(", ")}`);
|
|
23
|
+
}
|
|
24
|
+
return result.data;
|
|
25
|
+
}
|
|
26
|
+
async function checkNetworkReachability(url) {
|
|
27
|
+
try {
|
|
28
|
+
const response = await axios_1.default.head(url, { timeout: 5000 });
|
|
29
|
+
return response.status >= 200 && response.status < 300;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function checkNpmPackageExists(pkg) {
|
|
36
|
+
try {
|
|
37
|
+
const response = await axios_1.default.get(`https://registry.npmjs.org/${pkg}`, { timeout: 5000 });
|
|
38
|
+
return response.status === 200;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function validateEnvVar(value, regex) {
|
|
45
|
+
if (!regex) {
|
|
46
|
+
return value.trim().length > 0;
|
|
47
|
+
}
|
|
48
|
+
return new RegExp(regex).test(value);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/core/validator.ts"],"names":[],"mappings":";;;;;AAcA,0CAMC;AAED,4DAOC;AAED,sDAOC;AAED,wCAMC;AA9CD,kDAA0B;AAC1B,6BAAwB;AAGxB,MAAM,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAC,CAAC,MAAM,CACf,OAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;QACzB,GAAG,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACrC,CAAC,CACH;CACF,CAAC,CAAC;AAEH,SAAgB,eAAe,CAAC,MAAe;IAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAAC,GAAW;IACxD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACrD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,8BAA8B,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,KAAa,EAAE,KAAc;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { McpJsonConfig, McpServerEntry } from "../types";
|
|
2
|
+
export declare function readMcpJson(mcpJsonPath: string): Promise<McpJsonConfig>;
|
|
3
|
+
export declare function writeMcpJson(mcpJsonPath: string, config: McpJsonConfig): Promise<void>;
|
|
4
|
+
export declare function addServerToMcpJson(mcpJsonPath: string, serverId: string, entry: McpServerEntry): Promise<void>;
|
|
5
|
+
export declare function removeServerFromMcpJson(mcpJsonPath: string, serverId: string): Promise<void>;
|
|
6
|
+
export declare function mergeMcpJson(mcpJsonPath: string, incoming: McpJsonConfig): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEzD,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAQ7E;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5F;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlG;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9F"}
|
|
@@ -0,0 +1,50 @@
|
|
|
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.readMcpJson = readMcpJson;
|
|
7
|
+
exports.writeMcpJson = writeMcpJson;
|
|
8
|
+
exports.addServerToMcpJson = addServerToMcpJson;
|
|
9
|
+
exports.removeServerFromMcpJson = removeServerFromMcpJson;
|
|
10
|
+
exports.mergeMcpJson = mergeMcpJson;
|
|
11
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
12
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
13
|
+
const logger_1 = require("../utils/logger");
|
|
14
|
+
const validator_1 = require("./validator");
|
|
15
|
+
async function readMcpJson(mcpJsonPath) {
|
|
16
|
+
if (!(await fs_extra_1.default.pathExists(mcpJsonPath))) {
|
|
17
|
+
return { servers: {} };
|
|
18
|
+
}
|
|
19
|
+
const raw = await fs_extra_1.default.readFile(mcpJsonPath, "utf8");
|
|
20
|
+
const parsed = JSON.parse(raw);
|
|
21
|
+
return (0, validator_1.validateMcpJson)(parsed);
|
|
22
|
+
}
|
|
23
|
+
async function writeMcpJson(mcpJsonPath, config) {
|
|
24
|
+
await fs_extra_1.default.mkdirp(node_path_1.default.dirname(mcpJsonPath));
|
|
25
|
+
const tmpPath = `${mcpJsonPath}.tmp`;
|
|
26
|
+
await fs_extra_1.default.writeFile(tmpPath, JSON.stringify(config, null, 2), "utf8");
|
|
27
|
+
await fs_extra_1.default.rename(tmpPath, mcpJsonPath);
|
|
28
|
+
logger_1.log.success(`Written: ${mcpJsonPath}`);
|
|
29
|
+
}
|
|
30
|
+
async function addServerToMcpJson(mcpJsonPath, serverId, entry) {
|
|
31
|
+
const config = await readMcpJson(mcpJsonPath);
|
|
32
|
+
config.servers[serverId] = entry;
|
|
33
|
+
await writeMcpJson(mcpJsonPath, config);
|
|
34
|
+
}
|
|
35
|
+
async function removeServerFromMcpJson(mcpJsonPath, serverId) {
|
|
36
|
+
const config = await readMcpJson(mcpJsonPath);
|
|
37
|
+
delete config.servers[serverId];
|
|
38
|
+
await writeMcpJson(mcpJsonPath, config);
|
|
39
|
+
}
|
|
40
|
+
async function mergeMcpJson(mcpJsonPath, incoming) {
|
|
41
|
+
const existing = await readMcpJson(mcpJsonPath);
|
|
42
|
+
const merged = {
|
|
43
|
+
servers: {
|
|
44
|
+
...existing.servers,
|
|
45
|
+
...incoming.servers
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
await writeMcpJson(mcpJsonPath, merged);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":";;;;;AAMA,kCAQC;AAED,oCAMC;AAED,gDAQC;AAED,0DAIC;AAED,oCASC;AAjDD,wDAA0B;AAC1B,0DAA6B;AAC7B,4CAAsC;AACtC,2CAA8C;AAGvC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACnD,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IAC1C,OAAO,IAAA,2BAAe,EAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,MAAqB;IAC3E,MAAM,kBAAE,CAAC,MAAM,CAAC,mBAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,GAAG,WAAW,MAAM,CAAC;IACrC,MAAM,kBAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACrE,MAAM,kBAAE,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtC,YAAG,CAAC,OAAO,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC;AACzC,CAAC;AAEM,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,QAAgB,EAChB,KAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;IACjC,MAAM,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAAC,WAAmB,EAAE,QAAgB;IACjF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,QAAuB;IAC7E,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,MAAM,GAAkB;QAC5B,OAAO,EAAE;YACP,GAAG,QAAQ,CAAC,OAAO;YACnB,GAAG,QAAQ,CAAC,OAAO;SACpB;KACF,CAAC;IACF,MAAM,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const update_notifier_1 = __importDefault(require("update-notifier"));
|
|
9
|
+
const commander_1 = require("commander");
|
|
10
|
+
const logger_1 = require("./utils/logger");
|
|
11
|
+
const install_1 = require("./commands/install");
|
|
12
|
+
const init_1 = require("./commands/init");
|
|
13
|
+
const status_1 = require("./commands/status");
|
|
14
|
+
const add_1 = require("./commands/add");
|
|
15
|
+
const remove_1 = require("./commands/remove");
|
|
16
|
+
const update_1 = require("./commands/update");
|
|
17
|
+
const doctor_1 = require("./commands/doctor");
|
|
18
|
+
const list_1 = require("./commands/list");
|
|
19
|
+
const reset_1 = require("./commands/reset");
|
|
20
|
+
const export_1 = require("./commands/export");
|
|
21
|
+
const import_1 = require("./commands/import");
|
|
22
|
+
const validate_1 = require("./commands/validate");
|
|
23
|
+
const env_check_1 = require("./commands/env-check");
|
|
24
|
+
const info_1 = require("./commands/info");
|
|
25
|
+
const open_1 = require("./commands/open");
|
|
26
|
+
const search_1 = require("./commands/search");
|
|
27
|
+
const toggle_1 = require("./commands/toggle");
|
|
28
|
+
const backup_1 = require("./commands/backup");
|
|
29
|
+
const completion_1 = require("./commands/completion");
|
|
30
|
+
const packageJson = require("../package.json");
|
|
31
|
+
try {
|
|
32
|
+
(0, update_notifier_1.default)({ pkg: packageJson }).notify();
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// update-notifier is optional; ignore failures in offline/CI.
|
|
36
|
+
}
|
|
37
|
+
const program = new commander_1.Command();
|
|
38
|
+
program.name("mcp-kit").description("Universal MCP Configuration CLI").version(packageJson.version);
|
|
39
|
+
program
|
|
40
|
+
.command("install")
|
|
41
|
+
.description("Pre-download all MCP packages to local npm cache")
|
|
42
|
+
.action(install_1.runInstall);
|
|
43
|
+
program
|
|
44
|
+
.command("init")
|
|
45
|
+
.description("Interactive wizard to configure MCP servers")
|
|
46
|
+
.option("--dev", "Configure developer MCP set")
|
|
47
|
+
.option("--non-dev", "Configure non-developer MCP set")
|
|
48
|
+
.option("--dry-run", "Preview what would be written without making any changes")
|
|
49
|
+
.action((opts) => (0, init_1.runInit)({ dev: opts.dev, nonDev: opts.nonDev }));
|
|
50
|
+
program
|
|
51
|
+
.command("status")
|
|
52
|
+
.description("Show all configured MCPs, versions and credential storage")
|
|
53
|
+
.option("--json", "Output as JSON")
|
|
54
|
+
.action((opts) => (0, status_1.runStatus)({ json: opts.json }));
|
|
55
|
+
program.command("add <mcp-id>").description("Add a single MCP to your configuration").action(add_1.runAdd);
|
|
56
|
+
program.command("remove <mcp-id>").description("Remove an MCP from your configuration").action(remove_1.runRemove);
|
|
57
|
+
program.command("update").description("Update configured MCPs to latest versions").action(update_1.runUpdate);
|
|
58
|
+
program.command("doctor").description("Diagnose configuration issues across all MCPs").action(doctor_1.runDoctor);
|
|
59
|
+
program
|
|
60
|
+
.command("list")
|
|
61
|
+
.description("List configured or available MCPs")
|
|
62
|
+
.option("--available", "Show all available MCPs in registry")
|
|
63
|
+
.option("--dev", "Filter to developer MCPs")
|
|
64
|
+
.option("--non-dev", "Filter to non-developer MCPs")
|
|
65
|
+
.option("--json", "Output as JSON")
|
|
66
|
+
.action((opts) => (0, list_1.runList)(opts));
|
|
67
|
+
program.command("reset").description("Remove all MCP configuration and credentials").action(reset_1.runReset);
|
|
68
|
+
program
|
|
69
|
+
.command("export")
|
|
70
|
+
.description("Export current config as shareable JSON")
|
|
71
|
+
.option("--output <file>", "Output file path", "mcp-kit-export.json")
|
|
72
|
+
.option("--no-redact", "Include real credential values")
|
|
73
|
+
.action((opts) => (0, export_1.runExport)({ output: opts.output, redact: opts.redact }));
|
|
74
|
+
program.command("import <file>").description("Import MCP config from exported JSON file").action(import_1.runImport);
|
|
75
|
+
program
|
|
76
|
+
.command("validate")
|
|
77
|
+
.description("Validate mcp.json against expected schema")
|
|
78
|
+
.option("--json", "Output result as JSON")
|
|
79
|
+
.action((opts) => (0, validate_1.runValidate)({ json: opts.json }));
|
|
80
|
+
const envCmd = program.command("env").description("Environment variable utilities");
|
|
81
|
+
envCmd
|
|
82
|
+
.command("check")
|
|
83
|
+
.description("Scan configured MCPs for missing required environment variables")
|
|
84
|
+
.option("--json", "Output as JSON")
|
|
85
|
+
.action((opts) => (0, env_check_1.runEnvCheck)({ json: opts.json }));
|
|
86
|
+
program.command("env-check").description("Alias for env check").option("--json").action((opts) => (0, env_check_1.runEnvCheck)({ json: opts.json }));
|
|
87
|
+
program
|
|
88
|
+
.command("enable <mcp-id>")
|
|
89
|
+
.description("Re-enable a previously disabled MCP server")
|
|
90
|
+
.action(toggle_1.runEnable);
|
|
91
|
+
program
|
|
92
|
+
.command("disable <mcp-id>")
|
|
93
|
+
.description("Disable an MCP without removing it from mcp.json")
|
|
94
|
+
.action(toggle_1.runDisable);
|
|
95
|
+
program
|
|
96
|
+
.command("info <mcp-id>")
|
|
97
|
+
.description("Show detailed information about an MCP from the registry")
|
|
98
|
+
.option("--json", "Output as JSON")
|
|
99
|
+
.action((mcpId, opts) => (0, info_1.runInfo)(mcpId, { json: opts.json }));
|
|
100
|
+
program.command("open").description("Open detected mcp.json in default editor").action(open_1.runOpen);
|
|
101
|
+
program
|
|
102
|
+
.command("backup")
|
|
103
|
+
.description("Create a timestamped backup of mcp.json")
|
|
104
|
+
.option("--output <file>", "Custom output path for the backup file")
|
|
105
|
+
.action((opts) => (0, backup_1.runBackup)({ output: opts.output }));
|
|
106
|
+
program
|
|
107
|
+
.command("search <query>")
|
|
108
|
+
.description("Search for MCPs in the registry by name, category or keyword")
|
|
109
|
+
.option("--json", "Output as JSON")
|
|
110
|
+
.action((query, opts) => (0, search_1.runSearch)(query, { json: opts.json }));
|
|
111
|
+
program
|
|
112
|
+
.command("completion [shell]")
|
|
113
|
+
.description("Print shell completion script (bash/zsh)")
|
|
114
|
+
.addHelpText("after", "\nUsage:\n eval \"$(mcp-kit completion zsh)\"")
|
|
115
|
+
.action((shell) => (0, completion_1.runCompletion)(shell ?? "zsh"));
|
|
116
|
+
process.on("uncaughtException", (err) => {
|
|
117
|
+
logger_1.log.error(`Unexpected error: ${err.message}`);
|
|
118
|
+
logger_1.log.muted("Run with DEBUG=1 for full stack trace");
|
|
119
|
+
if (process.env.DEBUG) {
|
|
120
|
+
console.error(err.stack);
|
|
121
|
+
}
|
|
122
|
+
process.exit(1);
|
|
123
|
+
});
|
|
124
|
+
process.on("SIGINT", () => {
|
|
125
|
+
console.log(`\n${chalk_1.default.yellow("⚠️ Interrupted. No changes were saved.")}`);
|
|
126
|
+
process.exit(0);
|
|
127
|
+
});
|
|
128
|
+
process.on("unhandledRejection", (reason) => {
|
|
129
|
+
const message = reason instanceof Error
|
|
130
|
+
? reason.message
|
|
131
|
+
: typeof reason === "string"
|
|
132
|
+
? reason
|
|
133
|
+
: JSON.stringify(reason);
|
|
134
|
+
logger_1.log.error(`Unhandled promise rejection: ${message}`);
|
|
135
|
+
if (process.env.DEBUG) {
|
|
136
|
+
console.error(reason);
|
|
137
|
+
}
|
|
138
|
+
process.exit(1);
|
|
139
|
+
});
|
|
140
|
+
program.parse(process.argv);
|
|
141
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postinstall.d.ts","sourceRoot":"","sources":["../src/postinstall.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* postinstall.ts
|
|
5
|
+
*
|
|
6
|
+
* Runs automatically after `npm install -g @global-packages/mcp-kit`.
|
|
7
|
+
* Prints the MCP-KIT welcome banner with a quick-start command table.
|
|
8
|
+
*/
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
14
|
+
const boxen_1 = __importDefault(require("boxen"));
|
|
15
|
+
const table_1 = require("table");
|
|
16
|
+
const ASCII = `
|
|
17
|
+
███╗ ███╗ ██████╗██████╗ ██╗ ██╗██╗████████╗
|
|
18
|
+
████╗ ████║██╔════╝██╔══██╗ ██║ ██╔╝██║╚══██╔══╝
|
|
19
|
+
██╔████╔██║██║ ██████╔╝█████╗█████╔╝ ██║ ██║
|
|
20
|
+
██║╚██╔╝██║██║ ██╔═══╝ ╚════╝██╔═██╗ ██║ ██║
|
|
21
|
+
██║ ╚═╝ ██║╚██████╗██║ ██║ ██╗██║ ██║
|
|
22
|
+
╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
|
23
|
+
`;
|
|
24
|
+
const COMMANDS = [
|
|
25
|
+
["mcp-kit init --dev", "Interactive setup for development MCPs (filesystem, git, playwright...)"],
|
|
26
|
+
["mcp-kit init --non-dev", "Interactive setup for shared/team MCPs (azure, confluence, slack...)"],
|
|
27
|
+
["mcp-kit install", "Pre-download MCP packages (recommended in restricted networks)"],
|
|
28
|
+
["mcp-kit list", "Show configured MCPs and availability"],
|
|
29
|
+
["mcp-kit status", "Show MCP versions and config health summary"],
|
|
30
|
+
["mcp-kit add <id>", "Add one MCP server by ID (e.g. mcp-kit add azure)"],
|
|
31
|
+
["mcp-kit remove <id>", "Remove a configured MCP server"],
|
|
32
|
+
["mcp-kit update", "Refresh command args to latest package tags"],
|
|
33
|
+
["mcp-kit doctor", "Diagnose env/version/path/credential issues"],
|
|
34
|
+
["mcp-kit export", "Export current setup as shareable JSON"],
|
|
35
|
+
["mcp-kit import <file>", "Import shared setup (prompts for redacted secrets)"],
|
|
36
|
+
["mcp-kit reset", "Remove all configured MCPs and start fresh"]
|
|
37
|
+
];
|
|
38
|
+
function render() {
|
|
39
|
+
if (process.env.CI || process.env.MCP_KIT_POSTINSTALL_SILENT === "1") {
|
|
40
|
+
console.log("✅ @global-packages/mcp-kit installed. Run: mcp-kit init --dev");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
console.log(`\n${chalk_1.default.bold.magentaBright(ASCII)}`);
|
|
44
|
+
const topLine = (0, boxen_1.default)(`${chalk_1.default.bold.whiteBright("Universal MCP Configuration CLI")}\n${chalk_1.default.gray("Auto-detect | Configure | Manage MCP servers - Windows | macOS | Linux")}`, {
|
|
45
|
+
padding: { top: 0, bottom: 0, left: 2, right: 2 },
|
|
46
|
+
margin: { top: 0, bottom: 1, left: 2, right: 0 },
|
|
47
|
+
borderColor: "magenta",
|
|
48
|
+
borderStyle: "round",
|
|
49
|
+
textAlignment: "center"
|
|
50
|
+
});
|
|
51
|
+
console.log(topLine);
|
|
52
|
+
console.log(chalk_1.default.bold.yellowBright(" Quickstart commands\n"));
|
|
53
|
+
const tableData = [
|
|
54
|
+
[chalk_1.default.bold.cyanBright("Command"), chalk_1.default.bold.cyanBright("Description")],
|
|
55
|
+
...COMMANDS.map(([cmd, desc]) => [chalk_1.default.cyan(cmd), chalk_1.default.white(desc)])
|
|
56
|
+
];
|
|
57
|
+
const output = (0, table_1.table)(tableData, {
|
|
58
|
+
border: {
|
|
59
|
+
topBody: chalk_1.default.gray("─"),
|
|
60
|
+
topJoin: chalk_1.default.gray("┬"),
|
|
61
|
+
topLeft: chalk_1.default.gray("┌"),
|
|
62
|
+
topRight: chalk_1.default.gray("┐"),
|
|
63
|
+
bottomBody: chalk_1.default.gray("─"),
|
|
64
|
+
bottomJoin: chalk_1.default.gray("┴"),
|
|
65
|
+
bottomLeft: chalk_1.default.gray("└"),
|
|
66
|
+
bottomRight: chalk_1.default.gray("┘"),
|
|
67
|
+
bodyLeft: chalk_1.default.gray("│"),
|
|
68
|
+
bodyRight: chalk_1.default.gray("│"),
|
|
69
|
+
bodyJoin: chalk_1.default.gray("│"),
|
|
70
|
+
joinBody: chalk_1.default.gray("─"),
|
|
71
|
+
joinLeft: chalk_1.default.gray("├"),
|
|
72
|
+
joinRight: chalk_1.default.gray("┤"),
|
|
73
|
+
joinJoin: chalk_1.default.gray("┼")
|
|
74
|
+
},
|
|
75
|
+
columns: {
|
|
76
|
+
0: { width: 32, paddingLeft: 1, paddingRight: 1 },
|
|
77
|
+
1: { width: 58, paddingLeft: 1, paddingRight: 1, wrapWord: true }
|
|
78
|
+
},
|
|
79
|
+
drawHorizontalLine: (lineIndex, rowCount) => lineIndex === 0 || lineIndex === 1 || lineIndex === rowCount
|
|
80
|
+
});
|
|
81
|
+
const indented = output
|
|
82
|
+
.split("\n")
|
|
83
|
+
.map((line) => ` ${line}`)
|
|
84
|
+
.join("\n");
|
|
85
|
+
console.log(indented);
|
|
86
|
+
console.log((0, boxen_1.default)(`${chalk_1.default.bold.greenBright("✅ Get started:")} ${chalk_1.default.whiteBright("mcp-kit init --dev")}\n${chalk_1.default.gray("or")} ${chalk_1.default.whiteBright("mcp-kit install")}\n${chalk_1.default.underline.blue("https://github.com/global-packages/mcp-kit")}`, {
|
|
87
|
+
padding: { top: 0, bottom: 0, left: 1, right: 1 },
|
|
88
|
+
margin: { top: 0, bottom: 1, left: 2, right: 0 },
|
|
89
|
+
borderColor: "green",
|
|
90
|
+
borderStyle: "double",
|
|
91
|
+
textAlignment: "center"
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
render();
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// Never fail npm install because of postinstall formatting.
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=postinstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postinstall.js","sourceRoot":"","sources":["../src/postinstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/dev-prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,aAAa,EAAE,EACrB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAsC9C"}
|
|
@@ -0,0 +1,40 @@
|
|
|
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.collectDevAnswers = collectDevAnswers;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
|
+
async function collectDevAnswers(mcps, _storage) {
|
|
10
|
+
const allAnswers = new Map();
|
|
11
|
+
for (const mcp of mcps) {
|
|
12
|
+
console.log(chalk_1.default.bold.cyan(`\n⚙️ Setting up: ${mcp.name}`));
|
|
13
|
+
console.log(chalk_1.default.gray(mcp.description));
|
|
14
|
+
if (mcp.envVars.length === 0) {
|
|
15
|
+
console.log(chalk_1.default.green("✅ No configuration needed"));
|
|
16
|
+
allAnswers.set(mcp.id, {});
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
const mcpAnswers = {};
|
|
20
|
+
for (const envVar of mcp.envVars) {
|
|
21
|
+
if (envVar.hint) {
|
|
22
|
+
console.log(chalk_1.default.gray(` ℹ ${envVar.hint}`));
|
|
23
|
+
}
|
|
24
|
+
const response = await inquirer_1.default.prompt([
|
|
25
|
+
{
|
|
26
|
+
type: envVar.secret ? "password" : "input",
|
|
27
|
+
name: "value",
|
|
28
|
+
message: envVar.label + (envVar.required ? " *" : " (optional)"),
|
|
29
|
+
default: envVar.defaultValue || "",
|
|
30
|
+
mask: envVar.secret ? "*" : undefined,
|
|
31
|
+
validate: (input) => !envVar.required || input.length > 0 || "This field is required"
|
|
32
|
+
}
|
|
33
|
+
]);
|
|
34
|
+
mcpAnswers[envVar.key] = response.value;
|
|
35
|
+
}
|
|
36
|
+
allAnswers.set(mcp.id, mcpAnswers);
|
|
37
|
+
}
|
|
38
|
+
return allAnswers;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=dev-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-prompts.js","sourceRoot":"","sources":["../../src/prompts/dev-prompts.ts"],"names":[],"mappings":";;;;;AAIA,8CAyCC;AA7CD,kDAA0B;AAC1B,wDAAgC;AAGzB,KAAK,UAAU,iBAAiB,CACrC,IAAqB,EACrB,QAA2B;IAE3B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkC,CAAC;IAE7D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAEzC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACtD,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAA2B,EAAE,CAAC;QAE9C,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAoB;gBACxD;oBACE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;oBAC1C,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;oBAChE,OAAO,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;oBAClC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;oBACrC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,wBAAwB;iBAC9F;aACF,CAAC,CAAC;YAEH,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC1C,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-dev-prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/non-dev-prompts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EAAE,EACrB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAyC9C"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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.collectNonDevAnswers = collectNonDevAnswers;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
|
+
const constants_1 = require("../constants");
|
|
10
|
+
async function collectNonDevAnswers(mcps, _storage) {
|
|
11
|
+
console.log(chalk_1.default.yellow("ℹ Ask your IT/DevOps team for these values if unsure"));
|
|
12
|
+
const allAnswers = new Map();
|
|
13
|
+
const allowed = new Set(constants_1.NON_DEV_MCP_IDS);
|
|
14
|
+
for (const mcp of mcps.filter((item) => allowed.has(item.id))) {
|
|
15
|
+
console.log(chalk_1.default.bold.cyan(`\n⚙️ Setting up: ${mcp.name}`));
|
|
16
|
+
console.log(chalk_1.default.gray(mcp.description));
|
|
17
|
+
if (mcp.envVars.length === 0) {
|
|
18
|
+
console.log(chalk_1.default.green("✅ No configuration needed"));
|
|
19
|
+
allAnswers.set(mcp.id, {});
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const mcpAnswers = {};
|
|
23
|
+
for (const envVar of mcp.envVars) {
|
|
24
|
+
if (envVar.hint) {
|
|
25
|
+
console.log(chalk_1.default.gray(` ℹ ${envVar.hint}`));
|
|
26
|
+
}
|
|
27
|
+
const response = await inquirer_1.default.prompt([
|
|
28
|
+
{
|
|
29
|
+
type: envVar.secret ? "password" : "input",
|
|
30
|
+
name: "value",
|
|
31
|
+
message: `${envVar.label} (ask your IT admin)` + (envVar.required ? " *" : " (optional)"),
|
|
32
|
+
default: envVar.defaultValue || "",
|
|
33
|
+
mask: envVar.secret ? "*" : undefined,
|
|
34
|
+
validate: (input) => !envVar.required || input.length > 0 || "This field is required"
|
|
35
|
+
}
|
|
36
|
+
]);
|
|
37
|
+
mcpAnswers[envVar.key] = response.value;
|
|
38
|
+
}
|
|
39
|
+
allAnswers.set(mcp.id, mcpAnswers);
|
|
40
|
+
}
|
|
41
|
+
return allAnswers;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=non-dev-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-dev-prompts.js","sourceRoot":"","sources":["../../src/prompts/non-dev-prompts.ts"],"names":[],"mappings":";;;;;AAKA,oDA4CC;AAjDD,kDAA0B;AAC1B,wDAAgC;AAChC,4CAA+C;AAGxC,KAAK,UAAU,oBAAoB,CACxC,IAAqB,EACrB,QAA2B;IAE3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAElF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,2BAAe,CAAC,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAEzC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACtD,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAA2B,EAAE,CAAC;QAE9C,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAoB;gBACxD;oBACE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;oBAC1C,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,sBAAsB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;oBACzF,OAAO,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;oBAClC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;oBACrC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,wBAAwB;iBAC9F;aACF,CAAC,CAAC;YAEH,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC1C,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CredentialStorage, McpDefinition } from "../types";
|
|
2
|
+
export declare function askCredentialStorage(): Promise<CredentialStorage>;
|
|
3
|
+
export declare function askMcpSelection(mcps: McpDefinition[], alreadyInstalled: string[]): Promise<string[]>;
|
|
4
|
+
export declare function askConfirm(message: string): Promise<boolean>;
|
|
5
|
+
//# sourceMappingURL=shared-prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/shared-prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAwBvE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAe1G;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUlE"}
|