@1mcp/agent 0.31.0-beta1 → 0.31.0-beta3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/commands/cliSetup/setupFiles.d.ts.map +1 -1
- package/build/commands/cliSetup/setupFiles.js +8 -1
- package/build/commands/cliSetup/setupFiles.js.map +1 -1
- package/build/commands/mcp/add.d.ts.map +1 -1
- package/build/commands/mcp/add.js +21 -2
- package/build/commands/mcp/add.js.map +1 -1
- package/build/commands/mcp/index.d.ts.map +1 -1
- package/build/commands/mcp/index.js +5 -4
- package/build/commands/mcp/index.js.map +1 -1
- package/build/commands/mcp/list.d.ts.map +1 -1
- package/build/commands/mcp/list.js +52 -8
- package/build/commands/mcp/list.js.map +1 -1
- package/build/commands/mcp/status.d.ts.map +1 -1
- package/build/commands/mcp/status.js +59 -26
- package/build/commands/mcp/status.js.map +1 -1
- package/build/commands/serve/index.d.ts +0 -22
- package/build/commands/serve/index.d.ts.map +1 -1
- package/build/commands/serve/index.js +0 -23
- package/build/commands/serve/index.js.map +1 -1
- package/build/commands/serve/serve.d.ts +23 -23
- package/build/commands/serve/serve.d.ts.map +1 -1
- package/build/commands/serve/serve.js +67 -51
- package/build/commands/serve/serve.js.map +1 -1
- package/build/commands/shared/baseConfigUtils.d.ts +15 -1
- package/build/commands/shared/baseConfigUtils.d.ts.map +1 -1
- package/build/commands/shared/baseConfigUtils.js +146 -41
- package/build/commands/shared/baseConfigUtils.js.map +1 -1
- package/build/config/configLoader.d.ts +28 -2
- package/build/config/configLoader.d.ts.map +1 -1
- package/build/config/configLoader.js +155 -28
- package/build/config/configLoader.js.map +1 -1
- package/build/config/configManager.d.ts +2 -1
- package/build/config/configManager.d.ts.map +1 -1
- package/build/config/configManager.js +20 -4
- package/build/config/configManager.js.map +1 -1
- package/build/config/mcpConfigManager.d.ts +18 -5
- package/build/config/mcpConfigManager.d.ts.map +1 -1
- package/build/config/mcpConfigManager.js +51 -44
- package/build/config/mcpConfigManager.js.map +1 -1
- package/build/config/mcpConfigMerge.d.ts +15 -0
- package/build/config/mcpConfigMerge.d.ts.map +1 -0
- package/build/config/mcpConfigMerge.js +87 -0
- package/build/config/mcpConfigMerge.js.map +1 -0
- package/build/constants/mcp.d.ts +2 -1
- package/build/constants/mcp.d.ts.map +1 -1
- package/build/constants/mcp.js +2 -1
- package/build/constants/mcp.js.map +1 -1
- package/build/constants/paths.d.ts +5 -0
- package/build/constants/paths.d.ts.map +1 -1
- package/build/constants/paths.js +9 -1
- package/build/constants/paths.js.map +1 -1
- package/build/core/tools/handlers/serverManagementHandler.d.ts +5 -0
- package/build/core/tools/handlers/serverManagementHandler.d.ts.map +1 -1
- package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts +1 -0
- package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts.map +1 -1
- package/build/core/types/transport.d.ts +146 -0
- package/build/core/types/transport.d.ts.map +1 -1
- package/build/core/types/transport.js +75 -0
- package/build/core/types/transport.js.map +1 -1
- package/build/index.d.ts +2 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +4 -3
- package/build/index.js.map +1 -1
- package/build/utils/cli/normalizedArgv.d.ts +3 -0
- package/build/utils/cli/normalizedArgv.d.ts.map +1 -0
- package/build/utils/cli/normalizedArgv.js +9 -0
- package/build/utils/cli/normalizedArgv.js.map +1 -0
- package/build/utils/validation/urlDetection.d.ts.map +1 -1
- package/build/utils/validation/urlDetection.js +2 -1
- package/build/utils/validation/urlDetection.js.map +1 -1
- package/package.json +5 -4
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
4
|
+
import ConfigContext from '../config/configContext.js';
|
|
5
|
+
import { ConfigLoader } from '../config/configLoader.js';
|
|
6
6
|
import { AgentConfigManager } from '../core/server/agentConfig.js';
|
|
7
7
|
import logger, { debugIf } from '../logger/logger.js';
|
|
8
8
|
/**
|
|
@@ -19,17 +19,26 @@ export class McpConfigManager extends EventEmitter {
|
|
|
19
19
|
static instance;
|
|
20
20
|
configWatcher = null;
|
|
21
21
|
transportConfig = {};
|
|
22
|
+
globalConfig = {};
|
|
23
|
+
appConfig = {};
|
|
22
24
|
configFilePath;
|
|
25
|
+
loader;
|
|
23
26
|
debounceTimer = null;
|
|
24
27
|
lastModified = 0;
|
|
28
|
+
static resolveConfigFilePath(configFilePath) {
|
|
29
|
+
if (configFilePath) {
|
|
30
|
+
return configFilePath;
|
|
31
|
+
}
|
|
32
|
+
return ConfigContext.getInstance().getResolvedConfigPath();
|
|
33
|
+
}
|
|
25
34
|
/**
|
|
26
35
|
* Private constructor to enforce singleton pattern
|
|
27
36
|
* @param configFilePath - Optional path to the config file. If not provided, uses global config path
|
|
28
37
|
*/
|
|
29
38
|
constructor(configFilePath) {
|
|
30
39
|
super();
|
|
31
|
-
this.configFilePath = configFilePath
|
|
32
|
-
this.
|
|
40
|
+
this.configFilePath = McpConfigManager.resolveConfigFilePath(configFilePath);
|
|
41
|
+
this.loader = new ConfigLoader(this.configFilePath);
|
|
33
42
|
this.loadConfig();
|
|
34
43
|
}
|
|
35
44
|
/**
|
|
@@ -37,59 +46,38 @@ export class McpConfigManager extends EventEmitter {
|
|
|
37
46
|
* @param configFilePath - Optional path to the config file
|
|
38
47
|
*/
|
|
39
48
|
static getInstance(configFilePath) {
|
|
49
|
+
const resolvedConfigFilePath = McpConfigManager.resolveConfigFilePath(configFilePath);
|
|
40
50
|
if (!McpConfigManager.instance) {
|
|
41
|
-
McpConfigManager.instance = new McpConfigManager(
|
|
42
|
-
|
|
43
|
-
return McpConfigManager.instance;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Ensure the config directory and file exist
|
|
47
|
-
*/
|
|
48
|
-
ensureConfigExists() {
|
|
49
|
-
try {
|
|
50
|
-
const configDir = getGlobalConfigDir();
|
|
51
|
-
if (!fs.existsSync(configDir)) {
|
|
52
|
-
fs.mkdirSync(configDir, { recursive: true });
|
|
53
|
-
logger.info(`Created config directory: ${configDir}`);
|
|
54
|
-
}
|
|
55
|
-
if (!fs.existsSync(this.configFilePath)) {
|
|
56
|
-
fs.writeFileSync(this.configFilePath, JSON.stringify(DEFAULT_CONFIG, null, 2));
|
|
57
|
-
logger.info(`Created default config file: ${this.configFilePath}`);
|
|
58
|
-
}
|
|
51
|
+
McpConfigManager.instance = new McpConfigManager(resolvedConfigFilePath);
|
|
52
|
+
return McpConfigManager.instance;
|
|
59
53
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
54
|
+
if (McpConfigManager.instance.configFilePath !== resolvedConfigFilePath) {
|
|
55
|
+
McpConfigManager.instance.stopWatching();
|
|
56
|
+
McpConfigManager.instance = new McpConfigManager(resolvedConfigFilePath);
|
|
63
57
|
}
|
|
58
|
+
return McpConfigManager.instance;
|
|
64
59
|
}
|
|
65
60
|
/**
|
|
66
61
|
* Load the configuration from the config file
|
|
67
62
|
*/
|
|
68
63
|
loadConfig() {
|
|
69
64
|
try {
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const agentConfig = AgentConfigManager.getInstance();
|
|
77
|
-
const features = agentConfig.get('features');
|
|
78
|
-
const processedConfig = features.envSubstitution ? substituteEnvVarsInConfig(configData) : configData;
|
|
79
|
-
// Type guard to ensure processedConfig has proper structure
|
|
80
|
-
if (!processedConfig || typeof processedConfig !== 'object') {
|
|
81
|
-
logger.error('Invalid configuration format');
|
|
82
|
-
this.transportConfig = {};
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
const configObj = processedConfig;
|
|
86
|
-
this.transportConfig = configObj.mcpServers || {};
|
|
65
|
+
const loadedConfig = this.loader.loadParsedConfigWithEnvSubstitution();
|
|
66
|
+
const features = AgentConfigManager.getInstance().get('features');
|
|
67
|
+
this.lastModified = loadedConfig.lastModified;
|
|
68
|
+
this.globalConfig = loadedConfig.globalConfig;
|
|
69
|
+
this.appConfig = loadedConfig.appConfig;
|
|
70
|
+
this.transportConfig = loadedConfig.validatedServers;
|
|
87
71
|
const substitutionStatus = features.envSubstitution ? 'with' : 'without';
|
|
88
72
|
logger.info(`Configuration loaded successfully ${substitutionStatus} environment variable substitution`);
|
|
73
|
+
return true;
|
|
89
74
|
}
|
|
90
75
|
catch (error) {
|
|
91
76
|
logger.error(`Failed to load configuration: ${error instanceof Error ? error.message : String(error)}`);
|
|
77
|
+
this.globalConfig = {};
|
|
78
|
+
this.appConfig = {};
|
|
92
79
|
this.transportConfig = {};
|
|
80
|
+
return false;
|
|
93
81
|
}
|
|
94
82
|
}
|
|
95
83
|
/**
|
|
@@ -209,9 +197,9 @@ export class McpConfigManager extends EventEmitter {
|
|
|
209
197
|
reloadConfig() {
|
|
210
198
|
const oldConfig = { ...this.transportConfig };
|
|
211
199
|
try {
|
|
212
|
-
this.loadConfig();
|
|
200
|
+
const loadedSuccessfully = this.loadConfig();
|
|
213
201
|
// Emit event for transport configuration changes
|
|
214
|
-
if (JSON.stringify(oldConfig) !== JSON.stringify(this.transportConfig)) {
|
|
202
|
+
if (loadedSuccessfully && JSON.stringify(oldConfig) !== JSON.stringify(this.transportConfig)) {
|
|
215
203
|
logger.info('Transport configuration changed, emitting event');
|
|
216
204
|
this.emit(ConfigChangeEvent.TRANSPORT_CONFIG_CHANGED, this.transportConfig);
|
|
217
205
|
}
|
|
@@ -227,6 +215,25 @@ export class McpConfigManager extends EventEmitter {
|
|
|
227
215
|
getTransportConfig() {
|
|
228
216
|
return { ...this.transportConfig };
|
|
229
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* Get the current global MCP configuration.
|
|
220
|
+
*/
|
|
221
|
+
getGlobalConfig() {
|
|
222
|
+
return { ...this.globalConfig };
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get the application-level configuration from config.toml.
|
|
226
|
+
* CLI args always take precedence over these values.
|
|
227
|
+
*/
|
|
228
|
+
getAppConfig() {
|
|
229
|
+
return { ...this.appConfig };
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get the effective merged configuration for a specific server.
|
|
233
|
+
*/
|
|
234
|
+
getEffectiveServerConfig(serverName) {
|
|
235
|
+
return this.transportConfig[serverName] ? { ...this.transportConfig[serverName] } : undefined;
|
|
236
|
+
}
|
|
230
237
|
/**
|
|
231
238
|
* Get all available tags from the configured servers
|
|
232
239
|
* @returns Array of unique tags from all servers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpConfigManager.js","sourceRoot":"","sources":["../../src/config/mcpConfigManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,
|
|
1
|
+
{"version":3,"file":"mcpConfigManager.js","sourceRoot":"","sources":["../../src/config/mcpConfigManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GlobalTransportConfig, MCPServerParams } from '../core/types/transport.js';
|
|
2
|
+
/**
|
|
3
|
+
* Return unknown keys defined under the raw global section.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getUnknownGlobalConfigKeys(rawGlobal: unknown): string[];
|
|
6
|
+
/**
|
|
7
|
+
* Merge global shareable settings with a single server configuration.
|
|
8
|
+
* Server-specific values always take precedence.
|
|
9
|
+
*/
|
|
10
|
+
export declare function mergeGlobalAndServerConfig(globalConfig: GlobalTransportConfig | undefined, serverConfig: MCPServerParams): MCPServerParams;
|
|
11
|
+
/**
|
|
12
|
+
* Merge global shareable settings with all servers.
|
|
13
|
+
*/
|
|
14
|
+
export declare function mergeGlobalWithServers(globalConfig: GlobalTransportConfig | undefined, servers: Record<string, MCPServerParams>): Record<string, MCPServerParams>;
|
|
15
|
+
//# sourceMappingURL=mcpConfigMerge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpConfigMerge.d.ts","sourceRoot":"","sources":["../../src/config/mcpConfigMerge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,qBAAqB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAgBpH;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAMvE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,qBAAqB,GAAG,SAAS,EAC/C,YAAY,EAAE,eAAe,GAC5B,eAAe,CA6DjB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,qBAAqB,GAAG,SAAS,EAC/C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAQjC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { GLOBAL_TRANSPORT_CONFIG_KEYS } from '../core/types/transport.js';
|
|
2
|
+
const GLOBAL_KEY_SET = new Set(GLOBAL_TRANSPORT_CONFIG_KEYS);
|
|
3
|
+
function isRecord(value) {
|
|
4
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
5
|
+
}
|
|
6
|
+
function isStringRecord(value) {
|
|
7
|
+
if (!isRecord(value)) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
return Object.values(value).every((entry) => typeof entry === 'string');
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Return unknown keys defined under the raw global section.
|
|
14
|
+
*/
|
|
15
|
+
export function getUnknownGlobalConfigKeys(rawGlobal) {
|
|
16
|
+
if (!isRecord(rawGlobal)) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
return Object.keys(rawGlobal).filter((key) => !GLOBAL_KEY_SET.has(key));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Merge global shareable settings with a single server configuration.
|
|
23
|
+
* Server-specific values always take precedence.
|
|
24
|
+
*/
|
|
25
|
+
export function mergeGlobalAndServerConfig(globalConfig, serverConfig) {
|
|
26
|
+
if (!globalConfig) {
|
|
27
|
+
return { ...serverConfig };
|
|
28
|
+
}
|
|
29
|
+
const merged = { ...serverConfig };
|
|
30
|
+
// Primitive fallback values
|
|
31
|
+
if (merged.timeout === undefined && globalConfig.timeout !== undefined) {
|
|
32
|
+
merged.timeout = globalConfig.timeout;
|
|
33
|
+
}
|
|
34
|
+
if (merged.connectionTimeout === undefined && globalConfig.connectionTimeout !== undefined) {
|
|
35
|
+
merged.connectionTimeout = globalConfig.connectionTimeout;
|
|
36
|
+
}
|
|
37
|
+
if (merged.requestTimeout === undefined && globalConfig.requestTimeout !== undefined) {
|
|
38
|
+
merged.requestTimeout = globalConfig.requestTimeout;
|
|
39
|
+
}
|
|
40
|
+
if (merged.inheritParentEnv === undefined && globalConfig.inheritParentEnv !== undefined) {
|
|
41
|
+
merged.inheritParentEnv = globalConfig.inheritParentEnv;
|
|
42
|
+
}
|
|
43
|
+
if (merged.envFilter === undefined && globalConfig.envFilter !== undefined) {
|
|
44
|
+
merged.envFilter = globalConfig.envFilter;
|
|
45
|
+
}
|
|
46
|
+
// Replace semantics
|
|
47
|
+
if (merged.oauth === undefined && globalConfig.oauth !== undefined) {
|
|
48
|
+
merged.oauth = globalConfig.oauth;
|
|
49
|
+
}
|
|
50
|
+
if (merged.headers === undefined && globalConfig.headers !== undefined) {
|
|
51
|
+
merged.headers = globalConfig.headers;
|
|
52
|
+
}
|
|
53
|
+
// env uses merge semantics when both sides are object form
|
|
54
|
+
if (merged.env === undefined && globalConfig.env !== undefined) {
|
|
55
|
+
merged.env = globalConfig.env;
|
|
56
|
+
}
|
|
57
|
+
else if (isStringRecord(globalConfig.env) && isStringRecord(merged.env)) {
|
|
58
|
+
merged.env = { ...globalConfig.env, ...merged.env };
|
|
59
|
+
}
|
|
60
|
+
// Global headers should only apply to HTTP/SSE transports.
|
|
61
|
+
if (merged.type === 'stdio' && globalConfig.headers !== undefined && serverConfig.headers === undefined) {
|
|
62
|
+
delete merged.headers;
|
|
63
|
+
}
|
|
64
|
+
// Global inheritParentEnv should only apply to stdio transports.
|
|
65
|
+
if ((merged.type === 'http' || merged.type === 'sse' || merged.type === 'streamableHttp') &&
|
|
66
|
+
globalConfig.inheritParentEnv !== undefined &&
|
|
67
|
+
serverConfig.inheritParentEnv === undefined) {
|
|
68
|
+
delete merged.inheritParentEnv;
|
|
69
|
+
}
|
|
70
|
+
if ((merged.type === 'http' || merged.type === 'sse' || merged.type === 'streamableHttp') &&
|
|
71
|
+
globalConfig.envFilter !== undefined &&
|
|
72
|
+
serverConfig.envFilter === undefined) {
|
|
73
|
+
delete merged.envFilter;
|
|
74
|
+
}
|
|
75
|
+
return merged;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Merge global shareable settings with all servers.
|
|
79
|
+
*/
|
|
80
|
+
export function mergeGlobalWithServers(globalConfig, servers) {
|
|
81
|
+
const mergedServers = {};
|
|
82
|
+
for (const [serverName, serverConfig] of Object.entries(servers)) {
|
|
83
|
+
mergedServers[serverName] = mergeGlobalAndServerConfig(globalConfig, serverConfig);
|
|
84
|
+
}
|
|
85
|
+
return mergedServers;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=mcpConfigMerge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpConfigMerge.js","sourceRoot":"","sources":["../../src/config/mcpConfigMerge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAA0C,MAAM,8BAA8B,CAAC;AAEpH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,4BAA4B,CAAC,CAAC;AAErE,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,SAAkB;IAC3D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,YAA+C,EAC/C,YAA6B;IAE7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,GAAG,YAAY,EAAE,CAAC;IAEpD,4BAA4B;IAC5B,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,IAAI,YAAY,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC3F,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC,iBAAiB,CAAC;IAC5D,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,YAAY,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrF,MAAM,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;IACtD,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,IAAI,YAAY,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACzF,MAAM,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,YAAY,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC3E,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IAC5C,CAAC;IAED,oBAAoB;IACpB,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACnE,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;IACxC,CAAC;IAED,2DAA2D;IAC3D,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC/D,MAAM,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;IAChC,CAAC;SAAM,IAAI,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1E,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;IAED,2DAA2D;IAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACxG,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,iEAAiE;IACjE,IACE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC;QACrF,YAAY,CAAC,gBAAgB,KAAK,SAAS;QAC3C,YAAY,CAAC,gBAAgB,KAAK,SAAS,EAC3C,CAAC;QACD,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACjC,CAAC;IACD,IACE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC;QACrF,YAAY,CAAC,SAAS,KAAK,SAAS;QACpC,YAAY,CAAC,SAAS,KAAK,SAAS,EACpC,CAAC;QACD,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAA+C,EAC/C,OAAwC;IAExC,MAAM,aAAa,GAAoC,EAAE,CAAC;IAE1D,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,aAAa,CAAC,UAAU,CAAC,GAAG,0BAA0B,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
package/build/constants/mcp.d.ts
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { ClientCapabilities, ServerCapabilities } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
export declare const MCP_CONFIG_FILE = "mcp.json";
|
|
6
|
+
export declare const APP_CONFIG_FILE = "config.toml";
|
|
6
7
|
export declare const MCP_INSTRUCTIONS_TEMPLATE_FILE = "instructions-template.md";
|
|
7
8
|
export declare const MCP_SERVER_NAME = "1mcp";
|
|
8
|
-
export declare const MCP_SERVER_VERSION = "0.31.0-
|
|
9
|
+
export declare const MCP_SERVER_VERSION = "0.31.0-beta3";
|
|
9
10
|
export declare const MCP_URI_SEPARATOR = "_1mcp_";
|
|
10
11
|
/**
|
|
11
12
|
* Default maximum number of MCP servers to load concurrently
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/constants/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAG5F,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,8BAA8B,6BAA6B,CAAC;AACzE,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,eAAO,MAAM,uBAAuB,EAAE,kBAYrC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAMrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/constants/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAG5F,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,8BAA8B,6BAA6B,CAAC;AACzE,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,eAAO,MAAM,uBAAuB,EAAE,kBAYrC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAMrC,CAAC"}
|
package/build/constants/mcp.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// MCP constants
|
|
2
2
|
export const MCP_CONFIG_FILE = 'mcp.json';
|
|
3
|
+
export const APP_CONFIG_FILE = 'config.toml';
|
|
3
4
|
export const MCP_INSTRUCTIONS_TEMPLATE_FILE = 'instructions-template.md';
|
|
4
5
|
export const MCP_SERVER_NAME = '1mcp';
|
|
5
|
-
export const MCP_SERVER_VERSION = '0.31.0-
|
|
6
|
+
export const MCP_SERVER_VERSION = '0.31.0-beta3';
|
|
6
7
|
export const MCP_URI_SEPARATOR = '_1mcp_';
|
|
7
8
|
/**
|
|
8
9
|
* Default maximum number of MCP servers to load concurrently
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/constants/mcp.ts"],"names":[],"mappings":"AAKA,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AACzE,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,MAAM,CAAC,MAAM,uBAAuB,GAAuB;IACzD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE;QACT,WAAW,EAAE,IAAI;KAClB;IACD,KAAK,EAAE;QACL,WAAW,EAAE,IAAI;KAClB;IACD,OAAO,EAAE;QACP,WAAW,EAAE,IAAI;KAClB;IACD,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAuB;IACzD,KAAK,EAAE;QACL,WAAW,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,EAAE;CAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/constants/mcp.ts"],"names":[],"mappings":"AAKA,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAC7C,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AACzE,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,MAAM,CAAC,MAAM,uBAAuB,GAAuB;IACzD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE;QACT,WAAW,EAAE,IAAI;KAClB;IACD,KAAK,EAAE;QACL,WAAW,EAAE,IAAI;KAClB;IACD,OAAO,EAAE;QACP,WAAW,EAAE,IAAI;KAClB;IACD,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAuB;IACzD,KAAK,EAAE;QACL,WAAW,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,EAAE;CAChB,CAAC"}
|
|
@@ -2,6 +2,7 @@ export declare const CONFIG_DIR_NAME = "1mcp";
|
|
|
2
2
|
export declare const BACKUP_DIR_NAME = "backups";
|
|
3
3
|
export declare const DEFAULT_CONFIG: {
|
|
4
4
|
$schema: "https://docs.1mcp.app/schemas/v1.0.0/mcp-config.json";
|
|
5
|
+
serverDefaults: {};
|
|
5
6
|
mcpServers: Record<string, unknown>;
|
|
6
7
|
};
|
|
7
8
|
export declare const DEFAULT_PROJECT_CONFIG: {
|
|
@@ -24,6 +25,10 @@ export declare function getGlobalConfigPath(): string;
|
|
|
24
25
|
* Get config file path from directory or global default
|
|
25
26
|
*/
|
|
26
27
|
export declare function getConfigPath(configDir?: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Get the app config file path (config.toml)
|
|
30
|
+
*/
|
|
31
|
+
export declare function getAppConfigPath(configDir?: string): string;
|
|
27
32
|
/**
|
|
28
33
|
* Get the global backup directory path
|
|
29
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,cAAc;;;;CAI1B,CAAC;AAGF,eAAO,MAAM,sBAAsB;;CAElC,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAS3C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAG7E"}
|
package/build/constants/paths.js
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* Path and configuration directory constants
|
|
3
3
|
*/
|
|
4
4
|
import os from 'os';
|
|
5
|
-
import { MCP_CONFIG_FILE, MCP_INSTRUCTIONS_TEMPLATE_FILE } from './mcp.js';
|
|
5
|
+
import { APP_CONFIG_FILE, MCP_CONFIG_FILE, MCP_INSTRUCTIONS_TEMPLATE_FILE } from './mcp.js';
|
|
6
6
|
import { DEFAULT_MCP_SERVERS, MCP_CONFIG_SCHEMA_URL, PROJECT_CONFIG_SCHEMA_URL } from './schema.js';
|
|
7
7
|
// Global config paths
|
|
8
8
|
export const CONFIG_DIR_NAME = '1mcp';
|
|
9
9
|
export const BACKUP_DIR_NAME = 'backups';
|
|
10
10
|
export const DEFAULT_CONFIG = {
|
|
11
11
|
$schema: MCP_CONFIG_SCHEMA_URL,
|
|
12
|
+
serverDefaults: {},
|
|
12
13
|
mcpServers: DEFAULT_MCP_SERVERS,
|
|
13
14
|
};
|
|
14
15
|
// Default project configuration for .1mcprc files
|
|
@@ -50,6 +51,13 @@ export function getConfigPath(configDir) {
|
|
|
50
51
|
}
|
|
51
52
|
return getGlobalConfigPath();
|
|
52
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Get the app config file path (config.toml)
|
|
56
|
+
*/
|
|
57
|
+
export function getAppConfigPath(configDir) {
|
|
58
|
+
const dir = configDir ? configDir : getGlobalConfigDir();
|
|
59
|
+
return `${dir}/${APP_CONFIG_FILE}`;
|
|
60
|
+
}
|
|
53
61
|
/**
|
|
54
62
|
* Get the global backup directory path
|
|
55
63
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/constants/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAEpG,sBAAsB;AACtB,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,qBAAqB;IAC9B,cAAc,EAAE,EAAE;IAClB,UAAU,EAAE,mBAAmB;CAChC,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,OAAO,EAAE,yBAAyB;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE7B,MAAM,SAAS,GACb,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC3D,CAAC,CAAC,GAAG,OAAO,YAAY,eAAe,EAAE;QACzC,CAAC,CAAC,GAAG,OAAO,oBAAoB,eAAe,EAAE,CAAC;IAEtD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,eAAwB;IACnD,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,EAAE,EAAE,CAAC;QAC5D,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,kBAAkB,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,GAAG,kBAAkB,EAAE,IAAI,eAAe,EAAE,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAkB;IAC9C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,GAAG,SAAS,IAAI,eAAe,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAkB;IACjD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACzD,OAAO,GAAG,GAAG,IAAI,eAAe,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,GAAG,kBAAkB,EAAE,IAAI,eAAe,EAAE,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,GAAG,kBAAkB,EAAE,IAAI,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kCAAkC,CAAC,SAAkB;IACnE,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACzD,OAAO,GAAG,GAAG,IAAI,8BAA8B,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -36,6 +36,7 @@ export declare function handleInstallMCPServer(args: McpInstallToolArgs): Promis
|
|
|
36
36
|
clientSecret?: string | undefined;
|
|
37
37
|
scopes?: string[] | undefined;
|
|
38
38
|
autoRegister?: boolean | undefined;
|
|
39
|
+
redirectUrl?: string | undefined;
|
|
39
40
|
} | undefined;
|
|
40
41
|
url?: string | undefined;
|
|
41
42
|
headers?: Record<string, string> | undefined;
|
|
@@ -87,6 +88,7 @@ export declare function handleUpdateMCPServer(args: McpUpdateToolArgs): Promise<
|
|
|
87
88
|
clientSecret?: string | undefined;
|
|
88
89
|
scopes?: string[] | undefined;
|
|
89
90
|
autoRegister?: boolean | undefined;
|
|
91
|
+
redirectUrl?: string | undefined;
|
|
90
92
|
} | undefined;
|
|
91
93
|
url?: string | undefined;
|
|
92
94
|
headers?: Record<string, string> | undefined;
|
|
@@ -123,6 +125,7 @@ export declare function handleUpdateMCPServer(args: McpUpdateToolArgs): Promise<
|
|
|
123
125
|
clientSecret?: string | undefined;
|
|
124
126
|
scopes?: string[] | undefined;
|
|
125
127
|
autoRegister?: boolean | undefined;
|
|
128
|
+
redirectUrl?: string | undefined;
|
|
126
129
|
} | undefined;
|
|
127
130
|
url?: string | undefined;
|
|
128
131
|
headers?: Record<string, string> | undefined;
|
|
@@ -204,6 +207,7 @@ export declare function handleServerStatus(args: McpStatusToolArgs): Promise<{
|
|
|
204
207
|
clientSecret?: string | undefined;
|
|
205
208
|
scopes?: string[] | undefined;
|
|
206
209
|
autoRegister?: boolean | undefined;
|
|
210
|
+
redirectUrl?: string | undefined;
|
|
207
211
|
} | undefined;
|
|
208
212
|
url?: string | undefined;
|
|
209
213
|
headers?: Record<string, string> | undefined;
|
|
@@ -246,6 +250,7 @@ export declare function handleServerStatus(args: McpStatusToolArgs): Promise<{
|
|
|
246
250
|
clientSecret?: string | undefined;
|
|
247
251
|
scopes?: string[] | undefined;
|
|
248
252
|
autoRegister?: boolean | undefined;
|
|
253
|
+
redirectUrl?: string | undefined;
|
|
249
254
|
} | undefined;
|
|
250
255
|
url?: string | undefined;
|
|
251
256
|
headers?: Record<string, string> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverManagementHandler.d.ts","sourceRoot":"","sources":["../../../../src/core/tools/handlers/serverManagementHandler.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AA6C/D;;GAEG;AACH,UAAU,kBAAmB,SAAQ,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;CACH;AAUD;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB
|
|
1
|
+
{"version":3,"file":"serverManagementHandler.d.ts","sourceRoot":"","sources":["../../../../src/core/tools/handlers/serverManagementHandler.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AA6C/D;;GAEG;AACH,UAAU,kBAAmB,SAAQ,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;CACH;AAUD;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDpE;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB;;;;GAuBxE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BlE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB;;;;;GAyBlE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB;;;;;GAyBpE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,eAAe;;;;;;;;;;;;;;;GAqIxD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyC/D;AAUD;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;GAwHlE"}
|
|
@@ -37,6 +37,7 @@ export declare function transformServerInfo(name: string, config: MCPServerParam
|
|
|
37
37
|
clientSecret?: string | undefined;
|
|
38
38
|
scopes?: string[] | undefined;
|
|
39
39
|
autoRegister?: boolean | undefined;
|
|
40
|
+
redirectUrl?: string | undefined;
|
|
40
41
|
} | undefined;
|
|
41
42
|
url?: string | undefined;
|
|
42
43
|
headers?: Record<string, string> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configTransformers.d.ts","sourceRoot":"","sources":["../../../../../../src/core/tools/internal/adapters/helpers/configTransformers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,OAAO,CAAC,eAAe,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1D,UAAU,EAAE,MAAM,GACjB,YAAY,EAAE,CAkDhB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAYxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe
|
|
1
|
+
{"version":3,"file":"configTransformers.d.ts","sourceRoot":"","sources":["../../../../../../src/core/tools/internal/adapters/helpers/configTransformers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,OAAO,CAAC,eAAe,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1D,UAAU,EAAE,MAAM,GACjB,YAAY,EAAE,CAkDhB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAYxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYxE"}
|