@connorbritain/mssql-mcp-core 0.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/dist/audit/AuditLogger.d.ts +37 -0
- package/dist/audit/AuditLogger.d.ts.map +1 -0
- package/dist/audit/AuditLogger.js +145 -0
- package/dist/audit/AuditLogger.js.map +1 -0
- package/dist/config/EnvironmentManager.d.ts +75 -0
- package/dist/config/EnvironmentManager.d.ts.map +1 -0
- package/dist/config/EnvironmentManager.js +305 -0
- package/dist/config/EnvironmentManager.js.map +1 -0
- package/dist/config/ScriptManager.d.ts +69 -0
- package/dist/config/ScriptManager.d.ts.map +1 -0
- package/dist/config/ScriptManager.js +166 -0
- package/dist/config/ScriptManager.js.map +1 -0
- package/dist/config/SecretResolver.d.ts +66 -0
- package/dist/config/SecretResolver.d.ts.map +1 -0
- package/dist/config/SecretResolver.js +230 -0
- package/dist/config/SecretResolver.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/routing/IntentRouter.d.ts +17 -0
- package/dist/routing/IntentRouter.d.ts.map +1 -0
- package/dist/routing/IntentRouter.js +243 -0
- package/dist/routing/IntentRouter.js.map +1 -0
- package/dist/server/createMcpServer.d.ts +7 -0
- package/dist/server/createMcpServer.d.ts.map +1 -0
- package/dist/server/createMcpServer.js +100 -0
- package/dist/server/createMcpServer.js.map +1 -0
- package/dist/server/toolsets.d.ts +42 -0
- package/dist/server/toolsets.d.ts.map +1 -0
- package/dist/server/toolsets.js +303 -0
- package/dist/server/toolsets.js.map +1 -0
- package/dist/server/wrapToolRun.d.ts +13 -0
- package/dist/server/wrapToolRun.d.ts.map +1 -0
- package/dist/server/wrapToolRun.js +102 -0
- package/dist/server/wrapToolRun.js.map +1 -0
- package/dist/shims.d.ts +2 -0
- package/dist/shims.d.ts.map +1 -0
- package/dist/shims.js +15 -0
- package/dist/shims.js.map +1 -0
- package/dist/tools/CreateIndexTool.d.ts +24 -0
- package/dist/tools/CreateIndexTool.d.ts.map +1 -0
- package/dist/tools/CreateIndexTool.js +64 -0
- package/dist/tools/CreateIndexTool.js.map +1 -0
- package/dist/tools/CreateTableTool.d.ts +12 -0
- package/dist/tools/CreateTableTool.d.ts.map +1 -0
- package/dist/tools/CreateTableTool.js +49 -0
- package/dist/tools/CreateTableTool.js.map +1 -0
- package/dist/tools/DeleteDataTool.d.ts +56 -0
- package/dist/tools/DeleteDataTool.d.ts.map +1 -0
- package/dist/tools/DeleteDataTool.js +103 -0
- package/dist/tools/DeleteDataTool.js.map +1 -0
- package/dist/tools/DescribeTableTool.d.ts +32 -0
- package/dist/tools/DescribeTableTool.d.ts.map +1 -0
- package/dist/tools/DescribeTableTool.js +116 -0
- package/dist/tools/DescribeTableTool.js.map +1 -0
- package/dist/tools/DropTableTool.d.ts +12 -0
- package/dist/tools/DropTableTool.d.ts.map +1 -0
- package/dist/tools/DropTableTool.js +37 -0
- package/dist/tools/DropTableTool.js.map +1 -0
- package/dist/tools/ExplainQueryTool.d.ts +24 -0
- package/dist/tools/ExplainQueryTool.d.ts.map +1 -0
- package/dist/tools/ExplainQueryTool.js +98 -0
- package/dist/tools/ExplainQueryTool.js.map +1 -0
- package/dist/tools/InsertDataTool.d.ts +17 -0
- package/dist/tools/InsertDataTool.d.ts.map +1 -0
- package/dist/tools/InsertDataTool.js +102 -0
- package/dist/tools/InsertDataTool.js.map +1 -0
- package/dist/tools/InspectDependenciesTool.d.ts +46 -0
- package/dist/tools/InspectDependenciesTool.d.ts.map +1 -0
- package/dist/tools/InspectDependenciesTool.js +215 -0
- package/dist/tools/InspectDependenciesTool.js.map +1 -0
- package/dist/tools/ListDatabasesTool.d.ts +27 -0
- package/dist/tools/ListDatabasesTool.d.ts.map +1 -0
- package/dist/tools/ListDatabasesTool.js +107 -0
- package/dist/tools/ListDatabasesTool.js.map +1 -0
- package/dist/tools/ListEnvironmentsTool.d.ts +49 -0
- package/dist/tools/ListEnvironmentsTool.d.ts.map +1 -0
- package/dist/tools/ListEnvironmentsTool.js +73 -0
- package/dist/tools/ListEnvironmentsTool.js.map +1 -0
- package/dist/tools/ListScriptsTool.d.ts +41 -0
- package/dist/tools/ListScriptsTool.d.ts.map +1 -0
- package/dist/tools/ListScriptsTool.js +86 -0
- package/dist/tools/ListScriptsTool.js.map +1 -0
- package/dist/tools/ListTableTool.d.ts +24 -0
- package/dist/tools/ListTableTool.d.ts.map +1 -0
- package/dist/tools/ListTableTool.js +85 -0
- package/dist/tools/ListTableTool.js.map +1 -0
- package/dist/tools/ProfileTableTool.d.ts +78 -0
- package/dist/tools/ProfileTableTool.d.ts.map +1 -0
- package/dist/tools/ProfileTableTool.js +373 -0
- package/dist/tools/ProfileTableTool.js.map +1 -0
- package/dist/tools/ReadDataTool.d.ts +61 -0
- package/dist/tools/ReadDataTool.d.ts.map +1 -0
- package/dist/tools/ReadDataTool.js +299 -0
- package/dist/tools/ReadDataTool.js.map +1 -0
- package/dist/tools/RelationshipInspectorTool.d.ts +46 -0
- package/dist/tools/RelationshipInspectorTool.d.ts.map +1 -0
- package/dist/tools/RelationshipInspectorTool.js +156 -0
- package/dist/tools/RelationshipInspectorTool.js.map +1 -0
- package/dist/tools/RunScriptTool.d.ts +214 -0
- package/dist/tools/RunScriptTool.d.ts.map +1 -0
- package/dist/tools/RunScriptTool.js +186 -0
- package/dist/tools/RunScriptTool.js.map +1 -0
- package/dist/tools/SearchSchemaTool.d.ts +88 -0
- package/dist/tools/SearchSchemaTool.d.ts.map +1 -0
- package/dist/tools/SearchSchemaTool.js +237 -0
- package/dist/tools/SearchSchemaTool.js.map +1 -0
- package/dist/tools/TestConnectionTool.d.ts +38 -0
- package/dist/tools/TestConnectionTool.d.ts.map +1 -0
- package/dist/tools/TestConnectionTool.js +156 -0
- package/dist/tools/TestConnectionTool.js.map +1 -0
- package/dist/tools/UpdateDataTool.d.ts +61 -0
- package/dist/tools/UpdateDataTool.d.ts.map +1 -0
- package/dist/tools/UpdateDataTool.js +117 -0
- package/dist/tools/UpdateDataTool.js.map +1 -0
- package/dist/tools/ValidateEnvironmentConfigTool.d.ts +51 -0
- package/dist/tools/ValidateEnvironmentConfigTool.d.ts.map +1 -0
- package/dist/tools/ValidateEnvironmentConfigTool.js +320 -0
- package/dist/tools/ValidateEnvironmentConfigTool.js.map +1 -0
- package/dist/tools/index.d.ts +21 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +22 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +60 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
interface ValidationResult {
|
|
3
|
+
environment: string;
|
|
4
|
+
valid: boolean;
|
|
5
|
+
errors: string[];
|
|
6
|
+
warnings: string[];
|
|
7
|
+
}
|
|
8
|
+
interface SecretsValidationResult {
|
|
9
|
+
providers: {
|
|
10
|
+
type: string;
|
|
11
|
+
valid: boolean;
|
|
12
|
+
error?: string;
|
|
13
|
+
}[];
|
|
14
|
+
secrets: {
|
|
15
|
+
name: string;
|
|
16
|
+
resolved: boolean;
|
|
17
|
+
}[];
|
|
18
|
+
}
|
|
19
|
+
interface ValidateEnvironmentConfigResult {
|
|
20
|
+
success: boolean;
|
|
21
|
+
summary: {
|
|
22
|
+
totalEnvironments: number;
|
|
23
|
+
validCount: number;
|
|
24
|
+
invalidCount: number;
|
|
25
|
+
warningCount: number;
|
|
26
|
+
};
|
|
27
|
+
results: ValidationResult[];
|
|
28
|
+
secretsValidation?: SecretsValidationResult;
|
|
29
|
+
configPath?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare class ValidateEnvironmentConfigTool implements Tool {
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
inputSchema: {
|
|
35
|
+
type: "object";
|
|
36
|
+
properties: {
|
|
37
|
+
environment: {
|
|
38
|
+
type: string;
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
run(args?: {
|
|
44
|
+
environment?: string;
|
|
45
|
+
}): Promise<ValidateEnvironmentConfigResult>;
|
|
46
|
+
private validateEnvironment;
|
|
47
|
+
private validateSecrets;
|
|
48
|
+
private validateSecretsProviders;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=ValidateEnvironmentConfigTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidateEnvironmentConfigTool.d.ts","sourceRoot":"","sources":["../../src/tools/ValidateEnvironmentConfigTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAI1D,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,UAAU,uBAAuB;IAC/B,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAChD;AAED,UAAU,+BAA+B;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE;QACP,iBAAiB,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,6BAA8B,YAAW,IAAI;IACxD,IAAI,SAAiC;IACrC,WAAW,SAU8D;IAEzE,WAAW;;;;;;;;MAQT;IAEI,GAAG,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAwEpF,OAAO,CAAC,mBAAmB;IAmL3B,OAAO,CAAC,eAAe;IA4CvB,OAAO,CAAC,wBAAwB;CA8CjC"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { getEnvironmentManager } from "../config/EnvironmentManager.js";
|
|
4
|
+
import { SecretResolver, validateDotenvPath, validateFileDirectory } from "../config/SecretResolver.js";
|
|
5
|
+
export class ValidateEnvironmentConfigTool {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.name = "validate_environment_config";
|
|
8
|
+
this.description = `Validates the environments.json configuration file for correctness and security best practices.
|
|
9
|
+
|
|
10
|
+
Checks include:
|
|
11
|
+
- Required fields (name, server, database for database-level; name, server for server-level)
|
|
12
|
+
- Valid authentication mode configuration
|
|
13
|
+
- Policy consistency (e.g., readonly + allowedTools including write tools)
|
|
14
|
+
- Secret placeholder syntax
|
|
15
|
+
- Access level configuration validity
|
|
16
|
+
- Tier designation consistency
|
|
17
|
+
|
|
18
|
+
Returns validation results for each environment with errors and warnings.`;
|
|
19
|
+
this.inputSchema = {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
environment: {
|
|
23
|
+
type: "string",
|
|
24
|
+
description: "Specific environment name to validate. If omitted, validates all environments.",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
async run(args) {
|
|
30
|
+
const envManager = getEnvironmentManager();
|
|
31
|
+
const environments = envManager.listEnvironments();
|
|
32
|
+
if (environments.length === 0) {
|
|
33
|
+
return {
|
|
34
|
+
success: false,
|
|
35
|
+
summary: {
|
|
36
|
+
totalEnvironments: 0,
|
|
37
|
+
validCount: 0,
|
|
38
|
+
invalidCount: 0,
|
|
39
|
+
warningCount: 0,
|
|
40
|
+
},
|
|
41
|
+
results: [],
|
|
42
|
+
configPath: process.env.ENVIRONMENTS_CONFIG_PATH,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Filter to specific environment if requested
|
|
46
|
+
const toValidate = args?.environment
|
|
47
|
+
? environments.filter((e) => e.name === args.environment)
|
|
48
|
+
: environments;
|
|
49
|
+
if (args?.environment && toValidate.length === 0) {
|
|
50
|
+
return {
|
|
51
|
+
success: false,
|
|
52
|
+
summary: {
|
|
53
|
+
totalEnvironments: environments.length,
|
|
54
|
+
validCount: 0,
|
|
55
|
+
invalidCount: 1,
|
|
56
|
+
warningCount: 0,
|
|
57
|
+
},
|
|
58
|
+
results: [
|
|
59
|
+
{
|
|
60
|
+
environment: args.environment,
|
|
61
|
+
valid: false,
|
|
62
|
+
errors: [`Environment '${args.environment}' not found in configuration.`],
|
|
63
|
+
warnings: [],
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
configPath: process.env.ENVIRONMENTS_CONFIG_PATH,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const results = [];
|
|
70
|
+
for (const env of toValidate) {
|
|
71
|
+
const result = this.validateEnvironment(env);
|
|
72
|
+
results.push(result);
|
|
73
|
+
}
|
|
74
|
+
const validCount = results.filter((r) => r.valid).length;
|
|
75
|
+
const invalidCount = results.filter((r) => !r.valid).length;
|
|
76
|
+
const warningCount = results.filter((r) => r.warnings.length > 0).length;
|
|
77
|
+
// Validate secrets configuration and resolution
|
|
78
|
+
const secretsValidation = this.validateSecrets(envManager, toValidate);
|
|
79
|
+
return {
|
|
80
|
+
success: invalidCount === 0,
|
|
81
|
+
summary: {
|
|
82
|
+
totalEnvironments: environments.length,
|
|
83
|
+
validCount,
|
|
84
|
+
invalidCount,
|
|
85
|
+
warningCount,
|
|
86
|
+
},
|
|
87
|
+
results,
|
|
88
|
+
secretsValidation,
|
|
89
|
+
configPath: process.env.ENVIRONMENTS_CONFIG_PATH,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
validateEnvironment(env) {
|
|
93
|
+
const errors = [];
|
|
94
|
+
const warnings = [];
|
|
95
|
+
// Required fields
|
|
96
|
+
if (!env.name || env.name.trim() === "") {
|
|
97
|
+
errors.push("Missing required field: name");
|
|
98
|
+
}
|
|
99
|
+
if (!env.server || env.server.trim() === "") {
|
|
100
|
+
errors.push("Missing required field: server");
|
|
101
|
+
}
|
|
102
|
+
// Database is required for database-level access
|
|
103
|
+
const accessLevel = env.accessLevel ?? "database";
|
|
104
|
+
if (accessLevel === "database" && (!env.database || env.database.trim() === "")) {
|
|
105
|
+
errors.push("Missing required field: database (required when accessLevel is 'database')");
|
|
106
|
+
}
|
|
107
|
+
// Validate authentication mode
|
|
108
|
+
const validAuthModes = ["sql", "windows", "aad"];
|
|
109
|
+
if (env.authMode && !validAuthModes.includes(env.authMode)) {
|
|
110
|
+
errors.push(`Invalid authMode '${env.authMode}'. Must be one of: ${validAuthModes.join(", ")}`);
|
|
111
|
+
}
|
|
112
|
+
// Check credentials for sql/windows auth
|
|
113
|
+
if (env.authMode === "sql" || env.authMode === "windows") {
|
|
114
|
+
if (!env.username) {
|
|
115
|
+
errors.push(`Missing username for ${env.authMode} authentication`);
|
|
116
|
+
}
|
|
117
|
+
if (!env.password) {
|
|
118
|
+
errors.push(`Missing password for ${env.authMode} authentication`);
|
|
119
|
+
}
|
|
120
|
+
// Check for plaintext passwords (not using secret placeholders)
|
|
121
|
+
if (env.password && !env.password.startsWith("${secret:")) {
|
|
122
|
+
warnings.push("Password appears to be plaintext. Consider using ${secret:NAME} placeholder.");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Windows auth requires domain
|
|
126
|
+
if (env.authMode === "windows" && !env.domain) {
|
|
127
|
+
warnings.push("Windows authentication typically requires a domain. Consider adding 'domain' field.");
|
|
128
|
+
}
|
|
129
|
+
// Validate access level
|
|
130
|
+
const validAccessLevels = ["server", "database"];
|
|
131
|
+
if (env.accessLevel && !validAccessLevels.includes(env.accessLevel)) {
|
|
132
|
+
errors.push(`Invalid accessLevel '${env.accessLevel}'. Must be one of: ${validAccessLevels.join(", ")}`);
|
|
133
|
+
}
|
|
134
|
+
// Server-level access warnings
|
|
135
|
+
if (env.accessLevel === "server") {
|
|
136
|
+
if (!env.allowedDatabases && !env.deniedDatabases) {
|
|
137
|
+
warnings.push("Server-level access without allowedDatabases or deniedDatabases allows access to all databases.");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Validate tier
|
|
141
|
+
const validTiers = ["reader", "writer", "admin"];
|
|
142
|
+
if (env.tier && !validTiers.includes(env.tier)) {
|
|
143
|
+
errors.push(`Invalid tier '${env.tier}'. Must be one of: ${validTiers.join(", ")}`);
|
|
144
|
+
}
|
|
145
|
+
// Validate audit level
|
|
146
|
+
const validAuditLevels = ["none", "basic", "verbose"];
|
|
147
|
+
if (env.auditLevel && !validAuditLevels.includes(env.auditLevel)) {
|
|
148
|
+
errors.push(`Invalid auditLevel '${env.auditLevel}'. Must be one of: ${validAuditLevels.join(", ")}`);
|
|
149
|
+
}
|
|
150
|
+
// Production environment warnings
|
|
151
|
+
if (env.auditLevel === "none") {
|
|
152
|
+
warnings.push("Audit logging is disabled. Consider enabling for compliance and debugging.");
|
|
153
|
+
}
|
|
154
|
+
// Policy consistency checks
|
|
155
|
+
const writeTools = ["insert_data", "update_data", "delete_data"];
|
|
156
|
+
const schemaTools = ["create_table", "create_index", "drop_table"];
|
|
157
|
+
if (env.readonly) {
|
|
158
|
+
// Check if allowedTools includes write operations
|
|
159
|
+
if (env.allowedTools) {
|
|
160
|
+
const conflictingTools = env.allowedTools.filter((t) => writeTools.includes(t) || schemaTools.includes(t));
|
|
161
|
+
if (conflictingTools.length > 0) {
|
|
162
|
+
errors.push(`readonly=true conflicts with allowedTools containing write operations: ${conflictingTools.join(", ")}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Tier consistency checks
|
|
167
|
+
if (env.tier === "reader") {
|
|
168
|
+
if (!env.readonly) {
|
|
169
|
+
warnings.push("Tier 'reader' typically has readonly=true. Consider setting readonly=true.");
|
|
170
|
+
}
|
|
171
|
+
if (env.allowedTools) {
|
|
172
|
+
const writingTools = env.allowedTools.filter((t) => writeTools.includes(t) || schemaTools.includes(t));
|
|
173
|
+
if (writingTools.length > 0) {
|
|
174
|
+
warnings.push(`Tier 'reader' should not include write tools: ${writingTools.join(", ")}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (env.tier === "writer") {
|
|
179
|
+
if (env.allowedTools) {
|
|
180
|
+
const schemaChanges = env.allowedTools.filter((t) => schemaTools.includes(t));
|
|
181
|
+
if (schemaChanges.length > 0) {
|
|
182
|
+
warnings.push(`Tier 'writer' should not include schema modification tools: ${schemaChanges.join(", ")}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// Check for overlapping allowed/denied tools
|
|
187
|
+
if (env.allowedTools && env.deniedTools) {
|
|
188
|
+
const overlap = env.allowedTools.filter((t) => env.deniedTools.includes(t));
|
|
189
|
+
if (overlap.length > 0) {
|
|
190
|
+
errors.push(`Tools appear in both allowedTools and deniedTools: ${overlap.join(", ")}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Check for overlapping allowed/denied schemas
|
|
194
|
+
if (env.allowedSchemas && env.deniedSchemas) {
|
|
195
|
+
const overlap = env.allowedSchemas.filter((s) => env.deniedSchemas.includes(s));
|
|
196
|
+
if (overlap.length > 0) {
|
|
197
|
+
warnings.push(`Schema patterns appear in both allowedSchemas and deniedSchemas: ${overlap.join(", ")}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Check for overlapping allowed/denied databases
|
|
201
|
+
if (env.allowedDatabases && env.deniedDatabases && Array.isArray(env.allowedDatabases)) {
|
|
202
|
+
const overlap = env.allowedDatabases.filter((d) => env.deniedDatabases.includes(d));
|
|
203
|
+
if (overlap.length > 0) {
|
|
204
|
+
errors.push(`Databases appear in both allowedDatabases and deniedDatabases: ${overlap.join(", ")}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Port validation
|
|
208
|
+
if (env.port !== undefined) {
|
|
209
|
+
if (typeof env.port !== "number" || env.port < 1 || env.port > 65535) {
|
|
210
|
+
errors.push(`Invalid port '${env.port}'. Must be a number between 1 and 65535.`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Connection timeout validation
|
|
214
|
+
if (env.connectionTimeout !== undefined) {
|
|
215
|
+
if (typeof env.connectionTimeout !== "number" || env.connectionTimeout < 1) {
|
|
216
|
+
errors.push(`Invalid connectionTimeout '${env.connectionTimeout}'. Must be a positive number.`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// maxRowsDefault validation
|
|
220
|
+
if (env.maxRowsDefault !== undefined) {
|
|
221
|
+
if (typeof env.maxRowsDefault !== "number" || env.maxRowsDefault < 1) {
|
|
222
|
+
errors.push(`Invalid maxRowsDefault '${env.maxRowsDefault}'. Must be a positive number.`);
|
|
223
|
+
}
|
|
224
|
+
if (env.maxRowsDefault > 100000) {
|
|
225
|
+
warnings.push(`maxRowsDefault of ${env.maxRowsDefault} is very high. Consider limiting for performance.`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
environment: env.name,
|
|
230
|
+
valid: errors.length === 0,
|
|
231
|
+
errors,
|
|
232
|
+
warnings,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
validateSecrets(envManager, environments) {
|
|
236
|
+
const resolver = envManager.getSecretResolver();
|
|
237
|
+
// Validate provider configs by reading the raw config file
|
|
238
|
+
const providerResults = this.validateSecretsProviders();
|
|
239
|
+
// Extract all ${secret:NAME} references from the raw config
|
|
240
|
+
const configPath = process.env.ENVIRONMENTS_CONFIG_PATH;
|
|
241
|
+
const allSecretNames = new Set();
|
|
242
|
+
if (configPath) {
|
|
243
|
+
try {
|
|
244
|
+
const rawContent = fs.readFileSync(configPath, "utf-8");
|
|
245
|
+
for (const name of SecretResolver.extractSecretNames(rawContent)) {
|
|
246
|
+
allSecretNames.add(name);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
// If we can't read the file, fall back to checking the resolved environments
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// Also scan from the environment objects (in case loaded from env vars)
|
|
254
|
+
if (allSecretNames.size === 0) {
|
|
255
|
+
for (const env of environments) {
|
|
256
|
+
const json = JSON.stringify(env);
|
|
257
|
+
for (const name of SecretResolver.extractSecretNames(json)) {
|
|
258
|
+
allSecretNames.add(name);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
const { resolved, unresolved } = resolver.checkResolvability(Array.from(allSecretNames));
|
|
263
|
+
const secrets = [
|
|
264
|
+
...resolved.map((name) => ({ name, resolved: true })),
|
|
265
|
+
...unresolved.map((name) => ({ name, resolved: false })),
|
|
266
|
+
];
|
|
267
|
+
return { providers: providerResults, secrets };
|
|
268
|
+
}
|
|
269
|
+
validateSecretsProviders() {
|
|
270
|
+
const configPath = process.env.ENVIRONMENTS_CONFIG_PATH;
|
|
271
|
+
if (!configPath)
|
|
272
|
+
return [];
|
|
273
|
+
try {
|
|
274
|
+
const rawContent = fs.readFileSync(configPath, "utf-8");
|
|
275
|
+
const config = JSON.parse(rawContent);
|
|
276
|
+
if (!config.secrets?.providers)
|
|
277
|
+
return [];
|
|
278
|
+
const validTypes = ["env", "dotenv", "file"];
|
|
279
|
+
const results = [];
|
|
280
|
+
for (const provider of config.secrets.providers) {
|
|
281
|
+
if (!validTypes.includes(provider.type)) {
|
|
282
|
+
results.push({ type: provider.type, valid: false, error: `Unknown provider type '${provider.type}'. Valid types: ${validTypes.join(", ")}` });
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
if (provider.type === "env") {
|
|
286
|
+
results.push({ type: "env", valid: true });
|
|
287
|
+
}
|
|
288
|
+
else if (provider.type === "dotenv") {
|
|
289
|
+
if (!provider.path) {
|
|
290
|
+
results.push({ type: "dotenv", valid: false, error: "Missing required 'path' field" });
|
|
291
|
+
}
|
|
292
|
+
else if (!path.isAbsolute(provider.path)) {
|
|
293
|
+
results.push({ type: "dotenv", valid: false, error: `Path should be absolute: ${provider.path}` });
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
const check = validateDotenvPath(provider.path);
|
|
297
|
+
results.push({ type: "dotenv", valid: check.valid, error: check.error });
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
else if (provider.type === "file") {
|
|
301
|
+
if (!provider.directory) {
|
|
302
|
+
results.push({ type: "file", valid: false, error: "Missing required 'directory' field" });
|
|
303
|
+
}
|
|
304
|
+
else if (!path.isAbsolute(provider.directory)) {
|
|
305
|
+
results.push({ type: "file", valid: false, error: `Directory should be absolute: ${provider.directory}` });
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
const check = validateFileDirectory(provider.directory);
|
|
309
|
+
results.push({ type: "file", valid: check.valid, error: check.error });
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return results;
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
return [];
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=ValidateEnvironmentConfigTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidateEnvironmentConfigTool.js","sourceRoot":"","sources":["../../src/tools/ValidateEnvironmentConfigTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export { CreateIndexTool } from "./CreateIndexTool.js";
|
|
2
|
+
export { CreateTableTool } from "./CreateTableTool.js";
|
|
3
|
+
export { DeleteDataTool } from "./DeleteDataTool.js";
|
|
4
|
+
export { DescribeTableTool } from "./DescribeTableTool.js";
|
|
5
|
+
export { DropTableTool } from "./DropTableTool.js";
|
|
6
|
+
export { ExplainQueryTool } from "./ExplainQueryTool.js";
|
|
7
|
+
export { InsertDataTool } from "./InsertDataTool.js";
|
|
8
|
+
export { InspectDependenciesTool } from "./InspectDependenciesTool.js";
|
|
9
|
+
export { ListDatabasesTool } from "./ListDatabasesTool.js";
|
|
10
|
+
export { ListEnvironmentsTool } from "./ListEnvironmentsTool.js";
|
|
11
|
+
export { ListScriptsTool } from "./ListScriptsTool.js";
|
|
12
|
+
export { ListTableTool } from "./ListTableTool.js";
|
|
13
|
+
export { ProfileTableTool } from "./ProfileTableTool.js";
|
|
14
|
+
export { ReadDataTool } from "./ReadDataTool.js";
|
|
15
|
+
export { RelationshipInspectorTool } from "./RelationshipInspectorTool.js";
|
|
16
|
+
export { RunScriptTool } from "./RunScriptTool.js";
|
|
17
|
+
export { SearchSchemaTool } from "./SearchSchemaTool.js";
|
|
18
|
+
export { TestConnectionTool } from "./TestConnectionTool.js";
|
|
19
|
+
export { UpdateDataTool } from "./UpdateDataTool.js";
|
|
20
|
+
export { ValidateEnvironmentConfigTool } from "./ValidateEnvironmentConfigTool.js";
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Tool class exports
|
|
2
|
+
export { CreateIndexTool } from "./CreateIndexTool.js";
|
|
3
|
+
export { CreateTableTool } from "./CreateTableTool.js";
|
|
4
|
+
export { DeleteDataTool } from "./DeleteDataTool.js";
|
|
5
|
+
export { DescribeTableTool } from "./DescribeTableTool.js";
|
|
6
|
+
export { DropTableTool } from "./DropTableTool.js";
|
|
7
|
+
export { ExplainQueryTool } from "./ExplainQueryTool.js";
|
|
8
|
+
export { InsertDataTool } from "./InsertDataTool.js";
|
|
9
|
+
export { InspectDependenciesTool } from "./InspectDependenciesTool.js";
|
|
10
|
+
export { ListDatabasesTool } from "./ListDatabasesTool.js";
|
|
11
|
+
export { ListEnvironmentsTool } from "./ListEnvironmentsTool.js";
|
|
12
|
+
export { ListScriptsTool } from "./ListScriptsTool.js";
|
|
13
|
+
export { ListTableTool } from "./ListTableTool.js";
|
|
14
|
+
export { ProfileTableTool } from "./ProfileTableTool.js";
|
|
15
|
+
export { ReadDataTool } from "./ReadDataTool.js";
|
|
16
|
+
export { RelationshipInspectorTool } from "./RelationshipInspectorTool.js";
|
|
17
|
+
export { RunScriptTool } from "./RunScriptTool.js";
|
|
18
|
+
export { SearchSchemaTool } from "./SearchSchemaTool.js";
|
|
19
|
+
export { TestConnectionTool } from "./TestConnectionTool.js";
|
|
20
|
+
export { UpdateDataTool } from "./UpdateDataTool.js";
|
|
21
|
+
export { ValidateEnvironmentConfigTool } from "./ValidateEnvironmentConfigTool.js";
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
export type TierLevel = "reader" | "writer" | "admin";
|
|
3
|
+
export interface McpServerConfig {
|
|
4
|
+
/** Display name shown to MCP clients, e.g. "mssql-mcp-reader" */
|
|
5
|
+
name: string;
|
|
6
|
+
/** SemVer string, e.g. "0.2.0" */
|
|
7
|
+
version: string;
|
|
8
|
+
/** Which tool-set tier to expose */
|
|
9
|
+
tier: TierLevel;
|
|
10
|
+
}
|
|
11
|
+
export type IntentCategory = "data_read" | "data_write" | "schema_discovery" | "schema_change" | "metadata";
|
|
12
|
+
export interface RunnableTool extends Tool {
|
|
13
|
+
run: (args: any) => Promise<any>;
|
|
14
|
+
}
|
|
15
|
+
export interface ToolRoutingConfig {
|
|
16
|
+
tool: RunnableTool;
|
|
17
|
+
name: string;
|
|
18
|
+
intents: IntentCategory[];
|
|
19
|
+
keywords?: string[];
|
|
20
|
+
requiredArgs?: string[];
|
|
21
|
+
mutatesData?: boolean;
|
|
22
|
+
schemaChange?: boolean;
|
|
23
|
+
baseScore?: number;
|
|
24
|
+
requiresConfirmation?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface IntentRouterOptions {
|
|
27
|
+
tools: ToolRoutingConfig[];
|
|
28
|
+
allowMutations: boolean;
|
|
29
|
+
requireConfirmationForMutations: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface RoutingCandidate {
|
|
32
|
+
config: ToolRoutingConfig;
|
|
33
|
+
score: number;
|
|
34
|
+
reasons: string[];
|
|
35
|
+
}
|
|
36
|
+
export interface RouteParams {
|
|
37
|
+
prompt: string;
|
|
38
|
+
toolArguments?: Record<string, any>;
|
|
39
|
+
confirmIntent?: boolean;
|
|
40
|
+
preferredToolName?: string;
|
|
41
|
+
environment?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface RouteResult {
|
|
44
|
+
success: boolean;
|
|
45
|
+
routedTool?: string;
|
|
46
|
+
intent?: IntentCategory;
|
|
47
|
+
reasoning?: string[];
|
|
48
|
+
toolResult?: any;
|
|
49
|
+
message?: string;
|
|
50
|
+
error?: string;
|
|
51
|
+
selectedEnvironment?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface WrapToolRunOptions {
|
|
54
|
+
environmentManager: import("./config/EnvironmentManager.js").EnvironmentManager;
|
|
55
|
+
sessionId: string;
|
|
56
|
+
serverVersion: string;
|
|
57
|
+
mutatingToolNames: Set<string>;
|
|
58
|
+
approvalExemptTools: Set<string>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAI1D,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAItD,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,IAAI,EAAE,SAAS,CAAC;CACjB;AAID,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,YAAY,GACZ,kBAAkB,GAClB,eAAe,GACf,UAAU,CAAC;AAEf,MAAM,WAAW,YAAa,SAAQ,IAAI;IACxC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,+BAA+B,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAID,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,OAAO,gCAAgC,EAAE,kBAAkB,CAAC;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAClC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@connorbritain/mssql-mcp-core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Shared core library for MSSQL MCP servers - tools, config, routing, and server harness",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mcp",
|
|
7
|
+
"sql-server",
|
|
8
|
+
"mssql",
|
|
9
|
+
"database",
|
|
10
|
+
"ai",
|
|
11
|
+
"claude",
|
|
12
|
+
"windsurf",
|
|
13
|
+
"model-context-protocol"
|
|
14
|
+
],
|
|
15
|
+
"author": "Connor England <connor.r.england@gmail.com>",
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/ConnorBritain/mssql-mcp-core.git"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://github.com/ConnorBritain/mssql-mcp-core",
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/ConnorBritain/mssql-mcp-core/issues"
|
|
24
|
+
},
|
|
25
|
+
"main": "dist/index.js",
|
|
26
|
+
"types": "dist/index.d.ts",
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"import": "./dist/index.js",
|
|
30
|
+
"types": "./dist/index.d.ts"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "npx tsc",
|
|
35
|
+
"prepare": "npm run build",
|
|
36
|
+
"watch": "tsc --watch"
|
|
37
|
+
},
|
|
38
|
+
"files": [
|
|
39
|
+
"dist"
|
|
40
|
+
],
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/mssql": "^9.1.7",
|
|
43
|
+
"@types/node": "^20.14.2",
|
|
44
|
+
"typescript": "^5.4.5"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@azure/identity": "^4.4.0",
|
|
48
|
+
"@modelcontextprotocol/sdk": "^1.23.0",
|
|
49
|
+
"dotenv": "^16.4.5",
|
|
50
|
+
"mssql": "^10.0.1"
|
|
51
|
+
},
|
|
52
|
+
"type": "module"
|
|
53
|
+
}
|