@1mcp/agent 0.31.0 → 0.32.0-beta1
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/auth/sdkOAuthClientProvider.d.ts +1 -0
- package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -1
- package/build/auth/sdkOAuthClientProvider.js +4 -2
- package/build/auth/sdkOAuthClientProvider.js.map +1 -1
- package/build/commands/inspect/inspect.d.ts.map +1 -1
- package/build/commands/inspect/inspect.js +2 -1
- package/build/commands/inspect/inspect.js.map +1 -1
- package/build/commands/mcp/add.d.ts.map +1 -1
- package/build/commands/mcp/add.js +1 -3
- package/build/commands/mcp/add.js.map +1 -1
- package/build/commands/mcp/enable.d.ts.map +1 -1
- package/build/commands/mcp/enable.js +39 -80
- package/build/commands/mcp/enable.js.map +1 -1
- package/build/commands/mcp/index.d.ts.map +1 -1
- package/build/commands/mcp/index.js +3 -2
- package/build/commands/mcp/index.js.map +1 -1
- package/build/commands/mcp/install.d.ts.map +1 -1
- package/build/commands/mcp/install.js +6 -10
- package/build/commands/mcp/install.js.map +1 -1
- package/build/commands/mcp/remove.d.ts.map +1 -1
- package/build/commands/mcp/remove.js +1 -3
- package/build/commands/mcp/remove.js.map +1 -1
- package/build/commands/mcp/tokens.d.ts.map +1 -1
- package/build/commands/mcp/tokens.js +1 -1
- package/build/commands/mcp/tokens.js.map +1 -1
- package/build/commands/mcp/tools.d.ts +30 -0
- package/build/commands/mcp/tools.d.ts.map +1 -0
- package/build/commands/mcp/tools.js +422 -0
- package/build/commands/mcp/tools.js.map +1 -0
- package/build/commands/mcp/uninstall.d.ts.map +1 -1
- package/build/commands/mcp/uninstall.js +1 -3
- package/build/commands/mcp/uninstall.js.map +1 -1
- package/build/commands/mcp/update.d.ts.map +1 -1
- package/build/commands/mcp/update.js +1 -3
- package/build/commands/mcp/update.js.map +1 -1
- package/build/commands/shared/baseConfigUtils.d.ts +30 -0
- package/build/commands/shared/baseConfigUtils.d.ts.map +1 -1
- package/build/commands/shared/baseConfigUtils.js +136 -2
- package/build/commands/shared/baseConfigUtils.js.map +1 -1
- package/build/commands/shared/connectionHelper.d.ts +2 -0
- package/build/commands/shared/connectionHelper.d.ts.map +1 -1
- package/build/commands/shared/connectionHelper.js +77 -58
- package/build/commands/shared/connectionHelper.js.map +1 -1
- package/build/config/configManager.d.ts.map +1 -1
- package/build/config/configManager.js +2 -0
- package/build/config/configManager.js.map +1 -1
- package/build/config/configWatcher.d.ts +3 -0
- package/build/config/configWatcher.d.ts.map +1 -1
- package/build/config/configWatcher.js +43 -15
- package/build/config/configWatcher.js.map +1 -1
- package/build/config/mcpConfigManager.d.ts.map +1 -1
- package/build/config/mcpConfigManager.js +4 -0
- package/build/config/mcpConfigManager.js.map +1 -1
- package/build/constants/mcp.d.ts +1 -1
- package/build/constants/mcp.d.ts.map +1 -1
- package/build/constants/mcp.js +1 -1
- package/build/constants/mcp.js.map +1 -1
- package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -1
- package/build/core/capabilities/capabilityAggregator.js +5 -1
- package/build/core/capabilities/capabilityAggregator.js.map +1 -1
- package/build/core/capabilities/lazyLoadingOrchestrator.d.ts.map +1 -1
- package/build/core/capabilities/lazyLoadingOrchestrator.js +5 -2
- package/build/core/capabilities/lazyLoadingOrchestrator.js.map +1 -1
- package/build/core/capabilities/metaToolProvider.d.ts +2 -0
- package/build/core/capabilities/metaToolProvider.d.ts.map +1 -1
- package/build/core/capabilities/metaToolProvider.js +32 -34
- package/build/core/capabilities/metaToolProvider.js.map +1 -1
- package/build/core/protocol/requestHandlers.d.ts.map +1 -1
- package/build/core/protocol/requestHandlers.js +22 -1
- package/build/core/protocol/requestHandlers.js.map +1 -1
- package/build/core/server/disabledTools.d.ts +13 -0
- package/build/core/server/disabledTools.d.ts.map +1 -0
- package/build/core/server/disabledTools.js +93 -0
- package/build/core/server/disabledTools.js.map +1 -0
- 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/handlers/serverManagementHandler.js +3 -0
- package/build/core/tools/handlers/serverManagementHandler.js.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/tools/internal/adapters/management/managementAdapter.d.ts.map +1 -1
- package/build/core/tools/internal/adapters/management/managementAdapter.js +10 -3
- package/build/core/tools/internal/adapters/management/managementAdapter.js.map +1 -1
- package/build/core/types/transport.d.ts +5 -0
- package/build/core/types/transport.d.ts.map +1 -1
- package/build/core/types/transport.js +4 -0
- package/build/core/types/transport.js.map +1 -1
- package/build/transport/http/routes/inspectRoutes.d.ts +2 -1
- package/build/transport/http/routes/inspectRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/inspectRoutes.js +16 -5
- package/build/transport/http/routes/inspectRoutes.js.map +1 -1
- package/build/transport/http/routes/toolRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/toolRoutes.js +17 -30
- package/build/transport/http/routes/toolRoutes.js.map +1 -1
- package/package.json +2 -2
- package/build/commands/mcp/utils/connectionHelper.d.ts +0 -29
- package/build/commands/mcp/utils/connectionHelper.d.ts.map +0 -1
- package/build/commands/mcp/utils/connectionHelper.js +0 -162
- package/build/commands/mcp/utils/connectionHelper.js.map +0 -1
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { ClientManager } from '../../../core/client/clientManager.js';
|
|
2
|
-
import logger from '../../../logger/logger.js';
|
|
3
|
-
import { createTransports } from '../../../transport/transportFactory.js';
|
|
4
|
-
/**
|
|
5
|
-
* Connection helper for connecting to MCP servers and retrieving their capabilities
|
|
6
|
-
*/
|
|
7
|
-
export class McpConnectionHelper {
|
|
8
|
-
connections = new Map();
|
|
9
|
-
/**
|
|
10
|
-
* Connect to MCP servers based on configuration
|
|
11
|
-
*/
|
|
12
|
-
async connectToServers(servers, timeoutMs = 10000) {
|
|
13
|
-
logger.info(`Connecting to ${Object.keys(servers).length} MCP servers`);
|
|
14
|
-
const serverNames = Object.keys(servers);
|
|
15
|
-
if (serverNames.length === 0) {
|
|
16
|
-
return [];
|
|
17
|
-
}
|
|
18
|
-
// Create transports from server configurations
|
|
19
|
-
const transports = createTransports(servers);
|
|
20
|
-
logger.debug(`Created ${Object.keys(transports).length} transports`);
|
|
21
|
-
const results = [];
|
|
22
|
-
// Connect to servers in parallel with individual timeouts
|
|
23
|
-
const connectionPromises = serverNames.map(async (serverName) => {
|
|
24
|
-
try {
|
|
25
|
-
logger.debug(`Connecting to server: ${serverName}`);
|
|
26
|
-
// Create a timeout promise
|
|
27
|
-
const timeoutPromise = new Promise((_, reject) => {
|
|
28
|
-
setTimeout(() => {
|
|
29
|
-
reject(new Error(`Connection timeout after ${timeoutMs}ms`));
|
|
30
|
-
}, timeoutMs);
|
|
31
|
-
});
|
|
32
|
-
// Get transport for this server
|
|
33
|
-
const transport = transports[serverName];
|
|
34
|
-
if (!transport) {
|
|
35
|
-
throw new Error('Transport not found');
|
|
36
|
-
}
|
|
37
|
-
// Create clients with timeout
|
|
38
|
-
const tempClientManager = ClientManager.getOrCreateInstance();
|
|
39
|
-
const tempTransports = { [serverName]: transport };
|
|
40
|
-
// Connect with timeout
|
|
41
|
-
const connectPromise = tempClientManager.createClients(tempTransports);
|
|
42
|
-
// Race between connection and timeout
|
|
43
|
-
const clients = await Promise.race([connectPromise, timeoutPromise]);
|
|
44
|
-
const connection = clients.get(serverName);
|
|
45
|
-
if (!connection) {
|
|
46
|
-
throw new Error('Failed to establish connection');
|
|
47
|
-
}
|
|
48
|
-
this.connections.set(serverName, connection);
|
|
49
|
-
// Get capabilities from the connected server
|
|
50
|
-
const capabilities = await this.getServerCapabilities(serverName, connection);
|
|
51
|
-
results.push({
|
|
52
|
-
serverName,
|
|
53
|
-
connected: true,
|
|
54
|
-
...capabilities,
|
|
55
|
-
});
|
|
56
|
-
logger.debug(`Successfully connected to ${serverName}`);
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
60
|
-
logger.warn(`Failed to connect to server ${serverName}: ${errorMessage}`);
|
|
61
|
-
results.push({
|
|
62
|
-
serverName,
|
|
63
|
-
connected: false,
|
|
64
|
-
tools: [],
|
|
65
|
-
resources: [],
|
|
66
|
-
prompts: [],
|
|
67
|
-
error: errorMessage,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
// Wait for all connections to complete (success or failure)
|
|
72
|
-
await Promise.allSettled(connectionPromises);
|
|
73
|
-
const connectedCount = results.filter((r) => r.connected).length;
|
|
74
|
-
logger.info(`Connected to ${connectedCount}/${serverNames.length} MCP servers`);
|
|
75
|
-
return results;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Get capabilities from a connected MCP server
|
|
79
|
-
*/
|
|
80
|
-
async getServerCapabilities(serverName, connection) {
|
|
81
|
-
const tools = [];
|
|
82
|
-
const resources = [];
|
|
83
|
-
const prompts = [];
|
|
84
|
-
try {
|
|
85
|
-
// Get tools with timeout
|
|
86
|
-
try {
|
|
87
|
-
const toolsResult = await Promise.race([
|
|
88
|
-
connection.client.listTools({}),
|
|
89
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error('Tools listing timeout')), 5000)),
|
|
90
|
-
]);
|
|
91
|
-
if (toolsResult && toolsResult.tools) {
|
|
92
|
-
tools.push(...toolsResult.tools);
|
|
93
|
-
logger.debug(`Got ${toolsResult.tools.length} tools from ${serverName}`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
logger.debug(`Failed to get tools from ${serverName}: ${error instanceof Error ? error.message : error}`);
|
|
98
|
-
}
|
|
99
|
-
// Get resources with timeout
|
|
100
|
-
try {
|
|
101
|
-
const resourcesResult = await Promise.race([
|
|
102
|
-
connection.client.listResources({}),
|
|
103
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error('Resources listing timeout')), 5000)),
|
|
104
|
-
]);
|
|
105
|
-
if (resourcesResult && resourcesResult.resources) {
|
|
106
|
-
resources.push(...resourcesResult.resources);
|
|
107
|
-
logger.debug(`Got ${resourcesResult.resources.length} resources from ${serverName}`);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
logger.debug(`Failed to get resources from ${serverName}: ${error instanceof Error ? error.message : error}`);
|
|
112
|
-
}
|
|
113
|
-
// Get prompts with timeout
|
|
114
|
-
try {
|
|
115
|
-
const promptsResult = await Promise.race([
|
|
116
|
-
connection.client.listPrompts({}),
|
|
117
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error('Prompts listing timeout')), 5000)),
|
|
118
|
-
]);
|
|
119
|
-
if (promptsResult && promptsResult.prompts) {
|
|
120
|
-
prompts.push(...promptsResult.prompts);
|
|
121
|
-
logger.debug(`Got ${promptsResult.prompts.length} prompts from ${serverName}`);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
logger.debug(`Failed to get prompts from ${serverName}: ${error instanceof Error ? error.message : error}`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
logger.warn(`Error getting capabilities from ${serverName}: ${error instanceof Error ? error.message : error}`);
|
|
130
|
-
}
|
|
131
|
-
return { tools, resources, prompts };
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Clean up connections
|
|
135
|
-
*/
|
|
136
|
-
async cleanup() {
|
|
137
|
-
logger.debug('Cleaning up MCP connections');
|
|
138
|
-
const cleanupPromises = [];
|
|
139
|
-
for (const [serverName, connection] of this.connections) {
|
|
140
|
-
const cleanupPromise = (async () => {
|
|
141
|
-
try {
|
|
142
|
-
if (connection.client && typeof connection.client.close === 'function') {
|
|
143
|
-
// Add timeout to close operation
|
|
144
|
-
await Promise.race([
|
|
145
|
-
connection.client.close(),
|
|
146
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error('Close operation timeout')), 3000)),
|
|
147
|
-
]);
|
|
148
|
-
}
|
|
149
|
-
logger.debug(`Closed connection to ${serverName}`);
|
|
150
|
-
}
|
|
151
|
-
catch (error) {
|
|
152
|
-
logger.warn(`Error closing connection to ${serverName}: ${error instanceof Error ? error.message : error}`);
|
|
153
|
-
}
|
|
154
|
-
})();
|
|
155
|
-
cleanupPromises.push(cleanupPromise);
|
|
156
|
-
}
|
|
157
|
-
// Wait for all cleanup operations to complete
|
|
158
|
-
await Promise.allSettled(cleanupPromises);
|
|
159
|
-
this.connections.clear();
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=connectionHelper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connectionHelper.js","sourceRoot":"","sources":["../../../../src/commands/mcp/utils/connectionHelper.ts"],"names":[],"mappings":"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"}
|