@elad-nofy/mssql-mcp 1.0.1 → 1.0.3

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 (43) hide show
  1. package/README.md +70 -1
  2. package/dist/config.d.ts +2 -2
  3. package/dist/config.js +4 -4
  4. package/dist/config.js.map +1 -1
  5. package/dist/index.js +48 -16
  6. package/dist/index.js.map +1 -1
  7. package/dist/mssqlClient.d.ts +6 -4
  8. package/dist/mssqlClient.d.ts.map +1 -1
  9. package/dist/mssqlClient.js +49 -20
  10. package/dist/mssqlClient.js.map +1 -1
  11. package/dist/tools/availability.d.ts +30 -10
  12. package/dist/tools/availability.d.ts.map +1 -1
  13. package/dist/tools/availability.js +18 -12
  14. package/dist/tools/availability.js.map +1 -1
  15. package/dist/tools/connection.d.ts +26 -5
  16. package/dist/tools/connection.d.ts.map +1 -1
  17. package/dist/tools/connection.js +14 -8
  18. package/dist/tools/connection.js.map +1 -1
  19. package/dist/tools/health.d.ts +42 -10
  20. package/dist/tools/health.d.ts.map +1 -1
  21. package/dist/tools/health.js +22 -13
  22. package/dist/tools/health.js.map +1 -1
  23. package/dist/tools/index.d.ts +1 -0
  24. package/dist/tools/index.d.ts.map +1 -1
  25. package/dist/tools/index.js +1 -0
  26. package/dist/tools/index.js.map +1 -1
  27. package/dist/tools/jobs.d.ts +25 -5
  28. package/dist/tools/jobs.d.ts.map +1 -1
  29. package/dist/tools/jobs.js +12 -6
  30. package/dist/tools/jobs.js.map +1 -1
  31. package/dist/tools/performance.d.ts +26 -6
  32. package/dist/tools/performance.d.ts.map +1 -1
  33. package/dist/tools/performance.js +12 -6
  34. package/dist/tools/performance.js.map +1 -1
  35. package/dist/tools/queries.d.ts +15 -3
  36. package/dist/tools/queries.d.ts.map +1 -1
  37. package/dist/tools/queries.js +7 -3
  38. package/dist/tools/queries.js.map +1 -1
  39. package/dist/tools/schema.d.ts +230 -0
  40. package/dist/tools/schema.d.ts.map +1 -0
  41. package/dist/tools/schema.js +374 -0
  42. package/dist/tools/schema.js.map +1 -0
  43. package/package.json +1 -1
@@ -0,0 +1,374 @@
1
+ import { z } from 'zod';
2
+ const serverParam = z.string().optional().describe('SQL Server instance (e.g., "server\\instance" or "server,port"). Uses default if not specified.');
3
+ export const schemaTools = {
4
+ get_tables: {
5
+ description: 'List all tables in a database with row counts, sizes, and metadata',
6
+ inputSchema: z.object({
7
+ server: serverParam,
8
+ database: z.string().describe('Database name'),
9
+ schema: z.string().optional().describe('Filter by schema name (e.g., dbo)'),
10
+ includeRowCounts: z.boolean().optional().default(true).describe('Include row counts (may be slow on large databases)'),
11
+ }),
12
+ handler: async (client, args) => {
13
+ const schemaFilter = args.schema ? `AND s.name = '${args.schema}'` : '';
14
+ const query = `
15
+ USE [${args.database}];
16
+
17
+ SELECT
18
+ s.name as schema_name,
19
+ t.name as table_name,
20
+ t.create_date,
21
+ t.modify_date,
22
+ ${args.includeRowCounts ? `
23
+ p.rows as row_count,
24
+ CAST(SUM(a.total_pages) * 8.0 / 1024 AS DECIMAL(10,2)) as total_size_mb,
25
+ CAST(SUM(a.used_pages) * 8.0 / 1024 AS DECIMAL(10,2)) as used_size_mb,
26
+ ` : ''}
27
+ (SELECT COUNT(*) FROM sys.columns c WHERE c.object_id = t.object_id) as column_count,
28
+ (SELECT COUNT(*) FROM sys.indexes i WHERE i.object_id = t.object_id AND i.is_primary_key = 0 AND i.type > 0) as index_count,
29
+ ISNULL((SELECT COUNT(*) FROM sys.foreign_keys fk WHERE fk.parent_object_id = t.object_id), 0) as fk_count,
30
+ OBJECTPROPERTY(t.object_id, 'TableHasPrimaryKey') as has_primary_key,
31
+ OBJECTPROPERTY(t.object_id, 'TableHasIdentity') as has_identity
32
+ FROM sys.tables t
33
+ INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
34
+ ${args.includeRowCounts ? `
35
+ LEFT JOIN sys.partitions p ON t.object_id = p.object_id AND p.index_id IN (0, 1)
36
+ LEFT JOIN sys.allocation_units a ON p.partition_id = a.container_id
37
+ ` : ''}
38
+ WHERE t.is_ms_shipped = 0
39
+ ${schemaFilter}
40
+ GROUP BY s.name, t.name, t.object_id, t.create_date, t.modify_date
41
+ ${args.includeRowCounts ? ', p.rows' : ''}
42
+ ORDER BY s.name, t.name
43
+ `;
44
+ return await client.query(query, undefined, args.server);
45
+ },
46
+ },
47
+ get_columns: {
48
+ description: 'Get column definitions for a specific table',
49
+ inputSchema: z.object({
50
+ server: serverParam,
51
+ database: z.string().describe('Database name'),
52
+ table: z.string().describe('Table name'),
53
+ schema: z.string().optional().default('dbo').describe('Schema name'),
54
+ }),
55
+ handler: async (client, args) => {
56
+ const query = `
57
+ USE [${args.database}];
58
+
59
+ SELECT
60
+ c.column_id as ordinal_position,
61
+ c.name as column_name,
62
+ t.name as data_type,
63
+ c.max_length,
64
+ c.precision,
65
+ c.scale,
66
+ c.is_nullable,
67
+ c.is_identity,
68
+ c.is_computed,
69
+ ISNULL(dc.definition, '') as default_value,
70
+ ISNULL(cc.definition, '') as computed_definition,
71
+ CASE WHEN pk.column_id IS NOT NULL THEN 1 ELSE 0 END as is_primary_key,
72
+ CASE WHEN fk.parent_column_id IS NOT NULL THEN 1 ELSE 0 END as is_foreign_key,
73
+ ISNULL(fk_ref.referenced_table, '') as fk_references,
74
+ ISNULL(ep.value, '') as description
75
+ FROM sys.columns c
76
+ INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
77
+ INNER JOIN sys.tables tbl ON c.object_id = tbl.object_id
78
+ INNER JOIN sys.schemas s ON tbl.schema_id = s.schema_id
79
+ LEFT JOIN sys.default_constraints dc ON c.default_object_id = dc.object_id
80
+ LEFT JOIN sys.computed_columns cc ON c.object_id = cc.object_id AND c.column_id = cc.column_id
81
+ LEFT JOIN (
82
+ SELECT ic.object_id, ic.column_id
83
+ FROM sys.index_columns ic
84
+ INNER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
85
+ WHERE i.is_primary_key = 1
86
+ ) pk ON c.object_id = pk.object_id AND c.column_id = pk.column_id
87
+ LEFT JOIN sys.foreign_key_columns fk ON c.object_id = fk.parent_object_id AND c.column_id = fk.parent_column_id
88
+ LEFT JOIN (
89
+ SELECT
90
+ fkc.parent_object_id,
91
+ fkc.parent_column_id,
92
+ OBJECT_SCHEMA_NAME(fkc.referenced_object_id) + '.' + OBJECT_NAME(fkc.referenced_object_id) + '.' + COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) as referenced_table
93
+ FROM sys.foreign_key_columns fkc
94
+ ) fk_ref ON c.object_id = fk_ref.parent_object_id AND c.column_id = fk_ref.parent_column_id
95
+ LEFT JOIN sys.extended_properties ep ON c.object_id = ep.major_id AND c.column_id = ep.minor_id AND ep.name = 'MS_Description'
96
+ WHERE tbl.name = @table AND s.name = @schema
97
+ ORDER BY c.column_id
98
+ `;
99
+ return await client.query(query, { table: args.table, schema: args.schema || 'dbo' }, args.server);
100
+ },
101
+ },
102
+ get_stored_procedures: {
103
+ description: 'List stored procedures with optional code view',
104
+ inputSchema: z.object({
105
+ server: serverParam,
106
+ database: z.string().describe('Database name'),
107
+ schema: z.string().optional().describe('Filter by schema name'),
108
+ name: z.string().optional().describe('Filter by procedure name (supports wildcards with %)'),
109
+ includeCode: z.boolean().optional().default(false).describe('Include procedure source code'),
110
+ }),
111
+ handler: async (client, args) => {
112
+ const schemaFilter = args.schema ? `AND s.name = '${args.schema}'` : '';
113
+ const nameFilter = args.name ? `AND p.name LIKE '${args.name}'` : '';
114
+ const query = `
115
+ USE [${args.database}];
116
+
117
+ SELECT
118
+ s.name as schema_name,
119
+ p.name as procedure_name,
120
+ p.create_date,
121
+ p.modify_date,
122
+ ${args.includeCode ? 'OBJECT_DEFINITION(p.object_id) as definition,' : ''}
123
+ (SELECT COUNT(*) FROM sys.parameters pm WHERE pm.object_id = p.object_id) as parameter_count
124
+ FROM sys.procedures p
125
+ INNER JOIN sys.schemas s ON p.schema_id = s.schema_id
126
+ WHERE p.is_ms_shipped = 0
127
+ ${schemaFilter}
128
+ ${nameFilter}
129
+ ORDER BY s.name, p.name
130
+ `;
131
+ return await client.query(query, undefined, args.server);
132
+ },
133
+ },
134
+ get_functions: {
135
+ description: 'List user-defined functions with optional code view',
136
+ inputSchema: z.object({
137
+ server: serverParam,
138
+ database: z.string().describe('Database name'),
139
+ schema: z.string().optional().describe('Filter by schema name'),
140
+ type: z.enum(['all', 'scalar', 'table', 'inline']).optional().default('all').describe('Function type filter'),
141
+ includeCode: z.boolean().optional().default(false).describe('Include function source code'),
142
+ }),
143
+ handler: async (client, args) => {
144
+ const schemaFilter = args.schema ? `AND s.name = '${args.schema}'` : '';
145
+ const typeMap = {
146
+ 'scalar': "AND o.type = 'FN'",
147
+ 'table': "AND o.type = 'TF'",
148
+ 'inline': "AND o.type = 'IF'",
149
+ 'all': '',
150
+ };
151
+ const typeFilter = typeMap[args.type || 'all'];
152
+ const query = `
153
+ USE [${args.database}];
154
+
155
+ SELECT
156
+ s.name as schema_name,
157
+ o.name as function_name,
158
+ CASE o.type
159
+ WHEN 'FN' THEN 'Scalar'
160
+ WHEN 'TF' THEN 'Table-valued'
161
+ WHEN 'IF' THEN 'Inline table-valued'
162
+ ELSE o.type
163
+ END as function_type,
164
+ o.create_date,
165
+ o.modify_date,
166
+ ${args.includeCode ? 'OBJECT_DEFINITION(o.object_id) as definition,' : ''}
167
+ (SELECT COUNT(*) FROM sys.parameters pm WHERE pm.object_id = o.object_id AND pm.parameter_id > 0) as parameter_count
168
+ FROM sys.objects o
169
+ INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
170
+ WHERE o.type IN ('FN', 'TF', 'IF')
171
+ AND o.is_ms_shipped = 0
172
+ ${schemaFilter}
173
+ ${typeFilter}
174
+ ORDER BY s.name, o.name
175
+ `;
176
+ return await client.query(query, undefined, args.server);
177
+ },
178
+ },
179
+ get_views: {
180
+ description: 'List views with optional definition',
181
+ inputSchema: z.object({
182
+ server: serverParam,
183
+ database: z.string().describe('Database name'),
184
+ schema: z.string().optional().describe('Filter by schema name'),
185
+ includeDefinition: z.boolean().optional().default(false).describe('Include view definition SQL'),
186
+ }),
187
+ handler: async (client, args) => {
188
+ const schemaFilter = args.schema ? `AND s.name = '${args.schema}'` : '';
189
+ const query = `
190
+ USE [${args.database}];
191
+
192
+ SELECT
193
+ s.name as schema_name,
194
+ v.name as view_name,
195
+ v.create_date,
196
+ v.modify_date,
197
+ ${args.includeDefinition ? 'OBJECT_DEFINITION(v.object_id) as definition,' : ''}
198
+ (SELECT COUNT(*) FROM sys.columns c WHERE c.object_id = v.object_id) as column_count,
199
+ OBJECTPROPERTY(v.object_id, 'IsIndexed') as is_indexed,
200
+ OBJECTPROPERTY(v.object_id, 'IsSchemaBound') as is_schema_bound
201
+ FROM sys.views v
202
+ INNER JOIN sys.schemas s ON v.schema_id = s.schema_id
203
+ WHERE v.is_ms_shipped = 0
204
+ ${schemaFilter}
205
+ ORDER BY s.name, v.name
206
+ `;
207
+ return await client.query(query, undefined, args.server);
208
+ },
209
+ },
210
+ get_foreign_keys: {
211
+ description: 'Get foreign key relationships between tables',
212
+ inputSchema: z.object({
213
+ server: serverParam,
214
+ database: z.string().describe('Database name'),
215
+ table: z.string().optional().describe('Filter by table name (shows FKs from and to this table)'),
216
+ }),
217
+ handler: async (client, args) => {
218
+ const tableFilter = args.table
219
+ ? `AND (OBJECT_NAME(fk.parent_object_id) = '${args.table}' OR OBJECT_NAME(fk.referenced_object_id) = '${args.table}')`
220
+ : '';
221
+ const query = `
222
+ USE [${args.database}];
223
+
224
+ SELECT
225
+ fk.name as constraint_name,
226
+ OBJECT_SCHEMA_NAME(fk.parent_object_id) as from_schema,
227
+ OBJECT_NAME(fk.parent_object_id) as from_table,
228
+ COL_NAME(fkc.parent_object_id, fkc.parent_column_id) as from_column,
229
+ OBJECT_SCHEMA_NAME(fk.referenced_object_id) as to_schema,
230
+ OBJECT_NAME(fk.referenced_object_id) as to_table,
231
+ COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) as to_column,
232
+ fk.delete_referential_action_desc as on_delete,
233
+ fk.update_referential_action_desc as on_update,
234
+ fk.is_disabled,
235
+ fk.is_not_trusted
236
+ FROM sys.foreign_keys fk
237
+ INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
238
+ WHERE 1=1
239
+ ${tableFilter}
240
+ ORDER BY from_schema, from_table, constraint_name, fkc.constraint_column_id
241
+ `;
242
+ return await client.query(query, undefined, args.server);
243
+ },
244
+ },
245
+ get_indexes: {
246
+ description: 'Get index information for tables',
247
+ inputSchema: z.object({
248
+ server: serverParam,
249
+ database: z.string().describe('Database name'),
250
+ table: z.string().optional().describe('Filter by table name'),
251
+ schema: z.string().optional().default('dbo').describe('Schema name'),
252
+ }),
253
+ handler: async (client, args) => {
254
+ const tableFilter = args.table ? `AND t.name = '${args.table}'` : '';
255
+ const schemaFilter = args.schema ? `AND s.name = '${args.schema}'` : '';
256
+ const query = `
257
+ USE [${args.database}];
258
+
259
+ SELECT
260
+ s.name as schema_name,
261
+ t.name as table_name,
262
+ i.name as index_name,
263
+ i.type_desc as index_type,
264
+ i.is_unique,
265
+ i.is_primary_key,
266
+ i.is_unique_constraint,
267
+ STUFF((
268
+ SELECT ', ' + c.name + CASE WHEN ic.is_descending_key = 1 THEN ' DESC' ELSE '' END
269
+ FROM sys.index_columns ic
270
+ INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
271
+ WHERE ic.object_id = i.object_id AND ic.index_id = i.index_id AND ic.is_included_column = 0
272
+ ORDER BY ic.key_ordinal
273
+ FOR XML PATH('')
274
+ ), 1, 2, '') as key_columns,
275
+ STUFF((
276
+ SELECT ', ' + c.name
277
+ FROM sys.index_columns ic
278
+ INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
279
+ WHERE ic.object_id = i.object_id AND ic.index_id = i.index_id AND ic.is_included_column = 1
280
+ ORDER BY ic.index_column_id
281
+ FOR XML PATH('')
282
+ ), 1, 2, '') as included_columns,
283
+ i.filter_definition,
284
+ ps.row_count,
285
+ CAST(ps.used_page_count * 8.0 / 1024 AS DECIMAL(10,2)) as size_mb
286
+ FROM sys.indexes i
287
+ INNER JOIN sys.tables t ON i.object_id = t.object_id
288
+ INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
289
+ LEFT JOIN sys.dm_db_partition_stats ps ON i.object_id = ps.object_id AND i.index_id = ps.index_id
290
+ WHERE i.type > 0
291
+ ${tableFilter}
292
+ ${schemaFilter}
293
+ ORDER BY s.name, t.name, i.index_id
294
+ `;
295
+ return await client.query(query, undefined, args.server);
296
+ },
297
+ },
298
+ get_connected_users: {
299
+ description: 'Get currently connected users and sessions',
300
+ inputSchema: z.object({
301
+ server: serverParam,
302
+ database: z.string().optional().describe('Filter by database name'),
303
+ activeOnly: z.boolean().optional().default(false).describe('Only show sessions with active requests'),
304
+ }),
305
+ handler: async (client, args) => {
306
+ const dbFilter = args.database ? `AND DB_NAME(s.database_id) = '${args.database}'` : '';
307
+ const activeFilter = args.activeOnly ? 'AND r.session_id IS NOT NULL' : '';
308
+ const query = `
309
+ SELECT
310
+ s.session_id,
311
+ s.login_name,
312
+ s.host_name,
313
+ s.program_name,
314
+ DB_NAME(s.database_id) as database_name,
315
+ s.login_time,
316
+ s.last_request_start_time,
317
+ s.last_request_end_time,
318
+ s.status as session_status,
319
+ s.cpu_time as total_cpu_time,
320
+ s.memory_usage * 8 as memory_kb,
321
+ s.reads as total_reads,
322
+ s.writes as total_writes,
323
+ c.client_net_address,
324
+ c.auth_scheme,
325
+ r.status as request_status,
326
+ r.command,
327
+ r.wait_type,
328
+ r.blocking_session_id
329
+ FROM sys.dm_exec_sessions s
330
+ LEFT JOIN sys.dm_exec_connections c ON s.session_id = c.session_id
331
+ LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
332
+ WHERE s.is_user_process = 1
333
+ ${dbFilter}
334
+ ${activeFilter}
335
+ ORDER BY s.login_time DESC
336
+ `;
337
+ return await client.query(query, undefined, args.server);
338
+ },
339
+ },
340
+ get_triggers: {
341
+ description: 'List triggers in a database',
342
+ inputSchema: z.object({
343
+ server: serverParam,
344
+ database: z.string().describe('Database name'),
345
+ table: z.string().optional().describe('Filter by table name'),
346
+ includeDefinition: z.boolean().optional().default(false).describe('Include trigger definition SQL'),
347
+ }),
348
+ handler: async (client, args) => {
349
+ const tableFilter = args.table ? `AND OBJECT_NAME(tr.parent_id) = '${args.table}'` : '';
350
+ const query = `
351
+ USE [${args.database}];
352
+
353
+ SELECT
354
+ OBJECT_SCHEMA_NAME(tr.parent_id) as schema_name,
355
+ OBJECT_NAME(tr.parent_id) as table_name,
356
+ tr.name as trigger_name,
357
+ tr.is_disabled,
358
+ tr.is_instead_of_trigger,
359
+ CASE WHEN OBJECTPROPERTY(tr.object_id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT ' ELSE '' END +
360
+ CASE WHEN OBJECTPROPERTY(tr.object_id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE ' ELSE '' END +
361
+ CASE WHEN OBJECTPROPERTY(tr.object_id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' ELSE '' END as trigger_events,
362
+ tr.create_date,
363
+ tr.modify_date
364
+ ${args.includeDefinition ? ', OBJECT_DEFINITION(tr.object_id) as definition' : ''}
365
+ FROM sys.triggers tr
366
+ WHERE tr.parent_class = 1 -- Object triggers only
367
+ ${tableFilter}
368
+ ORDER BY schema_name, table_name, trigger_name
369
+ `;
370
+ return await client.query(query, undefined, args.server);
371
+ },
372
+ },
373
+ };
374
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elad-nofy/mssql-mcp",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "MCP server for Microsoft SQL Server - Query execution, performance analysis, health monitoring",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",