@ibm/ibmi-mcp-server 0.3.2 → 0.4.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 +36 -24
- package/dist/cli/commands/columns.d.ts +7 -0
- package/dist/cli/commands/columns.d.ts.map +1 -0
- package/dist/cli/commands/columns.js +29 -0
- package/dist/cli/commands/columns.js.map +1 -0
- package/dist/cli/commands/completion.d.ts +10 -0
- package/dist/cli/commands/completion.d.ts.map +1 -0
- package/dist/cli/commands/completion.js +225 -0
- package/dist/cli/commands/completion.js.map +1 -0
- package/dist/cli/commands/related.d.ts +7 -0
- package/dist/cli/commands/related.d.ts.map +1 -0
- package/dist/cli/commands/related.js +32 -0
- package/dist/cli/commands/related.js.map +1 -0
- package/dist/cli/commands/schemas.d.ts +7 -0
- package/dist/cli/commands/schemas.d.ts.map +1 -0
- package/dist/cli/commands/schemas.js +49 -0
- package/dist/cli/commands/schemas.js.map +1 -0
- package/dist/cli/commands/sql.d.ts +8 -0
- package/dist/cli/commands/sql.d.ts.map +1 -0
- package/dist/cli/commands/sql.js +106 -0
- package/dist/cli/commands/sql.js.map +1 -0
- package/dist/cli/commands/system.d.ts +11 -0
- package/dist/cli/commands/system.d.ts.map +1 -0
- package/dist/cli/commands/system.js +263 -0
- package/dist/cli/commands/system.js.map +1 -0
- package/dist/cli/commands/tables.d.ts +7 -0
- package/dist/cli/commands/tables.d.ts.map +1 -0
- package/dist/cli/commands/tables.js +48 -0
- package/dist/cli/commands/tables.js.map +1 -0
- package/dist/cli/commands/tool.d.ts +18 -0
- package/dist/cli/commands/tool.d.ts.map +1 -0
- package/dist/cli/commands/tool.js +194 -0
- package/dist/cli/commands/tool.js.map +1 -0
- package/dist/cli/commands/tools-list.d.ts +20 -0
- package/dist/cli/commands/tools-list.d.ts.map +1 -0
- package/dist/cli/commands/tools-list.js +209 -0
- package/dist/cli/commands/tools-list.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +7 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +77 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/config/credentials.d.ts +21 -0
- package/dist/cli/config/credentials.d.ts.map +1 -0
- package/dist/cli/config/credentials.js +96 -0
- package/dist/cli/config/credentials.js.map +1 -0
- package/dist/cli/config/index.d.ts +10 -0
- package/dist/cli/config/index.d.ts.map +1 -0
- package/dist/cli/config/index.js +9 -0
- package/dist/cli/config/index.js.map +1 -0
- package/dist/cli/config/loader.d.ts +36 -0
- package/dist/cli/config/loader.d.ts.map +1 -0
- package/dist/cli/config/loader.js +206 -0
- package/dist/cli/config/loader.js.map +1 -0
- package/dist/cli/config/resolver.d.ts +26 -0
- package/dist/cli/config/resolver.d.ts.map +1 -0
- package/dist/cli/config/resolver.js +102 -0
- package/dist/cli/config/resolver.js.map +1 -0
- package/dist/cli/config/schema.d.ts +128 -0
- package/dist/cli/config/schema.d.ts.map +1 -0
- package/dist/cli/config/schema.js +37 -0
- package/dist/cli/config/schema.js.map +1 -0
- package/dist/cli/config/types.d.ts +59 -0
- package/dist/cli/config/types.d.ts.map +1 -0
- package/dist/cli/config/types.js +6 -0
- package/dist/cli/config/types.js.map +1 -0
- package/dist/cli/formatters/output.d.ts +60 -0
- package/dist/cli/formatters/output.d.ts.map +1 -0
- package/dist/cli/formatters/output.js +190 -0
- package/dist/cli/formatters/output.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +98 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/command-helpers.d.ts +47 -0
- package/dist/cli/utils/command-helpers.d.ts.map +1 -0
- package/dist/cli/utils/command-helpers.js +211 -0
- package/dist/cli/utils/command-helpers.js.map +1 -0
- package/dist/cli/utils/connection.d.ts +20 -0
- package/dist/cli/utils/connection.d.ts.map +1 -0
- package/dist/cli/utils/connection.js +37 -0
- package/dist/cli/utils/connection.js.map +1 -0
- package/dist/cli/utils/exit-codes.d.ts +48 -0
- package/dist/cli/utils/exit-codes.d.ts.map +1 -0
- package/dist/cli/utils/exit-codes.js +111 -0
- package/dist/cli/utils/exit-codes.js.map +1 -0
- package/dist/cli/utils/yaml-loader.d.ts +69 -0
- package/dist/cli/utils/yaml-loader.d.ts.map +1 -0
- package/dist/cli/utils/yaml-loader.js +135 -0
- package/dist/cli/utils/yaml-loader.js.map +1 -0
- package/dist/cli/utils/yaml-to-commander.d.ts +26 -0
- package/dist/cli/utils/yaml-to-commander.d.ts.map +1 -0
- package/dist/cli/utils/yaml-to-commander.js +156 -0
- package/dist/cli/utils/yaml-to-commander.js.map +1 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +9 -10
- package/dist/config/index.js.map +1 -1
- package/dist/config/resolver.d.ts.map +1 -1
- package/dist/config/resolver.js +6 -0
- package/dist/config/resolver.js.map +1 -1
- package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/tools/executeSql.tool.js +6 -2
- package/dist/ibmi-mcp-server/tools/executeSql.tool.js.map +1 -1
- package/dist/ibmi-mcp-server/tools/generateSql.tool.js +1 -1
- package/dist/ibmi-mcp-server/tools/generateSql.tool.js.map +1 -1
- package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.d.ts +93 -0
- package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.js +198 -0
- package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/getTableColumns.tool.d.ts +87 -0
- package/dist/ibmi-mcp-server/tools/getTableColumns.tool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/getTableColumns.tool.js +163 -0
- package/dist/ibmi-mcp-server/tools/getTableColumns.tool.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/index.d.ts +175 -0
- package/dist/ibmi-mcp-server/tools/index.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/tools/index.js +27 -1
- package/dist/ibmi-mcp-server/tools/index.js.map +1 -1
- package/dist/ibmi-mcp-server/tools/listSchemas.tool.d.ts +107 -0
- package/dist/ibmi-mcp-server/tools/listSchemas.tool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/listSchemas.tool.js +195 -0
- package/dist/ibmi-mcp-server/tools/listSchemas.tool.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.d.ts +107 -0
- package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.js +198 -0
- package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/validateQuery.tool.d.ts +229 -0
- package/dist/ibmi-mcp-server/tools/validateQuery.tool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/validateQuery.tool.js +401 -0
- package/dist/ibmi-mcp-server/tools/validateQuery.tool.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts +2 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.js +21 -7
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +1 -1
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -1
- package/dist/mcp-server/tools/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/index.js +5 -3
- package/dist/mcp-server/tools/index.js.map +1 -1
- package/package.json +6 -4
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Related Objects Tool
|
|
3
|
+
*
|
|
4
|
+
* Discovers all objects that depend on a specified database file using
|
|
5
|
+
* the SYSTOOLS.RELATED_OBJECTS table function. Returns views, indexes,
|
|
6
|
+
* triggers, foreign keys, logical files, and other dependent objects.
|
|
7
|
+
* Part of the default text-to-SQL toolset.
|
|
8
|
+
*
|
|
9
|
+
* @module getRelatedObjects.tool
|
|
10
|
+
*/
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { JsonRpcErrorCode, McpError } from "../../types-global/errors.js";
|
|
13
|
+
import { logger } from "../../utils/internal/logger.js";
|
|
14
|
+
import { IBMiConnectionPool } from "../services/connectionPool.js";
|
|
15
|
+
import { defineTool } from "../../mcp-server/tools/utils/tool-factory.js";
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// Constants
|
|
18
|
+
// =============================================================================
|
|
19
|
+
const VALID_OBJECT_TYPES = [
|
|
20
|
+
"ALIAS",
|
|
21
|
+
"FOREIGN KEY",
|
|
22
|
+
"FUNCTION",
|
|
23
|
+
"HISTORY TABLE",
|
|
24
|
+
"INDEX",
|
|
25
|
+
"KEYED LOGICAL FILE",
|
|
26
|
+
"LOGICAL FILE",
|
|
27
|
+
"MASK",
|
|
28
|
+
"MATERIALIZED QUERY TABLE",
|
|
29
|
+
"PERMISSION",
|
|
30
|
+
"PROCEDURE",
|
|
31
|
+
"TEXT INDEX",
|
|
32
|
+
"TRIGGER",
|
|
33
|
+
"VARIABLE",
|
|
34
|
+
"VIEW",
|
|
35
|
+
"XML SCHEMA",
|
|
36
|
+
];
|
|
37
|
+
// =============================================================================
|
|
38
|
+
// Schemas
|
|
39
|
+
// =============================================================================
|
|
40
|
+
const GetRelatedObjectsInputSchema = z.object({
|
|
41
|
+
library_name: z
|
|
42
|
+
.string()
|
|
43
|
+
.min(1, "Library name cannot be empty.")
|
|
44
|
+
.max(10, "Library name cannot exceed 10 characters.")
|
|
45
|
+
.describe("Library containing the database file (e.g., 'APPLIB', 'MYLIB')"),
|
|
46
|
+
file_name: z
|
|
47
|
+
.string()
|
|
48
|
+
.min(1, "File name cannot be empty.")
|
|
49
|
+
.max(10, "File name cannot exceed 10 characters.")
|
|
50
|
+
.describe("System name of the database file to find dependents for (e.g., 'ORDERS', 'CUSTOMER')"),
|
|
51
|
+
object_type_filter: z
|
|
52
|
+
.enum(VALID_OBJECT_TYPES)
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("Optional: filter results to a specific dependent object type (e.g., 'INDEX', 'VIEW', 'TRIGGER'). Omit to return all types."),
|
|
55
|
+
});
|
|
56
|
+
const GetRelatedObjectsOutputSchema = z.object({
|
|
57
|
+
success: z.boolean().describe("Whether the query executed successfully."),
|
|
58
|
+
data: z
|
|
59
|
+
.array(z.record(z.unknown()))
|
|
60
|
+
.optional()
|
|
61
|
+
.describe("Array of dependent object records. Each record contains: SOURCE_SCHEMA_NAME, SOURCE_SQL_NAME (referenced object), SQL_OBJECT_TYPE (dependent type), SCHEMA_NAME, SQL_NAME (dependent object), LIBRARY_NAME, SYSTEM_NAME, OBJECT_OWNER, LONG_COMMENT, OBJECT_TEXT, LAST_ALTERED."),
|
|
62
|
+
rowCount: z
|
|
63
|
+
.number()
|
|
64
|
+
.optional()
|
|
65
|
+
.describe("Number of dependent objects returned."),
|
|
66
|
+
executionTime: z
|
|
67
|
+
.number()
|
|
68
|
+
.optional()
|
|
69
|
+
.describe("Query execution time in milliseconds."),
|
|
70
|
+
error: z
|
|
71
|
+
.object({
|
|
72
|
+
code: z.string().describe("Error code"),
|
|
73
|
+
message: z.string().describe("Error message"),
|
|
74
|
+
details: z.record(z.unknown()).optional().describe("Error details"),
|
|
75
|
+
})
|
|
76
|
+
.optional()
|
|
77
|
+
.describe("Error information if the query failed."),
|
|
78
|
+
});
|
|
79
|
+
// =============================================================================
|
|
80
|
+
// Business Logic
|
|
81
|
+
// =============================================================================
|
|
82
|
+
export async function getRelatedObjectsLogic(params, appContext, _sdkContext) {
|
|
83
|
+
logger.debug({ ...appContext, toolInput: params }, "Processing get related objects logic.");
|
|
84
|
+
const startTime = Date.now();
|
|
85
|
+
const bindParams = [
|
|
86
|
+
params.library_name,
|
|
87
|
+
params.file_name,
|
|
88
|
+
];
|
|
89
|
+
const whereClause = params.object_type_filter
|
|
90
|
+
? "\n WHERE SQL_OBJECT_TYPE = ?"
|
|
91
|
+
: "";
|
|
92
|
+
if (params.object_type_filter) {
|
|
93
|
+
bindParams.push(params.object_type_filter);
|
|
94
|
+
}
|
|
95
|
+
const sql = `
|
|
96
|
+
SELECT *
|
|
97
|
+
FROM TABLE(SYSTOOLS.RELATED_OBJECTS(
|
|
98
|
+
LIBRARY_NAME => ?,
|
|
99
|
+
FILE_NAME => ?
|
|
100
|
+
))${whereClause}
|
|
101
|
+
ORDER BY SQL_OBJECT_TYPE, SQL_NAME
|
|
102
|
+
`.trim();
|
|
103
|
+
try {
|
|
104
|
+
const result = await IBMiConnectionPool.executeQuery(sql, bindParams, appContext);
|
|
105
|
+
const executionTime = Date.now() - startTime;
|
|
106
|
+
if (!result.data) {
|
|
107
|
+
return {
|
|
108
|
+
success: true,
|
|
109
|
+
data: [],
|
|
110
|
+
rowCount: 0,
|
|
111
|
+
executionTime,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const typedData = result.data;
|
|
115
|
+
// Strip null/undefined values from each row to reduce response size
|
|
116
|
+
const filteredData = typedData?.map((row) => Object.fromEntries(Object.entries(row).filter(([, v]) => v != null)));
|
|
117
|
+
return {
|
|
118
|
+
success: true,
|
|
119
|
+
data: filteredData,
|
|
120
|
+
rowCount: filteredData?.length ?? 0,
|
|
121
|
+
executionTime,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const executionTime = Date.now() - startTime;
|
|
126
|
+
logger.error({
|
|
127
|
+
...appContext,
|
|
128
|
+
error: error instanceof Error ? error.message : String(error),
|
|
129
|
+
library: params.library_name,
|
|
130
|
+
file: params.file_name,
|
|
131
|
+
executionTime,
|
|
132
|
+
}, "Get related objects query failed.");
|
|
133
|
+
if (error instanceof McpError) {
|
|
134
|
+
return {
|
|
135
|
+
success: false,
|
|
136
|
+
executionTime,
|
|
137
|
+
error: {
|
|
138
|
+
code: String(error.code),
|
|
139
|
+
message: error.message,
|
|
140
|
+
details: error.details,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
success: false,
|
|
146
|
+
executionTime,
|
|
147
|
+
error: {
|
|
148
|
+
code: String(JsonRpcErrorCode.DatabaseError),
|
|
149
|
+
message: `Failed to get related objects: ${error instanceof Error ? error.message : String(error)}`,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// =============================================================================
|
|
155
|
+
// Response Formatter
|
|
156
|
+
// =============================================================================
|
|
157
|
+
const getRelatedObjectsResponseFormatter = (result) => {
|
|
158
|
+
if (!result.success) {
|
|
159
|
+
const errorMessage = result.error?.message || "Failed to get related objects";
|
|
160
|
+
const errorDetails = result.error?.details
|
|
161
|
+
? `\n\nDetails:\n${JSON.stringify(result.error.details, null, 2)}`
|
|
162
|
+
: "";
|
|
163
|
+
return [{ type: "text", text: `Error: ${errorMessage}${errorDetails}` }];
|
|
164
|
+
}
|
|
165
|
+
if (!result.data || result.data.length === 0) {
|
|
166
|
+
return [
|
|
167
|
+
{
|
|
168
|
+
type: "text",
|
|
169
|
+
text: `No dependent objects found.\nExecution time: ${result.executionTime}ms\n\nNote: Returns no results if the input is an SQL alias, program-described file, or does not exist.`,
|
|
170
|
+
},
|
|
171
|
+
];
|
|
172
|
+
}
|
|
173
|
+
const resultJson = JSON.stringify(result.data, null, 2);
|
|
174
|
+
return [
|
|
175
|
+
{
|
|
176
|
+
type: "text",
|
|
177
|
+
text: `Found ${result.rowCount} dependent object(s).\nExecution time: ${result.executionTime}ms\n\nRelated objects:\n${resultJson}`,
|
|
178
|
+
},
|
|
179
|
+
];
|
|
180
|
+
};
|
|
181
|
+
// =============================================================================
|
|
182
|
+
// Tool Definition
|
|
183
|
+
// =============================================================================
|
|
184
|
+
export const getRelatedObjectsTool = defineTool({
|
|
185
|
+
name: "get_related_objects",
|
|
186
|
+
title: "Get Related Objects",
|
|
187
|
+
description: "Get all objects that depend on a database file — views, indexes, triggers, foreign keys, logical files, and more. Use for impact analysis before schema changes or to understand a table's dependency graph.",
|
|
188
|
+
inputSchema: GetRelatedObjectsInputSchema,
|
|
189
|
+
outputSchema: GetRelatedObjectsOutputSchema,
|
|
190
|
+
logic: getRelatedObjectsLogic,
|
|
191
|
+
responseFormatter: getRelatedObjectsResponseFormatter,
|
|
192
|
+
annotations: {
|
|
193
|
+
readOnlyHint: true,
|
|
194
|
+
destructiveHint: false,
|
|
195
|
+
openWorldHint: false,
|
|
196
|
+
},
|
|
197
|
+
});
|
|
198
|
+
//# sourceMappingURL=getRelatedObjects.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRelatedObjects.tool.js","sourceRoot":"","sources":["../../../src/ibmi-mcp-server/tools/getRelatedObjects.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAG1E,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,kBAAkB,GAAG;IACzB,OAAO;IACP,aAAa;IACb,UAAU;IACV,eAAe;IACf,OAAO;IACP,oBAAoB;IACpB,cAAc;IACd,MAAM;IACN,0BAA0B;IAC1B,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,SAAS;IACT,UAAU;IACV,MAAM;IACN,YAAY;CACJ,CAAC;AAEX,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC;SACvC,GAAG,CAAC,EAAE,EAAE,2CAA2C,CAAC;SACpD,QAAQ,CAAC,gEAAgE,CAAC;IAC7E,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC;SACpC,GAAG,CAAC,EAAE,EAAE,wCAAwC,CAAC;SACjD,QAAQ,CACP,sFAAsF,CACvF;IACH,kBAAkB,EAAE,CAAC;SAClB,IAAI,CAAC,kBAAkB,CAAC;SACxB,QAAQ,EAAE;SACV,QAAQ,CACP,4HAA4H,CAC7H;CACJ,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACzE,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5B,QAAQ,EAAE;SACV,QAAQ,CACP,iRAAiR,CAClR;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IACpD,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IACpD,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KACpE,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,wCAAwC,CAAC;CACtD,CAAC,CAAC;AAKH,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAA8B,EAC9B,UAA0B,EAC1B,WAAuB;IAEvB,MAAM,CAAC,KAAK,CACV,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,EACpC,uCAAuC,CACxC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,UAAU,GAAmB;QACjC,MAAM,CAAC,YAAY;QACnB,MAAM,CAAC,SAAS;KACjB,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,kBAAkB;QAC3C,CAAC,CAAC,iCAAiC;QACnC,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,GAAG,GAAG;;;;;QAKN,WAAW;;GAEhB,CAAC,IAAI,EAAE,CAAC;IAET,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAClD,GAAG,EACH,UAAU,EACV,UAAU,CACX,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,CAAC;gBACX,aAAa;aACd,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAuC,CAAC;QAEjE,oEAAoE;QACpE,MAAM,YAAY,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CACrE,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;YACnC,aAAa;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAE7C,MAAM,CAAC,KAAK,CACV;YACE,GAAG,UAAU;YACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,OAAO,EAAE,MAAM,CAAC,YAAY;YAC5B,IAAI,EAAE,MAAM,CAAC,SAAS;YACtB,aAAa;SACd,EACD,mCAAmC,CACpC,CAAC;QAEF,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;oBACxB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,aAAa;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;gBAC5C,OAAO,EAAE,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACpG;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,MAAM,kCAAkC,GAAG,CACzC,MAA+B,EACf,EAAE;IAClB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,YAAY,GAChB,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,+BAA+B,CAAC;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO;YACxC,CAAC,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;YAClE,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,YAAY,GAAG,YAAY,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO;YACL;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,gDAAgD,MAAM,CAAC,aAAa,yGAAyG;aACpL;SACF,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO;QACL;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS,MAAM,CAAC,QAAQ,0CAA0C,MAAM,CAAC,aAAa,2BAA2B,UAAU,EAAE;SACpI;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;IAC9C,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,8MAA8M;IAChN,WAAW,EAAE,4BAA4B;IACzC,YAAY,EAAE,6BAA6B;IAC3C,KAAK,EAAE,sBAAsB;IAC7B,iBAAiB,EAAE,kCAAkC;IACrD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,KAAK;KACrB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Table Columns Tool
|
|
3
|
+
*
|
|
4
|
+
* Returns column details for a table including name, type, length,
|
|
5
|
+
* nullable, and description. Part of the default text-to-SQL toolset.
|
|
6
|
+
*
|
|
7
|
+
* @module getTableColumns.tool
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import type { RequestContext } from "../../utils/index.js";
|
|
11
|
+
import type { SdkContext } from "../../mcp-server/tools/utils/types.js";
|
|
12
|
+
declare const GetTableColumnsInputSchema: z.ZodObject<{
|
|
13
|
+
schema_name: z.ZodString;
|
|
14
|
+
table_name: z.ZodString;
|
|
15
|
+
}, "strip", z.ZodTypeAny, {
|
|
16
|
+
schema_name: string;
|
|
17
|
+
table_name: string;
|
|
18
|
+
}, {
|
|
19
|
+
schema_name: string;
|
|
20
|
+
table_name: string;
|
|
21
|
+
}>;
|
|
22
|
+
declare const GetTableColumnsOutputSchema: z.ZodObject<{
|
|
23
|
+
success: z.ZodBoolean;
|
|
24
|
+
data: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
|
|
25
|
+
rowCount: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
executionTime: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
error: z.ZodOptional<z.ZodObject<{
|
|
28
|
+
code: z.ZodString;
|
|
29
|
+
message: z.ZodString;
|
|
30
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
31
|
+
}, "strip", z.ZodTypeAny, {
|
|
32
|
+
code: string;
|
|
33
|
+
message: string;
|
|
34
|
+
details?: Record<string, unknown> | undefined;
|
|
35
|
+
}, {
|
|
36
|
+
code: string;
|
|
37
|
+
message: string;
|
|
38
|
+
details?: Record<string, unknown> | undefined;
|
|
39
|
+
}>>;
|
|
40
|
+
}, "strip", z.ZodTypeAny, {
|
|
41
|
+
success: boolean;
|
|
42
|
+
error?: {
|
|
43
|
+
code: string;
|
|
44
|
+
message: string;
|
|
45
|
+
details?: Record<string, unknown> | undefined;
|
|
46
|
+
} | undefined;
|
|
47
|
+
data?: Record<string, unknown>[] | undefined;
|
|
48
|
+
executionTime?: number | undefined;
|
|
49
|
+
rowCount?: number | undefined;
|
|
50
|
+
}, {
|
|
51
|
+
success: boolean;
|
|
52
|
+
error?: {
|
|
53
|
+
code: string;
|
|
54
|
+
message: string;
|
|
55
|
+
details?: Record<string, unknown> | undefined;
|
|
56
|
+
} | undefined;
|
|
57
|
+
data?: Record<string, unknown>[] | undefined;
|
|
58
|
+
executionTime?: number | undefined;
|
|
59
|
+
rowCount?: number | undefined;
|
|
60
|
+
}>;
|
|
61
|
+
type GetTableColumnsInput = z.infer<typeof GetTableColumnsInputSchema>;
|
|
62
|
+
type GetTableColumnsOutput = z.infer<typeof GetTableColumnsOutputSchema>;
|
|
63
|
+
export declare function getTableColumnsLogic(params: GetTableColumnsInput, appContext: RequestContext, _sdkContext: SdkContext): Promise<GetTableColumnsOutput>;
|
|
64
|
+
export declare const getTableColumnsTool: import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
|
|
65
|
+
schema_name: z.ZodString;
|
|
66
|
+
table_name: z.ZodString;
|
|
67
|
+
}, {
|
|
68
|
+
success: z.ZodBoolean;
|
|
69
|
+
data: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
|
|
70
|
+
rowCount: z.ZodOptional<z.ZodNumber>;
|
|
71
|
+
executionTime: z.ZodOptional<z.ZodNumber>;
|
|
72
|
+
error: z.ZodOptional<z.ZodObject<{
|
|
73
|
+
code: z.ZodString;
|
|
74
|
+
message: z.ZodString;
|
|
75
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
76
|
+
}, "strip", z.ZodTypeAny, {
|
|
77
|
+
code: string;
|
|
78
|
+
message: string;
|
|
79
|
+
details?: Record<string, unknown> | undefined;
|
|
80
|
+
}, {
|
|
81
|
+
code: string;
|
|
82
|
+
message: string;
|
|
83
|
+
details?: Record<string, unknown> | undefined;
|
|
84
|
+
}>>;
|
|
85
|
+
}>;
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=getTableColumns.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTableColumns.tool.d.ts","sourceRoot":"","sources":["../../../src/ibmi-mcp-server/tools/getTableColumns.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAMxE,QAAA,MAAM,0BAA0B;;;;;;;;;EAa9B,CAAC;AAEH,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB/B,CAAC;AAEH,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AACvE,KAAK,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAMzE,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,oBAAoB,EAC5B,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,qBAAqB,CAAC,CAgGhC;AA8BD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;EAc9B,CAAC"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Table Columns Tool
|
|
3
|
+
*
|
|
4
|
+
* Returns column details for a table including name, type, length,
|
|
5
|
+
* nullable, and description. Part of the default text-to-SQL toolset.
|
|
6
|
+
*
|
|
7
|
+
* @module getTableColumns.tool
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { JsonRpcErrorCode, McpError } from "../../types-global/errors.js";
|
|
11
|
+
import { logger } from "../../utils/internal/logger.js";
|
|
12
|
+
import { IBMiConnectionPool } from "../services/connectionPool.js";
|
|
13
|
+
import { defineTool } from "../../mcp-server/tools/utils/tool-factory.js";
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// Schemas
|
|
16
|
+
// =============================================================================
|
|
17
|
+
const GetTableColumnsInputSchema = z.object({
|
|
18
|
+
schema_name: z
|
|
19
|
+
.string()
|
|
20
|
+
.min(1, "Schema name cannot be empty.")
|
|
21
|
+
.max(128, "Schema name cannot exceed 128 characters.")
|
|
22
|
+
.describe("Schema name containing the table (e.g., 'QIWS', 'SAMPLE', 'MYLIB')"),
|
|
23
|
+
table_name: z
|
|
24
|
+
.string()
|
|
25
|
+
.min(1, "Table name cannot be empty.")
|
|
26
|
+
.max(128, "Table name cannot exceed 128 characters.")
|
|
27
|
+
.describe("Table name to get columns for (e.g., 'QCUSTCDT', 'EMPLOYEE')"),
|
|
28
|
+
});
|
|
29
|
+
const GetTableColumnsOutputSchema = z.object({
|
|
30
|
+
success: z.boolean().describe("Whether the query executed successfully."),
|
|
31
|
+
data: z
|
|
32
|
+
.array(z.record(z.unknown()))
|
|
33
|
+
.optional()
|
|
34
|
+
.describe("Array of column detail records. Each record contains: COLUMN_NAME, SYSTEM_COLUMN_NAME (10-char DDS name), DATA_TYPE, LENGTH, NUMERIC_SCALE, NUMERIC_PRECISION, IS_NULLABLE (Y/N), HAS_DEFAULT (Y/N), COLUMN_DEFAULT, COLUMN_TEXT, COLUMN_HEADING (DDS heading), ORDINAL_POSITION, CCSID, HIDDEN (P=implicitly hidden, N=visible), IS_IDENTITY (YES/NO)."),
|
|
35
|
+
rowCount: z.number().optional().describe("Number of columns returned."),
|
|
36
|
+
executionTime: z
|
|
37
|
+
.number()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe("Query execution time in milliseconds."),
|
|
40
|
+
error: z
|
|
41
|
+
.object({
|
|
42
|
+
code: z.string().describe("Error code"),
|
|
43
|
+
message: z.string().describe("Error message"),
|
|
44
|
+
details: z.record(z.unknown()).optional().describe("Error details"),
|
|
45
|
+
})
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("Error information if the query failed."),
|
|
48
|
+
});
|
|
49
|
+
// =============================================================================
|
|
50
|
+
// Business Logic
|
|
51
|
+
// =============================================================================
|
|
52
|
+
export async function getTableColumnsLogic(params, appContext, _sdkContext) {
|
|
53
|
+
logger.debug({ ...appContext, toolInput: params }, "Processing get table columns logic.");
|
|
54
|
+
const startTime = Date.now();
|
|
55
|
+
const sql = `
|
|
56
|
+
SELECT COLUMN_NAME,
|
|
57
|
+
SYSTEM_COLUMN_NAME,
|
|
58
|
+
DATA_TYPE,
|
|
59
|
+
LENGTH,
|
|
60
|
+
NUMERIC_SCALE,
|
|
61
|
+
NUMERIC_PRECISION,
|
|
62
|
+
IS_NULLABLE,
|
|
63
|
+
HAS_DEFAULT,
|
|
64
|
+
COLUMN_DEFAULT,
|
|
65
|
+
COLUMN_TEXT,
|
|
66
|
+
COLUMN_HEADING,
|
|
67
|
+
ORDINAL_POSITION,
|
|
68
|
+
CCSID,
|
|
69
|
+
HIDDEN,
|
|
70
|
+
IS_IDENTITY
|
|
71
|
+
FROM QSYS2.SYSCOLUMNS2
|
|
72
|
+
WHERE TABLE_SCHEMA = UPPER(?)
|
|
73
|
+
AND TABLE_NAME = UPPER(?)
|
|
74
|
+
ORDER BY ORDINAL_POSITION
|
|
75
|
+
`.trim();
|
|
76
|
+
try {
|
|
77
|
+
const result = await IBMiConnectionPool.executeQuery(sql, [params.schema_name, params.table_name], appContext);
|
|
78
|
+
const executionTime = Date.now() - startTime;
|
|
79
|
+
if (!result.data) {
|
|
80
|
+
return {
|
|
81
|
+
success: true,
|
|
82
|
+
data: [],
|
|
83
|
+
rowCount: 0,
|
|
84
|
+
executionTime,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const typedData = result.data;
|
|
88
|
+
// Strip null/undefined values from each row to reduce response size
|
|
89
|
+
const filteredData = typedData?.map((row) => Object.fromEntries(Object.entries(row).filter(([, v]) => v != null)));
|
|
90
|
+
return {
|
|
91
|
+
success: true,
|
|
92
|
+
data: filteredData,
|
|
93
|
+
rowCount: filteredData?.length ?? 0,
|
|
94
|
+
executionTime,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const executionTime = Date.now() - startTime;
|
|
99
|
+
logger.error({
|
|
100
|
+
...appContext,
|
|
101
|
+
error: error instanceof Error ? error.message : String(error),
|
|
102
|
+
schema: params.schema_name,
|
|
103
|
+
table: params.table_name,
|
|
104
|
+
executionTime,
|
|
105
|
+
}, "Get table columns query failed.");
|
|
106
|
+
if (error instanceof McpError) {
|
|
107
|
+
return {
|
|
108
|
+
success: false,
|
|
109
|
+
executionTime,
|
|
110
|
+
error: {
|
|
111
|
+
code: String(error.code),
|
|
112
|
+
message: error.message,
|
|
113
|
+
details: error.details,
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
success: false,
|
|
119
|
+
executionTime,
|
|
120
|
+
error: {
|
|
121
|
+
code: String(JsonRpcErrorCode.DatabaseError),
|
|
122
|
+
message: `Failed to get table columns: ${error instanceof Error ? error.message : String(error)}`,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// =============================================================================
|
|
128
|
+
// Response Formatter
|
|
129
|
+
// =============================================================================
|
|
130
|
+
const getTableColumnsResponseFormatter = (result) => {
|
|
131
|
+
if (!result.success) {
|
|
132
|
+
const errorMessage = result.error?.message || "Failed to get table columns";
|
|
133
|
+
const errorDetails = result.error?.details
|
|
134
|
+
? `\n\nDetails:\n${JSON.stringify(result.error.details, null, 2)}`
|
|
135
|
+
: "";
|
|
136
|
+
return [{ type: "text", text: `Error: ${errorMessage}${errorDetails}` }];
|
|
137
|
+
}
|
|
138
|
+
const resultJson = JSON.stringify(result.data, null, 2);
|
|
139
|
+
return [
|
|
140
|
+
{
|
|
141
|
+
type: "text",
|
|
142
|
+
text: `Found ${result.rowCount} columns.\nExecution time: ${result.executionTime}ms\n\nColumns:\n${resultJson}`,
|
|
143
|
+
},
|
|
144
|
+
];
|
|
145
|
+
};
|
|
146
|
+
// =============================================================================
|
|
147
|
+
// Tool Definition
|
|
148
|
+
// =============================================================================
|
|
149
|
+
export const getTableColumnsTool = defineTool({
|
|
150
|
+
name: "get_table_columns",
|
|
151
|
+
title: "Get Table Columns",
|
|
152
|
+
description: "Get column metadata for a table including names, data types, lengths, nullability, defaults, and descriptions. Use this to understand table structure before writing SQL queries.",
|
|
153
|
+
inputSchema: GetTableColumnsInputSchema,
|
|
154
|
+
outputSchema: GetTableColumnsOutputSchema,
|
|
155
|
+
logic: getTableColumnsLogic,
|
|
156
|
+
responseFormatter: getTableColumnsResponseFormatter,
|
|
157
|
+
annotations: {
|
|
158
|
+
readOnlyHint: true,
|
|
159
|
+
destructiveHint: false,
|
|
160
|
+
openWorldHint: false,
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
//# sourceMappingURL=getTableColumns.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTableColumns.tool.js","sourceRoot":"","sources":["../../../src/ibmi-mcp-server/tools/getTableColumns.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Tool Definitions Barrel Export
|
|
3
3
|
*
|
|
4
4
|
* Centralized export of all factory pattern tool definitions.
|
|
5
|
+
* Includes the default text-to-SQL toolset (controlled by IBMI_ENABLE_DEFAULT_TOOLS)
|
|
6
|
+
* alongside always-available tools.
|
|
5
7
|
*
|
|
6
8
|
* @module tools/definitions
|
|
7
9
|
*/
|
|
@@ -81,5 +83,178 @@ export declare const allToolDefinitions: (import("../../mcp-server/tools/utils/t
|
|
|
81
83
|
message: string;
|
|
82
84
|
details?: Record<string, unknown> | undefined;
|
|
83
85
|
}>>;
|
|
86
|
+
}> | import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
|
|
87
|
+
filter: import("zod").ZodOptional<import("zod").ZodString>;
|
|
88
|
+
include_system: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
89
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
90
|
+
offset: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
91
|
+
}, {
|
|
92
|
+
success: import("zod").ZodBoolean;
|
|
93
|
+
data: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
|
|
94
|
+
rowCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
95
|
+
hasMore: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
96
|
+
limit: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
97
|
+
offset: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
98
|
+
executionTime: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
99
|
+
error: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
100
|
+
code: import("zod").ZodString;
|
|
101
|
+
message: import("zod").ZodString;
|
|
102
|
+
details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
103
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
104
|
+
code: string;
|
|
105
|
+
message: string;
|
|
106
|
+
details?: Record<string, unknown> | undefined;
|
|
107
|
+
}, {
|
|
108
|
+
code: string;
|
|
109
|
+
message: string;
|
|
110
|
+
details?: Record<string, unknown> | undefined;
|
|
111
|
+
}>>;
|
|
112
|
+
}> | import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
|
|
113
|
+
schema_name: import("zod").ZodString;
|
|
114
|
+
table_filter: import("zod").ZodDefault<import("zod").ZodString>;
|
|
115
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
116
|
+
offset: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
117
|
+
}, {
|
|
118
|
+
success: import("zod").ZodBoolean;
|
|
119
|
+
data: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
|
|
120
|
+
rowCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
121
|
+
hasMore: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
122
|
+
limit: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
123
|
+
offset: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
124
|
+
executionTime: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
125
|
+
error: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
126
|
+
code: import("zod").ZodString;
|
|
127
|
+
message: import("zod").ZodString;
|
|
128
|
+
details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
129
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
130
|
+
code: string;
|
|
131
|
+
message: string;
|
|
132
|
+
details?: Record<string, unknown> | undefined;
|
|
133
|
+
}, {
|
|
134
|
+
code: string;
|
|
135
|
+
message: string;
|
|
136
|
+
details?: Record<string, unknown> | undefined;
|
|
137
|
+
}>>;
|
|
138
|
+
}> | import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
|
|
139
|
+
schema_name: import("zod").ZodString;
|
|
140
|
+
table_name: import("zod").ZodString;
|
|
141
|
+
}, {
|
|
142
|
+
success: import("zod").ZodBoolean;
|
|
143
|
+
data: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
|
|
144
|
+
rowCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
145
|
+
executionTime: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
146
|
+
error: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
147
|
+
code: import("zod").ZodString;
|
|
148
|
+
message: import("zod").ZodString;
|
|
149
|
+
details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
150
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
151
|
+
code: string;
|
|
152
|
+
message: string;
|
|
153
|
+
details?: Record<string, unknown> | undefined;
|
|
154
|
+
}, {
|
|
155
|
+
code: string;
|
|
156
|
+
message: string;
|
|
157
|
+
details?: Record<string, unknown> | undefined;
|
|
158
|
+
}>>;
|
|
159
|
+
}> | import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
|
|
160
|
+
sql_statement: import("zod").ZodString;
|
|
161
|
+
}, {
|
|
162
|
+
success: import("zod").ZodBoolean;
|
|
163
|
+
data: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
|
|
164
|
+
rowCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
165
|
+
executionTime: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
166
|
+
objectValidation: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
167
|
+
tables: import("zod").ZodObject<{
|
|
168
|
+
valid: import("zod").ZodArray<import("zod").ZodString, "many">;
|
|
169
|
+
invalid: import("zod").ZodArray<import("zod").ZodString, "many">;
|
|
170
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
171
|
+
valid: string[];
|
|
172
|
+
invalid: string[];
|
|
173
|
+
}, {
|
|
174
|
+
valid: string[];
|
|
175
|
+
invalid: string[];
|
|
176
|
+
}>;
|
|
177
|
+
columns: import("zod").ZodObject<{
|
|
178
|
+
valid: import("zod").ZodArray<import("zod").ZodString, "many">;
|
|
179
|
+
invalid: import("zod").ZodArray<import("zod").ZodString, "many">;
|
|
180
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
181
|
+
valid: string[];
|
|
182
|
+
invalid: string[];
|
|
183
|
+
}, {
|
|
184
|
+
valid: string[];
|
|
185
|
+
invalid: string[];
|
|
186
|
+
}>;
|
|
187
|
+
routines: import("zod").ZodObject<{
|
|
188
|
+
valid: import("zod").ZodArray<import("zod").ZodString, "many">;
|
|
189
|
+
invalid: import("zod").ZodArray<import("zod").ZodString, "many">;
|
|
190
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
191
|
+
valid: string[];
|
|
192
|
+
invalid: string[];
|
|
193
|
+
}, {
|
|
194
|
+
valid: string[];
|
|
195
|
+
invalid: string[];
|
|
196
|
+
}>;
|
|
197
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
198
|
+
columns: {
|
|
199
|
+
valid: string[];
|
|
200
|
+
invalid: string[];
|
|
201
|
+
};
|
|
202
|
+
tables: {
|
|
203
|
+
valid: string[];
|
|
204
|
+
invalid: string[];
|
|
205
|
+
};
|
|
206
|
+
routines: {
|
|
207
|
+
valid: string[];
|
|
208
|
+
invalid: string[];
|
|
209
|
+
};
|
|
210
|
+
}, {
|
|
211
|
+
columns: {
|
|
212
|
+
valid: string[];
|
|
213
|
+
invalid: string[];
|
|
214
|
+
};
|
|
215
|
+
tables: {
|
|
216
|
+
valid: string[];
|
|
217
|
+
invalid: string[];
|
|
218
|
+
};
|
|
219
|
+
routines: {
|
|
220
|
+
valid: string[];
|
|
221
|
+
invalid: string[];
|
|
222
|
+
};
|
|
223
|
+
}>>;
|
|
224
|
+
error: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
225
|
+
code: import("zod").ZodString;
|
|
226
|
+
message: import("zod").ZodString;
|
|
227
|
+
details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
228
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
229
|
+
code: string;
|
|
230
|
+
message: string;
|
|
231
|
+
details?: Record<string, unknown> | undefined;
|
|
232
|
+
}, {
|
|
233
|
+
code: string;
|
|
234
|
+
message: string;
|
|
235
|
+
details?: Record<string, unknown> | undefined;
|
|
236
|
+
}>>;
|
|
237
|
+
}> | import("../../mcp-server/tools/utils/types.js").ToolDefinition<{
|
|
238
|
+
library_name: import("zod").ZodString;
|
|
239
|
+
file_name: import("zod").ZodString;
|
|
240
|
+
object_type_filter: import("zod").ZodOptional<import("zod").ZodEnum<["ALIAS", "FOREIGN KEY", "FUNCTION", "HISTORY TABLE", "INDEX", "KEYED LOGICAL FILE", "LOGICAL FILE", "MASK", "MATERIALIZED QUERY TABLE", "PERMISSION", "PROCEDURE", "TEXT INDEX", "TRIGGER", "VARIABLE", "VIEW", "XML SCHEMA"]>>;
|
|
241
|
+
}, {
|
|
242
|
+
success: import("zod").ZodBoolean;
|
|
243
|
+
data: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
|
|
244
|
+
rowCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
245
|
+
executionTime: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
246
|
+
error: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
247
|
+
code: import("zod").ZodString;
|
|
248
|
+
message: import("zod").ZodString;
|
|
249
|
+
details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
250
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
251
|
+
code: string;
|
|
252
|
+
message: string;
|
|
253
|
+
details?: Record<string, unknown> | undefined;
|
|
254
|
+
}, {
|
|
255
|
+
code: string;
|
|
256
|
+
message: string;
|
|
257
|
+
details?: Record<string, unknown> | undefined;
|
|
258
|
+
}>>;
|
|
84
259
|
}>)[];
|
|
85
260
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ibmi-mcp-server/tools/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ibmi-mcp-server/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0BH;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAI9B,CAAC"}
|