@eamonboyle/mssql-mcp 1.0.0 → 1.1.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.
- package/README.md +31 -26
- package/dist/__tests__/db.test.d.ts +2 -0
- package/dist/__tests__/db.test.d.ts.map +1 -0
- package/dist/__tests__/db.test.js +204 -0
- package/dist/__tests__/db.test.js.map +1 -0
- package/dist/__tests__/validation.test.d.ts +2 -0
- package/dist/__tests__/validation.test.d.ts.map +1 -0
- package/dist/__tests__/validation.test.js +111 -0
- package/dist/__tests__/validation.test.js.map +1 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +30 -7
- package/dist/db.js.map +1 -1
- package/dist/index.js +39 -22
- package/dist/index.js.map +1 -1
- package/dist/tools/CreateIndexTool.d.ts.map +1 -1
- package/dist/tools/CreateIndexTool.js +15 -9
- package/dist/tools/CreateIndexTool.js.map +1 -1
- package/dist/tools/CreateTableTool.d.ts.map +1 -1
- package/dist/tools/CreateTableTool.js +12 -7
- package/dist/tools/CreateTableTool.js.map +1 -1
- package/dist/tools/DescribeTableTool.d.ts.map +1 -1
- package/dist/tools/DescribeTableTool.js +5 -2
- package/dist/tools/DescribeTableTool.js.map +1 -1
- package/dist/tools/DropTableTool.d.ts.map +1 -1
- package/dist/tools/DropTableTool.js +3 -3
- package/dist/tools/DropTableTool.js.map +1 -1
- package/dist/tools/InsertDataTool.d.ts.map +1 -1
- package/dist/tools/InsertDataTool.js +8 -8
- package/dist/tools/InsertDataTool.js.map +1 -1
- package/dist/tools/ListTableTool.d.ts.map +1 -1
- package/dist/tools/ListTableTool.js +6 -4
- package/dist/tools/ListTableTool.js.map +1 -1
- package/dist/tools/ReadDataTool.d.ts +0 -8
- package/dist/tools/ReadDataTool.d.ts.map +1 -1
- package/dist/tools/ReadDataTool.js +15 -138
- package/dist/tools/ReadDataTool.js.map +1 -1
- package/dist/tools/UpdateDataTool.d.ts.map +1 -1
- package/dist/tools/UpdateDataTool.js +5 -5
- package/dist/tools/UpdateDataTool.js.map +1 -1
- package/dist/validation.d.ts +14 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +134 -0
- package/dist/validation.js.map +1 -0
- package/package.json +14 -4
package/dist/index.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
2
|
+
// External imports
|
|
3
|
+
import * as dotenv from "dotenv";
|
|
4
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
5
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
6
|
+
dotenv.config();
|
|
7
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
8
|
// Internal imports
|
|
6
|
-
import { UpdateDataTool } from
|
|
7
|
-
import { InsertDataTool } from
|
|
8
|
-
import { ReadDataTool } from
|
|
9
|
-
import { CreateTableTool } from
|
|
10
|
-
import { CreateIndexTool } from
|
|
11
|
-
import { ListTableTool } from
|
|
12
|
-
import { DropTableTool } from
|
|
13
|
-
import { DescribeTableTool } from
|
|
9
|
+
import { UpdateDataTool } from "./tools/UpdateDataTool.js";
|
|
10
|
+
import { InsertDataTool } from "./tools/InsertDataTool.js";
|
|
11
|
+
import { ReadDataTool } from "./tools/ReadDataTool.js";
|
|
12
|
+
import { CreateTableTool } from "./tools/CreateTableTool.js";
|
|
13
|
+
import { CreateIndexTool } from "./tools/CreateIndexTool.js";
|
|
14
|
+
import { ListTableTool } from "./tools/ListTableTool.js";
|
|
15
|
+
import { DropTableTool } from "./tools/DropTableTool.js";
|
|
16
|
+
import { DescribeTableTool } from "./tools/DescribeTableTool.js";
|
|
14
17
|
const updateDataTool = new UpdateDataTool();
|
|
15
18
|
const insertDataTool = new InsertDataTool();
|
|
16
19
|
const readDataTool = new ReadDataTool();
|
|
@@ -20,20 +23,29 @@ const listTableTool = new ListTableTool();
|
|
|
20
23
|
const dropTableTool = new DropTableTool();
|
|
21
24
|
const describeTableTool = new DescribeTableTool();
|
|
22
25
|
const server = new Server({
|
|
23
|
-
name:
|
|
24
|
-
version:
|
|
26
|
+
name: "mssql-mcp-server",
|
|
27
|
+
version: "0.1.0",
|
|
25
28
|
}, {
|
|
26
29
|
capabilities: {
|
|
27
30
|
tools: {},
|
|
28
31
|
},
|
|
29
32
|
});
|
|
30
33
|
// Read READONLY env variable
|
|
31
|
-
const isReadOnly = process.env.READONLY ===
|
|
34
|
+
const isReadOnly = process.env.READONLY === "true";
|
|
32
35
|
// Request handlers
|
|
33
36
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
34
37
|
tools: isReadOnly
|
|
35
38
|
? [listTableTool, readDataTool, describeTableTool] // todo: add searchDataTool to the list of tools available in readonly mode once implemented
|
|
36
|
-
: [
|
|
39
|
+
: [
|
|
40
|
+
insertDataTool,
|
|
41
|
+
readDataTool,
|
|
42
|
+
describeTableTool,
|
|
43
|
+
updateDataTool,
|
|
44
|
+
createTableTool,
|
|
45
|
+
createIndexTool,
|
|
46
|
+
dropTableTool,
|
|
47
|
+
listTableTool,
|
|
48
|
+
], // add all new tools here
|
|
37
49
|
}));
|
|
38
50
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
39
51
|
const { name, arguments: args } = request.params;
|
|
@@ -62,9 +74,14 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
62
74
|
result = await dropTableTool.run(args);
|
|
63
75
|
break;
|
|
64
76
|
case describeTableTool.name:
|
|
65
|
-
if (!args || typeof args.tableName !==
|
|
77
|
+
if (!args || typeof args.tableName !== "string") {
|
|
66
78
|
return {
|
|
67
|
-
content: [
|
|
79
|
+
content: [
|
|
80
|
+
{
|
|
81
|
+
type: "text",
|
|
82
|
+
text: `Missing or invalid 'tableName' argument for describe_table tool.`,
|
|
83
|
+
},
|
|
84
|
+
],
|
|
68
85
|
isError: true,
|
|
69
86
|
};
|
|
70
87
|
}
|
|
@@ -72,17 +89,17 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
72
89
|
break;
|
|
73
90
|
default:
|
|
74
91
|
return {
|
|
75
|
-
content: [{ type:
|
|
92
|
+
content: [{ type: "text", text: `Unknown tool: ${name}` }],
|
|
76
93
|
isError: true,
|
|
77
94
|
};
|
|
78
95
|
}
|
|
79
96
|
return {
|
|
80
|
-
content: [{ type:
|
|
97
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
81
98
|
};
|
|
82
99
|
}
|
|
83
100
|
catch (error) {
|
|
84
101
|
return {
|
|
85
|
-
content: [{ type:
|
|
102
|
+
content: [{ type: "text", text: `Error occurred: ${error}` }],
|
|
86
103
|
isError: true,
|
|
87
104
|
};
|
|
88
105
|
}
|
|
@@ -94,12 +111,12 @@ async function runServer() {
|
|
|
94
111
|
await server.connect(transport);
|
|
95
112
|
}
|
|
96
113
|
catch (error) {
|
|
97
|
-
console.error(
|
|
114
|
+
console.error("Fatal error running server:", error);
|
|
98
115
|
process.exit(1);
|
|
99
116
|
}
|
|
100
117
|
}
|
|
101
118
|
runServer().catch((error) => {
|
|
102
|
-
console.error(
|
|
119
|
+
console.error("Fatal error running server:", error);
|
|
103
120
|
process.exit(1);
|
|
104
121
|
});
|
|
105
122
|
// Tools call getSqlRequest(databaseName) internally - no wrapping needed
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateIndexTool.d.ts","sourceRoot":"","sources":["../../src/tools/CreateIndexTool.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,
|
|
1
|
+
{"version":3,"file":"CreateIndexTool.d.ts","sourceRoot":"","sources":["../../src/tools/CreateIndexTool.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,SACsE;IACjF,WAAW,MAmCF;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;CA8CtB"}
|
|
@@ -6,27 +6,33 @@ export class CreateIndexTool {
|
|
|
6
6
|
this.inputSchema = {
|
|
7
7
|
type: "object",
|
|
8
8
|
properties: {
|
|
9
|
-
schemaName: {
|
|
10
|
-
|
|
9
|
+
schemaName: {
|
|
10
|
+
type: "string",
|
|
11
|
+
description: "Name of the schema containing the table",
|
|
12
|
+
},
|
|
13
|
+
tableName: {
|
|
14
|
+
type: "string",
|
|
15
|
+
description: "Name of the table to create index on",
|
|
16
|
+
},
|
|
11
17
|
indexName: { type: "string", description: "Name for the new index" },
|
|
12
18
|
columns: {
|
|
13
19
|
type: "array",
|
|
14
20
|
items: { type: "string" },
|
|
15
|
-
description: "Array of column names to include in the index"
|
|
21
|
+
description: "Array of column names to include in the index",
|
|
16
22
|
},
|
|
17
23
|
isUnique: {
|
|
18
24
|
type: "boolean",
|
|
19
25
|
description: "Whether the index should enforce uniqueness (default: false)",
|
|
20
|
-
default: false
|
|
26
|
+
default: false,
|
|
21
27
|
},
|
|
22
28
|
isClustered: {
|
|
23
29
|
type: "boolean",
|
|
24
30
|
description: "Whether the index should be clustered (default: false)",
|
|
25
|
-
default: false
|
|
31
|
+
default: false,
|
|
26
32
|
},
|
|
27
33
|
databaseName: {
|
|
28
34
|
type: "string",
|
|
29
|
-
description: "Name of the database to use (optional). Omit to use the default database."
|
|
35
|
+
description: "Name of the database to use (optional). Omit to use the default configured database.",
|
|
30
36
|
},
|
|
31
37
|
},
|
|
32
38
|
required: ["tableName", "indexName", "columns"],
|
|
@@ -34,7 +40,7 @@ export class CreateIndexTool {
|
|
|
34
40
|
}
|
|
35
41
|
async run(params) {
|
|
36
42
|
try {
|
|
37
|
-
const { schemaName, tableName, indexName, columns, databaseName, isUnique = false, isClustered = false } = params;
|
|
43
|
+
const { schemaName, tableName, indexName, columns, databaseName, isUnique = false, isClustered = false, } = params;
|
|
38
44
|
const { request, error } = await getSqlRequest(databaseName);
|
|
39
45
|
if (error) {
|
|
40
46
|
return { success: false, message: error };
|
|
@@ -56,8 +62,8 @@ export class CreateIndexTool {
|
|
|
56
62
|
indexName,
|
|
57
63
|
columnNames,
|
|
58
64
|
isUnique,
|
|
59
|
-
isClustered
|
|
60
|
-
}
|
|
65
|
+
isClustered,
|
|
66
|
+
},
|
|
61
67
|
};
|
|
62
68
|
}
|
|
63
69
|
catch (error) {
|
|
@@ -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,
|
|
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,GACT,8EAA8E,CAAC;QACjF,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yCAAyC;iBACvD;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sCAAsC;iBACpD;gBACD,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,EACT,8DAA8D;oBAChE,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,EACT,sFAAsF;iBACzF;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC;SACzC,CAAC;IAgDX,CAAC;IA9CC,KAAK,CAAC,GAAG,CAAC,MAAW;QACnB,IAAI;YACF,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;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 +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,
|
|
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,SAC+D;IAC1E,WAAW,MA4BF;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;CA6BtB"}
|
|
@@ -14,14 +14,17 @@ export class CreateTableTool {
|
|
|
14
14
|
type: "object",
|
|
15
15
|
properties: {
|
|
16
16
|
name: { type: "string", description: "Column name" },
|
|
17
|
-
type: {
|
|
17
|
+
type: {
|
|
18
|
+
type: "string",
|
|
19
|
+
description: "SQL type and constraints (e.g., 'INT PRIMARY KEY', 'NVARCHAR(255) NOT NULL')",
|
|
20
|
+
},
|
|
18
21
|
},
|
|
19
|
-
required: ["name", "type"]
|
|
20
|
-
}
|
|
22
|
+
required: ["name", "type"],
|
|
23
|
+
},
|
|
21
24
|
},
|
|
22
25
|
databaseName: {
|
|
23
26
|
type: "string",
|
|
24
|
-
description: "Name of the database to use (optional). Omit to use the default database."
|
|
27
|
+
description: "Name of the database to use (optional). Omit to use the default configured database.",
|
|
25
28
|
},
|
|
26
29
|
},
|
|
27
30
|
required: ["tableName", "columns"],
|
|
@@ -37,19 +40,21 @@ export class CreateTableTool {
|
|
|
37
40
|
if (!Array.isArray(columns) || columns.length === 0) {
|
|
38
41
|
throw new Error("'columns' must be a non-empty array");
|
|
39
42
|
}
|
|
40
|
-
const columnDefs = columns
|
|
43
|
+
const columnDefs = columns
|
|
44
|
+
.map((col) => `[${col.name}] ${col.type}`)
|
|
45
|
+
.join(", ");
|
|
41
46
|
const query = `CREATE TABLE [${tableName}] (${columnDefs})`;
|
|
42
47
|
await request.query(query);
|
|
43
48
|
return {
|
|
44
49
|
success: true,
|
|
45
|
-
message: `Table '${tableName}' created successfully
|
|
50
|
+
message: `Table '${tableName}' created successfully.`,
|
|
46
51
|
};
|
|
47
52
|
}
|
|
48
53
|
catch (error) {
|
|
49
54
|
console.error("Error creating table:", error);
|
|
50
55
|
return {
|
|
51
56
|
success: false,
|
|
52
|
-
message: `Failed to create table: ${error}
|
|
57
|
+
message: `Failed to create table: ${error}`,
|
|
53
58
|
};
|
|
54
59
|
}
|
|
55
60
|
}
|
|
@@ -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,
|
|
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,GACT,uEAAuE,CAAC;QAC1E,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,EACT,oFAAoF;oBACtF,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;4BACpD,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,8EAA8E;6BACjF;yBACF;wBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;qBAC3B;iBACF;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,sFAAsF;iBACzF;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;SAC5B,CAAC;IA+BX,CAAC;IA7BC,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;iBACvB,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;iBAC9C,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,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 +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,
|
|
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,SACuE;IAClF,WAAW,MAcF;IAEH,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;CAsB/D"}
|
|
@@ -7,10 +7,13 @@ export class DescribeTableTool {
|
|
|
7
7
|
this.inputSchema = {
|
|
8
8
|
type: "object",
|
|
9
9
|
properties: {
|
|
10
|
-
tableName: {
|
|
10
|
+
tableName: {
|
|
11
|
+
type: "string",
|
|
12
|
+
description: "Name of the table to describe",
|
|
13
|
+
},
|
|
11
14
|
databaseName: {
|
|
12
15
|
type: "string",
|
|
13
|
-
description: "Name of the database to use (optional). Omit to use the default database."
|
|
16
|
+
description: "Name of the database to use (optional). Omit to use the default configured database.",
|
|
14
17
|
},
|
|
15
18
|
},
|
|
16
19
|
required: ["tableName"],
|
|
@@ -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,
|
|
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,GACT,+EAA+E,CAAC;QAClF,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+BAA+B;iBAC7C;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,sFAAsF;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 +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,
|
|
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,MAWF;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;CA2BtB"}
|
|
@@ -9,7 +9,7 @@ export class DropTableTool {
|
|
|
9
9
|
tableName: { type: "string", description: "Name of the table to drop" },
|
|
10
10
|
databaseName: {
|
|
11
11
|
type: "string",
|
|
12
|
-
description: "Name of the database to use (optional). Omit to use the default database."
|
|
12
|
+
description: "Name of the database to use (optional). Omit to use the default configured database.",
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
required: ["tableName"],
|
|
@@ -30,14 +30,14 @@ export class DropTableTool {
|
|
|
30
30
|
await request.query(query);
|
|
31
31
|
return {
|
|
32
32
|
success: true,
|
|
33
|
-
message: `Table '${tableName}' dropped successfully
|
|
33
|
+
message: `Table '${tableName}' dropped successfully.`,
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
catch (error) {
|
|
37
37
|
console.error("Error dropping table:", error);
|
|
38
38
|
return {
|
|
39
39
|
success: false,
|
|
40
|
-
message: `Failed to drop table: ${error}
|
|
40
|
+
message: `Failed to drop table: ${error}`,
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropTableTool.js","sourceRoot":"","sources":["../../src/tools/DropTableTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,aAAa;IAA1B;QAEE,SAAI,GAAG,YAAY,CAAC;QACpB,gBAAW,GAAG,wCAAwC,CAAC;QACvD,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBACvE,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,
|
|
1
|
+
{"version":3,"file":"DropTableTool.js","sourceRoot":"","sources":["../../src/tools/DropTableTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,aAAa;IAA1B;QAEE,SAAI,GAAG,YAAY,CAAC;QACpB,gBAAW,GAAG,wCAAwC,CAAC;QACvD,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBACvE,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,sFAAsF;iBACzF;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACjB,CAAC;IA6BX,CAAC;IA3BC,KAAK,CAAC,GAAG,CAAC,MAAW;QACnB,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;YAED,4CAA4C;YAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;aACxC;YACD,MAAM,KAAK,GAAG,eAAe,SAAS,GAAG,CAAC;YAC1C,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,yBAAyB,KAAK,EAAE;aAC1C,CAAC;SACH;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsertDataTool.d.ts","sourceRoot":"","sources":["../../src/tools/InsertDataTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,qBAAa,cAAe,YAAW,IAAI;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAiB;IACrB,WAAW,SA0CyD;IACpE,WAAW,
|
|
1
|
+
{"version":3,"file":"InsertDataTool.d.ts","sourceRoot":"","sources":["../../src/tools/InsertDataTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,qBAAa,cAAe,YAAW,IAAI;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAiB;IACrB,WAAW,SA0CyD;IACpE,WAAW,MA6BF;IACH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;;;;;;CA4EtB"}
|
|
@@ -50,24 +50,24 @@ IMPORTANT RULES:
|
|
|
50
50
|
properties: {
|
|
51
51
|
tableName: {
|
|
52
52
|
type: "string",
|
|
53
|
-
description: "Name of the table to insert data into"
|
|
53
|
+
description: "Name of the table to insert data into",
|
|
54
54
|
},
|
|
55
55
|
data: {
|
|
56
56
|
oneOf: [
|
|
57
57
|
{
|
|
58
58
|
type: "object",
|
|
59
|
-
description:
|
|
59
|
+
description: 'Single record data object with column names as keys and values as the data to insert. Example: {"name": "John", "age": 30}',
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
type: "array",
|
|
63
63
|
items: { type: "object" },
|
|
64
|
-
description:
|
|
65
|
-
}
|
|
66
|
-
]
|
|
64
|
+
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}]',
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
67
|
},
|
|
68
68
|
databaseName: {
|
|
69
69
|
type: "string",
|
|
70
|
-
description: "Name of the database to use (optional). Omit to use the default database."
|
|
70
|
+
description: "Name of the database to use (optional). Omit to use the default configured database.",
|
|
71
71
|
},
|
|
72
72
|
},
|
|
73
73
|
required: ["tableName", "data"],
|
|
@@ -96,7 +96,7 @@ IMPORTANT RULES:
|
|
|
96
96
|
if (JSON.stringify(firstRecordColumns) !== JSON.stringify(currentColumns)) {
|
|
97
97
|
return {
|
|
98
98
|
success: false,
|
|
99
|
-
message: `Column mismatch: Record ${i + 1} has different columns than the first record. Expected columns: [${firstRecordColumns.join(
|
|
99
|
+
message: `Column mismatch: Record ${i + 1} has different columns than the first record. Expected columns: [${firstRecordColumns.join(", ")}], but got: [${currentColumns.join(", ")}]`,
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
}
|
|
@@ -118,7 +118,7 @@ IMPORTANT RULES:
|
|
|
118
118
|
await request.query(query);
|
|
119
119
|
return {
|
|
120
120
|
success: true,
|
|
121
|
-
message: `Successfully inserted ${records.length} record${records.length > 1 ?
|
|
121
|
+
message: `Successfully inserted ${records.length} record${records.length > 1 ? "s" : ""} into ${tableName}`,
|
|
122
122
|
recordsInserted: records.length,
|
|
123
123
|
};
|
|
124
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsertDataTool.js","sourceRoot":"","sources":["../../src/tools/InsertDataTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,MAAM,OAAO,cAAc;IAA3B;QAEE,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qEA0CqD,CAAC;QACpE,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uCAAuC;iBACrD;gBACD,IAAI,EAAE;oBACJ,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,QAAQ;4BACd,WAAW,
|
|
1
|
+
{"version":3,"file":"InsertDataTool.js","sourceRoot":"","sources":["../../src/tools/InsertDataTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/ListTableTool.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,
|
|
1
|
+
{"version":3,"file":"ListTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/ListTableTool.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,SAC+D;IAC1E,WAAW,MAkBF;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;;;;;;CA2BtB"}
|
|
@@ -10,13 +10,13 @@ export class ListTableTool {
|
|
|
10
10
|
type: "array",
|
|
11
11
|
description: "Schemas to filter by (optional)",
|
|
12
12
|
items: {
|
|
13
|
-
type: "string"
|
|
13
|
+
type: "string",
|
|
14
14
|
},
|
|
15
|
-
minItems: 0
|
|
15
|
+
minItems: 0,
|
|
16
16
|
},
|
|
17
17
|
databaseName: {
|
|
18
18
|
type: "string",
|
|
19
|
-
description: "Name of the database to use (optional). Omit to use the default database."
|
|
19
|
+
description: "Name of the database to use (optional). Omit to use the default configured database.",
|
|
20
20
|
},
|
|
21
21
|
},
|
|
22
22
|
required: [],
|
|
@@ -29,7 +29,9 @@ export class ListTableTool {
|
|
|
29
29
|
if (error) {
|
|
30
30
|
return { success: false, message: error };
|
|
31
31
|
}
|
|
32
|
-
const schemaFilter = parameters && parameters.length > 0
|
|
32
|
+
const schemaFilter = parameters && parameters.length > 0
|
|
33
|
+
? `AND TABLE_SCHEMA IN (${parameters.map((p) => `'${p}'`).join(", ")})`
|
|
34
|
+
: "";
|
|
33
35
|
const query = `SELECT TABLE_SCHEMA + '.' + TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' ${schemaFilter} ORDER BY TABLE_SCHEMA, TABLE_NAME`;
|
|
34
36
|
const result = await request.query(query);
|
|
35
37
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListTableTool.js","sourceRoot":"","sources":["../../src/tools/ListTableTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,aAAa;IAA1B;QAEE,SAAI,GAAG,YAAY,CAAC;QACpB,gBAAW,
|
|
1
|
+
{"version":3,"file":"ListTableTool.js","sourceRoot":"","sources":["../../src/tools/ListTableTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,aAAa;IAA1B;QAEE,SAAI,GAAG,YAAY,CAAC;QACpB,gBAAW,GACT,uEAAuE,CAAC;QAC1E,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,iCAAiC;oBAC9C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;qBACf;oBACD,QAAQ,EAAE,CAAC;iBACZ;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,sFAAsF;iBACzF;aACF;YACD,QAAQ,EAAE,EAAE;SACN,CAAC;IA6BX,CAAC;IA3BC,KAAK,CAAC,GAAG,CAAC,MAAW;QACnB,IAAI;YACF,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAElD,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,YAAY,GAChB,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBACjC,CAAC,CAAC,wBAAwB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC/E,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,yGAAyG,YAAY,oCAAoC,CAAC;YACxK,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,mCAAmC;gBAC5C,KAAK,EAAE,MAAM,CAAC,SAAS;aACxB,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,0BAA0B,KAAK,EAAE;aAC3C,CAAC;SACH;IACH,CAAC;CACF"}
|
|
@@ -4,14 +4,6 @@ export declare class ReadDataTool implements Tool {
|
|
|
4
4
|
name: string;
|
|
5
5
|
description: string;
|
|
6
6
|
inputSchema: any;
|
|
7
|
-
private static readonly DANGEROUS_KEYWORDS;
|
|
8
|
-
private static readonly DANGEROUS_PATTERNS;
|
|
9
|
-
/**
|
|
10
|
-
* Validates the SQL query for security issues
|
|
11
|
-
* @param query The SQL query to validate
|
|
12
|
-
* @returns Validation result with success flag and error message if invalid
|
|
13
|
-
*/
|
|
14
|
-
private validateQuery;
|
|
15
7
|
/**
|
|
16
8
|
* Sanitizes the query result to prevent any potential security issues
|
|
17
9
|
* @param data The query result data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadDataTool.d.ts","sourceRoot":"","sources":["../../src/tools/ReadDataTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReadDataTool.d.ts","sourceRoot":"","sources":["../../src/tools/ReadDataTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAI1D,qBAAa,YAAa,YAAW,IAAI;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAe;IACnB,WAAW,SACsJ;IAEjK,WAAW,MAeF;IAET;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA+BtB;;;;OAIG;IACG,GAAG,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;CA6DtB"}
|