@1mcp/agent 0.31.0 → 0.32.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 (107) hide show
  1. package/build/auth/sdkOAuthClientProvider.d.ts +1 -0
  2. package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -1
  3. package/build/auth/sdkOAuthClientProvider.js +4 -2
  4. package/build/auth/sdkOAuthClientProvider.js.map +1 -1
  5. package/build/auth/sdkOAuthServerProvider.d.ts.map +1 -1
  6. package/build/auth/sdkOAuthServerProvider.js +16 -11
  7. package/build/auth/sdkOAuthServerProvider.js.map +1 -1
  8. package/build/commands/inspect/inspect.d.ts.map +1 -1
  9. package/build/commands/inspect/inspect.js +2 -1
  10. package/build/commands/inspect/inspect.js.map +1 -1
  11. package/build/commands/mcp/add.d.ts.map +1 -1
  12. package/build/commands/mcp/add.js +1 -3
  13. package/build/commands/mcp/add.js.map +1 -1
  14. package/build/commands/mcp/enable.d.ts.map +1 -1
  15. package/build/commands/mcp/enable.js +39 -80
  16. package/build/commands/mcp/enable.js.map +1 -1
  17. package/build/commands/mcp/index.d.ts.map +1 -1
  18. package/build/commands/mcp/index.js +3 -2
  19. package/build/commands/mcp/index.js.map +1 -1
  20. package/build/commands/mcp/install.d.ts.map +1 -1
  21. package/build/commands/mcp/install.js +6 -10
  22. package/build/commands/mcp/install.js.map +1 -1
  23. package/build/commands/mcp/remove.d.ts.map +1 -1
  24. package/build/commands/mcp/remove.js +1 -3
  25. package/build/commands/mcp/remove.js.map +1 -1
  26. package/build/commands/mcp/tokens.d.ts.map +1 -1
  27. package/build/commands/mcp/tokens.js +1 -1
  28. package/build/commands/mcp/tokens.js.map +1 -1
  29. package/build/commands/mcp/tools.d.ts +30 -0
  30. package/build/commands/mcp/tools.d.ts.map +1 -0
  31. package/build/commands/mcp/tools.js +422 -0
  32. package/build/commands/mcp/tools.js.map +1 -0
  33. package/build/commands/mcp/uninstall.d.ts.map +1 -1
  34. package/build/commands/mcp/uninstall.js +1 -3
  35. package/build/commands/mcp/uninstall.js.map +1 -1
  36. package/build/commands/mcp/update.d.ts.map +1 -1
  37. package/build/commands/mcp/update.js +1 -3
  38. package/build/commands/mcp/update.js.map +1 -1
  39. package/build/commands/shared/baseConfigUtils.d.ts +30 -0
  40. package/build/commands/shared/baseConfigUtils.d.ts.map +1 -1
  41. package/build/commands/shared/baseConfigUtils.js +136 -2
  42. package/build/commands/shared/baseConfigUtils.js.map +1 -1
  43. package/build/commands/shared/connectionHelper.d.ts +2 -0
  44. package/build/commands/shared/connectionHelper.d.ts.map +1 -1
  45. package/build/commands/shared/connectionHelper.js +77 -58
  46. package/build/commands/shared/connectionHelper.js.map +1 -1
  47. package/build/config/configManager.d.ts.map +1 -1
  48. package/build/config/configManager.js +2 -0
  49. package/build/config/configManager.js.map +1 -1
  50. package/build/config/configWatcher.d.ts +3 -0
  51. package/build/config/configWatcher.d.ts.map +1 -1
  52. package/build/config/configWatcher.js +43 -15
  53. package/build/config/configWatcher.js.map +1 -1
  54. package/build/config/mcpConfigManager.d.ts.map +1 -1
  55. package/build/config/mcpConfigManager.js +4 -0
  56. package/build/config/mcpConfigManager.js.map +1 -1
  57. package/build/constants/mcp.d.ts +1 -1
  58. package/build/constants/mcp.js +1 -1
  59. package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -1
  60. package/build/core/capabilities/capabilityAggregator.js +5 -1
  61. package/build/core/capabilities/capabilityAggregator.js.map +1 -1
  62. package/build/core/capabilities/lazyLoadingOrchestrator.d.ts.map +1 -1
  63. package/build/core/capabilities/lazyLoadingOrchestrator.js +5 -2
  64. package/build/core/capabilities/lazyLoadingOrchestrator.js.map +1 -1
  65. package/build/core/capabilities/metaToolProvider.d.ts +2 -0
  66. package/build/core/capabilities/metaToolProvider.d.ts.map +1 -1
  67. package/build/core/capabilities/metaToolProvider.js +32 -34
  68. package/build/core/capabilities/metaToolProvider.js.map +1 -1
  69. package/build/core/protocol/requestHandlers.d.ts.map +1 -1
  70. package/build/core/protocol/requestHandlers.js +22 -1
  71. package/build/core/protocol/requestHandlers.js.map +1 -1
  72. package/build/core/server/disabledTools.d.ts +13 -0
  73. package/build/core/server/disabledTools.d.ts.map +1 -0
  74. package/build/core/server/disabledTools.js +93 -0
  75. package/build/core/server/disabledTools.js.map +1 -0
  76. package/build/core/tools/handlers/serverManagementHandler.d.ts +5 -0
  77. package/build/core/tools/handlers/serverManagementHandler.d.ts.map +1 -1
  78. package/build/core/tools/handlers/serverManagementHandler.js +3 -0
  79. package/build/core/tools/handlers/serverManagementHandler.js.map +1 -1
  80. package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts +1 -0
  81. package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts.map +1 -1
  82. package/build/core/tools/internal/adapters/management/managementAdapter.d.ts.map +1 -1
  83. package/build/core/tools/internal/adapters/management/managementAdapter.js +10 -3
  84. package/build/core/tools/internal/adapters/management/managementAdapter.js.map +1 -1
  85. package/build/core/types/transport.d.ts +5 -0
  86. package/build/core/types/transport.d.ts.map +1 -1
  87. package/build/core/types/transport.js +4 -0
  88. package/build/core/types/transport.js.map +1 -1
  89. package/build/transport/http/routes/apiRoutes.d.ts +2 -1
  90. package/build/transport/http/routes/apiRoutes.d.ts.map +1 -1
  91. package/build/transport/http/routes/apiRoutes.js +8 -1
  92. package/build/transport/http/routes/apiRoutes.js.map +1 -1
  93. package/build/transport/http/routes/inspectRoutes.d.ts +2 -1
  94. package/build/transport/http/routes/inspectRoutes.d.ts.map +1 -1
  95. package/build/transport/http/routes/inspectRoutes.js +16 -5
  96. package/build/transport/http/routes/inspectRoutes.js.map +1 -1
  97. package/build/transport/http/routes/toolRoutes.d.ts.map +1 -1
  98. package/build/transport/http/routes/toolRoutes.js +17 -30
  99. package/build/transport/http/routes/toolRoutes.js.map +1 -1
  100. package/build/transport/http/server.d.ts.map +1 -1
  101. package/build/transport/http/server.js +26 -12
  102. package/build/transport/http/server.js.map +1 -1
  103. package/package.json +3 -3
  104. package/build/commands/mcp/utils/connectionHelper.d.ts +0 -29
  105. package/build/commands/mcp/utils/connectionHelper.d.ts.map +0 -1
  106. package/build/commands/mcp/utils/connectionHelper.js +0 -162
  107. 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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"}