@connorbritain/mssql-mcp-server 0.3.5 → 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 -747
- 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 -297
- 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 -36
- package/dist/tools/TestConnectionTool.d.ts.map +0 -1
- package/dist/tools/TestConnectionTool.js +0 -155
- 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,215 +0,0 @@
|
|
|
1
|
-
import sql from "mssql";
|
|
2
|
-
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
-
export declare class RunScriptTool implements Tool {
|
|
4
|
-
[key: string]: any;
|
|
5
|
-
name: string;
|
|
6
|
-
description: string;
|
|
7
|
-
inputSchema: any;
|
|
8
|
-
run(params: {
|
|
9
|
-
scriptName: string;
|
|
10
|
-
parameters?: Record<string, any>;
|
|
11
|
-
preview?: boolean;
|
|
12
|
-
confirm?: boolean;
|
|
13
|
-
environment?: string;
|
|
14
|
-
environmentPolicy?: any;
|
|
15
|
-
}): Promise<{
|
|
16
|
-
success: boolean;
|
|
17
|
-
error: string;
|
|
18
|
-
message: string;
|
|
19
|
-
availableScripts: string[];
|
|
20
|
-
script?: undefined;
|
|
21
|
-
environment?: undefined;
|
|
22
|
-
requiredTier?: undefined;
|
|
23
|
-
environmentTier?: undefined;
|
|
24
|
-
hint?: undefined;
|
|
25
|
-
errors?: undefined;
|
|
26
|
-
expectedParameters?: undefined;
|
|
27
|
-
providedParameters?: undefined;
|
|
28
|
-
preview?: undefined;
|
|
29
|
-
description?: undefined;
|
|
30
|
-
resolvedSql?: undefined;
|
|
31
|
-
parameters?: undefined;
|
|
32
|
-
requiresApproval?: undefined;
|
|
33
|
-
rowsAffected?: undefined;
|
|
34
|
-
recordCount?: undefined;
|
|
35
|
-
data?: undefined;
|
|
36
|
-
sqlError?: undefined;
|
|
37
|
-
} | {
|
|
38
|
-
success: boolean;
|
|
39
|
-
error: string;
|
|
40
|
-
message: string | undefined;
|
|
41
|
-
script: string;
|
|
42
|
-
environment: string;
|
|
43
|
-
availableScripts?: undefined;
|
|
44
|
-
requiredTier?: undefined;
|
|
45
|
-
environmentTier?: undefined;
|
|
46
|
-
hint?: undefined;
|
|
47
|
-
errors?: undefined;
|
|
48
|
-
expectedParameters?: undefined;
|
|
49
|
-
providedParameters?: undefined;
|
|
50
|
-
preview?: undefined;
|
|
51
|
-
description?: undefined;
|
|
52
|
-
resolvedSql?: undefined;
|
|
53
|
-
parameters?: undefined;
|
|
54
|
-
requiresApproval?: undefined;
|
|
55
|
-
rowsAffected?: undefined;
|
|
56
|
-
recordCount?: undefined;
|
|
57
|
-
data?: undefined;
|
|
58
|
-
sqlError?: undefined;
|
|
59
|
-
} | {
|
|
60
|
-
success: boolean;
|
|
61
|
-
error: string;
|
|
62
|
-
message: string;
|
|
63
|
-
script: string;
|
|
64
|
-
requiredTier: import("../config/EnvironmentManager.js").TierLevel;
|
|
65
|
-
environmentTier: import("../config/EnvironmentManager.js").TierLevel | undefined;
|
|
66
|
-
availableScripts?: undefined;
|
|
67
|
-
environment?: undefined;
|
|
68
|
-
hint?: undefined;
|
|
69
|
-
errors?: undefined;
|
|
70
|
-
expectedParameters?: undefined;
|
|
71
|
-
providedParameters?: undefined;
|
|
72
|
-
preview?: undefined;
|
|
73
|
-
description?: undefined;
|
|
74
|
-
resolvedSql?: undefined;
|
|
75
|
-
parameters?: undefined;
|
|
76
|
-
requiresApproval?: undefined;
|
|
77
|
-
rowsAffected?: undefined;
|
|
78
|
-
recordCount?: undefined;
|
|
79
|
-
data?: undefined;
|
|
80
|
-
sqlError?: undefined;
|
|
81
|
-
} | {
|
|
82
|
-
success: boolean;
|
|
83
|
-
error: string;
|
|
84
|
-
message: string;
|
|
85
|
-
hint: string;
|
|
86
|
-
availableScripts?: undefined;
|
|
87
|
-
script?: undefined;
|
|
88
|
-
environment?: undefined;
|
|
89
|
-
requiredTier?: undefined;
|
|
90
|
-
environmentTier?: undefined;
|
|
91
|
-
errors?: undefined;
|
|
92
|
-
expectedParameters?: undefined;
|
|
93
|
-
providedParameters?: undefined;
|
|
94
|
-
preview?: undefined;
|
|
95
|
-
description?: undefined;
|
|
96
|
-
resolvedSql?: undefined;
|
|
97
|
-
parameters?: undefined;
|
|
98
|
-
requiresApproval?: undefined;
|
|
99
|
-
rowsAffected?: undefined;
|
|
100
|
-
recordCount?: undefined;
|
|
101
|
-
data?: undefined;
|
|
102
|
-
sqlError?: undefined;
|
|
103
|
-
} | {
|
|
104
|
-
success: boolean;
|
|
105
|
-
error: string;
|
|
106
|
-
message: string;
|
|
107
|
-
errors: string[];
|
|
108
|
-
script: string;
|
|
109
|
-
expectedParameters: import("../config/ScriptManager.js").ScriptParameter[] | undefined;
|
|
110
|
-
providedParameters: Record<string, any>;
|
|
111
|
-
availableScripts?: undefined;
|
|
112
|
-
environment?: undefined;
|
|
113
|
-
requiredTier?: undefined;
|
|
114
|
-
environmentTier?: undefined;
|
|
115
|
-
hint?: undefined;
|
|
116
|
-
preview?: undefined;
|
|
117
|
-
description?: undefined;
|
|
118
|
-
resolvedSql?: undefined;
|
|
119
|
-
parameters?: undefined;
|
|
120
|
-
requiresApproval?: undefined;
|
|
121
|
-
rowsAffected?: undefined;
|
|
122
|
-
recordCount?: undefined;
|
|
123
|
-
data?: undefined;
|
|
124
|
-
sqlError?: undefined;
|
|
125
|
-
} | {
|
|
126
|
-
success: boolean;
|
|
127
|
-
preview: boolean;
|
|
128
|
-
script: string;
|
|
129
|
-
description: string;
|
|
130
|
-
environment: string;
|
|
131
|
-
resolvedSql: string;
|
|
132
|
-
parameters: Record<string, any>;
|
|
133
|
-
requiresApproval: boolean | undefined;
|
|
134
|
-
hint: string;
|
|
135
|
-
error?: undefined;
|
|
136
|
-
message?: undefined;
|
|
137
|
-
availableScripts?: undefined;
|
|
138
|
-
requiredTier?: undefined;
|
|
139
|
-
environmentTier?: undefined;
|
|
140
|
-
errors?: undefined;
|
|
141
|
-
expectedParameters?: undefined;
|
|
142
|
-
providedParameters?: undefined;
|
|
143
|
-
rowsAffected?: undefined;
|
|
144
|
-
recordCount?: undefined;
|
|
145
|
-
data?: undefined;
|
|
146
|
-
sqlError?: undefined;
|
|
147
|
-
} | {
|
|
148
|
-
success: boolean;
|
|
149
|
-
error: string;
|
|
150
|
-
requiresApproval: boolean;
|
|
151
|
-
script: string;
|
|
152
|
-
environment: string;
|
|
153
|
-
resolvedSql: string;
|
|
154
|
-
message: string;
|
|
155
|
-
availableScripts?: undefined;
|
|
156
|
-
requiredTier?: undefined;
|
|
157
|
-
environmentTier?: undefined;
|
|
158
|
-
hint?: undefined;
|
|
159
|
-
errors?: undefined;
|
|
160
|
-
expectedParameters?: undefined;
|
|
161
|
-
providedParameters?: undefined;
|
|
162
|
-
preview?: undefined;
|
|
163
|
-
description?: undefined;
|
|
164
|
-
parameters?: undefined;
|
|
165
|
-
rowsAffected?: undefined;
|
|
166
|
-
recordCount?: undefined;
|
|
167
|
-
data?: undefined;
|
|
168
|
-
sqlError?: undefined;
|
|
169
|
-
} | {
|
|
170
|
-
success: boolean;
|
|
171
|
-
script: string;
|
|
172
|
-
environment: string;
|
|
173
|
-
rowsAffected: number;
|
|
174
|
-
recordCount: number;
|
|
175
|
-
data: sql.IRecordSet<any>;
|
|
176
|
-
message: string;
|
|
177
|
-
error?: undefined;
|
|
178
|
-
availableScripts?: undefined;
|
|
179
|
-
requiredTier?: undefined;
|
|
180
|
-
environmentTier?: undefined;
|
|
181
|
-
hint?: undefined;
|
|
182
|
-
errors?: undefined;
|
|
183
|
-
expectedParameters?: undefined;
|
|
184
|
-
providedParameters?: undefined;
|
|
185
|
-
preview?: undefined;
|
|
186
|
-
description?: undefined;
|
|
187
|
-
resolvedSql?: undefined;
|
|
188
|
-
parameters?: undefined;
|
|
189
|
-
requiresApproval?: undefined;
|
|
190
|
-
sqlError?: undefined;
|
|
191
|
-
} | {
|
|
192
|
-
success: boolean;
|
|
193
|
-
error: string;
|
|
194
|
-
script: string;
|
|
195
|
-
environment: string;
|
|
196
|
-
message: string;
|
|
197
|
-
sqlError: any;
|
|
198
|
-
availableScripts?: undefined;
|
|
199
|
-
requiredTier?: undefined;
|
|
200
|
-
environmentTier?: undefined;
|
|
201
|
-
hint?: undefined;
|
|
202
|
-
errors?: undefined;
|
|
203
|
-
expectedParameters?: undefined;
|
|
204
|
-
providedParameters?: undefined;
|
|
205
|
-
preview?: undefined;
|
|
206
|
-
description?: undefined;
|
|
207
|
-
resolvedSql?: undefined;
|
|
208
|
-
parameters?: undefined;
|
|
209
|
-
requiresApproval?: undefined;
|
|
210
|
-
rowsAffected?: undefined;
|
|
211
|
-
recordCount?: undefined;
|
|
212
|
-
data?: undefined;
|
|
213
|
-
}>;
|
|
214
|
-
}
|
|
215
|
-
//# sourceMappingURL=RunScriptTool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RunScriptTool.d.ts","sourceRoot":"","sources":["../../src/tools/RunScriptTool.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAI1D,qBAAa,aAAc,YAAW,IAAI;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAgB;IACpB,WAAW,SAAqI;IAEhJ,WAAW,EA0BN,GAAG,CAAC;IAEH,GAAG,CAAC,MAAM,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE,GAAG,CAAC;KACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyJF"}
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import sql from "mssql";
|
|
2
|
-
import { getScriptManager } from "../config/ScriptManager.js";
|
|
3
|
-
import { getEnvironmentManager } from "../config/EnvironmentManager.js";
|
|
4
|
-
export class RunScriptTool {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.name = "run_script";
|
|
7
|
-
this.description = "Executes a named SQL script with parameters. Scripts are pre-approved SQL templates. Use list_scripts to see available scripts.";
|
|
8
|
-
this.inputSchema = {
|
|
9
|
-
type: "object",
|
|
10
|
-
properties: {
|
|
11
|
-
scriptName: {
|
|
12
|
-
type: "string",
|
|
13
|
-
description: "Name of the script to execute (from list_scripts)",
|
|
14
|
-
},
|
|
15
|
-
parameters: {
|
|
16
|
-
type: "object",
|
|
17
|
-
description: "Parameter values for the script (key-value pairs)",
|
|
18
|
-
additionalProperties: true,
|
|
19
|
-
},
|
|
20
|
-
preview: {
|
|
21
|
-
type: "boolean",
|
|
22
|
-
description: "If true, shows the resolved SQL without executing. Default: false",
|
|
23
|
-
},
|
|
24
|
-
confirm: {
|
|
25
|
-
type: "boolean",
|
|
26
|
-
description: "Required for scripts with requiresApproval or in environments with requireApproval. Set to true after reviewing preview.",
|
|
27
|
-
},
|
|
28
|
-
environment: {
|
|
29
|
-
type: "string",
|
|
30
|
-
description: "Target environment (optional, uses default if not specified)",
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
required: ["scriptName"],
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
async run(params) {
|
|
37
|
-
const { scriptName, parameters = {}, preview = false, confirm = false, environment } = params;
|
|
38
|
-
const scriptManager = getScriptManager();
|
|
39
|
-
const envManager = getEnvironmentManager();
|
|
40
|
-
// Get the script
|
|
41
|
-
const script = scriptManager.getScript(scriptName);
|
|
42
|
-
if (!script) {
|
|
43
|
-
const available = scriptManager.listScripts().map((s) => s.name);
|
|
44
|
-
return {
|
|
45
|
-
success: false,
|
|
46
|
-
error: "SCRIPT_NOT_FOUND",
|
|
47
|
-
message: `Script '${scriptName}' not found.`,
|
|
48
|
-
availableScripts: available,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
// Get environment config
|
|
52
|
-
const envConfig = envManager.getEnvironment(environment);
|
|
53
|
-
const envName = envConfig.name;
|
|
54
|
-
// Check if script can run in this environment
|
|
55
|
-
const envCheck = scriptManager.canRunInEnvironment(scriptName, envName);
|
|
56
|
-
if (!envCheck.allowed) {
|
|
57
|
-
return {
|
|
58
|
-
success: false,
|
|
59
|
-
error: "SCRIPT_NOT_ALLOWED",
|
|
60
|
-
message: envCheck.reason,
|
|
61
|
-
script: scriptName,
|
|
62
|
-
environment: envName,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
// Check tier compatibility
|
|
66
|
-
if (script.tier) {
|
|
67
|
-
const tierOrder = ["reader", "writer", "admin"];
|
|
68
|
-
const scriptTierIndex = tierOrder.indexOf(script.tier);
|
|
69
|
-
const envTierIndex = envConfig.tier ? tierOrder.indexOf(envConfig.tier) : 2; // default to admin
|
|
70
|
-
if (envTierIndex < scriptTierIndex) {
|
|
71
|
-
return {
|
|
72
|
-
success: false,
|
|
73
|
-
error: "INSUFFICIENT_TIER",
|
|
74
|
-
message: `Script '${scriptName}' requires tier '${script.tier}' but environment '${envName}' is tier '${envConfig.tier}'.`,
|
|
75
|
-
script: scriptName,
|
|
76
|
-
requiredTier: script.tier,
|
|
77
|
-
environmentTier: envConfig.tier,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// Check readonly constraints
|
|
82
|
-
if (envConfig.readonly && !script.readonly) {
|
|
83
|
-
return {
|
|
84
|
-
success: false,
|
|
85
|
-
error: "ENVIRONMENT_READONLY",
|
|
86
|
-
message: `Environment '${envName}' is read-only. Script '${scriptName}' is not marked as readonly.`,
|
|
87
|
-
hint: "Mark the script as readonly: true in scripts.json if it only performs SELECT operations.",
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
// Resolve parameters
|
|
91
|
-
const { sql: resolvedSql, errors } = scriptManager.resolveParameters(script, parameters);
|
|
92
|
-
if (errors.length > 0) {
|
|
93
|
-
return {
|
|
94
|
-
success: false,
|
|
95
|
-
error: "PARAMETER_ERROR",
|
|
96
|
-
message: "Failed to resolve script parameters.",
|
|
97
|
-
errors,
|
|
98
|
-
script: scriptName,
|
|
99
|
-
expectedParameters: script.parameters,
|
|
100
|
-
providedParameters: parameters,
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
// Preview mode - just return the resolved SQL
|
|
104
|
-
if (preview) {
|
|
105
|
-
return {
|
|
106
|
-
success: true,
|
|
107
|
-
preview: true,
|
|
108
|
-
script: scriptName,
|
|
109
|
-
description: script.description,
|
|
110
|
-
environment: envName,
|
|
111
|
-
resolvedSql,
|
|
112
|
-
parameters: parameters,
|
|
113
|
-
requiresApproval: script.requiresApproval || envConfig.requireApproval,
|
|
114
|
-
hint: script.requiresApproval || envConfig.requireApproval
|
|
115
|
-
? "This script requires confirmation. Run again with confirm: true to execute."
|
|
116
|
-
: "Run again with preview: false to execute.",
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
// Check approval requirements
|
|
120
|
-
const needsApproval = script.requiresApproval || envConfig.requireApproval;
|
|
121
|
-
if (needsApproval && !confirm) {
|
|
122
|
-
return {
|
|
123
|
-
success: false,
|
|
124
|
-
error: "APPROVAL_REQUIRED",
|
|
125
|
-
requiresApproval: true,
|
|
126
|
-
script: scriptName,
|
|
127
|
-
environment: envName,
|
|
128
|
-
resolvedSql,
|
|
129
|
-
message: `Script '${scriptName}' requires explicit approval. Review the SQL and run again with confirm: true.`,
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
// Execute the script
|
|
133
|
-
try {
|
|
134
|
-
const pool = await envManager.getConnection(envName);
|
|
135
|
-
const request = pool.request();
|
|
136
|
-
// For actual execution, we use parameterized queries for safety
|
|
137
|
-
// Add parameters to the request
|
|
138
|
-
for (const param of script.parameters || []) {
|
|
139
|
-
const value = parameters[param.name] ?? param.default;
|
|
140
|
-
if (value !== undefined) {
|
|
141
|
-
// Map our types to SQL types
|
|
142
|
-
switch (param.type) {
|
|
143
|
-
case "number":
|
|
144
|
-
request.input(param.name, sql.Float, value);
|
|
145
|
-
break;
|
|
146
|
-
case "boolean":
|
|
147
|
-
request.input(param.name, sql.Bit, value);
|
|
148
|
-
break;
|
|
149
|
-
default:
|
|
150
|
-
request.input(param.name, sql.NVarChar(sql.MAX), value);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
const result = await request.query(script.sql);
|
|
155
|
-
return {
|
|
156
|
-
success: true,
|
|
157
|
-
script: scriptName,
|
|
158
|
-
environment: envName,
|
|
159
|
-
rowsAffected: result.rowsAffected.reduce((a, b) => a + b, 0),
|
|
160
|
-
recordCount: result.recordset?.length,
|
|
161
|
-
data: result.recordset,
|
|
162
|
-
message: `Script '${scriptName}' executed successfully.`,
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
catch (error) {
|
|
166
|
-
return {
|
|
167
|
-
success: false,
|
|
168
|
-
error: "EXECUTION_ERROR",
|
|
169
|
-
script: scriptName,
|
|
170
|
-
environment: envName,
|
|
171
|
-
message: `Script execution failed: ${error.message}`,
|
|
172
|
-
sqlError: error.message,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
//# sourceMappingURL=RunScriptTool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RunScriptTool.js","sourceRoot":"","sources":["../../src/tools/RunScriptTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
-
type SearchParams = {
|
|
3
|
-
tablePattern?: string;
|
|
4
|
-
columnPattern?: string;
|
|
5
|
-
limit?: number;
|
|
6
|
-
tableLimit?: number;
|
|
7
|
-
columnLimit?: number;
|
|
8
|
-
tableOffset?: number;
|
|
9
|
-
columnOffset?: number;
|
|
10
|
-
};
|
|
11
|
-
type PaginationInfo = {
|
|
12
|
-
offset: number;
|
|
13
|
-
limit: number;
|
|
14
|
-
total: number;
|
|
15
|
-
hasMore: boolean;
|
|
16
|
-
};
|
|
17
|
-
type SearchResult = {
|
|
18
|
-
success: boolean;
|
|
19
|
-
message?: string;
|
|
20
|
-
totalTables?: number;
|
|
21
|
-
totalColumns?: number;
|
|
22
|
-
tables?: Array<{
|
|
23
|
-
schemaName: string;
|
|
24
|
-
tableName: string;
|
|
25
|
-
}>;
|
|
26
|
-
columns?: Array<{
|
|
27
|
-
schemaName: string;
|
|
28
|
-
tableName: string;
|
|
29
|
-
columnName: string;
|
|
30
|
-
dataType: string;
|
|
31
|
-
}>;
|
|
32
|
-
fuzzySuggestions?: Array<{
|
|
33
|
-
schemaName: string;
|
|
34
|
-
tableName: string;
|
|
35
|
-
similarity: number;
|
|
36
|
-
}>;
|
|
37
|
-
fuzzySearchTerm?: string;
|
|
38
|
-
tablesPage?: PaginationInfo;
|
|
39
|
-
columnsPage?: PaginationInfo;
|
|
40
|
-
};
|
|
41
|
-
export declare class SearchSchemaTool implements Tool {
|
|
42
|
-
[key: string]: any;
|
|
43
|
-
name: string;
|
|
44
|
-
description: string;
|
|
45
|
-
inputSchema: {
|
|
46
|
-
readonly type: "object";
|
|
47
|
-
readonly properties: {
|
|
48
|
-
readonly tablePattern: {
|
|
49
|
-
readonly type: "string";
|
|
50
|
-
readonly description: "Wildcard pattern for table names (e.g. 'doc%').";
|
|
51
|
-
};
|
|
52
|
-
readonly columnPattern: {
|
|
53
|
-
readonly type: "string";
|
|
54
|
-
readonly description: "Wildcard pattern for column names (e.g. '%id').";
|
|
55
|
-
};
|
|
56
|
-
readonly limit: {
|
|
57
|
-
readonly type: "number";
|
|
58
|
-
readonly description: "Maximum rows to return per section (default 50, max 200).";
|
|
59
|
-
};
|
|
60
|
-
readonly tableLimit: {
|
|
61
|
-
readonly type: "number";
|
|
62
|
-
readonly description: "Override for table section limit (defaults to limit).";
|
|
63
|
-
};
|
|
64
|
-
readonly columnLimit: {
|
|
65
|
-
readonly type: "number";
|
|
66
|
-
readonly description: "Override for column section limit (defaults to limit).";
|
|
67
|
-
};
|
|
68
|
-
readonly tableOffset: {
|
|
69
|
-
readonly type: "number";
|
|
70
|
-
readonly description: "Number of table rows to skip (for pagination).";
|
|
71
|
-
};
|
|
72
|
-
readonly columnOffset: {
|
|
73
|
-
readonly type: "number";
|
|
74
|
-
readonly description: "Number of column rows to skip (for pagination).";
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
};
|
|
78
|
-
private normalizePattern;
|
|
79
|
-
private stripWildcards;
|
|
80
|
-
private normalizeLimit;
|
|
81
|
-
private normalizeOffset;
|
|
82
|
-
private levenshteinDistance;
|
|
83
|
-
private calculateSimilarity;
|
|
84
|
-
private findSimilarTables;
|
|
85
|
-
run(params: SearchParams): Promise<SearchResult>;
|
|
86
|
-
}
|
|
87
|
-
export {};
|
|
88
|
-
//# sourceMappingURL=SearchSchemaTool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchSchemaTool.d.ts","sourceRoot":"","sources":["../../src/tools/SearchSchemaTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAe1D,KAAK,YAAY,GAAG;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjG,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B,CAAC;AAEF,qBAAa,gBAAiB,YAAW,IAAI;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,SAAmB;IACvB,WAAW,SAAmF;IAC9F,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgCA;IAEX,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,mBAAmB;YAWb,iBAAiB;IAwBzB,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;CA0HvD"}
|