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