@eamonboyle/mssql-mcp 1.1.0 → 1.3.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 (144) hide show
  1. package/README.md +169 -22
  2. package/dist/config.d.ts +13 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +74 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/db.d.ts +29 -24
  7. package/dist/db.d.ts.map +1 -1
  8. package/dist/db.js +144 -112
  9. package/dist/db.js.map +1 -1
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.js +382 -122
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcpResults.d.ts +49 -0
  14. package/dist/mcpResults.d.ts.map +1 -0
  15. package/dist/mcpResults.js +246 -0
  16. package/dist/mcpResults.js.map +1 -0
  17. package/dist/promptRegistry.d.ts +16 -0
  18. package/dist/promptRegistry.d.ts.map +1 -0
  19. package/dist/promptRegistry.js +112 -0
  20. package/dist/promptRegistry.js.map +1 -0
  21. package/dist/resourceRegistry.d.ts +14 -0
  22. package/dist/resourceRegistry.d.ts.map +1 -0
  23. package/dist/resourceRegistry.js +311 -0
  24. package/dist/resourceRegistry.js.map +1 -0
  25. package/dist/schema.d.ts +57 -0
  26. package/dist/schema.d.ts.map +1 -0
  27. package/dist/schema.js +390 -0
  28. package/dist/schema.js.map +1 -0
  29. package/dist/serverState.d.ts +28 -0
  30. package/dist/serverState.d.ts.map +1 -0
  31. package/dist/serverState.js +99 -0
  32. package/dist/serverState.js.map +1 -0
  33. package/dist/sql.d.ts +7 -0
  34. package/dist/sql.d.ts.map +1 -0
  35. package/dist/sql.js +73 -0
  36. package/dist/sql.js.map +1 -0
  37. package/dist/toolRegistry.d.ts +20 -0
  38. package/dist/toolRegistry.d.ts.map +1 -0
  39. package/dist/toolRegistry.js +547 -0
  40. package/dist/toolRegistry.js.map +1 -0
  41. package/dist/tools/AnalyzeTableTool.d.ts +37 -0
  42. package/dist/tools/AnalyzeTableTool.d.ts.map +1 -0
  43. package/dist/tools/AnalyzeTableTool.js +81 -0
  44. package/dist/tools/AnalyzeTableTool.js.map +1 -0
  45. package/dist/tools/CreateIndexTool.d.ts +30 -23
  46. package/dist/tools/CreateIndexTool.d.ts.map +1 -1
  47. package/dist/tools/CreateIndexTool.js +47 -77
  48. package/dist/tools/CreateIndexTool.js.map +1 -1
  49. package/dist/tools/CreateTableTool.d.ts +18 -11
  50. package/dist/tools/CreateTableTool.d.ts.map +1 -1
  51. package/dist/tools/CreateTableTool.js +37 -61
  52. package/dist/tools/CreateTableTool.js.map +1 -1
  53. package/dist/tools/DeleteDataTool.d.ts +22 -0
  54. package/dist/tools/DeleteDataTool.d.ts.map +1 -0
  55. package/dist/tools/DeleteDataTool.js +38 -0
  56. package/dist/tools/DeleteDataTool.js.map +1 -0
  57. package/dist/tools/DescribeObjectTool.d.ts +21 -0
  58. package/dist/tools/DescribeObjectTool.d.ts.map +1 -0
  59. package/dist/tools/DescribeObjectTool.js +31 -0
  60. package/dist/tools/DescribeObjectTool.js.map +1 -0
  61. package/dist/tools/DescribeRelationshipsTool.d.ts +20 -0
  62. package/dist/tools/DescribeRelationshipsTool.d.ts.map +1 -0
  63. package/dist/tools/DescribeRelationshipsTool.js +24 -0
  64. package/dist/tools/DescribeRelationshipsTool.js.map +1 -0
  65. package/dist/tools/DescribeTableTool.d.ts +19 -20
  66. package/dist/tools/DescribeTableTool.d.ts.map +1 -1
  67. package/dist/tools/DescribeTableTool.js +23 -44
  68. package/dist/tools/DescribeTableTool.js.map +1 -1
  69. package/dist/tools/DropTableTool.d.ts +13 -11
  70. package/dist/tools/DropTableTool.d.ts.map +1 -1
  71. package/dist/tools/DropTableTool.js +30 -44
  72. package/dist/tools/DropTableTool.js.map +1 -1
  73. package/dist/tools/ExplainQueryTool.d.ts +32 -0
  74. package/dist/tools/ExplainQueryTool.d.ts.map +1 -0
  75. package/dist/tools/ExplainQueryTool.js +102 -0
  76. package/dist/tools/ExplainQueryTool.js.map +1 -0
  77. package/dist/tools/InsertDataTool.d.ts +20 -16
  78. package/dist/tools/InsertDataTool.d.ts.map +1 -1
  79. package/dist/tools/InsertDataTool.js +91 -108
  80. package/dist/tools/InsertDataTool.js.map +1 -1
  81. package/dist/tools/ListDatabasesTool.d.ts +16 -0
  82. package/dist/tools/ListDatabasesTool.d.ts.map +1 -0
  83. package/dist/tools/ListDatabasesTool.js +26 -0
  84. package/dist/tools/ListDatabasesTool.js.map +1 -0
  85. package/dist/tools/ListForeignKeysTool.d.ts +19 -0
  86. package/dist/tools/ListForeignKeysTool.d.ts.map +1 -0
  87. package/dist/tools/ListForeignKeysTool.js +24 -0
  88. package/dist/tools/ListForeignKeysTool.js.map +1 -0
  89. package/dist/tools/ListObjectsTool.d.ts +20 -0
  90. package/dist/tools/ListObjectsTool.d.ts.map +1 -0
  91. package/dist/tools/ListObjectsTool.js +26 -0
  92. package/dist/tools/ListObjectsTool.js.map +1 -0
  93. package/dist/tools/ListTableTool.d.ts +20 -16
  94. package/dist/tools/ListTableTool.d.ts.map +1 -1
  95. package/dist/tools/ListTableTool.js +32 -51
  96. package/dist/tools/ListTableTool.js.map +1 -1
  97. package/dist/tools/PreviewDeleteTool.d.ts +28 -0
  98. package/dist/tools/PreviewDeleteTool.d.ts.map +1 -0
  99. package/dist/tools/PreviewDeleteTool.js +31 -0
  100. package/dist/tools/PreviewDeleteTool.js.map +1 -0
  101. package/dist/tools/PreviewUpdateTool.d.ts +30 -0
  102. package/dist/tools/PreviewUpdateTool.d.ts.map +1 -0
  103. package/dist/tools/PreviewUpdateTool.js +34 -0
  104. package/dist/tools/PreviewUpdateTool.js.map +1 -0
  105. package/dist/tools/ReadDataTool.d.ts +35 -33
  106. package/dist/tools/ReadDataTool.d.ts.map +1 -1
  107. package/dist/tools/ReadDataTool.js +92 -105
  108. package/dist/tools/ReadDataTool.js.map +1 -1
  109. package/dist/tools/SearchDataTool.d.ts +27 -0
  110. package/dist/tools/SearchDataTool.d.ts.map +1 -0
  111. package/dist/tools/SearchDataTool.js +61 -0
  112. package/dist/tools/SearchDataTool.js.map +1 -0
  113. package/dist/tools/UpdateDataTool.d.ts +22 -16
  114. package/dist/tools/UpdateDataTool.d.ts.map +1 -1
  115. package/dist/tools/UpdateDataTool.js +48 -65
  116. package/dist/tools/UpdateDataTool.js.map +1 -1
  117. package/dist/validation.d.ts +13 -13
  118. package/dist/validation.js +133 -133
  119. package/dist/validation.js.map +1 -1
  120. package/dist/writePreview.d.ts +20 -0
  121. package/dist/writePreview.d.ts.map +1 -0
  122. package/dist/writePreview.js +27 -0
  123. package/dist/writePreview.js.map +1 -0
  124. package/dist/writePreviewGrant.d.ts +18 -0
  125. package/dist/writePreviewGrant.d.ts.map +1 -0
  126. package/dist/writePreviewGrant.js +71 -0
  127. package/dist/writePreviewGrant.js.map +1 -0
  128. package/dist/writePreviewGrantStore.d.ts +10 -0
  129. package/dist/writePreviewGrantStore.d.ts.map +1 -0
  130. package/dist/writePreviewGrantStore.js +47 -0
  131. package/dist/writePreviewGrantStore.js.map +1 -0
  132. package/dist/writeSafety.d.ts +21 -0
  133. package/dist/writeSafety.d.ts.map +1 -0
  134. package/dist/writeSafety.js +169 -0
  135. package/dist/writeSafety.js.map +1 -0
  136. package/package.json +6 -5
  137. package/dist/__tests__/db.test.d.ts +0 -2
  138. package/dist/__tests__/db.test.d.ts.map +0 -1
  139. package/dist/__tests__/db.test.js +0 -204
  140. package/dist/__tests__/db.test.js.map +0 -1
  141. package/dist/__tests__/validation.test.d.ts +0 -2
  142. package/dist/__tests__/validation.test.d.ts.map +0 -1
  143. package/dist/__tests__/validation.test.js +0 -111
  144. package/dist/__tests__/validation.test.js.map +0 -1
@@ -0,0 +1,311 @@
1
+ import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { describeObjectDependencies, describeDatabaseObject, describeTableSchema, getDatabaseSchemaSummary, listForeignKeys, listDatabaseObjects, listDatabaseTables, } from "./schema.js";
3
+ import { promptDefinitions } from "./promptRegistry.js";
4
+ const resourceTemplates = [
5
+ {
6
+ name: "table_schema",
7
+ uriTemplate: "mssql://table/{databaseName}/{schemaName}/{tableName}",
8
+ description: "Detailed schema for a single table resource.",
9
+ mimeType: "application/json",
10
+ },
11
+ {
12
+ name: "object_definition",
13
+ uriTemplate: "mssql://object/{databaseName}/{schemaName}/{objectName}",
14
+ description: "Definition and metadata for a single table, view, procedure, function, or trigger.",
15
+ mimeType: "application/json",
16
+ },
17
+ {
18
+ name: "object_dependencies",
19
+ uriTemplate: "mssql://database/{databaseName}/object/{schemaName}/{objectName}/dependencies",
20
+ description: "Dependencies for a single object.",
21
+ mimeType: "application/json",
22
+ },
23
+ ];
24
+ const RESOURCE_LIST_TTL_MS = 30000;
25
+ function buildResourceText(payload) {
26
+ return JSON.stringify(payload, null, 2);
27
+ }
28
+ function parseResourceUri(uri) {
29
+ const parsed = new URL(uri);
30
+ const segments = parsed.pathname
31
+ .split("/")
32
+ .filter(Boolean)
33
+ .map((segment) => decodeURIComponent(segment));
34
+ return {
35
+ resourceType: parsed.hostname,
36
+ segments,
37
+ };
38
+ }
39
+ function createListingCache(ttlMs) {
40
+ const cache = new Map();
41
+ return async function getCachedValue(key, loader) {
42
+ const now = Date.now();
43
+ const cached = cache.get(key);
44
+ if (cached && cached.expiresAt > now) {
45
+ return cached.value;
46
+ }
47
+ const value = await loader();
48
+ cache.set(key, {
49
+ value,
50
+ expiresAt: now + ttlMs,
51
+ });
52
+ return value;
53
+ };
54
+ }
55
+ async function readResourcePayload(uri, context, getCachedValue) {
56
+ const parsed = parseResourceUri(uri);
57
+ if (parsed.resourceType === "config") {
58
+ if (parsed.segments[0] === "server") {
59
+ return {
60
+ server: {
61
+ name: context.serverName,
62
+ version: context.serverVersion,
63
+ readOnly: context.isReadOnly,
64
+ allowedDatabases: context.allowedDatabases,
65
+ maxRows: context.maxRows,
66
+ queryTimeoutMs: context.queryTimeoutMs,
67
+ },
68
+ tools: context.toolNames,
69
+ };
70
+ }
71
+ if (parsed.segments[0] === "prompts") {
72
+ return {
73
+ prompts: promptDefinitions,
74
+ };
75
+ }
76
+ }
77
+ if (parsed.resourceType === "database") {
78
+ const [databaseName, resourceName] = parsed.segments;
79
+ if (resourceName === "tables") {
80
+ return {
81
+ databaseName,
82
+ tables: await getCachedValue(`tables:${databaseName}`, () => listDatabaseTables(databaseName)),
83
+ };
84
+ }
85
+ if (resourceName === "objects") {
86
+ return {
87
+ databaseName,
88
+ objects: await getCachedValue(`objects:${databaseName}`, () => listDatabaseObjects(databaseName)),
89
+ };
90
+ }
91
+ if (resourceName === "schema-summary") {
92
+ return {
93
+ databaseName,
94
+ summary: await getCachedValue(`schema-summary:${databaseName}`, () => getDatabaseSchemaSummary(databaseName)),
95
+ };
96
+ }
97
+ if (resourceName === "foreign-keys") {
98
+ return {
99
+ databaseName,
100
+ foreignKeys: await getCachedValue(`foreign-keys:${databaseName}`, () => listForeignKeys(databaseName)),
101
+ };
102
+ }
103
+ }
104
+ if (parsed.resourceType === "table") {
105
+ const [databaseName, schemaName, tableName] = parsed.segments;
106
+ return {
107
+ databaseName,
108
+ schemaName,
109
+ tableName,
110
+ columns: await describeTableSchema(tableName, databaseName, schemaName),
111
+ };
112
+ }
113
+ if (parsed.resourceType === "object") {
114
+ const [databaseName, schemaName, objectName] = parsed.segments;
115
+ const object = await describeDatabaseObject(objectName, databaseName, schemaName);
116
+ if (!object) {
117
+ throw new Error(`No object named '${objectName}' was found.`);
118
+ }
119
+ return object;
120
+ }
121
+ if (parsed.resourceType === "query-plan") {
122
+ const [planId] = parsed.segments;
123
+ const plan = context.state.getQueryPlan(planId);
124
+ if (!plan) {
125
+ throw new Error(`Unknown query plan resource '${planId}'.`);
126
+ }
127
+ return plan;
128
+ }
129
+ if (parsed.resourceType === "query-result") {
130
+ const [resultId] = parsed.segments;
131
+ const result = context.state.getQueryResult(resultId);
132
+ if (!result) {
133
+ throw new Error(`Unknown query result resource '${resultId}'.`);
134
+ }
135
+ return result;
136
+ }
137
+ if (parsed.resourceType === "database" &&
138
+ parsed.segments[1] === "object" &&
139
+ parsed.segments[4] === "dependencies") {
140
+ const [databaseName, _objectKeyword, schemaName, objectName] = parsed.segments;
141
+ return {
142
+ databaseName,
143
+ schemaName,
144
+ objectName,
145
+ dependencies: await describeObjectDependencies(objectName, databaseName, schemaName),
146
+ };
147
+ }
148
+ throw new Error(`Unknown resource URI: ${uri}`);
149
+ }
150
+ function buildReadHandler(context, getCachedValue) {
151
+ return async (uri) => {
152
+ const payload = await readResourcePayload(uri.href, context, getCachedValue);
153
+ return {
154
+ contents: [
155
+ {
156
+ uri: uri.href,
157
+ mimeType: "application/json",
158
+ text: buildResourceText(payload),
159
+ },
160
+ ],
161
+ };
162
+ };
163
+ }
164
+ export function registerResources(server, context) {
165
+ const getCachedValue = createListingCache(RESOURCE_LIST_TTL_MS);
166
+ const readHandler = buildReadHandler(context, getCachedValue);
167
+ server.registerResource("server_config", "mssql://config/server", {
168
+ title: "Server Config",
169
+ description: "Server configuration, limits, and enabled tools.",
170
+ mimeType: "application/json",
171
+ }, readHandler);
172
+ server.registerResource("prompt_catalog", "mssql://config/prompts", {
173
+ title: "Prompt Catalog",
174
+ description: "Available prompt templates exposed by this server.",
175
+ mimeType: "application/json",
176
+ }, readHandler);
177
+ for (const databaseName of context.allowedDatabases) {
178
+ server.registerResource(`${databaseName}_tables`, `mssql://database/${encodeURIComponent(databaseName)}/tables`, {
179
+ title: `${databaseName} Tables`,
180
+ description: `Base tables available in database ${databaseName}.`,
181
+ mimeType: "application/json",
182
+ }, readHandler);
183
+ server.registerResource(`${databaseName}_objects`, `mssql://database/${encodeURIComponent(databaseName)}/objects`, {
184
+ title: `${databaseName} Objects`,
185
+ description: `Tables, views, procedures, functions, and triggers available in database ${databaseName}.`,
186
+ mimeType: "application/json",
187
+ }, readHandler);
188
+ server.registerResource(`${databaseName}_schema_summary`, `mssql://database/${encodeURIComponent(databaseName)}/schema-summary`, {
189
+ title: `${databaseName} Schema Summary`,
190
+ description: `Schema-level summary for database ${databaseName}.`,
191
+ mimeType: "application/json",
192
+ }, readHandler);
193
+ server.registerResource(`${databaseName}_foreign_keys`, `mssql://database/${encodeURIComponent(databaseName)}/foreign-keys`, {
194
+ title: `${databaseName} Foreign Keys`,
195
+ description: `Foreign key relationships for database ${databaseName}.`,
196
+ mimeType: "application/json",
197
+ }, readHandler);
198
+ }
199
+ server.registerResource("table_schema", new ResourceTemplate(resourceTemplates[0].uriTemplate, {
200
+ list: async () => ({
201
+ resources: (await Promise.all(context.allowedDatabases.map(async (databaseName) => {
202
+ const tables = await getCachedValue(`tables:${databaseName}`, () => listDatabaseTables(databaseName));
203
+ return tables.map((table) => ({
204
+ uri: `mssql://table/${encodeURIComponent(databaseName)}/${encodeURIComponent(table.schemaName)}/${encodeURIComponent(table.tableName)}`,
205
+ name: `${databaseName}.${table.schemaName}.${table.tableName}`,
206
+ }));
207
+ }))).flat(),
208
+ }),
209
+ complete: {
210
+ databaseName: (value) => context.allowedDatabases.filter((databaseName) => databaseName
211
+ .toLowerCase()
212
+ .startsWith(String(value ?? "").toLowerCase())),
213
+ schemaName: async (_value, variables) => {
214
+ const databaseName = variables?.arguments?.databaseName;
215
+ if (!databaseName) {
216
+ return [];
217
+ }
218
+ const tables = await getCachedValue(`tables:${databaseName}`, () => listDatabaseTables(databaseName));
219
+ return [...new Set(tables.map((table) => table.schemaName))];
220
+ },
221
+ tableName: async (value, variables) => {
222
+ const databaseName = variables?.arguments?.databaseName;
223
+ const schemaName = variables?.arguments?.schemaName;
224
+ if (!databaseName) {
225
+ return [];
226
+ }
227
+ const tables = await getCachedValue(`tables:${databaseName}`, () => listDatabaseTables(databaseName, schemaName));
228
+ return tables
229
+ .map((table) => table.tableName)
230
+ .filter((tableName) => tableName
231
+ .toLowerCase()
232
+ .startsWith(String(value ?? "").toLowerCase()));
233
+ },
234
+ },
235
+ }), {
236
+ title: "Table Schema",
237
+ description: resourceTemplates[0].description,
238
+ mimeType: resourceTemplates[0].mimeType,
239
+ }, readHandler);
240
+ server.registerResource("object_definition", new ResourceTemplate(resourceTemplates[1].uriTemplate, {
241
+ list: async () => ({
242
+ resources: (await Promise.all(context.allowedDatabases.map(async (databaseName) => {
243
+ const objects = await getCachedValue(`objects:${databaseName}`, () => listDatabaseObjects(databaseName));
244
+ return objects.map((object) => ({
245
+ uri: `mssql://object/${encodeURIComponent(databaseName)}/${encodeURIComponent(object.schemaName)}/${encodeURIComponent(object.name)}`,
246
+ name: `${databaseName}.${object.schemaName}.${object.name}`,
247
+ }));
248
+ }))).flat(),
249
+ }),
250
+ complete: {
251
+ databaseName: (value) => context.allowedDatabases.filter((databaseName) => databaseName
252
+ .toLowerCase()
253
+ .startsWith(String(value ?? "").toLowerCase())),
254
+ schemaName: async (_value, variables) => {
255
+ const databaseName = variables?.arguments?.databaseName;
256
+ if (!databaseName) {
257
+ return [];
258
+ }
259
+ const objects = await getCachedValue(`objects:${databaseName}`, () => listDatabaseObjects(databaseName));
260
+ return [...new Set(objects.map((object) => object.schemaName))];
261
+ },
262
+ objectName: async (value, variables) => {
263
+ const databaseName = variables?.arguments?.databaseName;
264
+ const schemaName = variables?.arguments?.schemaName;
265
+ if (!databaseName) {
266
+ return [];
267
+ }
268
+ const objects = await getCachedValue(`objects:${databaseName}`, () => listDatabaseObjects(databaseName, undefined, schemaName));
269
+ return objects
270
+ .map((object) => object.name)
271
+ .filter((name) => name.toLowerCase().startsWith(String(value ?? "").toLowerCase()));
272
+ },
273
+ },
274
+ }), {
275
+ title: "Object Definition",
276
+ description: resourceTemplates[1].description,
277
+ mimeType: resourceTemplates[1].mimeType,
278
+ }, readHandler);
279
+ server.registerResource("object_dependencies", new ResourceTemplate(resourceTemplates[2].uriTemplate, {
280
+ list: undefined,
281
+ }), {
282
+ title: "Object Dependencies",
283
+ description: resourceTemplates[2].description,
284
+ mimeType: resourceTemplates[2].mimeType,
285
+ }, readHandler);
286
+ server.registerResource("query_plan_resource", new ResourceTemplate("mssql://query-plan/{planId}", {
287
+ list: async () => ({
288
+ resources: context.state.listQueryPlans().map((plan) => ({
289
+ uri: `mssql://query-plan/${plan.id}`,
290
+ name: plan.id,
291
+ })),
292
+ }),
293
+ }), {
294
+ title: "Query Plans",
295
+ description: "Stored query plan results generated by explain_query.",
296
+ mimeType: "application/json",
297
+ }, readHandler);
298
+ server.registerResource("query_result_resource", new ResourceTemplate("mssql://query-result/{resultId}", {
299
+ list: async () => ({
300
+ resources: context.state.listQueryResults().map((result) => ({
301
+ uri: `mssql://query-result/${result.id}`,
302
+ name: result.label,
303
+ })),
304
+ }),
305
+ }), {
306
+ title: "Query Results",
307
+ description: "Stored large query results generated by read/search tools.",
308
+ mimeType: "application/json",
309
+ }, readHandler);
310
+ }
311
+ //# sourceMappingURL=resourceRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceRegistry.js","sourceRoot":"","sources":["../src/resourceRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import sql from "mssql";
2
+ export interface DatabaseObjectSummary {
3
+ name: string;
4
+ schemaName: string;
5
+ objectType: string;
6
+ typeCode: string;
7
+ typeDescription: string;
8
+ createdAt: Date;
9
+ modifiedAt: Date;
10
+ }
11
+ export interface DatabaseObjectDescription {
12
+ name: string;
13
+ schemaName: string;
14
+ objectType: string;
15
+ typeCode: string;
16
+ typeDescription: string;
17
+ createdAt: Date;
18
+ modifiedAt: Date;
19
+ definition?: string | null;
20
+ columns: Array<{
21
+ name: string;
22
+ dataType: string;
23
+ maxLength: number;
24
+ precision: number;
25
+ scale: number;
26
+ isNullable: boolean;
27
+ isIdentity: boolean;
28
+ defaultValue: string | null;
29
+ }>;
30
+ indexes: Array<{
31
+ name: string;
32
+ type: string;
33
+ isUnique: boolean;
34
+ columns: string[];
35
+ }>;
36
+ }
37
+ export declare function listDatabaseTables(databaseName?: string, schemaName?: string): Promise<sql.IRecordSet<any>>;
38
+ export declare function describeTableSchema(tableName: string, databaseName?: string, schemaName?: string): Promise<sql.IRecordSet<any>>;
39
+ export declare function listDatabaseObjects(databaseName?: string, objectTypes?: string[], schemaName?: string): Promise<DatabaseObjectSummary[]>;
40
+ export declare function describeDatabaseObject(objectName: string, databaseName?: string, schemaName?: string, objectTypes?: string[]): Promise<DatabaseObjectDescription | null>;
41
+ export declare function listConfiguredDatabases(): {
42
+ name: string;
43
+ isDefault: boolean;
44
+ }[];
45
+ export declare function getDatabaseSchemaSummary(databaseName?: string): Promise<{
46
+ objectCounts: sql.IRecordSet<any>;
47
+ schemaCounts: sql.IRecordSet<any>;
48
+ }>;
49
+ export declare function listForeignKeys(databaseName?: string, schemaName?: string): Promise<sql.IRecordSet<any>>;
50
+ export declare function describeRelationships(tableName: string, databaseName?: string, schemaName?: string): Promise<any[]>;
51
+ export declare function describeObjectDependencies(objectName: string, databaseName?: string, schemaName?: string): Promise<sql.IRecordSet<any>>;
52
+ export interface AnalyzeTableResult {
53
+ summary: Record<string, unknown> | null;
54
+ indexes: Array<Record<string, unknown>>;
55
+ }
56
+ export declare function analyzeTable(tableName: string, databaseName?: string, schemaName?: string): Promise<AnalyzeTableResult>;
57
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}