@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.
- package/dist/index.js +6 -751
- package/dist/index.js.map +1 -1
- package/package.json +2 -5
- package/dist/audit/AuditLogger.d.ts +0 -37
- package/dist/audit/AuditLogger.d.ts.map +0 -1
- package/dist/audit/AuditLogger.js +0 -145
- package/dist/audit/AuditLogger.js.map +0 -1
- package/dist/config/EnvironmentManager.d.ts +0 -75
- package/dist/config/EnvironmentManager.d.ts.map +0 -1
- package/dist/config/EnvironmentManager.js +0 -305
- package/dist/config/EnvironmentManager.js.map +0 -1
- package/dist/config/ScriptManager.d.ts +0 -69
- package/dist/config/ScriptManager.d.ts.map +0 -1
- package/dist/config/ScriptManager.js +0 -166
- package/dist/config/ScriptManager.js.map +0 -1
- package/dist/config/SecretResolver.d.ts +0 -66
- package/dist/config/SecretResolver.d.ts.map +0 -1
- package/dist/config/SecretResolver.js +0 -230
- package/dist/config/SecretResolver.js.map +0 -1
- package/dist/tools/CreateIndexTool.d.ts +0 -24
- package/dist/tools/CreateIndexTool.d.ts.map +0 -1
- package/dist/tools/CreateIndexTool.js +0 -64
- package/dist/tools/CreateIndexTool.js.map +0 -1
- package/dist/tools/CreateTableTool.d.ts +0 -12
- package/dist/tools/CreateTableTool.d.ts.map +0 -1
- package/dist/tools/CreateTableTool.js +0 -49
- package/dist/tools/CreateTableTool.js.map +0 -1
- package/dist/tools/DeleteDataTool.d.ts +0 -56
- package/dist/tools/DeleteDataTool.d.ts.map +0 -1
- package/dist/tools/DeleteDataTool.js +0 -103
- package/dist/tools/DeleteDataTool.js.map +0 -1
- package/dist/tools/DescribeTableTool.d.ts +0 -32
- package/dist/tools/DescribeTableTool.d.ts.map +0 -1
- package/dist/tools/DescribeTableTool.js +0 -108
- package/dist/tools/DescribeTableTool.js.map +0 -1
- package/dist/tools/DropTableTool.d.ts +0 -12
- package/dist/tools/DropTableTool.d.ts.map +0 -1
- package/dist/tools/DropTableTool.js +0 -37
- package/dist/tools/DropTableTool.js.map +0 -1
- package/dist/tools/ExplainQueryTool.d.ts +0 -24
- package/dist/tools/ExplainQueryTool.d.ts.map +0 -1
- package/dist/tools/ExplainQueryTool.js +0 -98
- package/dist/tools/ExplainQueryTool.js.map +0 -1
- package/dist/tools/InsertDataTool.d.ts +0 -17
- package/dist/tools/InsertDataTool.d.ts.map +0 -1
- package/dist/tools/InsertDataTool.js +0 -102
- package/dist/tools/InsertDataTool.js.map +0 -1
- package/dist/tools/InspectDependenciesTool.d.ts +0 -45
- package/dist/tools/InspectDependenciesTool.d.ts.map +0 -1
- package/dist/tools/InspectDependenciesTool.js +0 -215
- package/dist/tools/InspectDependenciesTool.js.map +0 -1
- package/dist/tools/ListDatabasesTool.d.ts +0 -27
- package/dist/tools/ListDatabasesTool.d.ts.map +0 -1
- package/dist/tools/ListDatabasesTool.js +0 -107
- package/dist/tools/ListDatabasesTool.js.map +0 -1
- package/dist/tools/ListEnvironmentsTool.d.ts +0 -49
- package/dist/tools/ListEnvironmentsTool.d.ts.map +0 -1
- package/dist/tools/ListEnvironmentsTool.js +0 -73
- package/dist/tools/ListEnvironmentsTool.js.map +0 -1
- package/dist/tools/ListScriptsTool.d.ts +0 -41
- package/dist/tools/ListScriptsTool.d.ts.map +0 -1
- package/dist/tools/ListScriptsTool.js +0 -86
- package/dist/tools/ListScriptsTool.js.map +0 -1
- package/dist/tools/ListTableTool.d.ts +0 -24
- package/dist/tools/ListTableTool.d.ts.map +0 -1
- package/dist/tools/ListTableTool.js +0 -85
- package/dist/tools/ListTableTool.js.map +0 -1
- package/dist/tools/ProfileTableTool.d.ts +0 -78
- package/dist/tools/ProfileTableTool.d.ts.map +0 -1
- package/dist/tools/ProfileTableTool.js +0 -373
- package/dist/tools/ProfileTableTool.js.map +0 -1
- package/dist/tools/ReadDataTool.d.ts +0 -61
- package/dist/tools/ReadDataTool.d.ts.map +0 -1
- package/dist/tools/ReadDataTool.js +0 -299
- package/dist/tools/ReadDataTool.js.map +0 -1
- package/dist/tools/RelationshipInspectorTool.d.ts +0 -46
- package/dist/tools/RelationshipInspectorTool.d.ts.map +0 -1
- package/dist/tools/RelationshipInspectorTool.js +0 -156
- package/dist/tools/RelationshipInspectorTool.js.map +0 -1
- package/dist/tools/RunScriptTool.d.ts +0 -215
- package/dist/tools/RunScriptTool.d.ts.map +0 -1
- package/dist/tools/RunScriptTool.js +0 -177
- package/dist/tools/RunScriptTool.js.map +0 -1
- package/dist/tools/SearchSchemaTool.d.ts +0 -88
- package/dist/tools/SearchSchemaTool.d.ts.map +0 -1
- package/dist/tools/SearchSchemaTool.js +0 -237
- package/dist/tools/SearchSchemaTool.js.map +0 -1
- package/dist/tools/TestConnectionTool.d.ts +0 -38
- package/dist/tools/TestConnectionTool.d.ts.map +0 -1
- package/dist/tools/TestConnectionTool.js +0 -156
- package/dist/tools/TestConnectionTool.js.map +0 -1
- package/dist/tools/UpdateDataTool.d.ts +0 -61
- package/dist/tools/UpdateDataTool.d.ts.map +0 -1
- package/dist/tools/UpdateDataTool.js +0 -117
- package/dist/tools/UpdateDataTool.js.map +0 -1
- package/dist/tools/ValidateEnvironmentConfigTool.d.ts +0 -51
- package/dist/tools/ValidateEnvironmentConfigTool.d.ts.map +0 -1
- package/dist/tools/ValidateEnvironmentConfigTool.js +0 -320
- package/dist/tools/ValidateEnvironmentConfigTool.js.map +0 -1
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { getEnvironmentManager } from "../config/EnvironmentManager.js";
|
|
2
|
-
export class ListEnvironmentsTool {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.name = "list_environments";
|
|
5
|
-
this.description = "Lists all configured database environments available for connection. " +
|
|
6
|
-
"Shows environment names, descriptions, access levels, and policy restrictions. " +
|
|
7
|
-
"Use this to discover which environments are available before running queries.";
|
|
8
|
-
this.inputSchema = {
|
|
9
|
-
type: "object",
|
|
10
|
-
properties: {
|
|
11
|
-
includeDetails: {
|
|
12
|
-
type: "boolean",
|
|
13
|
-
description: "Include full policy details (allowedTools, deniedSchemas, etc.). Default: false",
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
required: [],
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
async run(params) {
|
|
20
|
-
const { includeDetails = false } = params ?? {};
|
|
21
|
-
try {
|
|
22
|
-
const envManager = getEnvironmentManager();
|
|
23
|
-
const environments = envManager.listEnvironments();
|
|
24
|
-
const environmentList = environments.map((env) => {
|
|
25
|
-
// Basic info always included
|
|
26
|
-
const basic = {
|
|
27
|
-
name: env.name,
|
|
28
|
-
description: env.description || null,
|
|
29
|
-
server: env.server,
|
|
30
|
-
database: env.database,
|
|
31
|
-
accessLevel: env.accessLevel || "database",
|
|
32
|
-
readonly: env.readonly ?? false,
|
|
33
|
-
tier: env.tier || null,
|
|
34
|
-
};
|
|
35
|
-
if (!includeDetails) {
|
|
36
|
-
return basic;
|
|
37
|
-
}
|
|
38
|
-
// Full details when requested
|
|
39
|
-
return {
|
|
40
|
-
...basic,
|
|
41
|
-
authMode: env.authMode,
|
|
42
|
-
port: env.port || 1433,
|
|
43
|
-
allowedTools: env.allowedTools || null,
|
|
44
|
-
deniedTools: env.deniedTools || null,
|
|
45
|
-
allowedDatabases: env.allowedDatabases || null,
|
|
46
|
-
deniedDatabases: env.deniedDatabases || null,
|
|
47
|
-
allowedSchemas: env.allowedSchemas || null,
|
|
48
|
-
deniedSchemas: env.deniedSchemas || null,
|
|
49
|
-
maxRowsDefault: env.maxRowsDefault || null,
|
|
50
|
-
requireApproval: env.requireApproval ?? false,
|
|
51
|
-
};
|
|
52
|
-
});
|
|
53
|
-
// Get default environment name
|
|
54
|
-
const defaultEnv = environments.find((e) => e.name === envManager.defaultEnvironment);
|
|
55
|
-
return {
|
|
56
|
-
success: true,
|
|
57
|
-
message: `Found ${environments.length} configured environment(s)`,
|
|
58
|
-
defaultEnvironment: defaultEnv?.name || environments[0]?.name || null,
|
|
59
|
-
environmentCount: environments.length,
|
|
60
|
-
environments: environmentList,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
console.error("Error listing environments:", error);
|
|
65
|
-
return {
|
|
66
|
-
success: false,
|
|
67
|
-
message: `Failed to list environments: ${error}`,
|
|
68
|
-
error: "LIST_ENVIRONMENTS_FAILED",
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=ListEnvironmentsTool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListEnvironmentsTool.js","sourceRoot":"","sources":["../../src/tools/ListEnvironmentsTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,OAAO,oBAAoB;IAAjC;QAEE,SAAI,GAAG,mBAAmB,CAAC;QAC3B,gBAAW,GACT,uEAAuE;YACvE,iFAAiF;YACjF,+EAA+E,CAAC;QAClF,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,cAAc,EAAE;oBACd,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,iFAAiF;iBAC/F;aACF;YACD,QAAQ,EAAE,EAAE;SACN,CAAC;IA8DX,CAAC;IA5DC,KAAK,CAAC,GAAG,CAAC,MAAW;QACnB,MAAM,EAAE,cAAc,GAAG,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QAEhD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;YAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;YAEnD,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/C,6BAA6B;gBAC7B,MAAM,KAAK,GAAG;oBACZ,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;oBACpC,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,UAAU;oBAC1C,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,KAAK;oBAC/B,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI;iBACvB,CAAC;gBAEF,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,8BAA8B;gBAC9B,OAAO;oBACL,GAAG,KAAK;oBACR,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI;oBACtB,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;oBACtC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;oBACpC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,IAAI,IAAI;oBAC9C,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,IAAI;oBAC5C,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;oBAC1C,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;oBACxC,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;oBAC1C,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,KAAK;iBAC9C,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,+BAA+B;YAC/B,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,CAAC,CAAC,IAAI,KAAM,UAAkB,CAAC,kBAAkB,CAClD,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,SAAS,YAAY,CAAC,MAAM,4BAA4B;gBACjE,kBAAkB,EAAE,UAAU,EAAE,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI;gBACrE,gBAAgB,EAAE,YAAY,CAAC,MAAM;gBACrC,YAAY,EAAE,eAAe;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,gCAAgC,KAAK,EAAE;gBAChD,KAAK,EAAE,0BAA0B;aAClC,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
-
export declare class ListScriptsTool implements Tool {
|
|
3
|
-
[key: string]: any;
|
|
4
|
-
name: string;
|
|
5
|
-
description: string;
|
|
6
|
-
inputSchema: any;
|
|
7
|
-
run(params?: {
|
|
8
|
-
environment?: string;
|
|
9
|
-
tier?: string;
|
|
10
|
-
}): Promise<{
|
|
11
|
-
success: boolean;
|
|
12
|
-
message: string;
|
|
13
|
-
scriptsPath: string | null;
|
|
14
|
-
scripts: never[];
|
|
15
|
-
totalScripts?: undefined;
|
|
16
|
-
filteredCount?: undefined;
|
|
17
|
-
} | {
|
|
18
|
-
success: boolean;
|
|
19
|
-
scriptsPath: string | null;
|
|
20
|
-
totalScripts: number;
|
|
21
|
-
filteredCount: number;
|
|
22
|
-
scripts: {
|
|
23
|
-
name: string;
|
|
24
|
-
description: string;
|
|
25
|
-
parameters: {
|
|
26
|
-
name: string;
|
|
27
|
-
type: "string" | "number" | "boolean";
|
|
28
|
-
required: boolean;
|
|
29
|
-
default: string | number | boolean | undefined;
|
|
30
|
-
description: string | undefined;
|
|
31
|
-
}[] | undefined;
|
|
32
|
-
tier: import("../config/EnvironmentManager.js").TierLevel | undefined;
|
|
33
|
-
requiresApproval: boolean | undefined;
|
|
34
|
-
readonly: boolean | undefined;
|
|
35
|
-
allowedEnvironments: string[] | undefined;
|
|
36
|
-
deniedEnvironments: string[] | undefined;
|
|
37
|
-
}[];
|
|
38
|
-
message?: undefined;
|
|
39
|
-
}>;
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=ListScriptsTool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListScriptsTool.d.ts","sourceRoot":"","sources":["../../src/tools/ListScriptsTool.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,SAAqH;IAEhI,WAAW,EAcN,GAAG,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsE3D"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { getScriptManager } from "../config/ScriptManager.js";
|
|
2
|
-
export class ListScriptsTool {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.name = "list_scripts";
|
|
5
|
-
this.description = "Lists available named SQL scripts. Scripts are pre-approved SQL templates that can be executed with parameters.";
|
|
6
|
-
this.inputSchema = {
|
|
7
|
-
type: "object",
|
|
8
|
-
properties: {
|
|
9
|
-
environment: {
|
|
10
|
-
type: "string",
|
|
11
|
-
description: "Filter scripts to those allowed in this environment (optional)",
|
|
12
|
-
},
|
|
13
|
-
tier: {
|
|
14
|
-
type: "string",
|
|
15
|
-
enum: ["reader", "writer", "admin"],
|
|
16
|
-
description: "Filter scripts by minimum tier requirement (optional)",
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
required: [],
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
async run(params) {
|
|
23
|
-
const scriptManager = getScriptManager();
|
|
24
|
-
if (!scriptManager.isConfigured()) {
|
|
25
|
-
return {
|
|
26
|
-
success: false,
|
|
27
|
-
message: "Named scripts are not configured. Set scriptsPath in environments.json or SCRIPTS_PATH env var.",
|
|
28
|
-
scriptsPath: null,
|
|
29
|
-
scripts: [],
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
const allScripts = scriptManager.listScripts();
|
|
33
|
-
if (allScripts.length === 0) {
|
|
34
|
-
return {
|
|
35
|
-
success: true,
|
|
36
|
-
message: "No scripts found in scripts directory.",
|
|
37
|
-
scriptsPath: scriptManager.getScriptsPath(),
|
|
38
|
-
scripts: [],
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
// Filter by environment if specified
|
|
42
|
-
let filteredScripts = allScripts;
|
|
43
|
-
if (params?.environment) {
|
|
44
|
-
filteredScripts = filteredScripts.filter((script) => {
|
|
45
|
-
const check = scriptManager.canRunInEnvironment(script.name, params.environment);
|
|
46
|
-
return check.allowed;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
// Filter by tier if specified
|
|
50
|
-
if (params?.tier) {
|
|
51
|
-
const tierOrder = ["reader", "writer", "admin"];
|
|
52
|
-
const requestedTierIndex = tierOrder.indexOf(params.tier);
|
|
53
|
-
filteredScripts = filteredScripts.filter((script) => {
|
|
54
|
-
if (!script.tier)
|
|
55
|
-
return true; // No tier restriction
|
|
56
|
-
const scriptTierIndex = tierOrder.indexOf(script.tier);
|
|
57
|
-
return scriptTierIndex <= requestedTierIndex;
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
// Map to output format (exclude SQL content for listing)
|
|
61
|
-
const scriptsOutput = filteredScripts.map((script) => ({
|
|
62
|
-
name: script.name,
|
|
63
|
-
description: script.description,
|
|
64
|
-
parameters: script.parameters?.map((p) => ({
|
|
65
|
-
name: p.name,
|
|
66
|
-
type: p.type,
|
|
67
|
-
required: p.required ?? false,
|
|
68
|
-
default: p.default,
|
|
69
|
-
description: p.description,
|
|
70
|
-
})),
|
|
71
|
-
tier: script.tier,
|
|
72
|
-
requiresApproval: script.requiresApproval,
|
|
73
|
-
readonly: script.readonly,
|
|
74
|
-
allowedEnvironments: script.allowedEnvironments,
|
|
75
|
-
deniedEnvironments: script.deniedEnvironments,
|
|
76
|
-
}));
|
|
77
|
-
return {
|
|
78
|
-
success: true,
|
|
79
|
-
scriptsPath: scriptManager.getScriptsPath(),
|
|
80
|
-
totalScripts: allScripts.length,
|
|
81
|
-
filteredCount: scriptsOutput.length,
|
|
82
|
-
scripts: scriptsOutput,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=ListScriptsTool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListScriptsTool.js","sourceRoot":"","sources":["../../src/tools/ListScriptsTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,OAAO,eAAe;IAA5B;QAEE,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,iHAAiH,CAAC;QAEhI,gBAAW,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gEAAgE;iBAC9E;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;oBACnC,WAAW,EAAE,uDAAuD;iBACrE;aACF;YACD,QAAQ,EAAE,EAAE;SACN,CAAC;IAwEX,CAAC;IAtEC,KAAK,CAAC,GAAG,CAAC,MAAgD;QACxD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;QAEzC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,iGAAiG;gBAC1G,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;QAE/C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,wCAAwC;gBACjD,WAAW,EAAE,aAAa,CAAC,cAAc,EAAE;gBAC3C,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;QAED,qCAAqC;QACrC,IAAI,eAAe,GAAG,UAAU,CAAC;QACjC,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;YACxB,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;gBAClD,MAAM,KAAK,GAAG,aAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAY,CAAC,CAAC;gBAClF,OAAO,KAAK,CAAC,OAAO,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE1D,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;gBAClD,IAAI,CAAC,MAAM,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAC,CAAC,sBAAsB;gBACrD,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvD,OAAO,eAAe,IAAI,kBAAkB,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,yDAAyD;QACzD,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK;gBAC7B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC;YACH,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;SAC9C,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,aAAa,CAAC,cAAc,EAAE;YAC3C,YAAY,EAAE,UAAU,CAAC,MAAM;YAC/B,aAAa,EAAE,aAAa,CAAC,MAAM;YACnC,OAAO,EAAE,aAAa;SACvB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import sql from "mssql";
|
|
2
|
-
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
-
export declare class ListTableTool implements Tool {
|
|
4
|
-
[key: string]: any;
|
|
5
|
-
name: string;
|
|
6
|
-
description: string;
|
|
7
|
-
inputSchema: any;
|
|
8
|
-
run(params: any): Promise<{
|
|
9
|
-
success: boolean;
|
|
10
|
-
message: string;
|
|
11
|
-
error: string;
|
|
12
|
-
database?: undefined;
|
|
13
|
-
tableCount?: undefined;
|
|
14
|
-
tables?: undefined;
|
|
15
|
-
} | {
|
|
16
|
-
success: boolean;
|
|
17
|
-
message: string;
|
|
18
|
-
database: any;
|
|
19
|
-
tableCount: number;
|
|
20
|
-
tables: sql.IRecordSet<any>;
|
|
21
|
-
error?: undefined;
|
|
22
|
-
}>;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=ListTableTool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/ListTableTool.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,qBAAa,aAAc,YAAW,IAAI;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAiB;IACrB,WAAW,SAE+E;IAC1F,WAAW,EAiBN,GAAG,CAAC;IAEH,GAAG,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;CA4DtB"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import sql from "mssql";
|
|
2
|
-
import { getEnvironmentManager } from "../config/EnvironmentManager.js";
|
|
3
|
-
export class ListTableTool {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.name = "list_tables";
|
|
6
|
-
this.description = "Lists tables in an MSSQL Database, optionally filtered by schema. " +
|
|
7
|
-
"For server-level access environments, you can specify a database to list tables from.";
|
|
8
|
-
this.inputSchema = {
|
|
9
|
-
type: "object",
|
|
10
|
-
properties: {
|
|
11
|
-
database: {
|
|
12
|
-
type: "string",
|
|
13
|
-
description: "Optional: Target database name for server-level access environments.",
|
|
14
|
-
},
|
|
15
|
-
schemas: {
|
|
16
|
-
type: "array",
|
|
17
|
-
description: "Schemas to filter by (optional)",
|
|
18
|
-
items: {
|
|
19
|
-
type: "string",
|
|
20
|
-
},
|
|
21
|
-
minItems: 0,
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
required: [],
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
async run(params) {
|
|
28
|
-
try {
|
|
29
|
-
const { database, schemas, environment } = params ?? {};
|
|
30
|
-
// Validate database access if specified
|
|
31
|
-
if (database) {
|
|
32
|
-
const envManager = getEnvironmentManager();
|
|
33
|
-
const dbCheck = envManager.isDatabaseAllowed(environment, database);
|
|
34
|
-
if (!dbCheck.allowed) {
|
|
35
|
-
return {
|
|
36
|
-
success: false,
|
|
37
|
-
message: dbCheck.reason || `Access to database '${database}' is not allowed.`,
|
|
38
|
-
error: "DATABASE_ACCESS_DENIED",
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
const request = new sql.Request(params.pool);
|
|
43
|
-
const schemaFilter = schemas && schemas.length > 0
|
|
44
|
-
? `AND TABLE_SCHEMA IN (${schemas.map((p) => `'${p.replace(/'/g, "''")}'`).join(", ")})`
|
|
45
|
-
: "";
|
|
46
|
-
// Build query with optional database prefix
|
|
47
|
-
let query;
|
|
48
|
-
if (database) {
|
|
49
|
-
const safeDbName = database.replace(/]/g, "]]");
|
|
50
|
-
query = `
|
|
51
|
-
USE [${safeDbName}];
|
|
52
|
-
SELECT TABLE_SCHEMA + '.' + TABLE_NAME AS table_name, TABLE_SCHEMA, TABLE_NAME
|
|
53
|
-
FROM INFORMATION_SCHEMA.TABLES
|
|
54
|
-
WHERE TABLE_TYPE = 'BASE TABLE' ${schemaFilter}
|
|
55
|
-
ORDER BY TABLE_SCHEMA, TABLE_NAME
|
|
56
|
-
`;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
query = `
|
|
60
|
-
SELECT TABLE_SCHEMA + '.' + TABLE_NAME AS table_name, TABLE_SCHEMA, TABLE_NAME
|
|
61
|
-
FROM INFORMATION_SCHEMA.TABLES
|
|
62
|
-
WHERE TABLE_TYPE = 'BASE TABLE' ${schemaFilter}
|
|
63
|
-
ORDER BY TABLE_SCHEMA, TABLE_NAME
|
|
64
|
-
`;
|
|
65
|
-
}
|
|
66
|
-
const result = await request.query(query);
|
|
67
|
-
return {
|
|
68
|
-
success: true,
|
|
69
|
-
message: `Found ${result.recordset.length} table(s)${database ? ` in [${database}]` : ""}`,
|
|
70
|
-
database: database || undefined,
|
|
71
|
-
tableCount: result.recordset.length,
|
|
72
|
-
tables: result.recordset,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
console.error("Error listing tables:", error);
|
|
77
|
-
return {
|
|
78
|
-
success: false,
|
|
79
|
-
message: `Failed to list tables: ${error}`,
|
|
80
|
-
error: "QUERY_FAILED",
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=ListTableTool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListTableTool.js","sourceRoot":"","sources":["../../src/tools/ListTableTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
-
type ProfileParams = {
|
|
3
|
-
tableName: string;
|
|
4
|
-
schemaName?: string;
|
|
5
|
-
sampleSize?: number;
|
|
6
|
-
includeDistributions?: boolean;
|
|
7
|
-
topValuesLimit?: number;
|
|
8
|
-
columnsToProfile?: string[];
|
|
9
|
-
includeSamples?: boolean;
|
|
10
|
-
};
|
|
11
|
-
type NumericStats = {
|
|
12
|
-
min: number;
|
|
13
|
-
max: number;
|
|
14
|
-
avg: number;
|
|
15
|
-
median?: number;
|
|
16
|
-
p90?: number;
|
|
17
|
-
};
|
|
18
|
-
type StringStats = {
|
|
19
|
-
minLength: number;
|
|
20
|
-
maxLength: number;
|
|
21
|
-
avgLength: number;
|
|
22
|
-
emptyCount: number;
|
|
23
|
-
};
|
|
24
|
-
type DateStats = {
|
|
25
|
-
earliest: string;
|
|
26
|
-
latest: string;
|
|
27
|
-
range: string;
|
|
28
|
-
};
|
|
29
|
-
type TopValue = {
|
|
30
|
-
value: any;
|
|
31
|
-
count: number;
|
|
32
|
-
percentage: number;
|
|
33
|
-
};
|
|
34
|
-
type ColumnProfile = {
|
|
35
|
-
columnName: string;
|
|
36
|
-
dataType: string;
|
|
37
|
-
isNullable: boolean;
|
|
38
|
-
nullCount: number;
|
|
39
|
-
nullPercentage: number;
|
|
40
|
-
distinctCount: number;
|
|
41
|
-
cardinality: "unique" | "high" | "medium" | "low";
|
|
42
|
-
numericStats?: NumericStats;
|
|
43
|
-
stringStats?: StringStats;
|
|
44
|
-
dateStats?: DateStats;
|
|
45
|
-
topValues?: TopValue[];
|
|
46
|
-
};
|
|
47
|
-
type ProfileResult = {
|
|
48
|
-
success: boolean;
|
|
49
|
-
message?: string;
|
|
50
|
-
tableName?: string;
|
|
51
|
-
schemaName?: string;
|
|
52
|
-
rowCount?: number;
|
|
53
|
-
columnCount?: number;
|
|
54
|
-
sampleSize?: number;
|
|
55
|
-
columns?: ColumnProfile[];
|
|
56
|
-
samples?: Record<string, unknown>[];
|
|
57
|
-
};
|
|
58
|
-
export declare class ProfileTableTool implements Tool {
|
|
59
|
-
[key: string]: any;
|
|
60
|
-
name: string;
|
|
61
|
-
description: string;
|
|
62
|
-
inputSchema: any;
|
|
63
|
-
private static readonly SKIP_TYPES;
|
|
64
|
-
private static readonly NUMERIC_TYPES;
|
|
65
|
-
private static readonly STRING_TYPES;
|
|
66
|
-
private static readonly DATE_TYPES;
|
|
67
|
-
private normalizeLimit;
|
|
68
|
-
private classifyCardinality;
|
|
69
|
-
private formatDateRange;
|
|
70
|
-
private escapeIdentifier;
|
|
71
|
-
private isNumericType;
|
|
72
|
-
private isStringType;
|
|
73
|
-
private isDateType;
|
|
74
|
-
private shouldSkipType;
|
|
75
|
-
run(params: ProfileParams): Promise<ProfileResult>;
|
|
76
|
-
}
|
|
77
|
-
export {};
|
|
78
|
-
//# sourceMappingURL=ProfileTableTool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileTableTool.d.ts","sourceRoot":"","sources":["../../src/tools/ProfileTableTool.ts"],"names":[],"mappings":"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"}
|