@eamonboyle/mssql-mcp 1.1.0 → 1.3.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.
Files changed (144) hide show
  1. package/README.md +169 -22
  2. package/dist/config.d.ts +13 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +74 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/db.d.ts +29 -24
  7. package/dist/db.d.ts.map +1 -1
  8. package/dist/db.js +144 -112
  9. package/dist/db.js.map +1 -1
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.js +382 -122
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcpResults.d.ts +49 -0
  14. package/dist/mcpResults.d.ts.map +1 -0
  15. package/dist/mcpResults.js +246 -0
  16. package/dist/mcpResults.js.map +1 -0
  17. package/dist/promptRegistry.d.ts +16 -0
  18. package/dist/promptRegistry.d.ts.map +1 -0
  19. package/dist/promptRegistry.js +112 -0
  20. package/dist/promptRegistry.js.map +1 -0
  21. package/dist/resourceRegistry.d.ts +14 -0
  22. package/dist/resourceRegistry.d.ts.map +1 -0
  23. package/dist/resourceRegistry.js +311 -0
  24. package/dist/resourceRegistry.js.map +1 -0
  25. package/dist/schema.d.ts +57 -0
  26. package/dist/schema.d.ts.map +1 -0
  27. package/dist/schema.js +390 -0
  28. package/dist/schema.js.map +1 -0
  29. package/dist/serverState.d.ts +28 -0
  30. package/dist/serverState.d.ts.map +1 -0
  31. package/dist/serverState.js +99 -0
  32. package/dist/serverState.js.map +1 -0
  33. package/dist/sql.d.ts +7 -0
  34. package/dist/sql.d.ts.map +1 -0
  35. package/dist/sql.js +73 -0
  36. package/dist/sql.js.map +1 -0
  37. package/dist/toolRegistry.d.ts +20 -0
  38. package/dist/toolRegistry.d.ts.map +1 -0
  39. package/dist/toolRegistry.js +547 -0
  40. package/dist/toolRegistry.js.map +1 -0
  41. package/dist/tools/AnalyzeTableTool.d.ts +37 -0
  42. package/dist/tools/AnalyzeTableTool.d.ts.map +1 -0
  43. package/dist/tools/AnalyzeTableTool.js +81 -0
  44. package/dist/tools/AnalyzeTableTool.js.map +1 -0
  45. package/dist/tools/CreateIndexTool.d.ts +30 -23
  46. package/dist/tools/CreateIndexTool.d.ts.map +1 -1
  47. package/dist/tools/CreateIndexTool.js +47 -77
  48. package/dist/tools/CreateIndexTool.js.map +1 -1
  49. package/dist/tools/CreateTableTool.d.ts +18 -11
  50. package/dist/tools/CreateTableTool.d.ts.map +1 -1
  51. package/dist/tools/CreateTableTool.js +37 -61
  52. package/dist/tools/CreateTableTool.js.map +1 -1
  53. package/dist/tools/DeleteDataTool.d.ts +22 -0
  54. package/dist/tools/DeleteDataTool.d.ts.map +1 -0
  55. package/dist/tools/DeleteDataTool.js +38 -0
  56. package/dist/tools/DeleteDataTool.js.map +1 -0
  57. package/dist/tools/DescribeObjectTool.d.ts +21 -0
  58. package/dist/tools/DescribeObjectTool.d.ts.map +1 -0
  59. package/dist/tools/DescribeObjectTool.js +31 -0
  60. package/dist/tools/DescribeObjectTool.js.map +1 -0
  61. package/dist/tools/DescribeRelationshipsTool.d.ts +20 -0
  62. package/dist/tools/DescribeRelationshipsTool.d.ts.map +1 -0
  63. package/dist/tools/DescribeRelationshipsTool.js +24 -0
  64. package/dist/tools/DescribeRelationshipsTool.js.map +1 -0
  65. package/dist/tools/DescribeTableTool.d.ts +19 -20
  66. package/dist/tools/DescribeTableTool.d.ts.map +1 -1
  67. package/dist/tools/DescribeTableTool.js +23 -44
  68. package/dist/tools/DescribeTableTool.js.map +1 -1
  69. package/dist/tools/DropTableTool.d.ts +13 -11
  70. package/dist/tools/DropTableTool.d.ts.map +1 -1
  71. package/dist/tools/DropTableTool.js +30 -44
  72. package/dist/tools/DropTableTool.js.map +1 -1
  73. package/dist/tools/ExplainQueryTool.d.ts +32 -0
  74. package/dist/tools/ExplainQueryTool.d.ts.map +1 -0
  75. package/dist/tools/ExplainQueryTool.js +102 -0
  76. package/dist/tools/ExplainQueryTool.js.map +1 -0
  77. package/dist/tools/InsertDataTool.d.ts +20 -16
  78. package/dist/tools/InsertDataTool.d.ts.map +1 -1
  79. package/dist/tools/InsertDataTool.js +91 -108
  80. package/dist/tools/InsertDataTool.js.map +1 -1
  81. package/dist/tools/ListDatabasesTool.d.ts +16 -0
  82. package/dist/tools/ListDatabasesTool.d.ts.map +1 -0
  83. package/dist/tools/ListDatabasesTool.js +26 -0
  84. package/dist/tools/ListDatabasesTool.js.map +1 -0
  85. package/dist/tools/ListForeignKeysTool.d.ts +19 -0
  86. package/dist/tools/ListForeignKeysTool.d.ts.map +1 -0
  87. package/dist/tools/ListForeignKeysTool.js +24 -0
  88. package/dist/tools/ListForeignKeysTool.js.map +1 -0
  89. package/dist/tools/ListObjectsTool.d.ts +20 -0
  90. package/dist/tools/ListObjectsTool.d.ts.map +1 -0
  91. package/dist/tools/ListObjectsTool.js +26 -0
  92. package/dist/tools/ListObjectsTool.js.map +1 -0
  93. package/dist/tools/ListTableTool.d.ts +20 -16
  94. package/dist/tools/ListTableTool.d.ts.map +1 -1
  95. package/dist/tools/ListTableTool.js +32 -51
  96. package/dist/tools/ListTableTool.js.map +1 -1
  97. package/dist/tools/PreviewDeleteTool.d.ts +28 -0
  98. package/dist/tools/PreviewDeleteTool.d.ts.map +1 -0
  99. package/dist/tools/PreviewDeleteTool.js +31 -0
  100. package/dist/tools/PreviewDeleteTool.js.map +1 -0
  101. package/dist/tools/PreviewUpdateTool.d.ts +30 -0
  102. package/dist/tools/PreviewUpdateTool.d.ts.map +1 -0
  103. package/dist/tools/PreviewUpdateTool.js +34 -0
  104. package/dist/tools/PreviewUpdateTool.js.map +1 -0
  105. package/dist/tools/ReadDataTool.d.ts +35 -33
  106. package/dist/tools/ReadDataTool.d.ts.map +1 -1
  107. package/dist/tools/ReadDataTool.js +92 -105
  108. package/dist/tools/ReadDataTool.js.map +1 -1
  109. package/dist/tools/SearchDataTool.d.ts +27 -0
  110. package/dist/tools/SearchDataTool.d.ts.map +1 -0
  111. package/dist/tools/SearchDataTool.js +61 -0
  112. package/dist/tools/SearchDataTool.js.map +1 -0
  113. package/dist/tools/UpdateDataTool.d.ts +22 -16
  114. package/dist/tools/UpdateDataTool.d.ts.map +1 -1
  115. package/dist/tools/UpdateDataTool.js +48 -65
  116. package/dist/tools/UpdateDataTool.js.map +1 -1
  117. package/dist/validation.d.ts +13 -13
  118. package/dist/validation.js +133 -133
  119. package/dist/validation.js.map +1 -1
  120. package/dist/writePreview.d.ts +20 -0
  121. package/dist/writePreview.d.ts.map +1 -0
  122. package/dist/writePreview.js +27 -0
  123. package/dist/writePreview.js.map +1 -0
  124. package/dist/writePreviewGrant.d.ts +18 -0
  125. package/dist/writePreviewGrant.d.ts.map +1 -0
  126. package/dist/writePreviewGrant.js +71 -0
  127. package/dist/writePreviewGrant.js.map +1 -0
  128. package/dist/writePreviewGrantStore.d.ts +10 -0
  129. package/dist/writePreviewGrantStore.d.ts.map +1 -0
  130. package/dist/writePreviewGrantStore.js +47 -0
  131. package/dist/writePreviewGrantStore.js.map +1 -0
  132. package/dist/writeSafety.d.ts +21 -0
  133. package/dist/writeSafety.d.ts.map +1 -0
  134. package/dist/writeSafety.js +169 -0
  135. package/dist/writeSafety.js.map +1 -0
  136. package/package.json +6 -5
  137. package/dist/__tests__/db.test.d.ts +0 -2
  138. package/dist/__tests__/db.test.d.ts.map +0 -1
  139. package/dist/__tests__/db.test.js +0 -204
  140. package/dist/__tests__/db.test.js.map +0 -1
  141. package/dist/__tests__/validation.test.d.ts +0 -2
  142. package/dist/__tests__/validation.test.d.ts.map +0 -1
  143. package/dist/__tests__/validation.test.js +0 -111
  144. package/dist/__tests__/validation.test.js.map +0 -1
@@ -0,0 +1,547 @@
1
+ import { completable } from "@modelcontextprotocol/sdk/server/completable.js";
2
+ import { z } from "zod";
3
+ import { toolResultOutputSchema } from "./mcpResults.js";
4
+ import { AnalyzeTableTool } from "./tools/AnalyzeTableTool.js";
5
+ import { CreateIndexTool } from "./tools/CreateIndexTool.js";
6
+ import { CreateTableTool } from "./tools/CreateTableTool.js";
7
+ import { DeleteDataTool } from "./tools/DeleteDataTool.js";
8
+ import { DescribeRelationshipsTool } from "./tools/DescribeRelationshipsTool.js";
9
+ import { DescribeObjectTool } from "./tools/DescribeObjectTool.js";
10
+ import { DescribeTableTool } from "./tools/DescribeTableTool.js";
11
+ import { DropTableTool } from "./tools/DropTableTool.js";
12
+ import { ExplainQueryTool } from "./tools/ExplainQueryTool.js";
13
+ import { InsertDataTool } from "./tools/InsertDataTool.js";
14
+ import { ListDatabasesTool } from "./tools/ListDatabasesTool.js";
15
+ import { ListForeignKeysTool } from "./tools/ListForeignKeysTool.js";
16
+ import { ListObjectsTool } from "./tools/ListObjectsTool.js";
17
+ import { ListTableTool } from "./tools/ListTableTool.js";
18
+ import { PreviewDeleteTool } from "./tools/PreviewDeleteTool.js";
19
+ import { PreviewUpdateTool } from "./tools/PreviewUpdateTool.js";
20
+ import { ReadDataTool } from "./tools/ReadDataTool.js";
21
+ import { SearchDataTool } from "./tools/SearchDataTool.js";
22
+ import { UpdateDataTool } from "./tools/UpdateDataTool.js";
23
+ import { SQL_FILTER_OPERATORS } from "./writeSafety.js";
24
+ import { getAllowedDatabases } from "./db.js";
25
+ import { listDatabaseObjects, listDatabaseTables } from "./schema.js";
26
+ const recordSchema = z.record(z.string(), z.unknown());
27
+ const filterSchema = z
28
+ .object({
29
+ column: z.string().describe("Column name to filter on."),
30
+ operator: z
31
+ .enum(SQL_FILTER_OPERATORS)
32
+ .describe("Comparison operator for this filter."),
33
+ value: z
34
+ .unknown()
35
+ .optional()
36
+ .describe("Single comparison value. Required for most operators."),
37
+ values: z
38
+ .array(z.unknown())
39
+ .optional()
40
+ .describe("Multiple comparison values. Required for IN filters."),
41
+ })
42
+ .strict()
43
+ .superRefine((filter, ctx) => {
44
+ if (filter.operator === "IN") {
45
+ if (!Array.isArray(filter.values) || filter.values.length === 0) {
46
+ ctx.addIssue({
47
+ code: z.ZodIssueCode.custom,
48
+ path: ["values"],
49
+ message: "IN filters require a non-empty values array.",
50
+ });
51
+ }
52
+ return;
53
+ }
54
+ if (filter.operator === "IS NULL" || filter.operator === "IS NOT NULL") {
55
+ return;
56
+ }
57
+ if (!("value" in filter)) {
58
+ ctx.addIssue({
59
+ code: z.ZodIssueCode.custom,
60
+ path: ["value"],
61
+ message: `${filter.operator} filters require a value.`,
62
+ });
63
+ }
64
+ });
65
+ const listTableTool = new ListTableTool();
66
+ const describeTableTool = new DescribeTableTool();
67
+ const listObjectsTool = new ListObjectsTool();
68
+ const describeObjectTool = new DescribeObjectTool();
69
+ const listDatabasesTool = new ListDatabasesTool();
70
+ const listForeignKeysTool = new ListForeignKeysTool();
71
+ const describeRelationshipsTool = new DescribeRelationshipsTool();
72
+ const analyzeTableTool = new AnalyzeTableTool();
73
+ const readDataTool = new ReadDataTool();
74
+ const searchDataTool = new SearchDataTool();
75
+ const explainQueryTool = new ExplainQueryTool();
76
+ const previewUpdateTool = new PreviewUpdateTool();
77
+ const previewDeleteTool = new PreviewDeleteTool();
78
+ const insertDataTool = new InsertDataTool();
79
+ const updateDataTool = new UpdateDataTool();
80
+ const deleteDataTool = new DeleteDataTool();
81
+ const createTableTool = new CreateTableTool();
82
+ const createIndexTool = new CreateIndexTool();
83
+ const dropTableTool = new DropTableTool();
84
+ const databaseNameSchema = completable(z
85
+ .string()
86
+ .describe("Name of the database to use (optional). Omit to use the default configured database."), async (value) => getAllowedDatabases().filter((database) => database.toLowerCase().startsWith(String(value ?? "").toLowerCase())));
87
+ const schemaNameSchema = completable(z.string().describe("Schema name."), async (value, context) => {
88
+ const databaseName = context?.arguments?.databaseName;
89
+ const tables = await listDatabaseTables(databaseName);
90
+ const schemas = [...new Set(tables.map((table) => table.schemaName))];
91
+ return schemas.filter((schema) => schema.toLowerCase().startsWith(String(value ?? "").toLowerCase()));
92
+ });
93
+ const tableNameSchema = completable(z.string().describe("Table name."), async (value, context) => {
94
+ const databaseName = context?.arguments?.databaseName;
95
+ const schemaName = context?.arguments?.schemaName;
96
+ const tables = await listDatabaseTables(databaseName, schemaName);
97
+ return tables
98
+ .map((table) => table.tableName)
99
+ .filter((table) => table.toLowerCase().startsWith(String(value ?? "").toLowerCase()));
100
+ });
101
+ const objectNameSchema = completable(z.string().describe("Object name."), async (value, context) => {
102
+ const databaseName = context?.arguments?.databaseName;
103
+ const schemaName = context?.arguments?.schemaName;
104
+ const objects = await listDatabaseObjects(databaseName, undefined, schemaName);
105
+ return objects
106
+ .map((object) => object.name)
107
+ .filter((name) => name.toLowerCase().startsWith(String(value ?? "").toLowerCase()));
108
+ });
109
+ export const toolDefinitions = [
110
+ {
111
+ tool: listDatabasesTool,
112
+ readOnly: true,
113
+ outputSchema: toolResultOutputSchema,
114
+ annotations: {
115
+ readOnlyHint: true,
116
+ idempotentHint: true,
117
+ },
118
+ inputSchema: z.object({}).strict(),
119
+ },
120
+ {
121
+ tool: listTableTool,
122
+ readOnly: true,
123
+ outputSchema: toolResultOutputSchema,
124
+ annotations: {
125
+ readOnlyHint: true,
126
+ idempotentHint: true,
127
+ },
128
+ inputSchema: z
129
+ .object({
130
+ parameters: z
131
+ .array(z.string().describe("Schema name to filter by"))
132
+ .optional()
133
+ .describe("Schemas to filter by (optional)"),
134
+ databaseName: databaseNameSchema.optional(),
135
+ })
136
+ .passthrough(),
137
+ },
138
+ {
139
+ tool: describeTableTool,
140
+ readOnly: true,
141
+ outputSchema: toolResultOutputSchema,
142
+ annotations: {
143
+ readOnlyHint: true,
144
+ },
145
+ inputSchema: z
146
+ .object({
147
+ tableName: tableNameSchema.describe("Name of the table to describe"),
148
+ schemaName: schemaNameSchema
149
+ .optional()
150
+ .describe("Schema containing the table (optional). Omit to search across schemas."),
151
+ databaseName: databaseNameSchema.optional(),
152
+ })
153
+ .passthrough(),
154
+ },
155
+ {
156
+ tool: listObjectsTool,
157
+ readOnly: true,
158
+ outputSchema: toolResultOutputSchema,
159
+ annotations: {
160
+ readOnlyHint: true,
161
+ idempotentHint: true,
162
+ },
163
+ inputSchema: z
164
+ .object({
165
+ objectTypes: z
166
+ .array(z.enum(["table", "view", "procedure", "function", "trigger"]))
167
+ .optional()
168
+ .describe("Optional object types to include. Omit to list tables, views, procedures, functions, and triggers."),
169
+ schemaName: schemaNameSchema
170
+ .optional()
171
+ .describe("Schema to filter by (optional)."),
172
+ databaseName: databaseNameSchema.optional(),
173
+ })
174
+ .passthrough(),
175
+ },
176
+ {
177
+ tool: describeObjectTool,
178
+ readOnly: true,
179
+ outputSchema: toolResultOutputSchema,
180
+ annotations: {
181
+ readOnlyHint: true,
182
+ },
183
+ inputSchema: z
184
+ .object({
185
+ objectName: objectNameSchema.describe("Object name to describe."),
186
+ objectTypes: z
187
+ .array(z.enum(["table", "view", "procedure", "function", "trigger"]))
188
+ .optional()
189
+ .describe("Optional object types to narrow the lookup. Omit to search across supported object types."),
190
+ schemaName: schemaNameSchema
191
+ .optional()
192
+ .describe("Schema containing the object (optional)."),
193
+ databaseName: databaseNameSchema.optional(),
194
+ })
195
+ .passthrough(),
196
+ },
197
+ {
198
+ tool: listForeignKeysTool,
199
+ readOnly: true,
200
+ outputSchema: toolResultOutputSchema,
201
+ annotations: {
202
+ readOnlyHint: true,
203
+ idempotentHint: true,
204
+ },
205
+ inputSchema: z
206
+ .object({
207
+ schemaName: schemaNameSchema
208
+ .optional()
209
+ .describe("Schema to filter by (optional)."),
210
+ databaseName: databaseNameSchema.optional(),
211
+ })
212
+ .strict(),
213
+ },
214
+ {
215
+ tool: describeRelationshipsTool,
216
+ readOnly: true,
217
+ outputSchema: toolResultOutputSchema,
218
+ annotations: {
219
+ readOnlyHint: true,
220
+ },
221
+ inputSchema: z
222
+ .object({
223
+ tableName: tableNameSchema,
224
+ schemaName: schemaNameSchema.optional(),
225
+ databaseName: databaseNameSchema.optional(),
226
+ })
227
+ .strict(),
228
+ },
229
+ {
230
+ tool: analyzeTableTool,
231
+ readOnly: true,
232
+ outputSchema: toolResultOutputSchema,
233
+ annotations: {
234
+ readOnlyHint: true,
235
+ },
236
+ inputSchema: z
237
+ .object({
238
+ tableName: tableNameSchema,
239
+ schemaName: schemaNameSchema.optional(),
240
+ databaseName: databaseNameSchema.optional(),
241
+ })
242
+ .strict(),
243
+ },
244
+ {
245
+ tool: readDataTool,
246
+ readOnly: true,
247
+ outputSchema: toolResultOutputSchema,
248
+ annotations: {
249
+ readOnlyHint: true,
250
+ },
251
+ inputSchema: z
252
+ .object({
253
+ query: z
254
+ .string()
255
+ .describe("SQL SELECT query to execute (must start with SELECT and cannot contain destructive operations). Example: SELECT * FROM movies WHERE genre = 'comedy'"),
256
+ databaseName: databaseNameSchema.optional(),
257
+ })
258
+ .passthrough(),
259
+ },
260
+ {
261
+ tool: searchDataTool,
262
+ readOnly: true,
263
+ outputSchema: toolResultOutputSchema,
264
+ annotations: {
265
+ readOnlyHint: true,
266
+ },
267
+ inputSchema: z
268
+ .object({
269
+ tableName: tableNameSchema.describe("Name of the table to search"),
270
+ schemaName: schemaNameSchema
271
+ .optional()
272
+ .describe("Schema containing the table (optional). Omit to use the default schema resolution."),
273
+ columns: z
274
+ .array(z.string())
275
+ .describe("Columns to search with LIKE. Example: ['name', 'email', 'city']"),
276
+ searchTerm: z
277
+ .string()
278
+ .describe("Search term to match against the selected columns."),
279
+ limit: z
280
+ .number()
281
+ .optional()
282
+ .describe("Maximum number of rows to return (optional). Clamped to MAX_ROWS."),
283
+ databaseName: databaseNameSchema.optional(),
284
+ })
285
+ .passthrough(),
286
+ },
287
+ {
288
+ tool: explainQueryTool,
289
+ readOnly: true,
290
+ outputSchema: toolResultOutputSchema,
291
+ annotations: {
292
+ readOnlyHint: true,
293
+ },
294
+ inputSchema: z
295
+ .object({
296
+ query: z
297
+ .string()
298
+ .describe("SQL SELECT query to analyze. The query must pass the same safety checks as read_data."),
299
+ databaseName: databaseNameSchema.optional(),
300
+ })
301
+ .passthrough(),
302
+ },
303
+ {
304
+ tool: previewUpdateTool,
305
+ readOnly: true,
306
+ outputSchema: toolResultOutputSchema,
307
+ annotations: {
308
+ readOnlyHint: true,
309
+ },
310
+ inputSchema: z
311
+ .object({
312
+ tableName: tableNameSchema,
313
+ schemaName: schemaNameSchema.optional(),
314
+ updates: recordSchema.describe("Key-value pairs of columns to update. Example: { status: 'active' }"),
315
+ filters: z.array(filterSchema),
316
+ previewLimit: z.number().optional(),
317
+ databaseName: databaseNameSchema.optional(),
318
+ })
319
+ .strict(),
320
+ },
321
+ {
322
+ tool: previewDeleteTool,
323
+ readOnly: true,
324
+ outputSchema: toolResultOutputSchema,
325
+ annotations: {
326
+ readOnlyHint: true,
327
+ },
328
+ inputSchema: z
329
+ .object({
330
+ tableName: tableNameSchema,
331
+ schemaName: schemaNameSchema.optional(),
332
+ filters: z.array(filterSchema),
333
+ previewLimit: z.number().optional(),
334
+ databaseName: databaseNameSchema.optional(),
335
+ })
336
+ .strict(),
337
+ },
338
+ {
339
+ tool: insertDataTool,
340
+ readOnly: false,
341
+ outputSchema: toolResultOutputSchema,
342
+ annotations: {
343
+ destructiveHint: true,
344
+ },
345
+ inputSchema: z
346
+ .object({
347
+ tableName: z
348
+ .string()
349
+ .describe("Name of the table to insert data into"),
350
+ data: z
351
+ .union([recordSchema, z.array(recordSchema)])
352
+ .describe("Single row object or array of row objects to insert. All rows in an array must share the same columns."),
353
+ databaseName: databaseNameSchema.optional(),
354
+ confirmed: z
355
+ .boolean()
356
+ .optional()
357
+ .describe("Set to true after reviewing the planned write."),
358
+ })
359
+ .strict(),
360
+ requiresConfirmation: true,
361
+ },
362
+ {
363
+ tool: updateDataTool,
364
+ readOnly: false,
365
+ outputSchema: toolResultOutputSchema,
366
+ annotations: {
367
+ destructiveHint: true,
368
+ },
369
+ inputSchema: z
370
+ .object({
371
+ tableName: tableNameSchema.describe("Name of the table to update"),
372
+ schemaName: schemaNameSchema
373
+ .optional()
374
+ .describe("Schema containing the table (optional)."),
375
+ updates: recordSchema.describe("Key-value pairs of columns to update. Example: { status: 'active' }"),
376
+ filters: z
377
+ .array(filterSchema)
378
+ .describe("Structured filters combined with AND to identify which rows to update."),
379
+ databaseName: databaseNameSchema.optional(),
380
+ previewToken: z
381
+ .string()
382
+ .optional()
383
+ .describe("Token from preview_update (required when REQUIRE_WRITE_PREVIEW=true, default)."),
384
+ confirmed: z
385
+ .boolean()
386
+ .optional()
387
+ .describe("Set to true after reviewing preview_update."),
388
+ })
389
+ .strict(),
390
+ requiresConfirmation: true,
391
+ writePreviewTool: "preview_update",
392
+ },
393
+ {
394
+ tool: deleteDataTool,
395
+ readOnly: false,
396
+ outputSchema: toolResultOutputSchema,
397
+ annotations: {
398
+ destructiveHint: true,
399
+ },
400
+ inputSchema: z
401
+ .object({
402
+ tableName: tableNameSchema.describe("Name of the table to delete rows from."),
403
+ schemaName: schemaNameSchema
404
+ .optional()
405
+ .describe("Schema containing the table (optional)."),
406
+ filters: z
407
+ .array(filterSchema)
408
+ .describe("Structured filters combined with AND to target rows for deletion."),
409
+ databaseName: databaseNameSchema.optional(),
410
+ previewToken: z
411
+ .string()
412
+ .optional()
413
+ .describe("Token from preview_delete (required when REQUIRE_WRITE_PREVIEW=true, default)."),
414
+ confirmed: z
415
+ .boolean()
416
+ .optional()
417
+ .describe("Set to true after reviewing preview_delete."),
418
+ })
419
+ .strict(),
420
+ requiresConfirmation: true,
421
+ writePreviewTool: "preview_delete",
422
+ },
423
+ {
424
+ tool: createTableTool,
425
+ readOnly: false,
426
+ outputSchema: toolResultOutputSchema,
427
+ annotations: {
428
+ destructiveHint: true,
429
+ },
430
+ inputSchema: z
431
+ .object({
432
+ schemaName: z
433
+ .string()
434
+ .optional()
435
+ .describe("Name of the schema for the new table (optional)."),
436
+ tableName: tableNameSchema.describe("Name of the table to create"),
437
+ columns: z
438
+ .array(z
439
+ .object({
440
+ name: z.string().describe("Column name"),
441
+ type: z
442
+ .string()
443
+ .describe("SQL type declaration only (e.g., 'INT', 'NVARCHAR(255)', 'DECIMAL(10, 2)')."),
444
+ nullable: z
445
+ .boolean()
446
+ .optional()
447
+ .describe("Whether the column allows NULL values."),
448
+ isPrimaryKey: z
449
+ .boolean()
450
+ .optional()
451
+ .describe("Whether the column is part of the primary key."),
452
+ isUnique: z
453
+ .boolean()
454
+ .optional()
455
+ .describe("Whether the column has a UNIQUE constraint."),
456
+ isIdentity: z
457
+ .boolean()
458
+ .optional()
459
+ .describe("Whether the column is an identity column."),
460
+ identitySeed: z
461
+ .number()
462
+ .int()
463
+ .nonnegative()
464
+ .optional()
465
+ .describe("Identity seed value when isIdentity is true."),
466
+ identityIncrement: z
467
+ .number()
468
+ .int()
469
+ .nonnegative()
470
+ .optional()
471
+ .describe("Identity increment value when isIdentity is true."),
472
+ })
473
+ .strict())
474
+ .describe("Array of validated column definitions."),
475
+ databaseName: databaseNameSchema.optional(),
476
+ confirmed: z
477
+ .boolean()
478
+ .optional()
479
+ .describe("Set to true after reviewing the planned DDL change."),
480
+ })
481
+ .strict(),
482
+ requiresConfirmation: true,
483
+ requiresDdl: true,
484
+ },
485
+ {
486
+ tool: createIndexTool,
487
+ readOnly: false,
488
+ outputSchema: toolResultOutputSchema,
489
+ annotations: {
490
+ destructiveHint: true,
491
+ },
492
+ inputSchema: z
493
+ .object({
494
+ schemaName: z
495
+ .string()
496
+ .optional()
497
+ .describe("Name of the schema containing the table"),
498
+ tableName: tableNameSchema.describe("Name of the table to create index on"),
499
+ indexName: z.string().describe("Name for the new index"),
500
+ columns: z
501
+ .array(z.string())
502
+ .describe("Array of column names to include in the index"),
503
+ isUnique: z
504
+ .boolean()
505
+ .optional()
506
+ .describe("Whether the index should enforce uniqueness"),
507
+ isClustered: z
508
+ .boolean()
509
+ .optional()
510
+ .describe("Whether the index should be clustered"),
511
+ databaseName: databaseNameSchema.optional(),
512
+ confirmed: z
513
+ .boolean()
514
+ .optional()
515
+ .describe("Set to true after reviewing the planned DDL change."),
516
+ })
517
+ .strict(),
518
+ requiresConfirmation: true,
519
+ requiresDdl: true,
520
+ },
521
+ {
522
+ tool: dropTableTool,
523
+ readOnly: false,
524
+ outputSchema: toolResultOutputSchema,
525
+ annotations: {
526
+ destructiveHint: true,
527
+ },
528
+ inputSchema: z
529
+ .object({
530
+ tableName: tableNameSchema.describe("Name of the table to drop"),
531
+ databaseName: databaseNameSchema.optional(),
532
+ confirmed: z
533
+ .boolean()
534
+ .optional()
535
+ .describe("Set to true after reviewing the planned DDL change."),
536
+ })
537
+ .strict(),
538
+ requiresConfirmation: true,
539
+ requiresDdl: true,
540
+ },
541
+ ];
542
+ export function getAvailableTools(isReadOnly) {
543
+ return isReadOnly
544
+ ? toolDefinitions.filter((definition) => definition.readOnly)
545
+ : toolDefinitions;
546
+ }
547
+ //# sourceMappingURL=toolRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../src/toolRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ interface AnalyzeTableParams {
2
+ tableName: string;
3
+ schemaName?: string;
4
+ databaseName?: string;
5
+ }
6
+ type AnalyzeRow = {
7
+ schemaName?: unknown;
8
+ tableName?: unknown;
9
+ rowCount?: unknown;
10
+ reservedMB?: unknown;
11
+ usedMB?: unknown;
12
+ };
13
+ type IndexRow = {
14
+ name?: unknown;
15
+ type?: unknown;
16
+ isUnique?: unknown;
17
+ isPrimaryKey?: unknown;
18
+ };
19
+ export declare function formatAnalyzeTableText(data: {
20
+ summary: AnalyzeRow | null;
21
+ indexes: IndexRow[];
22
+ }): string;
23
+ export declare class AnalyzeTableTool {
24
+ name: string;
25
+ description: string;
26
+ run(params: AnalyzeTableParams): Promise<{
27
+ success: boolean;
28
+ message: string;
29
+ data: import("../schema.js").AnalyzeTableResult;
30
+ } | {
31
+ success: boolean;
32
+ message: string;
33
+ data?: undefined;
34
+ }>;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=AnalyzeTableTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyzeTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/AnalyzeTableTool.ts"],"names":[],"mappings":"AAEA,UAAU,kBAAkB;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,UAAU,GAAG;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAiBF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB,GAAG,MAAM,CAoCT;AAED,qBAAa,gBAAgB;IAC3B,IAAI,SAAmB;IACvB,WAAW,SACkD;IAEvD,GAAG,CAAC,MAAM,EAAE,kBAAkB;;;;;;;;;CA6BrC"}