@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 @@
1
+ {"version":3,"file":"json-manager.js","sourceRoot":"","sources":["../../src/database/json-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
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
+ }
53
+ //# sourceMappingURL=sqlite-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-manager.d.ts","sourceRoot":"","sources":["../../src/database/sqlite-manager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACtD;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAS;;IAsBvB,OAAO,CAAC,gBAAgB;IA+CxB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IActC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAchD,aAAa,IAAI,YAAY,EAAE;IAY/B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMpC,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAsBxC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE;IAcrD,WAAW,IAAI,cAAc,EAAE;IAe/B,aAAa,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAqBpD,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAa7D,eAAe,IAAI,kBAAkB,EAAE;IAcvC,KAAK,IAAI,IAAI;IAKb,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAWlE"}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SQLiteManager = void 0;
7
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ class SQLiteManager {
11
+ constructor() {
12
+ // Resolve data directory relative to the project root (not process.cwd())
13
+ // This prevents attempts to write to "/data" when the process CWD is '/'.
14
+ const projectRoot = path_1.default.resolve(__dirname, '..', '..');
15
+ const configuredDir = process.env.QUICKMCP_DATA_DIR;
16
+ const dbDir = configuredDir
17
+ ? (path_1.default.isAbsolute(configuredDir)
18
+ ? configuredDir
19
+ : path_1.default.join(projectRoot, configuredDir))
20
+ : path_1.default.join(projectRoot, 'data');
21
+ if (!fs_1.default.existsSync(dbDir)) {
22
+ fs_1.default.mkdirSync(dbDir, { recursive: true });
23
+ }
24
+ this.dbPath = path_1.default.join(dbDir, 'quickmcp.sqlite');
25
+ this.db = new better_sqlite3_1.default(this.dbPath);
26
+ this.initializeTables();
27
+ }
28
+ initializeTables() {
29
+ // Servers table
30
+ this.db.exec(`
31
+ CREATE TABLE IF NOT EXISTS servers (
32
+ id TEXT PRIMARY KEY,
33
+ name TEXT NOT NULL,
34
+ db_config TEXT NOT NULL,
35
+ created_at TEXT NOT NULL,
36
+ updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
37
+ )
38
+ `);
39
+ // Tools table
40
+ this.db.exec(`
41
+ CREATE TABLE IF NOT EXISTS tools (
42
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
43
+ server_id TEXT NOT NULL,
44
+ name TEXT NOT NULL,
45
+ description TEXT NOT NULL,
46
+ input_schema TEXT NOT NULL,
47
+ sql_query TEXT NOT NULL,
48
+ operation TEXT NOT NULL CHECK (operation IN ('SELECT', 'INSERT', 'UPDATE', 'DELETE')),
49
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
50
+ FOREIGN KEY (server_id) REFERENCES servers (id) ON DELETE CASCADE,
51
+ UNIQUE(server_id, name)
52
+ )
53
+ `);
54
+ // Resources table
55
+ this.db.exec(`
56
+ CREATE TABLE IF NOT EXISTS resources (
57
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
58
+ server_id TEXT NOT NULL,
59
+ name TEXT NOT NULL,
60
+ description TEXT NOT NULL,
61
+ uri_template TEXT NOT NULL,
62
+ sql_query TEXT NOT NULL,
63
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
64
+ FOREIGN KEY (server_id) REFERENCES servers (id) ON DELETE CASCADE,
65
+ UNIQUE(server_id, name)
66
+ )
67
+ `);
68
+ //console.error('✅ SQLite database initialized:', this.dbPath);
69
+ }
70
+ // Server operations
71
+ saveServer(server) {
72
+ const stmt = this.db.prepare(`
73
+ INSERT OR REPLACE INTO servers (id, name, db_config, created_at, updated_at)
74
+ VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP)
75
+ `);
76
+ stmt.run(server.id, server.name, JSON.stringify(server.dbConfig), server.createdAt);
77
+ }
78
+ getServer(serverId) {
79
+ const stmt = this.db.prepare('SELECT * FROM servers WHERE id = ?');
80
+ const row = stmt.get(serverId);
81
+ if (!row)
82
+ return null;
83
+ return {
84
+ id: row.id,
85
+ name: row.name,
86
+ dbConfig: JSON.parse(row.db_config),
87
+ createdAt: row.created_at
88
+ };
89
+ }
90
+ getAllServers() {
91
+ const stmt = this.db.prepare('SELECT * FROM servers ORDER BY created_at DESC');
92
+ const rows = stmt.all();
93
+ return rows.map(row => ({
94
+ id: row.id,
95
+ name: row.name,
96
+ dbConfig: JSON.parse(row.db_config),
97
+ createdAt: row.created_at
98
+ }));
99
+ }
100
+ deleteServer(serverId) {
101
+ const stmt = this.db.prepare('DELETE FROM servers WHERE id = ?');
102
+ stmt.run(serverId);
103
+ }
104
+ // Tool operations
105
+ saveTools(tools) {
106
+ const stmt = this.db.prepare(`
107
+ INSERT OR REPLACE INTO tools (server_id, name, description, input_schema, sql_query, operation)
108
+ VALUES (?, ?, ?, ?, ?, ?)
109
+ `);
110
+ const transaction = this.db.transaction((tools) => {
111
+ for (const tool of tools) {
112
+ stmt.run(tool.server_id, tool.name, tool.description, JSON.stringify(tool.inputSchema), tool.sqlQuery, tool.operation);
113
+ }
114
+ });
115
+ transaction(tools);
116
+ }
117
+ getToolsForServer(serverId) {
118
+ const stmt = this.db.prepare('SELECT * FROM tools WHERE server_id = ?');
119
+ const rows = stmt.all(serverId);
120
+ return rows.map(row => ({
121
+ server_id: row.server_id,
122
+ name: row.name,
123
+ description: row.description,
124
+ inputSchema: JSON.parse(row.input_schema),
125
+ sqlQuery: row.sql_query,
126
+ operation: row.operation
127
+ }));
128
+ }
129
+ getAllTools() {
130
+ const stmt = this.db.prepare('SELECT * FROM tools ORDER BY server_id, name');
131
+ const rows = stmt.all();
132
+ return rows.map(row => ({
133
+ server_id: row.server_id,
134
+ name: row.name,
135
+ description: row.description,
136
+ inputSchema: JSON.parse(row.input_schema),
137
+ sqlQuery: row.sql_query,
138
+ operation: row.operation
139
+ }));
140
+ }
141
+ // Resource operations
142
+ saveResources(resources) {
143
+ const stmt = this.db.prepare(`
144
+ INSERT OR REPLACE INTO resources (server_id, name, description, uri_template, sql_query)
145
+ VALUES (?, ?, ?, ?, ?)
146
+ `);
147
+ const transaction = this.db.transaction((resources) => {
148
+ for (const resource of resources) {
149
+ stmt.run(resource.server_id, resource.name, resource.description, resource.uri_template, resource.sqlQuery);
150
+ }
151
+ });
152
+ transaction(resources);
153
+ }
154
+ getResourcesForServer(serverId) {
155
+ const stmt = this.db.prepare('SELECT * FROM resources WHERE server_id = ?');
156
+ const rows = stmt.all(serverId);
157
+ return rows.map(row => ({
158
+ server_id: row.server_id,
159
+ name: row.name,
160
+ description: row.description,
161
+ uri_template: row.uri_template,
162
+ sqlQuery: row.sql_query
163
+ }));
164
+ }
165
+ getAllResources() {
166
+ const stmt = this.db.prepare('SELECT * FROM resources ORDER BY server_id, name');
167
+ const rows = stmt.all();
168
+ return rows.map(row => ({
169
+ server_id: row.server_id,
170
+ name: row.name,
171
+ description: row.description,
172
+ uri_template: row.uri_template,
173
+ sqlQuery: row.sql_query
174
+ }));
175
+ }
176
+ // Cleanup
177
+ close() {
178
+ this.db.close();
179
+ }
180
+ // Statistics
181
+ getStats() {
182
+ const serversCount = this.db.prepare('SELECT COUNT(*) as count FROM servers').get();
183
+ const toolsCount = this.db.prepare('SELECT COUNT(*) as count FROM tools').get();
184
+ const resourcesCount = this.db.prepare('SELECT COUNT(*) as count FROM resources').get();
185
+ return {
186
+ servers: serversCount.count,
187
+ tools: toolsCount.count,
188
+ resources: resourcesCount.count
189
+ };
190
+ }
191
+ }
192
+ exports.SQLiteManager = SQLiteManager;
193
+ //# sourceMappingURL=sqlite-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-manager.js","sourceRoot":"","sources":["../../src/database/sqlite-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare class DynamicMCPExecutor {
2
+ private sqliteManager;
3
+ private dbConnections;
4
+ constructor();
5
+ getAllTools(): Promise<any[]>;
6
+ getAllResources(): Promise<any[]>;
7
+ executeTool(toolName: string, args: any): Promise<any>;
8
+ readResource(resourceName: string): Promise<any>;
9
+ private getOrCreateConnection;
10
+ private executeQuery;
11
+ getStats(): any;
12
+ close(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=dynamic-mcp-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-mcp-executor.d.ts","sourceRoot":"","sources":["../src/dynamic-mcp-executor.ts"],"names":[],"mappings":"AAWA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAA8C;;IAM7D,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAU7B,eAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAUjC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IA2CtD,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YA6CxC,qBAAqB;YAwErB,YAAY;IAqF1B,QAAQ,IAAI,GAAG;IAOT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAwB7B"}
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DynamicMCPExecutor = void 0;
7
+ const sqlite_manager_1 = require("./database/sqlite-manager");
8
+ const mssql_1 = __importDefault(require("mssql"));
9
+ const promise_1 = __importDefault(require("mysql2/promise"));
10
+ const pg_1 = require("pg");
11
+ class DynamicMCPExecutor {
12
+ constructor() {
13
+ this.dbConnections = new Map();
14
+ this.sqliteManager = new sqlite_manager_1.SQLiteManager();
15
+ }
16
+ async getAllTools() {
17
+ const tools = this.sqliteManager.getAllTools();
18
+ return tools.map(tool => ({
19
+ name: `${tool.server_id}__${tool.name}`,
20
+ description: `[${tool.server_id}] ${tool.description}`,
21
+ inputSchema: typeof tool.inputSchema === 'string' ? JSON.parse(tool.inputSchema) : tool.inputSchema
22
+ }));
23
+ }
24
+ async getAllResources() {
25
+ const resources = this.sqliteManager.getAllResources();
26
+ return resources.map(resource => ({
27
+ name: `${resource.server_id}__${resource.name}`,
28
+ description: `[${resource.server_id}] ${resource.description}`,
29
+ uri: resource.uri_template
30
+ }));
31
+ }
32
+ async executeTool(toolName, args) {
33
+ try {
34
+ // Parse tool name: "serverId__toolName"
35
+ const parts = toolName.split('__');
36
+ if (parts.length !== 2) {
37
+ throw new Error(`Invalid tool name format: ${toolName}`);
38
+ }
39
+ const [serverId, actualToolName] = parts;
40
+ // Get tool definition from JSON database
41
+ const tools = this.sqliteManager.getToolsForServer(serverId);
42
+ const tool = tools.find(t => t.name === actualToolName);
43
+ if (!tool) {
44
+ throw new Error(`Tool not found: ${toolName}`);
45
+ }
46
+ // Get server config from JSON database
47
+ const serverConfig = this.sqliteManager.getServer(serverId);
48
+ if (!serverConfig) {
49
+ throw new Error(`Server not found: ${serverId}`);
50
+ }
51
+ // Get or create database connection
52
+ const dbConnection = await this.getOrCreateConnection(serverId, serverConfig.dbConfig);
53
+ // Execute the SQL query
54
+ const result = await this.executeQuery(dbConnection, tool.sqlQuery, args, tool.operation);
55
+ console.error(`✅ Executed tool ${toolName} successfully`);
56
+ return {
57
+ success: true,
58
+ data: result,
59
+ rowCount: Array.isArray(result) ? result.length : (result.rowsAffected || 0)
60
+ };
61
+ }
62
+ catch (error) {
63
+ console.error(`❌ Error executing tool ${toolName}:`, error);
64
+ throw error;
65
+ }
66
+ }
67
+ async readResource(resourceName) {
68
+ try {
69
+ // Parse resource name: "serverId__resourceName"
70
+ const parts = resourceName.split('__');
71
+ if (parts.length !== 2) {
72
+ throw new Error(`Invalid resource name format: ${resourceName}`);
73
+ }
74
+ const [serverId, actualResourceName] = parts;
75
+ // Get resource definition from JSON database
76
+ const resources = this.sqliteManager.getResourcesForServer(serverId);
77
+ const resource = resources.find(r => r.name === actualResourceName);
78
+ if (!resource) {
79
+ throw new Error(`Resource not found: ${resourceName}`);
80
+ }
81
+ // Get server config from JSON database
82
+ const serverConfig = this.sqliteManager.getServer(serverId);
83
+ if (!serverConfig) {
84
+ throw new Error(`Server not found: ${serverId}`);
85
+ }
86
+ // Get or create database connection
87
+ const dbConnection = await this.getOrCreateConnection(serverId, serverConfig.dbConfig);
88
+ // Execute the SQL query
89
+ const result = await this.executeQuery(dbConnection, resource.sqlQuery, {}, 'SELECT');
90
+ console.error(`✅ Read resource ${resourceName} successfully`);
91
+ return {
92
+ contents: [{
93
+ uri: resource.uri_template,
94
+ mimeType: 'application/json',
95
+ text: JSON.stringify(result, null, 2)
96
+ }]
97
+ };
98
+ }
99
+ catch (error) {
100
+ console.error(`❌ Error reading resource ${resourceName}:`, error);
101
+ throw error;
102
+ }
103
+ }
104
+ async getOrCreateConnection(serverId, dbConfig) {
105
+ if (this.dbConnections.has(serverId)) {
106
+ return this.dbConnections.get(serverId);
107
+ }
108
+ let connection;
109
+ let dbConnection;
110
+ try {
111
+ switch (dbConfig.type) {
112
+ case 'mssql':
113
+ connection = await mssql_1.default.connect({
114
+ server: dbConfig.host,
115
+ port: dbConfig.port || 1433,
116
+ database: dbConfig.database,
117
+ user: dbConfig.username,
118
+ password: dbConfig.password,
119
+ options: {
120
+ encrypt: dbConfig.encrypt || false,
121
+ trustServerCertificate: dbConfig.trustServerCertificate ?? true
122
+ }
123
+ });
124
+ console.error(`🔗 Connected to MSSQL database for server ${serverId}`);
125
+ break;
126
+ case 'mysql':
127
+ connection = promise_1.default.createConnection({
128
+ host: dbConfig.host,
129
+ port: dbConfig.port || 3306,
130
+ database: dbConfig.database,
131
+ user: dbConfig.username,
132
+ password: dbConfig.password
133
+ });
134
+ await connection.connect();
135
+ console.error(`🔗 Connected to MySQL database for server ${serverId}`);
136
+ break;
137
+ case 'postgresql':
138
+ connection = new pg_1.Pool({
139
+ host: dbConfig.host,
140
+ port: dbConfig.port || 5432,
141
+ database: dbConfig.database,
142
+ user: dbConfig.username,
143
+ password: dbConfig.password
144
+ });
145
+ // Test connection
146
+ await connection.query('SELECT 1');
147
+ console.error(`🔗 Connected to PostgreSQL database for server ${serverId}`);
148
+ break;
149
+ default:
150
+ throw new Error(`Unsupported database type: ${dbConfig.type}`);
151
+ }
152
+ dbConnection = {
153
+ type: dbConfig.type,
154
+ connection,
155
+ config: dbConfig
156
+ };
157
+ this.dbConnections.set(serverId, dbConnection);
158
+ return dbConnection;
159
+ }
160
+ catch (error) {
161
+ console.error(`❌ Failed to connect to database for server ${serverId}:`, error);
162
+ throw error;
163
+ }
164
+ }
165
+ async executeQuery(dbConnection, sqlQuery, args, operation) {
166
+ const { type, connection } = dbConnection;
167
+ try {
168
+ switch (type) {
169
+ case 'mssql':
170
+ const request = connection.request();
171
+ // Extract all @param references from the SQL query
172
+ const paramRegex = /@(\w+)/g;
173
+ let match;
174
+ const sqlParams = new Set();
175
+ while ((match = paramRegex.exec(sqlQuery)) !== null) {
176
+ sqlParams.add(match[1]);
177
+ }
178
+ // For SQL Server, handle data type compatibility issues
179
+ // If no filter parameters are provided (all are null), simplify the query
180
+ const hasActiveFilters = Array.from(sqlParams).some((paramName) => {
181
+ if (paramName === 'limit' || paramName === 'offset')
182
+ return false;
183
+ const value = args[paramName];
184
+ return value !== undefined && value !== null;
185
+ });
186
+ let modifiedQuery = sqlQuery;
187
+ if (!hasActiveFilters && operation === 'SELECT') {
188
+ // Remove complex WHERE clause that causes ntext compatibility issues
189
+ modifiedQuery = sqlQuery.replace(/WHERE.*?(?=ORDER BY|GROUP BY|HAVING|$)/gi, '');
190
+ }
191
+ // Always add all SQL parameters, using provided values or defaults
192
+ for (const paramName of sqlParams) {
193
+ const paramNameStr = paramName;
194
+ let value = args[paramNameStr];
195
+ // Set defaults for limit and offset if not provided
196
+ if (paramNameStr === 'limit' && (value === undefined || value === null)) {
197
+ value = 100;
198
+ }
199
+ else if (paramNameStr === 'offset' && (value === undefined || value === null)) {
200
+ value = 0;
201
+ }
202
+ if (value !== undefined && value !== null) {
203
+ request.input(paramNameStr, value);
204
+ }
205
+ else {
206
+ request.input(paramNameStr, null);
207
+ }
208
+ }
209
+ const result = await request.query(modifiedQuery);
210
+ if (operation === 'SELECT') {
211
+ return result.recordset;
212
+ }
213
+ else {
214
+ return { rowsAffected: result.rowsAffected[0] };
215
+ }
216
+ case 'mysql':
217
+ const [rows] = await connection.execute(sqlQuery, Object.values(args).filter(v => v !== undefined && v !== null));
218
+ if (operation === 'SELECT') {
219
+ return rows;
220
+ }
221
+ else {
222
+ return { rowsAffected: rows.affectedRows };
223
+ }
224
+ case 'postgresql':
225
+ const values = Object.values(args).filter(v => v !== undefined && v !== null);
226
+ const pgResult = await connection.query(sqlQuery, values);
227
+ if (operation === 'SELECT') {
228
+ return pgResult.rows;
229
+ }
230
+ else {
231
+ return { rowsAffected: pgResult.rowCount };
232
+ }
233
+ default:
234
+ throw new Error(`Unsupported database type: ${type}`);
235
+ }
236
+ }
237
+ catch (error) {
238
+ console.error(`❌ Database query failed:`, error);
239
+ throw error;
240
+ }
241
+ }
242
+ getStats() {
243
+ return {
244
+ ...this.sqliteManager.getStats(),
245
+ activeConnections: this.dbConnections.size
246
+ };
247
+ }
248
+ async close() {
249
+ // Close all database connections
250
+ for (const [serverId, dbConnection] of this.dbConnections.entries()) {
251
+ try {
252
+ switch (dbConnection.type) {
253
+ case 'mssql':
254
+ await dbConnection.connection.close();
255
+ break;
256
+ case 'mysql':
257
+ await dbConnection.connection.end();
258
+ break;
259
+ case 'postgresql':
260
+ await dbConnection.connection.end();
261
+ break;
262
+ }
263
+ console.error(`🔌 Closed database connection for server ${serverId}`);
264
+ }
265
+ catch (error) {
266
+ console.error(`❌ Error closing connection for server ${serverId}:`, error);
267
+ }
268
+ }
269
+ this.dbConnections.clear();
270
+ this.sqliteManager.close();
271
+ }
272
+ }
273
+ exports.DynamicMCPExecutor = DynamicMCPExecutor;
274
+ //# sourceMappingURL=dynamic-mcp-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-mcp-executor.js","sourceRoot":"","sources":["../src/dynamic-mcp-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { ServerConfig, ToolDefinition, ResourceDefinition } from '../database/sqlite-manager.js';
2
+ interface ParsedData {
3
+ [tableName: string]: any[];
4
+ }
5
+ export declare class MCPServerGenerator {
6
+ private sqliteManager;
7
+ constructor();
8
+ generateServer(serverId: string, serverName: string, parsedData: ParsedData, dbConfig: any): Promise<{
9
+ success: boolean;
10
+ message: string;
11
+ }>;
12
+ private generateToolsForData;
13
+ private generateResourcesForData;
14
+ private analyzeColumns;
15
+ private generateFilterProperties;
16
+ private generateInputProperties;
17
+ private generateSelectQuery;
18
+ private generateInsertQuery;
19
+ private generateUpdateQuery;
20
+ private generateDeleteQuery;
21
+ private sanitizeName;
22
+ getAllServers(): ServerConfig[];
23
+ getServer(serverId: string): ServerConfig | null;
24
+ deleteServer(serverId: string): void;
25
+ getAllTools(): ToolDefinition[];
26
+ getToolsForServer(serverId: string): ToolDefinition[];
27
+ getAllResources(): ResourceDefinition[];
28
+ getResourcesForServer(serverId: string): ResourceDefinition[];
29
+ getStats(): {
30
+ servers: number;
31
+ tools: number;
32
+ resources: number;
33
+ };
34
+ close(): void;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=MCPServerGenerator-new.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPServerGenerator-new.d.ts","sourceRoot":"","sources":["../../src/generators/MCPServerGenerator-new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAQhH,UAAU,UAAU;IAClB,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;CAC5B;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,aAAa,CAAgB;;IAM/B,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,GAAG,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA6CjD,OAAO,CAAC,oBAAoB;IAiG5B,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,YAAY;IAQpB,aAAa,IAAI,YAAY,EAAE;IAI/B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAIhD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,WAAW,IAAI,cAAc,EAAE;IAI/B,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE;IAIrD,eAAe,IAAI,kBAAkB,EAAE;IAIvC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAI7D,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAIjE,KAAK,IAAI,IAAI;CAGd"}