@connorbritain/mssql-mcp-reader 0.1.0 → 0.2.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 (72) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.js +6 -564
  3. package/dist/index.js.map +1 -1
  4. package/package.json +13 -6
  5. package/dist/audit/AuditLogger.d.ts +0 -37
  6. package/dist/audit/AuditLogger.d.ts.map +0 -1
  7. package/dist/audit/AuditLogger.js +0 -145
  8. package/dist/audit/AuditLogger.js.map +0 -1
  9. package/dist/config/EnvironmentManager.d.ts +0 -70
  10. package/dist/config/EnvironmentManager.d.ts.map +0 -1
  11. package/dist/config/EnvironmentManager.js +0 -301
  12. package/dist/config/EnvironmentManager.js.map +0 -1
  13. package/dist/config/ScriptManager.d.ts +0 -69
  14. package/dist/config/ScriptManager.d.ts.map +0 -1
  15. package/dist/config/ScriptManager.js +0 -166
  16. package/dist/config/ScriptManager.js.map +0 -1
  17. package/dist/tools/DescribeTableTool.d.ts +0 -32
  18. package/dist/tools/DescribeTableTool.d.ts.map +0 -1
  19. package/dist/tools/DescribeTableTool.js +0 -108
  20. package/dist/tools/DescribeTableTool.js.map +0 -1
  21. package/dist/tools/ExplainQueryTool.d.ts +0 -24
  22. package/dist/tools/ExplainQueryTool.d.ts.map +0 -1
  23. package/dist/tools/ExplainQueryTool.js +0 -98
  24. package/dist/tools/ExplainQueryTool.js.map +0 -1
  25. package/dist/tools/InspectDependenciesTool.d.ts +0 -45
  26. package/dist/tools/InspectDependenciesTool.d.ts.map +0 -1
  27. package/dist/tools/InspectDependenciesTool.js +0 -215
  28. package/dist/tools/InspectDependenciesTool.js.map +0 -1
  29. package/dist/tools/ListDatabasesTool.d.ts +0 -27
  30. package/dist/tools/ListDatabasesTool.d.ts.map +0 -1
  31. package/dist/tools/ListDatabasesTool.js +0 -107
  32. package/dist/tools/ListDatabasesTool.js.map +0 -1
  33. package/dist/tools/ListEnvironmentsTool.d.ts +0 -49
  34. package/dist/tools/ListEnvironmentsTool.d.ts.map +0 -1
  35. package/dist/tools/ListEnvironmentsTool.js +0 -73
  36. package/dist/tools/ListEnvironmentsTool.js.map +0 -1
  37. package/dist/tools/ListScriptsTool.d.ts +0 -41
  38. package/dist/tools/ListScriptsTool.d.ts.map +0 -1
  39. package/dist/tools/ListScriptsTool.js +0 -86
  40. package/dist/tools/ListScriptsTool.js.map +0 -1
  41. package/dist/tools/ListTableTool.d.ts +0 -24
  42. package/dist/tools/ListTableTool.d.ts.map +0 -1
  43. package/dist/tools/ListTableTool.js +0 -85
  44. package/dist/tools/ListTableTool.js.map +0 -1
  45. package/dist/tools/ProfileTableTool.d.ts +0 -78
  46. package/dist/tools/ProfileTableTool.d.ts.map +0 -1
  47. package/dist/tools/ProfileTableTool.js +0 -372
  48. package/dist/tools/ProfileTableTool.js.map +0 -1
  49. package/dist/tools/ReadDataTool.d.ts +0 -61
  50. package/dist/tools/ReadDataTool.d.ts.map +0 -1
  51. package/dist/tools/ReadDataTool.js +0 -299
  52. package/dist/tools/ReadDataTool.js.map +0 -1
  53. package/dist/tools/RelationshipInspectorTool.d.ts +0 -46
  54. package/dist/tools/RelationshipInspectorTool.d.ts.map +0 -1
  55. package/dist/tools/RelationshipInspectorTool.js +0 -155
  56. package/dist/tools/RelationshipInspectorTool.js.map +0 -1
  57. package/dist/tools/RunScriptTool.d.ts +0 -215
  58. package/dist/tools/RunScriptTool.d.ts.map +0 -1
  59. package/dist/tools/RunScriptTool.js +0 -177
  60. package/dist/tools/RunScriptTool.js.map +0 -1
  61. package/dist/tools/SearchSchemaTool.d.ts +0 -88
  62. package/dist/tools/SearchSchemaTool.d.ts.map +0 -1
  63. package/dist/tools/SearchSchemaTool.js +0 -236
  64. package/dist/tools/SearchSchemaTool.js.map +0 -1
  65. package/dist/tools/TestConnectionTool.d.ts +0 -36
  66. package/dist/tools/TestConnectionTool.d.ts.map +0 -1
  67. package/dist/tools/TestConnectionTool.js +0 -155
  68. package/dist/tools/TestConnectionTool.js.map +0 -1
  69. package/dist/tools/ValidateEnvironmentConfigTool.d.ts +0 -37
  70. package/dist/tools/ValidateEnvironmentConfigTool.d.ts.map +0 -1
  71. package/dist/tools/ValidateEnvironmentConfigTool.js +0 -230
  72. package/dist/tools/ValidateEnvironmentConfigTool.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 MCP Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/dist/index.js CHANGED
@@ -1,569 +1,11 @@
1
1
  #!/usr/bin/env node
2
- // External imports
3
- import { Buffer } from "node:buffer";
4
- import * as dotenv from "dotenv";
5
- import sql from "mssql";
6
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
7
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
9
- // Node 21+ dropped the legacy global SlowBuffer. Some transitive deps (jsonwebtoken)
10
- // still reference it, so reintroduce a shim to keep compatibility with latest Node.
11
- if (!globalThis.SlowBuffer) {
12
- globalThis.SlowBuffer = Buffer.allocUnsafeSlow;
13
- }
14
- dotenv.config();
15
- // Internal imports - READ-ONLY TOOLS ONLY
16
- import { ReadDataTool } from "./tools/ReadDataTool.js";
17
- import { ListTableTool } from "./tools/ListTableTool.js";
18
- import { TestConnectionTool } from "./tools/TestConnectionTool.js";
19
- import { DescribeTableTool } from "./tools/DescribeTableTool.js";
20
- import { SearchSchemaTool } from "./tools/SearchSchemaTool.js";
21
- import { ProfileTableTool } from "./tools/ProfileTableTool.js";
22
- import { RelationshipInspectorTool } from "./tools/RelationshipInspectorTool.js";
23
- import { ExplainQueryTool } from "./tools/ExplainQueryTool.js";
24
- import { ListDatabasesTool } from "./tools/ListDatabasesTool.js";
25
- import { ListEnvironmentsTool } from "./tools/ListEnvironmentsTool.js";
26
- import { ValidateEnvironmentConfigTool } from "./tools/ValidateEnvironmentConfigTool.js";
27
- import { ListScriptsTool } from "./tools/ListScriptsTool.js";
28
- import { RunScriptTool } from "./tools/RunScriptTool.js";
29
- import { InspectDependenciesTool } from "./tools/InspectDependenciesTool.js";
30
- import { auditLogger } from "./audit/AuditLogger.js";
31
- import { getEnvironmentManager } from "./config/EnvironmentManager.js";
32
- import * as crypto from "crypto";
33
- // Generate a unique session ID for this server instance
34
- const SESSION_ID = crypto.randomUUID();
35
- class IntentRouter {
36
- constructor(options) {
37
- this.tools = options.tools;
38
- }
39
- async route(params) {
40
- const prompt = typeof params.prompt === "string" ? params.prompt.trim() : "";
41
- if (!prompt) {
42
- return {
43
- success: false,
44
- message: "Prompt is required to route intent.",
45
- error: "MISSING_PROMPT",
46
- };
47
- }
48
- const toolArguments = this.normalizeArguments(params.toolArguments ?? {});
49
- const preferredToolName = params.preferredToolName;
50
- const normalizedPrompt = prompt.toLowerCase();
51
- // Infer environment from prompt if not explicitly provided
52
- const environment = params.environment || this.inferEnvironment(normalizedPrompt);
53
- if (environment) {
54
- toolArguments.environment = environment;
55
- }
56
- const inferredIntent = this.inferIntent(normalizedPrompt, toolArguments);
57
- const candidates = this.tools
58
- .map((tool) => this.scoreTool(tool, normalizedPrompt, toolArguments, inferredIntent, preferredToolName))
59
- .filter((candidate) => candidate.score > Number.NEGATIVE_INFINITY)
60
- .sort((a, b) => b.score - a.score);
61
- const bestCandidate = candidates[0];
62
- if (!bestCandidate || bestCandidate.score <= 0) {
63
- return {
64
- success: false,
65
- 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 ...').",
66
- error: "NO_TOOL_MATCH",
67
- };
68
- }
69
- const missingArgs = this.getMissingArguments(bestCandidate.config, toolArguments);
70
- if (missingArgs.length) {
71
- return {
72
- success: false,
73
- routedTool: bestCandidate.config.name,
74
- message: `Selected tool '${bestCandidate.config.name}' requires argument(s): ${missingArgs.join(", ")}. Provide them in the request arguments.`,
75
- error: "MISSING_ARGUMENTS",
76
- };
77
- }
78
- try {
79
- const result = await bestCandidate.config.tool.run(toolArguments);
80
- return {
81
- success: true,
82
- routedTool: bestCandidate.config.name,
83
- intent: inferredIntent,
84
- reasoning: bestCandidate.reasons,
85
- toolResult: result,
86
- selectedEnvironment: environment,
87
- };
88
- }
89
- catch (error) {
90
- return {
91
- success: false,
92
- routedTool: bestCandidate.config.name,
93
- message: `Routed tool '${bestCandidate.config.name}' failed: ${error}`,
94
- error: "ROUTED_TOOL_FAILED",
95
- selectedEnvironment: environment,
96
- };
97
- }
98
- }
99
- inferEnvironment(prompt) {
100
- const envManager = getEnvironmentManager();
101
- const environments = envManager.listEnvironments();
102
- for (const env of environments) {
103
- const patterns = [
104
- new RegExp(`\\b${env.name}\\b`, "i"),
105
- new RegExp(`\\b${env.name.replace(/-/g, "\\s")}\\b`, "i"),
106
- ];
107
- for (const pattern of patterns) {
108
- if (pattern.test(prompt)) {
109
- return env.name;
110
- }
111
- }
112
- }
113
- const envKeywords = {
114
- prod: ["production", "prod", "live"],
115
- staging: ["staging", "stage", "uat"],
116
- dev: ["development", "dev", "local"],
117
- };
118
- for (const [envSuffix, keywords] of Object.entries(envKeywords)) {
119
- for (const keyword of keywords) {
120
- if (prompt.includes(keyword)) {
121
- const matchingEnv = environments.find((e) => e.name.toLowerCase().includes(envSuffix));
122
- if (matchingEnv) {
123
- return matchingEnv.name;
124
- }
125
- }
126
- }
127
- }
128
- return undefined;
129
- }
130
- normalizeArguments(args) {
131
- if (!args || typeof args !== "object") {
132
- return {};
133
- }
134
- const cloned = {};
135
- for (const [key, value] of Object.entries(args)) {
136
- if (value !== undefined) {
137
- cloned[key] = value;
138
- }
139
- }
140
- return cloned;
141
- }
142
- inferIntent(prompt, toolArguments) {
143
- const detectors = [
144
- {
145
- intent: "metadata",
146
- keywords: ["profile", "sample", "statistics", "distribution", "quality"],
147
- },
148
- {
149
- intent: "schema_discovery",
150
- keywords: ["describe", "columns", "list tables", "show tables", "schema", "search"],
151
- },
152
- {
153
- intent: "data_read",
154
- keywords: ["select", "query", "fetch", "count", "report", "view"],
155
- },
156
- ];
157
- for (const detector of detectors) {
158
- if (detector.keywords.some((keyword) => prompt.includes(keyword))) {
159
- return detector.intent;
160
- }
161
- }
162
- const sqlSnippet = this.extractSqlSnippet(toolArguments);
163
- if (sqlSnippet && sqlSnippet.startsWith("select")) {
164
- return "data_read";
165
- }
166
- if (toolArguments?.tablePattern || toolArguments?.columnPattern) {
167
- return "schema_discovery";
168
- }
169
- return "data_read";
170
- }
171
- extractSqlSnippet(args) {
172
- const sqlCandidate = typeof args?.query === "string" ? args.query : typeof args?.sql === "string" ? args.sql : null;
173
- return sqlCandidate?.trim().toLowerCase() ?? null;
174
- }
175
- scoreTool(config, prompt, toolArguments, inferredIntent, preferredToolName) {
176
- let score = config.baseScore ?? 0.5;
177
- const reasons = [];
178
- if (config.intents.includes(inferredIntent)) {
179
- score += 5;
180
- reasons.push(`intent match (${inferredIntent})`);
181
- }
182
- if (preferredToolName && config.name === preferredToolName) {
183
- score += 3;
184
- reasons.push("preferred tool match");
185
- }
186
- if (config.keywords?.length) {
187
- for (const keyword of config.keywords) {
188
- if (prompt.includes(keyword)) {
189
- score += 2;
190
- reasons.push(`keyword '${keyword}'`);
191
- }
192
- }
193
- }
194
- if (config.requiredArgs?.length) {
195
- for (const arg of config.requiredArgs) {
196
- if (this.hasArgument(toolArguments, arg)) {
197
- score += 1;
198
- }
199
- else {
200
- score -= 1;
201
- }
202
- }
203
- }
204
- return { config, score, reasons };
205
- }
206
- hasArgument(args, key) {
207
- if (!args) {
208
- return false;
209
- }
210
- const value = args[key];
211
- if (value === null || value === undefined) {
212
- return false;
213
- }
214
- if (typeof value === "string") {
215
- return value.trim().length > 0;
216
- }
217
- if (Array.isArray(value)) {
218
- return value.length > 0;
219
- }
220
- if (typeof value === "object") {
221
- return Object.keys(value).length > 0;
222
- }
223
- return true;
224
- }
225
- getMissingArguments(config, args) {
226
- if (!config.requiredArgs || config.requiredArgs.length === 0) {
227
- return [];
228
- }
229
- return config.requiredArgs.filter((arg) => !this.hasArgument(args, arg));
230
- }
231
- }
232
- // ─────────────────────────────────────────────────────────────────────────────
233
- // Initialize environment manager
234
- const environmentManager = getEnvironmentManager();
235
- // Instantiate READ-ONLY tools only
236
- const readDataTool = new ReadDataTool();
237
- const listTableTool = new ListTableTool();
238
- const listDatabasesTool = new ListDatabasesTool();
239
- const listEnvironmentsTool = new ListEnvironmentsTool();
240
- const validateEnvironmentConfigTool = new ValidateEnvironmentConfigTool();
241
- const listScriptsTool = new ListScriptsTool();
242
- const runScriptTool = new RunScriptTool();
243
- const inspectDependenciesTool = new InspectDependenciesTool();
244
- const describeTableTool = new DescribeTableTool();
245
- const searchSchemaTool = new SearchSchemaTool();
246
- const profileTableTool = new ProfileTableTool();
247
- const relationshipInspectorTool = new RelationshipInspectorTool();
248
- const testConnectionTool = new TestConnectionTool();
249
- const explainQueryTool = new ExplainQueryTool();
250
- const toolRegistry = [
251
- {
252
- tool: readDataTool,
253
- name: readDataTool.name,
254
- intents: ["data_read"],
255
- keywords: ["select", "query", "fetch", "report", "count"],
256
- requiredArgs: ["query"],
257
- baseScore: 2,
258
- },
259
- {
260
- tool: listTableTool,
261
- name: listTableTool.name,
262
- intents: ["schema_discovery"],
263
- keywords: ["list tables", "show tables", "tables"],
264
- baseScore: 1.5,
265
- },
266
- {
267
- tool: describeTableTool,
268
- name: describeTableTool.name,
269
- intents: ["schema_discovery"],
270
- keywords: ["describe", "columns", "structure"],
271
- requiredArgs: ["tableName"],
272
- baseScore: 1.5,
273
- },
274
- {
275
- tool: searchSchemaTool,
276
- name: searchSchemaTool.name,
277
- intents: ["schema_discovery"],
278
- keywords: ["search", "find", "look up"],
279
- baseScore: 1.5,
280
- },
281
- {
282
- tool: profileTableTool,
283
- name: profileTableTool.name,
284
- intents: ["metadata"],
285
- keywords: ["profile", "sample", "distribution"],
286
- requiredArgs: ["tableName"],
287
- },
288
- {
289
- tool: relationshipInspectorTool,
290
- name: relationshipInspectorTool.name,
291
- intents: ["metadata", "schema_discovery"],
292
- keywords: ["relationships", "foreign key", "references"],
293
- requiredArgs: ["tableName"],
294
- },
295
- {
296
- tool: testConnectionTool,
297
- name: testConnectionTool.name,
298
- intents: ["metadata"],
299
- keywords: ["test", "connection", "ping", "health"],
300
- baseScore: 1,
301
- },
302
- {
303
- tool: explainQueryTool,
304
- name: explainQueryTool.name,
305
- intents: ["metadata"],
306
- keywords: ["plan", "explain", "showplan", "estimate"],
307
- requiredArgs: ["query"],
308
- baseScore: 1,
309
- },
310
- {
311
- tool: listDatabasesTool,
312
- name: listDatabasesTool.name,
313
- intents: ["schema_discovery", "metadata"],
314
- keywords: ["databases", "list databases", "show databases", "dbs"],
315
- baseScore: 1.5,
316
- },
317
- {
318
- tool: listEnvironmentsTool,
319
- name: listEnvironmentsTool.name,
320
- intents: ["metadata"],
321
- keywords: ["environments", "list environments", "connections", "configs"],
322
- baseScore: 1.5,
323
- },
324
- {
325
- tool: validateEnvironmentConfigTool,
326
- name: validateEnvironmentConfigTool.name,
327
- intents: ["metadata"],
328
- keywords: ["validate", "check", "config", "configuration", "health"],
329
- baseScore: 1.5,
330
- },
331
- {
332
- tool: listScriptsTool,
333
- name: listScriptsTool.name,
334
- intents: ["metadata"],
335
- keywords: ["scripts", "list scripts", "templates", "named scripts"],
336
- baseScore: 1.5,
337
- },
338
- {
339
- tool: runScriptTool,
340
- name: runScriptTool.name,
341
- intents: ["data_read"],
342
- keywords: ["run script", "execute script", "template"],
343
- requiredArgs: ["scriptName"],
344
- baseScore: 1.5,
345
- },
346
- {
347
- tool: inspectDependenciesTool,
348
- name: inspectDependenciesTool.name,
349
- intents: ["schema_discovery", "metadata"],
350
- keywords: ["dependencies", "depends", "references", "impact", "what uses"],
351
- requiredArgs: ["objectName"],
352
- baseScore: 1.5,
353
- },
354
- ];
355
- const server = new Server({
2
+ import { startMcpServer } from "@connorbritain/mssql-mcp-core";
3
+ startMcpServer({
356
4
  name: "mssql-mcp-reader",
357
- version: "0.1.0",
358
- }, {
359
- capabilities: {
360
- tools: {},
361
- },
362
- });
363
- const intentRouter = new IntentRouter({
364
- tools: toolRegistry,
365
- });
366
- // All tools in reader are read-only
367
- const exposedTools = [
368
- readDataTool,
369
- listTableTool,
370
- listDatabasesTool,
371
- listEnvironmentsTool,
372
- validateEnvironmentConfigTool,
373
- listScriptsTool,
374
- runScriptTool,
375
- describeTableTool,
376
- searchSchemaTool,
377
- profileTableTool,
378
- relationshipInspectorTool,
379
- inspectDependenciesTool,
380
- testConnectionTool,
381
- explainQueryTool,
382
- ];
383
- // Request handlers
384
- server.setRequestHandler(ListToolsRequestSchema, async () => ({
385
- tools: exposedTools,
386
- }));
387
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
388
- const { name, arguments: args } = request.params;
389
- try {
390
- let result;
391
- switch (name) {
392
- case readDataTool.name:
393
- result = await readDataTool.run(args);
394
- break;
395
- case listTableTool.name:
396
- result = await listTableTool.run(args);
397
- break;
398
- case listDatabasesTool.name:
399
- result = await listDatabasesTool.run(args);
400
- break;
401
- case listEnvironmentsTool.name:
402
- result = await listEnvironmentsTool.run(args);
403
- break;
404
- case validateEnvironmentConfigTool.name:
405
- result = await validateEnvironmentConfigTool.run(args);
406
- break;
407
- case listScriptsTool.name:
408
- result = await listScriptsTool.run(args);
409
- break;
410
- case runScriptTool.name:
411
- result = await runScriptTool.run(args);
412
- break;
413
- case inspectDependenciesTool.name:
414
- result = await inspectDependenciesTool.run(args);
415
- break;
416
- case testConnectionTool.name:
417
- result = await testConnectionTool.run(args);
418
- break;
419
- case explainQueryTool.name:
420
- result = await explainQueryTool.run(args);
421
- break;
422
- case describeTableTool.name:
423
- if (!args || typeof args.tableName !== "string") {
424
- return {
425
- content: [{ type: "text", text: `Missing or invalid 'tableName' argument for describe_table tool.` }],
426
- isError: true,
427
- };
428
- }
429
- result = await describeTableTool.run(args);
430
- break;
431
- case searchSchemaTool.name:
432
- result = await searchSchemaTool.run(args ?? {});
433
- break;
434
- case profileTableTool.name:
435
- if (!args || typeof args.tableName !== "string") {
436
- return {
437
- content: [{ type: "text", text: `Missing or invalid 'tableName' argument for profile_table tool.` }],
438
- isError: true,
439
- };
440
- }
441
- result = await profileTableTool.run(args);
442
- break;
443
- case relationshipInspectorTool.name:
444
- if (!args || typeof args.tableName !== "string") {
445
- return {
446
- content: [{ type: "text", text: `Missing or invalid 'tableName' argument for inspect_relationships tool.` }],
447
- isError: true,
448
- };
449
- }
450
- result = await relationshipInspectorTool.run(args);
451
- break;
452
- default:
453
- return {
454
- content: [{ type: "text", text: `Unknown tool: ${name}` }],
455
- isError: true,
456
- };
457
- }
458
- return {
459
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
460
- };
461
- }
462
- catch (error) {
463
- return {
464
- content: [{ type: "text", text: `Error occurred: ${error}` }],
465
- isError: true,
466
- };
467
- }
468
- });
469
- // Server startup
470
- async function runServer() {
471
- try {
472
- const transport = new StdioServerTransport();
473
- await server.connect(transport);
474
- }
475
- catch (error) {
476
- console.error("Fatal error running server:", error);
477
- process.exit(1);
478
- }
479
- }
480
- runServer().catch((error) => {
481
- console.error("Fatal error running server:", error);
5
+ version: "0.2.0",
6
+ tier: "reader",
7
+ }).catch((e) => {
8
+ console.error("Fatal:", e);
482
9
  process.exit(1);
483
10
  });
484
- // All tools in reader are metadata/read-only, so no approval required
485
- const APPROVAL_EXEMPT_TOOLS = new Set([
486
- "list_tables",
487
- "list_databases",
488
- "list_environments",
489
- "validate_environment_config",
490
- "list_scripts",
491
- "describe_table",
492
- "test_connection",
493
- "search_schema",
494
- "inspect_relationships",
495
- "inspect_dependencies",
496
- "read_data",
497
- "profile_table",
498
- "explain_query",
499
- "run_script",
500
- ]);
501
- // Patch all tool handlers to ensure SQL connection, policy enforcement, and audit logging
502
- function wrapToolRun(tool) {
503
- const originalRun = tool.run.bind(tool);
504
- tool.run = async function (...args) {
505
- const startTime = Date.now();
506
- const rawArgs = (args[0] ?? {});
507
- const requestedEnvironment = typeof rawArgs.environment === "string" ? rawArgs.environment : undefined;
508
- const envConfig = environmentManager.getEnvironment(requestedEnvironment);
509
- // Build policy object from environment config
510
- const policy = {
511
- name: envConfig.name,
512
- readonly: true, // Reader is always read-only
513
- allowedTools: envConfig.allowedTools,
514
- deniedTools: envConfig.deniedTools,
515
- maxRowsDefault: envConfig.maxRowsDefault,
516
- requireApproval: envConfig.requireApproval ?? false,
517
- auditLevel: envConfig.auditLevel ?? "basic",
518
- };
519
- // Check denied tools policy
520
- if (policy.deniedTools && policy.deniedTools.length > 0 && policy.deniedTools.includes(tool.name)) {
521
- return {
522
- success: false,
523
- message: `Tool '${tool.name}' is explicitly denied in environment '${policy.name}'.`,
524
- error: "TOOL_DENIED",
525
- };
526
- }
527
- // Check allowed tools policy
528
- if (policy.allowedTools && policy.allowedTools.length > 0 && !policy.allowedTools.includes(tool.name)) {
529
- return {
530
- success: false,
531
- message: `Tool '${tool.name}' is not permitted in environment '${policy.name}'. Allowed tools: ${policy.allowedTools.join(", ")}.`,
532
- error: "TOOL_NOT_ALLOWED",
533
- };
534
- }
535
- // Enrich args with environment info and policy
536
- const toolArgs = {
537
- ...rawArgs,
538
- environment: policy.name,
539
- environmentPolicy: policy,
540
- };
541
- // Get connection for the specified or default environment
542
- const pool = await environmentManager.getConnection(policy.name);
543
- // Store the pool in global sql for tools that use sql directly
544
- sql.globalPool = pool;
545
- try {
546
- const result = await originalRun(toolArgs);
547
- const durationMs = Date.now() - startTime;
548
- // Audit log the successful invocation
549
- auditLogger.logToolInvocation(tool.name, toolArgs, result, durationMs, {
550
- sessionId: SESSION_ID,
551
- environment: policy.name,
552
- auditLevel: policy.auditLevel,
553
- });
554
- return result;
555
- }
556
- catch (error) {
557
- const durationMs = Date.now() - startTime;
558
- // Audit log the failed invocation
559
- auditLogger.logToolInvocation(tool.name, toolArgs, { success: false, error: String(error) }, durationMs, {
560
- sessionId: SESSION_ID,
561
- environment: policy.name,
562
- auditLevel: policy.auditLevel,
563
- });
564
- throw error;
565
- }
566
- };
567
- }
568
- [readDataTool, listTableTool, listDatabasesTool, listEnvironmentsTool, validateEnvironmentConfigTool, listScriptsTool, runScriptTool, inspectDependenciesTool, describeTableTool, searchSchemaTool, profileTableTool, relationshipInspectorTool, testConnectionTool, explainQueryTool].forEach(wrapToolRun);
569
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,cAAc,CAAC;IACb,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,QAAQ;CACf,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,18 @@
1
1
  {
2
2
  "name": "@connorbritain/mssql-mcp-reader",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Read-only MCP server for Microsoft SQL Server - schema discovery, profiling, and safe querying without write operations",
5
- "keywords": ["mcp", "sql-server", "mssql", "database", "ai", "claude", "windsurf", "model-context-protocol", "read-only"],
5
+ "keywords": [
6
+ "mcp",
7
+ "sql-server",
8
+ "mssql",
9
+ "database",
10
+ "ai",
11
+ "claude",
12
+ "windsurf",
13
+ "model-context-protocol",
14
+ "read-only"
15
+ ],
6
16
  "author": "Connor England <connor.r.england@gmail.com>",
7
17
  "license": "MIT",
8
18
  "repository": {
@@ -33,10 +43,7 @@
33
43
  "typescript": "^5.4.5"
34
44
  },
35
45
  "dependencies": {
36
- "@azure/identity": "^4.4.0",
37
- "@modelcontextprotocol/sdk": "^1.23.0",
38
- "dotenv": "^16.4.5",
39
- "mssql": "^10.0.1"
46
+ "@connorbritain/mssql-mcp-core": "^0.1.0"
40
47
  },
41
48
  "type": "module"
42
49
  }