@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.
Files changed (129) hide show
  1. package/dist/audit/AuditLogger.d.ts +37 -0
  2. package/dist/audit/AuditLogger.d.ts.map +1 -0
  3. package/dist/audit/AuditLogger.js +145 -0
  4. package/dist/audit/AuditLogger.js.map +1 -0
  5. package/dist/config/EnvironmentManager.d.ts +75 -0
  6. package/dist/config/EnvironmentManager.d.ts.map +1 -0
  7. package/dist/config/EnvironmentManager.js +305 -0
  8. package/dist/config/EnvironmentManager.js.map +1 -0
  9. package/dist/config/ScriptManager.d.ts +69 -0
  10. package/dist/config/ScriptManager.d.ts.map +1 -0
  11. package/dist/config/ScriptManager.js +166 -0
  12. package/dist/config/ScriptManager.js.map +1 -0
  13. package/dist/config/SecretResolver.d.ts +66 -0
  14. package/dist/config/SecretResolver.d.ts.map +1 -0
  15. package/dist/config/SecretResolver.js +230 -0
  16. package/dist/config/SecretResolver.js.map +1 -0
  17. package/dist/index.d.ts +14 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +17 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/routing/IntentRouter.d.ts +17 -0
  22. package/dist/routing/IntentRouter.d.ts.map +1 -0
  23. package/dist/routing/IntentRouter.js +243 -0
  24. package/dist/routing/IntentRouter.js.map +1 -0
  25. package/dist/server/createMcpServer.d.ts +7 -0
  26. package/dist/server/createMcpServer.d.ts.map +1 -0
  27. package/dist/server/createMcpServer.js +100 -0
  28. package/dist/server/createMcpServer.js.map +1 -0
  29. package/dist/server/toolsets.d.ts +42 -0
  30. package/dist/server/toolsets.d.ts.map +1 -0
  31. package/dist/server/toolsets.js +303 -0
  32. package/dist/server/toolsets.js.map +1 -0
  33. package/dist/server/wrapToolRun.d.ts +13 -0
  34. package/dist/server/wrapToolRun.d.ts.map +1 -0
  35. package/dist/server/wrapToolRun.js +102 -0
  36. package/dist/server/wrapToolRun.js.map +1 -0
  37. package/dist/shims.d.ts +2 -0
  38. package/dist/shims.d.ts.map +1 -0
  39. package/dist/shims.js +15 -0
  40. package/dist/shims.js.map +1 -0
  41. package/dist/tools/CreateIndexTool.d.ts +24 -0
  42. package/dist/tools/CreateIndexTool.d.ts.map +1 -0
  43. package/dist/tools/CreateIndexTool.js +64 -0
  44. package/dist/tools/CreateIndexTool.js.map +1 -0
  45. package/dist/tools/CreateTableTool.d.ts +12 -0
  46. package/dist/tools/CreateTableTool.d.ts.map +1 -0
  47. package/dist/tools/CreateTableTool.js +49 -0
  48. package/dist/tools/CreateTableTool.js.map +1 -0
  49. package/dist/tools/DeleteDataTool.d.ts +56 -0
  50. package/dist/tools/DeleteDataTool.d.ts.map +1 -0
  51. package/dist/tools/DeleteDataTool.js +103 -0
  52. package/dist/tools/DeleteDataTool.js.map +1 -0
  53. package/dist/tools/DescribeTableTool.d.ts +32 -0
  54. package/dist/tools/DescribeTableTool.d.ts.map +1 -0
  55. package/dist/tools/DescribeTableTool.js +116 -0
  56. package/dist/tools/DescribeTableTool.js.map +1 -0
  57. package/dist/tools/DropTableTool.d.ts +12 -0
  58. package/dist/tools/DropTableTool.d.ts.map +1 -0
  59. package/dist/tools/DropTableTool.js +37 -0
  60. package/dist/tools/DropTableTool.js.map +1 -0
  61. package/dist/tools/ExplainQueryTool.d.ts +24 -0
  62. package/dist/tools/ExplainQueryTool.d.ts.map +1 -0
  63. package/dist/tools/ExplainQueryTool.js +98 -0
  64. package/dist/tools/ExplainQueryTool.js.map +1 -0
  65. package/dist/tools/InsertDataTool.d.ts +17 -0
  66. package/dist/tools/InsertDataTool.d.ts.map +1 -0
  67. package/dist/tools/InsertDataTool.js +102 -0
  68. package/dist/tools/InsertDataTool.js.map +1 -0
  69. package/dist/tools/InspectDependenciesTool.d.ts +46 -0
  70. package/dist/tools/InspectDependenciesTool.d.ts.map +1 -0
  71. package/dist/tools/InspectDependenciesTool.js +215 -0
  72. package/dist/tools/InspectDependenciesTool.js.map +1 -0
  73. package/dist/tools/ListDatabasesTool.d.ts +27 -0
  74. package/dist/tools/ListDatabasesTool.d.ts.map +1 -0
  75. package/dist/tools/ListDatabasesTool.js +107 -0
  76. package/dist/tools/ListDatabasesTool.js.map +1 -0
  77. package/dist/tools/ListEnvironmentsTool.d.ts +49 -0
  78. package/dist/tools/ListEnvironmentsTool.d.ts.map +1 -0
  79. package/dist/tools/ListEnvironmentsTool.js +73 -0
  80. package/dist/tools/ListEnvironmentsTool.js.map +1 -0
  81. package/dist/tools/ListScriptsTool.d.ts +41 -0
  82. package/dist/tools/ListScriptsTool.d.ts.map +1 -0
  83. package/dist/tools/ListScriptsTool.js +86 -0
  84. package/dist/tools/ListScriptsTool.js.map +1 -0
  85. package/dist/tools/ListTableTool.d.ts +24 -0
  86. package/dist/tools/ListTableTool.d.ts.map +1 -0
  87. package/dist/tools/ListTableTool.js +85 -0
  88. package/dist/tools/ListTableTool.js.map +1 -0
  89. package/dist/tools/ProfileTableTool.d.ts +78 -0
  90. package/dist/tools/ProfileTableTool.d.ts.map +1 -0
  91. package/dist/tools/ProfileTableTool.js +373 -0
  92. package/dist/tools/ProfileTableTool.js.map +1 -0
  93. package/dist/tools/ReadDataTool.d.ts +61 -0
  94. package/dist/tools/ReadDataTool.d.ts.map +1 -0
  95. package/dist/tools/ReadDataTool.js +299 -0
  96. package/dist/tools/ReadDataTool.js.map +1 -0
  97. package/dist/tools/RelationshipInspectorTool.d.ts +46 -0
  98. package/dist/tools/RelationshipInspectorTool.d.ts.map +1 -0
  99. package/dist/tools/RelationshipInspectorTool.js +156 -0
  100. package/dist/tools/RelationshipInspectorTool.js.map +1 -0
  101. package/dist/tools/RunScriptTool.d.ts +214 -0
  102. package/dist/tools/RunScriptTool.d.ts.map +1 -0
  103. package/dist/tools/RunScriptTool.js +186 -0
  104. package/dist/tools/RunScriptTool.js.map +1 -0
  105. package/dist/tools/SearchSchemaTool.d.ts +88 -0
  106. package/dist/tools/SearchSchemaTool.d.ts.map +1 -0
  107. package/dist/tools/SearchSchemaTool.js +237 -0
  108. package/dist/tools/SearchSchemaTool.js.map +1 -0
  109. package/dist/tools/TestConnectionTool.d.ts +38 -0
  110. package/dist/tools/TestConnectionTool.d.ts.map +1 -0
  111. package/dist/tools/TestConnectionTool.js +156 -0
  112. package/dist/tools/TestConnectionTool.js.map +1 -0
  113. package/dist/tools/UpdateDataTool.d.ts +61 -0
  114. package/dist/tools/UpdateDataTool.d.ts.map +1 -0
  115. package/dist/tools/UpdateDataTool.js +117 -0
  116. package/dist/tools/UpdateDataTool.js.map +1 -0
  117. package/dist/tools/ValidateEnvironmentConfigTool.d.ts +51 -0
  118. package/dist/tools/ValidateEnvironmentConfigTool.d.ts.map +1 -0
  119. package/dist/tools/ValidateEnvironmentConfigTool.js +320 -0
  120. package/dist/tools/ValidateEnvironmentConfigTool.js.map +1 -0
  121. package/dist/tools/index.d.ts +21 -0
  122. package/dist/tools/index.d.ts.map +1 -0
  123. package/dist/tools/index.js +22 -0
  124. package/dist/tools/index.js.map +1 -0
  125. package/dist/types.d.ts +60 -0
  126. package/dist/types.d.ts.map +1 -0
  127. package/dist/types.js +2 -0
  128. package/dist/types.js.map +1 -0
  129. package/package.json +53 -0
@@ -0,0 +1,243 @@
1
+ import { getEnvironmentManager } from "../config/EnvironmentManager.js";
2
+ export class IntentRouter {
3
+ constructor(options) {
4
+ this.tools = options.tools;
5
+ this.allowMutations = options.allowMutations;
6
+ this.requireConfirmationForMutations = options.requireConfirmationForMutations;
7
+ }
8
+ async route(params) {
9
+ const prompt = typeof params.prompt === "string" ? params.prompt.trim() : "";
10
+ if (!prompt) {
11
+ return {
12
+ success: false,
13
+ message: "Prompt is required to route intent.",
14
+ error: "MISSING_PROMPT",
15
+ };
16
+ }
17
+ const toolArguments = this.normalizeArguments(params.toolArguments ?? {});
18
+ const confirmIntent = Boolean(params.confirmIntent);
19
+ const preferredToolName = params.preferredToolName;
20
+ const normalizedPrompt = prompt.toLowerCase();
21
+ // Infer environment from prompt if not explicitly provided
22
+ const environment = params.environment || this.inferEnvironment(normalizedPrompt);
23
+ if (environment) {
24
+ toolArguments.environment = environment;
25
+ }
26
+ const inferredIntent = this.inferIntent(normalizedPrompt, toolArguments);
27
+ const eligibleTools = this.tools.filter((tool) => this.isToolEligible(tool));
28
+ const candidates = eligibleTools
29
+ .map((tool) => this.scoreTool(tool, normalizedPrompt, toolArguments, inferredIntent, preferredToolName))
30
+ .filter((candidate) => candidate.score > Number.NEGATIVE_INFINITY)
31
+ .sort((a, b) => b.score - a.score);
32
+ const bestCandidate = candidates[0];
33
+ if (!bestCandidate || bestCandidate.score <= 0) {
34
+ return {
35
+ success: false,
36
+ message: "Unable to determine an appropriate SQL tool for the provided prompt. Try specifying the desired action more concretely (e.g., 'list tables', 'describe table X', 'run SELECT ...').",
37
+ error: "NO_TOOL_MATCH",
38
+ };
39
+ }
40
+ const missingArgs = this.getMissingArguments(bestCandidate.config, toolArguments);
41
+ if (missingArgs.length) {
42
+ return {
43
+ success: false,
44
+ routedTool: bestCandidate.config.name,
45
+ message: `Selected tool '${bestCandidate.config.name}' requires argument(s): ${missingArgs.join(", ")}. Provide them in the request arguments.`,
46
+ error: "MISSING_ARGUMENTS",
47
+ };
48
+ }
49
+ const requiresConfirmation = (bestCandidate.config.requiresConfirmation ||
50
+ bestCandidate.config.mutatesData ||
51
+ bestCandidate.config.schemaChange) &&
52
+ this.requireConfirmationForMutations;
53
+ if (requiresConfirmation && !confirmIntent) {
54
+ return {
55
+ success: false,
56
+ routedTool: bestCandidate.config.name,
57
+ message: "This operation modifies data or schema. Re-run with confirmIntent: true to proceed.",
58
+ error: "CONFIRMATION_REQUIRED",
59
+ };
60
+ }
61
+ try {
62
+ const result = await bestCandidate.config.tool.run(toolArguments);
63
+ return {
64
+ success: true,
65
+ routedTool: bestCandidate.config.name,
66
+ intent: inferredIntent,
67
+ reasoning: bestCandidate.reasons,
68
+ toolResult: result,
69
+ selectedEnvironment: environment,
70
+ };
71
+ }
72
+ catch (error) {
73
+ return {
74
+ success: false,
75
+ routedTool: bestCandidate.config.name,
76
+ message: `Routed tool '${bestCandidate.config.name}' failed: ${error}`,
77
+ error: "ROUTED_TOOL_FAILED",
78
+ selectedEnvironment: environment,
79
+ };
80
+ }
81
+ }
82
+ inferEnvironment(prompt) {
83
+ const envManager = getEnvironmentManager();
84
+ const environments = envManager.listEnvironments();
85
+ for (const env of environments) {
86
+ const patterns = [
87
+ new RegExp(`\\b${env.name}\\b`, "i"),
88
+ new RegExp(`\\b${env.name.replace(/-/g, "\\s")}\\b`, "i"),
89
+ ];
90
+ for (const pattern of patterns) {
91
+ if (pattern.test(prompt)) {
92
+ return env.name;
93
+ }
94
+ }
95
+ }
96
+ const envKeywords = {
97
+ prod: ["production", "prod", "live"],
98
+ staging: ["staging", "stage", "uat"],
99
+ dev: ["development", "dev", "local"],
100
+ };
101
+ for (const [envSuffix, keywords] of Object.entries(envKeywords)) {
102
+ for (const keyword of keywords) {
103
+ if (prompt.includes(keyword)) {
104
+ const matchingEnv = environments.find((e) => e.name.toLowerCase().includes(envSuffix));
105
+ if (matchingEnv) {
106
+ return matchingEnv.name;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ return undefined;
112
+ }
113
+ normalizeArguments(args) {
114
+ if (!args || typeof args !== "object") {
115
+ return {};
116
+ }
117
+ const cloned = {};
118
+ for (const [key, value] of Object.entries(args)) {
119
+ if (value !== undefined) {
120
+ cloned[key] = value;
121
+ }
122
+ }
123
+ return cloned;
124
+ }
125
+ isToolEligible(tool) {
126
+ if (this.allowMutations) {
127
+ return true;
128
+ }
129
+ return !tool.mutatesData && !tool.schemaChange;
130
+ }
131
+ inferIntent(prompt, toolArguments) {
132
+ const detectors = [
133
+ {
134
+ intent: "schema_change",
135
+ keywords: ["create table", "drop table", "create index", "drop index", "alter", "ddl"],
136
+ },
137
+ {
138
+ intent: "data_write",
139
+ keywords: ["update", "insert", "delete", "fix", "modify", "change", "correct"],
140
+ },
141
+ {
142
+ intent: "metadata",
143
+ keywords: ["profile", "sample", "statistics", "distribution", "quality"],
144
+ },
145
+ {
146
+ intent: "schema_discovery",
147
+ keywords: ["describe", "columns", "list tables", "show tables", "schema", "search"],
148
+ },
149
+ {
150
+ intent: "data_read",
151
+ keywords: ["select", "query", "fetch", "count", "report", "view"],
152
+ },
153
+ ];
154
+ for (const detector of detectors) {
155
+ if (detector.keywords.some((keyword) => prompt.includes(keyword))) {
156
+ return detector.intent;
157
+ }
158
+ }
159
+ const sqlSnippet = this.extractSqlSnippet(toolArguments);
160
+ if (sqlSnippet) {
161
+ if (sqlSnippet.startsWith("select")) {
162
+ return "data_read";
163
+ }
164
+ if (sqlSnippet.startsWith("update") || sqlSnippet.startsWith("delete")) {
165
+ return "data_write";
166
+ }
167
+ if (sqlSnippet.startsWith("insert")) {
168
+ return "data_write";
169
+ }
170
+ if (sqlSnippet.startsWith("create") || sqlSnippet.startsWith("drop")) {
171
+ return "schema_change";
172
+ }
173
+ }
174
+ if (toolArguments?.tablePattern || toolArguments?.columnPattern) {
175
+ return "schema_discovery";
176
+ }
177
+ return "data_read";
178
+ }
179
+ extractSqlSnippet(args) {
180
+ const sqlCandidate = typeof args?.query === "string" ? args.query : typeof args?.sql === "string" ? args.sql : null;
181
+ return sqlCandidate?.trim().toLowerCase() ?? null;
182
+ }
183
+ scoreTool(config, prompt, toolArguments, inferredIntent, preferredToolName) {
184
+ let score = config.baseScore ?? 0.5;
185
+ const reasons = [];
186
+ if (config.intents.includes(inferredIntent)) {
187
+ score += 5;
188
+ reasons.push(`intent match (${inferredIntent})`);
189
+ }
190
+ if (preferredToolName && config.name === preferredToolName) {
191
+ score += 3;
192
+ reasons.push("preferred tool match");
193
+ }
194
+ if (config.keywords?.length) {
195
+ for (const keyword of config.keywords) {
196
+ if (prompt.includes(keyword)) {
197
+ score += 2;
198
+ reasons.push(`keyword '${keyword}'`);
199
+ }
200
+ }
201
+ }
202
+ if (config.requiredArgs?.length) {
203
+ for (const arg of config.requiredArgs) {
204
+ if (this.hasArgument(toolArguments, arg)) {
205
+ score += 1;
206
+ }
207
+ else {
208
+ score -= 1;
209
+ }
210
+ }
211
+ }
212
+ if ((config.mutatesData || config.schemaChange) && !this.allowMutations) {
213
+ score = Number.NEGATIVE_INFINITY;
214
+ }
215
+ return { config, score, reasons };
216
+ }
217
+ hasArgument(args, key) {
218
+ if (!args) {
219
+ return false;
220
+ }
221
+ const value = args[key];
222
+ if (value === null || value === undefined) {
223
+ return false;
224
+ }
225
+ if (typeof value === "string") {
226
+ return value.trim().length > 0;
227
+ }
228
+ if (Array.isArray(value)) {
229
+ return value.length > 0;
230
+ }
231
+ if (typeof value === "object") {
232
+ return Object.keys(value).length > 0;
233
+ }
234
+ return true;
235
+ }
236
+ getMissingArguments(config, args) {
237
+ if (!config.requiredArgs || config.requiredArgs.length === 0) {
238
+ return [];
239
+ }
240
+ return config.requiredArgs.filter((arg) => !this.hasArgument(args, arg));
241
+ }
242
+ }
243
+ //# sourceMappingURL=IntentRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntentRouter.js","sourceRoot":"","sources":["../../src/routing/IntentRouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { McpServerConfig } from "../types.js";
2
+ /**
3
+ * Start an MCP server with the given tier configuration.
4
+ * This is the single entry point that reader/writer/server all call.
5
+ */
6
+ export declare function startMcpServer(config: McpServerConfig): Promise<void>;
7
+ //# sourceMappingURL=createMcpServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMcpServer.d.ts","sourceRoot":"","sources":["../../src/server/createMcpServer.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,aAAa,CAAC;AAiBjE;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqG3E"}
@@ -0,0 +1,100 @@
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
4
+ import * as crypto from "crypto";
5
+ import { initShims } from "../shims.js";
6
+ import { getEnvironmentManager } from "../config/EnvironmentManager.js";
7
+ import { IntentRouter } from "../routing/IntentRouter.js";
8
+ import { wrapToolRun } from "./wrapToolRun.js";
9
+ import { createAllToolInstances, getReaderTools, getWriterTools, getAdminTools, buildToolRegistry, READER_MUTATING_TOOLS, WRITER_MUTATING_TOOLS, ADMIN_MUTATING_TOOLS, READER_APPROVAL_EXEMPT, WRITER_APPROVAL_EXEMPT, ADMIN_APPROVAL_EXEMPT, } from "./toolsets.js";
10
+ /**
11
+ * Start an MCP server with the given tier configuration.
12
+ * This is the single entry point that reader/writer/server all call.
13
+ */
14
+ export async function startMcpServer(config) {
15
+ // 1. Runtime shims (SlowBuffer, dotenv)
16
+ initShims();
17
+ // 2. Session ID for audit correlation
18
+ const sessionId = crypto.randomUUID();
19
+ // 3. Environment manager (reads ENVIRONMENTS_CONFIG_PATH, etc.)
20
+ const environmentManager = getEnvironmentManager();
21
+ // 4. Create all tool instances
22
+ const tools = createAllToolInstances();
23
+ // 5. Select tools and policies based on tier
24
+ let exposedTools;
25
+ let mutatingToolNames;
26
+ let approvalExemptTools;
27
+ switch (config.tier) {
28
+ case "reader":
29
+ exposedTools = getReaderTools(tools);
30
+ mutatingToolNames = READER_MUTATING_TOOLS;
31
+ approvalExemptTools = READER_APPROVAL_EXEMPT;
32
+ break;
33
+ case "writer":
34
+ exposedTools = getWriterTools(tools);
35
+ mutatingToolNames = WRITER_MUTATING_TOOLS;
36
+ approvalExemptTools = WRITER_APPROVAL_EXEMPT;
37
+ break;
38
+ case "admin":
39
+ exposedTools = getAdminTools(tools);
40
+ mutatingToolNames = ADMIN_MUTATING_TOOLS;
41
+ approvalExemptTools = ADMIN_APPROVAL_EXEMPT;
42
+ break;
43
+ }
44
+ // 6. Wrap all exposed tools with policy enforcement + pool injection
45
+ for (const tool of exposedTools) {
46
+ wrapToolRun(tool, {
47
+ environmentManager,
48
+ sessionId,
49
+ serverVersion: config.version,
50
+ mutatingToolNames,
51
+ approvalExemptTools,
52
+ });
53
+ }
54
+ // 7. Build intent router (optional, used internally — not exposed as a tool)
55
+ const isReadOnly = config.tier === "reader" || process.env.READONLY === "true";
56
+ const requireMutationConfirmation = process.env.REQUIRE_MUTATION_CONFIRMATION !== "false";
57
+ const toolRegistry = buildToolRegistry(tools);
58
+ const _intentRouter = new IntentRouter({
59
+ tools: toolRegistry,
60
+ allowMutations: !isReadOnly,
61
+ requireConfirmationForMutations: requireMutationConfirmation,
62
+ });
63
+ // 8. Build a Map for fast tool dispatch
64
+ const toolMap = new Map();
65
+ for (const tool of exposedTools) {
66
+ toolMap.set(tool.name, tool);
67
+ }
68
+ // 9. Create MCP server
69
+ const server = new Server({ name: config.name, version: config.version }, { capabilities: { tools: {} } });
70
+ // 10. Register request handlers
71
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
72
+ tools: exposedTools,
73
+ }));
74
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
75
+ const { name, arguments: args } = request.params;
76
+ try {
77
+ const tool = toolMap.get(name);
78
+ if (!tool) {
79
+ return {
80
+ content: [{ type: "text", text: `Unknown tool: ${name}` }],
81
+ isError: true,
82
+ };
83
+ }
84
+ const result = await tool.run(args);
85
+ return {
86
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
87
+ };
88
+ }
89
+ catch (error) {
90
+ return {
91
+ content: [{ type: "text", text: `Error occurred: ${error}` }],
92
+ isError: true,
93
+ };
94
+ }
95
+ });
96
+ // 11. Connect transport and start
97
+ const transport = new StdioServerTransport();
98
+ await server.connect(transport);
99
+ }
100
+ //# sourceMappingURL=createMcpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMcpServer.js","sourceRoot":"","sources":["../../src/server/createMcpServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { RunnableTool, ToolRoutingConfig } from "../types.js";
2
+ export declare function createAllToolInstances(): {
3
+ createIndexTool: RunnableTool;
4
+ createTableTool: RunnableTool;
5
+ deleteDataTool: RunnableTool;
6
+ describeTableTool: RunnableTool;
7
+ dropTableTool: RunnableTool;
8
+ explainQueryTool: RunnableTool;
9
+ insertDataTool: RunnableTool;
10
+ inspectDependenciesTool: RunnableTool;
11
+ listDatabasesTool: RunnableTool;
12
+ listEnvironmentsTool: RunnableTool;
13
+ listScriptsTool: RunnableTool;
14
+ listTableTool: RunnableTool;
15
+ profileTableTool: RunnableTool;
16
+ readDataTool: RunnableTool;
17
+ relationshipInspectorTool: RunnableTool;
18
+ runScriptTool: RunnableTool;
19
+ searchSchemaTool: RunnableTool;
20
+ testConnectionTool: RunnableTool;
21
+ updateDataTool: RunnableTool;
22
+ validateEnvironmentConfigTool: RunnableTool;
23
+ };
24
+ type AllTools = ReturnType<typeof createAllToolInstances>;
25
+ /** 14 read-only tools exposed by the reader tier */
26
+ export declare function getReaderTools(t: AllTools): RunnableTool[];
27
+ /** 17 tools: reader tools + insert/delete/update */
28
+ export declare function getWriterTools(t: AllTools): RunnableTool[];
29
+ /** 20 tools: writer tools + create table/index, drop table */
30
+ export declare function getAdminTools(t: AllTools): RunnableTool[];
31
+ /** Reader: no mutations */
32
+ export declare const READER_MUTATING_TOOLS: Set<string>;
33
+ /** Writer: data mutation only */
34
+ export declare const WRITER_MUTATING_TOOLS: Set<string>;
35
+ /** Admin/server: data mutation + DDL */
36
+ export declare const ADMIN_MUTATING_TOOLS: Set<string>;
37
+ export declare const READER_APPROVAL_EXEMPT: Set<string>;
38
+ export declare const WRITER_APPROVAL_EXEMPT: Set<string>;
39
+ export declare const ADMIN_APPROVAL_EXEMPT: Set<string>;
40
+ export declare function buildToolRegistry(t: AllTools): ToolRoutingConfig[];
41
+ export {};
42
+ //# sourceMappingURL=toolsets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolsets.d.ts","sourceRoot":"","sources":["../../src/server/toolsets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAyBnE,wBAAgB,sBAAsB;qBAEQ,YAAY;qBACZ,YAAY;oBACd,YAAY;uBACN,YAAY;mBACpB,YAAY;sBACN,YAAY;oBAChB,YAAY;6BACM,YAAY;uBACxB,YAAY;0BACN,YAAY;qBACtB,YAAY;mBAChB,YAAY;sBACN,YAAY;kBACpB,YAAY;+BACc,YAAY;mBACpC,YAAY;sBACN,YAAY;wBACR,YAAY;oBACpB,YAAY;mCACkB,YAAY;EAErF;AAED,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAI1D,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,CAiB1D;AAED,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,CAO1D;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,CAOzD;AAID,2BAA2B;AAC3B,eAAO,MAAM,qBAAqB,aAAoB,CAAC;AAEvD,iCAAiC;AACjC,eAAO,MAAM,qBAAqB,aAIhC,CAAC;AAEH,wCAAwC;AACxC,eAAO,MAAM,oBAAoB,aAO/B,CAAC;AAIH,eAAO,MAAM,sBAAsB,aAejC,CAAC;AAEH,eAAO,MAAM,sBAAsB,aAWjC,CAAC;AAEH,eAAO,MAAM,qBAAqB,aAchC,CAAC;AAIH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,GAAG,iBAAiB,EAAE,CA2JlE"}