@connorbritain/mssql-mcp-core 0.1.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 (129) hide show
  1. package/dist/audit/AuditLogger.d.ts +37 -0
  2. package/dist/audit/AuditLogger.d.ts.map +1 -0
  3. package/dist/audit/AuditLogger.js +145 -0
  4. package/dist/audit/AuditLogger.js.map +1 -0
  5. package/dist/config/EnvironmentManager.d.ts +75 -0
  6. package/dist/config/EnvironmentManager.d.ts.map +1 -0
  7. package/dist/config/EnvironmentManager.js +305 -0
  8. package/dist/config/EnvironmentManager.js.map +1 -0
  9. package/dist/config/ScriptManager.d.ts +69 -0
  10. package/dist/config/ScriptManager.d.ts.map +1 -0
  11. package/dist/config/ScriptManager.js +166 -0
  12. package/dist/config/ScriptManager.js.map +1 -0
  13. package/dist/config/SecretResolver.d.ts +66 -0
  14. package/dist/config/SecretResolver.d.ts.map +1 -0
  15. package/dist/config/SecretResolver.js +230 -0
  16. package/dist/config/SecretResolver.js.map +1 -0
  17. package/dist/index.d.ts +14 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +17 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/routing/IntentRouter.d.ts +17 -0
  22. package/dist/routing/IntentRouter.d.ts.map +1 -0
  23. package/dist/routing/IntentRouter.js +243 -0
  24. package/dist/routing/IntentRouter.js.map +1 -0
  25. package/dist/server/createMcpServer.d.ts +7 -0
  26. package/dist/server/createMcpServer.d.ts.map +1 -0
  27. package/dist/server/createMcpServer.js +100 -0
  28. package/dist/server/createMcpServer.js.map +1 -0
  29. package/dist/server/toolsets.d.ts +42 -0
  30. package/dist/server/toolsets.d.ts.map +1 -0
  31. package/dist/server/toolsets.js +303 -0
  32. package/dist/server/toolsets.js.map +1 -0
  33. package/dist/server/wrapToolRun.d.ts +13 -0
  34. package/dist/server/wrapToolRun.d.ts.map +1 -0
  35. package/dist/server/wrapToolRun.js +102 -0
  36. package/dist/server/wrapToolRun.js.map +1 -0
  37. package/dist/shims.d.ts +2 -0
  38. package/dist/shims.d.ts.map +1 -0
  39. package/dist/shims.js +15 -0
  40. package/dist/shims.js.map +1 -0
  41. package/dist/tools/CreateIndexTool.d.ts +24 -0
  42. package/dist/tools/CreateIndexTool.d.ts.map +1 -0
  43. package/dist/tools/CreateIndexTool.js +64 -0
  44. package/dist/tools/CreateIndexTool.js.map +1 -0
  45. package/dist/tools/CreateTableTool.d.ts +12 -0
  46. package/dist/tools/CreateTableTool.d.ts.map +1 -0
  47. package/dist/tools/CreateTableTool.js +49 -0
  48. package/dist/tools/CreateTableTool.js.map +1 -0
  49. package/dist/tools/DeleteDataTool.d.ts +56 -0
  50. package/dist/tools/DeleteDataTool.d.ts.map +1 -0
  51. package/dist/tools/DeleteDataTool.js +103 -0
  52. package/dist/tools/DeleteDataTool.js.map +1 -0
  53. package/dist/tools/DescribeTableTool.d.ts +32 -0
  54. package/dist/tools/DescribeTableTool.d.ts.map +1 -0
  55. package/dist/tools/DescribeTableTool.js +116 -0
  56. package/dist/tools/DescribeTableTool.js.map +1 -0
  57. package/dist/tools/DropTableTool.d.ts +12 -0
  58. package/dist/tools/DropTableTool.d.ts.map +1 -0
  59. package/dist/tools/DropTableTool.js +37 -0
  60. package/dist/tools/DropTableTool.js.map +1 -0
  61. package/dist/tools/ExplainQueryTool.d.ts +24 -0
  62. package/dist/tools/ExplainQueryTool.d.ts.map +1 -0
  63. package/dist/tools/ExplainQueryTool.js +98 -0
  64. package/dist/tools/ExplainQueryTool.js.map +1 -0
  65. package/dist/tools/InsertDataTool.d.ts +17 -0
  66. package/dist/tools/InsertDataTool.d.ts.map +1 -0
  67. package/dist/tools/InsertDataTool.js +102 -0
  68. package/dist/tools/InsertDataTool.js.map +1 -0
  69. package/dist/tools/InspectDependenciesTool.d.ts +46 -0
  70. package/dist/tools/InspectDependenciesTool.d.ts.map +1 -0
  71. package/dist/tools/InspectDependenciesTool.js +215 -0
  72. package/dist/tools/InspectDependenciesTool.js.map +1 -0
  73. package/dist/tools/ListDatabasesTool.d.ts +27 -0
  74. package/dist/tools/ListDatabasesTool.d.ts.map +1 -0
  75. package/dist/tools/ListDatabasesTool.js +107 -0
  76. package/dist/tools/ListDatabasesTool.js.map +1 -0
  77. package/dist/tools/ListEnvironmentsTool.d.ts +49 -0
  78. package/dist/tools/ListEnvironmentsTool.d.ts.map +1 -0
  79. package/dist/tools/ListEnvironmentsTool.js +73 -0
  80. package/dist/tools/ListEnvironmentsTool.js.map +1 -0
  81. package/dist/tools/ListScriptsTool.d.ts +41 -0
  82. package/dist/tools/ListScriptsTool.d.ts.map +1 -0
  83. package/dist/tools/ListScriptsTool.js +86 -0
  84. package/dist/tools/ListScriptsTool.js.map +1 -0
  85. package/dist/tools/ListTableTool.d.ts +24 -0
  86. package/dist/tools/ListTableTool.d.ts.map +1 -0
  87. package/dist/tools/ListTableTool.js +85 -0
  88. package/dist/tools/ListTableTool.js.map +1 -0
  89. package/dist/tools/ProfileTableTool.d.ts +78 -0
  90. package/dist/tools/ProfileTableTool.d.ts.map +1 -0
  91. package/dist/tools/ProfileTableTool.js +373 -0
  92. package/dist/tools/ProfileTableTool.js.map +1 -0
  93. package/dist/tools/ReadDataTool.d.ts +61 -0
  94. package/dist/tools/ReadDataTool.d.ts.map +1 -0
  95. package/dist/tools/ReadDataTool.js +299 -0
  96. package/dist/tools/ReadDataTool.js.map +1 -0
  97. package/dist/tools/RelationshipInspectorTool.d.ts +46 -0
  98. package/dist/tools/RelationshipInspectorTool.d.ts.map +1 -0
  99. package/dist/tools/RelationshipInspectorTool.js +156 -0
  100. package/dist/tools/RelationshipInspectorTool.js.map +1 -0
  101. package/dist/tools/RunScriptTool.d.ts +214 -0
  102. package/dist/tools/RunScriptTool.d.ts.map +1 -0
  103. package/dist/tools/RunScriptTool.js +186 -0
  104. package/dist/tools/RunScriptTool.js.map +1 -0
  105. package/dist/tools/SearchSchemaTool.d.ts +88 -0
  106. package/dist/tools/SearchSchemaTool.d.ts.map +1 -0
  107. package/dist/tools/SearchSchemaTool.js +237 -0
  108. package/dist/tools/SearchSchemaTool.js.map +1 -0
  109. package/dist/tools/TestConnectionTool.d.ts +38 -0
  110. package/dist/tools/TestConnectionTool.d.ts.map +1 -0
  111. package/dist/tools/TestConnectionTool.js +156 -0
  112. package/dist/tools/TestConnectionTool.js.map +1 -0
  113. package/dist/tools/UpdateDataTool.d.ts +61 -0
  114. package/dist/tools/UpdateDataTool.d.ts.map +1 -0
  115. package/dist/tools/UpdateDataTool.js +117 -0
  116. package/dist/tools/UpdateDataTool.js.map +1 -0
  117. package/dist/tools/ValidateEnvironmentConfigTool.d.ts +51 -0
  118. package/dist/tools/ValidateEnvironmentConfigTool.d.ts.map +1 -0
  119. package/dist/tools/ValidateEnvironmentConfigTool.js +320 -0
  120. package/dist/tools/ValidateEnvironmentConfigTool.js.map +1 -0
  121. package/dist/tools/index.d.ts +21 -0
  122. package/dist/tools/index.d.ts.map +1 -0
  123. package/dist/tools/index.js +22 -0
  124. package/dist/tools/index.js.map +1 -0
  125. package/dist/types.d.ts +60 -0
  126. package/dist/types.d.ts.map +1 -0
  127. package/dist/types.js +2 -0
  128. package/dist/types.js.map +1 -0
  129. package/package.json +53 -0
@@ -0,0 +1,303 @@
1
+ import { CreateIndexTool } from "../tools/CreateIndexTool.js";
2
+ import { CreateTableTool } from "../tools/CreateTableTool.js";
3
+ import { DeleteDataTool } from "../tools/DeleteDataTool.js";
4
+ import { DescribeTableTool } from "../tools/DescribeTableTool.js";
5
+ import { DropTableTool } from "../tools/DropTableTool.js";
6
+ import { ExplainQueryTool } from "../tools/ExplainQueryTool.js";
7
+ import { InsertDataTool } from "../tools/InsertDataTool.js";
8
+ import { InspectDependenciesTool } from "../tools/InspectDependenciesTool.js";
9
+ import { ListDatabasesTool } from "../tools/ListDatabasesTool.js";
10
+ import { ListEnvironmentsTool } from "../tools/ListEnvironmentsTool.js";
11
+ import { ListScriptsTool } from "../tools/ListScriptsTool.js";
12
+ import { ListTableTool } from "../tools/ListTableTool.js";
13
+ import { ProfileTableTool } from "../tools/ProfileTableTool.js";
14
+ import { ReadDataTool } from "../tools/ReadDataTool.js";
15
+ import { RelationshipInspectorTool } from "../tools/RelationshipInspectorTool.js";
16
+ import { RunScriptTool } from "../tools/RunScriptTool.js";
17
+ import { SearchSchemaTool } from "../tools/SearchSchemaTool.js";
18
+ import { TestConnectionTool } from "../tools/TestConnectionTool.js";
19
+ import { UpdateDataTool } from "../tools/UpdateDataTool.js";
20
+ import { ValidateEnvironmentConfigTool } from "../tools/ValidateEnvironmentConfigTool.js";
21
+ // ─── Tool instances ─────────────────────────────────────────────────────────
22
+ export function createAllToolInstances() {
23
+ return {
24
+ createIndexTool: new CreateIndexTool(),
25
+ createTableTool: new CreateTableTool(),
26
+ deleteDataTool: new DeleteDataTool(),
27
+ describeTableTool: new DescribeTableTool(),
28
+ dropTableTool: new DropTableTool(),
29
+ explainQueryTool: new ExplainQueryTool(),
30
+ insertDataTool: new InsertDataTool(),
31
+ inspectDependenciesTool: new InspectDependenciesTool(),
32
+ listDatabasesTool: new ListDatabasesTool(),
33
+ listEnvironmentsTool: new ListEnvironmentsTool(),
34
+ listScriptsTool: new ListScriptsTool(),
35
+ listTableTool: new ListTableTool(),
36
+ profileTableTool: new ProfileTableTool(),
37
+ readDataTool: new ReadDataTool(),
38
+ relationshipInspectorTool: new RelationshipInspectorTool(),
39
+ runScriptTool: new RunScriptTool(),
40
+ searchSchemaTool: new SearchSchemaTool(),
41
+ testConnectionTool: new TestConnectionTool(),
42
+ updateDataTool: new UpdateDataTool(),
43
+ validateEnvironmentConfigTool: new ValidateEnvironmentConfigTool(),
44
+ };
45
+ }
46
+ // ─── Tier-based tool lists ──────────────────────────────────────────────────
47
+ /** 14 read-only tools exposed by the reader tier */
48
+ export function getReaderTools(t) {
49
+ return [
50
+ t.readDataTool,
51
+ t.listTableTool,
52
+ t.listDatabasesTool,
53
+ t.listEnvironmentsTool,
54
+ t.validateEnvironmentConfigTool,
55
+ t.listScriptsTool,
56
+ t.runScriptTool,
57
+ t.describeTableTool,
58
+ t.searchSchemaTool,
59
+ t.profileTableTool,
60
+ t.relationshipInspectorTool,
61
+ t.inspectDependenciesTool,
62
+ t.testConnectionTool,
63
+ t.explainQueryTool,
64
+ ];
65
+ }
66
+ /** 17 tools: reader tools + insert/delete/update */
67
+ export function getWriterTools(t) {
68
+ return [
69
+ ...getReaderTools(t),
70
+ t.insertDataTool,
71
+ t.deleteDataTool,
72
+ t.updateDataTool,
73
+ ];
74
+ }
75
+ /** 20 tools: writer tools + create table/index, drop table */
76
+ export function getAdminTools(t) {
77
+ return [
78
+ ...getWriterTools(t),
79
+ t.createTableTool,
80
+ t.createIndexTool,
81
+ t.dropTableTool,
82
+ ];
83
+ }
84
+ // ─── Mutating tool sets per tier ────────────────────────────────────────────
85
+ /** Reader: no mutations */
86
+ export const READER_MUTATING_TOOLS = new Set();
87
+ /** Writer: data mutation only */
88
+ export const WRITER_MUTATING_TOOLS = new Set([
89
+ "insert_data",
90
+ "delete_data",
91
+ "update_data",
92
+ ]);
93
+ /** Admin/server: data mutation + DDL */
94
+ export const ADMIN_MUTATING_TOOLS = new Set([
95
+ "insert_data",
96
+ "delete_data",
97
+ "update_data",
98
+ "create_table",
99
+ "create_index",
100
+ "drop_table",
101
+ ]);
102
+ // ─── Approval-exempt tools (read-only, no data modification) ────────────────
103
+ export const READER_APPROVAL_EXEMPT = new Set([
104
+ "list_tables",
105
+ "list_databases",
106
+ "list_environments",
107
+ "validate_environment_config",
108
+ "list_scripts",
109
+ "describe_table",
110
+ "test_connection",
111
+ "search_schema",
112
+ "inspect_relationships",
113
+ "inspect_dependencies",
114
+ "read_data",
115
+ "profile_table",
116
+ "explain_query",
117
+ "run_script",
118
+ ]);
119
+ export const WRITER_APPROVAL_EXEMPT = new Set([
120
+ "list_tables",
121
+ "list_databases",
122
+ "list_environments",
123
+ "validate_environment_config",
124
+ "list_scripts",
125
+ "describe_table",
126
+ "test_connection",
127
+ "search_schema",
128
+ "inspect_relationships",
129
+ "inspect_dependencies",
130
+ ]);
131
+ export const ADMIN_APPROVAL_EXEMPT = new Set([
132
+ "list_tables",
133
+ "list_databases",
134
+ "list_environments",
135
+ "validate_environment_config",
136
+ "list_scripts",
137
+ "describe_table",
138
+ "test_connection",
139
+ "search_schema",
140
+ "inspect_relationships",
141
+ "inspect_dependencies",
142
+ "read_data",
143
+ "profile_table",
144
+ "explain_query",
145
+ ]);
146
+ // ─── Routing registry builder ───────────────────────────────────────────────
147
+ export function buildToolRegistry(t) {
148
+ return [
149
+ {
150
+ tool: t.readDataTool,
151
+ name: t.readDataTool.name,
152
+ intents: ["data_read"],
153
+ keywords: ["select", "query", "fetch", "report", "count"],
154
+ requiredArgs: ["query"],
155
+ baseScore: 2,
156
+ },
157
+ {
158
+ tool: t.listTableTool,
159
+ name: t.listTableTool.name,
160
+ intents: ["schema_discovery"],
161
+ keywords: ["list tables", "show tables", "tables"],
162
+ baseScore: 1.5,
163
+ },
164
+ {
165
+ tool: t.describeTableTool,
166
+ name: t.describeTableTool.name,
167
+ intents: ["schema_discovery"],
168
+ keywords: ["describe", "columns", "structure"],
169
+ requiredArgs: ["tableName"],
170
+ baseScore: 1.5,
171
+ },
172
+ {
173
+ tool: t.searchSchemaTool,
174
+ name: t.searchSchemaTool.name,
175
+ intents: ["schema_discovery"],
176
+ keywords: ["search", "find", "look up"],
177
+ baseScore: 1.5,
178
+ },
179
+ {
180
+ tool: t.profileTableTool,
181
+ name: t.profileTableTool.name,
182
+ intents: ["metadata"],
183
+ keywords: ["profile", "sample", "distribution"],
184
+ requiredArgs: ["tableName"],
185
+ },
186
+ {
187
+ tool: t.relationshipInspectorTool,
188
+ name: t.relationshipInspectorTool.name,
189
+ intents: ["metadata", "schema_discovery"],
190
+ keywords: ["relationships", "foreign key", "references"],
191
+ requiredArgs: ["tableName"],
192
+ },
193
+ {
194
+ tool: t.insertDataTool,
195
+ name: t.insertDataTool.name,
196
+ intents: ["data_write"],
197
+ keywords: ["insert", "add", "create record"],
198
+ requiredArgs: ["tableName", "data"],
199
+ mutatesData: true,
200
+ },
201
+ {
202
+ tool: t.deleteDataTool,
203
+ name: t.deleteDataTool.name,
204
+ intents: ["data_write"],
205
+ keywords: ["delete", "remove", "purge"],
206
+ requiredArgs: ["tableName", "whereClause"],
207
+ mutatesData: true,
208
+ },
209
+ {
210
+ tool: t.updateDataTool,
211
+ name: t.updateDataTool.name,
212
+ intents: ["data_write"],
213
+ keywords: ["update", "modify", "fix"],
214
+ requiredArgs: ["tableName", "updates", "whereClause"],
215
+ mutatesData: true,
216
+ },
217
+ {
218
+ tool: t.createTableTool,
219
+ name: t.createTableTool.name,
220
+ intents: ["schema_change"],
221
+ keywords: ["create table", "new table"],
222
+ requiredArgs: ["tableName", "columns"],
223
+ schemaChange: true,
224
+ },
225
+ {
226
+ tool: t.createIndexTool,
227
+ name: t.createIndexTool.name,
228
+ intents: ["schema_change"],
229
+ keywords: ["create index", "add index"],
230
+ requiredArgs: ["tableName", "columns", "indexName"],
231
+ schemaChange: true,
232
+ },
233
+ {
234
+ tool: t.dropTableTool,
235
+ name: t.dropTableTool.name,
236
+ intents: ["schema_change"],
237
+ keywords: ["drop table", "remove table", "delete table"],
238
+ requiredArgs: ["tableName"],
239
+ schemaChange: true,
240
+ mutatesData: true,
241
+ },
242
+ {
243
+ tool: t.testConnectionTool,
244
+ name: t.testConnectionTool.name,
245
+ intents: ["metadata"],
246
+ keywords: ["test", "connection", "ping", "health"],
247
+ baseScore: 1,
248
+ },
249
+ {
250
+ tool: t.explainQueryTool,
251
+ name: t.explainQueryTool.name,
252
+ intents: ["metadata"],
253
+ keywords: ["plan", "explain", "showplan", "estimate"],
254
+ requiredArgs: ["query"],
255
+ baseScore: 1,
256
+ },
257
+ {
258
+ tool: t.listDatabasesTool,
259
+ name: t.listDatabasesTool.name,
260
+ intents: ["schema_discovery", "metadata"],
261
+ keywords: ["databases", "list databases", "show databases", "dbs"],
262
+ baseScore: 1.5,
263
+ },
264
+ {
265
+ tool: t.listEnvironmentsTool,
266
+ name: t.listEnvironmentsTool.name,
267
+ intents: ["metadata"],
268
+ keywords: ["environments", "list environments", "connections", "configs"],
269
+ baseScore: 1.5,
270
+ },
271
+ {
272
+ tool: t.validateEnvironmentConfigTool,
273
+ name: t.validateEnvironmentConfigTool.name,
274
+ intents: ["metadata"],
275
+ keywords: ["validate", "check", "config", "configuration", "health"],
276
+ baseScore: 1.5,
277
+ },
278
+ {
279
+ tool: t.listScriptsTool,
280
+ name: t.listScriptsTool.name,
281
+ intents: ["metadata"],
282
+ keywords: ["scripts", "list scripts", "templates", "named scripts"],
283
+ baseScore: 1.5,
284
+ },
285
+ {
286
+ tool: t.runScriptTool,
287
+ name: t.runScriptTool.name,
288
+ intents: ["data_read", "data_write"],
289
+ keywords: ["run script", "execute script", "template"],
290
+ requiredArgs: ["scriptName"],
291
+ baseScore: 1.5,
292
+ },
293
+ {
294
+ tool: t.inspectDependenciesTool,
295
+ name: t.inspectDependenciesTool.name,
296
+ intents: ["schema_discovery", "metadata"],
297
+ keywords: ["dependencies", "depends", "references", "impact", "what uses"],
298
+ requiredArgs: ["objectName"],
299
+ baseScore: 1.5,
300
+ },
301
+ ];
302
+ }
303
+ //# sourceMappingURL=toolsets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolsets.js","sourceRoot":"","sources":["../../src/server/toolsets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AAE1F,+EAA+E;AAE/E,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,eAAe,EAAE,IAAI,eAAe,EAAkB;QACtD,eAAe,EAAE,IAAI,eAAe,EAAkB;QACtD,cAAc,EAAE,IAAI,cAAc,EAAkB;QACpD,iBAAiB,EAAE,IAAI,iBAAiB,EAAkB;QAC1D,aAAa,EAAE,IAAI,aAAa,EAAkB;QAClD,gBAAgB,EAAE,IAAI,gBAAgB,EAAkB;QACxD,cAAc,EAAE,IAAI,cAAc,EAAkB;QACpD,uBAAuB,EAAE,IAAI,uBAAuB,EAAkB;QACtE,iBAAiB,EAAE,IAAI,iBAAiB,EAAkB;QAC1D,oBAAoB,EAAE,IAAI,oBAAoB,EAAkB;QAChE,eAAe,EAAE,IAAI,eAAe,EAAkB;QACtD,aAAa,EAAE,IAAI,aAAa,EAAkB;QAClD,gBAAgB,EAAE,IAAI,gBAAgB,EAAkB;QACxD,YAAY,EAAE,IAAI,YAAY,EAAkB;QAChD,yBAAyB,EAAE,IAAI,yBAAyB,EAAkB;QAC1E,aAAa,EAAE,IAAI,aAAa,EAAkB;QAClD,gBAAgB,EAAE,IAAI,gBAAgB,EAAkB;QACxD,kBAAkB,EAAE,IAAI,kBAAkB,EAAkB;QAC5D,cAAc,EAAE,IAAI,cAAc,EAAkB;QACpD,6BAA6B,EAAE,IAAI,6BAA6B,EAAkB;KACnF,CAAC;AACJ,CAAC;AAID,+EAA+E;AAE/E,oDAAoD;AACpD,MAAM,UAAU,cAAc,CAAC,CAAW;IACxC,OAAO;QACL,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,gBAAgB;KACnB,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,cAAc,CAAC,CAAW;IACxC,OAAO;QACL,GAAG,cAAc,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,cAAc;KACjB,CAAC;AACJ,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAAC,CAAW;IACvC,OAAO;QACL,GAAG,cAAc,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,aAAa;KAChB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,2BAA2B;AAC3B,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;AAEvD,iCAAiC;AACjC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IAC3C,aAAa;IACb,aAAa;IACb,aAAa;CACd,CAAC,CAAC;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IAC1C,aAAa;IACb,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,YAAY;CACb,CAAC,CAAC;AAEH,+EAA+E;AAE/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,aAAa;IACb,gBAAgB;IAChB,mBAAmB;IACnB,6BAA6B;IAC7B,cAAc;IACd,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,uBAAuB;IACvB,sBAAsB;IACtB,WAAW;IACX,eAAe;IACf,eAAe;IACf,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,aAAa;IACb,gBAAgB;IAChB,mBAAmB;IACnB,6BAA6B;IAC7B,cAAc;IACd,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,uBAAuB;IACvB,sBAAsB;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IAC3C,aAAa;IACb,gBAAgB;IAChB,mBAAmB;IACnB,6BAA6B;IAC7B,cAAc;IACd,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,uBAAuB;IACvB,sBAAsB;IACtB,WAAW;IACX,eAAe;IACf,eAAe;CAChB,CAAC,CAAC;AAEH,+EAA+E;AAE/E,MAAM,UAAU,iBAAiB,CAAC,CAAW;IAC3C,OAAO;QACL;YACE,IAAI,EAAE,CAAC,CAAC,YAAY;YACpB,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI;YACzB,OAAO,EAAE,CAAC,WAAW,CAAC;YACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;YACzD,YAAY,EAAE,CAAC,OAAO,CAAC;YACvB,SAAS,EAAE,CAAC;SACb;QACD;YACE,IAAI,EAAE,CAAC,CAAC,aAAa;YACrB,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI;YAC1B,OAAO,EAAE,CAAC,kBAAkB,CAAC;YAC7B,QAAQ,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC;YAClD,SAAS,EAAE,GAAG;SACf;QACD;YACE,IAAI,EAAE,CAAC,CAAC,iBAAiB;YACzB,IAAI,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI;YAC9B,OAAO,EAAE,CAAC,kBAAkB,CAAC;YAC7B,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC;YAC9C,YAAY,EAAE,CAAC,WAAW,CAAC;YAC3B,SAAS,EAAE,GAAG;SACf;QACD;YACE,IAAI,EAAE,CAAC,CAAC,gBAAgB;YACxB,IAAI,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI;YAC7B,OAAO,EAAE,CAAC,kBAAkB,CAAC;YAC7B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC;YACvC,SAAS,EAAE,GAAG;SACf;QACD;YACE,IAAI,EAAE,CAAC,CAAC,gBAAgB;YACxB,IAAI,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI;YAC7B,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC;YAC/C,YAAY,EAAE,CAAC,WAAW,CAAC;SAC5B;QACD;YACE,IAAI,EAAE,CAAC,CAAC,yBAAyB;YACjC,IAAI,EAAE,CAAC,CAAC,yBAAyB,CAAC,IAAI;YACtC,OAAO,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;YACzC,QAAQ,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,YAAY,CAAC;YACxD,YAAY,EAAE,CAAC,WAAW,CAAC;SAC5B;QACD;YACE,IAAI,EAAE,CAAC,CAAC,cAAc;YACtB,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI;YAC3B,OAAO,EAAE,CAAC,YAAY,CAAC;YACvB,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC;YAC5C,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;YACnC,WAAW,EAAE,IAAI;SAClB;QACD;YACE,IAAI,EAAE,CAAC,CAAC,cAAc;YACtB,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI;YAC3B,OAAO,EAAE,CAAC,YAAY,CAAC;YACvB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;YACvC,YAAY,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;YAC1C,WAAW,EAAE,IAAI;SAClB;QACD;YACE,IAAI,EAAE,CAAC,CAAC,cAAc;YACtB,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI;YAC3B,OAAO,EAAE,CAAC,YAAY,CAAC;YACvB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;YACrC,YAAY,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC;YACrD,WAAW,EAAE,IAAI;SAClB;QACD;YACE,IAAI,EAAE,CAAC,CAAC,eAAe;YACvB,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI;YAC5B,OAAO,EAAE,CAAC,eAAe,CAAC;YAC1B,QAAQ,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;YACvC,YAAY,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;YACtC,YAAY,EAAE,IAAI;SACnB;QACD;YACE,IAAI,EAAE,CAAC,CAAC,eAAe;YACvB,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI;YAC5B,OAAO,EAAE,CAAC,eAAe,CAAC;YAC1B,QAAQ,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;YACvC,YAAY,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC;YACnD,YAAY,EAAE,IAAI;SACnB;QACD;YACE,IAAI,EAAE,CAAC,CAAC,aAAa;YACrB,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI;YAC1B,OAAO,EAAE,CAAC,eAAe,CAAC;YAC1B,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,CAAC;YACxD,YAAY,EAAE,CAAC,WAAW,CAAC;YAC3B,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,IAAI;SAClB;QACD;YACE,IAAI,EAAE,CAAC,CAAC,kBAAkB;YAC1B,IAAI,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAI;YAC/B,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC;YAClD,SAAS,EAAE,CAAC;SACb;QACD;YACE,IAAI,EAAE,CAAC,CAAC,gBAAgB;YACxB,IAAI,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI;YAC7B,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;YACrD,YAAY,EAAE,CAAC,OAAO,CAAC;YACvB,SAAS,EAAE,CAAC;SACb;QACD;YACE,IAAI,EAAE,CAAC,CAAC,iBAAiB;YACzB,IAAI,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI;YAC9B,OAAO,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC;YACzC,QAAQ,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,CAAC;YAClE,SAAS,EAAE,GAAG;SACf;QACD;YACE,IAAI,EAAE,CAAC,CAAC,oBAAoB;YAC5B,IAAI,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI;YACjC,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,QAAQ,EAAE,CAAC,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS,CAAC;YACzE,SAAS,EAAE,GAAG;SACf;QACD;YACE,IAAI,EAAE,CAAC,CAAC,6BAA6B;YACrC,IAAI,EAAE,CAAC,CAAC,6BAA6B,CAAC,IAAI;YAC1C,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,CAAC;YACpE,SAAS,EAAE,GAAG;SACf;QACD;YACE,IAAI,EAAE,CAAC,CAAC,eAAe;YACvB,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI;YAC5B,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,CAAC;YACnE,SAAS,EAAE,GAAG;SACf;QACD;YACE,IAAI,EAAE,CAAC,CAAC,aAAa;YACrB,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI;YAC1B,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;YACpC,QAAQ,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,UAAU,CAAC;YACtD,YAAY,EAAE,CAAC,YAAY,CAAC;YAC5B,SAAS,EAAE,GAAG;SACf;QACD;YACE,IAAI,EAAE,CAAC,CAAC,uBAAuB;YAC/B,IAAI,EAAE,CAAC,CAAC,uBAAuB,CAAC,IAAI;YACpC,OAAO,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC;YACzC,QAAQ,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC;YAC1E,YAAY,EAAE,CAAC,YAAY,CAAC;YAC5B,SAAS,EAAE,GAAG;SACf;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { WrapToolRunOptions } from "../types.js";
2
+ /**
3
+ * Monkey-patches a tool's `run()` method to:
4
+ * 1. Resolve the target environment and enforce policies
5
+ * 2. Obtain a connection pool from EnvironmentManager
6
+ * 3. Inject pool + environment info into the tool arguments
7
+ * 4. Log invocations to the audit logger
8
+ */
9
+ export declare function wrapToolRun(tool: {
10
+ name: string;
11
+ run: (...args: any[]) => Promise<any>;
12
+ }, options: WrapToolRunOptions): void;
13
+ //# sourceMappingURL=wrapToolRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapToolRun.d.ts","sourceRoot":"","sources":["../../src/server/wrapToolRun.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CAAE,EAC7D,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CA0HN"}
@@ -0,0 +1,102 @@
1
+ import { auditLogger } from "../audit/AuditLogger.js";
2
+ /**
3
+ * Monkey-patches a tool's `run()` method to:
4
+ * 1. Resolve the target environment and enforce policies
5
+ * 2. Obtain a connection pool from EnvironmentManager
6
+ * 3. Inject pool + environment info into the tool arguments
7
+ * 4. Log invocations to the audit logger
8
+ */
9
+ export function wrapToolRun(tool, options) {
10
+ const { environmentManager, sessionId, serverVersion, mutatingToolNames, approvalExemptTools, } = options;
11
+ const originalRun = tool.run.bind(tool);
12
+ tool.run = async function (...args) {
13
+ const startTime = Date.now();
14
+ const rawArgs = (args[0] ?? {});
15
+ const requestedEnvironment = typeof rawArgs.environment === "string" ? rawArgs.environment : undefined;
16
+ const envConfig = environmentManager.getEnvironment(requestedEnvironment);
17
+ // Build policy object from environment config
18
+ const policy = {
19
+ name: envConfig.name,
20
+ readonly: envConfig.readonly ?? false,
21
+ allowedTools: envConfig.allowedTools,
22
+ deniedTools: envConfig.deniedTools,
23
+ maxRowsDefault: envConfig.maxRowsDefault,
24
+ requireApproval: envConfig.requireApproval ?? false,
25
+ auditLevel: envConfig.auditLevel ?? "basic",
26
+ };
27
+ // Check denied tools policy (takes precedence)
28
+ if (policy.deniedTools &&
29
+ policy.deniedTools.length > 0 &&
30
+ policy.deniedTools.includes(tool.name)) {
31
+ return {
32
+ success: false,
33
+ message: `Tool '${tool.name}' is explicitly denied in environment '${policy.name}'.`,
34
+ error: "TOOL_DENIED",
35
+ };
36
+ }
37
+ // Check allowed tools policy
38
+ if (policy.allowedTools &&
39
+ policy.allowedTools.length > 0 &&
40
+ !policy.allowedTools.includes(tool.name)) {
41
+ return {
42
+ success: false,
43
+ message: `Tool '${tool.name}' is not permitted in environment '${policy.name}'. Allowed tools: ${policy.allowedTools.join(", ")}.`,
44
+ error: "TOOL_NOT_ALLOWED",
45
+ };
46
+ }
47
+ // Check readonly policy for mutating tools
48
+ if (policy.readonly && mutatingToolNames.has(tool.name)) {
49
+ return {
50
+ success: false,
51
+ message: `Environment '${policy.name}' is read-only. Tool '${tool.name}' cannot be executed.`,
52
+ error: "ENVIRONMENT_READONLY",
53
+ };
54
+ }
55
+ // Check requireApproval policy (skip for approval-exempt tools)
56
+ if (policy.requireApproval && !approvalExemptTools.has(tool.name)) {
57
+ const hasConfirmation = rawArgs.confirm === true;
58
+ if (!hasConfirmation) {
59
+ return {
60
+ success: false,
61
+ requiresApproval: true,
62
+ message: `Environment '${policy.name}' requires explicit approval for '${tool.name}'. Review the operation and re-run with confirm: true to proceed.`,
63
+ error: "APPROVAL_REQUIRED",
64
+ tool: tool.name,
65
+ environment: policy.name,
66
+ providedArguments: rawArgs,
67
+ hint: "Add 'confirm: true' to your arguments after reviewing this operation.",
68
+ };
69
+ }
70
+ }
71
+ // Get connection for the specified or default environment
72
+ const pool = await environmentManager.getConnection(policy.name);
73
+ // Enrich args with environment info, policy, and connection pool
74
+ const toolArgs = {
75
+ ...rawArgs,
76
+ environment: policy.name,
77
+ environmentPolicy: policy,
78
+ pool,
79
+ mcpServerVersion: serverVersion,
80
+ };
81
+ try {
82
+ const result = await originalRun(toolArgs);
83
+ const durationMs = Date.now() - startTime;
84
+ auditLogger.logToolInvocation(tool.name, toolArgs, result, durationMs, {
85
+ sessionId,
86
+ environment: policy.name,
87
+ auditLevel: policy.auditLevel,
88
+ });
89
+ return result;
90
+ }
91
+ catch (error) {
92
+ const durationMs = Date.now() - startTime;
93
+ auditLogger.logToolInvocation(tool.name, toolArgs, { success: false, error: String(error) }, durationMs, {
94
+ sessionId,
95
+ environment: policy.name,
96
+ auditLevel: policy.auditLevel,
97
+ });
98
+ throw error;
99
+ }
100
+ };
101
+ }
102
+ //# sourceMappingURL=wrapToolRun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapToolRun.js","sourceRoot":"","sources":["../../src/server/wrapToolRun.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function initShims(): void;
2
+ //# sourceMappingURL=shims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shims.d.ts","sourceRoot":"","sources":["../src/shims.ts"],"names":[],"mappings":"AAOA,wBAAgB,SAAS,IAAI,IAAI,CAQhC"}
package/dist/shims.js ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Runtime shims required before any MCP server code runs.
3
+ * Call initShims() at the top of your entry point.
4
+ */
5
+ import { Buffer } from "node:buffer";
6
+ import * as dotenv from "dotenv";
7
+ export function initShims() {
8
+ // Node 21+ dropped the legacy global SlowBuffer. Some transitive deps (jsonwebtoken)
9
+ // still reference it, so reintroduce a shim to keep compatibility with latest Node.
10
+ if (!globalThis.SlowBuffer) {
11
+ globalThis.SlowBuffer = Buffer.allocUnsafeSlow;
12
+ }
13
+ dotenv.config();
14
+ }
15
+ //# sourceMappingURL=shims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shims.js","sourceRoot":"","sources":["../src/shims.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,MAAM,UAAU,SAAS;IACvB,qFAAqF;IACrF,oFAAoF;IACpF,IAAI,CAAE,UAAkB,CAAC,UAAU,EAAE,CAAC;QACnC,UAAkB,CAAC,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAM,EAAE,CAAC;AAClB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Tool } from "@modelcontextprotocol/sdk/types.js";
2
+ export declare class CreateIndexTool implements Tool {
3
+ [key: string]: any;
4
+ name: string;
5
+ description: string;
6
+ inputSchema: any;
7
+ run(params: any): Promise<{
8
+ success: boolean;
9
+ message: string;
10
+ details: {
11
+ schemaName: any;
12
+ tableName: any;
13
+ indexName: any;
14
+ columnNames: any;
15
+ isUnique: any;
16
+ isClustered: any;
17
+ };
18
+ } | {
19
+ success: boolean;
20
+ message: string;
21
+ details?: undefined;
22
+ }>;
23
+ }
24
+ //# sourceMappingURL=CreateIndexTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateIndexTool.d.ts","sourceRoot":"","sources":["../../src/tools/CreateIndexTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,qBAAa,eAAgB,YAAW,IAAI;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAkB;IACtB,WAAW,SAAkF;IAC7F,WAAW,EAuBN,GAAG,CAAC;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;CAkCtB"}
@@ -0,0 +1,64 @@
1
+ import sql from "mssql";
2
+ export class CreateIndexTool {
3
+ constructor() {
4
+ this.name = "create_index";
5
+ this.description = "Creates an index on a specified column or columns in an MSSQL Database table";
6
+ this.inputSchema = {
7
+ type: "object",
8
+ properties: {
9
+ schemaName: { type: "string", description: "Name of the schema containing the table" },
10
+ tableName: { type: "string", description: "Name of the table to create index on" },
11
+ indexName: { type: "string", description: "Name for the new index" },
12
+ columns: {
13
+ type: "array",
14
+ items: { type: "string" },
15
+ description: "Array of column names to include in the index"
16
+ },
17
+ isUnique: {
18
+ type: "boolean",
19
+ description: "Whether the index should enforce uniqueness (default: false)",
20
+ default: false
21
+ },
22
+ isClustered: {
23
+ type: "boolean",
24
+ description: "Whether the index should be clustered (default: false)",
25
+ default: false
26
+ },
27
+ },
28
+ required: ["tableName", "indexName", "columns"],
29
+ };
30
+ }
31
+ async run(params) {
32
+ try {
33
+ const { schemaName, tableName, indexName, columns, isUnique = false, isClustered = false } = params;
34
+ let indexType = isClustered ? "CLUSTERED" : "NONCLUSTERED";
35
+ if (isUnique) {
36
+ indexType = `UNIQUE ${indexType}`;
37
+ }
38
+ const columnNames = columns.join(", ");
39
+ const request = new sql.Request(params.pool);
40
+ const query = `CREATE ${indexType} INDEX ${indexName} ON ${schemaName}.${tableName} (${columnNames})`;
41
+ await request.query(query);
42
+ return {
43
+ success: true,
44
+ message: `Index [${indexName}] created successfully on table [${schemaName}.${tableName}]`,
45
+ details: {
46
+ schemaName,
47
+ tableName,
48
+ indexName,
49
+ columnNames,
50
+ isUnique,
51
+ isClustered
52
+ }
53
+ };
54
+ }
55
+ catch (error) {
56
+ console.error("Error creating index:", error);
57
+ return {
58
+ success: false,
59
+ message: `Failed to create index: ${error}`,
60
+ };
61
+ }
62
+ }
63
+ }
64
+ //# sourceMappingURL=CreateIndexTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateIndexTool.js","sourceRoot":"","sources":["../../src/tools/CreateIndexTool.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AAGxB,MAAM,OAAO,eAAe;IAA5B;QAEE,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,8EAA8E,CAAC;QAC7F,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBACtF,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;gBAClF,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBACpE,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,+CAA+C;iBAC7D;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,8DAA8D;oBAC3E,OAAO,EAAE,KAAK;iBACf;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,wDAAwD;oBACrE,OAAO,EAAE,KAAK;iBACf;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC;SACzC,CAAC;IAoCX,CAAC;IAlCC,KAAK,CAAC,GAAG,CAAC,MAAW;QACnB,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;YAEpG,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,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,UAAU,SAAS,UAAU,SAAS,OAAO,UAAU,IAAI,SAAS,KAAK,WAAW,GAAG,CAAC;YACtG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE3B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,UAAU,SAAS,oCAAoC,UAAU,IAAI,SAAS,GAAG;gBAC1F,OAAO,EAAE;oBACP,UAAU;oBACV,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"}
@@ -0,0 +1,12 @@
1
+ import { Tool } from "@modelcontextprotocol/sdk/types.js";
2
+ export declare class CreateTableTool implements Tool {
3
+ [key: string]: any;
4
+ name: string;
5
+ description: string;
6
+ inputSchema: any;
7
+ run(params: any): Promise<{
8
+ success: boolean;
9
+ message: string;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=CreateTableTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/CreateTableTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,qBAAa,eAAgB,YAAW,IAAI;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAkB;IACtB,WAAW,SAA2E;IACtF,WAAW,EAkBN,GAAG,CAAC;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;CAqBtB"}
@@ -0,0 +1,49 @@
1
+ import sql from "mssql";
2
+ export class CreateTableTool {
3
+ constructor() {
4
+ this.name = "create_table";
5
+ this.description = "Creates a new table in the MSSQL Database with the specified columns.";
6
+ this.inputSchema = {
7
+ type: "object",
8
+ properties: {
9
+ tableName: { type: "string", description: "Name of the table to create" },
10
+ columns: {
11
+ type: "array",
12
+ description: "Array of column definitions (e.g., [{ name: 'id', type: 'INT PRIMARY KEY' }, ...])",
13
+ items: {
14
+ type: "object",
15
+ properties: {
16
+ name: { type: "string", description: "Column name" },
17
+ type: { type: "string", description: "SQL type and constraints (e.g., 'INT PRIMARY KEY', 'NVARCHAR(255) NOT NULL')" }
18
+ },
19
+ required: ["name", "type"]
20
+ }
21
+ }
22
+ },
23
+ required: ["tableName", "columns"],
24
+ };
25
+ }
26
+ async run(params) {
27
+ try {
28
+ const { tableName, columns } = params;
29
+ if (!Array.isArray(columns) || columns.length === 0) {
30
+ throw new Error("'columns' must be a non-empty array");
31
+ }
32
+ const columnDefs = columns.map((col) => `[${col.name}] ${col.type}`).join(", ");
33
+ const query = `CREATE TABLE [${tableName}] (${columnDefs})`;
34
+ await new sql.Request(params.pool).query(query);
35
+ return {
36
+ success: true,
37
+ message: `Table '${tableName}' created successfully.`
38
+ };
39
+ }
40
+ catch (error) {
41
+ console.error("Error creating table:", error);
42
+ return {
43
+ success: false,
44
+ message: `Failed to create table: ${error}`
45
+ };
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=CreateTableTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateTableTool.js","sourceRoot":"","sources":["../../src/tools/CreateTableTool.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AAGxB,MAAM,OAAO,eAAe;IAA5B;QAEE,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,uEAAuE,CAAC;QACtF,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;gBACzE,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,oFAAoF;oBACjG,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;4BACpD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8EAA8E,EAAE;yBACtH;wBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;qBAC3B;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;SAC5B,CAAC;IAuBX,CAAC;IArBC,KAAK,CAAC,GAAG,CAAC,MAAW;QACnB,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrF,MAAM,KAAK,GAAG,iBAAiB,SAAS,MAAM,UAAU,GAAG,CAAC;YAC5D,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,UAAU,SAAS,yBAAyB;aACtD,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"}