@eamonboyle/mssql-mcp 1.5.0 → 2.0.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 (125) hide show
  1. package/README.md +379 -361
  2. package/dist/apps/queryResultsApp.d.ts +18 -0
  3. package/dist/apps/queryResultsApp.d.ts.map +1 -0
  4. package/dist/apps/queryResultsApp.js +272 -0
  5. package/dist/apps/queryResultsApp.js.map +1 -0
  6. package/dist/checkNodeVersion.d.ts +2 -0
  7. package/dist/checkNodeVersion.d.ts.map +1 -0
  8. package/dist/checkNodeVersion.js +9 -0
  9. package/dist/checkNodeVersion.js.map +1 -0
  10. package/dist/config.d.ts +58 -7
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +202 -33
  13. package/dist/config.js.map +1 -1
  14. package/dist/confirmationMessage.d.ts +2 -0
  15. package/dist/confirmationMessage.d.ts.map +1 -0
  16. package/dist/confirmationMessage.js +105 -0
  17. package/dist/confirmationMessage.js.map +1 -0
  18. package/dist/db.d.ts +24 -0
  19. package/dist/db.d.ts.map +1 -1
  20. package/dist/db.js +152 -36
  21. package/dist/db.js.map +1 -1
  22. package/dist/filteredRead.js +0 -0
  23. package/dist/httpServer.d.ts +25 -0
  24. package/dist/httpServer.d.ts.map +1 -0
  25. package/dist/httpServer.js +128 -0
  26. package/dist/httpServer.js.map +1 -0
  27. package/dist/index.d.ts +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +47 -366
  30. package/dist/index.js.map +1 -1
  31. package/dist/mcpResults.d.ts +1 -1
  32. package/dist/mcpResults.d.ts.map +1 -1
  33. package/dist/mcpResults.js +2 -2
  34. package/dist/mcpResults.js.map +1 -1
  35. package/dist/nodeVersion.d.ts +14 -0
  36. package/dist/nodeVersion.d.ts.map +1 -0
  37. package/dist/nodeVersion.js +23 -0
  38. package/dist/nodeVersion.js.map +1 -0
  39. package/dist/packageInfo.d.ts +3 -0
  40. package/dist/packageInfo.d.ts.map +1 -0
  41. package/dist/packageInfo.js +5 -0
  42. package/dist/packageInfo.js.map +1 -0
  43. package/dist/promptRegistry.d.ts +1 -1
  44. package/dist/promptRegistry.d.ts.map +1 -1
  45. package/dist/promptRegistry.js +1 -1
  46. package/dist/promptRegistry.js.map +1 -1
  47. package/dist/resourceRegistry.d.ts +9 -1
  48. package/dist/resourceRegistry.d.ts.map +1 -1
  49. package/dist/resourceRegistry.js +9 -2
  50. package/dist/resourceRegistry.js.map +1 -1
  51. package/dist/schema.d.ts.map +1 -1
  52. package/dist/schema.js +16 -20
  53. package/dist/schema.js.map +1 -1
  54. package/dist/server.d.ts +5 -0
  55. package/dist/server.d.ts.map +1 -0
  56. package/dist/server.js +320 -0
  57. package/dist/server.js.map +1 -0
  58. package/dist/serverState.js +2 -4
  59. package/dist/serverState.js.map +1 -1
  60. package/dist/sql.js +0 -0
  61. package/dist/sqlErrors.d.ts +10 -0
  62. package/dist/sqlErrors.d.ts.map +1 -0
  63. package/dist/sqlErrors.js +32 -0
  64. package/dist/sqlErrors.js.map +1 -0
  65. package/dist/toolRegistry.d.ts +1 -1
  66. package/dist/toolRegistry.d.ts.map +1 -1
  67. package/dist/toolRegistry.js +1 -1
  68. package/dist/toolRegistry.js.map +1 -1
  69. package/dist/tools/AnalyzeTableTool.js +2 -4
  70. package/dist/tools/AnalyzeTableTool.js.map +1 -1
  71. package/dist/tools/CreateIndexTool.js +2 -4
  72. package/dist/tools/CreateIndexTool.js.map +1 -1
  73. package/dist/tools/CreateTableTool.js +2 -4
  74. package/dist/tools/CreateTableTool.js.map +1 -1
  75. package/dist/tools/DeleteDataTool.js +2 -4
  76. package/dist/tools/DeleteDataTool.js.map +1 -1
  77. package/dist/tools/DescribeDependenciesTool.js +2 -4
  78. package/dist/tools/DescribeDependenciesTool.js.map +1 -1
  79. package/dist/tools/DescribeObjectTool.js +2 -4
  80. package/dist/tools/DescribeObjectTool.js.map +1 -1
  81. package/dist/tools/DescribeRelationshipsTool.js +2 -4
  82. package/dist/tools/DescribeRelationshipsTool.js.map +1 -1
  83. package/dist/tools/DescribeTableTool.js +2 -4
  84. package/dist/tools/DescribeTableTool.js.map +1 -1
  85. package/dist/tools/DropTableTool.js +2 -4
  86. package/dist/tools/DropTableTool.js.map +1 -1
  87. package/dist/tools/ExplainQueryTool.d.ts.map +1 -1
  88. package/dist/tools/ExplainQueryTool.js +4 -6
  89. package/dist/tools/ExplainQueryTool.js.map +1 -1
  90. package/dist/tools/InsertDataTool.js +2 -4
  91. package/dist/tools/InsertDataTool.js.map +1 -1
  92. package/dist/tools/ListDatabasesTool.d.ts.map +1 -1
  93. package/dist/tools/ListDatabasesTool.js +2 -4
  94. package/dist/tools/ListDatabasesTool.js.map +1 -1
  95. package/dist/tools/ListForeignKeysTool.js +2 -4
  96. package/dist/tools/ListForeignKeysTool.js.map +1 -1
  97. package/dist/tools/ListLargestTablesTool.js +2 -4
  98. package/dist/tools/ListLargestTablesTool.js.map +1 -1
  99. package/dist/tools/ListObjectsTool.js +2 -4
  100. package/dist/tools/ListObjectsTool.js.map +1 -1
  101. package/dist/tools/ListTableTool.js +2 -4
  102. package/dist/tools/ListTableTool.js.map +1 -1
  103. package/dist/tools/PreviewDeleteTool.js +2 -4
  104. package/dist/tools/PreviewDeleteTool.js.map +1 -1
  105. package/dist/tools/PreviewUpdateTool.js +2 -4
  106. package/dist/tools/PreviewUpdateTool.js.map +1 -1
  107. package/dist/tools/ReadDataTool.d.ts +15 -12
  108. package/dist/tools/ReadDataTool.d.ts.map +1 -1
  109. package/dist/tools/ReadDataTool.js +86 -64
  110. package/dist/tools/ReadDataTool.js.map +1 -1
  111. package/dist/tools/SearchDataTool.js +2 -4
  112. package/dist/tools/SearchDataTool.js.map +1 -1
  113. package/dist/tools/SummarizeSchemaTool.js +2 -4
  114. package/dist/tools/SummarizeSchemaTool.js.map +1 -1
  115. package/dist/tools/UpdateDataTool.js +2 -4
  116. package/dist/tools/UpdateDataTool.js.map +1 -1
  117. package/dist/validation.d.ts +26 -3
  118. package/dist/validation.d.ts.map +1 -1
  119. package/dist/validation.js +237 -85
  120. package/dist/validation.js.map +1 -1
  121. package/dist/writePreview.js +0 -0
  122. package/dist/writePreviewGrant.js +0 -0
  123. package/dist/writePreviewGrantStore.js +0 -0
  124. package/dist/writeSafety.js +0 -0
  125. package/package.json +27 -18
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpServer.js","sourceRoot":"","sources":["../src/httpServer.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ import "./checkNodeVersion.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1,380 +1,61 @@
1
1
  #!/usr/bin/env node
2
- import { createServer } from "node:http";
2
+ // Must stay the first import: fails fast with a clear message on old Node.js.
3
+ import "./checkNodeVersion.js";
3
4
  import * as dotenv from "dotenv";
4
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
- import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
7
- dotenv.config();
8
- import { getMaxRows, getMcpHttpHost, getMcpHttpPort, getMcpTransport, getMaxWriteRows, getQueryTimeoutMs, isDdlEnabled, isWritePreviewRequired, } from "./config.js";
9
- import { getAllowedDatabases } from "./db.js";
10
- import { createResourceLink, createToolResult, normalizeToolResult, } from "./mcpResults.js";
11
- import { registerPrompts } from "./promptRegistry.js";
12
- import { registerResources } from "./resourceRegistry.js";
5
+ import { serveStdio } from "@modelcontextprotocol/server/stdio";
6
+ // Keep dotenv silent: anything on stdout corrupts the stdio JSON-RPC stream.
7
+ dotenv.config({ quiet: true });
8
+ import { configureRuntimeEnvironment, parseEnvironmentConfig, } from "./config.js";
9
+ import { closeAllPools, configureDatabase } from "./db.js";
10
+ import { startHttpServer } from "./httpServer.js";
11
+ import { createServerInstance } from "./server.js";
13
12
  import { ServerState } from "./serverState.js";
14
- import { getAvailableTools } from "./toolRegistry.js";
15
- import { fingerprintForWriteTool } from "./writePreviewGrant.js";
16
- import { writePreviewGrantStore } from "./writePreviewGrantStore.js";
17
- import { previewFilteredRows } from "./writePreview.js";
18
- const SERVER_VERSION = "1.5.0";
19
- const SERVER_NAME = "mssql-mcp-server";
20
- function createInstructions(isReadOnly) {
21
- const baseInstructions = "Inspect schema first with summarize_schema, list_objects, list_table, describe_object, or describe_table. Use list_largest_tables for capacity discovery. Prefer read_data for data analysis. Use search_data, analyze_table, describe_relationships, describe_dependencies, and explain_query for safe analysis. For update_data and delete_data, run preview_update or preview_delete first, then pass the returned previewToken with confirmed=true when REQUIRE_WRITE_PREVIEW is enabled (default).";
22
- const readOnlyInstructions = " This server is READONLY: write and DDL tools are disabled. Never use sqlcmd, SSMS, other DB CLI tools, or terminal scripts to bypass the MCP safety model.";
23
- return isReadOnly ? baseInstructions + readOnlyInstructions : baseInstructions;
24
- }
25
- function createServerInstance(state) {
26
- const isReadOnly = process.env.READONLY === "true";
27
- const allowedDatabases = getAllowedDatabases();
28
- const availableTools = getAvailableTools(isReadOnly);
29
- const server = new McpServer({
30
- name: SERVER_NAME,
31
- version: SERVER_VERSION,
32
- websiteUrl: "https://github.com/eamonboyle/mssql-mcp",
33
- icons: [
34
- {
35
- src: "https://raw.githubusercontent.com/eamonboyle/mssql-mcp/main/src/img/logo.png",
36
- mimeType: "image/png",
37
- },
38
- ],
39
- }, {
40
- instructions: createInstructions(isReadOnly),
41
- capabilities: {
42
- logging: {},
43
- },
44
- });
45
- for (const definition of availableTools) {
46
- server.registerTool(definition.tool.name, {
47
- title: definition.tool.name
48
- .split("_")
49
- .map((part) => part[0].toUpperCase() + part.slice(1))
50
- .join(" "),
51
- description: definition.tool.description,
52
- inputSchema: definition.inputSchema,
53
- outputSchema: definition.outputSchema,
54
- annotations: definition.annotations,
55
- }, async (args, extra) => {
56
- if (definition.requiresDdl &&
57
- !isDdlEnabled()) {
58
- return createToolResult({
59
- version: 1,
60
- success: false,
61
- message: "DDL tools are disabled. Set ENABLE_DDL=true to allow create_table, create_index, and drop_table.",
62
- error: {
63
- code: "DDL_DISABLED",
64
- },
65
- });
66
- }
67
- const requestArgs = typeof args === "object" && args !== null
68
- ? { ...args }
69
- : {};
70
- if (definition.requiresConfirmation && requestArgs.confirmed !== true) {
71
- try {
72
- const elicited = await server.server.elicitInput({
73
- mode: "form",
74
- message: `Confirm ${definition.tool.name} after reviewing its preview and impact.`,
75
- requestedSchema: {
76
- type: "object",
77
- properties: {
78
- confirmed: {
79
- type: "boolean",
80
- title: "Confirmed",
81
- description: "I reviewed the preview and want to proceed with this operation.",
82
- },
83
- },
84
- required: ["confirmed"],
85
- },
86
- });
87
- if (elicited.action !== "accept" || !elicited.content?.confirmed) {
88
- if (definition.writePreviewTool && isWritePreviewRequired()) {
89
- return createToolResult({
90
- version: 1,
91
- success: false,
92
- message: `Confirmation canceled. Call ${definition.writePreviewTool}, then run ${definition.tool.name} with the returned previewToken and confirmed=true.`,
93
- error: { code: "PREVIEW_REQUIRED" },
94
- });
95
- }
96
- if (definition.writePreviewTool) {
97
- return createToolResult({
98
- version: 1,
99
- success: false,
100
- message: `Confirmation canceled. Retry with confirmed=true after reviewing ${definition.writePreviewTool}.`,
101
- error: { code: "CONFIRMATION_REQUIRED" },
102
- });
103
- }
104
- return createToolResult({
105
- version: 1,
106
- success: false,
107
- message: "Confirmation canceled. Retry with confirmed=true after reviewing the operation.",
108
- error: { code: "CONFIRMATION_REQUIRED" },
109
- });
110
- }
111
- requestArgs.confirmed = true;
112
- }
113
- catch {
114
- if (definition.writePreviewTool && isWritePreviewRequired()) {
115
- return createToolResult({
116
- version: 1,
117
- success: false,
118
- message: `Interactive confirmation is unavailable. Call ${definition.writePreviewTool}, then run ${definition.tool.name} with previewToken and confirmed=true.`,
119
- error: { code: "PREVIEW_REQUIRED" },
120
- });
121
- }
122
- if (definition.writePreviewTool) {
123
- return createToolResult({
124
- version: 1,
125
- success: false,
126
- message: `Interactive confirmation is unavailable. Retry with confirmed=true after reviewing ${definition.writePreviewTool}.`,
127
- error: { code: "CONFIRMATION_REQUIRED" },
128
- });
129
- }
130
- return createToolResult({
131
- version: 1,
132
- success: false,
133
- message: "Interactive confirmation is unavailable. Retry with confirmed=true after reviewing the operation.",
134
- error: { code: "CONFIRMATION_REQUIRED" },
135
- });
136
- }
137
- }
138
- if (definition.tool.name === "update_data" || definition.tool.name === "delete_data") {
139
- const preview = await previewFilteredRows({
140
- tableName: String(requestArgs.tableName),
141
- schemaName: typeof requestArgs.schemaName === "string"
142
- ? requestArgs.schemaName
143
- : undefined,
144
- filters: requestArgs.filters ?? [],
145
- databaseName: typeof requestArgs.databaseName === "string"
146
- ? requestArgs.databaseName
147
- : undefined,
148
- limit: 1,
149
- }).catch((error) => ({
150
- affectedRowCount: -1,
151
- rows: [],
152
- query: "",
153
- countQuery: "",
154
- previewError: String(error),
155
- }));
156
- if ("previewError" in preview) {
157
- return createToolResult({
158
- version: 1,
159
- success: false,
160
- message: `Failed to validate write impact: ${preview.previewError}`,
161
- error: {
162
- code: "WRITE_PREVIEW_FAILED",
163
- },
164
- });
165
- }
166
- if (preview.affectedRowCount > getMaxWriteRows()) {
167
- return createToolResult({
168
- version: 1,
169
- success: false,
170
- message: `Write exceeds MAX_WRITE_ROWS (${getMaxWriteRows()}). Matching rows: ${preview.affectedRowCount}. Narrow the filters or raise MAX_WRITE_ROWS.`,
171
- error: {
172
- code: "WRITE_LIMIT_EXCEEDED",
173
- },
174
- data: {
175
- affectedRowCount: preview.affectedRowCount,
176
- },
177
- });
178
- }
179
- if (isWritePreviewRequired()) {
180
- const writeName = definition.tool.name;
181
- const fingerprint = fingerprintForWriteTool(writeName, requestArgs);
182
- const previewToken = typeof requestArgs.previewToken === "string" ? requestArgs.previewToken.trim() : "";
183
- if (!writePreviewGrantStore.consume(previewToken, fingerprint, writeName)) {
184
- return createToolResult({
185
- version: 1,
186
- success: false,
187
- message: `Invalid or expired write preview token. Call ${writeName === "update_data" ? "preview_update" : "preview_delete"} with the same table, filters${writeName === "update_data" ? ", and updates" : ""}, then pass the returned previewToken with confirmed=true.`,
188
- error: { code: "PREVIEW_TOKEN_INVALID" },
189
- });
190
- }
191
- }
192
- }
193
- if (definition.tool.name === "insert_data") {
194
- const rows = Array.isArray(requestArgs.data) ? requestArgs.data.length : 1;
195
- if (rows > getMaxWriteRows()) {
196
- return createToolResult({
197
- version: 1,
198
- success: false,
199
- message: `Insert exceeds MAX_WRITE_ROWS (${getMaxWriteRows()}). Requested rows: ${rows}.`,
200
- error: {
201
- code: "WRITE_LIMIT_EXCEEDED",
202
- },
203
- data: {
204
- requestedRows: rows,
205
- },
206
- });
207
- }
208
- }
209
- if (definition.tool.name === "explain_query" &&
210
- extra._meta?.progressToken !== undefined) {
211
- await extra.sendNotification({
212
- method: "notifications/progress",
213
- params: {
214
- progressToken: extra._meta.progressToken,
215
- progress: 1,
216
- total: 2,
217
- message: "Generating estimated execution plan",
218
- },
219
- });
220
- }
221
- const rawResult = await definition.tool.run(requestArgs);
222
- if ((definition.tool.name === "preview_update" ||
223
- definition.tool.name === "preview_delete") &&
224
- isWritePreviewRequired() &&
225
- typeof rawResult === "object" &&
226
- rawResult !== null &&
227
- rawResult.success === true) {
228
- const fingerprint = fingerprintForWriteTool(definition.tool.name, requestArgs);
229
- const writeTool = definition.tool.name === "preview_update" ? "update_data" : "delete_data";
230
- const previewToken = writePreviewGrantStore.issue(fingerprint, writeTool);
231
- const withData = rawResult;
232
- if (typeof withData.data === "object" && withData.data !== null && !Array.isArray(withData.data)) {
233
- withData.data = { ...withData.data, previewToken };
234
- }
235
- else {
236
- withData.data = { preview: withData.data, previewToken };
237
- }
238
- }
239
- const payload = normalizeToolResult(rawResult, `${definition.tool.name} completed.`);
240
- const extraContent = [];
241
- if (definition.tool.name === "explain_query" && typeof rawResult === "object" && rawResult) {
242
- const planXml = typeof rawResult.planXml === "string"
243
- ? rawResult.planXml
244
- : undefined;
245
- const databaseName = typeof requestArgs.databaseName === "string"
246
- ? requestArgs.databaseName
247
- : undefined;
248
- if (planXml) {
249
- const plan = state.storeQueryPlan(databaseName, String(requestArgs.query ?? ""), planXml);
250
- extraContent.push(createResourceLink(`mssql://query-plan/${plan.id}`, "query-plan", "Execution Plan", "Stored estimated execution plan for this query.", "application/json"));
251
- payload.meta = {
252
- ...(payload.meta ?? {}),
253
- queryPlanUri: `mssql://query-plan/${plan.id}`,
254
- };
255
- await server.server.sendResourceListChanged();
256
- await server.server.sendResourceUpdated({
257
- uri: `mssql://query-plan/${plan.id}`,
258
- });
259
- }
260
- }
261
- if ((definition.tool.name === "read_data" || definition.tool.name === "search_data") &&
262
- payload.success) {
263
- const data = payload.data;
264
- const recordCount = Array.isArray(data)
265
- ? data.length
266
- : Array.isArray(data?.data)
267
- ? data.data.length
268
- : 0;
269
- if (recordCount >= 25 || payload.truncated) {
270
- const result = state.storeQueryResult(typeof requestArgs.databaseName === "string"
271
- ? requestArgs.databaseName
272
- : undefined, definition.tool.name, data);
273
- extraContent.push(createResourceLink(`mssql://query-result/${result.id}`, "query-result", "Query Result", "Stored query result for larger result-grid rendering.", "application/json"));
274
- payload.meta = {
275
- ...(payload.meta ?? {}),
276
- queryResultUri: `mssql://query-result/${result.id}`,
277
- };
278
- await server.server.sendResourceListChanged();
279
- await server.server.sendResourceUpdated({
280
- uri: `mssql://query-result/${result.id}`,
281
- });
282
- }
283
- }
284
- if (definition.tool.name === "explain_query" &&
285
- extra._meta?.progressToken !== undefined) {
286
- await extra.sendNotification({
287
- method: "notifications/progress",
288
- params: {
289
- progressToken: extra._meta.progressToken,
290
- progress: 2,
291
- total: 2,
292
- message: "Execution plan ready",
293
- },
294
- });
295
- }
296
- return createToolResult(payload, extraContent);
297
- });
298
- }
299
- registerResources(server, {
300
- serverName: SERVER_NAME,
301
- serverVersion: SERVER_VERSION,
302
- isReadOnly,
303
- allowedDatabases,
304
- toolNames: availableTools.map((tool) => tool.tool.name),
305
- maxRows: getMaxRows(),
306
- queryTimeoutMs: getQueryTimeoutMs(),
307
- state,
13
+ const SHUTDOWN_TIMEOUT_MS = 5000;
14
+ function runStdioServer(state, environment) {
15
+ const handle = serveStdio(() => createServerInstance(state, environment), {
16
+ onerror: (error) => console.error("stdio transport error:", error),
308
17
  });
309
- registerPrompts(server, { isReadOnly });
310
- return server;
311
- }
312
- async function readRequestBody(req) {
313
- const chunks = [];
314
- for await (const chunk of req) {
315
- chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
316
- }
317
- if (chunks.length === 0) {
318
- return undefined;
319
- }
320
- const raw = Buffer.concat(chunks).toString("utf8").trim();
321
- if (!raw) {
322
- return undefined;
323
- }
324
- return JSON.parse(raw);
18
+ return () => handle.close();
325
19
  }
326
- async function handleHttpRequest(req, res) {
327
- const server = createServerInstance(new ServerState());
328
- const transport = new StreamableHTTPServerTransport({
329
- sessionIdGenerator: undefined,
20
+ async function runHttpServer(state, environment) {
21
+ const httpServer = await startHttpServer(state, environment);
22
+ return () => new Promise((resolve) => {
23
+ httpServer.close(() => resolve());
24
+ httpServer.closeAllConnections();
330
25
  });
331
- try {
332
- await server.connect(transport);
333
- const parsedBody = req.method === "POST" ? await readRequestBody(req) : undefined;
334
- await transport.handleRequest(req, res, parsedBody);
335
- }
336
- catch (error) {
337
- console.error("HTTP transport error:", error);
338
- if (!res.headersSent) {
339
- res.writeHead(500, { "content-type": "application/json" });
340
- res.end(JSON.stringify({
341
- jsonrpc: "2.0",
342
- error: {
343
- code: -32603,
344
- message: "Internal server error",
345
- },
346
- id: null,
347
- }));
348
- }
349
- }
350
- finally {
351
- await transport.close().catch(() => undefined);
352
- await server.close().catch(() => undefined);
353
- }
354
- }
355
- async function runStdioServer() {
356
- const server = createServerInstance(new ServerState());
357
- const transport = new StdioServerTransport();
358
- await server.connect(transport);
359
26
  }
360
- async function runHttpServer() {
361
- const host = getMcpHttpHost();
362
- const port = getMcpHttpPort();
363
- const httpServer = createServer((req, res) => {
364
- void handleHttpRequest(req, res);
365
- });
366
- await new Promise((resolve, reject) => {
367
- httpServer.once("error", reject);
368
- httpServer.listen(port, host, () => resolve());
369
- });
370
- console.error(`MCP Streamable HTTP server listening on http://${host}:${port}`);
27
+ function registerShutdown(closeServer) {
28
+ let shuttingDown = false;
29
+ const shutdown = async () => {
30
+ if (shuttingDown) {
31
+ return;
32
+ }
33
+ shuttingDown = true;
34
+ // Never let a stuck connection keep the process alive.
35
+ setTimeout(() => process.exit(0), SHUTDOWN_TIMEOUT_MS).unref();
36
+ await closeServer().catch(() => undefined);
37
+ await closeAllPools();
38
+ process.exit(0);
39
+ };
40
+ process.once("SIGINT", shutdown);
41
+ process.once("SIGTERM", shutdown);
42
+ return shutdown;
371
43
  }
372
44
  async function main() {
373
- if (getMcpTransport() === "http") {
374
- await runHttpServer();
45
+ const environment = parseEnvironmentConfig();
46
+ configureRuntimeEnvironment(environment);
47
+ configureDatabase(environment);
48
+ // One state store per process so query-result and query-plan resource
49
+ // links stay readable across stateless HTTP requests.
50
+ const state = new ServerState();
51
+ if (environment.mcpTransport === "http") {
52
+ registerShutdown(await runHttpServer(state, environment));
375
53
  return;
376
54
  }
377
- await runStdioServer();
55
+ const shutdown = registerShutdown(runStdioServer(state, environment));
56
+ // The client closing stdin ends the session; release SQL pools so the
57
+ // process can exit promptly.
58
+ process.stdin.once("end", shutdown);
378
59
  }
379
60
  main().catch((error) => {
380
61
  console.error("Fatal error running server:", error);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { CallToolResult, ContentBlock, ResourceLink } from "@modelcontextprotocol/sdk/types.js";
1
+ import type { CallToolResult, ContentBlock, ResourceLink } from "@modelcontextprotocol/server";
2
2
  import { z } from "zod";
3
3
  export declare const toolResultOutputSchema: {
4
4
  version: z.ZodLiteral<1>;
@@ -1 +1 @@
1
- {"version":3,"file":"mcpResults.d.ts","sourceRoot":"","sources":["../src/mcpResults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACrG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;CAqBV,CAAC;AAE1B,MAAM,WAAW,mBAAoB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,SAA0B,GACjC,MAAM,CAoDR;AA+BD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CA2B/D;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,SAAqB,GAC5B,YAAY,CASd;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,mBAAmB,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzB;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,mBAAmB,EAC5B,YAAY,GAAE,YAAY,EAAO,GAChC,cAAc,CAkBhB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,OAAO,EAClB,eAAe,EAAE,MAAM,GACtB,mBAAmB,CA4FrB"}
1
+ {"version":3,"file":"mcpResults.d.ts","sourceRoot":"","sources":["../src/mcpResults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;CAqBV,CAAC;AAE1B,MAAM,WAAW,mBAAoB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,SAA0B,GACjC,MAAM,CAoDR;AA+BD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CA2B/D;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,SAAqB,GAC5B,YAAY,CASd;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,mBAAmB,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzB;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,mBAAmB,EAC5B,YAAY,GAAE,YAAY,EAAO,GAChC,cAAc,CAkBhB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,OAAO,EAClB,eAAe,EAAE,MAAM,GACtB,mBAAmB,CA4FrB"}
@@ -68,7 +68,7 @@ function createTextSummary(payload) {
68
68
  }
69
69
  return payload.message;
70
70
  }
71
- const MAX_INLINE_JSON_CHARS = 120000;
71
+ const MAX_INLINE_JSON_CHARS = 120_000;
72
72
  const MAX_INLINE_ARRAY_ITEMS = 500;
73
73
  function isPlainRecord(value) {
74
74
  if (typeof value !== "object" || value === null) {
@@ -201,7 +201,7 @@ export function normalizeToolResult(rawResult, fallbackMessage) {
201
201
  : undefined;
202
202
  if (Object.keys(passthrough).length > 0) {
203
203
  if ("data" in raw) {
204
- meta ?? (meta = {});
204
+ meta ??= {};
205
205
  meta.raw = passthrough;
206
206
  }
207
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcpResults.js","sourceRoot":"","sources":["../src/mcpResults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpResults.js","sourceRoot":"","sources":["../src/mcpResults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Minimum Node.js major version. The SQL Server driver (tedious 20, via
3
+ * mssql 12) uses Node 22 APIs such as Promise.withResolvers; on older
4
+ * versions the server starts but every database call fails.
5
+ */
6
+ export declare const MIN_NODE_MAJOR = 22;
7
+ /** Last release that supports Node.js 20. */
8
+ export declare const LAST_NODE_20_RELEASE = "1.6.0";
9
+ /**
10
+ * Returns an actionable error message when `version` is too old to run this
11
+ * server, or undefined when it is supported.
12
+ */
13
+ export declare function nodeVersionError(version?: string): string | undefined;
14
+ //# sourceMappingURL=nodeVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeVersion.d.ts","sourceRoot":"","sources":["../src/nodeVersion.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,6CAA6C;AAC7C,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,MAA8B,GACtC,MAAM,GAAG,SAAS,CAUpB"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Minimum Node.js major version. The SQL Server driver (tedious 20, via
3
+ * mssql 12) uses Node 22 APIs such as Promise.withResolvers; on older
4
+ * versions the server starts but every database call fails.
5
+ */
6
+ export const MIN_NODE_MAJOR = 22;
7
+ /** Last release that supports Node.js 20. */
8
+ export const LAST_NODE_20_RELEASE = "1.6.0";
9
+ /**
10
+ * Returns an actionable error message when `version` is too old to run this
11
+ * server, or undefined when it is supported.
12
+ */
13
+ export function nodeVersionError(version = process.versions.node) {
14
+ const major = Number.parseInt(version.split(".")[0] ?? "", 10);
15
+ if (Number.isFinite(major) && major >= MIN_NODE_MAJOR) {
16
+ return undefined;
17
+ }
18
+ return [
19
+ `mssql-mcp requires Node.js ${MIN_NODE_MAJOR} or newer (found v${version}).`,
20
+ `Upgrade Node.js, or pin the last release that supports older versions: npx -y @eamonboyle/mssql-mcp@${LAST_NODE_20_RELEASE}`,
21
+ ].join(" ");
22
+ }
23
+ //# sourceMappingURL=nodeVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeVersion.js","sourceRoot":"","sources":["../src/nodeVersion.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAkB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAEvC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,cAAc,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,8BAA8B,cAAc,qBAAqB,OAAO,IAAI;QAC5E,uGAAuG,oBAAoB,EAAE;KAC9H,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const SERVER_NAME = "mssql-mcp-server";
2
+ export declare const SERVER_VERSION: string;
3
+ //# sourceMappingURL=packageInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageInfo.d.ts","sourceRoot":"","sources":["../src/packageInfo.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAC9C,eAAO,MAAM,cAAc,QAAsB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { readFileSync } from "node:fs";
2
+ const packageJson = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
3
+ export const SERVER_NAME = "mssql-mcp-server";
4
+ export const SERVER_VERSION = packageJson.version;
5
+ //# sourceMappingURL=packageInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageInfo.js","sourceRoot":"","sources":["../src/packageInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAC3C,CAAC;AAEzB,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC"}
@@ -1,4 +1,4 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { McpServer } from "@modelcontextprotocol/server";
2
2
  export interface PromptDefinition {
3
3
  name: string;
4
4
  description: string;