@tunnelhub/mcp 1.0.4 → 1.0.6

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
@@ -1,6 +1,6 @@
1
1
  # TunnelHub MCP
2
2
 
3
- Conecte clientes MCP ao TunnelHub para investigar automações, execuções, logs, traces, sistemas e pacotes usando o mesmo fluxo de autenticação do frontend.
3
+ Conecte clientes MCP ao TunnelHub para investigar automações, execuções, logs, traces, estatísticas de uso, API Gateway, sistemas e pacotes usando o mesmo fluxo de autenticação do frontend.
4
4
 
5
5
  Este MCP é especialmente útil para:
6
6
 
@@ -18,6 +18,8 @@ Este MCP é especialmente útil para:
18
18
  - Consultar sistemas do ambiente atual
19
19
  - Consultar pacotes do ambiente atual
20
20
  - Consultar tabelas de de/para do ambiente atual
21
+ - Consultar APIs, clients, usage plans, API keys e logs do API Gateway
22
+ - Consultar estatísticas de uso e consumo da empresa atual
21
23
  - Localizar execuções por intervalo de tempo
22
24
  - Resumir uma execução completa
23
25
  - Consultar logs e traces de uma execução
@@ -231,6 +233,19 @@ Você pode pedir coisas como:
231
233
  - `Mostre o system 1234`
232
234
  - `Liste os pacotes do ambiente atual`
233
235
  - `Mostre o package abc`
236
+ - `Liste as APIs do API Gateway`
237
+ - `Mostre a API 123abc`
238
+ - `Liste os clients de autenticacao`
239
+ - `Mostre o client xyz`
240
+ - `Liste os usage plans`
241
+ - `Liste as API keys`
242
+ - `Liste os logs da API 123abc`
243
+ - `Mostre o log 9988 da API 123abc no timestamp 1710345600`
244
+ - `Liste os logs globais do API Gateway no dia 2026-03-13`
245
+ - `Mostre as estatísticas da home deste mês`
246
+ - `Mostre as estatísticas da home de 2026-03-01 até 2026-03-31`
247
+ - `Mostre o consumo de execuções do tenant neste mês`
248
+ - `Mostre recargas e consumo do tenant para 2026-03-01`
234
249
  - `Liste as tabelas de de/para do ambiente atual`
235
250
  - `Busque a tabela de de/para CFOP`
236
251
  - `Liste os itens da tabela de de/para 1234`
@@ -266,6 +281,19 @@ Você pode pedir coisas como:
266
281
  - `list_data_store_items_tunnelhub`
267
282
  - `get_data_store_item_tunnelhub`
268
283
 
284
+ ### API Gateway
285
+
286
+ - `list_api_gateways_tunnelhub`
287
+ - `get_api_gateway_tunnelhub`
288
+ - `list_api_keys_tunnelhub`
289
+ - `list_usage_plans_tunnelhub`
290
+ - `list_auth_clients_tunnelhub`
291
+ - `get_auth_client_tunnelhub`
292
+ - `list_auth_resource_servers_tunnelhub`
293
+ - `list_api_gateway_logs_tunnelhub`
294
+ - `get_api_gateway_log_tunnelhub`
295
+ - `list_all_api_gateway_logs_tunnelhub`
296
+
269
297
  ### Sistemas
270
298
 
271
299
  - `list_systems_tunnelhub`
@@ -293,6 +321,11 @@ Você pode pedir coisas como:
293
321
  - `get_execution_traces_tunnelhub`
294
322
  - `get_execution_logs_tunnelhub`
295
323
 
324
+ ### Estatísticas
325
+
326
+ - `get_home_statistics_tunnelhub`
327
+ - `get_tenant_execution_statistics_tunnelhub`
328
+
296
329
  ## ⚙️ Variáveis de ambiente
297
330
 
298
331
  Variáveis suportadas:
@@ -317,10 +350,14 @@ Observações:
317
350
  ## ⚠️ Limitações atuais
318
351
 
319
352
  - O foco atual está em automações e monitoramento
353
+ - API Gateway está disponível em modo somente leitura
320
354
  - Sistemas e pacotes estão disponíveis em modo somente leitura
321
355
  - Tabelas de de/para estão disponíveis em modo somente leitura
356
+ - API keys e logs podem incluir dados sensíveis retornados pelo backend
322
357
  - Algumas APIs do backend têm comportamentos específicos de filtro e paginação
323
358
  - A listagem de execuções depende de intervalo de tempo obrigatório
359
+ - Estatísticas de consumo do tenant são somente leitura
360
+ - Em `get_tenant_execution_statistics_tunnelhub`, o backend resolve o período principalmente por `startDate`
324
361
 
325
362
  ## 🛠️ Desenvolvimento local
326
363
 
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAcpE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEhD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;;IAYtC,OAAO,CAAC,WAAW;IAwBnB,SAAS,IAAI,SAAS;CAGvB;;AAID,wBAA2C"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBpE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEhD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;;IAYtC,OAAO,CAAC,WAAW;IA0BnB,SAAS,IAAI,SAAS;CAGvB;;AAID,wBAA2C"}
package/dist/server.js CHANGED
@@ -1,11 +1,13 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import packageJson from '../package.json' with { type: 'json' };
3
3
  import { SessionManager } from './auth/session-manager.js';
4
+ import { registerApiGatewayTools } from './tools/api-gateway/index.js';
4
5
  import { registerDataStoreTools } from './tools/data-stores/index.js';
5
6
  import { registerAutomationTools } from './tools/automations/index.js';
6
7
  import { registerMonitoringTools } from './tools/monitoring/index.js';
7
8
  import { registerPackageTools } from './tools/packages/index.js';
8
9
  import { registerSessionTools } from './tools/session/index.js';
10
+ import { registerStatisticsTools } from './tools/statistics/index.js';
9
11
  import { registerSystemTools } from './tools/systems/index.js';
10
12
  import { registerTenantTools } from './tools/tenants/index.js';
11
13
  import { ApiClient } from './utils/api-client.js';
@@ -40,9 +42,11 @@ export class TunnelHubMCPServer {
40
42
  registerTenantTools(this.server, context);
41
43
  registerPackageTools(this.server, context);
42
44
  registerSystemTools(this.server, context);
45
+ registerApiGatewayTools(this.server, context);
43
46
  registerDataStoreTools(this.server, context);
44
47
  registerAutomationTools(this.server, context);
45
48
  registerMonitoringTools(this.server, context);
49
+ registerStatisticsTools(this.server, context);
46
50
  }
47
51
  getServer() {
48
52
  return this.server;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,kBAAkB;IACZ,MAAM,CAAY;IAElB,cAAc,CAAiB;IAE/B,SAAS,CAAY;IAEtC;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC;YAC1B,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,MAAM,OAAO,GAAgB;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;gBAClE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;oBAC1B,MAAM,IAAI,QAAQ,CAAC,+CAA+C,EAAE,eAAe,CAAC,CAAC;gBACvF,CAAC;gBAED,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC/C,OAAO,WAAW,CAAC,OAAO,CAAC;YAC7B,CAAC;SACF,CAAC;QAEF,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7C,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAED,MAAM,eAAe,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEjD,eAAe,eAAe,CAAC,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,kBAAkB;IACZ,MAAM,CAAY;IAElB,cAAc,CAAiB;IAE/B,SAAS,CAAY;IAEtC;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC;YAC1B,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,MAAM,OAAO,GAAgB;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;gBAClE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;oBAC1B,MAAM,IAAI,QAAQ,CAAC,+CAA+C,EAAE,eAAe,CAAC,CAAC;gBACvF,CAAC;gBAED,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC/C,OAAO,WAAW,CAAC,OAAO,CAAC;YAC7B,CAAC;SACF,CAAC;QAEF,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7C,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAED,MAAM,eAAe,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEjD,eAAe,eAAe,CAAC,SAAS,EAAE,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function registerApiGatewayTools(_server: McpServer, _context: unknown): void;
2
+ export declare function registerApiGatewayTools(server: McpServer, context: unknown): void;
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/api-gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAOnF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/api-gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsgBzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAajF"}
@@ -1,9 +1,451 @@
1
- export function registerApiGatewayTools(_server, _context) {
2
- // TODO: Implement API gateway tools
3
- // - list_api_gateways
4
- // - list_api_clients
5
- // - create_api_key
6
- // - revoke_api_key
7
- // - view_api_logs
1
+ import LZString from 'lz-string';
2
+ import { ApiGatewayAllLogsParamsSchema, ApiGatewayIdParamsSchema, ApiGatewayListParamsSchema, ApiGatewayLogIdParamsSchema, ApiGatewayLogListParamsSchema, ApiKeyListParamsSchema, AuthClientIdParamsSchema, AuthClientListParamsSchema, AuthResourceServerListParamsSchema, UsagePlanListParamsSchema, } from '../../types/mcp.js';
3
+ import { errorResult, requireSession, textResult } from '../../utils/error-handler.js';
4
+ function extractItems(response) {
5
+ if (Array.isArray(response)) {
6
+ return response;
7
+ }
8
+ if (response && typeof response === 'object' && Array.isArray(response.data)) {
9
+ return response.data || [];
10
+ }
11
+ return [];
12
+ }
13
+ function summarizeApiGateway(item) {
14
+ return [
15
+ `API Gateway ID: ${item.id}`,
16
+ `Name: ${item.name || 'n/a'}`,
17
+ `Type: ${item.type || 'n/a'}`,
18
+ `Package: ${item.packageId || 'n/a'}`,
19
+ `Description: ${item.description || 'n/a'}`,
20
+ `Repository URL: ${item.repositoryUrl || 'n/a'}`,
21
+ `Stages: ${item.stages?.length ?? 0}`,
22
+ `Usage Plans: ${item.usagePlans?.length ?? 0}`,
23
+ `Created At: ${item.createdAt || 'n/a'}`,
24
+ `Updated At: ${item.updatedAt || 'n/a'}`,
25
+ ].join('\n');
26
+ }
27
+ function summarizeApiGatewayList(items) {
28
+ if (items.length === 0) {
29
+ return 'No API Gateways found.';
30
+ }
31
+ return items
32
+ .slice(0, 15)
33
+ .map((item) => `${item.name || item.id} | ${item.type || 'n/a'} | package=${item.packageId || 'n/a'} | ${item.id}`)
34
+ .join('\n');
35
+ }
36
+ function summarizeApiKeyList(items) {
37
+ if (items.length === 0) {
38
+ return 'No API keys found.';
39
+ }
40
+ return items
41
+ .slice(0, 15)
42
+ .map((item) => `${item.name || item.id || 'n/a'} | enabled=${String(item.enabled ?? 'n/a')} | ${item.id || 'n/a'}`)
43
+ .join('\n');
44
+ }
45
+ function summarizeUsagePlanList(items) {
46
+ if (items.length === 0) {
47
+ return 'No usage plans found.';
48
+ }
49
+ return items
50
+ .slice(0, 15)
51
+ .map((item) => `${item.name || item.id || 'n/a'} | ${item.description || 'n/a'} | keys=${item.apiKeys?.length ?? 0}`)
52
+ .join('\n');
53
+ }
54
+ function summarizeAuthClient(item) {
55
+ return [
56
+ `Client ID: ${item.clientId}`,
57
+ `Description: ${item.description || 'n/a'}`,
58
+ `Status: ${item.status || 'n/a'}`,
59
+ `Allowed Scopes: ${item.allowedScopes?.join(', ') || 'n/a'}`,
60
+ `Access Token Validity: ${String(item.accessTokenValidity ?? 'n/a')}`,
61
+ `ID Token Validity: ${String(item.idTokenValidity ?? 'n/a')}`,
62
+ `Refresh Token Validity: ${String(item.refreshTokenValidity ?? 'n/a')}`,
63
+ `Issue Refresh Token: ${String(item.issueRefreshToken ?? 'n/a')}`,
64
+ `Created At: ${item.createdAt || 'n/a'}`,
65
+ ].join('\n');
66
+ }
67
+ function summarizeAuthClientList(items) {
68
+ if (items.length === 0) {
69
+ return 'No auth clients found.';
70
+ }
71
+ return items
72
+ .slice(0, 15)
73
+ .map((item) => `${item.description || item.clientId} | ${item.status || 'n/a'} | ${item.clientId}`)
74
+ .join('\n');
75
+ }
76
+ function summarizeAuthResourceServerList(items) {
77
+ if (items.length === 0) {
78
+ return 'No auth resource servers found.';
79
+ }
80
+ return items
81
+ .slice(0, 15)
82
+ .map((item) => `${item.Name || item.Identifier || 'n/a'} | scopes=${item.Scopes?.length ?? 0} | ${item.Identifier || 'n/a'}`)
83
+ .join('\n');
84
+ }
85
+ function summarizeApiGatewayLog(item) {
86
+ return [
87
+ `Log ID: ${item.uuid}`,
88
+ `API Gateway ID: ${item.apiId}`,
89
+ `Status: ${item.status || 'n/a'}`,
90
+ `HTTP Method: ${item.httpMethod || 'n/a'}`,
91
+ `Path: ${item.path || 'n/a'}`,
92
+ `Resource: ${item.resource || 'n/a'}`,
93
+ `Source IP: ${item.sourceIp || 'n/a'}`,
94
+ `Created At: ${item.createdAt || 'n/a'}`,
95
+ `Start Time: ${item.startTime || 'n/a'}`,
96
+ `End Time: ${item.endTime || 'n/a'}`,
97
+ `HTTP Status Code: ${String(item.rawResponse?.statusCode ?? 'n/a')}`,
98
+ ].join('\n');
99
+ }
100
+ function summarizeApiGatewayLogList(items) {
101
+ if (items.length === 0) {
102
+ return 'No API Gateway logs found.';
103
+ }
104
+ return items
105
+ .slice(0, 15)
106
+ .map((item) => `${item.uuid} | ${item.status || 'n/a'} | ${item.httpMethod || 'n/a'} ${item.path || item.resource || 'n/a'} | ${item.createdAt || 'n/a'}`)
107
+ .join('\n');
108
+ }
109
+ function decodeCompressedPayload(payload) {
110
+ if (!payload) {
111
+ return undefined;
112
+ }
113
+ const decompressed = LZString.decompressFromUTF16(payload);
114
+ if (!decompressed || decompressed === 'null') {
115
+ return undefined;
116
+ }
117
+ try {
118
+ return JSON.parse(JSON.parse(decompressed));
119
+ }
120
+ catch {
121
+ try {
122
+ return JSON.parse(decompressed);
123
+ }
124
+ catch {
125
+ return decompressed;
126
+ }
127
+ }
128
+ }
129
+ function stringifyPayload(payload) {
130
+ if (payload === undefined) {
131
+ return 'n/a';
132
+ }
133
+ if (typeof payload === 'string') {
134
+ return payload;
135
+ }
136
+ try {
137
+ return JSON.stringify(payload, null, 2);
138
+ }
139
+ catch {
140
+ return String(payload);
141
+ }
142
+ }
143
+ const listApiGatewaysTool = {
144
+ name: 'list_api_gateways_tunnelhub',
145
+ schema: {
146
+ title: 'List API Gateways',
147
+ description: 'List API Gateway definitions from api-gateway-service using the current environment.',
148
+ inputSchema: ApiGatewayListParamsSchema,
149
+ annotations: {
150
+ readOnlyHint: true,
151
+ destructiveHint: false,
152
+ idempotentHint: true,
153
+ openWorldHint: false,
154
+ },
155
+ },
156
+ handler: async (params, context) => {
157
+ try {
158
+ const session = await requireSession(context);
159
+ context.apiClient.setSession(session);
160
+ const apiClient = context.apiClient;
161
+ const response = await apiClient.listApiGateways(params);
162
+ const items = extractItems(response);
163
+ return textResult(`API Gateways:\n\n${summarizeApiGatewayList(items)}\n\nReturned: ${items.length}`, {
164
+ apiGateways: items,
165
+ rawResponse: response,
166
+ });
167
+ }
168
+ catch (error) {
169
+ return errorResult(error);
170
+ }
171
+ },
172
+ };
173
+ const getApiGatewayTool = {
174
+ name: 'get_api_gateway_tunnelhub',
175
+ schema: {
176
+ title: 'Get API Gateway',
177
+ description: 'Get read-only details for one API Gateway by id.',
178
+ inputSchema: ApiGatewayIdParamsSchema,
179
+ annotations: {
180
+ readOnlyHint: true,
181
+ destructiveHint: false,
182
+ idempotentHint: true,
183
+ openWorldHint: false,
184
+ },
185
+ },
186
+ handler: async (params, context) => {
187
+ try {
188
+ const session = await requireSession(context);
189
+ context.apiClient.setSession(session);
190
+ const apiClient = context.apiClient;
191
+ const item = await apiClient.getApiGateway(params.apiGatewayId);
192
+ return textResult(`API Gateway details:\n\n${summarizeApiGateway(item)}`, item);
193
+ }
194
+ catch (error) {
195
+ return errorResult(error);
196
+ }
197
+ },
198
+ };
199
+ const listApiKeysTool = {
200
+ name: 'list_api_keys_tunnelhub',
201
+ schema: {
202
+ title: 'List API Keys',
203
+ description: 'List API keys from api-gateway-service using the current environment. Sensitive values may be included by backend.',
204
+ inputSchema: ApiKeyListParamsSchema,
205
+ annotations: {
206
+ readOnlyHint: true,
207
+ destructiveHint: false,
208
+ idempotentHint: true,
209
+ openWorldHint: false,
210
+ },
211
+ },
212
+ handler: async (params, context) => {
213
+ try {
214
+ const session = await requireSession(context);
215
+ context.apiClient.setSession(session);
216
+ const apiClient = context.apiClient;
217
+ const response = await apiClient.listApiKeys(params);
218
+ const items = extractItems(response);
219
+ return textResult(`API Keys:\n\n${summarizeApiKeyList(items)}\n\nReturned: ${items.length}\nNote: backend responses may include actual API key values.`, {
220
+ apiKeys: items,
221
+ rawResponse: response,
222
+ });
223
+ }
224
+ catch (error) {
225
+ return errorResult(error);
226
+ }
227
+ },
228
+ };
229
+ const listUsagePlansTool = {
230
+ name: 'list_usage_plans_tunnelhub',
231
+ schema: {
232
+ title: 'List Usage Plans',
233
+ description: 'List API Gateway usage plans from api-gateway-service using the current environment.',
234
+ inputSchema: UsagePlanListParamsSchema,
235
+ annotations: {
236
+ readOnlyHint: true,
237
+ destructiveHint: false,
238
+ idempotentHint: true,
239
+ openWorldHint: false,
240
+ },
241
+ },
242
+ handler: async (params, context) => {
243
+ try {
244
+ const session = await requireSession(context);
245
+ context.apiClient.setSession(session);
246
+ const apiClient = context.apiClient;
247
+ const response = await apiClient.listUsagePlans(params);
248
+ const items = extractItems(response);
249
+ return textResult(`Usage Plans:\n\n${summarizeUsagePlanList(items)}\n\nReturned: ${items.length}`, {
250
+ usagePlans: items,
251
+ rawResponse: response,
252
+ });
253
+ }
254
+ catch (error) {
255
+ return errorResult(error);
256
+ }
257
+ },
258
+ };
259
+ const listAuthClientsTool = {
260
+ name: 'list_auth_clients_tunnelhub',
261
+ schema: {
262
+ title: 'List Auth Clients',
263
+ description: 'List API auth clients from api-gateway-service using the current environment.',
264
+ inputSchema: AuthClientListParamsSchema,
265
+ annotations: {
266
+ readOnlyHint: true,
267
+ destructiveHint: false,
268
+ idempotentHint: true,
269
+ openWorldHint: false,
270
+ },
271
+ },
272
+ handler: async (params, context) => {
273
+ try {
274
+ const session = await requireSession(context);
275
+ context.apiClient.setSession(session);
276
+ const apiClient = context.apiClient;
277
+ const response = await apiClient.listAuthClients(params);
278
+ const items = extractItems(response);
279
+ return textResult(`Auth clients:\n\n${summarizeAuthClientList(items)}\n\nReturned: ${items.length}`, {
280
+ authClients: items,
281
+ rawResponse: response,
282
+ });
283
+ }
284
+ catch (error) {
285
+ return errorResult(error);
286
+ }
287
+ },
288
+ };
289
+ const getAuthClientTool = {
290
+ name: 'get_auth_client_tunnelhub',
291
+ schema: {
292
+ title: 'Get Auth Client',
293
+ description: 'Get read-only details for one API auth client by client id.',
294
+ inputSchema: AuthClientIdParamsSchema,
295
+ annotations: {
296
+ readOnlyHint: true,
297
+ destructiveHint: false,
298
+ idempotentHint: true,
299
+ openWorldHint: false,
300
+ },
301
+ },
302
+ handler: async (params, context) => {
303
+ try {
304
+ const session = await requireSession(context);
305
+ context.apiClient.setSession(session);
306
+ const apiClient = context.apiClient;
307
+ const item = await apiClient.getAuthClient(params.clientId);
308
+ return textResult(`Auth client details:\n\n${summarizeAuthClient(item)}`, item);
309
+ }
310
+ catch (error) {
311
+ return errorResult(error);
312
+ }
313
+ },
314
+ };
315
+ const listAuthResourceServersTool = {
316
+ name: 'list_auth_resource_servers_tunnelhub',
317
+ schema: {
318
+ title: 'List Auth Resource Servers',
319
+ description: 'List Cognito resource servers exposed by api-gateway-service.',
320
+ inputSchema: AuthResourceServerListParamsSchema,
321
+ annotations: {
322
+ readOnlyHint: true,
323
+ destructiveHint: false,
324
+ idempotentHint: true,
325
+ openWorldHint: false,
326
+ },
327
+ },
328
+ handler: async (params, context) => {
329
+ try {
330
+ const session = await requireSession(context);
331
+ context.apiClient.setSession(session);
332
+ const apiClient = context.apiClient;
333
+ const response = await apiClient.listAuthResourceServers(params);
334
+ const items = extractItems(response);
335
+ return textResult(`Auth resource servers:\n\n${summarizeAuthResourceServerList(items)}\n\nReturned: ${items.length}`, {
336
+ resourceServers: items,
337
+ rawResponse: response,
338
+ });
339
+ }
340
+ catch (error) {
341
+ return errorResult(error);
342
+ }
343
+ },
344
+ };
345
+ const listApiGatewayLogsTool = {
346
+ name: 'list_api_gateway_logs_tunnelhub',
347
+ schema: {
348
+ title: 'List API Gateway Logs',
349
+ description: 'List logs for one API Gateway by id.',
350
+ inputSchema: ApiGatewayLogListParamsSchema,
351
+ annotations: {
352
+ readOnlyHint: true,
353
+ destructiveHint: false,
354
+ idempotentHint: true,
355
+ openWorldHint: false,
356
+ },
357
+ },
358
+ handler: async (params, context) => {
359
+ try {
360
+ const session = await requireSession(context);
361
+ context.apiClient.setSession(session);
362
+ const apiClient = context.apiClient;
363
+ const { apiGatewayId, ...listParams } = params;
364
+ const response = await apiClient.listApiGatewayLogs(apiGatewayId, listParams);
365
+ const items = extractItems(response);
366
+ return textResult(`API Gateway logs for ${apiGatewayId}:\n\n${summarizeApiGatewayLogList(items)}\n\nReturned: ${items.length}`, {
367
+ logs: items,
368
+ rawResponse: response,
369
+ });
370
+ }
371
+ catch (error) {
372
+ return errorResult(error);
373
+ }
374
+ },
375
+ };
376
+ const getApiGatewayLogTool = {
377
+ name: 'get_api_gateway_log_tunnelhub',
378
+ schema: {
379
+ title: 'Get API Gateway Log',
380
+ description: 'Get one API Gateway log entry and decode compressed request and response payloads when possible.',
381
+ inputSchema: ApiGatewayLogIdParamsSchema,
382
+ annotations: {
383
+ readOnlyHint: true,
384
+ destructiveHint: false,
385
+ idempotentHint: true,
386
+ openWorldHint: false,
387
+ },
388
+ },
389
+ handler: async (params, context) => {
390
+ try {
391
+ const session = await requireSession(context);
392
+ context.apiClient.setSession(session);
393
+ const apiClient = context.apiClient;
394
+ const item = await apiClient.getApiGatewayLog(params.apiGatewayId, params.timestamp, params.logId);
395
+ const decodedRequestPayload = decodeCompressedPayload(item.requestPayload);
396
+ const decodedResponsePayload = decodeCompressedPayload(item.responsePayload);
397
+ return textResult(`API Gateway log details:\n\n${summarizeApiGatewayLog(item)}\n\nDecoded request payload:\n${stringifyPayload(decodedRequestPayload)}\n\nDecoded response payload:\n${stringifyPayload(decodedResponsePayload)}`, {
398
+ ...item,
399
+ decodedRequestPayload,
400
+ decodedResponsePayload,
401
+ });
402
+ }
403
+ catch (error) {
404
+ return errorResult(error);
405
+ }
406
+ },
407
+ };
408
+ const listAllApiGatewayLogsTool = {
409
+ name: 'list_all_api_gateway_logs_tunnelhub',
410
+ schema: {
411
+ title: 'List All API Gateway Logs',
412
+ description: 'List API Gateway logs across the current environment for a required date range.',
413
+ inputSchema: ApiGatewayAllLogsParamsSchema,
414
+ annotations: {
415
+ readOnlyHint: true,
416
+ destructiveHint: false,
417
+ idempotentHint: true,
418
+ openWorldHint: false,
419
+ },
420
+ },
421
+ handler: async (params, context) => {
422
+ try {
423
+ const session = await requireSession(context);
424
+ context.apiClient.setSession(session);
425
+ const apiClient = context.apiClient;
426
+ const response = await apiClient.listAllApiGatewayLogs(params);
427
+ const items = extractItems(response);
428
+ return textResult(`API Gateway logs:\n\n${summarizeApiGatewayLogList(items)}\n\nReturned: ${items.length}`, {
429
+ logs: items,
430
+ rawResponse: response,
431
+ });
432
+ }
433
+ catch (error) {
434
+ return errorResult(error);
435
+ }
436
+ },
437
+ };
438
+ export function registerApiGatewayTools(server, context) {
439
+ const toolContext = context;
440
+ server.registerTool(listApiGatewaysTool.name, listApiGatewaysTool.schema, (params) => listApiGatewaysTool.handler(params, toolContext));
441
+ server.registerTool(getApiGatewayTool.name, getApiGatewayTool.schema, (params) => getApiGatewayTool.handler(params, toolContext));
442
+ server.registerTool(listApiKeysTool.name, listApiKeysTool.schema, (params) => listApiKeysTool.handler(params, toolContext));
443
+ server.registerTool(listUsagePlansTool.name, listUsagePlansTool.schema, (params) => listUsagePlansTool.handler(params, toolContext));
444
+ server.registerTool(listAuthClientsTool.name, listAuthClientsTool.schema, (params) => listAuthClientsTool.handler(params, toolContext));
445
+ server.registerTool(getAuthClientTool.name, getAuthClientTool.schema, (params) => getAuthClientTool.handler(params, toolContext));
446
+ server.registerTool(listAuthResourceServersTool.name, listAuthResourceServersTool.schema, (params) => listAuthResourceServersTool.handler(params, toolContext));
447
+ server.registerTool(listApiGatewayLogsTool.name, listApiGatewayLogsTool.schema, (params) => listApiGatewayLogsTool.handler(params, toolContext));
448
+ server.registerTool(getApiGatewayLogTool.name, getApiGatewayLogTool.schema, (params) => getApiGatewayLogTool.handler(params, toolContext));
449
+ server.registerTool(listAllApiGatewayLogsTool.name, listAllApiGatewayLogsTool.schema, (params) => listAllApiGatewayLogsTool.handler(params, toolContext));
8
450
  }
9
451
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/api-gateway/index.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAAC,OAAkB,EAAE,QAAiB;IAC3E,oCAAoC;IACpC,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;AACpB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/api-gateway/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerStatisticsTools(server: McpServer, context: unknown): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/statistics/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8NzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAQjF"}