@tunnelhub/mcp 1.0.4 → 1.0.5

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, 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,7 @@ 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
21
22
  - Localizar execuções por intervalo de tempo
22
23
  - Resumir uma execução completa
23
24
  - Consultar logs e traces de uma execução
@@ -231,6 +232,15 @@ Você pode pedir coisas como:
231
232
  - `Mostre o system 1234`
232
233
  - `Liste os pacotes do ambiente atual`
233
234
  - `Mostre o package abc`
235
+ - `Liste as APIs do API Gateway`
236
+ - `Mostre a API 123abc`
237
+ - `Liste os clients de autenticacao`
238
+ - `Mostre o client xyz`
239
+ - `Liste os usage plans`
240
+ - `Liste as API keys`
241
+ - `Liste os logs da API 123abc`
242
+ - `Mostre o log 9988 da API 123abc no timestamp 1710345600`
243
+ - `Liste os logs globais do API Gateway no dia 2026-03-13`
234
244
  - `Liste as tabelas de de/para do ambiente atual`
235
245
  - `Busque a tabela de de/para CFOP`
236
246
  - `Liste os itens da tabela de de/para 1234`
@@ -266,6 +276,19 @@ Você pode pedir coisas como:
266
276
  - `list_data_store_items_tunnelhub`
267
277
  - `get_data_store_item_tunnelhub`
268
278
 
279
+ ### API Gateway
280
+
281
+ - `list_api_gateways_tunnelhub`
282
+ - `get_api_gateway_tunnelhub`
283
+ - `list_api_keys_tunnelhub`
284
+ - `list_usage_plans_tunnelhub`
285
+ - `list_auth_clients_tunnelhub`
286
+ - `get_auth_client_tunnelhub`
287
+ - `list_auth_resource_servers_tunnelhub`
288
+ - `list_api_gateway_logs_tunnelhub`
289
+ - `get_api_gateway_log_tunnelhub`
290
+ - `list_all_api_gateway_logs_tunnelhub`
291
+
269
292
  ### Sistemas
270
293
 
271
294
  - `list_systems_tunnelhub`
@@ -317,8 +340,10 @@ Observações:
317
340
  ## ⚠️ Limitações atuais
318
341
 
319
342
  - O foco atual está em automações e monitoramento
343
+ - API Gateway está disponível em modo somente leitura
320
344
  - Sistemas e pacotes estão disponíveis em modo somente leitura
321
345
  - Tabelas de de/para estão disponíveis em modo somente leitura
346
+ - API keys e logs podem incluir dados sensíveis retornados pelo backend
322
347
  - Algumas APIs do backend têm comportamentos específicos de filtro e paginação
323
348
  - A listagem de execuções depende de intervalo de tempo obrigatório
324
349
 
@@ -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;AAepE,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;IAyBnB,SAAS,IAAI,SAAS;CAGvB;;AAID,wBAA2C"}
package/dist/server.js CHANGED
@@ -1,6 +1,7 @@
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';
@@ -40,6 +41,7 @@ export class TunnelHubMCPServer {
40
41
  registerTenantTools(this.server, context);
41
42
  registerPackageTools(this.server, context);
42
43
  registerSystemTools(this.server, context);
44
+ registerApiGatewayTools(this.server, context);
43
45
  registerDataStoreTools(this.server, context);
44
46
  registerAutomationTools(this.server, context);
45
47
  registerMonitoringTools(this.server, context);
@@ -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,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;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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"}