mcp-server-db2i 1.2.1 → 1.3.1
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 +90 -308
- package/dist/auth/authMiddleware.d.ts +66 -0
- package/dist/auth/authMiddleware.d.ts.map +1 -0
- package/dist/auth/authMiddleware.js +217 -0
- package/dist/auth/authMiddleware.js.map +1 -0
- package/dist/auth/index.d.ts +9 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +10 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/tokenManager.d.ts +114 -0
- package/dist/auth/tokenManager.d.ts.map +1 -0
- package/dist/auth/tokenManager.js +255 -0
- package/dist/auth/tokenManager.js.map +1 -0
- package/dist/auth/types.d.ts +103 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +10 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/config.d.ts +128 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +185 -0
- package/dist/config.js.map +1 -1
- package/dist/db/connection.d.ts +53 -3
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +154 -15
- package/dist/db/connection.js.map +1 -1
- package/dist/db/queries.d.ts +29 -6
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +35 -12
- package/dist/db/queries.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +97 -42
- package/dist/index.js.map +1 -1
- package/dist/openapi.d.ts +49 -0
- package/dist/openapi.d.ts.map +1 -0
- package/dist/openapi.js +634 -0
- package/dist/openapi.js.map +1 -0
- package/dist/server.d.ts +26 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +68 -22
- package/dist/server.js.map +1 -1
- package/dist/tools/metadata.d.ts +10 -0
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +10 -6
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/query.d.ts +4 -0
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +5 -3
- package/dist/tools/query.js.map +1 -1
- package/dist/transports/http.d.ts +26 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +552 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/index.d.ts +8 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +8 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/transports/sessionManager.d.ts +106 -0
- package/dist/transports/sessionManager.d.ts.map +1 -0
- package/dist/transports/sessionManager.js +260 -0
- package/dist/transports/sessionManager.js.map +1 -0
- package/package.json +9 -5
package/dist/openapi.js
ADDED
|
@@ -0,0 +1,634 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAPI 3.1 Specification for IBM DB2i MCP Server HTTP Transport
|
|
3
|
+
*
|
|
4
|
+
* Provides machine-readable API documentation for:
|
|
5
|
+
* - Authentication endpoint (/auth)
|
|
6
|
+
* - Health check endpoint (/health)
|
|
7
|
+
* - MCP protocol endpoints (/mcp)
|
|
8
|
+
*
|
|
9
|
+
* Can be imported into Postman, Insomnia, or other API clients.
|
|
10
|
+
*/
|
|
11
|
+
import { SERVER_NAME, SERVER_VERSION } from './server.js';
|
|
12
|
+
/**
|
|
13
|
+
* Generate the OpenAPI specification
|
|
14
|
+
*
|
|
15
|
+
* @param baseUrl - Optional base URL for the server (defaults to relative paths)
|
|
16
|
+
* @returns OpenAPI 3.1 specification object
|
|
17
|
+
*/
|
|
18
|
+
export function getOpenApiSpec(baseUrl) {
|
|
19
|
+
return {
|
|
20
|
+
openapi: '3.1.0',
|
|
21
|
+
info: {
|
|
22
|
+
title: SERVER_NAME,
|
|
23
|
+
version: SERVER_VERSION,
|
|
24
|
+
description: 'IBM DB2 for i MCP Server HTTP API. Provides MCP protocol access for querying and inspecting DB2i databases.\n\n' +
|
|
25
|
+
'## Authentication Modes\n\n' +
|
|
26
|
+
'The server supports three authentication modes (configured via `MCP_AUTH_MODE`):\n\n' +
|
|
27
|
+
'- **required** (default): Full `/auth` flow with per-user DB credentials. Most secure.\n' +
|
|
28
|
+
'- **token**: Pre-shared static token via `MCP_AUTH_TOKEN`. Uses environment DB credentials.\n' +
|
|
29
|
+
'- **none**: No authentication required. Uses environment DB credentials. For trusted networks only.\n\n' +
|
|
30
|
+
'Check `/health` endpoint to see the current auth mode.',
|
|
31
|
+
license: {
|
|
32
|
+
name: 'MIT',
|
|
33
|
+
url: 'https://opensource.org/licenses/MIT',
|
|
34
|
+
},
|
|
35
|
+
contact: {
|
|
36
|
+
url: 'https://github.com/Strom-Capital/mcp-server-db2i',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
servers: baseUrl
|
|
40
|
+
? [{ url: baseUrl, description: 'MCP Server' }]
|
|
41
|
+
: [{ url: '/', description: 'Current server' }],
|
|
42
|
+
tags: [
|
|
43
|
+
{ name: 'auth', description: 'Authentication endpoints' },
|
|
44
|
+
{ name: 'health', description: 'Health check endpoints' },
|
|
45
|
+
{ name: 'mcp', description: 'MCP protocol endpoints' },
|
|
46
|
+
],
|
|
47
|
+
paths: {
|
|
48
|
+
'/health': {
|
|
49
|
+
get: {
|
|
50
|
+
tags: ['health'],
|
|
51
|
+
summary: 'Health check',
|
|
52
|
+
description: 'Returns server health status and session statistics. No authentication required.',
|
|
53
|
+
operationId: 'healthCheck',
|
|
54
|
+
responses: {
|
|
55
|
+
'200': {
|
|
56
|
+
description: 'Server is healthy',
|
|
57
|
+
content: {
|
|
58
|
+
'application/json': {
|
|
59
|
+
schema: { $ref: '#/components/schemas/HealthResponse' },
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
'/auth': {
|
|
67
|
+
post: {
|
|
68
|
+
tags: ['auth'],
|
|
69
|
+
summary: 'Authenticate and get token',
|
|
70
|
+
description: 'Exchange IBM i credentials for a Bearer token. The token is used for subsequent MCP requests. Rate limited to prevent brute force attacks.\n\n' +
|
|
71
|
+
'**Note:** This endpoint is only active when `MCP_AUTH_MODE=required`. In `token` or `none` modes, this endpoint returns 404.',
|
|
72
|
+
operationId: 'authenticate',
|
|
73
|
+
requestBody: {
|
|
74
|
+
required: true,
|
|
75
|
+
content: {
|
|
76
|
+
'application/json': {
|
|
77
|
+
schema: { $ref: '#/components/schemas/AuthRequest' },
|
|
78
|
+
example: {
|
|
79
|
+
username: 'MYUSER',
|
|
80
|
+
password: 'mypassword',
|
|
81
|
+
host: 'ibmi.example.com',
|
|
82
|
+
schema: 'MYLIB',
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
responses: {
|
|
88
|
+
'201': {
|
|
89
|
+
description: 'Authentication successful',
|
|
90
|
+
content: {
|
|
91
|
+
'application/json': {
|
|
92
|
+
schema: { $ref: '#/components/schemas/AuthResponse' },
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
'400': {
|
|
97
|
+
description: 'Invalid request',
|
|
98
|
+
content: {
|
|
99
|
+
'application/json': {
|
|
100
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
101
|
+
example: {
|
|
102
|
+
error: 'invalid_request',
|
|
103
|
+
error_description: 'username is required and must be a non-empty string',
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
'401': {
|
|
109
|
+
description: 'Authentication failed',
|
|
110
|
+
content: {
|
|
111
|
+
'application/json': {
|
|
112
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
113
|
+
example: {
|
|
114
|
+
error: 'invalid_credentials',
|
|
115
|
+
error_description: 'Authentication failed: unable to connect to database',
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
'404': {
|
|
121
|
+
description: 'Endpoint not available (auth mode is not "required")',
|
|
122
|
+
content: {
|
|
123
|
+
'application/json': {
|
|
124
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
125
|
+
example: {
|
|
126
|
+
error: 'not_found',
|
|
127
|
+
error_description: 'Authentication is disabled. Access /mcp directly.',
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
'429': {
|
|
133
|
+
description: 'Rate limit exceeded',
|
|
134
|
+
content: {
|
|
135
|
+
'application/json': {
|
|
136
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
137
|
+
example: {
|
|
138
|
+
error: 'rate_limit_exceeded',
|
|
139
|
+
error_description: 'Too many authentication attempts. Please try again later.',
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
'503': {
|
|
145
|
+
description: 'Service unavailable',
|
|
146
|
+
content: {
|
|
147
|
+
'application/json': {
|
|
148
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
149
|
+
example: {
|
|
150
|
+
error: 'service_unavailable',
|
|
151
|
+
error_description: 'Maximum concurrent sessions reached. Please try again later.',
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
'/mcp': {
|
|
160
|
+
post: {
|
|
161
|
+
tags: ['mcp'],
|
|
162
|
+
summary: 'MCP JSON-RPC request',
|
|
163
|
+
description: 'Send MCP JSON-RPC 2.0 requests.\n\n' +
|
|
164
|
+
'**Stateful Mode Flow:**\n' +
|
|
165
|
+
'1. Send `initialize` request WITHOUT `Mcp-Session-Id` header\n' +
|
|
166
|
+
'2. Get `mcp-session-id` from response headers\n' +
|
|
167
|
+
'3. Include `Mcp-Session-Id` header in all subsequent requests\n\n' +
|
|
168
|
+
'**Authentication:** Required in `required` and `token` modes. Not required in `none` mode. Check `/health` for current mode.\n\n' +
|
|
169
|
+
'**Important:** The `Accept` header must include both `application/json` and `text/event-stream`.',
|
|
170
|
+
operationId: 'mcpRequest',
|
|
171
|
+
security: [{ bearerAuth: [] }, {}],
|
|
172
|
+
parameters: [
|
|
173
|
+
{
|
|
174
|
+
name: 'Accept',
|
|
175
|
+
in: 'header',
|
|
176
|
+
description: 'Must accept both application/json and text/event-stream (required by MCP protocol)',
|
|
177
|
+
required: true,
|
|
178
|
+
schema: { type: 'string', default: 'application/json, text/event-stream' },
|
|
179
|
+
example: 'application/json, text/event-stream',
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
name: 'Mcp-Session-Id',
|
|
183
|
+
in: 'header',
|
|
184
|
+
description: 'MCP session ID. Do NOT include for `initialize` requests - the server returns a new session ID in the response headers. Required for all subsequent requests in stateful mode.',
|
|
185
|
+
required: false,
|
|
186
|
+
schema: { type: 'string' },
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
requestBody: {
|
|
190
|
+
required: true,
|
|
191
|
+
content: {
|
|
192
|
+
'application/json': {
|
|
193
|
+
schema: { $ref: '#/components/schemas/JsonRpcRequest' },
|
|
194
|
+
examples: {
|
|
195
|
+
initialize: {
|
|
196
|
+
summary: 'Initialize session',
|
|
197
|
+
value: {
|
|
198
|
+
jsonrpc: '2.0',
|
|
199
|
+
method: 'initialize',
|
|
200
|
+
params: {
|
|
201
|
+
protocolVersion: '2024-11-05',
|
|
202
|
+
capabilities: {},
|
|
203
|
+
clientInfo: { name: 'my-client', version: '1.0.0' },
|
|
204
|
+
},
|
|
205
|
+
id: 1,
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
listTools: {
|
|
209
|
+
summary: 'List available tools',
|
|
210
|
+
value: {
|
|
211
|
+
jsonrpc: '2.0',
|
|
212
|
+
method: 'tools/list',
|
|
213
|
+
params: {},
|
|
214
|
+
id: 2,
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
callTool: {
|
|
218
|
+
summary: 'Call a tool',
|
|
219
|
+
value: {
|
|
220
|
+
jsonrpc: '2.0',
|
|
221
|
+
method: 'tools/call',
|
|
222
|
+
params: {
|
|
223
|
+
name: 'list_schemas',
|
|
224
|
+
arguments: { filter: 'QSYS*' },
|
|
225
|
+
},
|
|
226
|
+
id: 3,
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
responses: {
|
|
234
|
+
'200': {
|
|
235
|
+
description: 'MCP response',
|
|
236
|
+
headers: {
|
|
237
|
+
'Mcp-Session-Id': {
|
|
238
|
+
description: 'Session ID (returned on initialize)',
|
|
239
|
+
schema: { type: 'string' },
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
content: {
|
|
243
|
+
'application/json': {
|
|
244
|
+
schema: { $ref: '#/components/schemas/JsonRpcResponse' },
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
'400': {
|
|
249
|
+
description: 'Invalid request',
|
|
250
|
+
content: {
|
|
251
|
+
'application/json': {
|
|
252
|
+
schema: { $ref: '#/components/schemas/JsonRpcError' },
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
'401': {
|
|
257
|
+
description: 'Unauthorized',
|
|
258
|
+
content: {
|
|
259
|
+
'application/json': {
|
|
260
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
'404': {
|
|
265
|
+
description: 'Session not found',
|
|
266
|
+
content: {
|
|
267
|
+
'application/json': {
|
|
268
|
+
schema: { $ref: '#/components/schemas/JsonRpcError' },
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
},
|
|
274
|
+
get: {
|
|
275
|
+
tags: ['mcp'],
|
|
276
|
+
summary: 'MCP SSE stream',
|
|
277
|
+
description: 'Open Server-Sent Events stream for receiving MCP notifications. Only available in stateful session mode.\n\n' +
|
|
278
|
+
'**Authentication:** Required in `required` and `token` modes. Not required in `none` mode.\n\n' +
|
|
279
|
+
'**Important:** The `Accept` header must include both `application/json` and `text/event-stream`.',
|
|
280
|
+
operationId: 'mcpStream',
|
|
281
|
+
security: [{ bearerAuth: [] }, {}],
|
|
282
|
+
parameters: [
|
|
283
|
+
{
|
|
284
|
+
name: 'Accept',
|
|
285
|
+
in: 'header',
|
|
286
|
+
description: 'Must accept both application/json and text/event-stream (required by MCP protocol)',
|
|
287
|
+
required: true,
|
|
288
|
+
schema: { type: 'string', default: 'application/json, text/event-stream' },
|
|
289
|
+
example: 'application/json, text/event-stream',
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
name: 'Mcp-Session-Id',
|
|
293
|
+
in: 'header',
|
|
294
|
+
description: 'MCP session ID (required)',
|
|
295
|
+
required: true,
|
|
296
|
+
schema: { type: 'string' },
|
|
297
|
+
},
|
|
298
|
+
],
|
|
299
|
+
responses: {
|
|
300
|
+
'200': {
|
|
301
|
+
description: 'SSE stream opened',
|
|
302
|
+
content: {
|
|
303
|
+
'text/event-stream': {
|
|
304
|
+
schema: { type: 'string' },
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
'400': {
|
|
309
|
+
description: 'Session ID required',
|
|
310
|
+
content: {
|
|
311
|
+
'application/json': {
|
|
312
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
313
|
+
},
|
|
314
|
+
},
|
|
315
|
+
},
|
|
316
|
+
'401': {
|
|
317
|
+
description: 'Unauthorized',
|
|
318
|
+
content: {
|
|
319
|
+
'application/json': {
|
|
320
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
},
|
|
324
|
+
'404': {
|
|
325
|
+
description: 'Session not found',
|
|
326
|
+
content: {
|
|
327
|
+
'application/json': {
|
|
328
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
329
|
+
},
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
'405': {
|
|
333
|
+
description: 'Method not allowed (stateless mode)',
|
|
334
|
+
content: {
|
|
335
|
+
'application/json': {
|
|
336
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
337
|
+
},
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
},
|
|
341
|
+
},
|
|
342
|
+
delete: {
|
|
343
|
+
tags: ['mcp'],
|
|
344
|
+
summary: 'Close MCP session',
|
|
345
|
+
description: 'Close an MCP session and release associated resources.\n\n' +
|
|
346
|
+
'**Authentication:** Required in `required` and `token` modes. Not required in `none` mode.',
|
|
347
|
+
operationId: 'mcpClose',
|
|
348
|
+
security: [{ bearerAuth: [] }, {}],
|
|
349
|
+
parameters: [
|
|
350
|
+
{
|
|
351
|
+
name: 'Mcp-Session-Id',
|
|
352
|
+
in: 'header',
|
|
353
|
+
description: 'MCP session ID to close',
|
|
354
|
+
required: true,
|
|
355
|
+
schema: { type: 'string' },
|
|
356
|
+
},
|
|
357
|
+
],
|
|
358
|
+
responses: {
|
|
359
|
+
'200': {
|
|
360
|
+
description: 'Session closed',
|
|
361
|
+
content: {
|
|
362
|
+
'application/json': {
|
|
363
|
+
schema: {
|
|
364
|
+
type: 'object',
|
|
365
|
+
properties: {
|
|
366
|
+
status: { type: 'string', example: 'session_closed' },
|
|
367
|
+
sessionId: { type: 'string' },
|
|
368
|
+
},
|
|
369
|
+
},
|
|
370
|
+
},
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
'400': {
|
|
374
|
+
description: 'Session ID required',
|
|
375
|
+
content: {
|
|
376
|
+
'application/json': {
|
|
377
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
378
|
+
},
|
|
379
|
+
},
|
|
380
|
+
},
|
|
381
|
+
'401': {
|
|
382
|
+
description: 'Unauthorized',
|
|
383
|
+
content: {
|
|
384
|
+
'application/json': {
|
|
385
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
},
|
|
389
|
+
'404': {
|
|
390
|
+
description: 'Session not found',
|
|
391
|
+
content: {
|
|
392
|
+
'application/json': {
|
|
393
|
+
schema: { $ref: '#/components/schemas/AuthErrorResponse' },
|
|
394
|
+
},
|
|
395
|
+
},
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
},
|
|
400
|
+
},
|
|
401
|
+
components: {
|
|
402
|
+
securitySchemes: {
|
|
403
|
+
bearerAuth: {
|
|
404
|
+
type: 'http',
|
|
405
|
+
scheme: 'bearer',
|
|
406
|
+
description: 'Bearer token obtained from POST /auth',
|
|
407
|
+
},
|
|
408
|
+
},
|
|
409
|
+
schemas: {
|
|
410
|
+
AuthRequest: {
|
|
411
|
+
type: 'object',
|
|
412
|
+
required: ['username', 'password'],
|
|
413
|
+
properties: {
|
|
414
|
+
username: {
|
|
415
|
+
type: 'string',
|
|
416
|
+
description: 'IBM i username',
|
|
417
|
+
example: 'MYUSER',
|
|
418
|
+
},
|
|
419
|
+
password: {
|
|
420
|
+
type: 'string',
|
|
421
|
+
format: 'password',
|
|
422
|
+
description: 'IBM i password',
|
|
423
|
+
},
|
|
424
|
+
host: {
|
|
425
|
+
type: 'string',
|
|
426
|
+
description: 'IBM i hostname (falls back to DB2I_HOSTNAME env var)',
|
|
427
|
+
example: 'ibmi.example.com',
|
|
428
|
+
},
|
|
429
|
+
port: {
|
|
430
|
+
type: 'integer',
|
|
431
|
+
minimum: 1,
|
|
432
|
+
maximum: 65535,
|
|
433
|
+
description: 'Connection port (falls back to DB2I_PORT, default: 446)',
|
|
434
|
+
example: 446,
|
|
435
|
+
},
|
|
436
|
+
database: {
|
|
437
|
+
type: 'string',
|
|
438
|
+
description: 'Database name (falls back to DB2I_DATABASE, default: *LOCAL)',
|
|
439
|
+
example: '*LOCAL',
|
|
440
|
+
},
|
|
441
|
+
schema: {
|
|
442
|
+
type: 'string',
|
|
443
|
+
description: 'Default schema (falls back to DB2I_SCHEMA)',
|
|
444
|
+
example: 'MYLIB',
|
|
445
|
+
},
|
|
446
|
+
duration: {
|
|
447
|
+
type: 'integer',
|
|
448
|
+
minimum: 1,
|
|
449
|
+
maximum: 86400,
|
|
450
|
+
description: 'Token lifetime in seconds (default: 3600, max: 86400)',
|
|
451
|
+
example: 3600,
|
|
452
|
+
},
|
|
453
|
+
},
|
|
454
|
+
},
|
|
455
|
+
AuthResponse: {
|
|
456
|
+
type: 'object',
|
|
457
|
+
required: ['access_token', 'token_type', 'expires_in', 'expires_at'],
|
|
458
|
+
properties: {
|
|
459
|
+
access_token: {
|
|
460
|
+
type: 'string',
|
|
461
|
+
description: 'Bearer token for subsequent requests',
|
|
462
|
+
},
|
|
463
|
+
token_type: {
|
|
464
|
+
type: 'string',
|
|
465
|
+
enum: ['Bearer'],
|
|
466
|
+
description: 'Token type (always "Bearer")',
|
|
467
|
+
},
|
|
468
|
+
expires_in: {
|
|
469
|
+
type: 'integer',
|
|
470
|
+
description: 'Token lifetime in seconds',
|
|
471
|
+
example: 3600,
|
|
472
|
+
},
|
|
473
|
+
expires_at: {
|
|
474
|
+
type: 'string',
|
|
475
|
+
format: 'date-time',
|
|
476
|
+
description: 'ISO 8601 timestamp of when the token expires',
|
|
477
|
+
},
|
|
478
|
+
},
|
|
479
|
+
},
|
|
480
|
+
AuthErrorResponse: {
|
|
481
|
+
type: 'object',
|
|
482
|
+
required: ['error'],
|
|
483
|
+
properties: {
|
|
484
|
+
error: {
|
|
485
|
+
type: 'string',
|
|
486
|
+
description: 'Error code',
|
|
487
|
+
example: 'invalid_request',
|
|
488
|
+
},
|
|
489
|
+
error_description: {
|
|
490
|
+
type: 'string',
|
|
491
|
+
description: 'Human-readable error description',
|
|
492
|
+
},
|
|
493
|
+
},
|
|
494
|
+
},
|
|
495
|
+
HealthResponse: {
|
|
496
|
+
type: 'object',
|
|
497
|
+
required: ['status', 'timestamp', 'server', 'config', 'sessions'],
|
|
498
|
+
properties: {
|
|
499
|
+
status: {
|
|
500
|
+
type: 'string',
|
|
501
|
+
enum: ['ok'],
|
|
502
|
+
description: 'Server status',
|
|
503
|
+
},
|
|
504
|
+
timestamp: {
|
|
505
|
+
type: 'string',
|
|
506
|
+
format: 'date-time',
|
|
507
|
+
description: 'Current server time',
|
|
508
|
+
},
|
|
509
|
+
server: {
|
|
510
|
+
type: 'object',
|
|
511
|
+
properties: {
|
|
512
|
+
name: { type: 'string', description: 'Server name' },
|
|
513
|
+
version: { type: 'string', description: 'Server version' },
|
|
514
|
+
},
|
|
515
|
+
},
|
|
516
|
+
config: {
|
|
517
|
+
type: 'object',
|
|
518
|
+
description: 'Server configuration',
|
|
519
|
+
properties: {
|
|
520
|
+
authMode: {
|
|
521
|
+
type: 'string',
|
|
522
|
+
enum: ['required', 'token', 'none'],
|
|
523
|
+
description: 'Authentication mode',
|
|
524
|
+
},
|
|
525
|
+
sessionMode: {
|
|
526
|
+
type: 'string',
|
|
527
|
+
enum: ['stateful', 'stateless'],
|
|
528
|
+
description: 'Session mode',
|
|
529
|
+
},
|
|
530
|
+
tlsEnabled: {
|
|
531
|
+
type: 'boolean',
|
|
532
|
+
description: 'Whether TLS is enabled',
|
|
533
|
+
},
|
|
534
|
+
},
|
|
535
|
+
},
|
|
536
|
+
sessions: {
|
|
537
|
+
type: 'object',
|
|
538
|
+
properties: {
|
|
539
|
+
tokens: {
|
|
540
|
+
type: 'object',
|
|
541
|
+
description: 'Token session statistics (only in required auth mode)',
|
|
542
|
+
},
|
|
543
|
+
mcp: {
|
|
544
|
+
type: 'object',
|
|
545
|
+
description: 'MCP session statistics',
|
|
546
|
+
},
|
|
547
|
+
},
|
|
548
|
+
},
|
|
549
|
+
},
|
|
550
|
+
},
|
|
551
|
+
JsonRpcRequest: {
|
|
552
|
+
type: 'object',
|
|
553
|
+
required: ['jsonrpc', 'method', 'id'],
|
|
554
|
+
properties: {
|
|
555
|
+
jsonrpc: {
|
|
556
|
+
type: 'string',
|
|
557
|
+
enum: ['2.0'],
|
|
558
|
+
description: 'JSON-RPC version',
|
|
559
|
+
},
|
|
560
|
+
method: {
|
|
561
|
+
type: 'string',
|
|
562
|
+
description: 'MCP method name',
|
|
563
|
+
examples: ['initialize', 'tools/list', 'tools/call'],
|
|
564
|
+
},
|
|
565
|
+
params: {
|
|
566
|
+
type: 'object',
|
|
567
|
+
description: 'Method parameters',
|
|
568
|
+
},
|
|
569
|
+
id: {
|
|
570
|
+
oneOf: [{ type: 'string' }, { type: 'integer' }],
|
|
571
|
+
description: 'Request ID',
|
|
572
|
+
},
|
|
573
|
+
},
|
|
574
|
+
},
|
|
575
|
+
JsonRpcResponse: {
|
|
576
|
+
type: 'object',
|
|
577
|
+
required: ['jsonrpc', 'id'],
|
|
578
|
+
properties: {
|
|
579
|
+
jsonrpc: {
|
|
580
|
+
type: 'string',
|
|
581
|
+
enum: ['2.0'],
|
|
582
|
+
description: 'JSON-RPC version',
|
|
583
|
+
},
|
|
584
|
+
result: {
|
|
585
|
+
description: 'Response result (present on success)',
|
|
586
|
+
},
|
|
587
|
+
error: {
|
|
588
|
+
$ref: '#/components/schemas/JsonRpcErrorObject',
|
|
589
|
+
description: 'Error object (present on failure)',
|
|
590
|
+
},
|
|
591
|
+
id: {
|
|
592
|
+
oneOf: [{ type: 'string' }, { type: 'integer' }, { type: 'null' }],
|
|
593
|
+
description: 'Request ID',
|
|
594
|
+
},
|
|
595
|
+
},
|
|
596
|
+
},
|
|
597
|
+
JsonRpcError: {
|
|
598
|
+
type: 'object',
|
|
599
|
+
required: ['jsonrpc', 'error', 'id'],
|
|
600
|
+
properties: {
|
|
601
|
+
jsonrpc: {
|
|
602
|
+
type: 'string',
|
|
603
|
+
enum: ['2.0'],
|
|
604
|
+
},
|
|
605
|
+
error: {
|
|
606
|
+
$ref: '#/components/schemas/JsonRpcErrorObject',
|
|
607
|
+
},
|
|
608
|
+
id: {
|
|
609
|
+
oneOf: [{ type: 'string' }, { type: 'integer' }, { type: 'null' }],
|
|
610
|
+
},
|
|
611
|
+
},
|
|
612
|
+
},
|
|
613
|
+
JsonRpcErrorObject: {
|
|
614
|
+
type: 'object',
|
|
615
|
+
required: ['code', 'message'],
|
|
616
|
+
properties: {
|
|
617
|
+
code: {
|
|
618
|
+
type: 'integer',
|
|
619
|
+
description: 'Error code',
|
|
620
|
+
},
|
|
621
|
+
message: {
|
|
622
|
+
type: 'string',
|
|
623
|
+
description: 'Error message',
|
|
624
|
+
},
|
|
625
|
+
data: {
|
|
626
|
+
description: 'Additional error data',
|
|
627
|
+
},
|
|
628
|
+
},
|
|
629
|
+
},
|
|
630
|
+
},
|
|
631
|
+
},
|
|
632
|
+
};
|
|
633
|
+
}
|
|
634
|
+
//# sourceMappingURL=openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
|