@autonomaai/mcp-client 1.0.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/dist/client.js ADDED
@@ -0,0 +1,493 @@
1
+ "use strict";
2
+ /**
3
+ * Unified MCP Client for autonoma Trading System
4
+ *
5
+ * This client provides a unified interface for interacting with MCP servers
6
+ * across the autonoma ecosystem, with support for connection pooling,
7
+ * error handling, retries, and both sync and async operations.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.MCPClient = exports.MCPClientError = void 0;
11
+ /**
12
+ * HTTP Client Error for MCP operations
13
+ */
14
+ class MCPClientError extends Error {
15
+ constructor(message, status, response) {
16
+ super(message);
17
+ this.status = status;
18
+ this.response = response;
19
+ this.name = 'MCPClientError';
20
+ }
21
+ }
22
+ exports.MCPClientError = MCPClientError;
23
+ /**
24
+ * Main MCP Client class
25
+ */
26
+ class MCPClient {
27
+ constructor(config) {
28
+ this.config = {
29
+ timeout: 30000,
30
+ retries: 3,
31
+ retryDelay: 1000,
32
+ enableLogging: false,
33
+ apiKey: '',
34
+ headers: {},
35
+ ...config
36
+ };
37
+ this.headers = {
38
+ 'Content-Type': 'application/json',
39
+ 'User-Agent': '@autonoma/mcp-client/1.0.0',
40
+ ...this.config.headers
41
+ };
42
+ if (this.config.apiKey) {
43
+ this.headers['Authorization'] = `Bearer ${this.config.apiKey}`;
44
+ }
45
+ }
46
+ /**
47
+ * Make HTTP request with retry logic and error handling
48
+ */
49
+ async request(endpoint, options = {}) {
50
+ const { method = 'GET', body, timeout = this.config.timeout, retries = this.config.retries, retryDelay = this.config.retryDelay, headers: optionHeaders = {} } = options;
51
+ const url = `${this.config.baseUrl}${endpoint}`;
52
+ const requestHeaders = { ...this.headers, ...optionHeaders };
53
+ let lastError = null;
54
+ for (let attempt = 0; attempt <= retries; attempt++) {
55
+ try {
56
+ if (this.config.enableLogging && attempt > 0) {
57
+ // Use structured logging format instead of plain console.log
58
+ const logEntry = {
59
+ timestamp: new Date().toISOString(),
60
+ level: 'INFO',
61
+ component: 'MCP Client',
62
+ message: 'Retry attempt',
63
+ attempt,
64
+ method,
65
+ url
66
+ };
67
+ // @ts-ignore - process may not be available in all environments
68
+ const isProduction = typeof process !== 'undefined' && process.env?.NODE_ENV === 'production';
69
+ if (isProduction) {
70
+ console.log(JSON.stringify(logEntry));
71
+ }
72
+ else {
73
+ console.log(`[${logEntry.timestamp}] ${logEntry.level} [${logEntry.component}] ${logEntry.message} - attempt ${attempt} for ${method} ${url}`);
74
+ }
75
+ }
76
+ const response = await fetch(url, {
77
+ method,
78
+ headers: requestHeaders,
79
+ body: body ? JSON.stringify(body) : undefined,
80
+ // @ts-ignore - node-fetch timeout type issue
81
+ timeout
82
+ });
83
+ if (!response.ok) {
84
+ const errorText = await response.text();
85
+ let errorData = null;
86
+ try {
87
+ errorData = JSON.parse(errorText);
88
+ }
89
+ catch {
90
+ // Not JSON, use plain text
91
+ }
92
+ const errorMessage = errorData?.error || `HTTP ${response.status}: ${response.statusText}`;
93
+ throw new MCPClientError(errorMessage, response.status, errorData);
94
+ }
95
+ const contentType = response.headers.get('content-type');
96
+ if (contentType?.includes('application/json')) {
97
+ return await response.json();
98
+ }
99
+ else {
100
+ return await response.text();
101
+ }
102
+ }
103
+ catch (error) {
104
+ lastError = error instanceof Error ? error : new Error(String(error));
105
+ if (this.config.enableLogging) {
106
+ console.error(`MCP Client: Request failed (attempt ${attempt + 1}):`, lastError.message);
107
+ }
108
+ // Don't retry on client errors (4xx) or final attempt
109
+ if (error instanceof MCPClientError && error.status && error.status < 500) {
110
+ break;
111
+ }
112
+ if (attempt === retries) {
113
+ break;
114
+ }
115
+ // Wait before retry
116
+ await new Promise(resolve => setTimeout(resolve, retryDelay * Math.pow(2, attempt)));
117
+ }
118
+ }
119
+ throw lastError || new MCPClientError('Request failed after all retries');
120
+ }
121
+ // =============================================================================
122
+ // Health and Context Methods
123
+ // =============================================================================
124
+ async getHealth() {
125
+ return this.request('/health');
126
+ }
127
+ async getContext() {
128
+ return this.request('/context');
129
+ }
130
+ // =============================================================================
131
+ // Controller Management Methods
132
+ // =============================================================================
133
+ async createController(params) {
134
+ return this.request('/controllers/create', {
135
+ method: 'POST',
136
+ body: params
137
+ });
138
+ }
139
+ async getControllers() {
140
+ return this.request('/controllers');
141
+ }
142
+ async getController(id) {
143
+ return this.request(`/controllers/${id}`);
144
+ }
145
+ async startController(id) {
146
+ return this.request(`/controllers/${id}/start`, {
147
+ method: 'POST'
148
+ });
149
+ }
150
+ async stopController(id) {
151
+ return this.request(`/controllers/${id}/stop`, {
152
+ method: 'POST'
153
+ });
154
+ }
155
+ async getControllerMetrics(id) {
156
+ return this.request(`/controllers/${id}/metrics`);
157
+ }
158
+ async updateControllerConfig(id, config) {
159
+ return this.request(`/controllers/${id}/config`, {
160
+ method: 'PUT',
161
+ body: config
162
+ });
163
+ }
164
+ // =============================================================================
165
+ // Trading Operations Methods
166
+ // =============================================================================
167
+ async getExchanges() {
168
+ return this.request('/trading/exchanges');
169
+ }
170
+ async connectExchange(controllerId, params) {
171
+ return this.request(`/trading/${controllerId}/connect`, {
172
+ method: 'POST',
173
+ body: params
174
+ });
175
+ }
176
+ async getMarketData(controllerId) {
177
+ return this.request(`/trading/${controllerId}/market-data`);
178
+ }
179
+ async getAccountBalance(controllerId) {
180
+ return this.request(`/trading/${controllerId}/balance`);
181
+ }
182
+ async getConnectionStatus(controllerId) {
183
+ return this.request(`/trading/${controllerId}/connection-status`);
184
+ }
185
+ async executeSignal(params) {
186
+ return this.request('/trading/execute-signal', {
187
+ method: 'POST',
188
+ body: params
189
+ });
190
+ }
191
+ // =============================================================================
192
+ // Bot Management Methods (Legacy)
193
+ // =============================================================================
194
+ async createBot(params) {
195
+ return this.request('/bots', {
196
+ method: 'POST',
197
+ body: params
198
+ });
199
+ }
200
+ async getBots() {
201
+ return this.request('/bots');
202
+ }
203
+ async getBot(id) {
204
+ return this.request(`/bots/${id}`);
205
+ }
206
+ async getBotStatus(id) {
207
+ return this.request(`/bots/${id}/status`);
208
+ }
209
+ // =============================================================================
210
+ // Pool Management Methods
211
+ // =============================================================================
212
+ async createPool(params) {
213
+ return this.request('/pools/create', {
214
+ method: 'POST',
215
+ body: params
216
+ });
217
+ }
218
+ async getPools() {
219
+ return this.request('/pools');
220
+ }
221
+ async getPool(id) {
222
+ return this.request(`/pools/${id}`);
223
+ }
224
+ // =============================================================================
225
+ // Hyperliquid Market Data Methods (Legacy)
226
+ // =============================================================================
227
+ async getHyperliquidOrderbook(pair) {
228
+ return this.request(`/hyperliquid/orderbook/${pair}`);
229
+ }
230
+ async getHyperliquidSummary(pair) {
231
+ return this.request(`/hyperliquid/summary/${pair}`);
232
+ }
233
+ // =============================================================================
234
+ // Utility Methods
235
+ // =============================================================================
236
+ /**
237
+ * Update client configuration
238
+ */
239
+ updateConfig(newConfig) {
240
+ this.config = { ...this.config, ...newConfig };
241
+ if (newConfig.headers) {
242
+ this.headers = { ...this.headers, ...newConfig.headers };
243
+ }
244
+ if (newConfig.apiKey !== undefined) {
245
+ if (newConfig.apiKey) {
246
+ this.headers['Authorization'] = `Bearer ${newConfig.apiKey}`;
247
+ }
248
+ else {
249
+ delete this.headers['Authorization'];
250
+ }
251
+ }
252
+ }
253
+ /**
254
+ * Get current configuration
255
+ */
256
+ getConfig() {
257
+ return { ...this.config };
258
+ }
259
+ /**
260
+ * Enable or disable logging
261
+ */
262
+ setLogging(enabled) {
263
+ this.config.enableLogging = enabled;
264
+ }
265
+ /**
266
+ * Test connection to MCP server
267
+ */
268
+ async testConnection() {
269
+ try {
270
+ await this.getHealth();
271
+ return true;
272
+ }
273
+ catch {
274
+ return false;
275
+ }
276
+ }
277
+ // =============================================================================
278
+ // MCP Tools Methods (Standardized Interface)
279
+ // =============================================================================
280
+ /**
281
+ * List available MCP tools
282
+ */
283
+ async listTools() {
284
+ const request = {
285
+ jsonrpc: '2.0',
286
+ id: Date.now(),
287
+ method: 'tools/list'
288
+ };
289
+ const response = await this.request('/mcp', {
290
+ method: 'POST',
291
+ body: request
292
+ });
293
+ if (response.error) {
294
+ throw new MCPClientError(response.error.message, response.error.code, response.error.data);
295
+ }
296
+ return response.result;
297
+ }
298
+ /**
299
+ * Call an MCP tool
300
+ */
301
+ async callTool(toolCall) {
302
+ const request = {
303
+ jsonrpc: '2.0',
304
+ id: Date.now(),
305
+ method: 'tools/call',
306
+ params: toolCall
307
+ };
308
+ const response = await this.request('/mcp', {
309
+ method: 'POST',
310
+ body: request
311
+ });
312
+ if (response.error) {
313
+ throw new MCPClientError(response.error.message, response.error.code, response.error.data);
314
+ }
315
+ return response.result;
316
+ }
317
+ /**
318
+ * Ping MCP server
319
+ */
320
+ async ping() {
321
+ const request = {
322
+ jsonrpc: '2.0',
323
+ id: Date.now(),
324
+ method: 'ping'
325
+ };
326
+ const response = await this.request('/mcp', {
327
+ method: 'POST',
328
+ body: request
329
+ });
330
+ if (response.error) {
331
+ throw new MCPClientError(response.error.message, response.error.code, response.error.data);
332
+ }
333
+ return response.result;
334
+ }
335
+ // =============================================================================
336
+ // Dexscreener MCP Tools (Convenience Methods)
337
+ // =============================================================================
338
+ async getTrendingTokens() {
339
+ return this.callTool({ name: 'get_trending_tokens' });
340
+ }
341
+ async getLatestTokens() {
342
+ return this.callTool({ name: 'get_latest_tokens' });
343
+ }
344
+ async analyzeTrendingTokens() {
345
+ return this.callTool({ name: 'analyze_trending_tokens' });
346
+ }
347
+ async getDexscreenerContext() {
348
+ return this.callTool({ name: 'get_server_context' });
349
+ }
350
+ // =============================================================================
351
+ // Data Collector MCP Tools (Convenience Methods)
352
+ // =============================================================================
353
+ async getTokenPrice(params) {
354
+ return this.callTool({
355
+ name: 'get_token_price',
356
+ arguments: params
357
+ });
358
+ }
359
+ async getTokenVolume(params) {
360
+ return this.callTool({
361
+ name: 'get_token_volume',
362
+ arguments: params
363
+ });
364
+ }
365
+ async getOrderbook(params) {
366
+ return this.callTool({
367
+ name: 'get_orderbook',
368
+ arguments: params
369
+ });
370
+ }
371
+ async getEnhancedOHLCV(params) {
372
+ return this.callTool({
373
+ name: 'get_enhanced_ohlcv',
374
+ arguments: params
375
+ });
376
+ }
377
+ async discoverTokens(params) {
378
+ return this.callTool({
379
+ name: 'discover_tokens',
380
+ arguments: params
381
+ });
382
+ }
383
+ async getTradingIntensity(params) {
384
+ return this.callTool({
385
+ name: 'get_trading_intensity',
386
+ arguments: params
387
+ });
388
+ }
389
+ async resolveSymbol(params) {
390
+ return this.callTool({
391
+ name: 'resolve_symbol',
392
+ arguments: params
393
+ });
394
+ }
395
+ async getPerformanceMetrics(params) {
396
+ return this.callTool({
397
+ name: 'get_performance_metrics',
398
+ arguments: params
399
+ });
400
+ }
401
+ // =============================================================================
402
+ // RAG MCP Tools (Convenience Methods) - Knowledge & Decision Support
403
+ // =============================================================================
404
+ async searchKnowledgeBase(params) {
405
+ return this.callTool({
406
+ name: 'search_knowledge_base',
407
+ arguments: params
408
+ });
409
+ }
410
+ async retrieveContextualInformation(params) {
411
+ return this.callTool({
412
+ name: 'retrieve_contextual_information',
413
+ arguments: params
414
+ });
415
+ }
416
+ async getHistoricalDecisions(params) {
417
+ return this.callTool({
418
+ name: 'get_historical_decisions',
419
+ arguments: params
420
+ });
421
+ }
422
+ async enrichMarketContext(params) {
423
+ return this.callTool({
424
+ name: 'enrich_market_context',
425
+ arguments: params
426
+ });
427
+ }
428
+ async comprehensiveSearch(params) {
429
+ return this.callTool({
430
+ name: 'comprehensive_search',
431
+ arguments: params
432
+ });
433
+ }
434
+ async checkKnowledgeBaseStatus(params) {
435
+ return this.callTool({
436
+ name: 'check_knowledge_base_status',
437
+ arguments: params || {}
438
+ });
439
+ }
440
+ // =============================================================================
441
+ // APY Strategy MCP Tools (Convenience Methods) - DeFi Yield Optimization
442
+ // =============================================================================
443
+ async getApyHistory(params) {
444
+ return this.callTool({
445
+ name: 'getApyHistory',
446
+ arguments: params
447
+ });
448
+ }
449
+ async findYieldOpportunities(params) {
450
+ return this.callTool({
451
+ name: 'findYieldOpportunities',
452
+ arguments: params
453
+ });
454
+ }
455
+ async analyzeArbitrageOpportunities(params) {
456
+ return this.callTool({
457
+ name: 'analyzeArbitrageOpportunities',
458
+ arguments: params
459
+ });
460
+ }
461
+ async backtestStrategy(params) {
462
+ return this.callTool({
463
+ name: 'backtestStrategy',
464
+ arguments: params
465
+ });
466
+ }
467
+ async calculatePortfolioRisk(params) {
468
+ return this.callTool({
469
+ name: 'calculatePortfolioRisk',
470
+ arguments: params
471
+ });
472
+ }
473
+ async optimizeYieldAllocation(params) {
474
+ return this.callTool({
475
+ name: 'optimizeYieldAllocation',
476
+ arguments: params
477
+ });
478
+ }
479
+ async assessProtocolRisk(params) {
480
+ return this.callTool({
481
+ name: 'assessProtocolRisk',
482
+ arguments: params
483
+ });
484
+ }
485
+ async trackYieldPerformance(params) {
486
+ return this.callTool({
487
+ name: 'trackYieldPerformance',
488
+ arguments: params
489
+ });
490
+ }
491
+ }
492
+ exports.MCPClient = MCPClient;
493
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Hummingbot API Client
3
+ *
4
+ * Direct HTTP client for the official Hummingbot API (hummingbot/hummingbot-api)
5
+ * Uses Basic Auth and maps to real API endpoints
6
+ */
7
+ export interface HummingbotAPIConfig {
8
+ baseUrl: string;
9
+ username: string;
10
+ password: string;
11
+ timeout?: number;
12
+ }
13
+ export interface BotOrchestrationStatus {
14
+ status: string;
15
+ data: Record<string, any>;
16
+ }
17
+ export interface BotRunsStats {
18
+ total: number;
19
+ running: number;
20
+ stopped: number;
21
+ archived: number;
22
+ }
23
+ export interface Connector {
24
+ name: string;
25
+ type: 'spot' | 'perpetual';
26
+ }
27
+ export interface Account {
28
+ name: string;
29
+ credentials: string[];
30
+ }
31
+ export declare class HummingbotAPIClient {
32
+ private config;
33
+ private authHeader;
34
+ constructor(config: HummingbotAPIConfig);
35
+ private request;
36
+ getInfo(): Promise<{
37
+ name: string;
38
+ version: string;
39
+ status: string;
40
+ }>;
41
+ getAccounts(): Promise<string[]>;
42
+ addAccount(name: string): Promise<any>;
43
+ getAccountCredentials(accountName: string): Promise<string[]>;
44
+ addCredential(accountName: string, connectorName: string, credentials: Record<string, string>): Promise<any>;
45
+ getConnectors(): Promise<string[]>;
46
+ getConnectorConfigMap(connectorName: string): Promise<Record<string, any>>;
47
+ getConnectorOrderTypes(connectorName: string): Promise<string[]>;
48
+ getConnectorTradingRules(connectorName: string): Promise<any>;
49
+ getBotOrchestrationStatus(): Promise<BotOrchestrationStatus>;
50
+ getBotRuns(): Promise<any[]>;
51
+ getBotRunsStats(): Promise<BotRunsStats>;
52
+ startBot(config: {
53
+ bot_name: string;
54
+ controllers_config?: Record<string, any>[];
55
+ script?: string;
56
+ script_config?: Record<string, any>;
57
+ }): Promise<any>;
58
+ stopBot(botName: string): Promise<any>;
59
+ getBotHistory(botName: string): Promise<any>;
60
+ getBotStatus(botName: string): Promise<any>;
61
+ getControllers(): Promise<any[]>;
62
+ getControllerConfigs(): Promise<any[]>;
63
+ getControllerConfig(configName: string): Promise<any>;
64
+ getController(controllerType: string, controllerName: string): Promise<any>;
65
+ getControllerConfigTemplate(controllerType: string, controllerName: string): Promise<any>;
66
+ validateControllerConfig(controllerType: string, controllerName: string, config: any): Promise<any>;
67
+ runBacktest(config: {
68
+ controller_type: string;
69
+ controller_name: string;
70
+ controller_config: Record<string, any>;
71
+ start_time?: number;
72
+ end_time?: number;
73
+ backtesting_resolution?: string;
74
+ trade_cost?: number;
75
+ }): Promise<any>;
76
+ getMarketData(config: {
77
+ connector_name: string;
78
+ trading_pair: string;
79
+ }): Promise<any>;
80
+ getCandlesData(config: {
81
+ connector_name: string;
82
+ trading_pair: string;
83
+ interval?: string;
84
+ max_records?: number;
85
+ }): Promise<any>;
86
+ getActiveContainers(): Promise<any[]>;
87
+ getAvailableImages(): Promise<any[]>;
88
+ isDockerRunning(): Promise<boolean>;
89
+ getArchivedBots(): Promise<string[]>;
90
+ getArchivedBotPerformance(dbPath: string): Promise<any>;
91
+ getArchivedBotSummary(dbPath: string): Promise<any>;
92
+ getArchivedBotTrades(dbPath: string): Promise<any[]>;
93
+ getArchivedBotOrders(dbPath: string): Promise<any[]>;
94
+ }
95
+ /**
96
+ * Factory function to create a Hummingbot API client
97
+ */
98
+ export declare function createHummingbotAPIClient(config?: Partial<HummingbotAPIConfig>): HummingbotAPIClient;
99
+ //# sourceMappingURL=hummingbot-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hummingbot-api.d.ts","sourceRoot":"","sources":["../src/hummingbot-api.ts"],"names":[],"mappings":"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"}