@eamonboyle/mssql-mcp 1.0.0 → 1.2.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 (133) hide show
  1. package/README.md +153 -36
  2. package/dist/__tests__/ExplainQueryTool.test.d.ts +2 -0
  3. package/dist/__tests__/ExplainQueryTool.test.d.ts.map +1 -0
  4. package/dist/__tests__/ExplainQueryTool.test.js +96 -0
  5. package/dist/__tests__/ExplainQueryTool.test.js.map +1 -0
  6. package/dist/__tests__/config.test.d.ts +2 -0
  7. package/dist/__tests__/config.test.d.ts.map +1 -0
  8. package/dist/__tests__/config.test.js +29 -0
  9. package/dist/__tests__/config.test.js.map +1 -0
  10. package/dist/__tests__/db.test.d.ts +2 -0
  11. package/dist/__tests__/db.test.d.ts.map +1 -0
  12. package/dist/__tests__/db.test.js +204 -0
  13. package/dist/__tests__/db.test.js.map +1 -0
  14. package/dist/__tests__/promptRegistry.test.d.ts +2 -0
  15. package/dist/__tests__/promptRegistry.test.d.ts.map +1 -0
  16. package/dist/__tests__/promptRegistry.test.js +40 -0
  17. package/dist/__tests__/promptRegistry.test.js.map +1 -0
  18. package/dist/__tests__/resourceRegistry.test.d.ts +2 -0
  19. package/dist/__tests__/resourceRegistry.test.d.ts.map +1 -0
  20. package/dist/__tests__/resourceRegistry.test.js +40 -0
  21. package/dist/__tests__/resourceRegistry.test.js.map +1 -0
  22. package/dist/__tests__/schema.test.d.ts +2 -0
  23. package/dist/__tests__/schema.test.d.ts.map +1 -0
  24. package/dist/__tests__/schema.test.js +130 -0
  25. package/dist/__tests__/schema.test.js.map +1 -0
  26. package/dist/__tests__/sql.test.d.ts +2 -0
  27. package/dist/__tests__/sql.test.d.ts.map +1 -0
  28. package/dist/__tests__/sql.test.js +35 -0
  29. package/dist/__tests__/sql.test.js.map +1 -0
  30. package/dist/__tests__/toolRegistry.test.d.ts +2 -0
  31. package/dist/__tests__/toolRegistry.test.d.ts.map +1 -0
  32. package/dist/__tests__/toolRegistry.test.js +47 -0
  33. package/dist/__tests__/toolRegistry.test.js.map +1 -0
  34. package/dist/__tests__/validation.test.d.ts +2 -0
  35. package/dist/__tests__/validation.test.d.ts.map +1 -0
  36. package/dist/__tests__/validation.test.js +111 -0
  37. package/dist/__tests__/validation.test.js.map +1 -0
  38. package/dist/__tests__/writeTools.test.d.ts +2 -0
  39. package/dist/__tests__/writeTools.test.d.ts.map +1 -0
  40. package/dist/__tests__/writeTools.test.js +115 -0
  41. package/dist/__tests__/writeTools.test.js.map +1 -0
  42. package/dist/config.d.ts +5 -0
  43. package/dist/config.d.ts.map +1 -0
  44. package/dist/config.js +34 -0
  45. package/dist/config.js.map +1 -0
  46. package/dist/db.d.ts +28 -24
  47. package/dist/db.d.ts.map +1 -1
  48. package/dist/db.js +144 -89
  49. package/dist/db.js.map +1 -1
  50. package/dist/index.d.ts +2 -2
  51. package/dist/index.js +70 -105
  52. package/dist/index.js.map +1 -1
  53. package/dist/promptRegistry.d.ts +16 -0
  54. package/dist/promptRegistry.d.ts.map +1 -0
  55. package/dist/promptRegistry.js +107 -0
  56. package/dist/promptRegistry.js.map +1 -0
  57. package/dist/resourceRegistry.d.ts +12 -0
  58. package/dist/resourceRegistry.d.ts.map +1 -0
  59. package/dist/resourceRegistry.js +172 -0
  60. package/dist/resourceRegistry.js.map +1 -0
  61. package/dist/schema.d.ts +41 -0
  62. package/dist/schema.d.ts.map +1 -0
  63. package/dist/schema.js +211 -0
  64. package/dist/schema.js.map +1 -0
  65. package/dist/sql.d.ts +7 -0
  66. package/dist/sql.d.ts.map +1 -0
  67. package/dist/sql.js +73 -0
  68. package/dist/sql.js.map +1 -0
  69. package/dist/toolRegistry.d.ts +16 -0
  70. package/dist/toolRegistry.d.ts.map +1 -0
  71. package/dist/toolRegistry.js +401 -0
  72. package/dist/toolRegistry.js.map +1 -0
  73. package/dist/tools/CreateIndexTool.d.ts +30 -23
  74. package/dist/tools/CreateIndexTool.d.ts.map +1 -1
  75. package/dist/tools/CreateIndexTool.js +47 -71
  76. package/dist/tools/CreateIndexTool.js.map +1 -1
  77. package/dist/tools/CreateTableTool.d.ts +18 -11
  78. package/dist/tools/CreateTableTool.d.ts.map +1 -1
  79. package/dist/tools/CreateTableTool.js +37 -56
  80. package/dist/tools/CreateTableTool.js.map +1 -1
  81. package/dist/tools/DeleteDataTool.d.ts +22 -0
  82. package/dist/tools/DeleteDataTool.d.ts.map +1 -0
  83. package/dist/tools/DeleteDataTool.js +35 -0
  84. package/dist/tools/DeleteDataTool.js.map +1 -0
  85. package/dist/tools/DescribeObjectTool.d.ts +21 -0
  86. package/dist/tools/DescribeObjectTool.d.ts.map +1 -0
  87. package/dist/tools/DescribeObjectTool.js +31 -0
  88. package/dist/tools/DescribeObjectTool.js.map +1 -0
  89. package/dist/tools/DescribeTableTool.d.ts +19 -20
  90. package/dist/tools/DescribeTableTool.d.ts.map +1 -1
  91. package/dist/tools/DescribeTableTool.js +23 -41
  92. package/dist/tools/DescribeTableTool.js.map +1 -1
  93. package/dist/tools/DropTableTool.d.ts +13 -11
  94. package/dist/tools/DropTableTool.d.ts.map +1 -1
  95. package/dist/tools/DropTableTool.js +30 -44
  96. package/dist/tools/DropTableTool.js.map +1 -1
  97. package/dist/tools/ExplainQueryTool.d.ts +32 -0
  98. package/dist/tools/ExplainQueryTool.d.ts.map +1 -0
  99. package/dist/tools/ExplainQueryTool.js +102 -0
  100. package/dist/tools/ExplainQueryTool.js.map +1 -0
  101. package/dist/tools/InsertDataTool.d.ts +20 -16
  102. package/dist/tools/InsertDataTool.d.ts.map +1 -1
  103. package/dist/tools/InsertDataTool.js +91 -108
  104. package/dist/tools/InsertDataTool.js.map +1 -1
  105. package/dist/tools/ListObjectsTool.d.ts +20 -0
  106. package/dist/tools/ListObjectsTool.d.ts.map +1 -0
  107. package/dist/tools/ListObjectsTool.js +26 -0
  108. package/dist/tools/ListObjectsTool.js.map +1 -0
  109. package/dist/tools/ListTableTool.d.ts +20 -16
  110. package/dist/tools/ListTableTool.d.ts.map +1 -1
  111. package/dist/tools/ListTableTool.js +32 -49
  112. package/dist/tools/ListTableTool.js.map +1 -1
  113. package/dist/tools/ReadDataTool.d.ts +35 -41
  114. package/dist/tools/ReadDataTool.d.ts.map +1 -1
  115. package/dist/tools/ReadDataTool.js +92 -228
  116. package/dist/tools/ReadDataTool.js.map +1 -1
  117. package/dist/tools/SearchDataTool.d.ts +27 -0
  118. package/dist/tools/SearchDataTool.d.ts.map +1 -0
  119. package/dist/tools/SearchDataTool.js +61 -0
  120. package/dist/tools/SearchDataTool.js.map +1 -0
  121. package/dist/tools/UpdateDataTool.d.ts +21 -16
  122. package/dist/tools/UpdateDataTool.d.ts.map +1 -1
  123. package/dist/tools/UpdateDataTool.js +45 -65
  124. package/dist/tools/UpdateDataTool.js.map +1 -1
  125. package/dist/validation.d.ts +14 -0
  126. package/dist/validation.d.ts.map +1 -0
  127. package/dist/validation.js +134 -0
  128. package/dist/validation.js.map +1 -0
  129. package/dist/writeSafety.d.ts +21 -0
  130. package/dist/writeSafety.d.ts.map +1 -0
  131. package/dist/writeSafety.js +169 -0
  132. package/dist/writeSafety.js.map +1 -0
  133. package/package.json +17 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeTools.test.js","sourceRoot":"","sources":["../../src/__tests__/writeTools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function getMaxRows(): number;
2
+ export declare function getQueryTimeoutMs(): number;
3
+ export declare function getDefaultSearchLimit(): number;
4
+ export declare function clampRowLimit(limit: unknown, fallback?: number): number;
5
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAqBA,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAe,GAAG,MAAM,CAa7E"}
package/dist/config.js ADDED
@@ -0,0 +1,34 @@
1
+ const DEFAULT_MAX_ROWS = 10000;
2
+ const DEFAULT_QUERY_TIMEOUT_MS = 30000;
3
+ const DEFAULT_SEARCH_LIMIT = 100;
4
+ function parsePositiveInt(value, fallback, minimum = 1) {
5
+ if (!value) {
6
+ return fallback;
7
+ }
8
+ const parsed = Number.parseInt(value, 10);
9
+ if (!Number.isFinite(parsed) || parsed < minimum) {
10
+ return fallback;
11
+ }
12
+ return parsed;
13
+ }
14
+ export function getMaxRows() {
15
+ return parsePositiveInt(process.env.MAX_ROWS, DEFAULT_MAX_ROWS);
16
+ }
17
+ export function getQueryTimeoutMs() {
18
+ return parsePositiveInt(process.env.QUERY_TIMEOUT_MS, DEFAULT_QUERY_TIMEOUT_MS);
19
+ }
20
+ export function getDefaultSearchLimit() {
21
+ return Math.min(getMaxRows(), DEFAULT_SEARCH_LIMIT);
22
+ }
23
+ export function clampRowLimit(limit, fallback = getMaxRows()) {
24
+ const parsed = typeof limit === "number"
25
+ ? limit
26
+ : typeof limit === "string"
27
+ ? Number.parseInt(limit, 10)
28
+ : Number.NaN;
29
+ if (!Number.isFinite(parsed) || parsed < 1) {
30
+ return Math.min(fallback, getMaxRows());
31
+ }
32
+ return Math.min(Math.floor(parsed), getMaxRows());
33
+ }
34
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,SAAS,gBAAgB,CACvB,KAAyB,EACzB,QAAgB,EAChB,OAAO,GAAG,CAAC;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,gBAAgB,CACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAC5B,wBAAwB,CACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,oBAAoB,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,QAAQ,GAAG,UAAU,EAAE;IACnE,MAAM,MAAM,GACV,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAEnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AACpD,CAAC"}
package/dist/db.d.ts CHANGED
@@ -1,25 +1,29 @@
1
- import sql from "mssql";
2
- /**
3
- * Returns the list of allowed database names.
4
- * If DATABASES is set, returns those; otherwise returns only DATABASE_NAME.
5
- */
6
- export declare function getAllowedDatabases(): string[];
7
- /**
8
- * Resolves the database name to use (param or default).
9
- * Returns null if invalid.
10
- */
11
- export declare function resolveDatabaseName(databaseName?: string): string | null;
12
- /**
13
- * Ensures a connection pool exists for the given database.
14
- */
15
- export declare function ensureSqlConnection(databaseName: string): Promise<sql.ConnectionPool>;
16
- /**
17
- * Returns a sql.Request for the given database.
18
- * Resolves database name (param or default), validates against allowed list,
19
- * ensures connection, and returns pool.request().
20
- */
21
- export declare function getSqlRequest(databaseName?: string): Promise<{
22
- request: sql.Request;
23
- error?: string;
24
- }>;
1
+ import sql from "mssql";
2
+ /**
3
+ * Returns the list of allowed database names.
4
+ * If DATABASES is set, returns those; otherwise returns only DATABASE_NAME.
5
+ */
6
+ export declare function getAllowedDatabases(): string[];
7
+ /**
8
+ * Resolves the database name to use (param or default).
9
+ * Returns null if invalid.
10
+ */
11
+ export declare function resolveDatabaseName(databaseName?: string): string | null;
12
+ /**
13
+ * Ensures a connection pool exists for the given database.
14
+ */
15
+ export declare function ensureSqlConnection(databaseName: string): Promise<sql.ConnectionPool>;
16
+ /**
17
+ * Returns a sql.Request for the given database.
18
+ * Resolves database name (param or default), validates against allowed list,
19
+ * ensures connection, and returns pool.request().
20
+ */
21
+ export declare function getSqlRequest(databaseName?: string): Promise<{
22
+ request: sql.Request;
23
+ error?: string;
24
+ }>;
25
+ export declare function getDedicatedSqlPool(databaseName?: string): Promise<{
26
+ pool: sql.ConnectionPool;
27
+ error?: string;
28
+ }>;
25
29
  //# sourceMappingURL=db.d.ts.map
package/dist/db.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AAKxB;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAO9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQxE;AAwBD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAoB7B;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAYnD"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AAgCxB;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAQ9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQxE;AA6CD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAoB7B;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAWnD;AAED,wBAAsB,mBAAmB,CACvC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBvD"}
package/dist/db.js CHANGED
@@ -1,90 +1,145 @@
1
- import sql from "mssql";
2
- // Connection pools keyed by database name
3
- const sqlPools = new Map();
4
- /**
5
- * Returns the list of allowed database names.
6
- * If DATABASES is set, returns those; otherwise returns only DATABASE_NAME.
7
- */
8
- export function getAllowedDatabases() {
9
- const databasesEnv = process.env.DATABASES;
10
- if (databasesEnv && databasesEnv.trim()) {
11
- return databasesEnv.split(",").map((db) => db.trim()).filter(Boolean);
12
- }
13
- const defaultDb = process.env.DATABASE_NAME;
14
- return defaultDb ? [defaultDb] : [];
15
- }
16
- /**
17
- * Resolves the database name to use (param or default).
18
- * Returns null if invalid.
19
- */
20
- export function resolveDatabaseName(databaseName) {
21
- const resolved = databaseName?.trim() || process.env.DATABASE_NAME?.trim();
22
- if (!resolved)
23
- return null;
24
- const allowed = getAllowedDatabases();
25
- if (allowed.length === 0)
26
- return resolved; // No validation if nothing configured
27
- if (allowed.includes(resolved))
28
- return resolved;
29
- return null;
30
- }
31
- function createSqlConfigForDatabase(databaseName) {
32
- const trustServerCertificate = process.env.TRUST_SERVER_CERTIFICATE?.toLowerCase() === "true";
33
- const connectionTimeout = process.env.CONNECTION_TIMEOUT
34
- ? parseInt(process.env.CONNECTION_TIMEOUT, 10)
35
- : 30;
36
- return {
37
- server: process.env.SERVER_NAME || "localhost",
38
- database: databaseName,
39
- user: process.env.DB_USER,
40
- password: process.env.DB_PASSWORD,
41
- options: {
42
- encrypt: false,
43
- trustServerCertificate: trustServerCertificate || true,
44
- enableArithAbort: true,
45
- useUTC: false,
46
- },
47
- connectionTimeout: connectionTimeout * 1000,
48
- };
49
- }
50
- /**
51
- * Ensures a connection pool exists for the given database.
52
- */
53
- export async function ensureSqlConnection(databaseName) {
54
- const existing = sqlPools.get(databaseName);
55
- if (existing && existing.connected) {
56
- return existing;
57
- }
58
- if (existing) {
59
- try {
60
- await existing.close();
61
- }
62
- catch {
63
- // Ignore close errors
64
- }
65
- sqlPools.delete(databaseName);
66
- }
67
- const config = createSqlConfigForDatabase(databaseName);
68
- const pool = new sql.ConnectionPool(config);
69
- await pool.connect();
70
- sqlPools.set(databaseName, pool);
71
- return pool;
72
- }
73
- /**
74
- * Returns a sql.Request for the given database.
75
- * Resolves database name (param or default), validates against allowed list,
76
- * ensures connection, and returns pool.request().
77
- */
78
- export async function getSqlRequest(databaseName) {
79
- const resolved = resolveDatabaseName(databaseName);
80
- if (!resolved) {
81
- const allowed = getAllowedDatabases();
82
- return {
83
- request: null,
84
- error: `Invalid or disallowed database. Allowed: ${allowed.join(", ") || "DATABASE_NAME"}. Use databaseName parameter to target a specific database.`,
85
- };
86
- }
87
- const pool = await ensureSqlConnection(resolved);
88
- return { request: pool.request() };
89
- }
1
+ import sql from "mssql";
2
+ import { getQueryTimeoutMs } from "./config.js";
3
+ // Connection pools keyed by database name
4
+ const sqlPools = new Map();
5
+ function parseDatabaseList(value) {
6
+ if (!value || !value.trim()) {
7
+ return [];
8
+ }
9
+ return value
10
+ .split(",")
11
+ .map((db) => db.trim())
12
+ .filter(Boolean);
13
+ }
14
+ function getDefaultDatabaseName() {
15
+ const allowedDatabases = parseDatabaseList(process.env.DATABASES);
16
+ const explicitDefault = process.env.DATABASE_NAME?.trim();
17
+ if (allowedDatabases.length === 0) {
18
+ return explicitDefault ?? null;
19
+ }
20
+ if (explicitDefault && allowedDatabases.includes(explicitDefault)) {
21
+ return explicitDefault;
22
+ }
23
+ return allowedDatabases[0] ?? null;
24
+ }
25
+ /**
26
+ * Returns the list of allowed database names.
27
+ * If DATABASES is set, returns those; otherwise returns only DATABASE_NAME.
28
+ */
29
+ export function getAllowedDatabases() {
30
+ const allowedDatabases = parseDatabaseList(process.env.DATABASES);
31
+ if (allowedDatabases.length > 0) {
32
+ return allowedDatabases;
33
+ }
34
+ const defaultDb = process.env.DATABASE_NAME?.trim();
35
+ return defaultDb ? [defaultDb] : [];
36
+ }
37
+ /**
38
+ * Resolves the database name to use (param or default).
39
+ * Returns null if invalid.
40
+ */
41
+ export function resolveDatabaseName(databaseName) {
42
+ const resolved = databaseName?.trim() || getDefaultDatabaseName();
43
+ if (!resolved)
44
+ return null;
45
+ const allowed = getAllowedDatabases();
46
+ if (allowed.length === 0)
47
+ return null;
48
+ if (allowed.includes(resolved))
49
+ return resolved;
50
+ return null;
51
+ }
52
+ function createSqlConfigForDatabase(databaseName) {
53
+ const trustServerCertificate = process.env.TRUST_SERVER_CERTIFICATE?.toLowerCase() === "true";
54
+ const connectionTimeout = process.env.CONNECTION_TIMEOUT
55
+ ? parseInt(process.env.CONNECTION_TIMEOUT, 10)
56
+ : 30;
57
+ return {
58
+ server: process.env.SERVER_NAME || "localhost",
59
+ database: databaseName,
60
+ user: process.env.DB_USER,
61
+ password: process.env.DB_PASSWORD,
62
+ requestTimeout: getQueryTimeoutMs(),
63
+ options: {
64
+ encrypt: false,
65
+ trustServerCertificate: trustServerCertificate || true,
66
+ enableArithAbort: true,
67
+ useUTC: false,
68
+ },
69
+ connectionTimeout: connectionTimeout * 1000,
70
+ };
71
+ }
72
+ async function resolveConfiguredDatabase(databaseName) {
73
+ const resolved = resolveDatabaseName(databaseName);
74
+ if (!resolved) {
75
+ const allowed = getAllowedDatabases();
76
+ const configurationHint = allowed.length > 0
77
+ ? `Allowed: ${allowed.join(", ")}.`
78
+ : "Set DATABASE_NAME or DATABASES to configure database access.";
79
+ return {
80
+ databaseName: "",
81
+ error: `Invalid or disallowed database. ${configurationHint} Use the databaseName parameter to target a specific configured database.`,
82
+ };
83
+ }
84
+ return { databaseName: resolved };
85
+ }
86
+ /**
87
+ * Ensures a connection pool exists for the given database.
88
+ */
89
+ export async function ensureSqlConnection(databaseName) {
90
+ const existing = sqlPools.get(databaseName);
91
+ if (existing && existing.connected) {
92
+ return existing;
93
+ }
94
+ if (existing) {
95
+ try {
96
+ await existing.close();
97
+ }
98
+ catch {
99
+ // Ignore close errors
100
+ }
101
+ sqlPools.delete(databaseName);
102
+ }
103
+ const config = createSqlConfigForDatabase(databaseName);
104
+ const pool = new sql.ConnectionPool(config);
105
+ await pool.connect();
106
+ sqlPools.set(databaseName, pool);
107
+ return pool;
108
+ }
109
+ /**
110
+ * Returns a sql.Request for the given database.
111
+ * Resolves database name (param or default), validates against allowed list,
112
+ * ensures connection, and returns pool.request().
113
+ */
114
+ export async function getSqlRequest(databaseName) {
115
+ const resolved = await resolveConfiguredDatabase(databaseName);
116
+ if (resolved.error) {
117
+ return {
118
+ request: null,
119
+ error: resolved.error,
120
+ };
121
+ }
122
+ const pool = await ensureSqlConnection(resolved.databaseName);
123
+ return { request: pool.request() };
124
+ }
125
+ export async function getDedicatedSqlPool(databaseName) {
126
+ const resolved = await resolveConfiguredDatabase(databaseName);
127
+ if (resolved.error) {
128
+ return {
129
+ pool: null,
130
+ error: resolved.error,
131
+ };
132
+ }
133
+ const config = {
134
+ ...createSqlConfigForDatabase(resolved.databaseName),
135
+ pool: {
136
+ max: 1,
137
+ min: 0,
138
+ idleTimeoutMillis: 30000,
139
+ },
140
+ };
141
+ const pool = new sql.ConnectionPool(config);
142
+ await pool.connect();
143
+ return { pool };
144
+ }
90
145
  //# sourceMappingURL=db.js.map
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env node
2
- export {};
1
+ #!/usr/bin/env node
2
+ export {};
3
3
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,106 +1,71 @@
1
- #!/usr/bin/env node
2
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
- import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
5
- // Internal imports
6
- import { UpdateDataTool } from './tools/UpdateDataTool.js';
7
- import { InsertDataTool } from './tools/InsertDataTool.js';
8
- import { ReadDataTool } from './tools/ReadDataTool.js';
9
- import { CreateTableTool } from './tools/CreateTableTool.js';
10
- import { CreateIndexTool } from './tools/CreateIndexTool.js';
11
- import { ListTableTool } from './tools/ListTableTool.js';
12
- import { DropTableTool } from './tools/DropTableTool.js';
13
- import { DescribeTableTool } from './tools/DescribeTableTool.js';
14
- const updateDataTool = new UpdateDataTool();
15
- const insertDataTool = new InsertDataTool();
16
- const readDataTool = new ReadDataTool();
17
- const createTableTool = new CreateTableTool();
18
- const createIndexTool = new CreateIndexTool();
19
- const listTableTool = new ListTableTool();
20
- const dropTableTool = new DropTableTool();
21
- const describeTableTool = new DescribeTableTool();
22
- const server = new Server({
23
- name: 'mssql-mcp-server',
24
- version: '0.1.0',
25
- }, {
26
- capabilities: {
27
- tools: {},
28
- },
29
- });
30
- // Read READONLY env variable
31
- const isReadOnly = process.env.READONLY === 'true';
32
- // Request handlers
33
- server.setRequestHandler(ListToolsRequestSchema, async () => ({
34
- tools: isReadOnly
35
- ? [listTableTool, readDataTool, describeTableTool] // todo: add searchDataTool to the list of tools available in readonly mode once implemented
36
- : [insertDataTool, readDataTool, describeTableTool, updateDataTool, createTableTool, createIndexTool, dropTableTool, listTableTool], // add all new tools here
37
- }));
38
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
39
- const { name, arguments: args } = request.params;
40
- try {
41
- let result;
42
- switch (name) {
43
- case insertDataTool.name:
44
- result = await insertDataTool.run(args);
45
- break;
46
- case readDataTool.name:
47
- result = await readDataTool.run(args);
48
- break;
49
- case updateDataTool.name:
50
- result = await updateDataTool.run(args);
51
- break;
52
- case createTableTool.name:
53
- result = await createTableTool.run(args);
54
- break;
55
- case createIndexTool.name:
56
- result = await createIndexTool.run(args);
57
- break;
58
- case listTableTool.name:
59
- result = await listTableTool.run(args);
60
- break;
61
- case dropTableTool.name:
62
- result = await dropTableTool.run(args);
63
- break;
64
- case describeTableTool.name:
65
- if (!args || typeof args.tableName !== 'string') {
66
- return {
67
- content: [{ type: 'text', text: `Missing or invalid 'tableName' argument for describe_table tool.` }],
68
- isError: true,
69
- };
70
- }
71
- result = await describeTableTool.run(args);
72
- break;
73
- default:
74
- return {
75
- content: [{ type: 'text', text: `Unknown tool: ${name}` }],
76
- isError: true,
77
- };
78
- }
79
- return {
80
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
81
- };
82
- }
83
- catch (error) {
84
- return {
85
- content: [{ type: 'text', text: `Error occurred: ${error}` }],
86
- isError: true,
87
- };
88
- }
89
- });
90
- // Server startup
91
- async function runServer() {
92
- try {
93
- const transport = new StdioServerTransport();
94
- await server.connect(transport);
95
- }
96
- catch (error) {
97
- console.error('Fatal error running server:', error);
98
- process.exit(1);
99
- }
100
- }
101
- runServer().catch((error) => {
102
- console.error('Fatal error running server:', error);
103
- process.exit(1);
104
- });
105
- // Tools call getSqlRequest(databaseName) internally - no wrapping needed
1
+ #!/usr/bin/env node
2
+ import * as dotenv from "dotenv";
3
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
+ dotenv.config();
6
+ import { getMaxRows, getQueryTimeoutMs } from "./config.js";
7
+ import { getAllowedDatabases } from "./db.js";
8
+ import { registerPrompts } from "./promptRegistry.js";
9
+ import { registerResources } from "./resourceRegistry.js";
10
+ import { getAvailableTools } from "./toolRegistry.js";
11
+ const SERVER_VERSION = "1.2.0";
12
+ const SERVER_NAME = "mssql-mcp-server";
13
+ const isReadOnly = process.env.READONLY === "true";
14
+ const allowedDatabases = getAllowedDatabases();
15
+ const availableTools = getAvailableTools(isReadOnly);
16
+ const baseInstructions = "Use list_objects or list_table to inspect schema before querying data. Prefer read_data, search_data, and explain_query for safe read-only analysis.";
17
+ const readOnlyInstructions = " This server is READONLY: write/DDL MCP tools are disabled. Never use sqlcmd, SSMS, other DB CLI tools, or terminal scripts to perform INSERT, UPDATE, DELETE, or DDL as a workaround—state that the user must set READONLY=false on this server or apply changes themselves.";
18
+ const server = new McpServer({
19
+ name: SERVER_NAME,
20
+ version: SERVER_VERSION,
21
+ }, {
22
+ instructions: isReadOnly
23
+ ? baseInstructions + readOnlyInstructions
24
+ : baseInstructions,
25
+ });
26
+ function asTextToolResult(result) {
27
+ const isError = typeof result === "object" &&
28
+ result !== null &&
29
+ "success" in result &&
30
+ result.success === false;
31
+ return {
32
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
33
+ isError,
34
+ };
35
+ }
36
+ function registerTools(serverInstance) {
37
+ for (const definition of availableTools) {
38
+ serverInstance.registerTool(definition.tool.name, {
39
+ title: definition.tool.name,
40
+ description: definition.tool.description,
41
+ inputSchema: definition.inputSchema,
42
+ annotations: definition.annotations,
43
+ }, async (args) => asTextToolResult(await definition.tool.run(args)));
44
+ }
45
+ }
46
+ registerTools(server);
47
+ registerResources(server, {
48
+ serverName: SERVER_NAME,
49
+ serverVersion: SERVER_VERSION,
50
+ isReadOnly,
51
+ allowedDatabases,
52
+ toolNames: availableTools.map((tool) => tool.tool.name),
53
+ maxRows: getMaxRows(),
54
+ queryTimeoutMs: getQueryTimeoutMs(),
55
+ });
56
+ registerPrompts(server, { isReadOnly });
57
+ async function runServer() {
58
+ try {
59
+ const transport = new StdioServerTransport();
60
+ await server.connect(transport);
61
+ }
62
+ catch (error) {
63
+ console.error("Fatal error running server:", error);
64
+ process.exit(1);
65
+ }
66
+ }
67
+ runServer().catch((error) => {
68
+ console.error("Fatal error running server:", error);
69
+ process.exit(1);
70
+ });
106
71
  //# sourceMappingURL=index.js.map
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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"}
@@ -0,0 +1,16 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export interface PromptDefinition {
3
+ name: string;
4
+ description: string;
5
+ arguments?: Array<{
6
+ name: string;
7
+ description: string;
8
+ required?: boolean;
9
+ }>;
10
+ }
11
+ export declare const promptDefinitions: PromptDefinition[];
12
+ export interface RegisterPromptsOptions {
13
+ isReadOnly: boolean;
14
+ }
15
+ export declare function registerPrompts(server: McpServer, options: RegisterPromptsOptions): void;
16
+ //# sourceMappingURL=promptRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptRegistry.d.ts","sourceRoot":"","sources":["../src/promptRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,EAiD/C,CAAC;AAYF,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,OAAO,CAAC;CACrB;AAkDD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CA0BN"}