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/db/connection.js
CHANGED
|
@@ -1,28 +1,134 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* JDBC Connection Manager for IBM DB2i using node-jt400
|
|
3
|
+
*
|
|
4
|
+
* Supports both:
|
|
5
|
+
* - Global pool: For stdio transport (single user, env-based config)
|
|
6
|
+
* - Session pools: For HTTP transport (per-user, token-based config)
|
|
3
7
|
*/
|
|
4
8
|
import { pool } from 'node-jt400';
|
|
5
9
|
import { buildConnectionConfig } from '../config.js';
|
|
6
10
|
import { createChildLogger } from '../utils/logger.js';
|
|
7
11
|
const log = createChildLogger({ component: 'database' });
|
|
8
|
-
|
|
12
|
+
// Global pool for stdio transport (backwards compatible)
|
|
13
|
+
let globalPool = null;
|
|
14
|
+
// Session pools for HTTP transport (keyed by session/token ID)
|
|
15
|
+
const sessionPools = new Map();
|
|
9
16
|
/**
|
|
10
|
-
* Initialize the connection pool
|
|
17
|
+
* Initialize the global connection pool (for stdio transport)
|
|
18
|
+
*
|
|
19
|
+
* Safe to call multiple times - will skip if pool already exists.
|
|
11
20
|
*/
|
|
12
21
|
export function initializePool(config) {
|
|
13
|
-
|
|
22
|
+
if (globalPool) {
|
|
23
|
+
log.debug({ hostname: config.hostname }, 'Global pool already exists, skipping initialization');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
log.debug({ hostname: config.hostname, port: config.port }, 'Initializing global connection pool');
|
|
27
|
+
const connectionConfig = buildConnectionConfig(config);
|
|
28
|
+
globalPool = pool(connectionConfig);
|
|
29
|
+
log.info({ hostname: config.hostname }, 'Global connection pool created');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Initialize a session-specific connection pool (for HTTP transport)
|
|
33
|
+
*
|
|
34
|
+
* @param sessionId - Unique session identifier (typically the auth token)
|
|
35
|
+
* @param config - DB2i configuration for this session
|
|
36
|
+
*/
|
|
37
|
+
export function initializeSessionPool(sessionId, config) {
|
|
38
|
+
// Don't recreate if already exists
|
|
39
|
+
if (sessionPools.has(sessionId)) {
|
|
40
|
+
log.debug({ sessionId: sessionId.substring(0, 8) }, 'Session pool already exists');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
log.debug({ sessionId: sessionId.substring(0, 8), hostname: config.hostname }, 'Initializing session connection pool');
|
|
14
44
|
const connectionConfig = buildConnectionConfig(config);
|
|
15
|
-
|
|
16
|
-
|
|
45
|
+
const sessionPool = pool(connectionConfig);
|
|
46
|
+
sessionPools.set(sessionId, sessionPool);
|
|
47
|
+
log.info({ sessionId: sessionId.substring(0, 8), hostname: config.hostname, poolCount: sessionPools.size }, 'Session connection pool created');
|
|
17
48
|
}
|
|
18
49
|
/**
|
|
19
|
-
*
|
|
50
|
+
* Close a session-specific connection pool
|
|
51
|
+
*
|
|
52
|
+
* @param sessionId - The session identifier
|
|
53
|
+
* @returns Promise that resolves when the pool is closed
|
|
20
54
|
*/
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
|
|
55
|
+
export async function closeSessionPool(sessionId) {
|
|
56
|
+
const sessionPool = sessionPools.get(sessionId);
|
|
57
|
+
if (sessionPool) {
|
|
58
|
+
try {
|
|
59
|
+
await sessionPool.close();
|
|
60
|
+
sessionPools.delete(sessionId);
|
|
61
|
+
log.info({ sessionId: sessionId.substring(0, 8), poolCount: sessionPools.size }, 'Session connection pool closed');
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
// Still remove from map on error to avoid retry loops with broken pools
|
|
65
|
+
sessionPools.delete(sessionId);
|
|
66
|
+
log.warn({ err, sessionId: sessionId.substring(0, 8) }, 'Error closing session connection pool');
|
|
67
|
+
}
|
|
24
68
|
}
|
|
25
|
-
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Close all session connection pools (for shutdown)
|
|
72
|
+
*
|
|
73
|
+
* @returns Promise that resolves when all pools are closed
|
|
74
|
+
*/
|
|
75
|
+
export async function closeAllSessionPools() {
|
|
76
|
+
const poolCount = sessionPools.size;
|
|
77
|
+
if (poolCount === 0) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
log.info({ poolCount }, 'Closing all session connection pools');
|
|
81
|
+
const closePromises = Array.from(sessionPools.keys()).map(sessionId => closeSessionPool(sessionId));
|
|
82
|
+
await Promise.all(closePromises);
|
|
83
|
+
log.info('All session connection pools closed');
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Close the global connection pool (for shutdown)
|
|
87
|
+
*
|
|
88
|
+
* @returns Promise that resolves when the pool is closed
|
|
89
|
+
*/
|
|
90
|
+
export async function closeGlobalPool() {
|
|
91
|
+
if (globalPool) {
|
|
92
|
+
try {
|
|
93
|
+
await globalPool.close();
|
|
94
|
+
globalPool = null;
|
|
95
|
+
log.info('Global connection pool closed');
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
log.warn({ err }, 'Error closing global connection pool');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get the global connection pool instance (internal use only)
|
|
104
|
+
*/
|
|
105
|
+
function getGlobalPool() {
|
|
106
|
+
if (!globalPool) {
|
|
107
|
+
throw new Error('Global connection pool not initialized. Call initializePool first.');
|
|
108
|
+
}
|
|
109
|
+
return globalPool;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get a session-specific connection pool
|
|
113
|
+
*
|
|
114
|
+
* @param sessionId - The session identifier
|
|
115
|
+
* @returns The pool for the session, or throws if not found
|
|
116
|
+
*/
|
|
117
|
+
function getSessionPool(sessionId) {
|
|
118
|
+
const sessionPool = sessionPools.get(sessionId);
|
|
119
|
+
if (!sessionPool) {
|
|
120
|
+
throw new Error(`Session pool not found for session: ${sessionId.substring(0, 8)}...`);
|
|
121
|
+
}
|
|
122
|
+
return sessionPool;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get the appropriate pool - session pool if sessionId provided, otherwise global
|
|
126
|
+
*/
|
|
127
|
+
function getPool(sessionId) {
|
|
128
|
+
if (sessionId) {
|
|
129
|
+
return getSessionPool(sessionId);
|
|
130
|
+
}
|
|
131
|
+
return getGlobalPool();
|
|
26
132
|
}
|
|
27
133
|
/**
|
|
28
134
|
* Convert unknown params to Param type, filtering out undefined
|
|
@@ -45,11 +151,15 @@ function toParams(params) {
|
|
|
45
151
|
}
|
|
46
152
|
/**
|
|
47
153
|
* Execute a query and return results
|
|
154
|
+
*
|
|
155
|
+
* @param sql - SQL query to execute
|
|
156
|
+
* @param params - Query parameters
|
|
157
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
48
158
|
*/
|
|
49
|
-
export async function executeQuery(sql, params = []) {
|
|
50
|
-
const db = getPool();
|
|
159
|
+
export async function executeQuery(sql, params = [], sessionId) {
|
|
160
|
+
const db = getPool(sessionId);
|
|
51
161
|
try {
|
|
52
|
-
log.debug({ sql: sql.substring(0, 200), paramCount: params.length }, 'Executing query');
|
|
162
|
+
log.debug({ sql: sql.substring(0, 200), paramCount: params.length, sessionId: sessionId?.substring(0, 8) }, 'Executing query');
|
|
53
163
|
const typedParams = toParams(params);
|
|
54
164
|
const results = await db.query(sql, typedParams);
|
|
55
165
|
const rows = results;
|
|
@@ -63,11 +173,11 @@ export async function executeQuery(sql, params = []) {
|
|
|
63
173
|
}
|
|
64
174
|
}
|
|
65
175
|
/**
|
|
66
|
-
* Test the database connection
|
|
176
|
+
* Test the global database connection (for stdio transport)
|
|
67
177
|
*/
|
|
68
178
|
export async function testConnection() {
|
|
69
179
|
try {
|
|
70
|
-
log.debug('Testing database connection');
|
|
180
|
+
log.debug('Testing global database connection');
|
|
71
181
|
await executeQuery('SELECT 1 FROM SYSIBM.SYSDUMMY1');
|
|
72
182
|
log.debug('Connection test successful');
|
|
73
183
|
return true;
|
|
@@ -77,4 +187,33 @@ export async function testConnection() {
|
|
|
77
187
|
return false;
|
|
78
188
|
}
|
|
79
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Test a session-specific database connection (for HTTP transport)
|
|
192
|
+
*
|
|
193
|
+
* @param sessionId - The session identifier
|
|
194
|
+
*/
|
|
195
|
+
export async function testSessionConnection(sessionId) {
|
|
196
|
+
try {
|
|
197
|
+
log.debug({ sessionId: sessionId.substring(0, 8) }, 'Testing session database connection');
|
|
198
|
+
await executeQuery('SELECT 1 FROM SYSIBM.SYSDUMMY1', [], sessionId);
|
|
199
|
+
log.debug({ sessionId: sessionId.substring(0, 8) }, 'Session connection test successful');
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
log.warn({ err: error, sessionId: sessionId.substring(0, 8) }, 'Session connection test failed');
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Check if a session pool exists
|
|
209
|
+
*/
|
|
210
|
+
export function hasSessionPool(sessionId) {
|
|
211
|
+
return sessionPools.has(sessionId);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get count of active session pools
|
|
215
|
+
*/
|
|
216
|
+
export function getSessionPoolCount() {
|
|
217
|
+
return sessionPools.size;
|
|
218
|
+
}
|
|
80
219
|
//# sourceMappingURL=connection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
|
package/dist/db/queries.d.ts
CHANGED
|
@@ -32,23 +32,34 @@ export declare function isReadOnlyQuery(sql: string): boolean;
|
|
|
32
32
|
export declare function validateQuery(sql: string, config?: SecurityConfig): SecurityValidationResult;
|
|
33
33
|
/**
|
|
34
34
|
* List all schemas/libraries
|
|
35
|
+
*
|
|
36
|
+
* @param filter - Optional filter pattern
|
|
37
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
35
38
|
*/
|
|
36
|
-
export declare function listSchemas(filter?: string): Promise<Array<{
|
|
39
|
+
export declare function listSchemas(filter?: string, sessionId?: string): Promise<Array<{
|
|
37
40
|
schema_name: string;
|
|
38
41
|
schema_text: string | null;
|
|
39
42
|
}>>;
|
|
40
43
|
/**
|
|
41
44
|
* List tables in a schema
|
|
45
|
+
*
|
|
46
|
+
* @param schema - Schema name
|
|
47
|
+
* @param filter - Optional filter pattern
|
|
48
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
42
49
|
*/
|
|
43
|
-
export declare function listTables(schema: string, filter?: string): Promise<Array<{
|
|
50
|
+
export declare function listTables(schema: string, filter?: string, sessionId?: string): Promise<Array<{
|
|
44
51
|
table_name: string;
|
|
45
52
|
table_type: string;
|
|
46
53
|
table_text: string | null;
|
|
47
54
|
}>>;
|
|
48
55
|
/**
|
|
49
56
|
* Describe a table's columns
|
|
57
|
+
*
|
|
58
|
+
* @param schema - Schema name
|
|
59
|
+
* @param table - Table name
|
|
60
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
50
61
|
*/
|
|
51
|
-
export declare function describeTable(schema: string, table: string): Promise<Array<{
|
|
62
|
+
export declare function describeTable(schema: string, table: string, sessionId?: string): Promise<Array<{
|
|
52
63
|
column_name: string;
|
|
53
64
|
ordinal_position: number;
|
|
54
65
|
data_type: string;
|
|
@@ -65,8 +76,12 @@ export declare function describeTable(schema: string, table: string): Promise<Ar
|
|
|
65
76
|
*
|
|
66
77
|
* Note: This only returns SQL-defined views (CREATE VIEW).
|
|
67
78
|
* For legacy DDS logical files, query QSYS.QADBFDEP.
|
|
79
|
+
*
|
|
80
|
+
* @param schema - Schema name
|
|
81
|
+
* @param filter - Optional filter pattern
|
|
82
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
68
83
|
*/
|
|
69
|
-
export declare function listViews(schema: string, filter?: string): Promise<Array<{
|
|
84
|
+
export declare function listViews(schema: string, filter?: string, sessionId?: string): Promise<Array<{
|
|
70
85
|
view_name: string;
|
|
71
86
|
view_text: string | null;
|
|
72
87
|
}>>;
|
|
@@ -75,8 +90,12 @@ export declare function listViews(schema: string, filter?: string): Promise<Arra
|
|
|
75
90
|
*
|
|
76
91
|
* Note: This only returns SQL-defined indexes (CREATE INDEX).
|
|
77
92
|
* For legacy DDS logical files, query QSYS.QADBFDEP and QSYS.QADBKFLD.
|
|
93
|
+
*
|
|
94
|
+
* @param schema - Schema name
|
|
95
|
+
* @param table - Table name
|
|
96
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
78
97
|
*/
|
|
79
|
-
export declare function listIndexes(schema: string, table: string): Promise<Array<{
|
|
98
|
+
export declare function listIndexes(schema: string, table: string, sessionId?: string): Promise<Array<{
|
|
80
99
|
index_name: string;
|
|
81
100
|
index_schema: string;
|
|
82
101
|
is_unique: string;
|
|
@@ -84,8 +103,12 @@ export declare function listIndexes(schema: string, table: string): Promise<Arra
|
|
|
84
103
|
}>>;
|
|
85
104
|
/**
|
|
86
105
|
* Get table constraints (primary keys, foreign keys, unique constraints)
|
|
106
|
+
*
|
|
107
|
+
* @param schema - Schema name
|
|
108
|
+
* @param table - Table name
|
|
109
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
87
110
|
*/
|
|
88
|
-
export declare function getTableConstraints(schema: string, table: string): Promise<Array<{
|
|
111
|
+
export declare function getTableConstraints(schema: string, table: string, sessionId?: string): Promise<Array<{
|
|
89
112
|
constraint_name: string;
|
|
90
113
|
constraint_type: string;
|
|
91
114
|
column_name: string;
|
package/dist/db/queries.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,oBAAoB,EACpB,aAAa,IAAI,gBAAgB,EACjC,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACpB,MAAM,2CAA2C,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,KAAK,wBAAwB,EAAE,KAAK,cAAc,EAAE,CAAC;AAEtG;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAiBtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGlD;AAEH;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,wBAAwB,CAE5F;AAED
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
|
package/dist/db/queries.js
CHANGED
|
@@ -53,8 +53,11 @@ export function validateQuery(sql, config) {
|
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
55
|
* List all schemas/libraries
|
|
56
|
+
*
|
|
57
|
+
* @param filter - Optional filter pattern
|
|
58
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
56
59
|
*/
|
|
57
|
-
export async function listSchemas(filter) {
|
|
60
|
+
export async function listSchemas(filter, sessionId) {
|
|
58
61
|
const pattern = filterToLikePattern(filter);
|
|
59
62
|
const sql = `
|
|
60
63
|
SELECT
|
|
@@ -64,7 +67,7 @@ export async function listSchemas(filter) {
|
|
|
64
67
|
WHERE SCHEMA_NAME LIKE ?
|
|
65
68
|
ORDER BY SCHEMA_NAME
|
|
66
69
|
`;
|
|
67
|
-
const result = await executeQuery(sql, [pattern]);
|
|
70
|
+
const result = await executeQuery(sql, [pattern], sessionId);
|
|
68
71
|
return result.rows.map(row => ({
|
|
69
72
|
schema_name: String(row.SCHEMA_NAME || '').trim(),
|
|
70
73
|
schema_text: row.SCHEMA_TEXT ? String(row.SCHEMA_TEXT).trim() : null,
|
|
@@ -72,8 +75,12 @@ export async function listSchemas(filter) {
|
|
|
72
75
|
}
|
|
73
76
|
/**
|
|
74
77
|
* List tables in a schema
|
|
78
|
+
*
|
|
79
|
+
* @param schema - Schema name
|
|
80
|
+
* @param filter - Optional filter pattern
|
|
81
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
75
82
|
*/
|
|
76
|
-
export async function listTables(schema, filter) {
|
|
83
|
+
export async function listTables(schema, filter, sessionId) {
|
|
77
84
|
const pattern = filterToLikePattern(filter);
|
|
78
85
|
const sql = `
|
|
79
86
|
SELECT
|
|
@@ -85,7 +92,7 @@ export async function listTables(schema, filter) {
|
|
|
85
92
|
AND TABLE_NAME LIKE ?
|
|
86
93
|
ORDER BY TABLE_NAME
|
|
87
94
|
`;
|
|
88
|
-
const result = await executeQuery(sql, [schema.toUpperCase(), pattern]);
|
|
95
|
+
const result = await executeQuery(sql, [schema.toUpperCase(), pattern], sessionId);
|
|
89
96
|
return result.rows.map(row => ({
|
|
90
97
|
table_name: String(row.TABLE_NAME || '').trim(),
|
|
91
98
|
table_type: String(row.TABLE_TYPE || '').trim(),
|
|
@@ -94,8 +101,12 @@ export async function listTables(schema, filter) {
|
|
|
94
101
|
}
|
|
95
102
|
/**
|
|
96
103
|
* Describe a table's columns
|
|
104
|
+
*
|
|
105
|
+
* @param schema - Schema name
|
|
106
|
+
* @param table - Table name
|
|
107
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
97
108
|
*/
|
|
98
|
-
export async function describeTable(schema, table) {
|
|
109
|
+
export async function describeTable(schema, table, sessionId) {
|
|
99
110
|
const sql = `
|
|
100
111
|
SELECT
|
|
101
112
|
COLUMN_NAME,
|
|
@@ -113,7 +124,7 @@ export async function describeTable(schema, table) {
|
|
|
113
124
|
AND TABLE_NAME = ?
|
|
114
125
|
ORDER BY ORDINAL_POSITION
|
|
115
126
|
`;
|
|
116
|
-
const result = await executeQuery(sql, [schema.toUpperCase(), table.toUpperCase()]);
|
|
127
|
+
const result = await executeQuery(sql, [schema.toUpperCase(), table.toUpperCase()], sessionId);
|
|
117
128
|
return result.rows.map(row => ({
|
|
118
129
|
column_name: String(row.COLUMN_NAME || '').trim(),
|
|
119
130
|
ordinal_position: Number(row.ORDINAL_POSITION),
|
|
@@ -132,8 +143,12 @@ export async function describeTable(schema, table) {
|
|
|
132
143
|
*
|
|
133
144
|
* Note: This only returns SQL-defined views (CREATE VIEW).
|
|
134
145
|
* For legacy DDS logical files, query QSYS.QADBFDEP.
|
|
146
|
+
*
|
|
147
|
+
* @param schema - Schema name
|
|
148
|
+
* @param filter - Optional filter pattern
|
|
149
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
135
150
|
*/
|
|
136
|
-
export async function listViews(schema, filter) {
|
|
151
|
+
export async function listViews(schema, filter, sessionId) {
|
|
137
152
|
const pattern = filterToLikePattern(filter);
|
|
138
153
|
const sql = `
|
|
139
154
|
SELECT
|
|
@@ -145,7 +160,7 @@ export async function listViews(schema, filter) {
|
|
|
145
160
|
AND TABLE_NAME LIKE ?
|
|
146
161
|
ORDER BY TABLE_NAME
|
|
147
162
|
`;
|
|
148
|
-
const result = await executeQuery(sql, [schema.toUpperCase(), pattern]);
|
|
163
|
+
const result = await executeQuery(sql, [schema.toUpperCase(), pattern], sessionId);
|
|
149
164
|
return result.rows.map(row => ({
|
|
150
165
|
view_name: String(row.VIEW_NAME || '').trim(),
|
|
151
166
|
view_text: row.VIEW_TEXT ? String(row.VIEW_TEXT).trim() : null,
|
|
@@ -156,8 +171,12 @@ export async function listViews(schema, filter) {
|
|
|
156
171
|
*
|
|
157
172
|
* Note: This only returns SQL-defined indexes (CREATE INDEX).
|
|
158
173
|
* For legacy DDS logical files, query QSYS.QADBFDEP and QSYS.QADBKFLD.
|
|
174
|
+
*
|
|
175
|
+
* @param schema - Schema name
|
|
176
|
+
* @param table - Table name
|
|
177
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
159
178
|
*/
|
|
160
|
-
export async function listIndexes(schema, table) {
|
|
179
|
+
export async function listIndexes(schema, table, sessionId) {
|
|
161
180
|
const sql = `
|
|
162
181
|
SELECT
|
|
163
182
|
I.INDEX_NAME,
|
|
@@ -176,7 +195,7 @@ export async function listIndexes(schema, table) {
|
|
|
176
195
|
GROUP BY I.INDEX_NAME, I.INDEX_SCHEMA, I.IS_UNIQUE
|
|
177
196
|
ORDER BY I.INDEX_NAME
|
|
178
197
|
`;
|
|
179
|
-
const result = await executeQuery(sql, [schema.toUpperCase(), table.toUpperCase()]);
|
|
198
|
+
const result = await executeQuery(sql, [schema.toUpperCase(), table.toUpperCase()], sessionId);
|
|
180
199
|
return result.rows.map(row => ({
|
|
181
200
|
index_name: String(row.INDEX_NAME || '').trim(),
|
|
182
201
|
index_schema: String(row.INDEX_SCHEMA || '').trim(),
|
|
@@ -186,8 +205,12 @@ export async function listIndexes(schema, table) {
|
|
|
186
205
|
}
|
|
187
206
|
/**
|
|
188
207
|
* Get table constraints (primary keys, foreign keys, unique constraints)
|
|
208
|
+
*
|
|
209
|
+
* @param schema - Schema name
|
|
210
|
+
* @param table - Table name
|
|
211
|
+
* @param sessionId - Optional session ID for HTTP transport
|
|
189
212
|
*/
|
|
190
|
-
export async function getTableConstraints(schema, table) {
|
|
213
|
+
export async function getTableConstraints(schema, table, sessionId) {
|
|
191
214
|
const sql = `
|
|
192
215
|
SELECT
|
|
193
216
|
CST.CONSTRAINT_NAME,
|
|
@@ -212,7 +235,7 @@ export async function getTableConstraints(schema, table) {
|
|
|
212
235
|
AND CST.TABLE_NAME = ?
|
|
213
236
|
ORDER BY CST.CONSTRAINT_NAME, KC.ORDINAL_POSITION
|
|
214
237
|
`;
|
|
215
|
-
const result = await executeQuery(sql, [schema.toUpperCase(), table.toUpperCase()]);
|
|
238
|
+
const result = await executeQuery(sql, [schema.toUpperCase(), table.toUpperCase()], sessionId);
|
|
216
239
|
return result.rows.map(row => ({
|
|
217
240
|
constraint_name: String(row.CONSTRAINT_NAME || '').trim(),
|
|
218
241
|
constraint_type: String(row.CONSTRAINT_TYPE || '').trim(),
|
package/dist/db/queries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,aAAa,IAAI,gBAAgB,GAGlC,MAAM,2CAA2C,CAAC;AAEnD,wDAAwD;AACxD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAsD,CAAC;AAEtG;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA0B;IAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,GAAG,CAAC;IACb,CAAC;IAED,0CAA0C;IAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC;IAED,6CAA6C;IAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,CAAC;IAED,2BAA2B;IAC3B,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,MAAM,GAAG,oBAAoB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,OAAO,CAAC;AACtB,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,MAAuB;IAChE,OAAO,oBAAoB,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
*
|
|
5
5
|
* A Model Context Protocol server for querying and inspecting
|
|
6
6
|
* IBM DB2 for i (DB2i) databases using the JT400 JDBC driver.
|
|
7
|
+
*
|
|
8
|
+
* Supports two transport modes:
|
|
9
|
+
* - stdio (default): For CLI/IDE integration
|
|
10
|
+
* - http: For web/agent integration with token authentication
|
|
11
|
+
*
|
|
12
|
+
* Transport mode is controlled by MCP_TRANSPORT environment variable:
|
|
13
|
+
* - 'stdio' (default): Only stdio transport
|
|
14
|
+
* - 'http': Only HTTP transport
|
|
15
|
+
* - 'both': Both transports simultaneously
|
|
7
16
|
*/
|
|
8
17
|
export {};
|
|
9
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG"}
|