@connorbritain/mssql-mcp-server 0.3.6 → 0.4.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 (99) hide show
  1. package/dist/index.js +6 -751
  2. package/dist/index.js.map +1 -1
  3. package/package.json +2 -5
  4. package/dist/audit/AuditLogger.d.ts +0 -37
  5. package/dist/audit/AuditLogger.d.ts.map +0 -1
  6. package/dist/audit/AuditLogger.js +0 -145
  7. package/dist/audit/AuditLogger.js.map +0 -1
  8. package/dist/config/EnvironmentManager.d.ts +0 -75
  9. package/dist/config/EnvironmentManager.d.ts.map +0 -1
  10. package/dist/config/EnvironmentManager.js +0 -305
  11. package/dist/config/EnvironmentManager.js.map +0 -1
  12. package/dist/config/ScriptManager.d.ts +0 -69
  13. package/dist/config/ScriptManager.d.ts.map +0 -1
  14. package/dist/config/ScriptManager.js +0 -166
  15. package/dist/config/ScriptManager.js.map +0 -1
  16. package/dist/config/SecretResolver.d.ts +0 -66
  17. package/dist/config/SecretResolver.d.ts.map +0 -1
  18. package/dist/config/SecretResolver.js +0 -230
  19. package/dist/config/SecretResolver.js.map +0 -1
  20. package/dist/tools/CreateIndexTool.d.ts +0 -24
  21. package/dist/tools/CreateIndexTool.d.ts.map +0 -1
  22. package/dist/tools/CreateIndexTool.js +0 -64
  23. package/dist/tools/CreateIndexTool.js.map +0 -1
  24. package/dist/tools/CreateTableTool.d.ts +0 -12
  25. package/dist/tools/CreateTableTool.d.ts.map +0 -1
  26. package/dist/tools/CreateTableTool.js +0 -49
  27. package/dist/tools/CreateTableTool.js.map +0 -1
  28. package/dist/tools/DeleteDataTool.d.ts +0 -56
  29. package/dist/tools/DeleteDataTool.d.ts.map +0 -1
  30. package/dist/tools/DeleteDataTool.js +0 -103
  31. package/dist/tools/DeleteDataTool.js.map +0 -1
  32. package/dist/tools/DescribeTableTool.d.ts +0 -32
  33. package/dist/tools/DescribeTableTool.d.ts.map +0 -1
  34. package/dist/tools/DescribeTableTool.js +0 -108
  35. package/dist/tools/DescribeTableTool.js.map +0 -1
  36. package/dist/tools/DropTableTool.d.ts +0 -12
  37. package/dist/tools/DropTableTool.d.ts.map +0 -1
  38. package/dist/tools/DropTableTool.js +0 -37
  39. package/dist/tools/DropTableTool.js.map +0 -1
  40. package/dist/tools/ExplainQueryTool.d.ts +0 -24
  41. package/dist/tools/ExplainQueryTool.d.ts.map +0 -1
  42. package/dist/tools/ExplainQueryTool.js +0 -98
  43. package/dist/tools/ExplainQueryTool.js.map +0 -1
  44. package/dist/tools/InsertDataTool.d.ts +0 -17
  45. package/dist/tools/InsertDataTool.d.ts.map +0 -1
  46. package/dist/tools/InsertDataTool.js +0 -102
  47. package/dist/tools/InsertDataTool.js.map +0 -1
  48. package/dist/tools/InspectDependenciesTool.d.ts +0 -45
  49. package/dist/tools/InspectDependenciesTool.d.ts.map +0 -1
  50. package/dist/tools/InspectDependenciesTool.js +0 -215
  51. package/dist/tools/InspectDependenciesTool.js.map +0 -1
  52. package/dist/tools/ListDatabasesTool.d.ts +0 -27
  53. package/dist/tools/ListDatabasesTool.d.ts.map +0 -1
  54. package/dist/tools/ListDatabasesTool.js +0 -107
  55. package/dist/tools/ListDatabasesTool.js.map +0 -1
  56. package/dist/tools/ListEnvironmentsTool.d.ts +0 -49
  57. package/dist/tools/ListEnvironmentsTool.d.ts.map +0 -1
  58. package/dist/tools/ListEnvironmentsTool.js +0 -73
  59. package/dist/tools/ListEnvironmentsTool.js.map +0 -1
  60. package/dist/tools/ListScriptsTool.d.ts +0 -41
  61. package/dist/tools/ListScriptsTool.d.ts.map +0 -1
  62. package/dist/tools/ListScriptsTool.js +0 -86
  63. package/dist/tools/ListScriptsTool.js.map +0 -1
  64. package/dist/tools/ListTableTool.d.ts +0 -24
  65. package/dist/tools/ListTableTool.d.ts.map +0 -1
  66. package/dist/tools/ListTableTool.js +0 -85
  67. package/dist/tools/ListTableTool.js.map +0 -1
  68. package/dist/tools/ProfileTableTool.d.ts +0 -78
  69. package/dist/tools/ProfileTableTool.d.ts.map +0 -1
  70. package/dist/tools/ProfileTableTool.js +0 -373
  71. package/dist/tools/ProfileTableTool.js.map +0 -1
  72. package/dist/tools/ReadDataTool.d.ts +0 -61
  73. package/dist/tools/ReadDataTool.d.ts.map +0 -1
  74. package/dist/tools/ReadDataTool.js +0 -299
  75. package/dist/tools/ReadDataTool.js.map +0 -1
  76. package/dist/tools/RelationshipInspectorTool.d.ts +0 -46
  77. package/dist/tools/RelationshipInspectorTool.d.ts.map +0 -1
  78. package/dist/tools/RelationshipInspectorTool.js +0 -156
  79. package/dist/tools/RelationshipInspectorTool.js.map +0 -1
  80. package/dist/tools/RunScriptTool.d.ts +0 -215
  81. package/dist/tools/RunScriptTool.d.ts.map +0 -1
  82. package/dist/tools/RunScriptTool.js +0 -177
  83. package/dist/tools/RunScriptTool.js.map +0 -1
  84. package/dist/tools/SearchSchemaTool.d.ts +0 -88
  85. package/dist/tools/SearchSchemaTool.d.ts.map +0 -1
  86. package/dist/tools/SearchSchemaTool.js +0 -237
  87. package/dist/tools/SearchSchemaTool.js.map +0 -1
  88. package/dist/tools/TestConnectionTool.d.ts +0 -38
  89. package/dist/tools/TestConnectionTool.d.ts.map +0 -1
  90. package/dist/tools/TestConnectionTool.js +0 -156
  91. package/dist/tools/TestConnectionTool.js.map +0 -1
  92. package/dist/tools/UpdateDataTool.d.ts +0 -61
  93. package/dist/tools/UpdateDataTool.d.ts.map +0 -1
  94. package/dist/tools/UpdateDataTool.js +0 -117
  95. package/dist/tools/UpdateDataTool.js.map +0 -1
  96. package/dist/tools/ValidateEnvironmentConfigTool.d.ts +0 -51
  97. package/dist/tools/ValidateEnvironmentConfigTool.d.ts.map +0 -1
  98. package/dist/tools/ValidateEnvironmentConfigTool.js +0 -320
  99. package/dist/tools/ValidateEnvironmentConfigTool.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExplainQueryTool.js","sourceRoot":"","sources":["../../src/tools/ExplainQueryTool.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { Tool } from "@modelcontextprotocol/sdk/types.js";
2
- export declare class InsertDataTool 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
- recordsInserted?: undefined;
11
- } | {
12
- success: boolean;
13
- message: string;
14
- recordsInserted: number;
15
- }>;
16
- }
17
- //# sourceMappingURL=InsertDataTool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InsertDataTool.d.ts","sourceRoot":"","sources":["../../src/tools/InsertDataTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,qBAAa,cAAe,YAAW,IAAI;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAiB;IACrB,WAAW,SAA0J;IACrK,WAAW,EAsBN,GAAG,CAAC;IACH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;;;;;;CAqEtB"}
@@ -1,102 +0,0 @@
1
- import sql from "mssql";
2
- export class InsertDataTool {
3
- constructor() {
4
- this.name = "insert_data";
5
- this.description = "Inserts one or more records into an MSSQL table. Pass data as an object (single) or array of objects (batch). Uses parameterized queries for safety.";
6
- this.inputSchema = {
7
- type: "object",
8
- properties: {
9
- tableName: {
10
- type: "string",
11
- description: "Name of the table to insert data into"
12
- },
13
- data: {
14
- oneOf: [
15
- {
16
- type: "object",
17
- description: "Single record data object with column names as keys and values as the data to insert. Example: {\"name\": \"John\", \"age\": 30}"
18
- },
19
- {
20
- type: "array",
21
- items: { type: "object" },
22
- description: "Array of data objects for multiple record insertion. Each object must have identical column structure. Example: [{\"name\": \"John\", \"age\": 30}, {\"name\": \"Jane\", \"age\": 25}]"
23
- }
24
- ]
25
- },
26
- },
27
- required: ["tableName", "data"],
28
- };
29
- }
30
- async run(params) {
31
- try {
32
- const { tableName, data } = params;
33
- // Check if data is an array (multiple records) or single object
34
- const isMultipleRecords = Array.isArray(data);
35
- const records = isMultipleRecords ? data : [data];
36
- if (records.length === 0) {
37
- return {
38
- success: false,
39
- message: "No data provided for insertion",
40
- };
41
- }
42
- // Validate that all records have the same columns
43
- const firstRecordColumns = Object.keys(records[0]).sort();
44
- for (let i = 1; i < records.length; i++) {
45
- const currentColumns = Object.keys(records[i]).sort();
46
- if (JSON.stringify(firstRecordColumns) !== JSON.stringify(currentColumns)) {
47
- return {
48
- success: false,
49
- message: `Column mismatch: Record ${i + 1} has different columns than the first record. Expected columns: [${firstRecordColumns.join(', ')}], but got: [${currentColumns.join(', ')}]`,
50
- };
51
- }
52
- }
53
- const columns = firstRecordColumns.join(", ");
54
- const request = new sql.Request(params.pool);
55
- if (isMultipleRecords) {
56
- // Multiple records insert using VALUES clause - works for 1 or more records
57
- const valueClauses = [];
58
- records.forEach((record, recordIndex) => {
59
- const valueParams = firstRecordColumns
60
- .map((column, columnIndex) => `@value${recordIndex}_${columnIndex}`)
61
- .join(", ");
62
- valueClauses.push(`(${valueParams})`);
63
- // Add parameters for this record
64
- firstRecordColumns.forEach((column, columnIndex) => {
65
- request.input(`value${recordIndex}_${columnIndex}`, record[column]);
66
- });
67
- });
68
- const query = `INSERT INTO ${tableName} (${columns}) VALUES ${valueClauses.join(", ")}`;
69
- await request.query(query);
70
- return {
71
- success: true,
72
- message: `Successfully inserted ${records.length} record${records.length > 1 ? 's' : ''} into ${tableName}`,
73
- recordsInserted: records.length,
74
- };
75
- }
76
- else {
77
- // Single record insert (when data is passed as single object)
78
- const values = firstRecordColumns
79
- .map((column, index) => `@value${index}`)
80
- .join(", ");
81
- firstRecordColumns.forEach((column, index) => {
82
- request.input(`value${index}`, records[0][column]);
83
- });
84
- const query = `INSERT INTO ${tableName} (${columns}) VALUES (${values})`;
85
- await request.query(query);
86
- return {
87
- success: true,
88
- message: `Successfully inserted 1 record into ${tableName}`,
89
- recordsInserted: 1,
90
- };
91
- }
92
- }
93
- catch (error) {
94
- console.error("Error inserting data:", error);
95
- return {
96
- success: false,
97
- message: `Failed to insert data: ${error}`,
98
- };
99
- }
100
- }
101
- }
102
- //# sourceMappingURL=InsertDataTool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InsertDataTool.js","sourceRoot":"","sources":["../../src/tools/InsertDataTool.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import { Tool } from "@modelcontextprotocol/sdk/types.js";
2
- interface DependencyReference {
3
- name: string;
4
- schema: string;
5
- type: string;
6
- columns?: string[];
7
- }
8
- interface DependencyResult {
9
- success: boolean;
10
- object: string;
11
- objectType?: string;
12
- referencedBy?: {
13
- views: DependencyReference[];
14
- storedProcedures: DependencyReference[];
15
- functions: DependencyReference[];
16
- triggers: DependencyReference[];
17
- foreignKeys: {
18
- table: string;
19
- schema: string;
20
- column: string;
21
- constraint: string;
22
- }[];
23
- };
24
- references?: {
25
- tables: DependencyReference[];
26
- views: DependencyReference[];
27
- functions: DependencyReference[];
28
- };
29
- message?: string;
30
- error?: string;
31
- hint?: string;
32
- }
33
- export declare class InspectDependenciesTool implements Tool {
34
- [key: string]: any;
35
- name: string;
36
- description: string;
37
- inputSchema: any;
38
- run(params: {
39
- objectName: string;
40
- includeColumns?: boolean;
41
- environment?: string;
42
- }): Promise<DependencyResult>;
43
- }
44
- export {};
45
- //# sourceMappingURL=InspectDependenciesTool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InspectDependenciesTool.d.ts","sourceRoot":"","sources":["../../src/tools/InspectDependenciesTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,mBAAmB,EAAE,CAAC;QAC7B,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;QACxC,SAAS,EAAE,mBAAmB,EAAE,CAAC;QACjC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;QAChC,WAAW,EAAE;YACX,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,MAAM,CAAC;SACpB,EAAE,CAAC;KACL,CAAC;IACF,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,mBAAmB,EAAE,CAAC;QAC9B,KAAK,EAAE,mBAAmB,EAAE,CAAC;QAC7B,SAAS,EAAE,mBAAmB,EAAE,CAAC;KAClC,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,uBAAwB,YAAW,IAAI;IAClD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAA0B;IAC9B,WAAW,SAA0H;IAErI,WAAW,EAaN,GAAG,CAAC;IAEH,GAAG,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;CAsNzF"}
@@ -1,215 +0,0 @@
1
- import sql from "mssql";
2
- export class InspectDependenciesTool {
3
- constructor() {
4
- this.name = "inspect_dependencies";
5
- this.description = "Shows what database objects depend on a table, view, or other object. Use for impact analysis before schema changes.";
6
- this.inputSchema = {
7
- type: "object",
8
- properties: {
9
- objectName: {
10
- type: "string",
11
- description: "Name of the object to inspect (e.g., 'dbo.Customers' or 'Customers')",
12
- },
13
- includeColumns: {
14
- type: "boolean",
15
- description: "Include column-level dependency details. Default: false",
16
- },
17
- },
18
- required: ["objectName"],
19
- };
20
- }
21
- async run(params) {
22
- const { objectName, includeColumns = false } = params;
23
- try {
24
- // Parse schema and object name
25
- const parts = objectName.split(".");
26
- let schemaName = "dbo";
27
- let objName = objectName;
28
- if (parts.length === 2) {
29
- schemaName = parts[0];
30
- objName = parts[1];
31
- }
32
- const pool = sql.globalPool;
33
- if (!pool) {
34
- return {
35
- success: false,
36
- object: objectName,
37
- error: "NO_CONNECTION",
38
- message: "No database connection available.",
39
- };
40
- }
41
- // First, get the object type
42
- const objectTypeResult = await pool.request()
43
- .input("schema", sql.NVarChar, schemaName)
44
- .input("name", sql.NVarChar, objName)
45
- .query(`
46
- SELECT
47
- o.type_desc AS objectType,
48
- o.object_id AS objectId
49
- FROM sys.objects o
50
- INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
51
- WHERE s.name = @schema AND o.name = @name
52
- `);
53
- if (objectTypeResult.recordset.length === 0) {
54
- return {
55
- success: false,
56
- object: objectName,
57
- error: "OBJECT_NOT_FOUND",
58
- message: `Object '${schemaName}.${objName}' not found.`,
59
- };
60
- }
61
- const objectType = objectTypeResult.recordset[0].objectType;
62
- const objectId = objectTypeResult.recordset[0].objectId;
63
- // Get objects that reference this object (what depends on this)
64
- const referencedByResult = await pool.request()
65
- .input("schema", sql.NVarChar, schemaName)
66
- .input("name", sql.NVarChar, objName)
67
- .query(`
68
- SELECT DISTINCT
69
- OBJECT_SCHEMA_NAME(d.referencing_id) AS referencingSchema,
70
- OBJECT_NAME(d.referencing_id) AS referencingName,
71
- o.type_desc AS referencingType
72
- FROM sys.sql_expression_dependencies d
73
- INNER JOIN sys.objects o ON d.referencing_id = o.object_id
74
- WHERE d.referenced_schema_name = @schema
75
- AND d.referenced_entity_name = @name
76
- AND d.referencing_id != d.referenced_id
77
- ORDER BY o.type_desc, referencingName
78
- `);
79
- // Get foreign keys pointing to this table (if it's a table)
80
- let foreignKeys = [];
81
- if (objectType === "USER_TABLE") {
82
- const fkResult = await pool.request()
83
- .input("objectId", sql.Int, objectId)
84
- .query(`
85
- SELECT
86
- OBJECT_SCHEMA_NAME(fk.parent_object_id) AS referencingSchema,
87
- OBJECT_NAME(fk.parent_object_id) AS referencingTable,
88
- COL_NAME(fkc.parent_object_id, fkc.parent_column_id) AS referencingColumn,
89
- fk.name AS constraintName
90
- FROM sys.foreign_keys fk
91
- INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
92
- WHERE fk.referenced_object_id = @objectId
93
- ORDER BY referencingTable, referencingColumn
94
- `);
95
- foreignKeys = fkResult.recordset;
96
- }
97
- // Get objects that this object references (what this depends on)
98
- const referencesResult = await pool.request()
99
- .input("schema", sql.NVarChar, schemaName)
100
- .input("name", sql.NVarChar, objName)
101
- .query(`
102
- SELECT DISTINCT
103
- d.referenced_schema_name AS referencedSchema,
104
- d.referenced_entity_name AS referencedName,
105
- COALESCE(o.type_desc, 'UNKNOWN') AS referencedType
106
- FROM sys.sql_expression_dependencies d
107
- LEFT JOIN sys.objects o ON d.referenced_id = o.object_id
108
- WHERE OBJECT_SCHEMA_NAME(d.referencing_id) = @schema
109
- AND OBJECT_NAME(d.referencing_id) = @name
110
- AND d.referenced_entity_name IS NOT NULL
111
- ORDER BY referencedType, referencedName
112
- `);
113
- // Categorize referencing objects
114
- const views = [];
115
- const storedProcedures = [];
116
- const functions = [];
117
- const triggers = [];
118
- for (const row of referencedByResult.recordset) {
119
- const ref = {
120
- name: row.referencingName,
121
- schema: row.referencingSchema,
122
- type: row.referencingType,
123
- };
124
- switch (row.referencingType) {
125
- case "VIEW":
126
- views.push(ref);
127
- break;
128
- case "SQL_STORED_PROCEDURE":
129
- storedProcedures.push(ref);
130
- break;
131
- case "SQL_SCALAR_FUNCTION":
132
- case "SQL_TABLE_VALUED_FUNCTION":
133
- case "SQL_INLINE_TABLE_VALUED_FUNCTION":
134
- functions.push(ref);
135
- break;
136
- case "SQL_TRIGGER":
137
- triggers.push(ref);
138
- break;
139
- default:
140
- // Other types go to functions as catch-all
141
- functions.push(ref);
142
- }
143
- }
144
- // Categorize referenced objects
145
- const referencedTables = [];
146
- const referencedViews = [];
147
- const referencedFunctions = [];
148
- for (const row of referencesResult.recordset) {
149
- const ref = {
150
- name: row.referencedName,
151
- schema: row.referencedSchema || "dbo",
152
- type: row.referencedType,
153
- };
154
- switch (row.referencedType) {
155
- case "USER_TABLE":
156
- referencedTables.push(ref);
157
- break;
158
- case "VIEW":
159
- referencedViews.push(ref);
160
- break;
161
- default:
162
- referencedFunctions.push(ref);
163
- }
164
- }
165
- const result = {
166
- success: true,
167
- object: `${schemaName}.${objName}`,
168
- objectType,
169
- referencedBy: {
170
- views,
171
- storedProcedures,
172
- functions,
173
- triggers,
174
- foreignKeys: foreignKeys.map((fk) => ({
175
- table: fk.referencingTable,
176
- schema: fk.referencingSchema,
177
- column: fk.referencingColumn,
178
- constraint: fk.constraintName,
179
- })),
180
- },
181
- references: {
182
- tables: referencedTables,
183
- views: referencedViews,
184
- functions: referencedFunctions,
185
- },
186
- };
187
- // Add summary counts
188
- const totalReferencedBy = views.length +
189
- storedProcedures.length +
190
- functions.length +
191
- triggers.length +
192
- foreignKeys.length;
193
- const totalReferences = referencedTables.length + referencedViews.length + referencedFunctions.length;
194
- if (totalReferencedBy === 0 && totalReferences === 0) {
195
- result.message = `No dependencies found for '${schemaName}.${objName}'.`;
196
- }
197
- else {
198
- result.message = `Found ${totalReferencedBy} object(s) that reference this ${objectType.toLowerCase().replace(/_/g, " ")}, and ${totalReferences} object(s) that it references.`;
199
- }
200
- if (totalReferencedBy > 0) {
201
- result.hint = "Modifying or dropping this object may affect the listed dependents.";
202
- }
203
- return result;
204
- }
205
- catch (error) {
206
- return {
207
- success: false,
208
- object: objectName,
209
- error: "QUERY_ERROR",
210
- message: `Failed to inspect dependencies: ${error.message}`,
211
- };
212
- }
213
- }
214
- }
215
- //# sourceMappingURL=InspectDependenciesTool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InspectDependenciesTool.js","sourceRoot":"","sources":["../../src/tools/InspectDependenciesTool.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { Tool } from "@modelcontextprotocol/sdk/types.js";
2
- export declare class ListDatabasesTool 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
- error: string;
11
- environment?: undefined;
12
- accessLevel?: undefined;
13
- totalDatabases?: undefined;
14
- accessibleDatabases?: undefined;
15
- databases?: undefined;
16
- } | {
17
- success: boolean;
18
- message: string;
19
- environment: string;
20
- accessLevel: "server";
21
- totalDatabases: number;
22
- accessibleDatabases: number;
23
- databases: any[];
24
- error?: undefined;
25
- }>;
26
- }
27
- //# sourceMappingURL=ListDatabasesTool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListDatabasesTool.d.ts","sourceRoot":"","sources":["../../src/tools/ListDatabasesTool.ts"],"names":[],"mappings":"AACA,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,SAAiH;IAC5H,WAAW,EAkBN,GAAG,CAAC;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;;;;CAyFtB"}
@@ -1,107 +0,0 @@
1
- import sql from "mssql";
2
- import { getEnvironmentManager } from "../config/EnvironmentManager.js";
3
- export class ListDatabasesTool {
4
- constructor() {
5
- this.name = "list_databases";
6
- this.description = "Lists databases on the SQL Server instance. Requires server-level access. Filtered by environment policies.";
7
- this.inputSchema = {
8
- type: "object",
9
- properties: {
10
- environment: {
11
- type: "string",
12
- description: "Target environment name (optional, uses default if not specified)",
13
- },
14
- includeSystemDbs: {
15
- type: "boolean",
16
- description: "Include system databases (master, msdb, model, tempdb). Default: false",
17
- },
18
- stateFilter: {
19
- type: "string",
20
- enum: ["ONLINE", "OFFLINE", "RESTORING", "RECOVERING", "SUSPECT", "ALL"],
21
- description: "Filter by database state. Default: ONLINE",
22
- },
23
- },
24
- required: [],
25
- };
26
- }
27
- async run(params) {
28
- const { environment, includeSystemDbs = false, stateFilter = "ONLINE" } = params ?? {};
29
- try {
30
- const envManager = getEnvironmentManager();
31
- const envConfig = envManager.getEnvironment(environment);
32
- // Check if environment has server-level access
33
- const accessLevel = envConfig.accessLevel ?? "database";
34
- if (accessLevel !== "server") {
35
- return {
36
- success: false,
37
- message: `Environment '${envConfig.name}' has database-level access only. ` +
38
- `list_databases requires server-level access (accessLevel: "server").`,
39
- error: "ACCESS_LEVEL_DENIED",
40
- };
41
- }
42
- const request = new sql.Request(params.pool);
43
- // Build the query
44
- let query = `
45
- SELECT
46
- d.name AS database_name,
47
- d.database_id,
48
- d.state_desc AS state,
49
- d.recovery_model_desc AS recovery_model,
50
- d.compatibility_level,
51
- d.collation_name,
52
- d.create_date,
53
- d.is_read_only,
54
- CAST(SUM(mf.size) * 8.0 / 1024 AS DECIMAL(10,2)) AS size_mb
55
- FROM sys.databases d
56
- LEFT JOIN sys.master_files mf ON d.database_id = mf.database_id
57
- WHERE 1=1
58
- `;
59
- // Filter by state
60
- if (stateFilter && stateFilter !== "ALL") {
61
- query += ` AND d.state_desc = '${stateFilter}'`;
62
- }
63
- // Exclude system databases if not requested
64
- if (!includeSystemDbs) {
65
- query += ` AND d.database_id > 4`; // System DBs have IDs 1-4
66
- }
67
- query += `
68
- GROUP BY d.name, d.database_id, d.state_desc, d.recovery_model_desc,
69
- d.compatibility_level, d.collation_name, d.create_date, d.is_read_only
70
- ORDER BY d.name
71
- `;
72
- const result = await request.query(query);
73
- // Filter results by allowedDatabases/deniedDatabases policies
74
- const filteredDatabases = result.recordset.filter((db) => {
75
- const check = envManager.isDatabaseAllowed(environment, db.database_name);
76
- return check.allowed;
77
- });
78
- // Mark which databases are accessible vs restricted
79
- const databases = result.recordset.map((db) => {
80
- const check = envManager.isDatabaseAllowed(environment, db.database_name);
81
- return {
82
- ...db,
83
- accessible: check.allowed,
84
- restriction_reason: check.reason,
85
- };
86
- });
87
- return {
88
- success: true,
89
- message: `Found ${result.recordset.length} database(s), ${filteredDatabases.length} accessible`,
90
- environment: envConfig.name,
91
- accessLevel: accessLevel,
92
- totalDatabases: result.recordset.length,
93
- accessibleDatabases: filteredDatabases.length,
94
- databases: databases,
95
- };
96
- }
97
- catch (error) {
98
- console.error("Error listing databases:", error);
99
- return {
100
- success: false,
101
- message: `Failed to list databases: ${error}`,
102
- error: "QUERY_FAILED",
103
- };
104
- }
105
- }
106
- }
107
- //# sourceMappingURL=ListDatabasesTool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListDatabasesTool.js","sourceRoot":"","sources":["../../src/tools/ListDatabasesTool.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- import { Tool } from "@modelcontextprotocol/sdk/types.js";
2
- export declare class ListEnvironmentsTool 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
- defaultEnvironment: string | null;
11
- environmentCount: number;
12
- environments: ({
13
- name: string;
14
- description: string | null;
15
- server: string;
16
- database: string;
17
- accessLevel: import("../config/EnvironmentManager.js").AccessLevel;
18
- readonly: boolean;
19
- tier: import("../config/EnvironmentManager.js").TierLevel | null;
20
- } | {
21
- authMode: "sql" | "windows" | "aad";
22
- port: number;
23
- allowedTools: string[] | null;
24
- deniedTools: string[] | null;
25
- allowedDatabases: string[] | "*" | null;
26
- deniedDatabases: string[] | null;
27
- allowedSchemas: string[] | null;
28
- deniedSchemas: string[] | null;
29
- maxRowsDefault: number | null;
30
- requireApproval: boolean;
31
- name: string;
32
- description: string | null;
33
- server: string;
34
- database: string;
35
- accessLevel: import("../config/EnvironmentManager.js").AccessLevel;
36
- readonly: boolean;
37
- tier: import("../config/EnvironmentManager.js").TierLevel | null;
38
- })[];
39
- error?: undefined;
40
- } | {
41
- success: boolean;
42
- message: string;
43
- error: string;
44
- defaultEnvironment?: undefined;
45
- environmentCount?: undefined;
46
- environments?: undefined;
47
- }>;
48
- }
49
- //# sourceMappingURL=ListEnvironmentsTool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListEnvironmentsTool.d.ts","sourceRoot":"","sources":["../../src/tools/ListEnvironmentsTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,qBAAa,oBAAqB,YAAW,IAAI;IAC/C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAuB;IAC3B,WAAW,SAGuE;IAClF,WAAW,EASN,GAAG,CAAC;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DtB"}