@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
@@ -1,72 +1,48 @@
1
- import { getSqlRequest } from "../db.js";
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
- databaseName: {
28
- type: "string",
29
- description: "Name of the database to use (optional). Omit to use the default database."
30
- },
31
- },
32
- required: ["tableName", "indexName", "columns"],
33
- };
34
- }
35
- async run(params) {
36
- try {
37
- const { schemaName, tableName, indexName, columns, databaseName, isUnique = false, isClustered = false } = params;
38
- const { request, error } = await getSqlRequest(databaseName);
39
- if (error) {
40
- return { success: false, message: error };
41
- }
42
- let indexType = isClustered ? "CLUSTERED" : "NONCLUSTERED";
43
- if (isUnique) {
44
- indexType = `UNIQUE ${indexType}`;
45
- }
46
- const columnNames = columns.join(", ");
47
- const tableRef = schemaName ? `${schemaName}.${tableName}` : tableName;
48
- const query = `CREATE ${indexType} INDEX ${indexName} ON ${tableRef} (${columnNames})`;
49
- await request.query(query);
50
- return {
51
- success: true,
52
- message: `Index [${indexName}] created successfully on table [${tableRef}]`,
53
- details: {
54
- schemaName: schemaName || undefined,
55
- tableName,
56
- indexName,
57
- columnNames,
58
- isUnique,
59
- isClustered
60
- }
61
- };
62
- }
63
- catch (error) {
64
- console.error("Error creating index:", error);
65
- return {
66
- success: false,
67
- message: `Failed to create index: ${error}`,
68
- };
69
- }
70
- }
71
- }
1
+ import { getSqlRequest } from "../db.js";
2
+ import { buildQualifiedName, quoteIdentifier } from "../sql.js";
3
+ export class CreateIndexTool {
4
+ constructor() {
5
+ this.name = "create_index";
6
+ this.description = "Creates an index on a specified column or columns in an MSSQL Database table";
7
+ }
8
+ async run(params) {
9
+ try {
10
+ const { schemaName, tableName, indexName, columns, databaseName, isUnique = false, isClustered = false, } = params;
11
+ const { request, error } = await getSqlRequest(databaseName);
12
+ if (error) {
13
+ return { success: false, message: error };
14
+ }
15
+ let indexType = isClustered ? "CLUSTERED" : "NONCLUSTERED";
16
+ if (isUnique) {
17
+ indexType = `UNIQUE ${indexType}`;
18
+ }
19
+ if (!Array.isArray(columns) || columns.length === 0) {
20
+ throw new Error("At least one column is required to create an index.");
21
+ }
22
+ const columnNames = columns.map((columnName) => quoteIdentifier(columnName)).join(", ");
23
+ const tableRef = buildQualifiedName(tableName, schemaName);
24
+ const query = `CREATE ${indexType} INDEX ${quoteIdentifier(indexName)} ON ${tableRef} (${columnNames})`;
25
+ await request.query(query);
26
+ return {
27
+ success: true,
28
+ message: `Index [${indexName}] created successfully on table [${tableRef}]`,
29
+ details: {
30
+ schemaName: schemaName || undefined,
31
+ tableName,
32
+ indexName,
33
+ columnNames,
34
+ isUnique,
35
+ isClustered,
36
+ },
37
+ };
38
+ }
39
+ catch (error) {
40
+ console.error("Error creating index:", error);
41
+ return {
42
+ success: false,
43
+ message: `Failed to create index: ${error}`,
44
+ };
45
+ }
46
+ }
47
+ }
72
48
  //# sourceMappingURL=CreateIndexTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateIndexTool.js","sourceRoot":"","sources":["../../src/tools/CreateIndexTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,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;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2EAA2E;iBACzF;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC;SACzC,CAAC;IAwCX,CAAC;IAtCC,KAAK,CAAC,GAAG,CAAC,MAAW;QACnB,IAAI;YACF,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;YAElH,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,KAAK,EAAE;gBACT,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC3C;YAED,IAAI,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC;YAC3D,IAAI,QAAQ,EAAE;gBACZ,SAAS,GAAG,UAAU,SAAS,EAAE,CAAC;aACnC;YACD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,MAAM,KAAK,GAAG,UAAU,SAAS,UAAU,SAAS,OAAO,QAAQ,KAAK,WAAW,GAAG,CAAC;YACvF,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE3B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,UAAU,SAAS,oCAAoC,QAAQ,GAAG;gBAC3E,OAAO,EAAE;oBACP,UAAU,EAAE,UAAU,IAAI,SAAS;oBACnC,SAAS;oBACT,SAAS;oBACT,WAAW;oBACX,QAAQ;oBACR,WAAW;iBACZ;aACF,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,2BAA2B,KAAK,EAAE;aAC5C,CAAC;SACH;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"CreateIndexTool.js","sourceRoot":"","sources":["../../src/tools/CreateIndexTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAYhE,MAAM,OAAO,eAAe;IAA5B;QACE,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GACT,8EAA8E,CAAC;IAoDnF,CAAC;IAlDC,KAAK,CAAC,GAAG,CAAC,MAAyB;QACjC,IAAI,CAAC;YACH,MAAM,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,OAAO,EACP,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,WAAW,GAAG,KAAK,GACpB,GAAG,MAAM,CAAC;YAEX,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5C,CAAC;YAED,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,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,UAAU,SAAS,UAAU,eAAe,CAAC,SAAS,CAAC,OAAO,QAAQ,KAAK,WAAW,GAAG,CAAC;YACxG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE3B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,UAAU,SAAS,oCAAoC,QAAQ,GAAG;gBAC3E,OAAO,EAAE;oBACP,UAAU,EAAE,UAAU,IAAI,SAAS;oBACnC,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"}
@@ -1,12 +1,19 @@
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
- }
1
+ import { type SqlTypeDeclaration } from "../writeSafety.js";
2
+ interface CreateTableParams {
3
+ schemaName?: string;
4
+ tableName: string;
5
+ columns: Array<{
6
+ name: string;
7
+ } & SqlTypeDeclaration>;
8
+ databaseName?: string;
9
+ }
10
+ export declare class CreateTableTool {
11
+ name: string;
12
+ description: string;
13
+ run(params: CreateTableParams): Promise<{
14
+ success: boolean;
15
+ message: string;
16
+ }>;
17
+ }
18
+ export {};
12
19
  //# sourceMappingURL=CreateTableTool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/CreateTableTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,qBAAa,eAAgB,YAAW,IAAI;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAkB;IACtB,WAAW,SAA2E;IACtF,WAAW,MAsBF;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;CA2BtB"}
1
+ {"version":3,"file":"CreateTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/CreateTableTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,UAAU,iBAAiB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,IAAI,SAAkB;IACtB,WAAW,SAC+D;IAEpE,GAAG,CAAC,MAAM,EAAE,iBAAiB;;;;CA6BpC"}
@@ -1,57 +1,38 @@
1
- import { getSqlRequest } from "../db.js";
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
- databaseName: {
23
- type: "string",
24
- description: "Name of the database to use (optional). Omit to use the default database."
25
- },
26
- },
27
- required: ["tableName", "columns"],
28
- };
29
- }
30
- async run(params) {
31
- try {
32
- const { tableName, columns, databaseName } = params;
33
- const { request, error } = await getSqlRequest(databaseName);
34
- if (error) {
35
- return { success: false, message: error };
36
- }
37
- if (!Array.isArray(columns) || columns.length === 0) {
38
- throw new Error("'columns' must be a non-empty array");
39
- }
40
- const columnDefs = columns.map((col) => `[${col.name}] ${col.type}`).join(", ");
41
- const query = `CREATE TABLE [${tableName}] (${columnDefs})`;
42
- await request.query(query);
43
- return {
44
- success: true,
45
- message: `Table '${tableName}' created successfully.`
46
- };
47
- }
48
- catch (error) {
49
- console.error("Error creating table:", error);
50
- return {
51
- success: false,
52
- message: `Failed to create table: ${error}`
53
- };
54
- }
55
- }
56
- }
1
+ import { getSqlRequest } from "../db.js";
2
+ import { buildQualifiedName } from "../sql.js";
3
+ import { buildCreateColumnDefinition, } from "../writeSafety.js";
4
+ export class CreateTableTool {
5
+ constructor() {
6
+ this.name = "create_table";
7
+ this.description = "Creates a new table in the MSSQL Database with the specified columns.";
8
+ }
9
+ async run(params) {
10
+ try {
11
+ const { schemaName, tableName, columns, databaseName } = params;
12
+ const { request, error } = await getSqlRequest(databaseName);
13
+ if (error) {
14
+ return { success: false, message: error };
15
+ }
16
+ if (!Array.isArray(columns) || columns.length === 0) {
17
+ throw new Error("'columns' must be a non-empty array");
18
+ }
19
+ const columnDefs = columns
20
+ .map((col) => buildCreateColumnDefinition(col.name, col))
21
+ .join(", ");
22
+ const query = `CREATE TABLE ${buildQualifiedName(tableName, schemaName)} (${columnDefs})`;
23
+ await request.query(query);
24
+ return {
25
+ success: true,
26
+ message: `Table '${tableName}' created successfully.`,
27
+ };
28
+ }
29
+ catch (error) {
30
+ console.error("Error creating table:", error);
31
+ return {
32
+ success: false,
33
+ message: `Failed to create table: ${error}`,
34
+ };
35
+ }
36
+ }
37
+ }
57
38
  //# sourceMappingURL=CreateTableTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateTableTool.js","sourceRoot":"","sources":["../../src/tools/CreateTableTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,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;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2EAA2E;iBACzF;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;SAC5B,CAAC;IA6BX,CAAC;IA3BC,KAAK,CAAC,GAAG,CAAC,MAAW;QACnB,IAAI;YACF,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;YAEpD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,KAAK,EAAE;gBACT,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC3C;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACnD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;aACxD;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,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,UAAU,SAAS,yBAAyB;aACtD,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,2BAA2B,KAAK,EAAE;aAC5C,CAAC;SACH;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"CreateTableTool.js","sourceRoot":"","sources":["../../src/tools/CreateTableTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EACL,2BAA2B,GAE5B,MAAM,mBAAmB,CAAC;AAS3B,MAAM,OAAO,eAAe;IAA5B;QACE,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GACT,uEAAuE,CAAC;IA+B5E,CAAC;IA7BC,KAAK,CAAC,GAAG,CAAC,MAAyB;QACjC,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;YAEhE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5C,CAAC;YAED,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;iBACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,2BAA2B,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;iBACxD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,gBAAgB,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,UAAU,GAAG,CAAC;YAC1F,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3B,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"}
@@ -0,0 +1,22 @@
1
+ import { type SqlFilter } from "../writeSafety.js";
2
+ interface DeleteDataParams {
3
+ tableName: string;
4
+ schemaName?: string;
5
+ filters: SqlFilter[];
6
+ databaseName?: string;
7
+ }
8
+ export declare class DeleteDataTool {
9
+ name: string;
10
+ description: string;
11
+ run(params: DeleteDataParams): Promise<{
12
+ success: boolean;
13
+ message: string;
14
+ rowsAffected?: undefined;
15
+ } | {
16
+ success: boolean;
17
+ message: string;
18
+ rowsAffected: number;
19
+ }>;
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=DeleteDataTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteDataTool.d.ts","sourceRoot":"","sources":["../../src/tools/DeleteDataTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAElF,UAAU,gBAAgB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,cAAc;IACzB,IAAI,SAAiB;IACrB,WAAW,SAC6D;IAElE,GAAG,CAAC,MAAM,EAAE,gBAAgB;;;;;;;;;CAiCnC"}
@@ -0,0 +1,35 @@
1
+ import { getSqlRequest } from "../db.js";
2
+ import { buildQualifiedName } from "../sql.js";
3
+ import { buildParameterizedWhereClause } from "../writeSafety.js";
4
+ export class DeleteDataTool {
5
+ constructor() {
6
+ this.name = "delete_data";
7
+ this.description = "Deletes rows from an MSSQL table using required structured filters.";
8
+ }
9
+ async run(params) {
10
+ let query;
11
+ try {
12
+ const { tableName, schemaName, filters, databaseName } = params;
13
+ const { request, error } = await getSqlRequest(databaseName);
14
+ if (error) {
15
+ return { success: false, message: error };
16
+ }
17
+ const whereClause = buildParameterizedWhereClause(filters, (name, value) => request.input(name, value), "delete_filter");
18
+ query = `DELETE FROM ${buildQualifiedName(tableName, schemaName)} WHERE ${whereClause}`;
19
+ const result = await request.query(query);
20
+ return {
21
+ success: true,
22
+ message: `Delete completed successfully. ${result.rowsAffected[0]} row(s) affected`,
23
+ rowsAffected: result.rowsAffected[0],
24
+ };
25
+ }
26
+ catch (error) {
27
+ console.error("Error deleting data:", error);
28
+ return {
29
+ success: false,
30
+ message: `Failed to delete data${query ? ` with '${query}'` : ""}: ${error}`,
31
+ };
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=DeleteDataTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteDataTool.js","sourceRoot":"","sources":["../../src/tools/DeleteDataTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,6BAA6B,EAAkB,MAAM,mBAAmB,CAAC;AASlF,MAAM,OAAO,cAAc;IAA3B;QACE,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GACT,qEAAqE,CAAC;IAmC1E,CAAC;IAjCC,KAAK,CAAC,GAAG,CAAC,MAAwB;QAChC,IAAI,KAAyB,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;YAEhE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5C,CAAC;YAED,MAAM,WAAW,GAAG,6BAA6B,CAC/C,OAAO,EACP,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAC3C,eAAe,CAChB,CAAC;YAEF,KAAK,GAAG,eAAe,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,UAAU,WAAW,EAAE,CAAC;YACxF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE1C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,kCAAkC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB;gBACnF,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;aACrC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,wBAAwB,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,EAAE;aAC7E,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ interface DescribeObjectParams {
2
+ objectName: string;
3
+ objectTypes?: string[];
4
+ schemaName?: string;
5
+ databaseName?: string;
6
+ }
7
+ export declare class DescribeObjectTool {
8
+ name: string;
9
+ description: string;
10
+ run(params: DescribeObjectParams): Promise<{
11
+ success: boolean;
12
+ message: string;
13
+ object?: undefined;
14
+ } | {
15
+ success: boolean;
16
+ object: import("../schema.js").DatabaseObjectDescription;
17
+ message?: undefined;
18
+ }>;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=DescribeObjectTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DescribeObjectTool.d.ts","sourceRoot":"","sources":["../../src/tools/DescribeObjectTool.ts"],"names":[],"mappings":"AAEA,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,kBAAkB;IAC7B,IAAI,SAAqB;IACzB,WAAW,SACoG;IAEzG,GAAG,CAAC,MAAM,EAAE,oBAAoB;;;;;;;;;CA6BvC"}
@@ -0,0 +1,31 @@
1
+ import { describeDatabaseObject } from "../schema.js";
2
+ export class DescribeObjectTool {
3
+ constructor() {
4
+ this.name = "describe_object";
5
+ this.description = "Describes a table, view, procedure, function, or trigger, including columns and definition when available.";
6
+ }
7
+ async run(params) {
8
+ try {
9
+ const { objectName, objectTypes, schemaName, databaseName } = params;
10
+ const object = await describeDatabaseObject(objectName, databaseName, schemaName, objectTypes);
11
+ if (!object) {
12
+ return {
13
+ success: false,
14
+ message: `No object named '${objectName}' was found.`,
15
+ };
16
+ }
17
+ return {
18
+ success: true,
19
+ object,
20
+ };
21
+ }
22
+ catch (error) {
23
+ console.error("Error describing object:", error);
24
+ return {
25
+ success: false,
26
+ message: `Failed to describe object: ${error}`,
27
+ };
28
+ }
29
+ }
30
+ }
31
+ //# sourceMappingURL=DescribeObjectTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DescribeObjectTool.js","sourceRoot":"","sources":["../../src/tools/DescribeObjectTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAStD,MAAM,OAAO,kBAAkB;IAA/B;QACE,SAAI,GAAG,iBAAiB,CAAC;QACzB,gBAAW,GACT,4GAA4G,CAAC;IA+BjH,CAAC;IA7BC,KAAK,CAAC,GAAG,CAAC,MAA4B;QACpC,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,CACZ,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,oBAAoB,UAAU,cAAc;iBACtD,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM;aACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,8BAA8B,KAAK,EAAE;aAC/C,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -1,21 +1,20 @@
1
- import sql from "mssql";
2
- import { Tool } from "@modelcontextprotocol/sdk/types.js";
3
- export declare class DescribeTableTool implements Tool {
4
- [key: string]: any;
5
- name: string;
6
- description: string;
7
- inputSchema: any;
8
- run(params: {
9
- tableName: string;
10
- databaseName?: string;
11
- }): Promise<{
12
- success: boolean;
13
- message: string;
14
- columns?: undefined;
15
- } | {
16
- success: boolean;
17
- columns: sql.IRecordSet<any>;
18
- message?: undefined;
19
- }>;
20
- }
1
+ interface DescribeTableParams {
2
+ tableName: string;
3
+ schemaName?: string;
4
+ databaseName?: string;
5
+ }
6
+ export declare class DescribeTableTool {
7
+ name: string;
8
+ description: string;
9
+ run(params: DescribeTableParams): Promise<{
10
+ success: boolean;
11
+ columns: import("mssql").IRecordSet<any>;
12
+ message?: undefined;
13
+ } | {
14
+ success: boolean;
15
+ message: string;
16
+ columns?: undefined;
17
+ }>;
18
+ }
19
+ export {};
21
20
  //# sourceMappingURL=DescribeTableTool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DescribeTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/DescribeTableTool.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,qBAAa,iBAAkB,YAAW,IAAI;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAoB;IACxB,WAAW,SAAmF;IAC9F,WAAW,MAUF;IAEH,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;CAsB/D"}
1
+ {"version":3,"file":"DescribeTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/DescribeTableTool.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,iBAAiB;IAC5B,IAAI,SAAoB;IACxB,WAAW,SACuE;IAE5E,GAAG,CAAC,MAAM,EAAE,mBAAmB;;;;;;;;;CAgBtC"}
@@ -1,42 +1,24 @@
1
- import sql from "mssql";
2
- import { getSqlRequest } from "../db.js";
3
- export class DescribeTableTool {
4
- constructor() {
5
- this.name = "describe_table";
6
- this.description = "Describes the schema (columns and types) of a specified MSSQL Database table.";
7
- this.inputSchema = {
8
- type: "object",
9
- properties: {
10
- tableName: { type: "string", description: "Name of the table to describe" },
11
- databaseName: {
12
- type: "string",
13
- description: "Name of the database to use (optional). Omit to use the default database."
14
- },
15
- },
16
- required: ["tableName"],
17
- };
18
- }
19
- async run(params) {
20
- try {
21
- const { tableName, databaseName } = params;
22
- const { request, error } = await getSqlRequest(databaseName);
23
- if (error) {
24
- return { success: false, message: error };
25
- }
26
- const query = `SELECT COLUMN_NAME as name, DATA_TYPE as type FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @tableName`;
27
- request.input("tableName", sql.NVarChar, tableName);
28
- const result = await request.query(query);
29
- return {
30
- success: true,
31
- columns: result.recordset,
32
- };
33
- }
34
- catch (error) {
35
- return {
36
- success: false,
37
- message: `Failed to describe table: ${error}`,
38
- };
39
- }
40
- }
41
- }
1
+ import { describeTableSchema } from "../schema.js";
2
+ export class DescribeTableTool {
3
+ constructor() {
4
+ this.name = "describe_table";
5
+ this.description = "Describes the schema (columns and types) of a specified MSSQL Database table.";
6
+ }
7
+ async run(params) {
8
+ try {
9
+ const { tableName, schemaName, databaseName } = params;
10
+ const columns = await describeTableSchema(tableName, databaseName, schemaName);
11
+ return {
12
+ success: true,
13
+ columns,
14
+ };
15
+ }
16
+ catch (error) {
17
+ return {
18
+ success: false,
19
+ message: `Failed to describe table: ${error}`,
20
+ };
21
+ }
22
+ }
23
+ }
42
24
  //# sourceMappingURL=DescribeTableTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DescribeTableTool.js","sourceRoot":"","sources":["../../src/tools/DescribeTableTool.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,iBAAiB;IAA9B;QAEE,SAAI,GAAG,gBAAgB,CAAC;QACxB,gBAAW,GAAG,+EAA+E,CAAC;QAC9F,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBAC3E,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2EAA2E;iBACzF;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACjB,CAAC;IAwBX,CAAC;IAtBC,KAAK,CAAC,GAAG,CAAC,MAAoD;QAC5D,IAAI;YACF,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;YAE3C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,KAAK,EAAE;gBACT,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC3C;YACD,MAAM,KAAK,GAAG,6GAA6G,CAAC;YAC5H,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,MAAM,CAAC,SAAS;aAC1B,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,6BAA6B,KAAK,EAAE;aAC9C,CAAC;SACH;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"DescribeTableTool.js","sourceRoot":"","sources":["../../src/tools/DescribeTableTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAQnD,MAAM,OAAO,iBAAiB;IAA9B;QACE,SAAI,GAAG,gBAAgB,CAAC;QACxB,gBAAW,GACT,+EAA+E,CAAC;IAkBpF,CAAC;IAhBC,KAAK,CAAC,GAAG,CAAC,MAA2B;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;YACvD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;YAE/E,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO;aACR,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,6BAA6B,KAAK,EAAE;aAC9C,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -1,12 +1,14 @@
1
- import { Tool } from "@modelcontextprotocol/sdk/types.js";
2
- export declare class DropTableTool 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
- }
1
+ interface DropTableParams {
2
+ tableName: string;
3
+ databaseName?: string;
4
+ }
5
+ export declare class DropTableTool {
6
+ name: string;
7
+ description: string;
8
+ run(params: DropTableParams): Promise<{
9
+ success: boolean;
10
+ message: string;
11
+ }>;
12
+ }
13
+ export {};
12
14
  //# sourceMappingURL=DropTableTool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/DropTableTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,qBAAa,aAAc,YAAW,IAAI;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAgB;IACpB,WAAW,SAA4C;IACvD,WAAW,MAUF;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;CA2BtB"}
1
+ {"version":3,"file":"DropTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/DropTableTool.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,aAAa;IACxB,IAAI,SAAgB;IACpB,WAAW,SAA4C;IAEjD,GAAG,CAAC,MAAM,EAAE,eAAe;;;;CAuBlC"}