@1mcp/agent 0.20.3-alpha3 → 0.21.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.
package/README.md CHANGED
@@ -9,7 +9,6 @@ A unified Model Context Protocol server implementation that aggregates multiple
9
9
  [![1MCP Docs](https://img.shields.io/badge/1MCP-Official%20Docs-blue)](https://docs.1mcp.app)
10
10
  [![DeepWiki](https://img.shields.io/badge/DeepWiki-AI%20Docs-purple.svg?logo=gitbook&logoColor=white)](https://deepwiki.com/1mcp-app/agent)
11
11
  [![NPM License](https://img.shields.io/npm/l/@1mcp/agent)](https://www.npmjs.com/package/@1mcp/agent)
12
- [![Trust Score](https://archestra.ai/mcp-catalog/api/badge/quality/1mcp-app/agent)](https://archestra.ai/mcp-catalog/1mcp-app__agent)
13
12
 
14
13
  ## Table of Contents
15
14
 
@@ -141,6 +140,7 @@ That's it! All your MCP servers are now available through one unified endpoint.
141
140
  - **`npx -y @1mcp/agent mcp status [name]`** - Show server status and details
142
141
  - **`npx -y @1mcp/agent mcp enable/disable <name>`** - Enable or disable servers
143
142
  - **`npx -y @1mcp/agent mcp update <name>`** - Update server configuration
143
+ - **`npx -y @1mcp/agent mcp tokens`** - Estimate MCP token usage for server capabilities
144
144
 
145
145
  ### App Integration
146
146
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;GAKG;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAqXlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;GAKG;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAkalD"}
@@ -349,6 +349,50 @@ export function setupMcpCommands(yargs) {
349
349
  const { statusCommand } = await import('./status.js');
350
350
  await statusCommand(argv);
351
351
  },
352
+ })
353
+ .command({
354
+ command: 'tokens',
355
+ describe: 'Estimate MCP token usage for server capabilities',
356
+ builder: (yargs) => {
357
+ return yargs
358
+ .option('config', {
359
+ describe: 'Path to the config file',
360
+ type: 'string',
361
+ alias: 'c',
362
+ })
363
+ .option('tag-filter', {
364
+ describe: 'Filter servers by advanced tag expression (and/or/not logic)',
365
+ type: 'string',
366
+ alias: 'f',
367
+ })
368
+ .option('format', {
369
+ describe: 'Output format',
370
+ type: 'string',
371
+ choices: ['table', 'json', 'summary'],
372
+ default: 'table',
373
+ })
374
+ .option('model', {
375
+ describe: 'Model to use for token estimation',
376
+ type: 'string',
377
+ alias: 'm',
378
+ default: 'gpt-4o',
379
+ })
380
+ .example([
381
+ ['$0 mcp tokens', 'Estimate tokens for all MCP servers by connecting to them'],
382
+ [
383
+ '$0 mcp tokens --tag-filter="context7 or playwright"',
384
+ 'Estimate tokens for servers with specific tags',
385
+ ],
386
+ ['$0 mcp tokens --format=json', 'Output in JSON format for programmatic use'],
387
+ ['$0 mcp tokens --format=summary', 'Show concise summary'],
388
+ ['$0 mcp tokens --model=gpt-3.5-turbo', 'Use gpt-3.5-turbo for token estimation'],
389
+ ['$0 mcp tokens --tag-filter="ai and not experimental" --format=table', 'Filter and format output'],
390
+ ]);
391
+ },
392
+ handler: async (argv) => {
393
+ const { tokensCommand } = await import('./tokens.js');
394
+ await tokensCommand(argv);
395
+ },
352
396
  })
353
397
  .demandCommand(1, 'You must specify a subcommand')
354
398
  .help().epilogue(`
@@ -363,6 +407,7 @@ This allows you to:
363
407
  • Enable/disable servers without removing them
364
408
  • List and filter servers by tags or status
365
409
  • Check the status and details of configured servers
410
+ • Estimate token usage for server capabilities and tools
366
411
 
367
412
  For more information about each command, use: $0 mcp <command> --help
368
413
  `);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/mcp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/mcp/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Arguments } from 'yargs';
2
+ interface TokensCommandArgs {
3
+ config?: string;
4
+ 'tag-filter'?: string;
5
+ format?: string;
6
+ model?: string;
7
+ }
8
+ /**
9
+ * Tokens command handler
10
+ */
11
+ export declare function tokensCommand(argv: Arguments<TokensCommandArgs>): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyPD;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFrF"}
@@ -0,0 +1,273 @@
1
+ import logger from '../../logger/logger.js';
2
+ import { TokenEstimationService } from '../../services/tokenEstimationService.js';
3
+ import { TagQueryParser } from '../../utils/tagQueryParser.js';
4
+ import { loadConfig } from './utils/configUtils.js';
5
+ import { McpConnectionHelper } from './utils/connectionHelper.js';
6
+ /**
7
+ * Format output in table format
8
+ */
9
+ function formatTableOutput(estimates, stats) {
10
+ console.log(`MCP Server Token Estimates${estimates.length > 0 && estimates.some((e) => e.connected) ? ` (${stats.connectedServers} connected servers)` : ''}:`);
11
+ console.log();
12
+ if (estimates.length === 0) {
13
+ console.log('No MCP servers found in configuration.');
14
+ return;
15
+ }
16
+ const connectedEstimates = estimates.filter((est) => est.connected && !est.error);
17
+ if (connectedEstimates.length === 0) {
18
+ console.log('No connected MCP servers found.');
19
+ estimates.forEach((est) => {
20
+ if (est.error) {
21
+ console.log(`${est.serverName} (Disconnected): ${est.error}`);
22
+ }
23
+ else {
24
+ console.log(`${est.serverName} (Disconnected)`);
25
+ }
26
+ });
27
+ return;
28
+ }
29
+ // Group by capability type
30
+ const hasTools = connectedEstimates.some((est) => est.breakdown.tools.length > 0);
31
+ const hasResources = connectedEstimates.some((est) => est.breakdown.resources.length > 0);
32
+ const hasPrompts = connectedEstimates.some((est) => est.breakdown.prompts.length > 0);
33
+ // TOOLS section
34
+ if (hasTools) {
35
+ console.log('=== TOOLS ===');
36
+ connectedEstimates.forEach((est) => {
37
+ if (est.breakdown.tools.length > 0) {
38
+ console.log(`${est.serverName} (Connected):`);
39
+ est.breakdown.tools.forEach((tool) => {
40
+ const desc = tool.description ? ` - ${tool.description.slice(0, 50)}...` : '';
41
+ console.log(`├── ${tool.name}: ~${tool.tokens} tokens${desc}`);
42
+ });
43
+ const toolTotal = est.breakdown.tools.reduce((sum, tool) => sum + tool.tokens, 0);
44
+ console.log(`└── Subtotal: ~${toolTotal} tokens`);
45
+ console.log();
46
+ }
47
+ });
48
+ const totalToolTokens = connectedEstimates.reduce((sum, est) => sum + est.breakdown.tools.reduce((toolSum, tool) => toolSum + tool.tokens, 0), 0);
49
+ console.log(`Tools Total: ~${totalToolTokens} tokens`);
50
+ console.log();
51
+ }
52
+ // RESOURCES section
53
+ if (hasResources) {
54
+ console.log('=== RESOURCES ===');
55
+ connectedEstimates.forEach((est) => {
56
+ if (est.breakdown.resources.length > 0) {
57
+ console.log(`${est.serverName} (Connected):`);
58
+ est.breakdown.resources.forEach((resource) => {
59
+ const name = resource.name || resource.uri.split('/').pop() || 'unnamed';
60
+ const mimeType = resource.mimeType ? ` (${resource.mimeType})` : '';
61
+ console.log(`├── ${name}: ~${resource.tokens} tokens${mimeType}`);
62
+ });
63
+ const resourceTotal = est.breakdown.resources.reduce((sum, resource) => sum + resource.tokens, 0);
64
+ console.log(`└── Subtotal: ~${resourceTotal} tokens`);
65
+ console.log();
66
+ }
67
+ });
68
+ const totalResourceTokens = connectedEstimates.reduce((sum, est) => sum + est.breakdown.resources.reduce((resSum, resource) => resSum + resource.tokens, 0), 0);
69
+ console.log(`Resources Total: ~${totalResourceTokens} tokens`);
70
+ console.log();
71
+ }
72
+ // PROMPTS section
73
+ if (hasPrompts) {
74
+ console.log('=== PROMPTS ===');
75
+ connectedEstimates.forEach((est) => {
76
+ if (est.breakdown.prompts.length > 0) {
77
+ console.log(`${est.serverName} (Connected):`);
78
+ est.breakdown.prompts.forEach((prompt) => {
79
+ const desc = prompt.description ? ` - ${prompt.description}` : '';
80
+ console.log(`├── ${prompt.name}: ~${prompt.tokens} tokens${desc}`);
81
+ });
82
+ const promptTotal = est.breakdown.prompts.reduce((sum, prompt) => sum + prompt.tokens, 0);
83
+ console.log(`└── Subtotal: ~${promptTotal} tokens`);
84
+ console.log();
85
+ }
86
+ });
87
+ const totalPromptTokens = connectedEstimates.reduce((sum, est) => sum + est.breakdown.prompts.reduce((promptSum, prompt) => promptSum + prompt.tokens, 0), 0);
88
+ console.log(`Prompts Total: ~${totalPromptTokens} tokens`);
89
+ console.log();
90
+ }
91
+ // SUMMARY section
92
+ console.log('=== SUMMARY ===');
93
+ const serverNames = connectedEstimates.map((est) => est.serverName).join(', ');
94
+ console.log(`Servers: ${stats.connectedServers} connected (${serverNames})`);
95
+ console.log(`Total Tools: ${stats.totalTools} (~${connectedEstimates.reduce((sum, est) => sum + est.breakdown.tools.reduce((toolSum, tool) => toolSum + tool.tokens, 0), 0)} tokens)`);
96
+ console.log(`Total Resources: ${stats.totalResources} (~${connectedEstimates.reduce((sum, est) => sum + est.breakdown.resources.reduce((resSum, resource) => resSum + resource.tokens, 0), 0)} tokens)`);
97
+ console.log(`Total Prompts: ${stats.totalPrompts} (~${connectedEstimates.reduce((sum, est) => sum + est.breakdown.prompts.reduce((promptSum, prompt) => promptSum + prompt.tokens, 0), 0)} tokens)`);
98
+ const totalOverhead = connectedEstimates.reduce((sum, est) => sum + est.breakdown.serverOverhead, 0);
99
+ console.log(`Server Overhead: ~${totalOverhead} tokens`);
100
+ console.log(`Overall Total: ~${stats.overallTokens} tokens`);
101
+ // Show disconnected servers if any
102
+ const disconnectedServers = estimates.filter((est) => !est.connected || est.error);
103
+ if (disconnectedServers.length > 0) {
104
+ console.log();
105
+ console.log('=== DISCONNECTED SERVERS ===');
106
+ disconnectedServers.forEach((est) => {
107
+ if (est.error) {
108
+ console.log(`${est.serverName}: ${est.error}`);
109
+ }
110
+ else {
111
+ console.log(`${est.serverName}: Not connected`);
112
+ }
113
+ });
114
+ }
115
+ }
116
+ /**
117
+ * Format output in JSON format
118
+ */
119
+ function formatJsonOutput(estimates, stats) {
120
+ const output = {
121
+ summary: stats,
122
+ servers: estimates,
123
+ timestamp: new Date().toISOString(),
124
+ };
125
+ console.log(JSON.stringify(output, null, 2));
126
+ }
127
+ /**
128
+ * Format output in summary format
129
+ */
130
+ function formatSummaryOutput(estimates, stats) {
131
+ console.log(`MCP Token Usage Summary:`);
132
+ console.log(` Connected Servers: ${stats.connectedServers}/${stats.totalServers}`);
133
+ console.log(` Total Capabilities: ${stats.totalTools + stats.totalResources + stats.totalPrompts}`);
134
+ console.log(` - Tools: ${stats.totalTools}`);
135
+ console.log(` - Resources: ${stats.totalResources}`);
136
+ console.log(` - Prompts: ${stats.totalPrompts}`);
137
+ console.log(` Estimated Token Usage: ~${stats.overallTokens} tokens`);
138
+ if (stats.connectedServers > 0) {
139
+ console.log(` Top Servers by Token Usage:`);
140
+ const sortedServers = Object.entries(stats.serverBreakdown)
141
+ .sort(([, a], [, b]) => b - a)
142
+ .slice(0, 5);
143
+ sortedServers.forEach(([serverName, tokens]) => {
144
+ console.log(` - ${serverName}: ~${tokens} tokens`);
145
+ });
146
+ }
147
+ // Show disconnected servers with error details if any
148
+ const disconnectedServers = estimates.filter((est) => !est.connected || est.error);
149
+ if (disconnectedServers.length > 0) {
150
+ console.log(` Note: ${disconnectedServers.length} server(s) not connected`);
151
+ if (disconnectedServers.some((est) => est.error)) {
152
+ console.log(` Errors:`);
153
+ disconnectedServers
154
+ .filter((est) => est.error)
155
+ .forEach((est) => {
156
+ console.log(` - ${est.serverName}: ${est.error}`);
157
+ });
158
+ }
159
+ }
160
+ }
161
+ /**
162
+ * Connect to MCP servers and collect their capabilities for token estimation
163
+ */
164
+ async function collectServerCapabilities(serverConfigs, model) {
165
+ const tokenService = new TokenEstimationService(model);
166
+ const connectionHelper = new McpConnectionHelper();
167
+ try {
168
+ logger.debug(`Connecting to ${serverConfigs.length} MCP servers for capability discovery`);
169
+ // Convert to server configuration format expected by connection helper
170
+ const servers = {};
171
+ for (const config of serverConfigs) {
172
+ const { name, ...serverParams } = config;
173
+ servers[name] = serverParams;
174
+ }
175
+ // Connect to all servers and get their capabilities
176
+ // Use shorter timeout for tests to improve performance
177
+ const timeout = process.env.NODE_ENV === 'test' ? 500 : 15000; // 0.5s for tests, 15s for normal use
178
+ const serverCapabilities = await connectionHelper.connectToServers(servers, timeout);
179
+ // Convert server capabilities to token estimates
180
+ const estimates = serverCapabilities.map((capability) => {
181
+ return tokenService.estimateServerTokens(capability.serverName, capability.tools, capability.resources, capability.prompts, capability.connected);
182
+ });
183
+ return estimates;
184
+ }
185
+ catch (error) {
186
+ logger.error('Error collecting server capabilities:', error);
187
+ throw error;
188
+ }
189
+ finally {
190
+ // Clean up connections
191
+ await connectionHelper.cleanup();
192
+ tokenService.dispose();
193
+ }
194
+ }
195
+ /**
196
+ * Tokens command handler
197
+ */
198
+ export async function tokensCommand(argv) {
199
+ try {
200
+ logger.debug('Starting tokens command with args:', argv);
201
+ // Load MCP configuration using utility function
202
+ const config = loadConfig(argv.config);
203
+ if (!config.mcpServers || Object.keys(config.mcpServers).length === 0) {
204
+ console.log('No MCP servers configured. Use "1mcp mcp add" to add servers.');
205
+ return;
206
+ }
207
+ // Parse tag filter if provided
208
+ let tagExpression;
209
+ let filteredServers = Object.entries(config.mcpServers);
210
+ if (argv['tag-filter']) {
211
+ try {
212
+ tagExpression = TagQueryParser.parseAdvanced(argv['tag-filter']);
213
+ logger.debug('Parsed tag filter expression:', tagExpression);
214
+ // Filter servers based on tag expression
215
+ filteredServers = filteredServers.filter(([_name, serverConfig]) => {
216
+ const serverTags = serverConfig.tags || [];
217
+ return TagQueryParser.evaluate(tagExpression, serverTags);
218
+ });
219
+ }
220
+ catch (error) {
221
+ console.error(`Invalid tag-filter expression: ${error instanceof Error ? error.message : 'Unknown error'}`);
222
+ process.exit(1);
223
+ }
224
+ }
225
+ if (filteredServers.length === 0) {
226
+ console.log(argv['tag-filter']
227
+ ? `No servers match the tag filter: ${argv['tag-filter']}`
228
+ : 'No servers found in configuration.');
229
+ return;
230
+ }
231
+ // Convert to config objects for processing, excluding disabled servers
232
+ const serverConfigs = filteredServers
233
+ .filter(([_name, serverConfig]) => !serverConfig.disabled)
234
+ .map(([name, serverConfig]) => ({
235
+ name,
236
+ ...serverConfig,
237
+ }));
238
+ if (serverConfigs.length === 0) {
239
+ console.log('No enabled servers found for token estimation.');
240
+ return;
241
+ }
242
+ // Only show connecting message for non-JSON formats
243
+ const format = argv.format || 'table';
244
+ if (format !== 'json') {
245
+ console.log(`Connecting to ${serverConfigs.length} MCP server(s) to analyze token usage...`);
246
+ }
247
+ // Collect server capabilities and estimate tokens
248
+ const estimates = await collectServerCapabilities(serverConfigs, argv.model);
249
+ // Calculate aggregate statistics
250
+ const tokenService = new TokenEstimationService(argv.model);
251
+ const stats = tokenService.calculateAggregateStats(estimates);
252
+ tokenService.dispose();
253
+ // Format and display output
254
+ switch (format) {
255
+ case 'json':
256
+ formatJsonOutput(estimates, stats);
257
+ break;
258
+ case 'summary':
259
+ formatSummaryOutput(estimates, stats);
260
+ break;
261
+ case 'table':
262
+ default:
263
+ formatTableOutput(estimates, stats);
264
+ break;
265
+ }
266
+ }
267
+ catch (error) {
268
+ logger.error('Error in tokens command:', error);
269
+ console.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
270
+ process.exit(1);
271
+ }
272
+ }
273
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/commands/mcp/tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { MCPServerParams } from '../../../core/types/index.js';
2
+ import type { Tool, Resource, Prompt } from '@modelcontextprotocol/sdk/types.js';
3
+ export interface ServerCapabilities {
4
+ serverName: string;
5
+ connected: boolean;
6
+ tools: Tool[];
7
+ resources: Resource[];
8
+ prompts: Prompt[];
9
+ error?: string;
10
+ }
11
+ /**
12
+ * Connection helper for connecting to MCP servers and retrieving their capabilities
13
+ */
14
+ export declare class McpConnectionHelper {
15
+ private connections;
16
+ /**
17
+ * Connect to MCP servers based on configuration
18
+ */
19
+ connectToServers(servers: Record<string, MCPServerParams>, timeoutMs?: number): Promise<ServerCapabilities[]>;
20
+ /**
21
+ * Get capabilities from a connected MCP server
22
+ */
23
+ private getServerCapabilities;
24
+ /**
25
+ * Clean up connections
26
+ */
27
+ cleanup(): Promise<void>;
28
+ }
29
+ //# sourceMappingURL=connectionHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionHelper.d.ts","sourceRoot":"","sources":["../../../../src/commands/mcp/utils/connectionHelper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjF,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAA8C;IAEjE;;OAEG;IACG,gBAAgB,CACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkFhC;;OAEG;YACW,qBAAqB;IAgEnC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA4B/B"}
@@ -0,0 +1,162 @@
1
+ import logger from '../../../logger/logger.js';
2
+ import { ClientManager } from '../../../core/client/clientManager.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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionHelper.js","sourceRoot":"","sources":["../../../../src/commands/mcp/utils/connectionHelper.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ export declare const STREAMABLE_HTTP_ENDPOINT = "/mcp";
10
10
  export declare const HEALTH_ENDPOINT = "/health";
11
11
  export declare const MCP_CONFIG_FILE = "mcp.json";
12
12
  export declare const MCP_SERVER_NAME = "1mcp";
13
- export declare const MCP_SERVER_VERSION = "0.20.3-alpha3";
13
+ export declare const MCP_SERVER_VERSION = "0.21.0";
14
14
  export declare const MCP_URI_SEPARATOR = "_1mcp_";
15
15
  export declare const CONFIG_DIR_NAME = "1mcp";
16
16
  export declare const BACKUP_DIR_NAME = "backups";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAG5F,eAAO,MAAM,IAAI,OAAO,CAAC;AACzB,eAAO,MAAM,IAAI,cAAc,CAAC;AAGhC,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAC/C,eAAO,MAAM,eAAe,YAAY,CAAC;AAGzC,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAG1C,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAY3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAGF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEvB,CAAC;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;CAM7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAYrC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAUrC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAG5F,eAAO,MAAM,IAAI,OAAO,CAAC;AACzB,eAAO,MAAM,IAAI,cAAc,CAAC;AAGhC,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAC/C,eAAO,MAAM,eAAe,YAAY,CAAC;AAGzC,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAG1C,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAY3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAGF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEvB,CAAC;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;CAM7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAYrC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAUrC,CAAC"}
@@ -12,7 +12,7 @@ export const HEALTH_ENDPOINT = '/health';
12
12
  // MCP constants
13
13
  export const MCP_CONFIG_FILE = 'mcp.json';
14
14
  export const MCP_SERVER_NAME = '1mcp';
15
- export const MCP_SERVER_VERSION = '0.20.3-alpha3';
15
+ export const MCP_SERVER_VERSION = '0.21.0';
16
16
  export const MCP_URI_SEPARATOR = '_1mcp_';
17
17
  // Global config paths
18
18
  export const CONFIG_DIR_NAME = '1mcp';
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import type { Tool, Resource, Prompt } from '@modelcontextprotocol/sdk/types.js';
2
+ /**
3
+ * Token breakdown by capability type
4
+ */
5
+ export interface TokenBreakdown {
6
+ tools: ToolTokenInfo[];
7
+ resources: ResourceTokenInfo[];
8
+ prompts: PromptTokenInfo[];
9
+ serverOverhead: number;
10
+ totalTokens: number;
11
+ }
12
+ /**
13
+ * Token information for a specific tool
14
+ */
15
+ export interface ToolTokenInfo {
16
+ name: string;
17
+ tokens: number;
18
+ description?: string;
19
+ }
20
+ /**
21
+ * Token information for a specific resource
22
+ */
23
+ export interface ResourceTokenInfo {
24
+ uri: string;
25
+ name?: string;
26
+ tokens: number;
27
+ mimeType?: string;
28
+ }
29
+ /**
30
+ * Token information for a specific prompt
31
+ */
32
+ export interface PromptTokenInfo {
33
+ name: string;
34
+ tokens: number;
35
+ description?: string;
36
+ argumentsTokens: number;
37
+ }
38
+ /**
39
+ * Server token estimation summary
40
+ */
41
+ export interface ServerTokenEstimate {
42
+ serverName: string;
43
+ connected: boolean;
44
+ breakdown: TokenBreakdown;
45
+ error?: string;
46
+ }
47
+ /**
48
+ * Service for estimating MCP token usage using tiktoken
49
+ */
50
+ export declare class TokenEstimationService {
51
+ private encoder;
52
+ private model;
53
+ private static readonly BASE_SERVER_OVERHEAD;
54
+ private static readonly FALLBACK_CHARS_PER_TOKEN;
55
+ constructor(model?: string);
56
+ /**
57
+ * Estimate tokens for a single tool definition
58
+ */
59
+ private estimateToolTokens;
60
+ /**
61
+ * Estimate tokens for a single resource
62
+ */
63
+ private estimateResourceTokens;
64
+ /**
65
+ * Estimate tokens for a single prompt template
66
+ */
67
+ private estimatePromptTokens;
68
+ /**
69
+ * Estimate tokens for all capabilities of a server
70
+ */
71
+ estimateServerTokens(serverName: string, tools?: Tool[], resources?: Resource[], prompts?: Prompt[], connected?: boolean): ServerTokenEstimate;
72
+ /**
73
+ * Estimate tokens for prompt arguments
74
+ */
75
+ private estimateArgumentsTokens;
76
+ /**
77
+ * Calculate aggregate statistics across multiple servers
78
+ */
79
+ calculateAggregateStats(estimates: ServerTokenEstimate[]): {
80
+ totalServers: number;
81
+ connectedServers: number;
82
+ totalTools: number;
83
+ totalResources: number;
84
+ totalPrompts: number;
85
+ overallTokens: number;
86
+ serverBreakdown: {
87
+ [serverName: string]: number;
88
+ };
89
+ };
90
+ /**
91
+ * Clean up resources when done
92
+ */
93
+ dispose(): void;
94
+ }
95
+ //# sourceMappingURL=tokenEstimationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenEstimationService.d.ts","sourceRoot":"","sources":["../../src/services/tokenEstimationService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAkB,MAAM,oCAAoC,CAAC;AAGjG;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAM;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAO;gBAE3C,KAAK,GAAE,MAAiB;IAwBpC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0B9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoC5B;;OAEG;IACI,oBAAoB,CACzB,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,IAAI,EAAO,EAClB,SAAS,GAAE,QAAQ,EAAO,EAC1B,OAAO,GAAE,MAAM,EAAO,EACtB,SAAS,GAAE,OAAc,GACxB,mBAAmB;IA6DtB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;IACI,uBAAuB,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG;QAChE,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE;YAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;KACnD;IAcD;;OAEG;IACI,OAAO,IAAI,IAAI;CAUvB"}
@@ -0,0 +1,233 @@
1
+ import { encoding_for_model } from 'tiktoken';
2
+ import logger from '../logger/logger.js';
3
+ /**
4
+ * Service for estimating MCP token usage using tiktoken
5
+ */
6
+ export class TokenEstimationService {
7
+ encoder;
8
+ model;
9
+ static BASE_SERVER_OVERHEAD = 75; // Base overhead for server connection
10
+ static FALLBACK_CHARS_PER_TOKEN = 3.5; // Character-based fallback estimation
11
+ constructor(model = 'gpt-4o') {
12
+ try {
13
+ // Validate and cast the model to TiktokenModel
14
+ this.model = model;
15
+ // Initialize encoder for the specified model
16
+ this.encoder = encoding_for_model(this.model);
17
+ logger.debug(`TokenEstimationService initialized with tiktoken ${this.model} encoding`);
18
+ }
19
+ catch (error) {
20
+ logger.error(`Failed to initialize tiktoken encoder for model ${model}:`, error);
21
+ logger.warn(`Falling back to gpt-4o encoding`);
22
+ // Fallback to gpt-4o if the provided model fails
23
+ try {
24
+ this.model = 'gpt-4o';
25
+ this.encoder = encoding_for_model(this.model);
26
+ }
27
+ catch (fallbackError) {
28
+ logger.error('Failed to initialize fallback encoder:', fallbackError);
29
+ this.encoder = null;
30
+ this.model = 'gpt-4o'; // Keep default for logging purposes
31
+ }
32
+ }
33
+ }
34
+ /**
35
+ * Estimate tokens for a single tool definition
36
+ */
37
+ estimateToolTokens(tool) {
38
+ try {
39
+ // Create a representative JSON structure for the tool
40
+ const toolDefinition = {
41
+ name: tool.name,
42
+ description: tool.description,
43
+ inputSchema: tool.inputSchema,
44
+ };
45
+ const toolJson = JSON.stringify(toolDefinition);
46
+ if (this.encoder) {
47
+ const tokens = this.encoder.encode(toolJson);
48
+ return tokens.length;
49
+ }
50
+ else {
51
+ // Fallback to character-based estimation
52
+ return Math.ceil(toolJson.length / TokenEstimationService.FALLBACK_CHARS_PER_TOKEN);
53
+ }
54
+ }
55
+ catch (error) {
56
+ logger.warn(`Error estimating tokens for tool ${tool.name}:`, error);
57
+ // Fallback estimation based on typical tool size
58
+ return 150;
59
+ }
60
+ }
61
+ /**
62
+ * Estimate tokens for a single resource
63
+ */
64
+ estimateResourceTokens(resource) {
65
+ try {
66
+ // Create a representative structure for the resource metadata
67
+ const resourceMeta = {
68
+ uri: resource.uri,
69
+ name: resource.name,
70
+ description: resource.description,
71
+ mimeType: resource.mimeType,
72
+ };
73
+ const resourceJson = JSON.stringify(resourceMeta);
74
+ if (this.encoder) {
75
+ const tokens = this.encoder.encode(resourceJson);
76
+ return tokens.length;
77
+ }
78
+ else {
79
+ // Fallback to character-based estimation
80
+ return Math.ceil(resourceJson.length / TokenEstimationService.FALLBACK_CHARS_PER_TOKEN);
81
+ }
82
+ }
83
+ catch (error) {
84
+ logger.warn(`Error estimating tokens for resource ${resource.uri}:`, error);
85
+ // Fallback estimation based on typical resource size
86
+ return 50;
87
+ }
88
+ }
89
+ /**
90
+ * Estimate tokens for a single prompt template
91
+ */
92
+ estimatePromptTokens(prompt) {
93
+ try {
94
+ // Estimate tokens for the prompt template and arguments
95
+ let totalTokens = 0;
96
+ // Count tokens for prompt name and description
97
+ const promptMeta = {
98
+ name: prompt.name,
99
+ description: prompt.description,
100
+ };
101
+ const promptMetaJson = JSON.stringify(promptMeta);
102
+ if (this.encoder) {
103
+ totalTokens += this.encoder.encode(promptMetaJson).length;
104
+ }
105
+ else {
106
+ totalTokens += Math.ceil(promptMetaJson.length / TokenEstimationService.FALLBACK_CHARS_PER_TOKEN);
107
+ }
108
+ // Count tokens for arguments
109
+ if (prompt.arguments) {
110
+ const argumentsJson = JSON.stringify(prompt.arguments);
111
+ if (this.encoder) {
112
+ totalTokens += this.encoder.encode(argumentsJson).length;
113
+ }
114
+ else {
115
+ totalTokens += Math.ceil(argumentsJson.length / TokenEstimationService.FALLBACK_CHARS_PER_TOKEN);
116
+ }
117
+ }
118
+ return totalTokens;
119
+ }
120
+ catch (error) {
121
+ logger.warn(`Error estimating tokens for prompt ${prompt.name}:`, error);
122
+ // Fallback estimation based on typical prompt size
123
+ return 100;
124
+ }
125
+ }
126
+ /**
127
+ * Estimate tokens for all capabilities of a server
128
+ */
129
+ estimateServerTokens(serverName, tools = [], resources = [], prompts = [], connected = true) {
130
+ try {
131
+ logger.debug(`Estimating tokens for server: ${serverName}`);
132
+ // Calculate token breakdown by capability type
133
+ const toolTokens = tools.map((tool) => ({
134
+ name: tool.name,
135
+ description: tool.description,
136
+ tokens: this.estimateToolTokens(tool),
137
+ }));
138
+ const resourceTokens = resources.map((resource) => ({
139
+ uri: resource.uri,
140
+ name: resource.name,
141
+ mimeType: resource.mimeType,
142
+ tokens: this.estimateResourceTokens(resource),
143
+ }));
144
+ const promptTokens = prompts.map((prompt) => ({
145
+ name: prompt.name,
146
+ description: prompt.description,
147
+ tokens: this.estimatePromptTokens(prompt),
148
+ argumentsTokens: prompt.arguments ? this.estimateArgumentsTokens(prompt.arguments) : 0,
149
+ }));
150
+ // Calculate totals
151
+ const totalToolTokens = toolTokens.reduce((sum, tool) => sum + tool.tokens, 0);
152
+ const totalResourceTokens = resourceTokens.reduce((sum, resource) => sum + resource.tokens, 0);
153
+ const totalPromptTokens = promptTokens.reduce((sum, prompt) => sum + prompt.tokens, 0);
154
+ const serverOverhead = TokenEstimationService.BASE_SERVER_OVERHEAD;
155
+ const breakdown = {
156
+ tools: toolTokens,
157
+ resources: resourceTokens,
158
+ prompts: promptTokens,
159
+ serverOverhead,
160
+ totalTokens: totalToolTokens + totalResourceTokens + totalPromptTokens + serverOverhead,
161
+ };
162
+ return {
163
+ serverName,
164
+ connected,
165
+ breakdown,
166
+ };
167
+ }
168
+ catch (error) {
169
+ logger.error(`Error estimating tokens for server ${serverName}:`, error);
170
+ return {
171
+ serverName,
172
+ connected,
173
+ breakdown: {
174
+ tools: [],
175
+ resources: [],
176
+ prompts: [],
177
+ serverOverhead: TokenEstimationService.BASE_SERVER_OVERHEAD,
178
+ totalTokens: TokenEstimationService.BASE_SERVER_OVERHEAD,
179
+ },
180
+ error: error instanceof Error ? error.message : 'Unknown error',
181
+ };
182
+ }
183
+ }
184
+ /**
185
+ * Estimate tokens for prompt arguments
186
+ */
187
+ estimateArgumentsTokens(arguments_) {
188
+ try {
189
+ const argumentsJson = JSON.stringify(arguments_);
190
+ if (this.encoder) {
191
+ const tokens = this.encoder.encode(argumentsJson);
192
+ return tokens.length;
193
+ }
194
+ else {
195
+ return Math.ceil(argumentsJson.length / TokenEstimationService.FALLBACK_CHARS_PER_TOKEN);
196
+ }
197
+ }
198
+ catch (error) {
199
+ logger.warn('Error estimating tokens for prompt arguments:', error);
200
+ return 25; // Conservative fallback
201
+ }
202
+ }
203
+ /**
204
+ * Calculate aggregate statistics across multiple servers
205
+ */
206
+ calculateAggregateStats(estimates) {
207
+ const connectedEstimates = estimates.filter((est) => est.connected && !est.error);
208
+ return {
209
+ totalServers: estimates.length,
210
+ connectedServers: connectedEstimates.length,
211
+ totalTools: connectedEstimates.reduce((sum, est) => sum + est.breakdown.tools.length, 0),
212
+ totalResources: connectedEstimates.reduce((sum, est) => sum + est.breakdown.resources.length, 0),
213
+ totalPrompts: connectedEstimates.reduce((sum, est) => sum + est.breakdown.prompts.length, 0),
214
+ overallTokens: connectedEstimates.reduce((sum, est) => sum + est.breakdown.totalTokens, 0),
215
+ serverBreakdown: Object.fromEntries(connectedEstimates.map((est) => [est.serverName, est.breakdown.totalTokens])),
216
+ };
217
+ }
218
+ /**
219
+ * Clean up resources when done
220
+ */
221
+ dispose() {
222
+ if (this.encoder && typeof this.encoder.free === 'function') {
223
+ try {
224
+ this.encoder.free();
225
+ logger.debug('TokenEstimationService encoder disposed');
226
+ }
227
+ catch (error) {
228
+ logger.warn('Error disposing tiktoken encoder:', error);
229
+ }
230
+ }
231
+ }
232
+ }
233
+ //# sourceMappingURL=tokenEstimationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenEstimationService.js","sourceRoot":"","sources":["../../src/services/tokenEstimationService.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1mcp/agent",
3
- "version": "0.20.3-alpha3",
3
+ "version": "0.21.0",
4
4
  "description": "One MCP server to aggregate them all - A unified Model Context Protocol server implementation",
5
5
  "keywords": [
6
6
  "mcp",
@@ -61,10 +61,11 @@
61
61
  "express-rate-limit": "^7.5.1",
62
62
  "json5": "^2.2.3",
63
63
  "source-map-support": "^0.5.21",
64
+ "tiktoken": "^1.0.22",
64
65
  "uuid": "^11.1.0",
65
66
  "winston": "^3.17.0",
66
67
  "winston-transport": "^4.9.0",
67
- "yargs": "^17.7.2",
68
+ "yargs": "^18.0.0",
68
69
  "yargs-parser": "^22.0.0",
69
70
  "zod": "^3.24.2"
70
71
  },