@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.
- package/README.md +553 -0
- package/dist/client/MCPClient.d.ts +24 -0
- package/dist/client/MCPClient.d.ts.map +1 -0
- package/dist/client/MCPClient.js +211 -0
- package/dist/client/MCPClient.js.map +1 -0
- package/dist/client/MCPClientUnified.d.ts +31 -0
- package/dist/client/MCPClientUnified.d.ts.map +1 -0
- package/dist/client/MCPClientUnified.js +275 -0
- package/dist/client/MCPClientUnified.js.map +1 -0
- package/dist/client/MCPTestRunner.d.ts +44 -0
- package/dist/client/MCPTestRunner.d.ts.map +1 -0
- package/dist/client/MCPTestRunner.js +220 -0
- package/dist/client/MCPTestRunner.js.map +1 -0
- package/dist/client/MCPTestRunnerUnified.d.ts +48 -0
- package/dist/client/MCPTestRunnerUnified.d.ts.map +1 -0
- package/dist/client/MCPTestRunnerUnified.js +183 -0
- package/dist/client/MCPTestRunnerUnified.js.map +1 -0
- package/dist/database/json-manager.d.ts +55 -0
- package/dist/database/json-manager.d.ts.map +1 -0
- package/dist/database/json-manager.js +128 -0
- package/dist/database/json-manager.js.map +1 -0
- package/dist/database/sqlite-manager.d.ts +53 -0
- package/dist/database/sqlite-manager.d.ts.map +1 -0
- package/dist/database/sqlite-manager.js +193 -0
- package/dist/database/sqlite-manager.js.map +1 -0
- package/dist/dynamic-mcp-executor.d.ts +14 -0
- package/dist/dynamic-mcp-executor.d.ts.map +1 -0
- package/dist/dynamic-mcp-executor.js +274 -0
- package/dist/dynamic-mcp-executor.js.map +1 -0
- package/dist/generators/MCPServerGenerator-new.d.ts +37 -0
- package/dist/generators/MCPServerGenerator-new.d.ts.map +1 -0
- package/dist/generators/MCPServerGenerator-new.js +287 -0
- package/dist/generators/MCPServerGenerator-new.js.map +1 -0
- package/dist/generators/MCPServerGenerator.d.ts +42 -0
- package/dist/generators/MCPServerGenerator.d.ts.map +1 -0
- package/dist/generators/MCPServerGenerator.js +494 -0
- package/dist/generators/MCPServerGenerator.js.map +1 -0
- package/dist/generators/database/sqlite-manager.d.ts +52 -0
- package/dist/generators/database/sqlite-manager.js +143 -0
- package/dist/generators/generators/MCPServerGenerator.d.ts +37 -0
- package/dist/generators/generators/MCPServerGenerator.js +396 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/integrated-mcp-server-new.d.ts +12 -0
- package/dist/integrated-mcp-server-new.d.ts.map +1 -0
- package/dist/integrated-mcp-server-new.js +253 -0
- package/dist/integrated-mcp-server-new.js.map +1 -0
- package/dist/integrated-mcp-server.d.ts +25 -0
- package/dist/integrated-mcp-server.d.ts.map +1 -0
- package/dist/integrated-mcp-server.js +541 -0
- package/dist/integrated-mcp-server.js.map +1 -0
- package/dist/mcp-inspector-server.d.ts +3 -0
- package/dist/mcp-inspector-server.d.ts.map +1 -0
- package/dist/mcp-inspector-server.js +119 -0
- package/dist/mcp-inspector-server.js.map +1 -0
- package/dist/mcp-sdk-server.d.ts +3 -0
- package/dist/mcp-sdk-server.d.ts.map +1 -0
- package/dist/mcp-sdk-server.js +90 -0
- package/dist/mcp-sdk-server.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +300 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/parsers/CsvParser.d.ts +7 -0
- package/dist/parsers/CsvParser.d.ts.map +1 -0
- package/dist/parsers/CsvParser.js +98 -0
- package/dist/parsers/CsvParser.js.map +1 -0
- package/dist/parsers/DatabaseParser.d.ts +18 -0
- package/dist/parsers/DatabaseParser.d.ts.map +1 -0
- package/dist/parsers/DatabaseParser.js +372 -0
- package/dist/parsers/DatabaseParser.js.map +1 -0
- package/dist/parsers/ExcelParser.d.ts +8 -0
- package/dist/parsers/ExcelParser.d.ts.map +1 -0
- package/dist/parsers/ExcelParser.js +119 -0
- package/dist/parsers/ExcelParser.js.map +1 -0
- package/dist/parsers/index.d.ts +13 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +88 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/parsers/ExcelParser.js +118 -0
- package/dist/parsers/types/index.js +2 -0
- package/dist/quickmcp-unified-bridge.d.ts +13 -0
- package/dist/quickmcp-unified-bridge.d.ts.map +1 -0
- package/dist/quickmcp-unified-bridge.js +176 -0
- package/dist/quickmcp-unified-bridge.js.map +1 -0
- package/dist/server/ServerManager.d.ts +37 -0
- package/dist/server/ServerManager.d.ts.map +1 -0
- package/dist/server/ServerManager.js +376 -0
- package/dist/server/ServerManager.js.map +1 -0
- package/dist/sqlite-manager.js +145 -0
- package/dist/start-new-server.d.ts +3 -0
- package/dist/start-new-server.d.ts.map +1 -0
- package/dist/start-new-server.js +10 -0
- package/dist/start-new-server.js.map +1 -0
- package/dist/test-app.d.ts +2 -0
- package/dist/test-app.d.ts.map +1 -0
- package/dist/test-app.js +119 -0
- package/dist/test-app.js.map +1 -0
- package/dist/test-new-architecture.d.ts +3 -0
- package/dist/test-new-architecture.d.ts.map +1 -0
- package/dist/test-new-architecture.js +72 -0
- package/dist/test-new-architecture.js.map +1 -0
- package/dist/transport/base-transport.d.ts +21 -0
- package/dist/transport/base-transport.d.ts.map +1 -0
- package/dist/transport/base-transport.js +16 -0
- package/dist/transport/base-transport.js.map +1 -0
- package/dist/transport/index.d.ts +10 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +12 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/sse-transport.d.ts +13 -0
- package/dist/transport/sse-transport.d.ts.map +1 -0
- package/dist/transport/sse-transport.js +106 -0
- package/dist/transport/sse-transport.js.map +1 -0
- package/dist/transport/stdio-transport.d.ts +8 -0
- package/dist/transport/stdio-transport.d.ts.map +1 -0
- package/dist/transport/stdio-transport.js +53 -0
- package/dist/transport/stdio-transport.js.map +1 -0
- package/dist/transport/streamable-http-transport.d.ts +15 -0
- package/dist/transport/streamable-http-transport.d.ts.map +1 -0
- package/dist/transport/streamable-http-transport.js +151 -0
- package/dist/transport/streamable-http-transport.js.map +1 -0
- package/dist/types/index.d.ts +64 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/web/client/MCPClient.js +348 -0
- package/dist/web/client/MCPTestRunner.js +317 -0
- package/dist/web/database/json-manager.js +124 -0
- package/dist/web/database/sqlite-manager.js +146 -0
- package/dist/web/dynamic-mcp-executor.js +443 -0
- package/dist/web/generators/MCPServerGenerator-new.js +284 -0
- package/dist/web/generators/MCPServerGenerator.js +566 -0
- package/dist/web/integrated-mcp-server-new.js +394 -0
- package/dist/web/parsers/CsvParser.js +144 -0
- package/dist/web/parsers/DatabaseParser.js +637 -0
- package/dist/web/parsers/ExcelParser.js +180 -0
- package/dist/web/parsers/index.js +152 -0
- package/dist/web/server.d.ts +3 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +790 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web/types/index.js +2 -0
- package/dist/web/web/server.js +860 -0
- package/package.json +68 -0
- package/quickmcp-direct-stdio.js +328 -0
- package/src/web/public/app.js +1795 -0
- package/src/web/public/database-tables.html +711 -0
- package/src/web/public/how-to-use.html +571 -0
- package/src/web/public/how-to-use.js +255 -0
- package/src/web/public/images/1-claude-quickmcp-stdio.png +0 -0
- package/src/web/public/images/2-claude-tools.png +0 -0
- package/src/web/public/images/3-claude-developer-settings.png +0 -0
- package/src/web/public/images/4-claude-config.png +0 -0
- package/src/web/public/images/5-claude-config-edit.png +0 -0
- package/src/web/public/index.html +626 -0
- package/src/web/public/manage-servers.html +198 -0
- package/src/web/public/modern-styles.css +946 -0
- package/src/web/public/shared-styles.css +2091 -0
- package/src/web/public/shared.js +93 -0
- package/src/web/public/test-servers.html +302 -0
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MCPServerGenerator = void 0;
|
|
4
|
+
const sqlite_manager_js_1 = require("../database/sqlite-manager.js");
|
|
5
|
+
class MCPServerGenerator {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.sqliteManager = new sqlite_manager_js_1.SQLiteManager();
|
|
8
|
+
}
|
|
9
|
+
async generateServer(serverId, serverName, parsedData, dbConfig) {
|
|
10
|
+
try {
|
|
11
|
+
console.error(`🚀 Generating virtual MCP server: ${serverId}`);
|
|
12
|
+
// Create server config
|
|
13
|
+
const serverConfig = {
|
|
14
|
+
id: serverId,
|
|
15
|
+
name: serverName,
|
|
16
|
+
dbConfig: dbConfig,
|
|
17
|
+
createdAt: new Date().toISOString()
|
|
18
|
+
};
|
|
19
|
+
// Save server to SQLite database only
|
|
20
|
+
this.sqliteManager.saveServer(serverConfig);
|
|
21
|
+
console.error(`✅ Server config saved to SQLite database: ${serverId}`);
|
|
22
|
+
// Generate and save tools
|
|
23
|
+
const tools = this.generateToolsForData(serverId, parsedData, dbConfig);
|
|
24
|
+
if (tools.length > 0) {
|
|
25
|
+
this.sqliteManager.saveTools(tools);
|
|
26
|
+
console.error(`✅ Generated ${tools.length} tools for server ${serverId}`);
|
|
27
|
+
}
|
|
28
|
+
// Generate and save resources
|
|
29
|
+
const resources = this.generateResourcesForData(serverId, parsedData, dbConfig);
|
|
30
|
+
if (resources.length > 0) {
|
|
31
|
+
this.sqliteManager.saveResources(resources);
|
|
32
|
+
console.error(`✅ Generated ${resources.length} resources for server ${serverId}`);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
success: true,
|
|
36
|
+
message: `Virtual MCP server '${serverId}' created successfully with ${tools.length} tools and ${resources.length} resources`
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error(`❌ Error generating server ${serverId}:`, error);
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
message: `Failed to generate server: ${error instanceof Error ? error.message : 'Unknown error'}`
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
generateToolsForData(serverId, parsedData, dbConfig) {
|
|
48
|
+
const tools = [];
|
|
49
|
+
for (const [tableName, rows] of Object.entries(parsedData)) {
|
|
50
|
+
if (!rows || rows.length === 0)
|
|
51
|
+
continue;
|
|
52
|
+
const columns = this.analyzeColumns(rows);
|
|
53
|
+
const cleanTableName = this.sanitizeName(tableName);
|
|
54
|
+
// GET tool
|
|
55
|
+
tools.push({
|
|
56
|
+
server_id: serverId,
|
|
57
|
+
name: `get_${cleanTableName}`,
|
|
58
|
+
description: `Get records from ${tableName} table`,
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
limit: {
|
|
63
|
+
type: 'number',
|
|
64
|
+
description: 'Maximum number of records to return',
|
|
65
|
+
default: 100,
|
|
66
|
+
minimum: 1,
|
|
67
|
+
maximum: 1000
|
|
68
|
+
},
|
|
69
|
+
offset: {
|
|
70
|
+
type: 'number',
|
|
71
|
+
description: 'Number of records to skip',
|
|
72
|
+
default: 0,
|
|
73
|
+
minimum: 0
|
|
74
|
+
},
|
|
75
|
+
...this.generateFilterProperties(columns)
|
|
76
|
+
},
|
|
77
|
+
required: []
|
|
78
|
+
},
|
|
79
|
+
sqlQuery: this.generateSelectQuery(tableName, columns, dbConfig.type),
|
|
80
|
+
operation: 'SELECT'
|
|
81
|
+
});
|
|
82
|
+
// CREATE tool
|
|
83
|
+
tools.push({
|
|
84
|
+
server_id: serverId,
|
|
85
|
+
name: `create_${cleanTableName}`,
|
|
86
|
+
description: `Create a new record in ${tableName} table`,
|
|
87
|
+
inputSchema: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: this.generateInputProperties(columns, true),
|
|
90
|
+
required: columns.filter(col => !col.nullable && col.name.toLowerCase() !== 'id').map(col => col.name)
|
|
91
|
+
},
|
|
92
|
+
sqlQuery: this.generateInsertQuery(tableName, columns, dbConfig.type),
|
|
93
|
+
operation: 'INSERT'
|
|
94
|
+
});
|
|
95
|
+
// UPDATE tool
|
|
96
|
+
if (columns.some(col => col.name.toLowerCase() === 'id')) {
|
|
97
|
+
tools.push({
|
|
98
|
+
server_id: serverId,
|
|
99
|
+
name: `update_${cleanTableName}`,
|
|
100
|
+
description: `Update a record in ${tableName} table`,
|
|
101
|
+
inputSchema: {
|
|
102
|
+
type: 'object',
|
|
103
|
+
properties: {
|
|
104
|
+
id: {
|
|
105
|
+
type: ['string', 'number'],
|
|
106
|
+
description: 'ID of the record to update'
|
|
107
|
+
},
|
|
108
|
+
...this.generateInputProperties(columns, false)
|
|
109
|
+
},
|
|
110
|
+
required: ['id']
|
|
111
|
+
},
|
|
112
|
+
sqlQuery: this.generateUpdateQuery(tableName, columns, dbConfig.type),
|
|
113
|
+
operation: 'UPDATE'
|
|
114
|
+
});
|
|
115
|
+
// DELETE tool
|
|
116
|
+
tools.push({
|
|
117
|
+
server_id: serverId,
|
|
118
|
+
name: `delete_${cleanTableName}`,
|
|
119
|
+
description: `Delete a record from ${tableName} table`,
|
|
120
|
+
inputSchema: {
|
|
121
|
+
type: 'object',
|
|
122
|
+
properties: {
|
|
123
|
+
id: {
|
|
124
|
+
type: ['string', 'number'],
|
|
125
|
+
description: 'ID of the record to delete'
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
required: ['id']
|
|
129
|
+
},
|
|
130
|
+
sqlQuery: this.generateDeleteQuery(tableName, dbConfig.type),
|
|
131
|
+
operation: 'DELETE'
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return tools;
|
|
136
|
+
}
|
|
137
|
+
generateResourcesForData(serverId, parsedData, dbConfig) {
|
|
138
|
+
const resources = [];
|
|
139
|
+
for (const [tableName, rows] of Object.entries(parsedData)) {
|
|
140
|
+
if (!rows || rows.length === 0)
|
|
141
|
+
continue;
|
|
142
|
+
const cleanTableName = this.sanitizeName(tableName);
|
|
143
|
+
resources.push({
|
|
144
|
+
server_id: serverId,
|
|
145
|
+
name: `${cleanTableName}_list`,
|
|
146
|
+
description: `List all records from ${tableName} table`,
|
|
147
|
+
uri_template: `${cleanTableName}://list`,
|
|
148
|
+
sqlQuery: this.generateSelectQuery(tableName, this.analyzeColumns(rows), dbConfig.type, false)
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return resources;
|
|
152
|
+
}
|
|
153
|
+
analyzeColumns(rows) {
|
|
154
|
+
if (!rows || rows.length === 0)
|
|
155
|
+
return [];
|
|
156
|
+
const firstRow = rows[0];
|
|
157
|
+
const columns = [];
|
|
158
|
+
for (const [key, value] of Object.entries(firstRow)) {
|
|
159
|
+
let type = 'string';
|
|
160
|
+
if (typeof value === 'number') {
|
|
161
|
+
type = Number.isInteger(value) ? 'integer' : 'number';
|
|
162
|
+
}
|
|
163
|
+
else if (typeof value === 'boolean') {
|
|
164
|
+
type = 'boolean';
|
|
165
|
+
}
|
|
166
|
+
else if (value instanceof Date) {
|
|
167
|
+
type = 'string'; // Dates are handled as strings in JSON
|
|
168
|
+
}
|
|
169
|
+
else if (value === null || value === undefined) {
|
|
170
|
+
// Check other rows to determine type
|
|
171
|
+
for (let i = 1; i < Math.min(rows.length, 10); i++) {
|
|
172
|
+
const otherValue = rows[i][key];
|
|
173
|
+
if (otherValue !== null && otherValue !== undefined) {
|
|
174
|
+
if (typeof otherValue === 'number') {
|
|
175
|
+
type = Number.isInteger(otherValue) ? 'integer' : 'number';
|
|
176
|
+
}
|
|
177
|
+
else if (typeof otherValue === 'boolean') {
|
|
178
|
+
type = 'boolean';
|
|
179
|
+
}
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
columns.push({
|
|
185
|
+
name: key,
|
|
186
|
+
type: type,
|
|
187
|
+
nullable: rows.some(row => row[key] === null || row[key] === undefined)
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
return columns;
|
|
191
|
+
}
|
|
192
|
+
generateFilterProperties(columns) {
|
|
193
|
+
const properties = {};
|
|
194
|
+
for (const column of columns) {
|
|
195
|
+
const baseType = column.type === 'integer' ? 'number' : column.type;
|
|
196
|
+
properties[`filter_${column.name}`] = {
|
|
197
|
+
type: baseType,
|
|
198
|
+
description: `Filter by ${column.name}`
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
return properties;
|
|
202
|
+
}
|
|
203
|
+
generateInputProperties(columns, isCreate) {
|
|
204
|
+
const properties = {};
|
|
205
|
+
for (const column of columns) {
|
|
206
|
+
// Skip ID field for create operations
|
|
207
|
+
if (isCreate && column.name.toLowerCase() === 'id')
|
|
208
|
+
continue;
|
|
209
|
+
const baseType = column.type === 'integer' ? 'number' : column.type;
|
|
210
|
+
properties[column.name] = {
|
|
211
|
+
type: column.nullable ? [baseType, 'null'] : baseType,
|
|
212
|
+
description: `${column.name} field`
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
return properties;
|
|
216
|
+
}
|
|
217
|
+
generateSelectQuery(tableName, columns, dbType, withParams = true) {
|
|
218
|
+
const columnList = columns.map(col => `[${col.name}]`).join(', ');
|
|
219
|
+
let query = `SELECT ${columnList} FROM [${tableName}]`;
|
|
220
|
+
if (withParams) {
|
|
221
|
+
const whereConditions = columns.map(col => `(@filter_${col.name} IS NULL OR [${col.name}] = @filter_${col.name})`).join(' AND ');
|
|
222
|
+
query += ` WHERE ${whereConditions}`;
|
|
223
|
+
if (dbType === 'mssql') {
|
|
224
|
+
// Use TOP for SQL Server to avoid OFFSET/FETCH complexity
|
|
225
|
+
// Replace SELECT with SELECT TOP
|
|
226
|
+
query = query.replace('SELECT ', 'SELECT TOP (@limit) ');
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
query += ' LIMIT @limit OFFSET @offset';
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return query;
|
|
233
|
+
}
|
|
234
|
+
generateInsertQuery(tableName, columns, dbType) {
|
|
235
|
+
const insertColumns = columns.filter(col => col.name.toLowerCase() !== 'id');
|
|
236
|
+
const columnNames = insertColumns.map(col => `[${col.name}]`).join(', ');
|
|
237
|
+
const paramNames = insertColumns.map(col => `@${col.name}`).join(', ');
|
|
238
|
+
return `INSERT INTO [${tableName}] (${columnNames}) VALUES (${paramNames})`;
|
|
239
|
+
}
|
|
240
|
+
generateUpdateQuery(tableName, columns, dbType) {
|
|
241
|
+
const updateColumns = columns.filter(col => col.name.toLowerCase() !== 'id');
|
|
242
|
+
const setClause = updateColumns.map(col => `[${col.name}] = @${col.name}`).join(', ');
|
|
243
|
+
return `UPDATE [${tableName}] SET ${setClause} WHERE [Id] = @id`;
|
|
244
|
+
}
|
|
245
|
+
generateDeleteQuery(tableName, dbType) {
|
|
246
|
+
return `DELETE FROM [${tableName}] WHERE [Id] = @id`;
|
|
247
|
+
}
|
|
248
|
+
sanitizeName(name) {
|
|
249
|
+
return name.toLowerCase()
|
|
250
|
+
.replace(/[^a-z0-9]/g, '_')
|
|
251
|
+
.replace(/_{2,}/g, '_')
|
|
252
|
+
.replace(/^_|_$/g, '');
|
|
253
|
+
}
|
|
254
|
+
// Public methods for management
|
|
255
|
+
getAllServers() {
|
|
256
|
+
return this.sqliteManager.getAllServers();
|
|
257
|
+
}
|
|
258
|
+
getServer(serverId) {
|
|
259
|
+
return this.sqliteManager.getServer(serverId);
|
|
260
|
+
}
|
|
261
|
+
deleteServer(serverId) {
|
|
262
|
+
this.sqliteManager.deleteServer(serverId);
|
|
263
|
+
console.error(`🗑️ Deleted server from SQLite database: ${serverId}`);
|
|
264
|
+
}
|
|
265
|
+
getAllTools() {
|
|
266
|
+
return this.sqliteManager.getAllTools();
|
|
267
|
+
}
|
|
268
|
+
getToolsForServer(serverId) {
|
|
269
|
+
return this.sqliteManager.getToolsForServer(serverId);
|
|
270
|
+
}
|
|
271
|
+
getAllResources() {
|
|
272
|
+
return this.sqliteManager.getAllResources();
|
|
273
|
+
}
|
|
274
|
+
getResourcesForServer(serverId) {
|
|
275
|
+
return this.sqliteManager.getResourcesForServer(serverId);
|
|
276
|
+
}
|
|
277
|
+
getStats() {
|
|
278
|
+
return this.sqliteManager.getStats();
|
|
279
|
+
}
|
|
280
|
+
close() {
|
|
281
|
+
this.sqliteManager.close();
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
exports.MCPServerGenerator = MCPServerGenerator;
|