@1mcp/agent 0.16.0 → 0.17.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 (156) hide show
  1. package/README.md +37 -2
  2. package/build/commands/app/backups.d.ts +17 -0
  3. package/build/commands/app/backups.d.ts.map +1 -0
  4. package/build/commands/app/backups.js +162 -0
  5. package/build/commands/app/backups.js.map +1 -0
  6. package/build/commands/app/consolidate.d.ts +21 -0
  7. package/build/commands/app/consolidate.d.ts.map +1 -0
  8. package/build/commands/app/consolidate.js +383 -0
  9. package/build/commands/app/consolidate.js.map +1 -0
  10. package/build/commands/app/discover.d.ts +16 -0
  11. package/build/commands/app/discover.d.ts.map +1 -0
  12. package/build/commands/app/discover.js +79 -0
  13. package/build/commands/app/discover.js.map +1 -0
  14. package/build/commands/app/index.d.ts +12 -0
  15. package/build/commands/app/index.d.ts.map +1 -0
  16. package/build/commands/app/index.js +274 -0
  17. package/build/commands/app/index.js.map +1 -0
  18. package/build/commands/app/list.d.ts +16 -0
  19. package/build/commands/app/list.d.ts.map +1 -0
  20. package/build/commands/app/list.js +95 -0
  21. package/build/commands/app/list.js.map +1 -0
  22. package/build/commands/app/restore.d.ts +21 -0
  23. package/build/commands/app/restore.d.ts.map +1 -0
  24. package/build/commands/app/restore.js +265 -0
  25. package/build/commands/app/restore.js.map +1 -0
  26. package/build/commands/app/status.d.ts +16 -0
  27. package/build/commands/app/status.d.ts.map +1 -0
  28. package/build/commands/app/status.js +224 -0
  29. package/build/commands/app/status.js.map +1 -0
  30. package/build/commands/mcp/add.d.ts +19 -0
  31. package/build/commands/mcp/add.d.ts.map +1 -0
  32. package/build/commands/mcp/add.js +135 -0
  33. package/build/commands/mcp/add.js.map +1 -0
  34. package/build/commands/mcp/enable.d.ts +13 -0
  35. package/build/commands/mcp/enable.d.ts.map +1 -0
  36. package/build/commands/mcp/enable.js +100 -0
  37. package/build/commands/mcp/enable.js.map +1 -0
  38. package/build/commands/mcp/index.d.ts +12 -0
  39. package/build/commands/mcp/index.d.ts.map +1 -0
  40. package/build/commands/mcp/index.js +351 -0
  41. package/build/commands/mcp/index.js.map +1 -0
  42. package/build/commands/mcp/list.d.ts +11 -0
  43. package/build/commands/mcp/list.d.ts.map +1 -0
  44. package/build/commands/mcp/list.js +144 -0
  45. package/build/commands/mcp/list.js.map +1 -0
  46. package/build/commands/mcp/remove.d.ts +10 -0
  47. package/build/commands/mcp/remove.d.ts.map +1 -0
  48. package/build/commands/mcp/remove.js +89 -0
  49. package/build/commands/mcp/remove.js.map +1 -0
  50. package/build/commands/mcp/status.d.ts +10 -0
  51. package/build/commands/mcp/status.d.ts.map +1 -0
  52. package/build/commands/mcp/status.js +243 -0
  53. package/build/commands/mcp/status.js.map +1 -0
  54. package/build/commands/mcp/update.d.ts +18 -0
  55. package/build/commands/mcp/update.d.ts.map +1 -0
  56. package/build/commands/mcp/update.js +157 -0
  57. package/build/commands/mcp/update.js.map +1 -0
  58. package/build/commands/mcp/utils/configUtils.d.ts +64 -0
  59. package/build/commands/mcp/utils/configUtils.d.ts.map +1 -0
  60. package/build/commands/mcp/utils/configUtils.js +266 -0
  61. package/build/commands/mcp/utils/configUtils.js.map +1 -0
  62. package/build/commands/mcp/utils/doubleHyphenParser.d.ts +32 -0
  63. package/build/commands/mcp/utils/doubleHyphenParser.d.ts.map +1 -0
  64. package/build/commands/mcp/utils/doubleHyphenParser.js +61 -0
  65. package/build/commands/mcp/utils/doubleHyphenParser.js.map +1 -0
  66. package/build/commands/mcp/utils/validation.d.ts +33 -0
  67. package/build/commands/mcp/utils/validation.d.ts.map +1 -0
  68. package/build/commands/mcp/utils/validation.js +235 -0
  69. package/build/commands/mcp/utils/validation.js.map +1 -0
  70. package/build/constants.d.ts +11 -2
  71. package/build/constants.d.ts.map +1 -1
  72. package/build/constants.js +15 -2
  73. package/build/constants.js.map +1 -1
  74. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts +96 -0
  75. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts.map +1 -0
  76. package/build/core/capabilities/asyncLoadingOrchestrator.js +256 -0
  77. package/build/core/capabilities/asyncLoadingOrchestrator.js.map +1 -0
  78. package/build/core/capabilities/capabilityAggregator.d.ts +114 -0
  79. package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -0
  80. package/build/core/capabilities/capabilityAggregator.js +234 -0
  81. package/build/core/capabilities/capabilityAggregator.js.map +1 -0
  82. package/build/core/client/clientManager.d.ts +28 -0
  83. package/build/core/client/clientManager.d.ts.map +1 -1
  84. package/build/core/client/clientManager.js +120 -0
  85. package/build/core/client/clientManager.js.map +1 -1
  86. package/build/core/loading/loadingStateTracker.d.ts +128 -0
  87. package/build/core/loading/loadingStateTracker.d.ts.map +1 -0
  88. package/build/core/loading/loadingStateTracker.js +209 -0
  89. package/build/core/loading/loadingStateTracker.js.map +1 -0
  90. package/build/core/loading/mcpLoadingManager.d.ts +139 -0
  91. package/build/core/loading/mcpLoadingManager.d.ts.map +1 -0
  92. package/build/core/loading/mcpLoadingManager.js +296 -0
  93. package/build/core/loading/mcpLoadingManager.js.map +1 -0
  94. package/build/core/notifications/notificationManager.d.ts +111 -0
  95. package/build/core/notifications/notificationManager.d.ts.map +1 -0
  96. package/build/core/notifications/notificationManager.js +232 -0
  97. package/build/core/notifications/notificationManager.js.map +1 -0
  98. package/build/core/server/agentConfig.d.ts +50 -0
  99. package/build/core/server/agentConfig.d.ts.map +1 -1
  100. package/build/core/server/agentConfig.js +68 -1
  101. package/build/core/server/agentConfig.js.map +1 -1
  102. package/build/core/server/serverManager.d.ts +1 -0
  103. package/build/core/server/serverManager.d.ts.map +1 -1
  104. package/build/core/server/serverManager.js +3 -0
  105. package/build/core/server/serverManager.js.map +1 -1
  106. package/build/index.js +115 -32
  107. package/build/index.js.map +1 -1
  108. package/build/server.d.ts +23 -2
  109. package/build/server.d.ts.map +1 -1
  110. package/build/server.js +83 -10
  111. package/build/server.js.map +1 -1
  112. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts +79 -0
  113. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts.map +1 -0
  114. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js +243 -0
  115. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js.map +1 -0
  116. package/build/transport/http/routes/healthRoutes.d.ts +2 -1
  117. package/build/transport/http/routes/healthRoutes.d.ts.map +1 -1
  118. package/build/transport/http/routes/healthRoutes.js +170 -1
  119. package/build/transport/http/routes/healthRoutes.js.map +1 -1
  120. package/build/transport/http/routes/sseRoutes.d.ts +2 -1
  121. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  122. package/build/transport/http/routes/sseRoutes.js +13 -1
  123. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  124. package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
  125. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  126. package/build/transport/http/routes/streamableHttpRoutes.js +13 -1
  127. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  128. package/build/transport/http/server.d.ts +7 -1
  129. package/build/transport/http/server.d.ts.map +1 -1
  130. package/build/transport/http/server.js +15 -4
  131. package/build/transport/http/server.js.map +1 -1
  132. package/build/transport/transportFactory.d.ts +4 -0
  133. package/build/transport/transportFactory.d.ts.map +1 -1
  134. package/build/transport/transportFactory.js +1 -1
  135. package/build/transport/transportFactory.js.map +1 -1
  136. package/build/utils/appDiscovery.d.ts +75 -0
  137. package/build/utils/appDiscovery.d.ts.map +1 -0
  138. package/build/utils/appDiscovery.js +358 -0
  139. package/build/utils/appDiscovery.js.map +1 -0
  140. package/build/utils/appPresets.d.ts +88 -0
  141. package/build/utils/appPresets.d.ts.map +1 -0
  142. package/build/utils/appPresets.js +430 -0
  143. package/build/utils/appPresets.js.map +1 -0
  144. package/build/utils/backupManager.d.ts +61 -0
  145. package/build/utils/backupManager.d.ts.map +1 -0
  146. package/build/utils/backupManager.js +314 -0
  147. package/build/utils/backupManager.js.map +1 -0
  148. package/build/utils/urlDetection.d.ts +35 -0
  149. package/build/utils/urlDetection.d.ts.map +1 -0
  150. package/build/utils/urlDetection.js +115 -0
  151. package/build/utils/urlDetection.js.map +1 -0
  152. package/build/utils/validationHelpers.d.ts +62 -0
  153. package/build/utils/validationHelpers.d.ts.map +1 -0
  154. package/build/utils/validationHelpers.js +252 -0
  155. package/build/utils/validationHelpers.js.map +1 -0
  156. package/package.json +9 -2
@@ -0,0 +1,157 @@
1
+ import { serverExists, getServer, setServer, parseEnvVars, parseHeaders, parseTags, validateConfigPath, backupConfig, reloadMcpConfig, } from './utils/configUtils.js';
2
+ import { validateServerName, validateServerArgs, validateEnvVars, validateHeaders, validateTags, validateTimeout, } from './utils/validation.js';
3
+ /**
4
+ * Update an existing MCP server configuration
5
+ */
6
+ export async function updateCommand(argv) {
7
+ try {
8
+ const { name, config: configPath } = argv;
9
+ console.log(`Updating MCP server: ${name}`);
10
+ // Validate inputs
11
+ validateServerName(name);
12
+ // Validate config path
13
+ validateConfigPath(configPath);
14
+ // Check if server exists
15
+ if (!serverExists(name, configPath)) {
16
+ throw new Error(`Server '${name}' does not exist. Use 'mcp add' to create it first.`);
17
+ }
18
+ // Get current server configuration
19
+ const currentConfig = getServer(name, configPath);
20
+ if (!currentConfig) {
21
+ throw new Error(`Failed to retrieve server '${name}' configuration.`);
22
+ }
23
+ // Create updated configuration starting from current config
24
+ const updatedConfig = { ...currentConfig };
25
+ // Track changes for reporting
26
+ const changes = [];
27
+ // Update type if provided
28
+ if (argv.type !== undefined && argv.type !== currentConfig.type) {
29
+ // Validate the new type with provided args
30
+ validateServerArgs(argv.type, argv);
31
+ updatedConfig.type = argv.type;
32
+ changes.push(`type: ${currentConfig.type} → ${argv.type}`);
33
+ // Clear type-specific properties when changing type
34
+ if (currentConfig.type === 'stdio' && (argv.type === 'http' || argv.type === 'sse')) {
35
+ // Switching from stdio to HTTP/SSE
36
+ delete updatedConfig.command;
37
+ delete updatedConfig.args;
38
+ delete updatedConfig.cwd;
39
+ if (!argv.url) {
40
+ throw new Error(`URL is required when changing to ${argv.type} server`);
41
+ }
42
+ }
43
+ else if ((currentConfig.type === 'http' || currentConfig.type === 'sse') && argv.type === 'stdio') {
44
+ // Switching from HTTP/SSE to stdio
45
+ delete updatedConfig.url;
46
+ delete updatedConfig.headers;
47
+ if (!argv.command) {
48
+ throw new Error('Command is required when changing to stdio server');
49
+ }
50
+ }
51
+ }
52
+ // Update type-specific properties
53
+ const effectiveType = updatedConfig.type;
54
+ if (effectiveType === 'stdio') {
55
+ if (argv.command !== undefined) {
56
+ if (argv.command !== currentConfig.command) {
57
+ changes.push(`command: ${currentConfig.command || '(none)'} → ${argv.command}`);
58
+ }
59
+ updatedConfig.command = argv.command;
60
+ }
61
+ if (argv.args !== undefined) {
62
+ const oldArgs = currentConfig.args || [];
63
+ const newArgs = argv.args;
64
+ if (JSON.stringify(oldArgs) !== JSON.stringify(newArgs)) {
65
+ changes.push(`args: [${oldArgs.join(', ')}] → [${newArgs.join(', ')}]`);
66
+ }
67
+ updatedConfig.args = newArgs.length > 0 ? newArgs : undefined;
68
+ }
69
+ if (argv.cwd !== undefined) {
70
+ if (argv.cwd !== currentConfig.cwd) {
71
+ changes.push(`cwd: ${currentConfig.cwd || '(none)'} → ${argv.cwd}`);
72
+ }
73
+ updatedConfig.cwd = argv.cwd;
74
+ }
75
+ }
76
+ else if (effectiveType === 'http' || effectiveType === 'sse') {
77
+ if (argv.url !== undefined) {
78
+ if (argv.url !== currentConfig.url) {
79
+ changes.push(`url: ${currentConfig.url || '(none)'} → ${argv.url}`);
80
+ }
81
+ updatedConfig.url = argv.url;
82
+ }
83
+ if (argv.headers !== undefined) {
84
+ validateHeaders(argv.headers);
85
+ const newHeaders = argv.headers.length > 0 ? parseHeaders(argv.headers) : undefined;
86
+ const oldHeaders = currentConfig.headers;
87
+ if (JSON.stringify(oldHeaders) !== JSON.stringify(newHeaders)) {
88
+ const oldCount = oldHeaders ? Object.keys(oldHeaders).length : 0;
89
+ const newCount = newHeaders ? Object.keys(newHeaders).length : 0;
90
+ changes.push(`headers: ${oldCount} header(s) → ${newCount} header(s)`);
91
+ }
92
+ updatedConfig.headers = newHeaders;
93
+ }
94
+ }
95
+ // Update common properties
96
+ if (argv.env !== undefined) {
97
+ validateEnvVars(argv.env);
98
+ const newEnv = argv.env.length > 0 ? parseEnvVars(argv.env) : undefined;
99
+ const oldEnv = currentConfig.env;
100
+ if (JSON.stringify(oldEnv) !== JSON.stringify(newEnv)) {
101
+ const oldCount = oldEnv ? Object.keys(oldEnv).length : 0;
102
+ const newCount = newEnv ? Object.keys(newEnv).length : 0;
103
+ changes.push(`env: ${oldCount} variable(s) → ${newCount} variable(s)`);
104
+ }
105
+ updatedConfig.env = newEnv;
106
+ }
107
+ if (argv.tags !== undefined) {
108
+ validateTags(argv.tags);
109
+ const newTags = argv.tags ? parseTags(argv.tags) : undefined;
110
+ const oldTags = currentConfig.tags;
111
+ if (JSON.stringify(oldTags) !== JSON.stringify(newTags)) {
112
+ const oldTagsStr = oldTags ? oldTags.join(', ') : '(none)';
113
+ const newTagsStr = newTags ? newTags.join(', ') : '(none)';
114
+ changes.push(`tags: ${oldTagsStr} → ${newTagsStr}`);
115
+ }
116
+ updatedConfig.tags = newTags;
117
+ }
118
+ if (argv.timeout !== undefined) {
119
+ validateTimeout(argv.timeout);
120
+ if (argv.timeout !== currentConfig.timeout) {
121
+ changes.push(`timeout: ${currentConfig.timeout || '(none)'}ms → ${argv.timeout}ms`);
122
+ }
123
+ updatedConfig.timeout = argv.timeout;
124
+ }
125
+ // Check if any changes were made
126
+ if (changes.length === 0) {
127
+ console.log(`No changes specified for server '${name}'. Configuration remains unchanged.`);
128
+ return;
129
+ }
130
+ // Final validation of the complete updated configuration
131
+ if (updatedConfig.type === 'stdio' && !updatedConfig.command) {
132
+ throw new Error('Command cannot be empty for stdio servers');
133
+ }
134
+ if ((updatedConfig.type === 'http' || updatedConfig.type === 'sse') && !updatedConfig.url) {
135
+ throw new Error(`URL cannot be empty for ${updatedConfig.type} servers`);
136
+ }
137
+ // Create backup
138
+ const backupPath = backupConfig(configPath);
139
+ // Save the updated configuration
140
+ setServer(name, updatedConfig, configPath);
141
+ // Reload MCP configuration
142
+ reloadMcpConfig(configPath);
143
+ // Success message
144
+ console.log(`✅ Successfully updated server '${name}'`);
145
+ console.log(` Changes made:`);
146
+ for (const change of changes) {
147
+ console.log(` • ${change}`);
148
+ }
149
+ console.log(` Backup created: ${backupPath}`);
150
+ console.log(`\n💡 Server configuration updated. If 1mcp is running, the server will be reloaded automatically.`);
151
+ }
152
+ catch (error) {
153
+ console.error(`❌ Failed to update server: ${error instanceof Error ? error.message : error}`);
154
+ process.exit(1);
155
+ }
156
+ }
157
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/mcp/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { MCPServerParams } from '../../../core/types/index.js';
2
+ /**
3
+ * Configuration file utilities for server management commands
4
+ */
5
+ export interface ServerConfig {
6
+ mcpServers: Record<string, MCPServerParams>;
7
+ }
8
+ /**
9
+ * Load the MCP configuration from a file
10
+ */
11
+ export declare function loadConfig(configPath?: string): ServerConfig;
12
+ /**
13
+ * Save the MCP configuration to a file
14
+ */
15
+ export declare function saveConfig(config: ServerConfig, configPath?: string): void;
16
+ /**
17
+ * Check if a server exists in the configuration
18
+ */
19
+ export declare function serverExists(serverName: string, configPath?: string): boolean;
20
+ /**
21
+ * Get a specific server configuration
22
+ */
23
+ export declare function getServer(serverName: string, configPath?: string): MCPServerParams | null;
24
+ /**
25
+ * Add or update a server in the configuration
26
+ */
27
+ export declare function setServer(serverName: string, serverConfig: MCPServerParams, configPath?: string): void;
28
+ /**
29
+ * Remove a server from the configuration
30
+ */
31
+ export declare function removeServer(serverName: string, configPath?: string): boolean;
32
+ /**
33
+ * Get all servers in the configuration
34
+ */
35
+ export declare function getAllServers(configPath?: string): Record<string, MCPServerParams>;
36
+ /**
37
+ * Parse environment variables from key=value format
38
+ */
39
+ export declare function parseEnvVars(envArray?: string[]): Record<string, string>;
40
+ /**
41
+ * Parse headers from key=value format
42
+ */
43
+ export declare function parseHeaders(headersArray?: string[]): Record<string, string>;
44
+ /**
45
+ * Parse tags from comma-separated string
46
+ */
47
+ export declare function parseTags(tagsString?: string): string[];
48
+ /**
49
+ * Validate configuration file path
50
+ */
51
+ export declare function validateConfigPath(configPath?: string): string;
52
+ /**
53
+ * Create a backup of the configuration file
54
+ */
55
+ export declare function backupConfig(configPath?: string): string;
56
+ /**
57
+ * Validate server configuration against schema
58
+ */
59
+ export declare function validateServerConfig(serverConfig: MCPServerParams): void;
60
+ /**
61
+ * Reload MCP config manager after configuration changes
62
+ */
63
+ export declare function reloadMcpConfig(configPath?: string): void;
64
+ //# sourceMappingURL=configUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configUtils.d.ts","sourceRoot":"","sources":["../../../../src/commands/mcp/utils/configUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CAsB5D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAiB1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAO7E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAOzF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAItG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAc7E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAOlF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwB5E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CASvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAYxD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,eAAe,GAAG,IAAI,CAkDxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CASzD"}
@@ -0,0 +1,266 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { McpConfigManager } from '../../../config/mcpConfigManager.js';
4
+ import { getGlobalConfigPath } from '../../../constants.js';
5
+ import logger from '../../../logger/logger.js';
6
+ /**
7
+ * Load the MCP configuration from a file
8
+ */
9
+ export function loadConfig(configPath) {
10
+ const filePath = configPath || getGlobalConfigPath();
11
+ try {
12
+ if (!fs.existsSync(filePath)) {
13
+ throw new Error(`Configuration file not found: ${filePath}`);
14
+ }
15
+ const configData = JSON.parse(fs.readFileSync(filePath, 'utf8'));
16
+ // Ensure mcpServers exists
17
+ if (!configData.mcpServers) {
18
+ configData.mcpServers = {};
19
+ }
20
+ return configData;
21
+ }
22
+ catch (error) {
23
+ if (error instanceof SyntaxError) {
24
+ throw new Error(`Invalid JSON in configuration file: ${filePath}`);
25
+ }
26
+ throw error;
27
+ }
28
+ }
29
+ /**
30
+ * Save the MCP configuration to a file
31
+ */
32
+ export function saveConfig(config, configPath) {
33
+ const filePath = configPath || getGlobalConfigPath();
34
+ try {
35
+ // Ensure directory exists
36
+ const configDir = path.dirname(filePath);
37
+ if (!fs.existsSync(configDir)) {
38
+ fs.mkdirSync(configDir, { recursive: true });
39
+ }
40
+ // Write configuration with pretty formatting
41
+ fs.writeFileSync(filePath, JSON.stringify(config, null, 2));
42
+ logger.info(`Configuration saved to: ${filePath}`);
43
+ }
44
+ catch (error) {
45
+ throw new Error(`Failed to save configuration to ${filePath}: ${error}`);
46
+ }
47
+ }
48
+ /**
49
+ * Check if a server exists in the configuration
50
+ */
51
+ export function serverExists(serverName, configPath) {
52
+ try {
53
+ const config = loadConfig(configPath);
54
+ return serverName in config.mcpServers;
55
+ }
56
+ catch (_error) {
57
+ return false;
58
+ }
59
+ }
60
+ /**
61
+ * Get a specific server configuration
62
+ */
63
+ export function getServer(serverName, configPath) {
64
+ try {
65
+ const config = loadConfig(configPath);
66
+ return config.mcpServers[serverName] || null;
67
+ }
68
+ catch (_error) {
69
+ return null;
70
+ }
71
+ }
72
+ /**
73
+ * Add or update a server in the configuration
74
+ */
75
+ export function setServer(serverName, serverConfig, configPath) {
76
+ const config = loadConfig(configPath);
77
+ config.mcpServers[serverName] = serverConfig;
78
+ saveConfig(config, configPath);
79
+ }
80
+ /**
81
+ * Remove a server from the configuration
82
+ */
83
+ export function removeServer(serverName, configPath) {
84
+ try {
85
+ const config = loadConfig(configPath);
86
+ if (!(serverName in config.mcpServers)) {
87
+ return false;
88
+ }
89
+ delete config.mcpServers[serverName];
90
+ saveConfig(config, configPath);
91
+ return true;
92
+ }
93
+ catch (error) {
94
+ throw new Error(`Failed to remove server ${serverName}: ${error}`);
95
+ }
96
+ }
97
+ /**
98
+ * Get all servers in the configuration
99
+ */
100
+ export function getAllServers(configPath) {
101
+ try {
102
+ const config = loadConfig(configPath);
103
+ return config.mcpServers;
104
+ }
105
+ catch (_error) {
106
+ return {};
107
+ }
108
+ }
109
+ /**
110
+ * Parse environment variables from key=value format
111
+ */
112
+ export function parseEnvVars(envArray) {
113
+ if (!envArray || envArray.length === 0) {
114
+ return {};
115
+ }
116
+ const env = {};
117
+ for (const envVar of envArray) {
118
+ const equalIndex = envVar.indexOf('=');
119
+ if (equalIndex === -1) {
120
+ throw new Error(`Invalid environment variable format: ${envVar}. Expected key=value`);
121
+ }
122
+ const key = envVar.substring(0, equalIndex).trim();
123
+ const value = envVar.substring(equalIndex + 1);
124
+ if (!key) {
125
+ throw new Error(`Invalid environment variable format: ${envVar}. Key cannot be empty`);
126
+ }
127
+ env[key] = value;
128
+ }
129
+ return env;
130
+ }
131
+ /**
132
+ * Parse headers from key=value format
133
+ */
134
+ export function parseHeaders(headersArray) {
135
+ if (!headersArray || headersArray.length === 0) {
136
+ return {};
137
+ }
138
+ const headers = {};
139
+ for (const header of headersArray) {
140
+ const colonIndex = header.indexOf('=');
141
+ if (colonIndex === -1) {
142
+ throw new Error(`Invalid header format: ${header}. Expected key=value`);
143
+ }
144
+ const key = header.substring(0, colonIndex).trim();
145
+ const value = header.substring(colonIndex + 1);
146
+ if (!key) {
147
+ throw new Error(`Invalid header format: ${header}. Key cannot be empty`);
148
+ }
149
+ headers[key] = value;
150
+ }
151
+ return headers;
152
+ }
153
+ /**
154
+ * Parse tags from comma-separated string
155
+ */
156
+ export function parseTags(tagsString) {
157
+ if (!tagsString) {
158
+ return [];
159
+ }
160
+ return tagsString
161
+ .split(',')
162
+ .map((tag) => tag.trim())
163
+ .filter((tag) => tag.length > 0);
164
+ }
165
+ /**
166
+ * Validate configuration file path
167
+ */
168
+ export function validateConfigPath(configPath) {
169
+ const filePath = configPath || getGlobalConfigPath();
170
+ try {
171
+ // Check if file exists
172
+ if (!fs.existsSync(filePath)) {
173
+ throw new Error(`Configuration file not found: ${filePath}`);
174
+ }
175
+ // Check if file is readable
176
+ fs.accessSync(filePath, fs.constants.R_OK);
177
+ // Check if file is writable
178
+ fs.accessSync(filePath, fs.constants.W_OK);
179
+ return filePath;
180
+ }
181
+ catch (error) {
182
+ if (error instanceof Error && error.message.includes('not found')) {
183
+ throw error;
184
+ }
185
+ throw new Error(`Cannot access configuration file: ${filePath}. ${error}`);
186
+ }
187
+ }
188
+ /**
189
+ * Create a backup of the configuration file
190
+ */
191
+ export function backupConfig(configPath) {
192
+ const filePath = configPath || getGlobalConfigPath();
193
+ const timestamp = Date.now();
194
+ const backupPath = `${filePath}.backup.${timestamp}`;
195
+ try {
196
+ fs.copyFileSync(filePath, backupPath);
197
+ logger.info(`Configuration backed up to: ${backupPath}`);
198
+ return backupPath;
199
+ }
200
+ catch (error) {
201
+ throw new Error(`Failed to create backup: ${error}`);
202
+ }
203
+ }
204
+ /**
205
+ * Validate server configuration against schema
206
+ */
207
+ export function validateServerConfig(serverConfig) {
208
+ // Basic validation - type is required
209
+ if (!serverConfig.type) {
210
+ throw new Error('Server type is required');
211
+ }
212
+ // Validate based on type
213
+ switch (serverConfig.type) {
214
+ case 'stdio':
215
+ if (!serverConfig.command) {
216
+ throw new Error('Command is required for stdio servers');
217
+ }
218
+ break;
219
+ case 'http':
220
+ case 'sse':
221
+ if (!serverConfig.url) {
222
+ throw new Error(`URL is required for ${serverConfig.type} servers`);
223
+ }
224
+ try {
225
+ new URL(serverConfig.url);
226
+ }
227
+ catch (_error) {
228
+ throw new Error(`Invalid URL format: ${serverConfig.url}`);
229
+ }
230
+ break;
231
+ default:
232
+ throw new Error(`Unsupported server type: ${serverConfig.type}`);
233
+ }
234
+ // Validate timeout if provided
235
+ if (serverConfig.timeout !== undefined) {
236
+ if (typeof serverConfig.timeout !== 'number' || serverConfig.timeout < 0) {
237
+ throw new Error('Timeout must be a positive number');
238
+ }
239
+ }
240
+ // Validate tags if provided
241
+ if (serverConfig.tags !== undefined) {
242
+ if (!Array.isArray(serverConfig.tags)) {
243
+ throw new Error('Tags must be an array');
244
+ }
245
+ for (const tag of serverConfig.tags) {
246
+ if (typeof tag !== 'string' || tag.trim().length === 0) {
247
+ throw new Error('All tags must be non-empty strings');
248
+ }
249
+ }
250
+ }
251
+ }
252
+ /**
253
+ * Reload MCP config manager after configuration changes
254
+ */
255
+ export function reloadMcpConfig(configPath) {
256
+ try {
257
+ // Get the config manager instance and reload it
258
+ const configManager = McpConfigManager.getInstance(configPath);
259
+ configManager.reloadConfig();
260
+ logger.info('MCP configuration reloaded');
261
+ }
262
+ catch (error) {
263
+ logger.warn(`Failed to reload MCP configuration: ${error}`);
264
+ }
265
+ }
266
+ //# sourceMappingURL=configUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configUtils.js","sourceRoot":"","sources":["../../../../src/commands/mcp/utils/configUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Utility for parsing " -- " style arguments in MCP commands
3
+ *
4
+ * Handles the pattern: mcp add server-name --env KEY=value -- npx -y package-name
5
+ * Where everything after " -- " becomes the command and its arguments
6
+ */
7
+ export interface DoubleHyphenParseResult {
8
+ command?: string;
9
+ args?: string[];
10
+ type?: string;
11
+ }
12
+ /**
13
+ * Parse command line arguments that use the " -- " pattern
14
+ * @param rawArgs Raw command line arguments from yargs
15
+ * @returns Parsed command, args, and inferred type
16
+ */
17
+ export declare function parseDoubleHyphenArgs(rawArgs: string[]): DoubleHyphenParseResult;
18
+ /**
19
+ * Check if the command line arguments contain the " -- " pattern
20
+ * @param rawArgs Raw command line arguments
21
+ * @returns True if " -- " is present
22
+ */
23
+ export declare function hasDoubleHyphen(rawArgs: string[]): boolean;
24
+ /**
25
+ * Merge double hyphen parsed arguments with existing yargs arguments
26
+ * Prioritizes explicit flags over " -- " inferred values
27
+ * @param yargsArgs Parsed arguments from yargs
28
+ * @param doubleHyphenResult Parsed " -- " arguments
29
+ * @returns Merged arguments
30
+ */
31
+ export declare function mergeDoubleHyphenArgs<T extends Record<string, any>>(yargsArgs: T, doubleHyphenResult: DoubleHyphenParseResult): T;
32
+ //# sourceMappingURL=doubleHyphenParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doubleHyphenParser.d.ts","sourceRoot":"","sources":["../../../../src/commands/mcp/utils/doubleHyphenParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAyBhF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjE,SAAS,EAAE,CAAC,EACZ,kBAAkB,EAAE,uBAAuB,GAC1C,CAAC,CAiBH"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Utility for parsing " -- " style arguments in MCP commands
3
+ *
4
+ * Handles the pattern: mcp add server-name --env KEY=value -- npx -y package-name
5
+ * Where everything after " -- " becomes the command and its arguments
6
+ */
7
+ /**
8
+ * Parse command line arguments that use the " -- " pattern
9
+ * @param rawArgs Raw command line arguments from yargs
10
+ * @returns Parsed command, args, and inferred type
11
+ */
12
+ export function parseDoubleHyphenArgs(rawArgs) {
13
+ const doubleHyphenIndex = rawArgs.findIndex((arg) => arg === '--');
14
+ if (doubleHyphenIndex === -1) {
15
+ // No " -- " found, return empty result
16
+ return {};
17
+ }
18
+ // Extract everything after " -- "
19
+ const commandArgs = rawArgs.slice(doubleHyphenIndex + 1);
20
+ if (commandArgs.length === 0) {
21
+ throw new Error('No command specified after " -- "');
22
+ }
23
+ const [command, ...args] = commandArgs;
24
+ // For stdio servers, we infer the type as 'stdio' since they use executable commands
25
+ const type = 'stdio';
26
+ return {
27
+ command,
28
+ args: args.length > 0 ? args : undefined,
29
+ type,
30
+ };
31
+ }
32
+ /**
33
+ * Check if the command line arguments contain the " -- " pattern
34
+ * @param rawArgs Raw command line arguments
35
+ * @returns True if " -- " is present
36
+ */
37
+ export function hasDoubleHyphen(rawArgs) {
38
+ return rawArgs.includes('--');
39
+ }
40
+ /**
41
+ * Merge double hyphen parsed arguments with existing yargs arguments
42
+ * Prioritizes explicit flags over " -- " inferred values
43
+ * @param yargsArgs Parsed arguments from yargs
44
+ * @param doubleHyphenResult Parsed " -- " arguments
45
+ * @returns Merged arguments
46
+ */
47
+ export function mergeDoubleHyphenArgs(yargsArgs, doubleHyphenResult) {
48
+ const merged = { ...yargsArgs };
49
+ // Only set values if they're not already explicitly provided
50
+ if (!merged.type && doubleHyphenResult.type) {
51
+ merged.type = doubleHyphenResult.type;
52
+ }
53
+ if (!merged.command && doubleHyphenResult.command) {
54
+ merged.command = doubleHyphenResult.command;
55
+ }
56
+ if (!merged.args && doubleHyphenResult.args) {
57
+ merged.args = doubleHyphenResult.args;
58
+ }
59
+ return merged;
60
+ }
61
+ //# sourceMappingURL=doubleHyphenParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doubleHyphenParser.js","sourceRoot":"","sources":["../../../../src/commands/mcp/utils/doubleHyphenParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAiB;IACrD,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAEnE,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE,CAAC;QAC7B,uCAAuC;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,kCAAkC;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;IAEzD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC;IAEvC,qFAAqF;IACrF,MAAM,IAAI,GAAG,OAAO,CAAC;IAErB,OAAO;QACL,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACxC,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAiB;IAC/C,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAY,EACZ,kBAA2C;IAE3C,MAAM,MAAM,GAAG,EAAE,GAAG,SAAS,EAAS,CAAC;IAEvC,6DAA6D;IAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAClD,MAAM,CAAC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { MCPServerParams } from '../../../core/types/index.js';
2
+ /**
3
+ * Validation utilities for server command inputs
4
+ */
5
+ /**
6
+ * Validate server name format
7
+ */
8
+ export declare function validateServerName(name: string): void;
9
+ /**
10
+ * Validate command line arguments for different server types
11
+ */
12
+ export declare function validateServerArgs(type: string, args: any): void;
13
+ /**
14
+ * Validate environment variables
15
+ */
16
+ export declare function validateEnvVars(envArray?: string[]): void;
17
+ /**
18
+ * Validate headers
19
+ */
20
+ export declare function validateHeaders(headersArray?: string[]): void;
21
+ /**
22
+ * Validate tags
23
+ */
24
+ export declare function validateTags(tagsString?: string): void;
25
+ /**
26
+ * Validate timeout value
27
+ */
28
+ export declare function validateTimeout(timeout?: number): void;
29
+ /**
30
+ * Validate complete server configuration
31
+ */
32
+ export declare function validateCompleteServerConfig(name: string, config: MCPServerParams): void;
33
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/commands/mcp/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;GAEG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAsBrD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAYhE;AA2DD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAsCzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAqC7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAmCtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAetD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CA6BxF"}