@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,356 @@
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.VSCODE_SEARCH_DEPTH = exports.MCP_KIT_META_PATH = exports.NON_DEV_MCP_IDS = exports.DEV_MCP_IDS = exports.MCP_REGISTRY = void 0;
7
+ const node_os_1 = __importDefault(require("node:os"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ exports.MCP_REGISTRY = [
10
+ {
11
+ id: "azure",
12
+ name: "Azure MCP",
13
+ description: "Query and manage Azure resources, resource groups, subscriptions and services",
14
+ category: "cloud",
15
+ npmPackage: "@azure/mcp",
16
+ command: "npx",
17
+ args: ["-y", "@azure/mcp@latest", "server", "start"],
18
+ devOnly: false,
19
+ nonDevOnly: false,
20
+ requiresNetwork: true,
21
+ docsUrl: "https://github.com/Azure/azure-mcp",
22
+ healthCheckUrl: "https://management.azure.com",
23
+ envVars: [
24
+ {
25
+ key: "AZURE_SUBSCRIPTION_ID",
26
+ label: "Azure Subscription ID",
27
+ secret: false,
28
+ required: true,
29
+ hint: "Azure Portal → Subscriptions → copy Subscription ID"
30
+ },
31
+ {
32
+ key: "AZURE_TENANT_ID",
33
+ label: "Azure Tenant ID (optional)",
34
+ secret: false,
35
+ required: false,
36
+ hint: "Azure Portal → Azure Active Directory → Tenant ID"
37
+ },
38
+ {
39
+ key: "AZURE_CLIENT_ID",
40
+ label: "Azure Client ID (optional, for service principal)",
41
+ secret: false,
42
+ required: false
43
+ },
44
+ {
45
+ key: "AZURE_CLIENT_SECRET",
46
+ label: "Azure Client Secret (optional, for service principal)",
47
+ secret: true,
48
+ required: false
49
+ }
50
+ ]
51
+ },
52
+ {
53
+ id: "confluence",
54
+ name: "Confluence MCP",
55
+ description: "Search and read Confluence pages, spaces and documentation",
56
+ category: "documentation",
57
+ npmPackage: "@global-packages/confluence-mcp",
58
+ command: "npx",
59
+ args: ["-y", "@global-packages/confluence-mcp"],
60
+ devOnly: false,
61
+ nonDevOnly: false,
62
+ requiresNetwork: true,
63
+ docsUrl: "https://github.com/global-packages/confluence-mcp",
64
+ healthCheckUrl: "https://www.atlassian.com",
65
+ envVars: [
66
+ {
67
+ key: "CONFLUENCE_URL",
68
+ label: "Confluence Base URL",
69
+ secret: false,
70
+ required: true,
71
+ hint: "e.g. https://yourcompany.atlassian.net"
72
+ },
73
+ {
74
+ key: "CONFLUENCE_TOKEN",
75
+ label: "Confluence API Token",
76
+ secret: true,
77
+ required: true,
78
+ hint: "Atlassian Account → Security → API Tokens → Create token"
79
+ },
80
+ {
81
+ key: "CONFLUENCE_EMAIL",
82
+ label: "Atlassian Account Email",
83
+ secret: false,
84
+ required: true,
85
+ hint: "Email you use to log into Confluence"
86
+ },
87
+ {
88
+ key: "CONFLUENCE_SPACE",
89
+ label: "Confluence Space Key (optional)",
90
+ secret: false,
91
+ required: false,
92
+ hint: "e.g. OPS, ENGG, DEV — leave blank to search all spaces"
93
+ }
94
+ ]
95
+ },
96
+ {
97
+ id: "mssql",
98
+ name: "MSSQL MCP",
99
+ description: "Query Microsoft SQL Server and Azure SQL databases",
100
+ category: "database",
101
+ npmPackage: "mssql-mcp",
102
+ command: "npx",
103
+ args: ["-y", "mssql-mcp"],
104
+ devOnly: true,
105
+ nonDevOnly: false,
106
+ requiresNetwork: true,
107
+ docsUrl: "https://github.com/dambakk/mssql-mcp",
108
+ healthCheckUrl: "https://www.microsoft.com",
109
+ envVars: [
110
+ {
111
+ key: "MSSQL_CONNECTION_STRING",
112
+ label: "MSSQL Connection String",
113
+ secret: true,
114
+ required: false,
115
+ hint: "Server=myserver;Database=mydb;User Id=sa;Password=xxxx;"
116
+ },
117
+ {
118
+ key: "MSSQL_SERVER",
119
+ label: "MSSQL Server Host (alternative to connection string)",
120
+ secret: false,
121
+ required: false,
122
+ hint: "e.g. myserver.database.windows.net"
123
+ },
124
+ {
125
+ key: "MSSQL_DATABASE",
126
+ label: "Database Name",
127
+ secret: false,
128
+ required: false
129
+ },
130
+ {
131
+ key: "MSSQL_USER",
132
+ label: "Database Username",
133
+ secret: false,
134
+ required: false
135
+ },
136
+ {
137
+ key: "MSSQL_PASSWORD",
138
+ label: "Database Password",
139
+ secret: true,
140
+ required: false
141
+ }
142
+ ]
143
+ },
144
+ {
145
+ id: "playwright",
146
+ name: "Playwright MCP",
147
+ description: "Browser automation, web scraping and end-to-end testing",
148
+ category: "testing",
149
+ npmPackage: "@playwright/mcp",
150
+ command: "npx",
151
+ args: ["@playwright/mcp@latest"],
152
+ devOnly: true,
153
+ nonDevOnly: false,
154
+ requiresNetwork: false,
155
+ docsUrl: "https://github.com/microsoft/playwright-mcp",
156
+ envVars: []
157
+ },
158
+ {
159
+ id: "runbook",
160
+ name: "Runbook MCP",
161
+ description: "Incident runbook automation across GitHub, ADO, Confluence, Notion",
162
+ category: "incident",
163
+ npmPackage: "@global-packages/runbook-mcp",
164
+ command: "npx",
165
+ args: ["-y", "@global-packages/runbook-mcp"],
166
+ devOnly: false,
167
+ nonDevOnly: false,
168
+ requiresNetwork: true,
169
+ docsUrl: "https://github.com/global-packages/runbook-mcp",
170
+ healthCheckUrl: "https://github.com",
171
+ envVars: [
172
+ {
173
+ key: "GITHUB_TOKEN",
174
+ label: "GitHub Personal Access Token (if runbooks are on GitHub)",
175
+ secret: true,
176
+ required: false,
177
+ hint: "GitHub → Settings → Developer Settings → Personal Access Tokens"
178
+ },
179
+ {
180
+ key: "GITHUB_REPO",
181
+ label: "GitHub Repo containing runbooks (org/repo)",
182
+ secret: false,
183
+ required: false,
184
+ hint: "e.g. my-org/runbooks"
185
+ },
186
+ {
187
+ key: "ADO_TOKEN",
188
+ label: "Azure DevOps PAT (if runbooks are in ADO Wiki)",
189
+ secret: true,
190
+ required: false,
191
+ hint: "ADO → User Settings → Personal Access Tokens"
192
+ },
193
+ {
194
+ key: "ADO_ORG",
195
+ label: "Azure DevOps Organization",
196
+ secret: false,
197
+ required: false
198
+ },
199
+ {
200
+ key: "ADO_PROJECT",
201
+ label: "Azure DevOps Project",
202
+ secret: false,
203
+ required: false
204
+ }
205
+ ]
206
+ },
207
+ {
208
+ id: "filesystem",
209
+ name: "Filesystem MCP",
210
+ description: "Read, write and navigate local files and directories",
211
+ category: "filesystem",
212
+ npmPackage: "@modelcontextprotocol/server-filesystem",
213
+ command: "npx",
214
+ args: ["-y", "@modelcontextprotocol/server-filesystem"],
215
+ devOnly: true,
216
+ nonDevOnly: false,
217
+ requiresNetwork: false,
218
+ docsUrl: "https://github.com/modelcontextprotocol/servers",
219
+ envVars: [
220
+ {
221
+ key: "FILESYSTEM_ALLOWED_PATH",
222
+ label: "Allowed directory path for filesystem access",
223
+ secret: false,
224
+ required: true,
225
+ hint: "e.g. /Users/yourname/projects or C:\\Projects"
226
+ }
227
+ ]
228
+ },
229
+ {
230
+ id: "git",
231
+ name: "Git MCP",
232
+ description: "Query git history, branches, commits and diffs",
233
+ category: "versioncontrol",
234
+ npmPackage: "@modelcontextprotocol/server-git",
235
+ command: "npx",
236
+ args: ["-y", "@modelcontextprotocol/server-git"],
237
+ devOnly: true,
238
+ nonDevOnly: false,
239
+ requiresNetwork: false,
240
+ docsUrl: "https://github.com/modelcontextprotocol/servers",
241
+ envVars: [
242
+ {
243
+ key: "GIT_REPO_PATH",
244
+ label: "Path to your git repository",
245
+ secret: false,
246
+ required: true,
247
+ hint: "e.g. /Users/yourname/projects/my-app"
248
+ }
249
+ ]
250
+ },
251
+ {
252
+ id: "azuredevops",
253
+ name: "Azure DevOps MCP",
254
+ description: "Query ADO work items, pipelines, repos and pull requests",
255
+ category: "devops",
256
+ npmPackage: "@azure-devops/mcp",
257
+ command: "npx",
258
+ args: ["-y", "@azure-devops/mcp"],
259
+ devOnly: false,
260
+ nonDevOnly: false,
261
+ requiresNetwork: true,
262
+ docsUrl: "https://github.com/microsoft/azure-devops-mcp",
263
+ healthCheckUrl: "https://dev.azure.com",
264
+ envVars: [
265
+ {
266
+ key: "ADO_TOKEN",
267
+ label: "Azure DevOps Personal Access Token",
268
+ secret: true,
269
+ required: true,
270
+ hint: "ADO → User Settings (top right) → Personal Access Tokens"
271
+ },
272
+ {
273
+ key: "ADO_ORG",
274
+ label: "Azure DevOps Organization Name",
275
+ secret: false,
276
+ required: true,
277
+ hint: "e.g. mycompany (from dev.azure.com/mycompany)"
278
+ },
279
+ {
280
+ key: "ADO_PROJECT",
281
+ label: "Azure DevOps Project Name",
282
+ secret: false,
283
+ required: true
284
+ }
285
+ ]
286
+ },
287
+ {
288
+ id: "postgres",
289
+ name: "PostgreSQL MCP",
290
+ description: "Query PostgreSQL databases",
291
+ category: "database",
292
+ npmPackage: "@modelcontextprotocol/server-postgres",
293
+ command: "npx",
294
+ args: ["-y", "@modelcontextprotocol/server-postgres"],
295
+ devOnly: true,
296
+ nonDevOnly: false,
297
+ requiresNetwork: true,
298
+ docsUrl: "https://github.com/modelcontextprotocol/servers",
299
+ healthCheckUrl: "https://www.postgresql.org",
300
+ envVars: [
301
+ {
302
+ key: "POSTGRES_CONNECTION_STRING",
303
+ label: "PostgreSQL Connection String",
304
+ secret: true,
305
+ required: true,
306
+ hint: "postgresql://user:password@host:5432/dbname"
307
+ }
308
+ ]
309
+ },
310
+ {
311
+ id: "slack",
312
+ name: "Slack MCP",
313
+ description: "Read Slack messages, channels and send notifications",
314
+ category: "productivity",
315
+ npmPackage: "@modelcontextprotocol/server-slack",
316
+ command: "npx",
317
+ args: ["-y", "@modelcontextprotocol/server-slack"],
318
+ devOnly: false,
319
+ nonDevOnly: false,
320
+ requiresNetwork: true,
321
+ docsUrl: "https://github.com/modelcontextprotocol/servers",
322
+ healthCheckUrl: "https://slack.com",
323
+ envVars: [
324
+ {
325
+ key: "SLACK_BOT_TOKEN",
326
+ label: "Slack Bot Token",
327
+ secret: true,
328
+ required: true,
329
+ hint: "Slack API → Your App → OAuth & Permissions → Bot User OAuth Token"
330
+ },
331
+ {
332
+ key: "SLACK_TEAM_ID",
333
+ label: "Slack Team/Workspace ID",
334
+ secret: false,
335
+ required: true,
336
+ hint: "Slack → Workspace Settings → bottom of page"
337
+ }
338
+ ]
339
+ }
340
+ ];
341
+ exports.DEV_MCP_IDS = [
342
+ "azure",
343
+ "confluence",
344
+ "mssql",
345
+ "playwright",
346
+ "filesystem",
347
+ "git",
348
+ "azuredevops",
349
+ "postgres",
350
+ "runbook",
351
+ "slack"
352
+ ];
353
+ exports.NON_DEV_MCP_IDS = ["azure", "confluence", "runbook", "azuredevops", "slack"];
354
+ exports.MCP_KIT_META_PATH = node_path_1.default.join(node_os_1.default.homedir(), ".mcp-kit", "meta.json");
355
+ exports.VSCODE_SEARCH_DEPTH = 5;
356
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { CredentialStorage } from "../types";
2
+ export declare function storeCredential(key: string, value: string, storage: CredentialStorage, envFilePath?: string): Promise<void>;
3
+ export declare function getCredential(key: string, storage: CredentialStorage, envFilePath?: string): Promise<string | null>;
4
+ export declare function deleteCredential(key: string, storage: CredentialStorage, envFilePath?: string): Promise<void>;
5
+ export declare function buildEnvRefValue(key: string, storage: CredentialStorage, inlineValue?: string): string;
6
+ export declare function ensureGitignore(projectDir: string): Promise<void>;
7
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAiC7C,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBxB;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAMtG;AAED,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAevE"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.storeCredential = storeCredential;
40
+ exports.getCredential = getCredential;
41
+ exports.deleteCredential = deleteCredential;
42
+ exports.buildEnvRefValue = buildEnvRefValue;
43
+ exports.ensureGitignore = ensureGitignore;
44
+ const dotenv_1 = __importDefault(require("dotenv"));
45
+ const fs_extra_1 = __importDefault(require("fs-extra"));
46
+ const node_path_1 = __importDefault(require("node:path"));
47
+ const logger_1 = require("../utils/logger");
48
+ const SERVICE_NAME = "mcp-kit";
49
+ async function loadKeytar() {
50
+ try {
51
+ const mod = await Promise.resolve().then(() => __importStar(require("keytar")));
52
+ return mod.default;
53
+ }
54
+ catch {
55
+ return null;
56
+ }
57
+ }
58
+ function upsertEnvLine(content, key, value) {
59
+ const line = `${key}=${value}`;
60
+ const pattern = new RegExp(`^${key}=.*$`, "m");
61
+ if (pattern.test(content)) {
62
+ return content.replace(pattern, line);
63
+ }
64
+ const suffix = content.endsWith("\n") || content.length === 0 ? "" : "\n";
65
+ return `${content}${suffix}${line}\n`;
66
+ }
67
+ async function storeCredential(key, value, storage, envFilePath) {
68
+ if (storage === "keychain") {
69
+ const keytar = await loadKeytar();
70
+ if (keytar) {
71
+ await keytar.setPassword(SERVICE_NAME, key, value);
72
+ return;
73
+ }
74
+ logger_1.log.warn("Keychain unavailable. Falling back to .env storage.");
75
+ await storeCredential(key, value, "dotenv", envFilePath);
76
+ return;
77
+ }
78
+ if (storage === "dotenv") {
79
+ const targetPath = envFilePath || node_path_1.default.join(process.cwd(), ".env");
80
+ const existing = (await fs_extra_1.default.pathExists(targetPath)) ? await fs_extra_1.default.readFile(targetPath, "utf8") : "";
81
+ const updated = upsertEnvLine(existing, key, value);
82
+ await fs_extra_1.default.writeFile(targetPath, updated, "utf8");
83
+ await ensureGitignore(node_path_1.default.dirname(targetPath));
84
+ return;
85
+ }
86
+ logger_1.log.warn("⚠️ Credentials stored inline. Avoid committing mcp.json.");
87
+ }
88
+ async function getCredential(key, storage, envFilePath) {
89
+ if (storage === "keychain") {
90
+ const keytar = await loadKeytar();
91
+ if (!keytar) {
92
+ return null;
93
+ }
94
+ return keytar.getPassword(SERVICE_NAME, key);
95
+ }
96
+ if (storage === "dotenv") {
97
+ const targetPath = envFilePath || node_path_1.default.join(process.cwd(), ".env");
98
+ if (!(await fs_extra_1.default.pathExists(targetPath))) {
99
+ return null;
100
+ }
101
+ const parsed = dotenv_1.default.parse(await fs_extra_1.default.readFile(targetPath, "utf8"));
102
+ return parsed[key] ?? null;
103
+ }
104
+ return null;
105
+ }
106
+ async function deleteCredential(key, storage, envFilePath) {
107
+ if (storage === "keychain") {
108
+ const keytar = await loadKeytar();
109
+ if (keytar) {
110
+ await keytar.deletePassword(SERVICE_NAME, key);
111
+ }
112
+ return;
113
+ }
114
+ if (storage === "dotenv") {
115
+ const targetPath = envFilePath || node_path_1.default.join(process.cwd(), ".env");
116
+ if (!(await fs_extra_1.default.pathExists(targetPath))) {
117
+ return;
118
+ }
119
+ const lines = (await fs_extra_1.default.readFile(targetPath, "utf8"))
120
+ .split(/\r?\n/)
121
+ .filter((line) => line.trim().length > 0 && !line.startsWith(`${key}=`));
122
+ await fs_extra_1.default.writeFile(targetPath, `${lines.join("\n")}${lines.length > 0 ? "\n" : ""}`, "utf8");
123
+ }
124
+ }
125
+ function buildEnvRefValue(key, storage, inlineValue) {
126
+ if (storage === "inline") {
127
+ return inlineValue || "";
128
+ }
129
+ return `\${env:${key}}`;
130
+ }
131
+ async function ensureGitignore(projectDir) {
132
+ const gitignorePath = node_path_1.default.join(projectDir, ".gitignore");
133
+ const existing = (await fs_extra_1.default.pathExists(gitignorePath)) ? await fs_extra_1.default.readFile(gitignorePath, "utf8") : "";
134
+ const lines = new Set(existing.split(/\r?\n/).filter((line) => line.trim().length > 0));
135
+ if (!lines.has(".env")) {
136
+ lines.add(".env");
137
+ }
138
+ if (!lines.has("mcp.json")) {
139
+ lines.add("mcp.json");
140
+ }
141
+ const output = `${Array.from(lines).join("\n")}\n`;
142
+ await fs_extra_1.default.writeFile(gitignorePath, output, "utf8");
143
+ }
144
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { SupportedOS, VsCodePaths } from "../types";
2
+ export declare function detectOS(): SupportedOS;
3
+ export declare function getGlobalVsCodeConfigPath(currentOs: SupportedOS): string;
4
+ export declare function detectVsCodePath(): Promise<VsCodePaths>;
5
+ export declare function detectNodeVersion(): string;
6
+ export declare function isNodeVersionCompatible(): boolean;
7
+ export declare function detectExistingMcps(mcpJsonPath: string): Promise<string[]>;
8
+ //# sourceMappingURL=detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/core/detector.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,QAAQ,IAAI,WAAW,CAUtC;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CAUxE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAoC7D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAM/E"}
@@ -0,0 +1,82 @@
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.detectOS = detectOS;
7
+ exports.getGlobalVsCodeConfigPath = getGlobalVsCodeConfigPath;
8
+ exports.detectVsCodePath = detectVsCodePath;
9
+ exports.detectNodeVersion = detectNodeVersion;
10
+ exports.isNodeVersionCompatible = isNodeVersionCompatible;
11
+ exports.detectExistingMcps = detectExistingMcps;
12
+ const fs_extra_1 = __importDefault(require("fs-extra"));
13
+ const node_os_1 = __importDefault(require("node:os"));
14
+ const node_path_1 = __importDefault(require("node:path"));
15
+ const semver_1 = __importDefault(require("semver"));
16
+ const constants_1 = require("../constants");
17
+ const writer_1 = require("./writer");
18
+ function detectOS() {
19
+ if (process.platform === "win32") {
20
+ return "windows";
21
+ }
22
+ if (process.platform === "darwin") {
23
+ return "mac";
24
+ }
25
+ return "linux";
26
+ }
27
+ function getGlobalVsCodeConfigPath(currentOs) {
28
+ if (currentOs === "windows") {
29
+ return node_path_1.default.join(process.env.APPDATA || node_path_1.default.join(node_os_1.default.homedir(), "AppData", "Roaming"), "Code", "User");
30
+ }
31
+ if (currentOs === "mac") {
32
+ return node_path_1.default.join(node_os_1.default.homedir(), "Library", "Application Support", "Code", "User");
33
+ }
34
+ return node_path_1.default.join(node_os_1.default.homedir(), ".config", "Code", "User");
35
+ }
36
+ async function detectVsCodePath() {
37
+ let current = process.cwd();
38
+ for (let i = 0; i <= constants_1.VSCODE_SEARCH_DEPTH; i += 1) {
39
+ const candidate = node_path_1.default.join(current, ".vscode");
40
+ if (await fs_extra_1.default.pathExists(candidate)) {
41
+ return {
42
+ vscodeFolderPath: candidate,
43
+ mcpJsonPath: node_path_1.default.join(candidate, "mcp.json"),
44
+ source: "project"
45
+ };
46
+ }
47
+ const parent = node_path_1.default.dirname(current);
48
+ if (parent === current) {
49
+ break;
50
+ }
51
+ current = parent;
52
+ }
53
+ const globalPath = getGlobalVsCodeConfigPath(detectOS());
54
+ if (await fs_extra_1.default.pathExists(globalPath)) {
55
+ return {
56
+ vscodeFolderPath: globalPath,
57
+ mcpJsonPath: node_path_1.default.join(globalPath, "mcp.json"),
58
+ source: "global"
59
+ };
60
+ }
61
+ const created = node_path_1.default.join(process.cwd(), ".vscode");
62
+ fs_extra_1.default.mkdirSync(created, { recursive: true });
63
+ return {
64
+ vscodeFolderPath: created,
65
+ mcpJsonPath: node_path_1.default.join(created, "mcp.json"),
66
+ source: "created"
67
+ };
68
+ }
69
+ function detectNodeVersion() {
70
+ return process.version;
71
+ }
72
+ function isNodeVersionCompatible() {
73
+ return semver_1.default.gte(process.version, "18.0.0");
74
+ }
75
+ async function detectExistingMcps(mcpJsonPath) {
76
+ if (!(await fs_extra_1.default.pathExists(mcpJsonPath))) {
77
+ return [];
78
+ }
79
+ const config = await (0, writer_1.readMcpJson)(mcpJsonPath);
80
+ return Object.keys(config.servers);
81
+ }
82
+ //# sourceMappingURL=detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/core/detector.ts"],"names":[],"mappings":";;;;;AAQA,4BAUC;AAED,8DAUC;AAED,4CAoCC;AAED,8CAEC;AAED,0DAEC;AAED,gDAMC;AApFD,wDAA0B;AAC1B,sDAAyB;AACzB,0DAA6B;AAC7B,oDAA4B;AAC5B,4CAAmD;AACnD,qCAAuC;AAGvC,SAAgB,QAAQ;IACtB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,yBAAyB,CAAC,SAAsB;IAC9D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzG,CAAC;IAED,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,OAAO,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAEM,KAAK,UAAU,gBAAgB;IACpC,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,+BAAmB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,OAAO;gBACL,gBAAgB,EAAE,SAAS;gBAC3B,WAAW,EAAE,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;gBAC7C,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM;QACR,CAAC;QACD,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,gBAAgB,EAAE,UAAU;YAC5B,WAAW,EAAE,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;YAC9C,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IACpD,kBAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO;QACL,gBAAgB,EAAE,OAAO;QACzB,WAAW,EAAE,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;QAC3C,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,OAAO,CAAC,OAAO,CAAC;AACzB,CAAC;AAED,SAAgB,uBAAuB;IACrC,OAAO,gBAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,WAAmB;IAC1D,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAW,EAAC,WAAW,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { McpCategory, McpDefinition, ProfileMode } from "../types";
2
+ export declare function getMcpById(id: string): McpDefinition | undefined;
3
+ export declare function getMcpsForProfile(mode: ProfileMode): McpDefinition[];
4
+ export declare function getMcpsByCategory(category: McpCategory): McpDefinition[];
5
+ export declare function getLatestVersion(npmPackage: string): Promise<string>;
6
+ export declare function enrichWithVersions(mcps: McpDefinition[]): Promise<McpDefinition[]>;
7
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEnE,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,EAAE,CAMpE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,GAAG,aAAa,EAAE,CAExE;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1E;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAGxF"}