@mcp-consultant-tools/azure-sql 27.0.0 → 28.0.0-beta.13

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 (71) hide show
  1. package/build/cli/commands/connection-commands.d.ts +7 -0
  2. package/build/cli/commands/connection-commands.d.ts.map +1 -0
  3. package/build/cli/commands/connection-commands.js +64 -0
  4. package/build/cli/commands/connection-commands.js.map +1 -0
  5. package/build/cli/commands/index.d.ts +9 -0
  6. package/build/cli/commands/index.d.ts.map +1 -0
  7. package/build/cli/commands/index.js +12 -0
  8. package/build/cli/commands/index.js.map +1 -0
  9. package/build/cli/commands/query-commands.d.ts +7 -0
  10. package/build/cli/commands/query-commands.d.ts.map +1 -0
  11. package/build/cli/commands/query-commands.js +149 -0
  12. package/build/cli/commands/query-commands.js.map +1 -0
  13. package/build/cli/output.d.ts +11 -0
  14. package/build/cli/output.d.ts.map +1 -0
  15. package/build/cli/output.js +10 -0
  16. package/build/cli/output.js.map +1 -0
  17. package/build/cli.d.ts +9 -0
  18. package/build/cli.d.ts.map +1 -0
  19. package/build/cli.js +27 -0
  20. package/build/cli.js.map +1 -0
  21. package/build/context-factory.d.ts +10 -0
  22. package/build/context-factory.d.ts.map +1 -0
  23. package/build/context-factory.js +61 -0
  24. package/build/context-factory.js.map +1 -0
  25. package/build/index.d.ts +15 -2
  26. package/build/index.d.ts.map +1 -1
  27. package/build/index.js +40 -491
  28. package/build/index.js.map +1 -1
  29. package/build/prompts/index.d.ts +4 -0
  30. package/build/prompts/index.d.ts.map +1 -0
  31. package/build/prompts/index.js +6 -0
  32. package/build/prompts/index.js.map +1 -0
  33. package/build/prompts/templates.d.ts +3 -0
  34. package/build/prompts/templates.d.ts.map +1 -0
  35. package/build/prompts/templates.js +81 -0
  36. package/build/prompts/templates.js.map +1 -0
  37. package/build/services/connection-service.d.ts +132 -0
  38. package/build/services/connection-service.d.ts.map +1 -0
  39. package/build/services/connection-service.js +350 -0
  40. package/build/services/connection-service.js.map +1 -0
  41. package/build/services/index.d.ts +5 -0
  42. package/build/services/index.d.ts.map +1 -0
  43. package/build/services/index.js +3 -0
  44. package/build/services/index.js.map +1 -0
  45. package/build/services/query-service.d.ts +119 -0
  46. package/build/services/query-service.d.ts.map +1 -0
  47. package/build/services/query-service.js +355 -0
  48. package/build/services/query-service.js.map +1 -0
  49. package/build/tool-examples.d.ts +22 -0
  50. package/build/tool-examples.d.ts.map +1 -0
  51. package/build/tool-examples.js +27 -0
  52. package/build/tool-examples.js.map +1 -0
  53. package/build/tools/connection-tools.d.ts +3 -0
  54. package/build/tools/connection-tools.d.ts.map +1 -0
  55. package/build/tools/connection-tools.js +132 -0
  56. package/build/tools/connection-tools.js.map +1 -0
  57. package/build/tools/index.d.ts +5 -0
  58. package/build/tools/index.d.ts.map +1 -0
  59. package/build/tools/index.js +9 -0
  60. package/build/tools/index.js.map +1 -0
  61. package/build/tools/query-tools.d.ts +3 -0
  62. package/build/tools/query-tools.d.ts.map +1 -0
  63. package/build/tools/query-tools.js +272 -0
  64. package/build/tools/query-tools.js.map +1 -0
  65. package/build/types.d.ts +11 -0
  66. package/build/types.d.ts.map +1 -0
  67. package/build/types.js +2 -0
  68. package/build/types.js.map +1 -0
  69. package/build/utils/sql-formatters.d.ts +2 -1
  70. package/build/utils/sql-formatters.d.ts.map +1 -1
  71. package/package.json +5 -3
@@ -0,0 +1,132 @@
1
+ import { z } from 'zod';
2
+ import { descWithExamples, SERVER_ID_EXAMPLES } from '../tool-examples.js';
3
+ /**
4
+ * Helper to build "defaults used" message for tool responses.
5
+ * Only shows message when defaults were actually used (parameters were omitted).
6
+ */
7
+ function buildDefaultsUsedMessage(providedServerId, resolvedServerId, providedDatabase, resolvedDatabase) {
8
+ const defaultsUsed = [];
9
+ if (!providedServerId)
10
+ defaultsUsed.push(`server='${resolvedServerId}'`);
11
+ if (resolvedDatabase !== undefined && !providedDatabase)
12
+ defaultsUsed.push(`database='${resolvedDatabase}'`);
13
+ if (defaultsUsed.length > 0) {
14
+ return `\n\n\u2139\uFE0F Used defaults: ${defaultsUsed.join(', ')}`;
15
+ }
16
+ return '';
17
+ }
18
+ export function registerConnectionTools(server, ctx) {
19
+ server.tool("sql-list-servers", `List all configured SQL servers.
20
+ \u26A0\uFE0F SKIP THIS for most queries. You DO NOT need to call this before querying - defaults are automatic.
21
+ Only use this tool if: (1) you got an explicit error about server not found, OR (2) user specifically asks about available servers.`, {}, async () => {
22
+ try {
23
+ const servers = await ctx.connection.listServers();
24
+ return {
25
+ content: [
26
+ {
27
+ type: "text",
28
+ text: JSON.stringify(servers, null, 2),
29
+ },
30
+ ],
31
+ };
32
+ }
33
+ catch (error) {
34
+ return {
35
+ content: [
36
+ {
37
+ type: "text",
38
+ text: `Error listing servers: ${error.message}`,
39
+ },
40
+ ],
41
+ isError: true,
42
+ };
43
+ }
44
+ });
45
+ server.tool("sql-list-databases", `List databases on a SQL server.
46
+ \u26A0\uFE0F SKIP THIS for most queries. You DO NOT need to call this before querying - defaults are automatic.
47
+ Only use this tool if: (1) you got an explicit error about database not found, OR (2) user specifically asks about available databases.`, {
48
+ serverId: z.string().optional().describe(descWithExamples("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS", SERVER_ID_EXAMPLES)),
49
+ }, async ({ serverId }) => {
50
+ try {
51
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
52
+ const databases = await ctx.connection.listDatabases(resolvedServerId);
53
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId);
54
+ return {
55
+ content: [
56
+ {
57
+ type: "text",
58
+ text: JSON.stringify(databases, null, 2) + defaultsMsg,
59
+ },
60
+ ],
61
+ };
62
+ }
63
+ catch (error) {
64
+ return {
65
+ content: [
66
+ {
67
+ type: "text",
68
+ text: `Error listing databases: ${error.message}`,
69
+ },
70
+ ],
71
+ isError: true,
72
+ };
73
+ }
74
+ });
75
+ server.tool("sql-get-defaults", `Get the default server and database configuration.
76
+ \u26A0\uFE0F SKIP THIS - you do NOT need to call this before querying. Just call sql-execute-query with only the query parameter.
77
+ Only use this if: user specifically asks what server/database is configured, or you need to confirm defaults after an error.`, {}, async () => {
78
+ try {
79
+ const defaults = ctx.connection.getDefaultConfiguration();
80
+ return {
81
+ content: [
82
+ {
83
+ type: "text",
84
+ text: JSON.stringify(defaults, null, 2),
85
+ },
86
+ ],
87
+ };
88
+ }
89
+ catch (error) {
90
+ return {
91
+ content: [
92
+ {
93
+ type: "text",
94
+ text: `Error getting defaults: ${error.message}`,
95
+ },
96
+ ],
97
+ isError: true,
98
+ };
99
+ }
100
+ });
101
+ server.tool("sql-test-connection", "Test SQL Server connectivity and return connection information", {
102
+ serverId: z.string().optional().describe(descWithExamples("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS", SERVER_ID_EXAMPLES)),
103
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
104
+ }, async ({ serverId, database }) => {
105
+ try {
106
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
107
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
108
+ const result = await ctx.connection.testConnection(resolvedServerId, resolvedDatabase);
109
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
110
+ return {
111
+ content: [
112
+ {
113
+ type: "text",
114
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
115
+ },
116
+ ],
117
+ };
118
+ }
119
+ catch (error) {
120
+ return {
121
+ content: [
122
+ {
123
+ type: "text",
124
+ text: `Error testing connection: ${error.message}`,
125
+ },
126
+ ],
127
+ isError: true,
128
+ };
129
+ }
130
+ });
131
+ }
132
+ //# sourceMappingURL=connection-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-tools.js","sourceRoot":"","sources":["../../src/tools/connection-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerAllTools(server: any, ctx: ServiceContext): void;
3
+ export { registerConnectionTools } from './connection-tools.js';
4
+ export { registerQueryTools } from './query-tools.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAGvE;AAED,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { registerConnectionTools } from './connection-tools.js';
2
+ import { registerQueryTools } from './query-tools.js';
3
+ export function registerAllTools(server, ctx) {
4
+ registerConnectionTools(server, ctx);
5
+ registerQueryTools(server, ctx);
6
+ }
7
+ export { registerConnectionTools } from './connection-tools.js';
8
+ export { registerQueryTools } from './query-tools.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,MAAW,EAAE,GAAmB;IAC/D,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerQueryTools(server: any, ctx: ServiceContext): void;
3
+ //# sourceMappingURL=query-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tools.d.ts","sourceRoot":"","sources":["../../src/tools/query-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyBlD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAoTzE"}
@@ -0,0 +1,272 @@
1
+ import { z } from 'zod';
2
+ import { descWithExamples, SQL_QUERY_EXAMPLES, TABLE_NAME_EXAMPLES, SCHEMA_NAME_EXAMPLES, OBJECT_TYPE_EXAMPLES } from '../tool-examples.js';
3
+ /**
4
+ * Helper to build "defaults used" message for tool responses.
5
+ */
6
+ function buildDefaultsUsedMessage(providedServerId, resolvedServerId, providedDatabase, resolvedDatabase) {
7
+ const defaultsUsed = [];
8
+ if (!providedServerId)
9
+ defaultsUsed.push(`server='${resolvedServerId}'`);
10
+ if (resolvedDatabase !== undefined && !providedDatabase)
11
+ defaultsUsed.push(`database='${resolvedDatabase}'`);
12
+ if (defaultsUsed.length > 0) {
13
+ return `\n\n\u2139\uFE0F Used defaults: ${defaultsUsed.join(', ')}`;
14
+ }
15
+ return '';
16
+ }
17
+ export function registerQueryTools(server, ctx) {
18
+ server.tool("sql-list-tables", "List all user tables in the database with row counts and sizes", {
19
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
20
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
21
+ }, async ({ serverId, database }) => {
22
+ try {
23
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
24
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
25
+ const tables = await ctx.query.listTables(resolvedServerId, resolvedDatabase);
26
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
27
+ return {
28
+ content: [
29
+ {
30
+ type: "text",
31
+ text: JSON.stringify(tables, null, 2) + defaultsMsg,
32
+ },
33
+ ],
34
+ };
35
+ }
36
+ catch (error) {
37
+ return {
38
+ content: [
39
+ {
40
+ type: "text",
41
+ text: `Error listing tables: ${error.message}`,
42
+ },
43
+ ],
44
+ isError: true,
45
+ };
46
+ }
47
+ });
48
+ server.tool("sql-list-views", "List all views in the database", {
49
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
50
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
51
+ }, async ({ serverId, database }) => {
52
+ try {
53
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
54
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
55
+ const views = await ctx.query.listViews(resolvedServerId, resolvedDatabase);
56
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
57
+ return {
58
+ content: [
59
+ {
60
+ type: "text",
61
+ text: JSON.stringify(views, null, 2) + defaultsMsg,
62
+ },
63
+ ],
64
+ };
65
+ }
66
+ catch (error) {
67
+ return {
68
+ content: [
69
+ {
70
+ type: "text",
71
+ text: `Error listing views: ${error.message}`,
72
+ },
73
+ ],
74
+ isError: true,
75
+ };
76
+ }
77
+ });
78
+ server.tool("sql-list-sprocs", "List all stored procedures in the Azure SQL Database", {
79
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
80
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
81
+ }, async ({ serverId, database }) => {
82
+ try {
83
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
84
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
85
+ const procedures = await ctx.query.listStoredProcedures(resolvedServerId, resolvedDatabase);
86
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
87
+ return {
88
+ content: [
89
+ {
90
+ type: "text",
91
+ text: JSON.stringify(procedures, null, 2) + defaultsMsg,
92
+ },
93
+ ],
94
+ };
95
+ }
96
+ catch (error) {
97
+ return {
98
+ content: [
99
+ {
100
+ type: "text",
101
+ text: `Error listing stored procedures: ${error.message}`,
102
+ },
103
+ ],
104
+ isError: true,
105
+ };
106
+ }
107
+ });
108
+ server.tool("sql-list-triggers", "List all database triggers in the Azure SQL Database", {
109
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
110
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
111
+ }, async ({ serverId, database }) => {
112
+ try {
113
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
114
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
115
+ const triggers = await ctx.query.listTriggers(resolvedServerId, resolvedDatabase);
116
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
117
+ return {
118
+ content: [
119
+ {
120
+ type: "text",
121
+ text: JSON.stringify(triggers, null, 2) + defaultsMsg,
122
+ },
123
+ ],
124
+ };
125
+ }
126
+ catch (error) {
127
+ return {
128
+ content: [
129
+ {
130
+ type: "text",
131
+ text: `Error listing triggers: ${error.message}`,
132
+ },
133
+ ],
134
+ isError: true,
135
+ };
136
+ }
137
+ });
138
+ server.tool("sql-list-functions", "List all user-defined functions in the Azure SQL Database", {
139
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
140
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
141
+ }, async ({ serverId, database }) => {
142
+ try {
143
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
144
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
145
+ const functions = await ctx.query.listFunctions(resolvedServerId, resolvedDatabase);
146
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
147
+ return {
148
+ content: [
149
+ {
150
+ type: "text",
151
+ text: JSON.stringify(functions, null, 2) + defaultsMsg,
152
+ },
153
+ ],
154
+ };
155
+ }
156
+ catch (error) {
157
+ return {
158
+ content: [
159
+ {
160
+ type: "text",
161
+ text: `Error listing functions: ${error.message}`,
162
+ },
163
+ ],
164
+ isError: true,
165
+ };
166
+ }
167
+ });
168
+ server.tool("sql-get-table-schema", "Get detailed schema information for a table including columns, indexes, and foreign keys", {
169
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
170
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
171
+ schemaName: z.string().describe(descWithExamples("Schema name", SCHEMA_NAME_EXAMPLES)),
172
+ tableName: z.string().describe(descWithExamples("Table name", TABLE_NAME_EXAMPLES)),
173
+ }, async ({ serverId, database, schemaName, tableName }) => {
174
+ try {
175
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
176
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
177
+ const schema = await ctx.query.getTableSchema(resolvedServerId, resolvedDatabase, schemaName, tableName);
178
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
179
+ return {
180
+ content: [
181
+ {
182
+ type: "text",
183
+ text: JSON.stringify(schema, null, 2) + defaultsMsg,
184
+ },
185
+ ],
186
+ };
187
+ }
188
+ catch (error) {
189
+ return {
190
+ content: [
191
+ {
192
+ type: "text",
193
+ text: `Error getting table schema: ${error.message}`,
194
+ },
195
+ ],
196
+ isError: true,
197
+ };
198
+ }
199
+ });
200
+ server.tool("sql-get-obj-def", "Get the SQL definition for a view, stored procedure, function, or trigger", {
201
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
202
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
203
+ schemaName: z.string().describe(descWithExamples("Schema name", SCHEMA_NAME_EXAMPLES)),
204
+ objectName: z.string().describe("Name of the database object"),
205
+ objectType: z.enum(['VIEW', 'PROCEDURE', 'FUNCTION', 'TRIGGER']).describe(descWithExamples("Type of database object", OBJECT_TYPE_EXAMPLES)),
206
+ }, async ({ serverId, database, schemaName, objectName, objectType }) => {
207
+ try {
208
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
209
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
210
+ const definition = await ctx.query.getObjectDefinition(resolvedServerId, resolvedDatabase, schemaName, objectName, objectType);
211
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
212
+ return {
213
+ content: [
214
+ {
215
+ type: "text",
216
+ text: JSON.stringify(definition, null, 2) + defaultsMsg,
217
+ },
218
+ ],
219
+ };
220
+ }
221
+ catch (error) {
222
+ return {
223
+ content: [
224
+ {
225
+ type: "text",
226
+ text: `Error getting object definition: ${error.message}`,
227
+ },
228
+ ],
229
+ isError: true,
230
+ };
231
+ }
232
+ });
233
+ server.tool("sql-execute-query", `Execute a SELECT query against Azure SQL Database.
234
+ \u26A0\uFE0F IMPORTANT: DO NOT GUESS serverId or database values. If you don't know them, OMIT THEM ENTIRELY.
235
+ The server has pre-configured defaults - just provide the query parameter and defaults will be applied automatically.
236
+ Example: sql-execute-query(query: "SELECT * FROM dbo.Users") - serverId and database omitted, defaults used.`, {
237
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT unless switching servers. DO NOT GUESS - omitting uses the pre-configured default server."),
238
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT unless switching databases. DO NOT GUESS - omitting uses the pre-configured default database."),
239
+ query: z.string().describe(descWithExamples("SELECT query to execute", SQL_QUERY_EXAMPLES)),
240
+ }, async ({ serverId, database, query }) => {
241
+ try {
242
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
243
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
244
+ const result = await ctx.query.executeSelectQuery(resolvedServerId, resolvedDatabase, query);
245
+ let text = JSON.stringify(result, null, 2);
246
+ if (result.truncated) {
247
+ text += `\n\n\u26A0\uFE0F WARNING: Results truncated to ${result.rowCount} rows. Add WHERE clause to filter results.`;
248
+ }
249
+ text += buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
250
+ return {
251
+ content: [
252
+ {
253
+ type: "text",
254
+ text,
255
+ },
256
+ ],
257
+ };
258
+ }
259
+ catch (error) {
260
+ return {
261
+ content: [
262
+ {
263
+ type: "text",
264
+ text: `Error executing query: ${error.message}`,
265
+ },
266
+ ],
267
+ isError: true,
268
+ };
269
+ }
270
+ });
271
+ }
272
+ //# sourceMappingURL=query-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tools.js","sourceRoot":"","sources":["../../src/tools/query-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Service context shared between MCP server entry points.
3
+ * Uses lazy getters to initialize services on-demand.
4
+ */
5
+ import type { ConnectionService } from './services/connection-service.js';
6
+ import type { QueryService } from './services/query-service.js';
7
+ export interface ServiceContext {
8
+ readonly connection: ConnectionService;
9
+ readonly query: QueryService;
10
+ }
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B"}
package/build/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
- import { SqlApiCollectionResponse, TableInfo, ViewInfo, StoredProcedureInfo, TriggerInfo, FunctionInfo, TableSchema, ColumnInfo, IndexInfo, ForeignKeyInfo } from '../AzureSqlService.js';
1
+ import type { SqlApiCollectionResponse } from '../services/connection-service.js';
2
+ import type { TableInfo, ViewInfo, StoredProcedureInfo, TriggerInfo, FunctionInfo, TableSchema, ColumnInfo, IndexInfo, ForeignKeyInfo } from '../services/query-service.js';
2
3
  /**
3
4
  * Format SQL query results as markdown table
4
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sql-formatters.d.ts","sourceRoot":"","sources":["../../src/utils/sql-formatters.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,SAAS,EACT,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,cAAc,EACf,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,MAAM,CA8BxF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAe3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAUxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAW7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAWjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAUpE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAkBrE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAgBpE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,MAAM,CAcjF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAevE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EAAE,EACnB,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,EAAE,mBAAmB,EAAE,EACjC,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,YAAY,EAAE,GACxB,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CA0BjE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,CAyBvF"}
1
+ {"version":3,"file":"sql-formatters.d.ts","sourceRoot":"","sources":["../../src/utils/sql-formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,cAAc,EACf,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,MAAM,CA8BxF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAe3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAUxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAW7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAWjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAUpE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAkBrE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAgBpE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,MAAM,CAcjF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAevE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EAAE,EACnB,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,EAAE,mBAAmB,EAAE,EACjC,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,YAAY,EAAE,GACxB,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CA0BjE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,CAyBvF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-consultant-tools/azure-sql",
3
- "version": "27.0.0",
3
+ "version": "28.0.0-beta.13",
4
4
  "description": "MCP server for Azure SQL Database - read-only queries and schema exploration",
5
5
  "type": "module",
6
6
  "main": "./build/index.js",
@@ -39,8 +39,9 @@
39
39
  "node": ">=16.0.0"
40
40
  },
41
41
  "dependencies": {
42
- "@mcp-consultant-tools/core": "27.0.0-beta.1",
42
+ "@mcp-consultant-tools/core": "28.0.0-beta.13",
43
43
  "@modelcontextprotocol/sdk": "^1.0.4",
44
+ "commander": "^14.0.3",
44
45
  "mssql": "^11.0.1",
45
46
  "zod": "^3.24.1"
46
47
  },
@@ -50,6 +51,7 @@
50
51
  "typescript": "^5.8.2"
51
52
  },
52
53
  "bin": {
53
- "mcp-sql": "build/index.js"
54
+ "mcp-sql": "build/index.js",
55
+ "mcp-sql-cli": "build/cli.js"
54
56
  }
55
57
  }