@softtechai/quickmcp 1.0.8

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 (163) hide show
  1. package/README.md +553 -0
  2. package/dist/client/MCPClient.d.ts +24 -0
  3. package/dist/client/MCPClient.d.ts.map +1 -0
  4. package/dist/client/MCPClient.js +211 -0
  5. package/dist/client/MCPClient.js.map +1 -0
  6. package/dist/client/MCPClientUnified.d.ts +31 -0
  7. package/dist/client/MCPClientUnified.d.ts.map +1 -0
  8. package/dist/client/MCPClientUnified.js +275 -0
  9. package/dist/client/MCPClientUnified.js.map +1 -0
  10. package/dist/client/MCPTestRunner.d.ts +44 -0
  11. package/dist/client/MCPTestRunner.d.ts.map +1 -0
  12. package/dist/client/MCPTestRunner.js +220 -0
  13. package/dist/client/MCPTestRunner.js.map +1 -0
  14. package/dist/client/MCPTestRunnerUnified.d.ts +48 -0
  15. package/dist/client/MCPTestRunnerUnified.d.ts.map +1 -0
  16. package/dist/client/MCPTestRunnerUnified.js +183 -0
  17. package/dist/client/MCPTestRunnerUnified.js.map +1 -0
  18. package/dist/database/json-manager.d.ts +55 -0
  19. package/dist/database/json-manager.d.ts.map +1 -0
  20. package/dist/database/json-manager.js +128 -0
  21. package/dist/database/json-manager.js.map +1 -0
  22. package/dist/database/sqlite-manager.d.ts +53 -0
  23. package/dist/database/sqlite-manager.d.ts.map +1 -0
  24. package/dist/database/sqlite-manager.js +193 -0
  25. package/dist/database/sqlite-manager.js.map +1 -0
  26. package/dist/dynamic-mcp-executor.d.ts +14 -0
  27. package/dist/dynamic-mcp-executor.d.ts.map +1 -0
  28. package/dist/dynamic-mcp-executor.js +274 -0
  29. package/dist/dynamic-mcp-executor.js.map +1 -0
  30. package/dist/generators/MCPServerGenerator-new.d.ts +37 -0
  31. package/dist/generators/MCPServerGenerator-new.d.ts.map +1 -0
  32. package/dist/generators/MCPServerGenerator-new.js +287 -0
  33. package/dist/generators/MCPServerGenerator-new.js.map +1 -0
  34. package/dist/generators/MCPServerGenerator.d.ts +42 -0
  35. package/dist/generators/MCPServerGenerator.d.ts.map +1 -0
  36. package/dist/generators/MCPServerGenerator.js +494 -0
  37. package/dist/generators/MCPServerGenerator.js.map +1 -0
  38. package/dist/generators/database/sqlite-manager.d.ts +52 -0
  39. package/dist/generators/database/sqlite-manager.js +143 -0
  40. package/dist/generators/generators/MCPServerGenerator.d.ts +37 -0
  41. package/dist/generators/generators/MCPServerGenerator.js +396 -0
  42. package/dist/index.d.ts +7 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +23 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/integrated-mcp-server-new.d.ts +12 -0
  47. package/dist/integrated-mcp-server-new.d.ts.map +1 -0
  48. package/dist/integrated-mcp-server-new.js +253 -0
  49. package/dist/integrated-mcp-server-new.js.map +1 -0
  50. package/dist/integrated-mcp-server.d.ts +25 -0
  51. package/dist/integrated-mcp-server.d.ts.map +1 -0
  52. package/dist/integrated-mcp-server.js +541 -0
  53. package/dist/integrated-mcp-server.js.map +1 -0
  54. package/dist/mcp-inspector-server.d.ts +3 -0
  55. package/dist/mcp-inspector-server.d.ts.map +1 -0
  56. package/dist/mcp-inspector-server.js +119 -0
  57. package/dist/mcp-inspector-server.js.map +1 -0
  58. package/dist/mcp-sdk-server.d.ts +3 -0
  59. package/dist/mcp-sdk-server.d.ts.map +1 -0
  60. package/dist/mcp-sdk-server.js +90 -0
  61. package/dist/mcp-sdk-server.js.map +1 -0
  62. package/dist/mcp-server.d.ts +3 -0
  63. package/dist/mcp-server.d.ts.map +1 -0
  64. package/dist/mcp-server.js +300 -0
  65. package/dist/mcp-server.js.map +1 -0
  66. package/dist/parsers/CsvParser.d.ts +7 -0
  67. package/dist/parsers/CsvParser.d.ts.map +1 -0
  68. package/dist/parsers/CsvParser.js +98 -0
  69. package/dist/parsers/CsvParser.js.map +1 -0
  70. package/dist/parsers/DatabaseParser.d.ts +18 -0
  71. package/dist/parsers/DatabaseParser.d.ts.map +1 -0
  72. package/dist/parsers/DatabaseParser.js +372 -0
  73. package/dist/parsers/DatabaseParser.js.map +1 -0
  74. package/dist/parsers/ExcelParser.d.ts +8 -0
  75. package/dist/parsers/ExcelParser.d.ts.map +1 -0
  76. package/dist/parsers/ExcelParser.js +119 -0
  77. package/dist/parsers/ExcelParser.js.map +1 -0
  78. package/dist/parsers/index.d.ts +13 -0
  79. package/dist/parsers/index.d.ts.map +1 -0
  80. package/dist/parsers/index.js +88 -0
  81. package/dist/parsers/index.js.map +1 -0
  82. package/dist/parsers/parsers/ExcelParser.js +118 -0
  83. package/dist/parsers/types/index.js +2 -0
  84. package/dist/quickmcp-unified-bridge.d.ts +13 -0
  85. package/dist/quickmcp-unified-bridge.d.ts.map +1 -0
  86. package/dist/quickmcp-unified-bridge.js +176 -0
  87. package/dist/quickmcp-unified-bridge.js.map +1 -0
  88. package/dist/server/ServerManager.d.ts +37 -0
  89. package/dist/server/ServerManager.d.ts.map +1 -0
  90. package/dist/server/ServerManager.js +376 -0
  91. package/dist/server/ServerManager.js.map +1 -0
  92. package/dist/sqlite-manager.js +145 -0
  93. package/dist/start-new-server.d.ts +3 -0
  94. package/dist/start-new-server.d.ts.map +1 -0
  95. package/dist/start-new-server.js +10 -0
  96. package/dist/start-new-server.js.map +1 -0
  97. package/dist/test-app.d.ts +2 -0
  98. package/dist/test-app.d.ts.map +1 -0
  99. package/dist/test-app.js +119 -0
  100. package/dist/test-app.js.map +1 -0
  101. package/dist/test-new-architecture.d.ts +3 -0
  102. package/dist/test-new-architecture.d.ts.map +1 -0
  103. package/dist/test-new-architecture.js +72 -0
  104. package/dist/test-new-architecture.js.map +1 -0
  105. package/dist/transport/base-transport.d.ts +21 -0
  106. package/dist/transport/base-transport.d.ts.map +1 -0
  107. package/dist/transport/base-transport.js +16 -0
  108. package/dist/transport/base-transport.js.map +1 -0
  109. package/dist/transport/index.d.ts +10 -0
  110. package/dist/transport/index.d.ts.map +1 -0
  111. package/dist/transport/index.js +12 -0
  112. package/dist/transport/index.js.map +1 -0
  113. package/dist/transport/sse-transport.d.ts +13 -0
  114. package/dist/transport/sse-transport.d.ts.map +1 -0
  115. package/dist/transport/sse-transport.js +106 -0
  116. package/dist/transport/sse-transport.js.map +1 -0
  117. package/dist/transport/stdio-transport.d.ts +8 -0
  118. package/dist/transport/stdio-transport.d.ts.map +1 -0
  119. package/dist/transport/stdio-transport.js +53 -0
  120. package/dist/transport/stdio-transport.js.map +1 -0
  121. package/dist/transport/streamable-http-transport.d.ts +15 -0
  122. package/dist/transport/streamable-http-transport.d.ts.map +1 -0
  123. package/dist/transport/streamable-http-transport.js +151 -0
  124. package/dist/transport/streamable-http-transport.js.map +1 -0
  125. package/dist/types/index.d.ts +64 -0
  126. package/dist/types/index.d.ts.map +1 -0
  127. package/dist/types/index.js +3 -0
  128. package/dist/types/index.js.map +1 -0
  129. package/dist/web/client/MCPClient.js +348 -0
  130. package/dist/web/client/MCPTestRunner.js +317 -0
  131. package/dist/web/database/json-manager.js +124 -0
  132. package/dist/web/database/sqlite-manager.js +146 -0
  133. package/dist/web/dynamic-mcp-executor.js +443 -0
  134. package/dist/web/generators/MCPServerGenerator-new.js +284 -0
  135. package/dist/web/generators/MCPServerGenerator.js +566 -0
  136. package/dist/web/integrated-mcp-server-new.js +394 -0
  137. package/dist/web/parsers/CsvParser.js +144 -0
  138. package/dist/web/parsers/DatabaseParser.js +637 -0
  139. package/dist/web/parsers/ExcelParser.js +180 -0
  140. package/dist/web/parsers/index.js +152 -0
  141. package/dist/web/server.d.ts +3 -0
  142. package/dist/web/server.d.ts.map +1 -0
  143. package/dist/web/server.js +790 -0
  144. package/dist/web/server.js.map +1 -0
  145. package/dist/web/types/index.js +2 -0
  146. package/dist/web/web/server.js +860 -0
  147. package/package.json +68 -0
  148. package/quickmcp-direct-stdio.js +328 -0
  149. package/src/web/public/app.js +1795 -0
  150. package/src/web/public/database-tables.html +711 -0
  151. package/src/web/public/how-to-use.html +571 -0
  152. package/src/web/public/how-to-use.js +255 -0
  153. package/src/web/public/images/1-claude-quickmcp-stdio.png +0 -0
  154. package/src/web/public/images/2-claude-tools.png +0 -0
  155. package/src/web/public/images/3-claude-developer-settings.png +0 -0
  156. package/src/web/public/images/4-claude-config.png +0 -0
  157. package/src/web/public/images/5-claude-config-edit.png +0 -0
  158. package/src/web/public/index.html +626 -0
  159. package/src/web/public/manage-servers.html +198 -0
  160. package/src/web/public/modern-styles.css +946 -0
  161. package/src/web/public/shared-styles.css +2091 -0
  162. package/src/web/public/shared.js +93 -0
  163. package/src/web/public/test-servers.html +302 -0
@@ -0,0 +1,494 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MCPServerGenerator = void 0;
4
+ const sqlite_manager_1 = require("../database/sqlite-manager");
5
+ class MCPServerGenerator {
6
+ constructor() {
7
+ this.sqliteManager = new sqlite_manager_1.SQLiteManager();
8
+ }
9
+ async generateServer(serverId, serverName, parsedData, dbConfig, selectedTables) {
10
+ try {
11
+ //console.log(`🚀 Generating virtual MCP server: ${serverId}`);
12
+ // Create server config
13
+ //console.log(`📝 Creating server config with serverId: "${serverId}", serverName: "${serverName}"`);
14
+ const serverConfig = {
15
+ id: serverId,
16
+ name: serverName,
17
+ dbConfig: dbConfig,
18
+ createdAt: new Date().toISOString()
19
+ };
20
+ //console.log('📄 Server config created:', JSON.stringify(serverConfig, null, 2));
21
+ // Save server to SQLite database only
22
+ this.sqliteManager.saveServer(serverConfig);
23
+ //console.log(`✅ Server config saved to SQLite database: ${serverId}`);
24
+ // Generate and save tools
25
+ const tools = this.generateToolsForData(serverId, parsedData, dbConfig, selectedTables);
26
+ if (tools.length > 0) {
27
+ this.sqliteManager.saveTools(tools);
28
+ //console.log(`✅ Generated ${tools.length} tools for server ${serverId}`);
29
+ }
30
+ // Generate and save resources
31
+ const resources = this.generateResourcesForData(serverId, parsedData, dbConfig);
32
+ if (resources.length > 0) {
33
+ this.sqliteManager.saveResources(resources);
34
+ //console.log(`✅ Generated ${resources.length} resources for server ${serverId}`);
35
+ }
36
+ return {
37
+ success: true,
38
+ message: `Virtual MCP server '${serverId}' created successfully with ${tools.length} tools and ${resources.length} resources`
39
+ };
40
+ }
41
+ catch (error) {
42
+ console.error(`❌ Error generating server ${serverId}:`, error);
43
+ return {
44
+ success: false,
45
+ message: `Failed to generate server: ${error instanceof Error ? error.message : 'Unknown error'}`
46
+ };
47
+ }
48
+ }
49
+ generateToolsForData(serverId, parsedData, dbConfig, selectedTables) {
50
+ const tools = [];
51
+ //console.log('🔍 generateToolsForData called with selectedTables:', selectedTables);
52
+ for (const [tableName, rows] of Object.entries(parsedData)) {
53
+ if (!rows || rows.length === 0)
54
+ continue;
55
+ // Find table configuration in selectedTables
56
+ const tableIndex = Object.keys(parsedData).indexOf(tableName);
57
+ const tableConfig = selectedTables?.find(config => config.index === tableIndex);
58
+ // Skip table if not selected
59
+ if (selectedTables && selectedTables.length > 0 && !tableConfig) {
60
+ //console.log(`🔍 Skipping table ${tableName} - not selected`);
61
+ continue;
62
+ }
63
+ //console.log(`🔍 Processing table ${tableName} with config:`, tableConfig?.tools);
64
+ const columns = this.analyzeColumns(rows);
65
+ const cleanTableName = this.sanitizeName(tableName);
66
+ // Get tools configuration (default all true if no config)
67
+ const toolsConfig = tableConfig?.tools || {
68
+ get: true, create: true, update: true, delete: true, count: true,
69
+ min: true, max: true, sum: true, avg: true
70
+ };
71
+ // GET tool
72
+ if (toolsConfig.get) {
73
+ tools.push({
74
+ server_id: serverId,
75
+ name: `get_${cleanTableName}`,
76
+ description: `Get records from ${tableName} table`,
77
+ inputSchema: {
78
+ type: 'object',
79
+ properties: {
80
+ limit: {
81
+ type: 'number',
82
+ description: 'Maximum number of records to return',
83
+ default: 100,
84
+ minimum: 1,
85
+ maximum: 1000
86
+ },
87
+ offset: {
88
+ type: 'number',
89
+ description: 'Number of records to skip',
90
+ default: 0,
91
+ minimum: 0
92
+ },
93
+ ...this.generateFilterProperties(columns)
94
+ },
95
+ required: []
96
+ },
97
+ sqlQuery: this.generateSelectQuery(tableName, columns, dbConfig.type),
98
+ operation: 'SELECT'
99
+ });
100
+ }
101
+ // CREATE tool
102
+ if (toolsConfig.create && columns.length > 0) {
103
+ tools.push({
104
+ server_id: serverId,
105
+ name: `create_${cleanTableName}`,
106
+ description: `Create a new record in ${tableName} table`,
107
+ inputSchema: {
108
+ type: 'object',
109
+ properties: this.generateInputProperties(columns, true),
110
+ required: columns.filter(col => !col.nullable && col.name.toLowerCase() !== 'id').map(col => col.name)
111
+ },
112
+ sqlQuery: this.generateInsertQuery(tableName, columns, dbConfig.type),
113
+ operation: 'INSERT'
114
+ });
115
+ }
116
+ // UPDATE tool
117
+ if (toolsConfig.update && columns.some(col => col.name.toLowerCase() === 'id')) {
118
+ tools.push({
119
+ server_id: serverId,
120
+ name: `update_${cleanTableName}`,
121
+ description: `Update a record in ${tableName} table`,
122
+ inputSchema: {
123
+ type: 'object',
124
+ properties: {
125
+ id: {
126
+ type: ['string', 'number'],
127
+ description: 'ID of the record to update'
128
+ },
129
+ ...this.generateInputProperties(columns, false)
130
+ },
131
+ required: ['id']
132
+ },
133
+ sqlQuery: this.generateUpdateQuery(tableName, columns, dbConfig.type),
134
+ operation: 'UPDATE'
135
+ });
136
+ }
137
+ // DELETE tool
138
+ if (toolsConfig.delete && columns.some(col => col.name.toLowerCase() === 'id')) {
139
+ tools.push({
140
+ server_id: serverId,
141
+ name: `delete_${cleanTableName}`,
142
+ description: `Delete a record from ${tableName} table`,
143
+ inputSchema: {
144
+ type: 'object',
145
+ properties: {
146
+ id: {
147
+ type: ['string', 'number'],
148
+ description: 'ID of the record to delete'
149
+ }
150
+ },
151
+ required: ['id']
152
+ },
153
+ sqlQuery: this.generateDeleteQuery(tableName, dbConfig.type),
154
+ operation: 'DELETE'
155
+ });
156
+ }
157
+ // COUNT tool
158
+ if (toolsConfig.count) {
159
+ tools.push({
160
+ server_id: serverId,
161
+ name: `count_${cleanTableName}`,
162
+ description: `Get total count of records in ${tableName} table`,
163
+ inputSchema: {
164
+ type: 'object',
165
+ properties: this.generateFilterProperties(columns),
166
+ required: []
167
+ },
168
+ sqlQuery: this.generateCountQuery(tableName, columns, dbConfig.type),
169
+ operation: 'SELECT'
170
+ });
171
+ }
172
+ // Get numeric columns for aggregate functions
173
+ //console.log(`🔍 Table ${tableName} columns:`, columns.map(col => ({ name: col.name, type: col.type })));
174
+ const numericColumns = columns.filter(col => {
175
+ const type = col.type.toLowerCase();
176
+ return type.includes('int') || type.includes('float') || type.includes('decimal') ||
177
+ type.includes('numeric') || type.includes('real') || type.includes('double') ||
178
+ type === 'number';
179
+ });
180
+ //console.log(`🔍 Numeric columns found in ${tableName}:`, numericColumns.map(col => ({ name: col.name, type: col.type })));
181
+ if (numericColumns.length > 0) {
182
+ // MIN tools for each numeric column
183
+ if (toolsConfig.min) {
184
+ numericColumns.forEach(col => {
185
+ const toolName = `min_${cleanTableName}_${this.sanitizeName(col.name)}`;
186
+ //console.log(`🔍 Creating MIN tool: ${toolName} for column ${col.name}`);
187
+ tools.push({
188
+ server_id: serverId,
189
+ name: toolName,
190
+ description: `Get minimum value of ${col.name} in ${tableName} table`,
191
+ inputSchema: {
192
+ type: 'object',
193
+ properties: this.generateFilterProperties(columns),
194
+ required: []
195
+ },
196
+ sqlQuery: this.generateMinQuery(tableName, col.name, columns, dbConfig.type),
197
+ operation: 'SELECT'
198
+ });
199
+ });
200
+ }
201
+ // MAX tools for each numeric column
202
+ if (toolsConfig.max) {
203
+ numericColumns.forEach(col => {
204
+ const toolName = `max_${cleanTableName}_${this.sanitizeName(col.name)}`;
205
+ tools.push({
206
+ server_id: serverId,
207
+ name: toolName,
208
+ description: `Get maximum value of ${col.name} in ${tableName} table`,
209
+ inputSchema: {
210
+ type: 'object',
211
+ properties: this.generateFilterProperties(columns),
212
+ required: []
213
+ },
214
+ sqlQuery: this.generateMaxQuery(tableName, col.name, columns, dbConfig.type),
215
+ operation: 'SELECT'
216
+ });
217
+ });
218
+ }
219
+ // SUM tools for each numeric column
220
+ if (toolsConfig.sum) {
221
+ numericColumns.forEach(col => {
222
+ const toolName = `sum_${cleanTableName}_${this.sanitizeName(col.name)}`;
223
+ tools.push({
224
+ server_id: serverId,
225
+ name: toolName,
226
+ description: `Get sum of all values of ${col.name} in ${tableName} table`,
227
+ inputSchema: {
228
+ type: 'object',
229
+ properties: this.generateFilterProperties(columns),
230
+ required: []
231
+ },
232
+ sqlQuery: this.generateSumQuery(tableName, col.name, columns, dbConfig.type),
233
+ operation: 'SELECT'
234
+ });
235
+ });
236
+ }
237
+ // AVG tools for each numeric column
238
+ if (toolsConfig.avg) {
239
+ numericColumns.forEach(col => {
240
+ const toolName = `avg_${cleanTableName}_${this.sanitizeName(col.name)}`;
241
+ tools.push({
242
+ server_id: serverId,
243
+ name: toolName,
244
+ description: `Get average value of ${col.name} in ${tableName} table`,
245
+ inputSchema: {
246
+ type: 'object',
247
+ properties: this.generateFilterProperties(columns),
248
+ required: []
249
+ },
250
+ sqlQuery: this.generateAvgQuery(tableName, col.name, columns, dbConfig.type),
251
+ operation: 'SELECT'
252
+ });
253
+ });
254
+ }
255
+ }
256
+ }
257
+ //console.log(`🔍 Total tools created: ${tools.length}`);
258
+ //console.log(`🔍 Tool names:`, tools.map(tool => tool.name));
259
+ return tools;
260
+ }
261
+ generateResourcesForData(serverId, parsedData, dbConfig) {
262
+ const resources = [];
263
+ for (const [tableName, rows] of Object.entries(parsedData)) {
264
+ if (!rows || rows.length === 0)
265
+ continue;
266
+ const cleanTableName = this.sanitizeName(tableName);
267
+ resources.push({
268
+ server_id: serverId,
269
+ name: `${cleanTableName}_list`,
270
+ description: `List all records from ${tableName} table`,
271
+ uri_template: `${cleanTableName}://list`,
272
+ sqlQuery: this.generateSelectQuery(tableName, this.analyzeColumns(rows), dbConfig.type, false)
273
+ });
274
+ }
275
+ return resources;
276
+ }
277
+ analyzeColumns(rows) {
278
+ if (!rows || rows.length === 0)
279
+ return [];
280
+ const firstRow = rows[0];
281
+ const columns = [];
282
+ for (const [key, value] of Object.entries(firstRow)) {
283
+ let type = 'string';
284
+ if (typeof value === 'number') {
285
+ type = Number.isInteger(value) ? 'integer' : 'number';
286
+ }
287
+ else if (typeof value === 'boolean') {
288
+ type = 'boolean';
289
+ }
290
+ else if (value instanceof Date) {
291
+ type = 'string'; // Dates are handled as strings in JSON
292
+ }
293
+ else if (value === null || value === undefined) {
294
+ // Check other rows to determine type
295
+ for (let i = 1; i < Math.min(rows.length, 10); i++) {
296
+ const otherValue = rows[i][key];
297
+ if (otherValue !== null && otherValue !== undefined) {
298
+ if (typeof otherValue === 'number') {
299
+ type = Number.isInteger(otherValue) ? 'integer' : 'number';
300
+ }
301
+ else if (typeof otherValue === 'boolean') {
302
+ type = 'boolean';
303
+ }
304
+ break;
305
+ }
306
+ }
307
+ }
308
+ columns.push({
309
+ name: key,
310
+ type: type,
311
+ nullable: rows.some(row => row[key] === null || row[key] === undefined)
312
+ });
313
+ }
314
+ return columns;
315
+ }
316
+ generateFilterProperties(columns) {
317
+ const properties = {};
318
+ for (const column of columns) {
319
+ const baseType = column.type === 'integer' ? 'number' : column.type;
320
+ properties[`filter_${column.name}`] = {
321
+ type: baseType,
322
+ description: `Filter by ${column.name}`
323
+ };
324
+ }
325
+ return properties;
326
+ }
327
+ generateInputProperties(columns, isCreate) {
328
+ const properties = {};
329
+ for (const column of columns) {
330
+ // Skip ID field for create operations
331
+ if (isCreate && column.name.toLowerCase() === 'id')
332
+ continue;
333
+ const baseType = column.type === 'integer' ? 'number' : column.type;
334
+ properties[column.name] = {
335
+ type: baseType,
336
+ description: `${column.name} field`
337
+ };
338
+ // For nullable fields, make them not required instead of using union types
339
+ if (column.nullable && !isCreate) {
340
+ // Optional field - will not be added to required array
341
+ }
342
+ }
343
+ return properties;
344
+ }
345
+ generateSelectQuery(tableName, columns, dbType, withParams = true) {
346
+ const columnList = columns.map(col => `[${col.name}]`).join(', ');
347
+ let query = `SELECT ${columnList} FROM [${tableName}]`;
348
+ if (withParams) {
349
+ // Filter out problematic columns for WHERE clause (e.g., ntext columns in SQL Server)
350
+ const filterableColumns = columns.filter(col => {
351
+ // For SQL Server, exclude large text columns that can't be compared
352
+ if (dbType === 'mssql') {
353
+ // Skip columns that might be ntext, text, or image types
354
+ // These are typically identified by their string type and large content
355
+ return true; // We'll handle this at parameter level instead
356
+ }
357
+ return true;
358
+ });
359
+ const whereConditions = filterableColumns.map(col => `(@filter_${col.name} IS NULL OR [${col.name}] = @filter_${col.name})`).join(' AND ');
360
+ query += ` WHERE ${whereConditions}`;
361
+ // Add ORDER BY clause for consistent pagination
362
+ // Find the first suitable column for ordering (prefer id, created_at, or first column)
363
+ const orderColumn = columns.find(col => col.name.toLowerCase() === 'id' ||
364
+ col.name.toLowerCase().includes('created') ||
365
+ col.name.toLowerCase().includes('timestamp')) || columns[0];
366
+ if (orderColumn) {
367
+ query += ` ORDER BY [${orderColumn.name}]`;
368
+ }
369
+ if (dbType === 'mssql') {
370
+ // Use OFFSET/FETCH for proper pagination with ORDER BY
371
+ query += ' OFFSET @offset ROWS FETCH NEXT @limit ROWS ONLY';
372
+ }
373
+ else {
374
+ query += ' LIMIT @limit OFFSET @offset';
375
+ }
376
+ }
377
+ return query;
378
+ }
379
+ generateInsertQuery(tableName, columns, dbType) {
380
+ const insertColumns = columns.filter(col => col.name.toLowerCase() !== 'id');
381
+ const columnNames = insertColumns.map(col => `[${col.name}]`).join(', ');
382
+ const paramNames = insertColumns.map(col => `@${col.name}`).join(', ');
383
+ return `INSERT INTO [${tableName}] (${columnNames}) VALUES (${paramNames})`;
384
+ }
385
+ generateUpdateQuery(tableName, columns, dbType) {
386
+ const updateColumns = columns.filter(col => col.name.toLowerCase() !== 'id');
387
+ const setClause = updateColumns.map(col => `[${col.name}] = @${col.name}`).join(', ');
388
+ return `UPDATE [${tableName}] SET ${setClause} WHERE [Id] = @id`;
389
+ }
390
+ generateDeleteQuery(tableName, dbType) {
391
+ return `DELETE FROM [${tableName}] WHERE [Id] = @id`;
392
+ }
393
+ generateCountQuery(tableName, columns, dbType) {
394
+ let query = `SELECT COUNT(*) as total_count FROM [${tableName}]`;
395
+ // Filter out problematic columns for WHERE clause (e.g., ntext columns in SQL Server)
396
+ const filterableColumns = columns.filter(col => {
397
+ // For SQL Server, exclude large text columns that can't be compared
398
+ if (dbType === 'mssql') {
399
+ // Skip columns that might be ntext, text, or image types
400
+ // These are typically identified by their string type and large content
401
+ return true; // We'll handle this at parameter level instead
402
+ }
403
+ return true;
404
+ });
405
+ const whereConditions = filterableColumns.map(col => `(@filter_${col.name} IS NULL OR [${col.name}] = @filter_${col.name})`).join(' AND ');
406
+ query += ` WHERE ${whereConditions}`;
407
+ return query;
408
+ }
409
+ generateMinQuery(tableName, columnName, columns, dbType) {
410
+ let query = `SELECT MIN([${columnName}]) as min_value FROM [${tableName}]`;
411
+ const filterableColumns = columns.filter(col => {
412
+ if (dbType === 'mssql') {
413
+ return true; // We'll handle this at parameter level instead
414
+ }
415
+ return true;
416
+ });
417
+ const whereConditions = filterableColumns.map(col => `(@filter_${col.name} IS NULL OR [${col.name}] = @filter_${col.name})`).join(' AND ');
418
+ query += ` WHERE ${whereConditions}`;
419
+ return query;
420
+ }
421
+ generateMaxQuery(tableName, columnName, columns, dbType) {
422
+ let query = `SELECT MAX([${columnName}]) as max_value FROM [${tableName}]`;
423
+ const filterableColumns = columns.filter(col => {
424
+ if (dbType === 'mssql') {
425
+ return true; // We'll handle this at parameter level instead
426
+ }
427
+ return true;
428
+ });
429
+ const whereConditions = filterableColumns.map(col => `(@filter_${col.name} IS NULL OR [${col.name}] = @filter_${col.name})`).join(' AND ');
430
+ query += ` WHERE ${whereConditions}`;
431
+ return query;
432
+ }
433
+ generateSumQuery(tableName, columnName, columns, dbType) {
434
+ let query = `SELECT SUM([${columnName}]) as sum_value FROM [${tableName}]`;
435
+ const filterableColumns = columns.filter(col => {
436
+ if (dbType === 'mssql') {
437
+ return true; // We'll handle this at parameter level instead
438
+ }
439
+ return true;
440
+ });
441
+ const whereConditions = filterableColumns.map(col => `(@filter_${col.name} IS NULL OR [${col.name}] = @filter_${col.name})`).join(' AND ');
442
+ query += ` WHERE ${whereConditions}`;
443
+ return query;
444
+ }
445
+ generateAvgQuery(tableName, columnName, columns, dbType) {
446
+ let query = `SELECT AVG(CAST([${columnName}] AS FLOAT)) as avg_value FROM [${tableName}]`;
447
+ const filterableColumns = columns.filter(col => {
448
+ if (dbType === 'mssql') {
449
+ return true; // We'll handle this at parameter level instead
450
+ }
451
+ return true;
452
+ });
453
+ const whereConditions = filterableColumns.map(col => `(@filter_${col.name} IS NULL OR [${col.name}] = @filter_${col.name})`).join(' AND ');
454
+ query += ` WHERE ${whereConditions}`;
455
+ return query;
456
+ }
457
+ sanitizeName(name) {
458
+ return name.toLowerCase()
459
+ .replace(/[^a-z0-9]/g, '_')
460
+ .replace(/_{2,}/g, '_')
461
+ .replace(/^_|_$/g, '');
462
+ }
463
+ // Public methods for management
464
+ getAllServers() {
465
+ return this.sqliteManager.getAllServers();
466
+ }
467
+ getServer(serverId) {
468
+ return this.sqliteManager.getServer(serverId);
469
+ }
470
+ deleteServer(serverId) {
471
+ this.sqliteManager.deleteServer(serverId);
472
+ console.log(`🗑️ Deleted server from SQLite database: ${serverId}`);
473
+ }
474
+ getAllTools() {
475
+ return this.sqliteManager.getAllTools();
476
+ }
477
+ getToolsForServer(serverId) {
478
+ return this.sqliteManager.getToolsForServer(serverId);
479
+ }
480
+ getAllResources() {
481
+ return this.sqliteManager.getAllResources();
482
+ }
483
+ getResourcesForServer(serverId) {
484
+ return this.sqliteManager.getResourcesForServer(serverId);
485
+ }
486
+ getStats() {
487
+ return this.sqliteManager.getStats();
488
+ }
489
+ close() {
490
+ this.sqliteManager.close();
491
+ }
492
+ }
493
+ exports.MCPServerGenerator = MCPServerGenerator;
494
+ //# sourceMappingURL=MCPServerGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPServerGenerator.js","sourceRoot":"","sources":["../../src/generators/MCPServerGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ export interface ServerConfig {
2
+ id: string;
3
+ name: string;
4
+ dbConfig: {
5
+ type: 'mssql' | 'mysql' | 'postgresql';
6
+ server: string;
7
+ port: number;
8
+ database: string;
9
+ username: string;
10
+ password: string;
11
+ encrypt?: boolean;
12
+ trustServerCertificate?: boolean;
13
+ };
14
+ createdAt: string;
15
+ }
16
+ export interface ToolDefinition {
17
+ server_id: string;
18
+ name: string;
19
+ description: string;
20
+ inputSchema: any;
21
+ sqlQuery: string;
22
+ operation: 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE';
23
+ }
24
+ export interface ResourceDefinition {
25
+ server_id: string;
26
+ name: string;
27
+ description: string;
28
+ uri_template: string;
29
+ sqlQuery: string;
30
+ }
31
+ export declare class SQLiteManager {
32
+ private db;
33
+ private dbPath;
34
+ constructor();
35
+ private initializeTables;
36
+ saveServer(server: ServerConfig): void;
37
+ getServer(serverId: string): ServerConfig | null;
38
+ getAllServers(): ServerConfig[];
39
+ deleteServer(serverId: string): void;
40
+ saveTools(tools: ToolDefinition[]): void;
41
+ getToolsForServer(serverId: string): ToolDefinition[];
42
+ getAllTools(): ToolDefinition[];
43
+ saveResources(resources: ResourceDefinition[]): void;
44
+ getResourcesForServer(serverId: string): ResourceDefinition[];
45
+ getAllResources(): ResourceDefinition[];
46
+ close(): void;
47
+ getStats(): {
48
+ servers: number;
49
+ tools: number;
50
+ resources: number;
51
+ };
52
+ }