@eamonboyle/mssql-mcp 1.1.0 → 1.2.0
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 +134 -22
- package/dist/__tests__/ExplainQueryTool.test.d.ts +2 -0
- package/dist/__tests__/ExplainQueryTool.test.d.ts.map +1 -0
- package/dist/__tests__/ExplainQueryTool.test.js +96 -0
- package/dist/__tests__/ExplainQueryTool.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +29 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/db.test.d.ts +1 -1
- package/dist/__tests__/db.test.js +203 -203
- package/dist/__tests__/promptRegistry.test.d.ts +2 -0
- package/dist/__tests__/promptRegistry.test.d.ts.map +1 -0
- package/dist/__tests__/promptRegistry.test.js +40 -0
- package/dist/__tests__/promptRegistry.test.js.map +1 -0
- package/dist/__tests__/resourceRegistry.test.d.ts +2 -0
- package/dist/__tests__/resourceRegistry.test.d.ts.map +1 -0
- package/dist/__tests__/resourceRegistry.test.js +40 -0
- package/dist/__tests__/resourceRegistry.test.js.map +1 -0
- package/dist/__tests__/schema.test.d.ts +2 -0
- package/dist/__tests__/schema.test.d.ts.map +1 -0
- package/dist/__tests__/schema.test.js +130 -0
- package/dist/__tests__/schema.test.js.map +1 -0
- package/dist/__tests__/sql.test.d.ts +2 -0
- package/dist/__tests__/sql.test.d.ts.map +1 -0
- package/dist/__tests__/sql.test.js +35 -0
- package/dist/__tests__/sql.test.js.map +1 -0
- package/dist/__tests__/toolRegistry.test.d.ts +2 -0
- package/dist/__tests__/toolRegistry.test.d.ts.map +1 -0
- package/dist/__tests__/toolRegistry.test.js +47 -0
- package/dist/__tests__/toolRegistry.test.js.map +1 -0
- package/dist/__tests__/validation.test.d.ts +1 -1
- package/dist/__tests__/validation.test.js +110 -110
- package/dist/__tests__/validation.test.js.map +1 -1
- package/dist/__tests__/writeTools.test.d.ts +2 -0
- package/dist/__tests__/writeTools.test.d.ts.map +1 -0
- package/dist/__tests__/writeTools.test.js +115 -0
- package/dist/__tests__/writeTools.test.js.map +1 -0
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +34 -0
- package/dist/config.js.map +1 -0
- package/dist/db.d.ts +28 -24
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +144 -112
- package/dist/db.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +70 -122
- package/dist/index.js.map +1 -1
- package/dist/promptRegistry.d.ts +16 -0
- package/dist/promptRegistry.d.ts.map +1 -0
- package/dist/promptRegistry.js +107 -0
- package/dist/promptRegistry.js.map +1 -0
- package/dist/resourceRegistry.d.ts +12 -0
- package/dist/resourceRegistry.d.ts.map +1 -0
- package/dist/resourceRegistry.js +172 -0
- package/dist/resourceRegistry.js.map +1 -0
- package/dist/schema.d.ts +41 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +211 -0
- package/dist/schema.js.map +1 -0
- package/dist/sql.d.ts +7 -0
- package/dist/sql.d.ts.map +1 -0
- package/dist/sql.js +73 -0
- package/dist/sql.js.map +1 -0
- package/dist/toolRegistry.d.ts +16 -0
- package/dist/toolRegistry.d.ts.map +1 -0
- package/dist/toolRegistry.js +401 -0
- package/dist/toolRegistry.js.map +1 -0
- package/dist/tools/CreateIndexTool.d.ts +30 -23
- package/dist/tools/CreateIndexTool.d.ts.map +1 -1
- package/dist/tools/CreateIndexTool.js +47 -77
- package/dist/tools/CreateIndexTool.js.map +1 -1
- package/dist/tools/CreateTableTool.d.ts +18 -11
- package/dist/tools/CreateTableTool.d.ts.map +1 -1
- package/dist/tools/CreateTableTool.js +37 -61
- package/dist/tools/CreateTableTool.js.map +1 -1
- package/dist/tools/DeleteDataTool.d.ts +22 -0
- package/dist/tools/DeleteDataTool.d.ts.map +1 -0
- package/dist/tools/DeleteDataTool.js +35 -0
- package/dist/tools/DeleteDataTool.js.map +1 -0
- package/dist/tools/DescribeObjectTool.d.ts +21 -0
- package/dist/tools/DescribeObjectTool.d.ts.map +1 -0
- package/dist/tools/DescribeObjectTool.js +31 -0
- package/dist/tools/DescribeObjectTool.js.map +1 -0
- package/dist/tools/DescribeTableTool.d.ts +19 -20
- package/dist/tools/DescribeTableTool.d.ts.map +1 -1
- package/dist/tools/DescribeTableTool.js +23 -44
- package/dist/tools/DescribeTableTool.js.map +1 -1
- package/dist/tools/DropTableTool.d.ts +13 -11
- package/dist/tools/DropTableTool.d.ts.map +1 -1
- package/dist/tools/DropTableTool.js +30 -44
- package/dist/tools/DropTableTool.js.map +1 -1
- package/dist/tools/ExplainQueryTool.d.ts +32 -0
- package/dist/tools/ExplainQueryTool.d.ts.map +1 -0
- package/dist/tools/ExplainQueryTool.js +102 -0
- package/dist/tools/ExplainQueryTool.js.map +1 -0
- package/dist/tools/InsertDataTool.d.ts +20 -16
- package/dist/tools/InsertDataTool.d.ts.map +1 -1
- package/dist/tools/InsertDataTool.js +91 -108
- package/dist/tools/InsertDataTool.js.map +1 -1
- package/dist/tools/ListObjectsTool.d.ts +20 -0
- package/dist/tools/ListObjectsTool.d.ts.map +1 -0
- package/dist/tools/ListObjectsTool.js +26 -0
- package/dist/tools/ListObjectsTool.js.map +1 -0
- package/dist/tools/ListTableTool.d.ts +20 -16
- package/dist/tools/ListTableTool.d.ts.map +1 -1
- package/dist/tools/ListTableTool.js +32 -51
- package/dist/tools/ListTableTool.js.map +1 -1
- package/dist/tools/ReadDataTool.d.ts +35 -33
- package/dist/tools/ReadDataTool.d.ts.map +1 -1
- package/dist/tools/ReadDataTool.js +92 -105
- package/dist/tools/ReadDataTool.js.map +1 -1
- package/dist/tools/SearchDataTool.d.ts +27 -0
- package/dist/tools/SearchDataTool.d.ts.map +1 -0
- package/dist/tools/SearchDataTool.js +61 -0
- package/dist/tools/SearchDataTool.js.map +1 -0
- package/dist/tools/UpdateDataTool.d.ts +21 -16
- package/dist/tools/UpdateDataTool.d.ts.map +1 -1
- package/dist/tools/UpdateDataTool.js +45 -65
- package/dist/tools/UpdateDataTool.js.map +1 -1
- package/dist/validation.d.ts +13 -13
- package/dist/validation.js +133 -133
- package/dist/validation.js.map +1 -1
- package/dist/writeSafety.d.ts +21 -0
- package/dist/writeSafety.d.ts.map +1 -0
- package/dist/writeSafety.js +169 -0
- package/dist/writeSafety.js.map +1 -0
- package/package.json +5 -4
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CreateIndexTool } from "./tools/CreateIndexTool.js";
|
|
3
|
+
import { CreateTableTool } from "./tools/CreateTableTool.js";
|
|
4
|
+
import { DeleteDataTool } from "./tools/DeleteDataTool.js";
|
|
5
|
+
import { DescribeObjectTool } from "./tools/DescribeObjectTool.js";
|
|
6
|
+
import { DescribeTableTool } from "./tools/DescribeTableTool.js";
|
|
7
|
+
import { DropTableTool } from "./tools/DropTableTool.js";
|
|
8
|
+
import { ExplainQueryTool } from "./tools/ExplainQueryTool.js";
|
|
9
|
+
import { InsertDataTool } from "./tools/InsertDataTool.js";
|
|
10
|
+
import { ListObjectsTool } from "./tools/ListObjectsTool.js";
|
|
11
|
+
import { ListTableTool } from "./tools/ListTableTool.js";
|
|
12
|
+
import { ReadDataTool } from "./tools/ReadDataTool.js";
|
|
13
|
+
import { SearchDataTool } from "./tools/SearchDataTool.js";
|
|
14
|
+
import { UpdateDataTool } from "./tools/UpdateDataTool.js";
|
|
15
|
+
import { SQL_FILTER_OPERATORS } from "./writeSafety.js";
|
|
16
|
+
const recordSchema = z.record(z.string(), z.unknown());
|
|
17
|
+
const filterSchema = z
|
|
18
|
+
.object({
|
|
19
|
+
column: z.string().describe("Column name to filter on."),
|
|
20
|
+
operator: z
|
|
21
|
+
.enum(SQL_FILTER_OPERATORS)
|
|
22
|
+
.describe("Comparison operator for this filter."),
|
|
23
|
+
value: z
|
|
24
|
+
.unknown()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe("Single comparison value. Required for most operators."),
|
|
27
|
+
values: z
|
|
28
|
+
.array(z.unknown())
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("Multiple comparison values. Required for IN filters."),
|
|
31
|
+
})
|
|
32
|
+
.strict()
|
|
33
|
+
.superRefine((filter, ctx) => {
|
|
34
|
+
if (filter.operator === "IN") {
|
|
35
|
+
if (!Array.isArray(filter.values) || filter.values.length === 0) {
|
|
36
|
+
ctx.addIssue({
|
|
37
|
+
code: z.ZodIssueCode.custom,
|
|
38
|
+
path: ["values"],
|
|
39
|
+
message: "IN filters require a non-empty values array.",
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (filter.operator === "IS NULL" || filter.operator === "IS NOT NULL") {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (!("value" in filter)) {
|
|
48
|
+
ctx.addIssue({
|
|
49
|
+
code: z.ZodIssueCode.custom,
|
|
50
|
+
path: ["value"],
|
|
51
|
+
message: `${filter.operator} filters require a value.`,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const listTableTool = new ListTableTool();
|
|
56
|
+
const describeTableTool = new DescribeTableTool();
|
|
57
|
+
const listObjectsTool = new ListObjectsTool();
|
|
58
|
+
const describeObjectTool = new DescribeObjectTool();
|
|
59
|
+
const readDataTool = new ReadDataTool();
|
|
60
|
+
const searchDataTool = new SearchDataTool();
|
|
61
|
+
const explainQueryTool = new ExplainQueryTool();
|
|
62
|
+
const insertDataTool = new InsertDataTool();
|
|
63
|
+
const updateDataTool = new UpdateDataTool();
|
|
64
|
+
const deleteDataTool = new DeleteDataTool();
|
|
65
|
+
const createTableTool = new CreateTableTool();
|
|
66
|
+
const createIndexTool = new CreateIndexTool();
|
|
67
|
+
const dropTableTool = new DropTableTool();
|
|
68
|
+
export const toolDefinitions = [
|
|
69
|
+
{
|
|
70
|
+
tool: listTableTool,
|
|
71
|
+
readOnly: true,
|
|
72
|
+
annotations: {
|
|
73
|
+
readOnlyHint: true,
|
|
74
|
+
idempotentHint: true,
|
|
75
|
+
},
|
|
76
|
+
inputSchema: z
|
|
77
|
+
.object({
|
|
78
|
+
parameters: z
|
|
79
|
+
.array(z.string().describe("Schema name to filter by"))
|
|
80
|
+
.optional()
|
|
81
|
+
.describe("Schemas to filter by (optional)"),
|
|
82
|
+
databaseName: z
|
|
83
|
+
.string()
|
|
84
|
+
.optional()
|
|
85
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
86
|
+
})
|
|
87
|
+
.passthrough(),
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
tool: describeTableTool,
|
|
91
|
+
readOnly: true,
|
|
92
|
+
annotations: {
|
|
93
|
+
readOnlyHint: true,
|
|
94
|
+
},
|
|
95
|
+
inputSchema: z
|
|
96
|
+
.object({
|
|
97
|
+
tableName: z.string().describe("Name of the table to describe"),
|
|
98
|
+
schemaName: z
|
|
99
|
+
.string()
|
|
100
|
+
.optional()
|
|
101
|
+
.describe("Schema containing the table (optional). Omit to search across schemas."),
|
|
102
|
+
databaseName: z
|
|
103
|
+
.string()
|
|
104
|
+
.optional()
|
|
105
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
106
|
+
})
|
|
107
|
+
.passthrough(),
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
tool: listObjectsTool,
|
|
111
|
+
readOnly: true,
|
|
112
|
+
annotations: {
|
|
113
|
+
readOnlyHint: true,
|
|
114
|
+
idempotentHint: true,
|
|
115
|
+
},
|
|
116
|
+
inputSchema: z
|
|
117
|
+
.object({
|
|
118
|
+
objectTypes: z
|
|
119
|
+
.array(z.enum(["table", "view", "procedure", "function", "trigger"]))
|
|
120
|
+
.optional()
|
|
121
|
+
.describe("Optional object types to include. Omit to list tables, views, procedures, functions, and triggers."),
|
|
122
|
+
schemaName: z
|
|
123
|
+
.string()
|
|
124
|
+
.optional()
|
|
125
|
+
.describe("Schema to filter by (optional)."),
|
|
126
|
+
databaseName: z
|
|
127
|
+
.string()
|
|
128
|
+
.optional()
|
|
129
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
130
|
+
})
|
|
131
|
+
.passthrough(),
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
tool: describeObjectTool,
|
|
135
|
+
readOnly: true,
|
|
136
|
+
annotations: {
|
|
137
|
+
readOnlyHint: true,
|
|
138
|
+
},
|
|
139
|
+
inputSchema: z
|
|
140
|
+
.object({
|
|
141
|
+
objectName: z.string().describe("Object name to describe."),
|
|
142
|
+
objectTypes: z
|
|
143
|
+
.array(z.enum(["table", "view", "procedure", "function", "trigger"]))
|
|
144
|
+
.optional()
|
|
145
|
+
.describe("Optional object types to narrow the lookup. Omit to search across supported object types."),
|
|
146
|
+
schemaName: z
|
|
147
|
+
.string()
|
|
148
|
+
.optional()
|
|
149
|
+
.describe("Schema containing the object (optional)."),
|
|
150
|
+
databaseName: z
|
|
151
|
+
.string()
|
|
152
|
+
.optional()
|
|
153
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
154
|
+
})
|
|
155
|
+
.passthrough(),
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
tool: readDataTool,
|
|
159
|
+
readOnly: true,
|
|
160
|
+
annotations: {
|
|
161
|
+
readOnlyHint: true,
|
|
162
|
+
},
|
|
163
|
+
inputSchema: z
|
|
164
|
+
.object({
|
|
165
|
+
query: z
|
|
166
|
+
.string()
|
|
167
|
+
.describe("SQL SELECT query to execute (must start with SELECT and cannot contain destructive operations). Example: SELECT * FROM movies WHERE genre = 'comedy'"),
|
|
168
|
+
databaseName: z
|
|
169
|
+
.string()
|
|
170
|
+
.optional()
|
|
171
|
+
.describe("Name of the database to query (optional). Omit to use the default configured database."),
|
|
172
|
+
})
|
|
173
|
+
.passthrough(),
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
tool: searchDataTool,
|
|
177
|
+
readOnly: true,
|
|
178
|
+
annotations: {
|
|
179
|
+
readOnlyHint: true,
|
|
180
|
+
},
|
|
181
|
+
inputSchema: z
|
|
182
|
+
.object({
|
|
183
|
+
tableName: z.string().describe("Name of the table to search"),
|
|
184
|
+
schemaName: z
|
|
185
|
+
.string()
|
|
186
|
+
.optional()
|
|
187
|
+
.describe("Schema containing the table (optional). Omit to use the default schema resolution."),
|
|
188
|
+
columns: z
|
|
189
|
+
.array(z.string())
|
|
190
|
+
.describe("Columns to search with LIKE. Example: ['name', 'email', 'city']"),
|
|
191
|
+
searchTerm: z
|
|
192
|
+
.string()
|
|
193
|
+
.describe("Search term to match against the selected columns."),
|
|
194
|
+
limit: z
|
|
195
|
+
.number()
|
|
196
|
+
.optional()
|
|
197
|
+
.describe("Maximum number of rows to return (optional). Clamped to MAX_ROWS."),
|
|
198
|
+
databaseName: z
|
|
199
|
+
.string()
|
|
200
|
+
.optional()
|
|
201
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
202
|
+
})
|
|
203
|
+
.passthrough(),
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
tool: explainQueryTool,
|
|
207
|
+
readOnly: true,
|
|
208
|
+
annotations: {
|
|
209
|
+
readOnlyHint: true,
|
|
210
|
+
},
|
|
211
|
+
inputSchema: z
|
|
212
|
+
.object({
|
|
213
|
+
query: z
|
|
214
|
+
.string()
|
|
215
|
+
.describe("SQL SELECT query to analyze. The query must pass the same safety checks as read_data."),
|
|
216
|
+
databaseName: z
|
|
217
|
+
.string()
|
|
218
|
+
.optional()
|
|
219
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
220
|
+
})
|
|
221
|
+
.passthrough(),
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
tool: insertDataTool,
|
|
225
|
+
readOnly: false,
|
|
226
|
+
annotations: {
|
|
227
|
+
destructiveHint: true,
|
|
228
|
+
},
|
|
229
|
+
inputSchema: z
|
|
230
|
+
.object({
|
|
231
|
+
tableName: z
|
|
232
|
+
.string()
|
|
233
|
+
.describe("Name of the table to insert data into"),
|
|
234
|
+
data: z
|
|
235
|
+
.union([recordSchema, z.array(recordSchema)])
|
|
236
|
+
.describe("Single row object or array of row objects to insert. All rows in an array must share the same columns."),
|
|
237
|
+
databaseName: z
|
|
238
|
+
.string()
|
|
239
|
+
.optional()
|
|
240
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
241
|
+
})
|
|
242
|
+
.strict(),
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
tool: updateDataTool,
|
|
246
|
+
readOnly: false,
|
|
247
|
+
annotations: {
|
|
248
|
+
destructiveHint: true,
|
|
249
|
+
},
|
|
250
|
+
inputSchema: z
|
|
251
|
+
.object({
|
|
252
|
+
tableName: z.string().describe("Name of the table to update"),
|
|
253
|
+
updates: recordSchema.describe("Key-value pairs of columns to update. Example: { status: 'active' }"),
|
|
254
|
+
filters: z
|
|
255
|
+
.array(filterSchema)
|
|
256
|
+
.describe("Structured filters combined with AND to identify which rows to update."),
|
|
257
|
+
databaseName: z
|
|
258
|
+
.string()
|
|
259
|
+
.optional()
|
|
260
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
261
|
+
})
|
|
262
|
+
.strict(),
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
tool: deleteDataTool,
|
|
266
|
+
readOnly: false,
|
|
267
|
+
annotations: {
|
|
268
|
+
destructiveHint: true,
|
|
269
|
+
},
|
|
270
|
+
inputSchema: z
|
|
271
|
+
.object({
|
|
272
|
+
tableName: z
|
|
273
|
+
.string()
|
|
274
|
+
.describe("Name of the table to delete rows from."),
|
|
275
|
+
schemaName: z
|
|
276
|
+
.string()
|
|
277
|
+
.optional()
|
|
278
|
+
.describe("Schema containing the table (optional)."),
|
|
279
|
+
filters: z
|
|
280
|
+
.array(filterSchema)
|
|
281
|
+
.describe("Structured filters combined with AND to target rows for deletion."),
|
|
282
|
+
databaseName: z
|
|
283
|
+
.string()
|
|
284
|
+
.optional()
|
|
285
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
286
|
+
})
|
|
287
|
+
.strict(),
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
tool: createTableTool,
|
|
291
|
+
readOnly: false,
|
|
292
|
+
annotations: {
|
|
293
|
+
destructiveHint: true,
|
|
294
|
+
},
|
|
295
|
+
inputSchema: z
|
|
296
|
+
.object({
|
|
297
|
+
schemaName: z
|
|
298
|
+
.string()
|
|
299
|
+
.optional()
|
|
300
|
+
.describe("Name of the schema for the new table (optional)."),
|
|
301
|
+
tableName: z.string().describe("Name of the table to create"),
|
|
302
|
+
columns: z
|
|
303
|
+
.array(z
|
|
304
|
+
.object({
|
|
305
|
+
name: z.string().describe("Column name"),
|
|
306
|
+
type: z
|
|
307
|
+
.string()
|
|
308
|
+
.describe("SQL type declaration only (e.g., 'INT', 'NVARCHAR(255)', 'DECIMAL(10, 2)')."),
|
|
309
|
+
nullable: z
|
|
310
|
+
.boolean()
|
|
311
|
+
.optional()
|
|
312
|
+
.describe("Whether the column allows NULL values."),
|
|
313
|
+
isPrimaryKey: z
|
|
314
|
+
.boolean()
|
|
315
|
+
.optional()
|
|
316
|
+
.describe("Whether the column is part of the primary key."),
|
|
317
|
+
isUnique: z
|
|
318
|
+
.boolean()
|
|
319
|
+
.optional()
|
|
320
|
+
.describe("Whether the column has a UNIQUE constraint."),
|
|
321
|
+
isIdentity: z
|
|
322
|
+
.boolean()
|
|
323
|
+
.optional()
|
|
324
|
+
.describe("Whether the column is an identity column."),
|
|
325
|
+
identitySeed: z
|
|
326
|
+
.number()
|
|
327
|
+
.int()
|
|
328
|
+
.nonnegative()
|
|
329
|
+
.optional()
|
|
330
|
+
.describe("Identity seed value when isIdentity is true."),
|
|
331
|
+
identityIncrement: z
|
|
332
|
+
.number()
|
|
333
|
+
.int()
|
|
334
|
+
.nonnegative()
|
|
335
|
+
.optional()
|
|
336
|
+
.describe("Identity increment value when isIdentity is true."),
|
|
337
|
+
})
|
|
338
|
+
.strict())
|
|
339
|
+
.describe("Array of validated column definitions."),
|
|
340
|
+
databaseName: z
|
|
341
|
+
.string()
|
|
342
|
+
.optional()
|
|
343
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
344
|
+
})
|
|
345
|
+
.strict(),
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
tool: createIndexTool,
|
|
349
|
+
readOnly: false,
|
|
350
|
+
annotations: {
|
|
351
|
+
destructiveHint: true,
|
|
352
|
+
},
|
|
353
|
+
inputSchema: z
|
|
354
|
+
.object({
|
|
355
|
+
schemaName: z
|
|
356
|
+
.string()
|
|
357
|
+
.optional()
|
|
358
|
+
.describe("Name of the schema containing the table"),
|
|
359
|
+
tableName: z.string().describe("Name of the table to create index on"),
|
|
360
|
+
indexName: z.string().describe("Name for the new index"),
|
|
361
|
+
columns: z
|
|
362
|
+
.array(z.string())
|
|
363
|
+
.describe("Array of column names to include in the index"),
|
|
364
|
+
isUnique: z
|
|
365
|
+
.boolean()
|
|
366
|
+
.optional()
|
|
367
|
+
.describe("Whether the index should enforce uniqueness"),
|
|
368
|
+
isClustered: z
|
|
369
|
+
.boolean()
|
|
370
|
+
.optional()
|
|
371
|
+
.describe("Whether the index should be clustered"),
|
|
372
|
+
databaseName: z
|
|
373
|
+
.string()
|
|
374
|
+
.optional()
|
|
375
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
376
|
+
})
|
|
377
|
+
.strict(),
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
tool: dropTableTool,
|
|
381
|
+
readOnly: false,
|
|
382
|
+
annotations: {
|
|
383
|
+
destructiveHint: true,
|
|
384
|
+
},
|
|
385
|
+
inputSchema: z
|
|
386
|
+
.object({
|
|
387
|
+
tableName: z.string().describe("Name of the table to drop"),
|
|
388
|
+
databaseName: z
|
|
389
|
+
.string()
|
|
390
|
+
.optional()
|
|
391
|
+
.describe("Name of the database to use (optional). Omit to use the default configured database."),
|
|
392
|
+
})
|
|
393
|
+
.strict(),
|
|
394
|
+
},
|
|
395
|
+
];
|
|
396
|
+
export function getAvailableTools(isReadOnly) {
|
|
397
|
+
return isReadOnly
|
|
398
|
+
? toolDefinitions.filter((definition) => definition.readOnly)
|
|
399
|
+
: toolDefinitions;
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=toolRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../src/toolRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
interface CreateIndexParams {
|
|
2
|
+
schemaName?: string;
|
|
3
|
+
tableName: string;
|
|
4
|
+
indexName: string;
|
|
5
|
+
columns: string[];
|
|
6
|
+
isUnique?: boolean;
|
|
7
|
+
isClustered?: boolean;
|
|
8
|
+
databaseName?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class CreateIndexTool {
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
run(params: CreateIndexParams): Promise<{
|
|
14
|
+
success: boolean;
|
|
15
|
+
message: string;
|
|
16
|
+
details?: undefined;
|
|
17
|
+
} | {
|
|
18
|
+
success: boolean;
|
|
19
|
+
message: string;
|
|
20
|
+
details: {
|
|
21
|
+
schemaName: string | undefined;
|
|
22
|
+
tableName: string;
|
|
23
|
+
indexName: string;
|
|
24
|
+
columnNames: string;
|
|
25
|
+
isUnique: boolean;
|
|
26
|
+
isClustered: boolean;
|
|
27
|
+
};
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
24
31
|
//# sourceMappingURL=CreateIndexTool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateIndexTool.d.ts","sourceRoot":"","sources":["../../src/tools/CreateIndexTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CreateIndexTool.d.ts","sourceRoot":"","sources":["../../src/tools/CreateIndexTool.ts"],"names":[],"mappings":"AAGA,UAAU,iBAAiB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,IAAI,SAAkB;IACtB,WAAW,SACsE;IAE3E,GAAG,CAAC,MAAM,EAAE,iBAAiB;;;;;;;;;;;;;;;;CAkDpC"}
|
|
@@ -1,78 +1,48 @@
|
|
|
1
|
-
import { getSqlRequest } from "../db.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
this.
|
|
6
|
-
this.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
},
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
let indexType = isClustered ? "CLUSTERED" : "NONCLUSTERED";
|
|
49
|
-
if (isUnique) {
|
|
50
|
-
indexType = `UNIQUE ${indexType}`;
|
|
51
|
-
}
|
|
52
|
-
const columnNames = columns.join(", ");
|
|
53
|
-
const tableRef = schemaName ? `${schemaName}.${tableName}` : tableName;
|
|
54
|
-
const query = `CREATE ${indexType} INDEX ${indexName} ON ${tableRef} (${columnNames})`;
|
|
55
|
-
await request.query(query);
|
|
56
|
-
return {
|
|
57
|
-
success: true,
|
|
58
|
-
message: `Index [${indexName}] created successfully on table [${tableRef}]`,
|
|
59
|
-
details: {
|
|
60
|
-
schemaName: schemaName || undefined,
|
|
61
|
-
tableName,
|
|
62
|
-
indexName,
|
|
63
|
-
columnNames,
|
|
64
|
-
isUnique,
|
|
65
|
-
isClustered,
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
console.error("Error creating index:", error);
|
|
71
|
-
return {
|
|
72
|
-
success: false,
|
|
73
|
-
message: `Failed to create index: ${error}`,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
1
|
+
import { getSqlRequest } from "../db.js";
|
|
2
|
+
import { buildQualifiedName, quoteIdentifier } from "../sql.js";
|
|
3
|
+
export class CreateIndexTool {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.name = "create_index";
|
|
6
|
+
this.description = "Creates an index on a specified column or columns in an MSSQL Database table";
|
|
7
|
+
}
|
|
8
|
+
async run(params) {
|
|
9
|
+
try {
|
|
10
|
+
const { schemaName, tableName, indexName, columns, databaseName, isUnique = false, isClustered = false, } = params;
|
|
11
|
+
const { request, error } = await getSqlRequest(databaseName);
|
|
12
|
+
if (error) {
|
|
13
|
+
return { success: false, message: error };
|
|
14
|
+
}
|
|
15
|
+
let indexType = isClustered ? "CLUSTERED" : "NONCLUSTERED";
|
|
16
|
+
if (isUnique) {
|
|
17
|
+
indexType = `UNIQUE ${indexType}`;
|
|
18
|
+
}
|
|
19
|
+
if (!Array.isArray(columns) || columns.length === 0) {
|
|
20
|
+
throw new Error("At least one column is required to create an index.");
|
|
21
|
+
}
|
|
22
|
+
const columnNames = columns.map((columnName) => quoteIdentifier(columnName)).join(", ");
|
|
23
|
+
const tableRef = buildQualifiedName(tableName, schemaName);
|
|
24
|
+
const query = `CREATE ${indexType} INDEX ${quoteIdentifier(indexName)} ON ${tableRef} (${columnNames})`;
|
|
25
|
+
await request.query(query);
|
|
26
|
+
return {
|
|
27
|
+
success: true,
|
|
28
|
+
message: `Index [${indexName}] created successfully on table [${tableRef}]`,
|
|
29
|
+
details: {
|
|
30
|
+
schemaName: schemaName || undefined,
|
|
31
|
+
tableName,
|
|
32
|
+
indexName,
|
|
33
|
+
columnNames,
|
|
34
|
+
isUnique,
|
|
35
|
+
isClustered,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error("Error creating index:", error);
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
message: `Failed to create index: ${error}`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
78
48
|
//# sourceMappingURL=CreateIndexTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateIndexTool.js","sourceRoot":"","sources":["../../src/tools/CreateIndexTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CreateIndexTool.js","sourceRoot":"","sources":["../../src/tools/CreateIndexTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAYhE,MAAM,OAAO,eAAe;IAA5B;QACE,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GACT,8EAA8E,CAAC;IAoDnF,CAAC;IAlDC,KAAK,CAAC,GAAG,CAAC,MAAyB;QACjC,IAAI,CAAC;YACH,MAAM,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,OAAO,EACP,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,WAAW,GAAG,KAAK,GACpB,GAAG,MAAM,CAAC;YAEX,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5C,CAAC;YAED,IAAI,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC;YAC3D,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS,GAAG,UAAU,SAAS,EAAE,CAAC;YACpC,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,UAAU,SAAS,UAAU,eAAe,CAAC,SAAS,CAAC,OAAO,QAAQ,KAAK,WAAW,GAAG,CAAC;YACxG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE3B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,UAAU,SAAS,oCAAoC,QAAQ,GAAG;gBAC3E,OAAO,EAAE;oBACP,UAAU,EAAE,UAAU,IAAI,SAAS;oBACnC,SAAS;oBACT,SAAS;oBACT,WAAW;oBACX,QAAQ;oBACR,WAAW;iBACZ;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,2BAA2B,KAAK,EAAE;aAC5C,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { type SqlTypeDeclaration } from "../writeSafety.js";
|
|
2
|
+
interface CreateTableParams {
|
|
3
|
+
schemaName?: string;
|
|
4
|
+
tableName: string;
|
|
5
|
+
columns: Array<{
|
|
6
|
+
name: string;
|
|
7
|
+
} & SqlTypeDeclaration>;
|
|
8
|
+
databaseName?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class CreateTableTool {
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
run(params: CreateTableParams): Promise<{
|
|
14
|
+
success: boolean;
|
|
15
|
+
message: string;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
12
19
|
//# sourceMappingURL=CreateTableTool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/CreateTableTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CreateTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/CreateTableTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,UAAU,iBAAiB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,IAAI,SAAkB;IACtB,WAAW,SAC+D;IAEpE,GAAG,CAAC,MAAM,EAAE,iBAAiB;;;;CA6BpC"}
|