mcpflare 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 (84) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +22 -0
  3. package/README.md +390 -0
  4. package/dist/cli/index.d.ts +3 -0
  5. package/dist/cli/index.d.ts.map +1 -0
  6. package/dist/cli/index.js +1615 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/server/index.d.ts +3 -0
  9. package/dist/server/index.d.ts.map +1 -0
  10. package/dist/server/index.js +19 -0
  11. package/dist/server/index.js.map +1 -0
  12. package/dist/server/mcp-handler.d.ts +34 -0
  13. package/dist/server/mcp-handler.d.ts.map +1 -0
  14. package/dist/server/mcp-handler.js +1524 -0
  15. package/dist/server/mcp-handler.js.map +1 -0
  16. package/dist/server/metrics-collector.d.ts +30 -0
  17. package/dist/server/metrics-collector.d.ts.map +1 -0
  18. package/dist/server/metrics-collector.js +85 -0
  19. package/dist/server/metrics-collector.js.map +1 -0
  20. package/dist/server/schema-converter.d.ts +9 -0
  21. package/dist/server/schema-converter.d.ts.map +1 -0
  22. package/dist/server/schema-converter.js +82 -0
  23. package/dist/server/schema-converter.js.map +1 -0
  24. package/dist/server/worker-manager.d.ts +48 -0
  25. package/dist/server/worker-manager.d.ts.map +1 -0
  26. package/dist/server/worker-manager.js +1746 -0
  27. package/dist/server/worker-manager.js.map +1 -0
  28. package/dist/types/index.d.ts +3 -0
  29. package/dist/types/index.d.ts.map +1 -0
  30. package/dist/types/index.js +3 -0
  31. package/dist/types/index.js.map +1 -0
  32. package/dist/types/mcp.d.ts +495 -0
  33. package/dist/types/mcp.d.ts.map +1 -0
  34. package/dist/types/mcp.js +80 -0
  35. package/dist/types/mcp.js.map +1 -0
  36. package/dist/types/worker.d.ts +35 -0
  37. package/dist/types/worker.d.ts.map +1 -0
  38. package/dist/types/worker.js +2 -0
  39. package/dist/types/worker.js.map +1 -0
  40. package/dist/utils/config-manager.d.ts +64 -0
  41. package/dist/utils/config-manager.d.ts.map +1 -0
  42. package/dist/utils/config-manager.js +556 -0
  43. package/dist/utils/config-manager.js.map +1 -0
  44. package/dist/utils/env-selector.d.ts +4 -0
  45. package/dist/utils/env-selector.d.ts.map +1 -0
  46. package/dist/utils/env-selector.js +127 -0
  47. package/dist/utils/env-selector.js.map +1 -0
  48. package/dist/utils/errors.d.ts +19 -0
  49. package/dist/utils/errors.d.ts.map +1 -0
  50. package/dist/utils/errors.js +37 -0
  51. package/dist/utils/errors.js.map +1 -0
  52. package/dist/utils/logger.d.ts +4 -0
  53. package/dist/utils/logger.d.ts.map +1 -0
  54. package/dist/utils/logger.js +27 -0
  55. package/dist/utils/logger.js.map +1 -0
  56. package/dist/utils/mcp-registry.d.ts +108 -0
  57. package/dist/utils/mcp-registry.d.ts.map +1 -0
  58. package/dist/utils/mcp-registry.js +298 -0
  59. package/dist/utils/mcp-registry.js.map +1 -0
  60. package/dist/utils/progress-indicator.d.ts +14 -0
  61. package/dist/utils/progress-indicator.d.ts.map +1 -0
  62. package/dist/utils/progress-indicator.js +82 -0
  63. package/dist/utils/progress-indicator.js.map +1 -0
  64. package/dist/utils/settings-manager.d.ts +19 -0
  65. package/dist/utils/settings-manager.d.ts.map +1 -0
  66. package/dist/utils/settings-manager.js +78 -0
  67. package/dist/utils/settings-manager.js.map +1 -0
  68. package/dist/utils/token-calculator.d.ts +34 -0
  69. package/dist/utils/token-calculator.d.ts.map +1 -0
  70. package/dist/utils/token-calculator.js +167 -0
  71. package/dist/utils/token-calculator.js.map +1 -0
  72. package/dist/utils/validation.d.ts +4 -0
  73. package/dist/utils/validation.d.ts.map +1 -0
  74. package/dist/utils/validation.js +36 -0
  75. package/dist/utils/validation.js.map +1 -0
  76. package/dist/utils/wrangler-formatter.d.ts +37 -0
  77. package/dist/utils/wrangler-formatter.d.ts.map +1 -0
  78. package/dist/utils/wrangler-formatter.js +302 -0
  79. package/dist/utils/wrangler-formatter.js.map +1 -0
  80. package/dist/worker/runtime.d.ts +34 -0
  81. package/dist/worker/runtime.d.ts.map +1 -0
  82. package/dist/worker/runtime.js +166 -0
  83. package/dist/worker/runtime.js.map +1 -0
  84. package/package.json +81 -0
@@ -0,0 +1,556 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { dirname, join } from 'node:path';
4
+ import { parse as parseJSONC } from 'jsonc-parser';
5
+ import logger from './logger.js';
6
+ export class ConfigManager {
7
+ configPath = null;
8
+ configSource = null;
9
+ ideDefinitions = [
10
+ {
11
+ id: 'claude-code',
12
+ displayName: 'Claude Code',
13
+ priority: 1,
14
+ paths: {
15
+ windows: [
16
+ join(homedir(), '.claude', 'mcp.json'),
17
+ join(homedir(), '.claude', 'mcp.jsonc'),
18
+ join(homedir(), 'AppData', 'Roaming', 'Claude Code', 'User', 'globalStorage', 'mcp.json'),
19
+ join(homedir(), 'AppData', 'Roaming', 'Claude Code', 'User', 'globalStorage', 'mcp.jsonc'),
20
+ ],
21
+ macos: [
22
+ join(homedir(), '.claude', 'mcp.json'),
23
+ join(homedir(), '.claude', 'mcp.jsonc'),
24
+ join(homedir(), 'Library', 'Application Support', 'Claude Code', 'User', 'globalStorage', 'mcp.json'),
25
+ join(homedir(), 'Library', 'Application Support', 'Claude Code', 'User', 'globalStorage', 'mcp.jsonc'),
26
+ ],
27
+ linux: [
28
+ join(homedir(), '.claude', 'mcp.json'),
29
+ join(homedir(), '.claude', 'mcp.jsonc'),
30
+ join(homedir(), '.config', 'Claude Code', 'User', 'globalStorage', 'mcp.json'),
31
+ join(homedir(), '.config', 'Claude Code', 'User', 'globalStorage', 'mcp.jsonc'),
32
+ ],
33
+ default: join(homedir(), '.claude', 'mcp.jsonc'),
34
+ },
35
+ },
36
+ {
37
+ id: 'github-copilot',
38
+ displayName: 'GitHub Copilot',
39
+ priority: 2,
40
+ paths: {
41
+ windows: [
42
+ join(homedir(), '.github', 'copilot', 'mcp.json'),
43
+ join(homedir(), '.github', 'copilot', 'mcp.jsonc'),
44
+ join(homedir(), 'AppData', 'Roaming', 'Code', 'User', 'globalStorage', 'github.copilot', 'mcp.json'),
45
+ join(homedir(), 'AppData', 'Roaming', 'Code', 'User', 'globalStorage', 'github.copilot', 'mcp.jsonc'),
46
+ join(homedir(), 'AppData', 'Roaming', 'GitHub Copilot', 'mcp.json'),
47
+ join(homedir(), 'AppData', 'Roaming', 'GitHub Copilot', 'mcp.jsonc'),
48
+ ],
49
+ macos: [
50
+ join(homedir(), '.github', 'copilot', 'mcp.json'),
51
+ join(homedir(), '.github', 'copilot', 'mcp.jsonc'),
52
+ join(homedir(), 'Library', 'Application Support', 'Code', 'User', 'globalStorage', 'github.copilot', 'mcp.json'),
53
+ join(homedir(), 'Library', 'Application Support', 'Code', 'User', 'globalStorage', 'github.copilot', 'mcp.jsonc'),
54
+ join(homedir(), 'Library', 'Application Support', 'GitHub Copilot', 'mcp.json'),
55
+ join(homedir(), 'Library', 'Application Support', 'GitHub Copilot', 'mcp.jsonc'),
56
+ ],
57
+ linux: [
58
+ join(homedir(), '.github', 'copilot', 'mcp.json'),
59
+ join(homedir(), '.github', 'copilot', 'mcp.jsonc'),
60
+ join(homedir(), '.config', 'Code', 'User', 'globalStorage', 'github.copilot', 'mcp.json'),
61
+ join(homedir(), '.config', 'Code', 'User', 'globalStorage', 'github.copilot', 'mcp.jsonc'),
62
+ join(homedir(), '.config', 'GitHub Copilot', 'mcp.json'),
63
+ join(homedir(), '.config', 'GitHub Copilot', 'mcp.jsonc'),
64
+ ],
65
+ default: join(homedir(), '.github', 'copilot', 'mcp.jsonc'),
66
+ },
67
+ },
68
+ {
69
+ id: 'cursor',
70
+ displayName: 'Cursor',
71
+ priority: 3,
72
+ paths: {
73
+ windows: [
74
+ join(homedir(), '.cursor', 'mcp.json'),
75
+ join(homedir(), '.cursor', 'mcp.jsonc'),
76
+ join(homedir(), 'AppData', 'Roaming', 'Cursor', 'User', 'globalStorage', 'mcp.json'),
77
+ join(homedir(), 'AppData', 'Roaming', 'Cursor', 'User', 'globalStorage', 'mcp.jsonc'),
78
+ ],
79
+ macos: [
80
+ join(homedir(), '.cursor', 'mcp.json'),
81
+ join(homedir(), '.cursor', 'mcp.jsonc'),
82
+ join(homedir(), 'Library', 'Application Support', 'Cursor', 'User', 'globalStorage', 'mcp.json'),
83
+ join(homedir(), 'Library', 'Application Support', 'Cursor', 'User', 'globalStorage', 'mcp.jsonc'),
84
+ ],
85
+ linux: [
86
+ join(homedir(), '.cursor', 'mcp.json'),
87
+ join(homedir(), '.cursor', 'mcp.jsonc'),
88
+ join(homedir(), '.config', 'Cursor', 'User', 'globalStorage', 'mcp.json'),
89
+ join(homedir(), '.config', 'Cursor', 'User', 'globalStorage', 'mcp.jsonc'),
90
+ ],
91
+ default: join(homedir(), '.cursor', 'mcp.jsonc'),
92
+ },
93
+ },
94
+ ];
95
+ constructor() {
96
+ const result = this.findConfigFile();
97
+ this.configPath = result.path;
98
+ this.configSource = result.source;
99
+ }
100
+ getPlatformPaths(ide) {
101
+ const platform = process.platform;
102
+ if (platform === 'win32') {
103
+ return ide.paths.windows;
104
+ }
105
+ else if (platform === 'darwin') {
106
+ return ide.paths.macos;
107
+ }
108
+ else {
109
+ return ide.paths.linux;
110
+ }
111
+ }
112
+ findConfigFile() {
113
+ const sortedIDEs = [...this.ideDefinitions].sort((a, b) => a.priority - b.priority);
114
+ for (const ide of sortedIDEs) {
115
+ const paths = this.getPlatformPaths(ide);
116
+ for (const path of paths) {
117
+ if (existsSync(path)) {
118
+ logger.info({ path, ide: ide.id }, `Found ${ide.displayName} MCP config file`);
119
+ return { path, source: ide.id };
120
+ }
121
+ }
122
+ }
123
+ logger.warn('MCP config file not found in standard locations for any supported IDE');
124
+ return { path: null, source: null };
125
+ }
126
+ resolveEnvVars(value) {
127
+ return value.replace(/\$\{([^}]+)\}/g, (match, varName) => {
128
+ const envValue = process.env[varName];
129
+ if (envValue === undefined) {
130
+ logger.warn({ varName }, `Environment variable ${varName} not found, keeping placeholder`);
131
+ return match;
132
+ }
133
+ return envValue;
134
+ });
135
+ }
136
+ resolveEnvVarsInObject(obj) {
137
+ if (typeof obj === 'string') {
138
+ return this.resolveEnvVars(obj);
139
+ }
140
+ if (Array.isArray(obj)) {
141
+ return obj.map((item) => this.resolveEnvVarsInObject(item));
142
+ }
143
+ if (obj && typeof obj === 'object') {
144
+ const resolved = {};
145
+ for (const [key, value] of Object.entries(obj)) {
146
+ resolved[key] = this.resolveEnvVarsInObject(value);
147
+ }
148
+ return resolved;
149
+ }
150
+ return obj;
151
+ }
152
+ readConfigFile(filePath) {
153
+ if (!existsSync(filePath)) {
154
+ return null;
155
+ }
156
+ try {
157
+ const content = readFileSync(filePath, 'utf-8');
158
+ const config = parseJSONC(content);
159
+ if (!config || typeof config !== 'object') {
160
+ logger.warn({ filePath }, 'Invalid config file format');
161
+ return null;
162
+ }
163
+ if (!config.mcpServers || typeof config.mcpServers !== 'object') {
164
+ config.mcpServers = {};
165
+ }
166
+ const activeConfig = {
167
+ mcpServers: {},
168
+ _mcpflare_disabled: config._mcpflare_disabled,
169
+ _mcpflare_metadata: config._mcpflare_metadata,
170
+ };
171
+ for (const [name, mcpConfig] of Object.entries(config.mcpServers)) {
172
+ if (config._mcpflare_disabled?.[name]) {
173
+ continue;
174
+ }
175
+ activeConfig.mcpServers[name] = mcpConfig;
176
+ }
177
+ return activeConfig;
178
+ }
179
+ catch (error) {
180
+ logger.error({ error, filePath }, 'Failed to read config file');
181
+ return null;
182
+ }
183
+ }
184
+ readRawConfigFile(filePath) {
185
+ if (!existsSync(filePath)) {
186
+ return null;
187
+ }
188
+ try {
189
+ const content = readFileSync(filePath, 'utf-8');
190
+ const config = parseJSONC(content);
191
+ if (!config || typeof config !== 'object') {
192
+ logger.warn({ filePath }, 'Invalid config file format');
193
+ return null;
194
+ }
195
+ if (!config.mcpServers || typeof config.mcpServers !== 'object') {
196
+ config.mcpServers = {};
197
+ }
198
+ return config;
199
+ }
200
+ catch (error) {
201
+ logger.error({ error, filePath }, 'Failed to read config file');
202
+ return null;
203
+ }
204
+ }
205
+ writeConfigFile(filePath, config) {
206
+ try {
207
+ const dir = dirname(filePath);
208
+ if (!existsSync(dir)) {
209
+ mkdirSync(dir, { recursive: true });
210
+ }
211
+ const content = JSON.stringify(config, null, 2);
212
+ writeFileSync(filePath, content, 'utf-8');
213
+ }
214
+ catch (error) {
215
+ logger.error({ error, filePath }, 'Failed to write config file');
216
+ throw error;
217
+ }
218
+ }
219
+ getSavedConfigs() {
220
+ const configs = {};
221
+ if (!this.configPath || !this.configSource) {
222
+ return configs;
223
+ }
224
+ const fileConfig = this.readConfigFile(this.configPath);
225
+ if (fileConfig) {
226
+ for (const [name, config] of Object.entries(fileConfig.mcpServers)) {
227
+ configs[name] = {
228
+ config: config,
229
+ source: this.configSource,
230
+ };
231
+ }
232
+ }
233
+ return configs;
234
+ }
235
+ getSavedConfig(mcpName) {
236
+ const saved = this.getSavedConfigs();
237
+ const entry = saved[mcpName];
238
+ if (!entry) {
239
+ return null;
240
+ }
241
+ return this.resolveEnvVarsInObject(entry.config);
242
+ }
243
+ saveConfig(mcpName, config) {
244
+ if (!this.configPath) {
245
+ const sortedIDEs = [...this.ideDefinitions].sort((a, b) => a.priority - b.priority);
246
+ let foundIDE = null;
247
+ for (const ide of sortedIDEs) {
248
+ const defaultDir = dirname(ide.paths.default);
249
+ if (existsSync(defaultDir)) {
250
+ foundIDE = ide;
251
+ break;
252
+ }
253
+ }
254
+ const ideToUse = foundIDE || sortedIDEs[0];
255
+ const defaultPath = ideToUse.paths.default;
256
+ const dir = dirname(defaultPath);
257
+ if (!existsSync(dir)) {
258
+ mkdirSync(dir, { recursive: true });
259
+ }
260
+ this.configPath = defaultPath;
261
+ this.configSource = ideToUse.id;
262
+ }
263
+ const existingConfig = this.readConfigFile(this.configPath) || {
264
+ mcpServers: {},
265
+ };
266
+ existingConfig.mcpServers[mcpName] = config;
267
+ this.writeConfigFile(this.configPath, existingConfig);
268
+ const ide = this.ideDefinitions.find((d) => d.id === this.configSource);
269
+ const sourceName = ide ? ide.displayName : 'IDE';
270
+ logger.info({ mcpName, configPath: this.configPath, source: this.configSource }, `MCP config saved to ${sourceName} config file`);
271
+ }
272
+ deleteConfig(mcpName) {
273
+ if (!this.configPath) {
274
+ return false;
275
+ }
276
+ const existingConfig = this.readRawConfigFile(this.configPath);
277
+ if (!existingConfig) {
278
+ return false;
279
+ }
280
+ let deleted = false;
281
+ if (existingConfig.mcpServers[mcpName]) {
282
+ delete existingConfig.mcpServers[mcpName];
283
+ deleted = true;
284
+ }
285
+ if (existingConfig._mcpflare_disabled?.[mcpName]) {
286
+ delete existingConfig._mcpflare_disabled[mcpName];
287
+ deleted = true;
288
+ if (Object.keys(existingConfig._mcpflare_disabled).length === 0) {
289
+ delete existingConfig._mcpflare_disabled;
290
+ }
291
+ }
292
+ if (!deleted) {
293
+ return false;
294
+ }
295
+ this.writeConfigFile(this.configPath, existingConfig);
296
+ const ide = this.ideDefinitions.find((d) => d.id === this.configSource);
297
+ const sourceName = ide ? ide.displayName : 'IDE';
298
+ logger.info({ mcpName, configPath: this.configPath, source: this.configSource }, `MCP config deleted from ${sourceName} config file`);
299
+ return true;
300
+ }
301
+ importConfigs(configPath) {
302
+ const errors = [];
303
+ let imported = 0;
304
+ if (configPath) {
305
+ this.configPath = configPath;
306
+ const detectedIDE = this.ideDefinitions.find((ide) => configPath.toLowerCase().includes(ide.id.replace('-', '')) ||
307
+ configPath
308
+ .toLowerCase()
309
+ .includes(ide.displayName.toLowerCase().replace(/\s+/g, '')));
310
+ if (detectedIDE) {
311
+ this.configSource = detectedIDE.id;
312
+ }
313
+ else {
314
+ this.configSource = 'cursor';
315
+ }
316
+ if (existsSync(configPath)) {
317
+ const config = this.readConfigFile(configPath);
318
+ if (config) {
319
+ imported = Object.keys(config.mcpServers).length;
320
+ const ide = this.ideDefinitions.find((d) => d.id === this.configSource);
321
+ const sourceName = ide ? ide.displayName : 'IDE';
322
+ logger.info({ path: configPath, imported, source: this.configSource }, `Loaded ${sourceName} configs from specified path`);
323
+ }
324
+ }
325
+ else {
326
+ errors.push(`Config file not found: ${configPath}`);
327
+ logger.debug({ path: configPath }, 'Config file does not exist yet, will be created on save');
328
+ }
329
+ }
330
+ else {
331
+ const result = this.findConfigFile();
332
+ this.configPath = result.path;
333
+ this.configSource = result.source;
334
+ if (this.configPath) {
335
+ const config = this.readConfigFile(this.configPath);
336
+ if (config) {
337
+ imported = Object.keys(config.mcpServers).length;
338
+ const ide = this.ideDefinitions.find((d) => d.id === this.configSource);
339
+ const sourceName = ide ? ide.displayName : 'IDE';
340
+ logger.info({ path: this.configPath, imported, source: this.configSource }, `Refreshed ${sourceName} configs`);
341
+ }
342
+ }
343
+ else {
344
+ const ideNames = this.ideDefinitions
345
+ .map((d) => d.displayName)
346
+ .join(', ');
347
+ errors.push(`MCP config file not found in standard locations for ${ideNames}`);
348
+ }
349
+ }
350
+ return { imported, errors };
351
+ }
352
+ getCursorConfigPath() {
353
+ return this.configPath;
354
+ }
355
+ getConfigSource() {
356
+ return this.configSource;
357
+ }
358
+ getConfigSourceDisplayName() {
359
+ if (!this.configSource) {
360
+ return 'IDE';
361
+ }
362
+ const ide = this.ideDefinitions.find((d) => d.id === this.configSource);
363
+ return ide ? ide.displayName : 'IDE';
364
+ }
365
+ getAllConfiguredMCPs() {
366
+ const allMCPs = {};
367
+ if (!this.configPath || !this.configSource) {
368
+ return allMCPs;
369
+ }
370
+ const rawConfig = this.readRawConfigFile(this.configPath);
371
+ if (!rawConfig) {
372
+ return allMCPs;
373
+ }
374
+ for (const [name, config] of Object.entries(rawConfig.mcpServers || {})) {
375
+ if (name.toLowerCase() !== 'mcpflare' && config) {
376
+ allMCPs[name] = {
377
+ config: config,
378
+ source: this.configSource,
379
+ status: 'active',
380
+ };
381
+ }
382
+ }
383
+ for (const [name, config] of Object.entries(rawConfig._mcpflare_disabled || {})) {
384
+ if (name.toLowerCase() !== 'mcpflare' && config) {
385
+ allMCPs[name] = {
386
+ config: config,
387
+ source: this.configSource,
388
+ status: 'disabled',
389
+ };
390
+ }
391
+ }
392
+ return allMCPs;
393
+ }
394
+ getGuardedMCPConfigs() {
395
+ const guardedConfigs = {};
396
+ if (!this.configPath || !this.configSource) {
397
+ return guardedConfigs;
398
+ }
399
+ const rawConfig = this.readRawConfigFile(this.configPath);
400
+ if (!rawConfig) {
401
+ return guardedConfigs;
402
+ }
403
+ for (const [name, config] of Object.entries(rawConfig.mcpServers || {})) {
404
+ if (name.toLowerCase() !== 'mcpflare' && config) {
405
+ guardedConfigs[name] = {
406
+ config: config,
407
+ source: this.configSource,
408
+ };
409
+ }
410
+ }
411
+ for (const [name, config] of Object.entries(rawConfig._mcpflare_disabled || {})) {
412
+ if (name.toLowerCase() !== 'mcpflare' && config) {
413
+ guardedConfigs[name] = {
414
+ config: config,
415
+ source: this.configSource,
416
+ };
417
+ }
418
+ }
419
+ return guardedConfigs;
420
+ }
421
+ disableMCP(mcpName) {
422
+ if (!this.configPath) {
423
+ logger.warn('No config file found, cannot disable MCP');
424
+ return false;
425
+ }
426
+ const rawConfig = this.readRawConfigFile(this.configPath);
427
+ if (!rawConfig) {
428
+ return false;
429
+ }
430
+ if (!rawConfig.mcpServers[mcpName]) {
431
+ if (rawConfig._mcpflare_disabled?.[mcpName]) {
432
+ logger.info({ mcpName }, 'MCP is already disabled');
433
+ return false;
434
+ }
435
+ logger.warn({ mcpName }, 'MCP not found in config');
436
+ return false;
437
+ }
438
+ const mcpConfig = rawConfig.mcpServers[mcpName];
439
+ delete rawConfig.mcpServers[mcpName];
440
+ if (!rawConfig._mcpflare_disabled) {
441
+ rawConfig._mcpflare_disabled = {};
442
+ }
443
+ rawConfig._mcpflare_disabled[mcpName] = mcpConfig;
444
+ if (!rawConfig._mcpflare_metadata) {
445
+ rawConfig._mcpflare_metadata = {};
446
+ }
447
+ rawConfig._mcpflare_metadata.disabled_at = new Date().toISOString();
448
+ this.writeConfigFile(this.configPath, rawConfig);
449
+ const ide = this.ideDefinitions.find((d) => d.id === this.configSource);
450
+ const sourceName = ide ? ide.displayName : 'IDE';
451
+ logger.info({ mcpName, configPath: this.configPath, source: this.configSource }, `MCP disabled in ${sourceName} config file (moved to _mcpflare_disabled)`);
452
+ return true;
453
+ }
454
+ enableMCP(mcpName) {
455
+ if (!this.configPath) {
456
+ logger.warn('No config file found, cannot enable MCP');
457
+ return false;
458
+ }
459
+ const rawConfig = this.readRawConfigFile(this.configPath);
460
+ if (!rawConfig) {
461
+ return false;
462
+ }
463
+ if (!rawConfig._mcpflare_disabled?.[mcpName]) {
464
+ logger.warn({ mcpName }, 'MCP not found in disabled list');
465
+ return false;
466
+ }
467
+ const mcpConfig = rawConfig._mcpflare_disabled[mcpName];
468
+ delete rawConfig._mcpflare_disabled[mcpName];
469
+ if (!rawConfig.mcpServers) {
470
+ rawConfig.mcpServers = {};
471
+ }
472
+ rawConfig.mcpServers[mcpName] = mcpConfig;
473
+ if (rawConfig._mcpflare_disabled &&
474
+ Object.keys(rawConfig._mcpflare_disabled).length === 0) {
475
+ delete rawConfig._mcpflare_disabled;
476
+ }
477
+ this.writeConfigFile(this.configPath, rawConfig);
478
+ const ide = this.ideDefinitions.find((d) => d.id === this.configSource);
479
+ const sourceName = ide ? ide.displayName : 'IDE';
480
+ logger.info({ mcpName, configPath: this.configPath, source: this.configSource }, `MCP enabled in ${sourceName} config file (moved from _mcpflare_disabled)`);
481
+ return true;
482
+ }
483
+ disableAllExceptMCPflare() {
484
+ const result = {
485
+ disabled: [],
486
+ failed: [],
487
+ alreadyDisabled: [],
488
+ mcpflareRestored: false,
489
+ };
490
+ if (!this.configPath) {
491
+ return result;
492
+ }
493
+ const rawConfig = this.readRawConfigFile(this.configPath);
494
+ if (!rawConfig || !rawConfig.mcpServers) {
495
+ return result;
496
+ }
497
+ if (rawConfig._mcpflare_disabled?.mcpflare) {
498
+ this.enableMCP('mcpflare');
499
+ result.mcpflareRestored = true;
500
+ }
501
+ for (const [mcpName] of Object.entries(rawConfig.mcpServers)) {
502
+ if (mcpName.toLowerCase() === 'mcpflare') {
503
+ continue;
504
+ }
505
+ if (rawConfig._mcpflare_disabled?.[mcpName]) {
506
+ result.alreadyDisabled.push(mcpName);
507
+ }
508
+ else if (this.disableMCP(mcpName)) {
509
+ result.disabled.push(mcpName);
510
+ }
511
+ else {
512
+ result.failed.push(mcpName);
513
+ }
514
+ }
515
+ return result;
516
+ }
517
+ restoreAllDisabled() {
518
+ const restored = [];
519
+ if (!this.configPath) {
520
+ return restored;
521
+ }
522
+ const rawConfig = this.readRawConfigFile(this.configPath);
523
+ if (!rawConfig || !rawConfig._mcpflare_disabled) {
524
+ return restored;
525
+ }
526
+ for (const [mcpName] of Object.entries(rawConfig._mcpflare_disabled)) {
527
+ if (this.enableMCP(mcpName)) {
528
+ restored.push(mcpName);
529
+ }
530
+ }
531
+ return restored;
532
+ }
533
+ getDisabledMCPs() {
534
+ if (!this.configPath) {
535
+ return [];
536
+ }
537
+ const rawConfig = this.readConfigFile(this.configPath);
538
+ if (!rawConfig || !rawConfig._mcpflare_disabled) {
539
+ return [];
540
+ }
541
+ return Object.keys(rawConfig._mcpflare_disabled);
542
+ }
543
+ isMCPDisabled(mcpName) {
544
+ return this.getDisabledMCPs().includes(mcpName);
545
+ }
546
+ getDisabledMCPNames() {
547
+ return this.getDisabledMCPs();
548
+ }
549
+ getRawConfig() {
550
+ if (!this.configPath) {
551
+ return null;
552
+ }
553
+ return this.readRawConfigFile(this.configPath);
554
+ }
555
+ }
556
+ //# sourceMappingURL=config-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/utils/config-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type * as readline from 'node:readline';
2
+ export declare function getEnvVarsFromFile(): Record<string, string>;
3
+ export declare function selectEnvVarsInteractively(rl: readline.Interface): Promise<Record<string, string>>;
4
+ //# sourceMappingURL=env-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-selector.d.ts","sourceRoot":"","sources":["../../src/utils/env-selector.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,QAAQ,MAAM,eAAe,CAAA;AAK9C,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqC3D;AAMD,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,QAAQ,CAAC,SAAS,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiIjC"}