@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,255 @@
1
+ // Method switching functionality
2
+ function showMethod(method) {
3
+ const integratedBtn = document.getElementById('integratedBtn');
4
+ const individualBtn = document.getElementById('individualBtn');
5
+ const integratedMethod = document.getElementById('integratedMethod');
6
+ const individualMethod = document.getElementById('individualMethod');
7
+ const serverListSection = document.getElementById('serverListSection');
8
+
9
+ // Update button states
10
+ integratedBtn.classList.remove('active');
11
+ individualBtn.classList.remove('active');
12
+
13
+ // Update content visibility
14
+ integratedMethod.style.display = 'none';
15
+ individualMethod.style.display = 'none';
16
+ serverListSection.style.display = 'none';
17
+
18
+ if (method === 'integrated') {
19
+ integratedBtn.classList.add('active');
20
+ integratedMethod.style.display = 'block';
21
+ // Reset to Claude tab by default
22
+ showIntegratedPlatform('claude');
23
+ } else {
24
+ individualBtn.classList.add('active');
25
+ individualMethod.style.display = 'block';
26
+ serverListSection.style.display = 'block';
27
+ loadExportServerList();
28
+ // Reset to Claude tab by default
29
+ showIndividualPlatform('claude');
30
+ }
31
+ }
32
+
33
+ // Platform switching for Integrated Method
34
+ function showIntegratedPlatform(platform) {
35
+ // Update tabs
36
+ document.getElementById('integratedClaudeTab').classList.remove('active');
37
+ document.getElementById('integratedOpenAITab').classList.remove('active');
38
+
39
+ // Update content
40
+ document.getElementById('integratedClaude').style.display = 'none';
41
+ document.getElementById('integratedOpenAI').style.display = 'none';
42
+
43
+ if (platform === 'claude') {
44
+ document.getElementById('integratedClaudeTab').classList.add('active');
45
+ document.getElementById('integratedClaude').style.display = 'block';
46
+ } else {
47
+ document.getElementById('integratedOpenAITab').classList.add('active');
48
+ document.getElementById('integratedOpenAI').style.display = 'block';
49
+ // Check status for OpenAI too
50
+ checkOpenAIServerStatus();
51
+ }
52
+ }
53
+
54
+ // Platform switching for Individual Method
55
+ function showIndividualPlatform(platform) {
56
+ // Update tabs
57
+ document.getElementById('individualClaudeTab').classList.remove('active');
58
+ document.getElementById('individualOpenAITab').classList.remove('active');
59
+
60
+ // Update content
61
+ document.getElementById('individualClaude').style.display = 'none';
62
+ document.getElementById('individualOpenAI').style.display = 'none';
63
+
64
+ if (platform === 'claude') {
65
+ document.getElementById('individualClaudeTab').classList.add('active');
66
+ document.getElementById('individualClaude').style.display = 'block';
67
+ } else {
68
+ document.getElementById('individualOpenAITab').classList.add('active');
69
+ document.getElementById('individualOpenAI').style.display = 'block';
70
+ }
71
+ }
72
+
73
+ // Copy configuration to clipboard
74
+ function copyConfig(type) {
75
+ let configText;
76
+
77
+ if (type === 'integrated') {
78
+ configText = `{
79
+ "mcpServers": {
80
+ "quickmcp-integrated": {
81
+ "command": "node",
82
+ "args": ["~/mcp-bridge.js"]
83
+ }
84
+ }
85
+ }`;
86
+ } else if (type === 'openai-integrated') {
87
+ configText = `{
88
+ "mcpServers": {
89
+ "quickmcp-integrated": {
90
+ "command": "npx",
91
+ "args": [
92
+ "-y",
93
+ "@modelcontextprotocol/server-sse-client",
94
+ "http://localhost:3001/sse/message"
95
+ ]
96
+ }
97
+ }
98
+ }`;
99
+ } else if (type === 'claude-individual') {
100
+ configText = `{
101
+ "mcpServers": {
102
+ "your-server-name": {
103
+ "command": "node",
104
+ "args": ["path/to/your/server/index.js"]
105
+ }
106
+ }
107
+ }`;
108
+ } else if (type === 'openai-individual') {
109
+ configText = `{
110
+ "mcpServers": {
111
+ "your-server-name": {
112
+ "command": "npx",
113
+ "args": [
114
+ "tsx",
115
+ "path/to/your/server/index.ts"
116
+ ]
117
+ }
118
+ }
119
+ }`;
120
+ }
121
+
122
+ navigator.clipboard.writeText(configText).then(() => {
123
+ // Show feedback
124
+ const btn = event.target;
125
+ const originalText = btn.textContent;
126
+ btn.textContent = '✅ Copied!';
127
+ btn.style.background = '#10b981';
128
+
129
+ setTimeout(() => {
130
+ btn.textContent = originalText;
131
+ btn.style.background = '';
132
+ }, 2000);
133
+ }).catch(err => {
134
+ console.error('Failed to copy: ', err);
135
+ // Fallback: select the text
136
+ const config = document.getElementById('integratedConfig');
137
+ const range = document.createRange();
138
+ range.selectNodeContents(config);
139
+ const selection = window.getSelection();
140
+ selection.removeAllRanges();
141
+ selection.addRange(range);
142
+ });
143
+ }
144
+
145
+ // Check server status
146
+ async function checkServerStatus() {
147
+ const statusDot = document.querySelector('.status-dot');
148
+ const statusText = document.getElementById('statusText');
149
+
150
+ try {
151
+ const response = await fetch('http://localhost:3001/health');
152
+ const data = await response.json();
153
+
154
+ if (data.status === 'OK') {
155
+ statusDot.className = 'status-dot online';
156
+ statusText.textContent = `Online - Managing ${data.serverCount} servers`;
157
+ } else {
158
+ throw new Error('Server not healthy');
159
+ }
160
+ } catch (error) {
161
+ statusDot.className = 'status-dot offline';
162
+ statusText.textContent = 'Offline - Run "npm run dev" to start';
163
+ }
164
+ }
165
+
166
+ // Load servers for export
167
+ async function loadExportServerList() {
168
+ try {
169
+ const response = await fetch('/api/servers');
170
+ const result = await response.json();
171
+
172
+ const serverList = document.getElementById('exportServerList');
173
+
174
+ if (result.success && result.data.length > 0) {
175
+ serverList.classList.add('has-servers');
176
+
177
+ let html = '';
178
+ result.data.forEach(server => {
179
+ html += `
180
+ <div class="server-card">
181
+ <h3>${server.name}</h3>
182
+ <p>${server.description}</p>
183
+ <div class="server-stats">
184
+ <span>Version: ${server.version}</span>
185
+ <span>Tools: ${server.toolsCount}</span>
186
+ <span>Resources: ${server.resourcesCount}</span>
187
+ <span>Prompts: ${server.promptsCount}</span>
188
+ </div>
189
+ <div class="server-actions">
190
+ <button class="btn btn-primary" onclick="exportServerForDownload('${server.id}')">
191
+ 📦 Export Server
192
+ </button>
193
+ <button class="btn btn-secondary" onclick="viewServer('${server.id}')">
194
+ 👁️ View Details
195
+ </button>
196
+ </div>
197
+ </div>
198
+ `;
199
+ });
200
+ serverList.innerHTML = html;
201
+ } else {
202
+ serverList.classList.remove('has-servers');
203
+ serverList.innerHTML = `
204
+ <div style="text-align: center; padding: 40px; color: #718096;">
205
+ <div style="font-size: 48px; margin-bottom: 16px;">📦</div>
206
+ <h3 style="margin-bottom: 8px; color: #2d3748;">No Servers Available</h3>
207
+ <p style="margin-bottom: 20px;">Create an MCP server first to export it.</p>
208
+ <a href="/" class="btn btn-primary">
209
+ 🚀 Generate Your First Server
210
+ </a>
211
+ </div>
212
+ `;
213
+ }
214
+ } catch (error) {
215
+ console.error('Failed to load servers:', error);
216
+ }
217
+ }
218
+
219
+ // Export server for download
220
+ function exportServerForDownload(serverId) {
221
+ // Trigger download
222
+ window.location.href = `/api/servers/${serverId}/export`;
223
+ }
224
+
225
+ // Check server status for OpenAI section
226
+ async function checkOpenAIServerStatus() {
227
+ const statusDot = document.querySelector('#openaiServerStatus .status-dot');
228
+ const statusText = document.getElementById('openaiStatusText');
229
+
230
+ if (!statusDot || !statusText) return;
231
+
232
+ try {
233
+ const response = await fetch('http://localhost:3001/health');
234
+ const data = await response.json();
235
+
236
+ if (data.status === 'OK') {
237
+ statusDot.className = 'status-dot online';
238
+ statusText.textContent = `Online - Managing ${data.serverCount} servers`;
239
+ } else {
240
+ throw new Error('Server not healthy');
241
+ }
242
+ } catch (error) {
243
+ statusDot.className = 'status-dot offline';
244
+ statusText.textContent = 'Offline - Run "npm run dev" to start';
245
+ }
246
+ }
247
+
248
+ // Initialize page
249
+ document.addEventListener('DOMContentLoaded', function() {
250
+ checkServerStatus();
251
+
252
+ // Check server status every 10 seconds
253
+ setInterval(checkServerStatus, 10000);
254
+ setInterval(checkOpenAIServerStatus, 10000);
255
+ });