@softtechai/quickmcp 1.0.16 → 1.1.1

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 (418) hide show
  1. package/README.md +3 -3
  2. package/dist/auth/auth-utils.d.ts +130 -0
  3. package/dist/auth/auth-utils.d.ts.map +1 -0
  4. package/dist/auth/auth-utils.js +600 -0
  5. package/dist/auth/auth-utils.js.map +1 -0
  6. package/dist/auth/jwks-provider.d.ts +9 -0
  7. package/dist/auth/jwks-provider.d.ts.map +1 -0
  8. package/dist/auth/jwks-provider.js +56 -0
  9. package/dist/auth/jwks-provider.js.map +1 -0
  10. package/dist/auth/token-utils.d.ts +40 -0
  11. package/dist/auth/token-utils.d.ts.map +1 -0
  12. package/dist/auth/token-utils.js +162 -0
  13. package/dist/auth/token-utils.js.map +1 -0
  14. package/dist/client/MCPClient.js +5 -4
  15. package/dist/client/MCPClient.js.map +1 -1
  16. package/dist/config/auth-config.d.ts +16 -0
  17. package/dist/config/auth-config.d.ts.map +1 -0
  18. package/dist/config/auth-config.js +107 -0
  19. package/dist/config/auth-config.js.map +1 -0
  20. package/dist/constant/constant.d.ts +20 -0
  21. package/dist/constant/constant.d.ts.map +1 -0
  22. package/dist/constant/constant.js +24 -0
  23. package/dist/constant/constant.js.map +1 -0
  24. package/dist/database/async-datastore.d.ts +6 -0
  25. package/dist/database/async-datastore.d.ts.map +1 -0
  26. package/dist/database/async-datastore.js +15 -0
  27. package/dist/database/async-datastore.js.map +1 -0
  28. package/dist/database/database-utils.d.ts +6 -0
  29. package/dist/database/database-utils.d.ts.map +1 -0
  30. package/dist/database/database-utils.js +29 -0
  31. package/dist/database/database-utils.js.map +1 -0
  32. package/dist/database/datastore.d.ts +164 -0
  33. package/dist/database/datastore.d.ts.map +1 -0
  34. package/dist/{parsers/types/index.js → database/datastore.js} +1 -0
  35. package/dist/database/datastore.js.map +1 -0
  36. package/dist/database/factory.d.ts +4 -0
  37. package/dist/database/factory.d.ts.map +1 -0
  38. package/dist/database/factory.js +32 -0
  39. package/dist/database/factory.js.map +1 -0
  40. package/dist/database/jdbc-manager.d.ts +49 -0
  41. package/dist/database/jdbc-manager.d.ts.map +1 -0
  42. package/dist/database/jdbc-manager.js +50 -0
  43. package/dist/database/jdbc-manager.js.map +1 -0
  44. package/dist/database/sqlite-manager.d.ts +46 -44
  45. package/dist/database/sqlite-manager.d.ts.map +1 -1
  46. package/dist/database/sqlite-manager.js +492 -42
  47. package/dist/database/sqlite-manager.js.map +1 -1
  48. package/dist/database/supabase-manager.d.ts +58 -0
  49. package/dist/database/supabase-manager.d.ts.map +1 -0
  50. package/dist/database/supabase-manager.js +432 -0
  51. package/dist/database/supabase-manager.js.map +1 -0
  52. package/dist/generators/MCPServerGenerator.d.ts +103 -20
  53. package/dist/generators/MCPServerGenerator.d.ts.map +1 -1
  54. package/dist/generators/MCPServerGenerator.js +6930 -128
  55. package/dist/generators/MCPServerGenerator.js.map +1 -1
  56. package/dist/index.d.ts +0 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +8 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/integrated-mcp-server-new.d.ts +14 -2
  61. package/dist/integrated-mcp-server-new.d.ts.map +1 -1
  62. package/dist/integrated-mcp-server-new.js +270 -180
  63. package/dist/integrated-mcp-server-new.js.map +1 -1
  64. package/dist/mcp-core/McpCoreService.d.ts +63 -0
  65. package/dist/mcp-core/McpCoreService.d.ts.map +1 -0
  66. package/dist/mcp-core/McpCoreService.js +492 -0
  67. package/dist/mcp-core/McpCoreService.js.map +1 -0
  68. package/dist/parsers/CsvParser.d.ts +1 -1
  69. package/dist/parsers/CsvParser.d.ts.map +1 -1
  70. package/dist/parsers/CsvParser.js +3 -2
  71. package/dist/parsers/CsvParser.js.map +1 -1
  72. package/dist/parsers/DatabaseParser.d.ts.map +1 -1
  73. package/dist/parsers/DatabaseParser.js +9 -8
  74. package/dist/parsers/DatabaseParser.js.map +1 -1
  75. package/dist/parsers/ExcelParser.d.ts +15 -0
  76. package/dist/parsers/ExcelParser.d.ts.map +1 -1
  77. package/dist/parsers/ExcelParser.js +287 -21
  78. package/dist/parsers/ExcelParser.js.map +1 -1
  79. package/dist/parsers/WebPageParser.d.ts +5 -0
  80. package/dist/parsers/WebPageParser.d.ts.map +1 -0
  81. package/dist/parsers/WebPageParser.js +35 -0
  82. package/dist/parsers/WebPageParser.js.map +1 -0
  83. package/dist/parsers/index.d.ts +3 -2
  84. package/dist/parsers/index.d.ts.map +1 -1
  85. package/dist/parsers/index.js +19 -16
  86. package/dist/parsers/index.js.map +1 -1
  87. package/dist/server/api/askApi.d.ts +41 -0
  88. package/dist/server/api/askApi.d.ts.map +1 -0
  89. package/dist/server/api/askApi.js +479 -0
  90. package/dist/server/api/askApi.js.map +1 -0
  91. package/dist/server/api/authApi.d.ts +101 -0
  92. package/dist/server/api/authApi.d.ts.map +1 -0
  93. package/dist/server/api/authApi.js +1472 -0
  94. package/dist/server/api/authApi.js.map +1 -0
  95. package/dist/server/api/authProperty.d.ts +18 -0
  96. package/dist/server/api/authProperty.d.ts.map +1 -0
  97. package/dist/server/api/authProperty.js +41 -0
  98. package/dist/server/api/authProperty.js.map +1 -0
  99. package/dist/server/api/configApi.d.ts +15 -0
  100. package/dist/server/api/configApi.d.ts.map +1 -0
  101. package/dist/server/api/configApi.js +42 -0
  102. package/dist/server/api/configApi.js.map +1 -0
  103. package/dist/server/api/databaseApi.d.ts +14 -0
  104. package/dist/server/api/databaseApi.d.ts.map +1 -0
  105. package/dist/server/api/databaseApi.js +111 -0
  106. package/dist/server/api/databaseApi.js.map +1 -0
  107. package/dist/server/api/directoryApi.d.ts +9 -0
  108. package/dist/server/api/directoryApi.d.ts.map +1 -0
  109. package/dist/server/api/directoryApi.js +103 -0
  110. package/dist/server/api/directoryApi.js.map +1 -0
  111. package/dist/server/api/generateApi.d.ts +24 -0
  112. package/dist/server/api/generateApi.d.ts.map +1 -0
  113. package/dist/server/api/generateApi.js +457 -0
  114. package/dist/server/api/generateApi.js.map +1 -0
  115. package/dist/server/api/healthApi.d.ts +9 -0
  116. package/dist/server/api/healthApi.d.ts.map +1 -0
  117. package/dist/server/api/healthApi.js +15 -0
  118. package/dist/server/api/healthApi.js.map +1 -0
  119. package/dist/server/api/indexApi.d.ts +21 -0
  120. package/dist/server/api/indexApi.d.ts.map +1 -0
  121. package/dist/server/api/indexApi.js +61 -0
  122. package/dist/server/api/indexApi.js.map +1 -0
  123. package/dist/server/api/logsApi.d.ts +12 -0
  124. package/dist/server/api/logsApi.d.ts.map +1 -0
  125. package/dist/server/api/logsApi.js +37 -0
  126. package/dist/server/api/logsApi.js.map +1 -0
  127. package/dist/server/api/mcpApi.d.ts +20 -0
  128. package/dist/server/api/mcpApi.d.ts.map +1 -0
  129. package/dist/server/api/mcpApi.js +120 -0
  130. package/dist/server/api/mcpApi.js.map +1 -0
  131. package/dist/server/api/nameApi.d.ts +21 -0
  132. package/dist/server/api/nameApi.d.ts.map +1 -0
  133. package/dist/server/api/nameApi.js +42 -0
  134. package/dist/server/api/nameApi.js.map +1 -0
  135. package/dist/server/api/parseApi.d.ts +9 -0
  136. package/dist/server/api/parseApi.d.ts.map +1 -0
  137. package/dist/server/api/parseApi.js +3245 -0
  138. package/dist/server/api/parseApi.js.map +1 -0
  139. package/dist/server/api/serverApi.d.ts +44 -0
  140. package/dist/server/api/serverApi.d.ts.map +1 -0
  141. package/dist/server/api/serverApi.js +417 -0
  142. package/dist/server/api/serverApi.js.map +1 -0
  143. package/dist/{dynamic-mcp-executor.d.ts → server/dynamic-mcp-executor.d.ts} +4 -5
  144. package/dist/server/dynamic-mcp-executor.d.ts.map +1 -0
  145. package/dist/server/dynamic-mcp-executor.js +62 -0
  146. package/dist/server/dynamic-mcp-executor.js.map +1 -0
  147. package/dist/server/port-utils.d.ts +14 -0
  148. package/dist/server/port-utils.d.ts.map +1 -0
  149. package/dist/server/port-utils.js +31 -0
  150. package/dist/server/port-utils.js.map +1 -0
  151. package/dist/server/server-utils.d.ts +13 -0
  152. package/dist/server/server-utils.d.ts.map +1 -0
  153. package/dist/server/server-utils.js +72 -0
  154. package/dist/server/server-utils.js.map +1 -0
  155. package/dist/{web → server}/server.d.ts +1 -0
  156. package/dist/server/server.d.ts.map +1 -0
  157. package/dist/server/server.js +535 -0
  158. package/dist/server/server.js.map +1 -0
  159. package/dist/server/tool-executer.d.ts +101 -0
  160. package/dist/server/tool-executer.d.ts.map +1 -0
  161. package/dist/server/tool-executer.js +6198 -0
  162. package/dist/server/tool-executer.js.map +1 -0
  163. package/dist/types/index.d.ts +1197 -4
  164. package/dist/types/index.d.ts.map +1 -1
  165. package/dist/types/index.js +1028 -0
  166. package/dist/types/index.js.map +1 -1
  167. package/dist/upload/upload-utils.d.ts +4 -0
  168. package/dist/upload/upload-utils.d.ts.map +1 -0
  169. package/dist/upload/upload-utils.js +29 -0
  170. package/dist/upload/upload-utils.js.map +1 -0
  171. package/dist/utils/deployment-util.d.ts +14 -0
  172. package/dist/utils/deployment-util.d.ts.map +1 -0
  173. package/dist/utils/deployment-util.js +46 -0
  174. package/dist/utils/deployment-util.js.map +1 -0
  175. package/dist/utils/logger.d.ts +15 -0
  176. package/dist/utils/logger.d.ts.map +1 -0
  177. package/dist/utils/logger.js +56 -0
  178. package/dist/utils/logger.js.map +1 -0
  179. package/package.json +18 -6
  180. package/quickmcp-direct-stdio.js +183 -187
  181. package/src/web/public/app.js +15370 -1471
  182. package/src/web/public/authorization.html +868 -0
  183. package/src/web/public/database-tables.html +283 -547
  184. package/src/web/public/how-to-use.html +446 -462
  185. package/src/web/public/how-to-use.js +4 -4
  186. package/src/web/public/images/app/activepieces.png +0 -0
  187. package/src/web/public/images/app/airtable.png +0 -0
  188. package/src/web/public/images/app/androidstudio.png +0 -0
  189. package/src/web/public/images/app/antigravity.png +0 -0
  190. package/src/web/public/images/app/applenotes.png +0 -0
  191. package/src/web/public/images/app/applereminders.png +0 -0
  192. package/src/web/public/images/app/asana.png +0 -0
  193. package/src/web/public/images/app/azureai.png +0 -0
  194. package/src/web/public/images/app/bash.png +0 -0
  195. package/src/web/public/images/app/bearnotes.png +0 -0
  196. package/src/web/public/images/app/bitbucket.png +0 -0
  197. package/src/web/public/images/app/claude.png +0 -0
  198. package/src/web/public/images/app/cli.png +0 -0
  199. package/src/web/public/images/app/clickup.png +0 -0
  200. package/src/web/public/images/app/cohere.png +0 -0
  201. package/src/web/public/images/app/confluence.png +0 -0
  202. package/src/web/public/images/app/confluence2.png +0 -0
  203. package/src/web/public/images/app/curl.png +0 -0
  204. package/src/web/public/images/app/curl_mini.png +0 -0
  205. package/src/web/public/images/app/cursor.png +0 -0
  206. package/src/web/public/images/app/db2.png +0 -0
  207. package/src/web/public/images/app/deepseek.png +0 -0
  208. package/src/web/public/images/app/discord.png +0 -0
  209. package/src/web/public/images/app/docker.png +0 -0
  210. package/src/web/public/images/app/dockerhub.png +0 -0
  211. package/src/web/public/images/app/dropbox.png +0 -0
  212. package/src/web/public/images/app/elasticsearch.png +0 -0
  213. package/src/web/public/images/app/facebook.png +0 -0
  214. package/src/web/public/images/app/falai.png +0 -0
  215. package/src/web/public/images/app/fireworks.png +0 -0
  216. package/src/web/public/images/app/gdrive.png +0 -0
  217. package/src/web/public/images/app/gemini.png +0 -0
  218. package/src/web/public/images/app/github.png +0 -0
  219. package/src/web/public/images/app/githubcopilot.png +0 -0
  220. package/src/web/public/images/app/gitlab.png +0 -0
  221. package/src/web/public/images/app/gmail.png +0 -0
  222. package/src/web/public/images/app/googlecalender.png +0 -0
  223. package/src/web/public/images/app/googledocs.png +0 -0
  224. package/src/web/public/images/app/googlesheets.png +0 -0
  225. package/src/web/public/images/app/gradle.png +0 -0
  226. package/src/web/public/images/app/grafana.png +0 -0
  227. package/src/web/public/images/app/graphql.png +0 -0
  228. package/src/web/public/images/app/grok.png +0 -0
  229. package/src/web/public/images/app/groq.png +0 -0
  230. package/src/web/public/images/app/hazelcast.png +0 -0
  231. package/src/web/public/images/app/huggingface.png +0 -0
  232. package/src/web/public/images/app/imessage.png +0 -0
  233. package/src/web/public/images/app/instagram.png +0 -0
  234. package/src/web/public/images/app/intellij.png +0 -0
  235. package/src/web/public/images/app/jenkins.png +0 -0
  236. package/src/web/public/images/app/jira.png +0 -0
  237. package/src/web/public/images/app/kafka.png +0 -0
  238. package/src/web/public/images/app/kubernetes.png +0 -0
  239. package/src/web/public/images/app/linear.png +0 -0
  240. package/src/web/public/images/app/linkedin.png +0 -0
  241. package/src/web/public/images/app/llama.png +0 -0
  242. package/src/web/public/images/app/make.png +0 -0
  243. package/src/web/public/images/app/maven.png +0 -0
  244. package/src/web/public/images/app/mcp.png +0 -0
  245. package/src/web/public/images/app/microsoftteams.png +0 -0
  246. package/src/web/public/images/app/mistral.png +0 -0
  247. package/src/web/public/images/app/monday.png +0 -0
  248. package/src/web/public/images/app/mongodb.png +0 -0
  249. package/src/web/public/images/app/mssql.png +0 -0
  250. package/src/web/public/images/app/mysql.png +0 -0
  251. package/src/web/public/images/app/n8n.png +0 -0
  252. package/src/web/public/images/app/notion.png +0 -0
  253. package/src/web/public/images/app/npm.png +0 -0
  254. package/src/web/public/images/app/nuget.png +0 -0
  255. package/src/web/public/images/app/obsidian.png +0 -0
  256. package/src/web/public/images/app/openai.png +0 -0
  257. package/src/web/public/images/app/openrouter.png +0 -0
  258. package/src/web/public/images/app/opensearch.png +0 -0
  259. package/src/web/public/images/app/openshift.png +0 -0
  260. package/src/web/public/images/app/oracle.png +0 -0
  261. package/src/web/public/images/app/perplexity.png +0 -0
  262. package/src/web/public/images/app/pipedream.png +0 -0
  263. package/src/web/public/images/app/postgresql.png +0 -0
  264. package/src/web/public/images/app/powershell.png +0 -0
  265. package/src/web/public/images/app/prometheus.png +0 -0
  266. package/src/web/public/images/app/reddit.png +0 -0
  267. package/src/web/public/images/app/redis.png +0 -0
  268. package/src/web/public/images/app/rss.png +0 -0
  269. package/src/web/public/images/app/signal.png +0 -0
  270. package/src/web/public/images/app/slack.png +0 -0
  271. package/src/web/public/images/app/soap.png +0 -0
  272. package/src/web/public/images/app/sqlite.png +0 -0
  273. package/src/web/public/images/app/supabase.png +0 -0
  274. package/src/web/public/images/app/telegram.png +0 -0
  275. package/src/web/public/images/app/things3.png +0 -0
  276. package/src/web/public/images/app/threads.png +0 -0
  277. package/src/web/public/images/app/tiktok.png +0 -0
  278. package/src/web/public/images/app/together.png +0 -0
  279. package/src/web/public/images/app/trello.png +0 -0
  280. package/src/web/public/images/app/vscode.png +0 -0
  281. package/src/web/public/images/app/webhook.png +0 -0
  282. package/src/web/public/images/app/webpage.png +0 -0
  283. package/src/web/public/images/app/whatsappbusiness.png +0 -0
  284. package/src/web/public/images/app/windsorf.png +0 -0
  285. package/src/web/public/images/app/x.png +0 -0
  286. package/src/web/public/images/app/youtube.png +0 -0
  287. package/src/web/public/images/app/zapier.png +0 -0
  288. package/src/web/public/images/app/zededitor.png +0 -0
  289. package/src/web/public/images/app/zoom.png +0 -0
  290. package/src/web/public/images/avatar-anon.svg +4 -0
  291. package/src/web/public/images/favicon.png +0 -0
  292. package/src/web/public/images/install/chatgpt-web/step0.png +0 -0
  293. package/src/web/public/images/install/chatgpt-web/step1.png +0 -0
  294. package/src/web/public/images/install/chatgpt-web/step2.png +0 -0
  295. package/src/web/public/images/install/chatgpt-web/step3.png +0 -0
  296. package/src/web/public/images/install/chatgpt-web/step4.png +0 -0
  297. package/src/web/public/images/install/chatgpt-web/step5.png +0 -0
  298. package/src/web/public/images/readme/1-generate-servers.png +0 -0
  299. package/src/web/public/images/readme/2-database-connection.png +0 -0
  300. package/src/web/public/images/readme/2-file-upload.png +0 -0
  301. package/src/web/public/images/readme/3-data-preview.png +0 -0
  302. package/src/web/public/images/readme/4-data-preview2.png +0 -0
  303. package/src/web/public/images/readme/5-server-configuration.png +0 -0
  304. package/src/web/public/images/readme/6-server-generated-modal.png +0 -0
  305. package/src/web/public/images/readme/7-generated-servers.png +0 -0
  306. package/src/web/public/images/readme/8-generated-servers-view-details.png +0 -0
  307. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.23.51.png +0 -0
  308. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.24.59.png +0 -0
  309. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.05.png +0 -0
  310. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.14.png +0 -0
  311. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.21.png +0 -0
  312. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.36.png +0 -0
  313. package/src/web/public/index.html +4685 -488
  314. package/src/web/public/landing.html +1638 -0
  315. package/src/web/public/logger.js +31 -0
  316. package/src/web/public/login.html +372 -0
  317. package/src/web/public/manage-servers.html +121 -188
  318. package/src/web/public/pricing.html +537 -0
  319. package/src/web/public/quick-ask.html +133 -0
  320. package/src/web/public/quickmcp-styles.css +708 -0
  321. package/src/web/public/roles.html +177 -0
  322. package/src/web/public/shared.js +736 -3
  323. package/src/web/public/sidebar.js +414 -0
  324. package/src/web/public/test-servers.html +605 -221
  325. package/src/web/public/users.html +191 -0
  326. package/dist/client/MCPClientUnified.d.ts +0 -31
  327. package/dist/client/MCPClientUnified.d.ts.map +0 -1
  328. package/dist/client/MCPClientUnified.js +0 -275
  329. package/dist/client/MCPClientUnified.js.map +0 -1
  330. package/dist/client/MCPTestRunnerUnified.d.ts +0 -48
  331. package/dist/client/MCPTestRunnerUnified.d.ts.map +0 -1
  332. package/dist/client/MCPTestRunnerUnified.js +0 -183
  333. package/dist/client/MCPTestRunnerUnified.js.map +0 -1
  334. package/dist/database/json-manager.d.ts +0 -55
  335. package/dist/database/json-manager.d.ts.map +0 -1
  336. package/dist/database/json-manager.js +0 -128
  337. package/dist/database/json-manager.js.map +0 -1
  338. package/dist/dynamic-mcp-executor.d.ts.map +0 -1
  339. package/dist/dynamic-mcp-executor.js +0 -274
  340. package/dist/dynamic-mcp-executor.js.map +0 -1
  341. package/dist/generators/MCPServerGenerator-new.d.ts +0 -37
  342. package/dist/generators/MCPServerGenerator-new.d.ts.map +0 -1
  343. package/dist/generators/MCPServerGenerator-new.js +0 -287
  344. package/dist/generators/MCPServerGenerator-new.js.map +0 -1
  345. package/dist/generators/database/sqlite-manager.d.ts +0 -52
  346. package/dist/generators/database/sqlite-manager.js +0 -143
  347. package/dist/generators/generators/MCPServerGenerator.d.ts +0 -37
  348. package/dist/generators/generators/MCPServerGenerator.js +0 -396
  349. package/dist/integrated-mcp-server.d.ts +0 -25
  350. package/dist/integrated-mcp-server.d.ts.map +0 -1
  351. package/dist/integrated-mcp-server.js +0 -541
  352. package/dist/integrated-mcp-server.js.map +0 -1
  353. package/dist/mcp-inspector-server.d.ts +0 -3
  354. package/dist/mcp-inspector-server.d.ts.map +0 -1
  355. package/dist/mcp-inspector-server.js +0 -119
  356. package/dist/mcp-inspector-server.js.map +0 -1
  357. package/dist/mcp-sdk-server.d.ts +0 -3
  358. package/dist/mcp-sdk-server.d.ts.map +0 -1
  359. package/dist/mcp-sdk-server.js +0 -90
  360. package/dist/mcp-sdk-server.js.map +0 -1
  361. package/dist/mcp-server.d.ts +0 -3
  362. package/dist/mcp-server.d.ts.map +0 -1
  363. package/dist/mcp-server.js +0 -300
  364. package/dist/mcp-server.js.map +0 -1
  365. package/dist/parsers/parsers/ExcelParser.js +0 -118
  366. package/dist/quickmcp-unified-bridge.d.ts +0 -13
  367. package/dist/quickmcp-unified-bridge.d.ts.map +0 -1
  368. package/dist/quickmcp-unified-bridge.js +0 -176
  369. package/dist/quickmcp-unified-bridge.js.map +0 -1
  370. package/dist/sqlite-manager.js +0 -145
  371. package/dist/test-app.d.ts +0 -2
  372. package/dist/test-app.d.ts.map +0 -1
  373. package/dist/test-app.js +0 -119
  374. package/dist/test-app.js.map +0 -1
  375. package/dist/transport/base-transport.d.ts +0 -21
  376. package/dist/transport/base-transport.d.ts.map +0 -1
  377. package/dist/transport/base-transport.js +0 -16
  378. package/dist/transport/base-transport.js.map +0 -1
  379. package/dist/transport/index.d.ts +0 -10
  380. package/dist/transport/index.d.ts.map +0 -1
  381. package/dist/transport/index.js +0 -12
  382. package/dist/transport/index.js.map +0 -1
  383. package/dist/transport/sse-transport.d.ts +0 -13
  384. package/dist/transport/sse-transport.d.ts.map +0 -1
  385. package/dist/transport/sse-transport.js +0 -106
  386. package/dist/transport/sse-transport.js.map +0 -1
  387. package/dist/transport/stdio-transport.d.ts +0 -8
  388. package/dist/transport/stdio-transport.d.ts.map +0 -1
  389. package/dist/transport/stdio-transport.js +0 -53
  390. package/dist/transport/stdio-transport.js.map +0 -1
  391. package/dist/transport/streamable-http-transport.d.ts +0 -15
  392. package/dist/transport/streamable-http-transport.d.ts.map +0 -1
  393. package/dist/transport/streamable-http-transport.js +0 -151
  394. package/dist/transport/streamable-http-transport.js.map +0 -1
  395. package/dist/web/client/MCPClient.js +0 -348
  396. package/dist/web/client/MCPTestRunner.js +0 -317
  397. package/dist/web/database/json-manager.js +0 -124
  398. package/dist/web/database/sqlite-manager.js +0 -146
  399. package/dist/web/dynamic-mcp-executor.js +0 -443
  400. package/dist/web/generators/MCPServerGenerator-new.js +0 -284
  401. package/dist/web/generators/MCPServerGenerator.js +0 -566
  402. package/dist/web/integrated-mcp-server-new.js +0 -394
  403. package/dist/web/parsers/CsvParser.js +0 -144
  404. package/dist/web/parsers/DatabaseParser.js +0 -637
  405. package/dist/web/parsers/ExcelParser.js +0 -180
  406. package/dist/web/parsers/index.js +0 -152
  407. package/dist/web/server.d.ts.map +0 -1
  408. package/dist/web/server.js +0 -790
  409. package/dist/web/server.js.map +0 -1
  410. package/dist/web/types/index.js +0 -2
  411. package/dist/web/web/server.js +0 -860
  412. package/src/web/public/modern-styles.css +0 -946
  413. package/src/web/public/shared-styles.css +0 -2091
  414. /package/src/web/public/images/{1-claude-quickmcp-stdio.png → readme/1-claude-quickmcp-stdio.png} +0 -0
  415. /package/src/web/public/images/{2-claude-tools.png → readme/2-claude-tools.png} +0 -0
  416. /package/src/web/public/images/{3-claude-developer-settings.png → readme/3-claude-developer-settings.png} +0 -0
  417. /package/src/web/public/images/{4-claude-config.png → readme/4-claude-config.png} +0 -0
  418. /package/src/web/public/images/{5-claude-config-edit.png → readme/5-claude-config-edit.png} +0 -0
@@ -1,302 +1,686 @@
1
1
  <!DOCTYPE html>
2
- <html lang="en" class="h-full bg-gray-50">
2
+ <html lang="en" class="h-full">
3
+
3
4
  <head>
4
5
  <meta charset="UTF-8">
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Test Servers - MCP Server Generator</title>
7
+ <title>QuickMCP - Modern MCP Server Generator</title>
8
+
9
+ <link rel="icon" type="image/png" href="/images/favicon.png">
7
10
 
8
11
  <!-- Tailwind CSS -->
9
12
  <script src="https://cdn.tailwindcss.com"></script>
10
13
 
11
- <!-- Font Awesome for icons -->
14
+ <!-- Font Awesome -->
12
15
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
13
16
 
14
- <!-- Google Fonts -->
15
- <link rel="preconnect" href="https://fonts.googleapis.com">
16
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
17
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
17
+ <!-- Custom Archdraw Styles -->
18
+ <link rel="stylesheet" href="quickmcp-styles.css">
18
19
 
19
20
  <style>
20
- body { font-family: 'Inter', sans-serif; }
21
-
22
- /* Custom animations */
23
- @keyframes slideIn {
24
- from { transform: translateX(-100%); opacity: 0; }
25
- to { transform: translateX(0); opacity: 1; }
26
- }
27
-
28
- @keyframes fadeIn {
29
- from { opacity: 0; transform: translateY(20px); }
30
- to { opacity: 1; transform: translateY(0); }
31
- }
32
-
33
- .slide-in { animation: slideIn 0.3s ease-out; }
34
- .fade-in { animation: fadeIn 0.5s ease-out; }
35
-
36
- /* Custom scrollbar */
37
- ::-webkit-scrollbar { width: 6px; }
38
- ::-webkit-scrollbar-track { background: #f1f5f9; }
39
- ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; }
40
- ::-webkit-scrollbar-thumb:hover { background: #94a3b8; }
41
-
42
- /* Glassmorphism effect */
43
- .glass {
44
- backdrop-filter: blur(20px);
45
- background: rgba(255, 255, 255, 0.8);
46
- border: 1px solid rgba(255, 255, 255, 0.2);
47
- }
48
-
49
- .glass-dark {
50
- backdrop-filter: blur(20px);
51
- background: rgba(15, 23, 42, 0.8);
52
- border: 1px solid rgba(255, 255, 255, 0.1);
53
- }
21
+ /* Collapsed sidebar icon layout (archdraw-like) */
22
+ #sidebar.collapsed .nav-item { padding: 0.5rem !important; gap: 0 !important; justify-content: center !important; }
23
+ #sidebar.collapsed .nav-item > .relative { display: flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; margin-left: auto; margin-right: auto; }
24
+ #sidebar.collapsed .nav-item > .relative > div { width: 2.5rem; height: 2.5rem; display: flex; align-items: center; justify-content: center; background: #fff; border: 1px solid #e2e8f0; border-radius: 0.5rem; }
25
+ #sidebar.collapsed .nav-item .flex-1 { display: none !important; }
26
+ #sidebar.collapsed #sidebarHeaderMain { display: none !important; }
27
+ #sidebar.collapsed #sidebarHeaderRow { justify-content: center !important; }
28
+ #sidebar.collapsed #sidebarCollapseBtn { display: inline-flex !important; }
29
+ #sidebar.collapsed #closeSidebar { display: none !important; }
30
+ #sidebar #sidebarCollapseBtn { width: 2.25rem; height: 2.25rem; align-items: center; justify-content: center; }
31
+ #sidebar #sidebarCollapseBtn i { font-size: 1rem; }
54
32
  </style>
55
-
56
- <!-- Tailwind Config -->
57
33
  <script>
58
34
  tailwind.config = {
35
+ darkMode: 'class',
59
36
  theme: {
60
37
  extend: {
61
38
  colors: {
62
- primary: {
63
- 50: '#f0f9ff',
64
- 500: '#0ea5e9',
65
- 600: '#0284c7',
66
- 700: '#0369a1',
67
- 900: '#0c4a6e'
39
+ slate: {
40
+ 50: '#f8fafc',
41
+ 100: '#f1f5f9',
42
+ 200: '#e2e8f0',
43
+ 300: '#cbd5e1',
44
+ 400: '#94a3b8',
45
+ 500: '#64748b',
46
+ 600: '#475569',
47
+ 700: '#334155',
48
+ 800: '#1e293b',
49
+ 900: '#0f172a',
68
50
  }
69
- },
70
- animation: {
71
- 'bounce-slow': 'bounce 2s infinite',
72
- 'pulse-slow': 'pulse 3s infinite'
73
51
  }
74
52
  }
75
53
  }
76
54
  }
77
55
  </script>
78
56
  </head>
79
- <body class="h-full bg-gradient-to-br from-blue-50 via-white to-cyan-50">
80
- <!-- Main App Container -->
81
- <div id="app" class="flex h-full">
82
-
83
- <!-- Sidebar -->
84
- <div id="sidebar" class="fixed inset-y-0 left-0 z-50 w-64 bg-white/90 backdrop-blur-xl border-r border-gray-200/50 transform -translate-x-full lg:translate-x-0 transition-transform duration-300 ease-in-out">
85
- <div class="flex flex-col h-full">
86
- <!-- Sidebar Header -->
87
- <div class="flex items-center justify-between p-6 border-b border-gray-200/50">
88
- <div class="flex items-center space-x-3">
89
- <div class="w-10 h-10 bg-gradient-to-r from-blue-500 to-cyan-500 rounded-xl flex items-center justify-center">
90
- <i class="fas fa-rocket text-white text-lg"></i>
57
+
58
+ <body class="h-screen flex flex-col bg-gradient-to-br from-slate-50 to-slate-100 overflow-hidden text-slate-900">
59
+
60
+ <!-- Header -->
61
+ <header
62
+ class="backdrop-blur-sm bg-white/80 border-b border-slate-200/60 shadow-sm relative z-50 h-16 flex-shrink-0 flex items-center justify-between px-6 py-3">
63
+ <!-- Brand -->
64
+ <div class="flex items-center gap-6">
65
+ <div class="flex items-center gap-3">
66
+ <div
67
+ class="w-9 h-9 rounded-lg bg-blue-600 text-white flex items-center justify-center shadow-lg shadow-blue-500/25">
68
+ <i class="fas fa-rocket text-lg"></i>
69
+ </div>
70
+ <div>
71
+ <h1 class="text-xl font-bold gradient-text leading-tight">QuickMCP</h1>
72
+ <p class="text-xs text-slate-500 font-medium">Server Generator</p>
73
+ </div>
74
+ </div>
75
+ <!-- Divider -->
76
+ <div class="h-8 w-px bg-gradient-to-b from-transparent via-slate-300 to-transparent hidden md:block"></div>
77
+
78
+ <!-- Header Action: New Server (left, common) -->
79
+ <div class="hidden md:flex items-center gap-2 text-sm font-medium text-slate-600">
80
+ <button id="headerNewServerBtn" onclick="window.location.href='/generate'"
81
+ class="md:inline-flex items-center gap-2 bg-white border border-slate-200 hover:border-blue-400 text-slate-700 hover:text-blue-600 px-4 py-2 rounded-lg font-medium transition-colors shadow-sm">
82
+ <i class="fas fa-plus"></i>
83
+ <span>New Server</span>
84
+ </button>
85
+ </div>
86
+ </div>
87
+
88
+ <!-- Actions -->
89
+ <div class="flex items-center gap-3">
90
+ <div
91
+ class="hidden sm:flex items-center gap-2 bg-green-50 text-green-700 px-3 py-1.5 rounded-lg text-sm font-medium border border-green-200/50">
92
+ <div class="w-2 h-2 bg-green-500 rounded-full animate-pulse"></div>
93
+ <span>System Online</span>
94
+ </div>
95
+ <button
96
+ class="p-2 rounded-lg hover:bg-slate-100 transition-colors relative text-slate-500 hover:text-slate-700">
97
+ <i class="fas fa-bell"></i>
98
+ <span class="absolute top-2 right-2 w-2 h-2 bg-red-500 rounded-full border-2 border-white"></span>
99
+ </button>
100
+ <div
101
+ class="w-8 h-8 rounded-full bg-gradient-to-tr from-blue-500 to-purple-500 text-white flex items-center justify-center text-sm font-bold shadow-md" data-user-avatar>
102
+ G
103
+ </div>
104
+ <button id="openSidebar"
105
+ class="lg:hidden p-2 rounded-lg hover:bg-slate-100 transition-colors text-slate-500">
106
+ <i class="fas fa-bars"></i>
107
+ </button>
108
+ </div>
109
+ </header>
110
+
111
+ <!-- Main Body -->
112
+ <div class="app-main-layout flex flex-1 overflow-x-hidden" id="app">
113
+
114
+ <!-- Left Sidebar (Navigation) -->
115
+ <div id="sidebar"
116
+ class="w-72 bg-white/95 backdrop-blur-sm border-r border-slate-200/60 flex flex-col flex-shrink-0 z-[60] fixed inset-y-0 left-0 transform -translate-x-full lg:translate-x-0 lg:top-0 lg:h-screen transition-transform duration-300 ease-in-out h-full pt-16 lg:pt-0">
117
+ <!-- Sidebar Header -->
118
+ <div class="p-6 border-b border-slate-200/60 bg-gradient-to-r from-slate-50/50 to-white/50">
119
+ <div id="sidebarHeaderRow" class="flex items-center justify-between mb-2">
120
+ <div id="sidebarHeaderMain" class="flex items-center gap-3">
121
+ <div
122
+ class="w-8 h-8 flex items-center justify-center bg-gradient-to-br from-emerald-500 to-emerald-600 rounded-lg shadow-lg shadow-emerald-500/25">
123
+ <i class="fas fa-compass text-white"></i>
91
124
  </div>
92
125
  <div>
93
- <h1 class="text-xl font-bold text-gray-900">QuickMCP</h1>
94
- <p class="text-xs text-gray-500">Server Generator</p>
126
+ <h2 class="text-slate-900 font-bold tracking-tight text-lg">Navigation</h2>
127
+ <p class="text-slate-500 text-xs leading-none font-medium">Application Pages</p>
95
128
  </div>
96
129
  </div>
97
- <button id="closeSidebar" class="lg:hidden p-2 rounded-lg hover:bg-gray-100 transition-colors">
98
- <i class="fas fa-times text-gray-500"></i>
99
- </button>
130
+ <div class="flex items-center gap-2">
131
+ <button id="sidebarCollapseBtn" class="hidden lg:inline-flex text-slate-400 hover:text-slate-600" title="Collapse sidebar">
132
+ <i class="fas fa-angles-left"></i>
133
+ </button>
134
+ <button id="closeSidebar" class="lg:hidden text-slate-400 hover:text-slate-600">
135
+ <i class="fas fa-times"></i>
136
+ </button>
137
+ </div>
100
138
  </div>
139
+ </div>
101
140
 
102
- <!-- Navigation -->
103
- <nav class="flex-1 px-4 py-6 space-y-2">
104
- <a href="/" class="nav-item flex items-center px-4 py-3 text-sm font-medium text-gray-700 rounded-xl hover:bg-gray-50 transition-all duration-200">
105
- <i class="fas fa-magic mr-3 text-gray-400"></i>
106
- Generate Server
107
- </a>
108
- <a href="/manage-servers" class="nav-item flex items-center px-4 py-3 text-sm font-medium text-gray-700 rounded-xl hover:bg-gray-50 transition-all duration-200">
109
- <i class="fas fa-server mr-3 text-gray-400"></i>
110
- Manage Servers
111
- </a>
112
- <a href="/test-servers" class="nav-item active flex items-center px-4 py-3 text-sm font-medium rounded-xl bg-gradient-to-r from-blue-50 to-cyan-50 text-blue-700 border border-blue-200">
113
- <i class="fas fa-vial mr-3 text-blue-500"></i>
114
- Test Servers
115
- </a>
116
- <a href="/how-to-use" class="nav-item flex items-center px-4 py-3 text-sm font-medium text-gray-700 rounded-xl hover:bg-gray-50 transition-all duration-200">
117
- <i class="fas fa-book mr-3 text-gray-400"></i>
118
- How to Use
119
- </a>
120
- </nav>
121
-
122
- <!-- Sidebar Footer -->
123
- <div class="p-4 border-t border-gray-200/50">
124
- <div class="bg-gradient-to-r from-blue-50 to-cyan-50 p-4 rounded-xl border border-blue-100">
125
- <div class="flex items-center space-x-3">
126
- <div class="w-8 h-8 bg-gradient-to-r from-green-400 to-blue-500 rounded-full flex items-center justify-center">
127
- <i class="fas fa-check text-white text-xs"></i>
128
- </div>
129
- <div>
130
- <p class="text-sm font-medium text-gray-900">All systems online</p>
131
- <p class="text-xs text-gray-500">Ready to test servers</p>
132
- </div>
141
+ <!-- Navigation Links -->
142
+ <div id="sidebarNavList" class="p-4 overflow-y-auto flex-1 scrollbar-modern space-y-3">
143
+
144
+ <a href="/generate"
145
+ class="nav-item card card-hover group relative flex items-center gap-3 p-4 hover:border-blue-300 hover:shadow-blue-500/10 transition-all active">
146
+ <div class="relative">
147
+ <div
148
+ class="p-2.5 rounded-lg shadow-sm bg-slate-100 text-slate-600 group-hover:bg-blue-50 group-hover:text-blue-600 transition-colors">
149
+ <i class="fas fa-magic"></i>
133
150
  </div>
134
151
  </div>
135
- </div>
136
- </div>
137
- </div>
152
+ <div class="flex-1 min-w-0">
153
+ <span
154
+ class="text-slate-700 font-semibold text-sm block group-hover:text-blue-700 transition-colors">Generate
155
+ Server</span>
156
+ <span class="text-slate-500 text-xs mt-0.5 block font-medium">Create new MCP servers</span>
157
+ </div>
158
+ </a>
138
159
 
139
- <!-- Sidebar Overlay for mobile -->
140
- <div id="sidebarOverlay" class="fixed inset-0 bg-gray-900/50 backdrop-blur-sm z-40 lg:hidden opacity-0 invisible transition-all duration-300"></div>
141
-
142
- <!-- Main Content -->
143
- <div class="flex-1 lg:pl-64">
144
- <!-- Top Navigation -->
145
- <header class="bg-white/80 backdrop-blur-xl border-b border-gray-200/50 sticky top-0 z-30">
146
- <div class="px-4 sm:px-6 lg:px-8">
147
- <div class="flex justify-between items-center h-16">
148
- <div class="flex items-center space-x-4">
149
- <button id="openSidebar" class="lg:hidden p-2 rounded-lg hover:bg-gray-100 transition-colors">
150
- <i class="fas fa-bars text-gray-600"></i>
151
- </button>
152
- <div>
153
- <h2 class="text-2xl font-bold text-gray-900">Test Servers</h2>
154
- <p class="text-sm text-gray-500">Run automated tests or create custom test scenarios</p>
155
- </div>
160
+ <a href="/manage-servers"
161
+ class="nav-item card card-hover group relative flex items-center gap-3 p-4 hover:border-blue-300 hover:shadow-blue-500/10 transition-all">
162
+ <div class="relative">
163
+ <div
164
+ class="p-2.5 rounded-lg shadow-sm bg-slate-100 text-slate-600 group-hover:bg-blue-50 group-hover:text-blue-600 transition-colors">
165
+ <i class="fas fa-server"></i>
156
166
  </div>
167
+ </div>
168
+ <div class="flex-1 min-w-0">
169
+ <span
170
+ class="text-slate-700 font-semibold text-sm block group-hover:text-blue-700 transition-colors">Manage
171
+ Servers</span>
172
+ <span class="text-slate-500 text-xs mt-0.5 block font-medium">Edit & Control</span>
173
+ </div>
174
+ </a>
157
175
 
158
- <div class="flex items-center space-x-4">
159
- <div class="hidden sm:flex items-center space-x-2 bg-green-50 text-green-700 px-3 py-1 rounded-full text-sm font-medium">
160
- <div class="w-2 h-2 bg-green-500 rounded-full animate-pulse"></div>
161
- <span>Online</span>
162
- </div>
163
- <button class="p-2 rounded-lg hover:bg-gray-100 transition-colors relative">
164
- <i class="fas fa-bell text-gray-600"></i>
165
- <span class="absolute -top-1 -right-1 w-3 h-3 bg-red-500 rounded-full"></span>
166
- </button>
176
+ <a href="/test-servers"
177
+ class="nav-item card card-hover group relative flex items-center gap-3 p-4 hover:border-blue-300 hover:shadow-blue-500/10 transition-all">
178
+ <div class="relative">
179
+ <div
180
+ class="p-2.5 rounded-lg shadow-sm bg-slate-100 text-slate-600 group-hover:bg-blue-50 group-hover:text-blue-600 transition-colors">
181
+ <i class="fas fa-vial"></i>
167
182
  </div>
168
183
  </div>
169
- </div>
170
- </header>
171
-
172
- <!-- Main Content -->
173
- <main class="p-4 sm:p-6 lg:p-8">
174
- <div class="max-w-7xl mx-auto space-y-8">
175
- <div class="text-center">
176
- <h1 class="text-3xl font-bold text-gray-900 mb-4">Test Your Servers</h1>
177
- <p class="text-gray-600">Run automated tests or create custom test scenarios for your MCP servers</p>
184
+ <div class="flex-1 min-w-0">
185
+ <span
186
+ class="text-slate-700 font-semibold text-sm block group-hover:text-blue-700 transition-colors">Test
187
+ Servers</span>
188
+ <span class="text-slate-500 text-xs mt-0.5 block font-medium">Verify functionality</span>
178
189
  </div>
190
+ </a>
191
+
192
+ <a href="/how-to-use"
193
+ class="card card-hover group relative flex items-center gap-3 p-4 hover:border-blue-300 hover:shadow-blue-500/10 transition-all">
194
+ <div class="relative">
195
+ <div
196
+ class="p-2.5 rounded-lg shadow-sm bg-slate-100 text-slate-600 group-hover:bg-blue-50 group-hover:text-blue-600 transition-colors">
197
+ <i class="fas fa-book"></i>
198
+ </div>
199
+ </div>
200
+ <div class="flex-1 min-w-0">
201
+ <span
202
+ class="text-slate-700 font-semibold text-sm block group-hover:text-blue-700 transition-colors">How
203
+ to Use</span>
204
+ <span class="text-slate-500 text-xs mt-0.5 block font-medium">Documentation & Guide</span>
205
+ </div>
206
+ </a>
207
+
208
+ </div>
209
+ </div>
210
+
211
+ <!-- Sidebar Overlay -->
212
+ <div id="sidebarOverlay"
213
+ class="fixed inset-0 bg-slate-900/50 backdrop-blur-sm z-30 lg:hidden opacity-0 invisible transition-all duration-300">
214
+ </div>
215
+
216
+ <!-- Main Content Area -->
217
+ <div class="flex-1 relative bg-slate-50/50 overflow-hidden flex flex-col min-w-0">
218
+ <!-- Inner Shadow -->
219
+ <div class="absolute inset-0 shadow-inner shadow-slate-200/30 pointer-events-none z-10"></div>
220
+
221
+ <!-- Scrollable Content -->
222
+ <div class="flex-1 overflow-y-auto scrollbar-modern px-8 pt-0 pb-8 relative z-0">
223
+ <div class="max-w-6xl mx-auto space-y-8 pb-20">
179
224
 
180
- <div class="grid grid-cols-1 xl:grid-cols-2 gap-8">
181
- <!-- Auto Test -->
182
- <div class="bg-white rounded-2xl shadow-lg border border-gray-200/50 overflow-hidden">
183
- <div class="bg-gradient-to-r from-green-50 to-emerald-50 p-6 border-b border-gray-200/50">
184
- <div class="flex items-center space-x-3">
185
- <div class="w-10 h-10 bg-gradient-to-r from-green-500 to-emerald-500 rounded-xl flex items-center justify-center">
186
- <i class="fas fa-play text-white"></i>
225
+ <!-- Generate Server Tab -->
226
+ <div id="generate-tab" class="tab-content animate-fade-in">
227
+
228
+ <!-- Hero Section -->
229
+ <div class="text-center mb-10">
230
+ <div
231
+ class="inline-flex items-center space-x-2 bg-blue-50 text-blue-700 px-4 py-2 rounded-full text-xs font-bold uppercase tracking-wider mb-4 border border-blue-100">
232
+ <i class="fas fa-sparkles"></i>
233
+ <span>AI-Powered</span>
234
+ </div>
235
+ <h2 class="text-3xl font-bold text-slate-900 mb-3">Generate Your MCP Server</h2>
236
+ <p class="text-slate-600 max-w-2xl mx-auto">Transform your data into powerful MCP servers in
237
+ minutes. Follow our step-by-step wizard.</p>
238
+ </div>
239
+
240
+ <!-- Wizard Progress -->
241
+ <div class="card p-6 mb-8">
242
+ <div class="flex items-center justify-between">
243
+ <div class="flex-1">
244
+ <div class="flex items-center">
245
+ <div id="step-1-indicator"
246
+ class="flex items-center justify-center w-10 h-10 bg-blue-600 text-white rounded-lg shadow-lg shadow-blue-500/30 font-bold transition-all">
247
+ 1</div>
248
+ <div class="flex-1 h-1 bg-slate-100 mx-4 rounded-full overflow-hidden">
249
+ <div id="progress-1-2"
250
+ class="h-full bg-blue-500 w-0 transition-all duration-500"></div>
251
+ </div>
187
252
  </div>
188
- <div>
189
- <h3 class="text-lg font-semibold text-gray-900">Auto Test</h3>
190
- <p class="text-sm text-gray-600">Automated testing suite</p>
253
+ <div class="mt-3">
254
+ <p class="text-sm font-bold text-slate-900">Data Source</p>
255
+ <p class="text-xs text-slate-500">Connect data</p>
256
+ </div>
257
+ </div>
258
+ <div class="flex-1">
259
+ <div class="flex items-center">
260
+ <div id="step-2-indicator"
261
+ class="flex items-center justify-center w-10 h-10 bg-slate-100 text-slate-400 rounded-lg font-bold transition-all">
262
+ 2</div>
263
+ <div class="flex-1 h-1 bg-slate-100 mx-4 rounded-full overflow-hidden">
264
+ <div id="progress-2-3"
265
+ class="h-full bg-blue-500 w-0 transition-all duration-500"></div>
266
+ </div>
267
+ </div>
268
+ <div class="mt-3">
269
+ <p class="text-sm font-bold text-slate-400">Preview</p>
270
+ <p class="text-xs text-slate-400">Validate data</p>
191
271
  </div>
192
272
  </div>
193
- </div>
194
-
195
- <div class="p-6 space-y-6">
196
273
  <div>
197
- <label class="block text-sm font-medium text-gray-700 mb-2">Select Server</label>
198
- <select id="testServerSelect" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500 focus:border-transparent">
199
- <option value="">Loading servers...</option>
200
- </select>
274
+ <div class="flex items-center">
275
+ <div id="step-3-indicator"
276
+ class="flex items-center justify-center w-10 h-10 bg-slate-100 text-slate-400 rounded-lg font-bold transition-all">
277
+ 3</div>
278
+ </div>
279
+ <div class="mt-3">
280
+ <p class="text-sm font-bold text-slate-400">Configure</p>
281
+ <p class="text-xs text-slate-400">Finalize</p>
282
+ </div>
201
283
  </div>
284
+ </div>
285
+ </div>
202
286
 
203
- <div class="flex space-x-3">
204
- <button id="runQuickTestBtn" class="flex-1 bg-gradient-to-r from-green-500 to-emerald-500 text-white px-6 py-3 rounded-xl font-medium hover:from-green-600 hover:to-emerald-600 transition-all duration-200 transform hover:scale-[1.02]">
205
- <i class="fas fa-bolt mr-2"></i>
206
- <span id="quickTestText">Quick Run Auto Tests</span>
207
- </button>
208
-
209
- <button id="runFullTestBtn" class="flex-1 bg-gradient-to-r from-blue-500 to-indigo-500 text-white px-6 py-3 rounded-xl font-medium hover:from-blue-600 hover:to-indigo-600 transition-all duration-200 transform hover:scale-[1.02]">
210
- <i class="fas fa-play-circle mr-2" id="fullTestIcon"></i>
211
- <span id="fullTestText">Run Auto Tests</span>
212
- </button>
287
+ <!-- Wizard Content -->
288
+ <div class="card overflow-hidden">
289
+
290
+ <!-- Step 1 -->
291
+ <div id="wizard-step-1" class="wizard-step">
292
+ <div class="bg-slate-50/50 p-6 border-b border-slate-200/60">
293
+ <h3 class="text-lg font-bold text-slate-900">Choose Data Source</h3>
294
+ <p class="text-sm text-slate-500">Select how you want to import your data.</p>
213
295
  </div>
296
+ <div class="p-8 space-y-8">
297
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
298
+ <label class="cursor-pointer group">
299
+ <input type="radio" name="dataSourceType" value="csv" class="peer sr-only">
300
+ <div
301
+ class="p-6 rounded-xl border-2 border-slate-200 hover:border-blue-400 peer-checked:border-blue-600 peer-checked:bg-blue-50/30 transition-all h-full">
302
+ <div
303
+ class="w-12 h-12 rounded-lg bg-green-100 text-green-600 flex items-center justify-center mb-4 group-hover:scale-110 transition-transform">
304
+ <i class="fas fa-file-csv text-2xl"></i>
305
+ </div>
306
+ <h4 class="font-bold text-slate-900 mb-1">CSV File</h4>
307
+ <p class="text-xs text-slate-500">Upload a comma-separated values file.
308
+ </p>
309
+ </div>
310
+ </label>
311
+ <label class="cursor-pointer group">
312
+ <input type="radio" name="dataSourceType" value="excel"
313
+ class="peer sr-only">
314
+ <div
315
+ class="p-6 rounded-xl border-2 border-slate-200 hover:border-blue-400 peer-checked:border-blue-600 peer-checked:bg-blue-50/30 transition-all h-full">
316
+ <div
317
+ class="w-12 h-12 rounded-lg bg-emerald-100 text-emerald-600 flex items-center justify-center mb-4 group-hover:scale-110 transition-transform">
318
+ <i class="fas fa-file-excel text-2xl"></i>
319
+ </div>
320
+ <h4 class="font-bold text-slate-900 mb-1">Excel File</h4>
321
+ <p class="text-xs text-slate-500">Upload an Excel spreadsheet (.xlsx).
322
+ </p>
323
+ </div>
324
+ </label>
325
+ <label class="cursor-pointer group">
326
+ <input type="radio" name="dataSourceType" value="database"
327
+ class="peer sr-only">
328
+ <div
329
+ class="p-6 rounded-xl border-2 border-slate-200 hover:border-blue-400 peer-checked:border-blue-600 peer-checked:bg-blue-50/30 transition-all h-full">
330
+ <div
331
+ class="w-12 h-12 rounded-lg bg-blue-100 text-blue-600 flex items-center justify-center mb-4 group-hover:scale-110 transition-transform">
332
+ <i class="fas fa-database text-2xl"></i>
333
+ </div>
334
+ <h4 class="font-bold text-slate-900 mb-1">Database</h4>
335
+ <p class="text-xs text-slate-500">Connect to SQL, MySQL, or Postgres.
336
+ </p>
337
+ </div>
338
+ </label>
339
+ </div>
214
340
 
215
- <div id="test-loading" class="hidden text-center py-4">
216
- <div class="inline-flex items-center space-x-2 text-green-600">
217
- <div class="w-4 h-4 border-2 border-green-600 border-t-transparent rounded-full animate-spin"></div>
218
- <span id="loadingText">Running tests...</span>
341
+ <!-- File Upload -->
342
+ <div id="file-upload-section" class="hidden animate-fade-in">
343
+ <div id="fileUpload"
344
+ class="border-2 border-dashed border-slate-300 rounded-xl p-10 text-center hover:border-blue-500 hover:bg-blue-50/30 transition-all cursor-pointer">
345
+ <div
346
+ class="w-16 h-16 mx-auto bg-slate-100 rounded-full flex items-center justify-center mb-4 text-slate-400">
347
+ <i class="fas fa-cloud-upload-alt text-3xl"></i>
348
+ </div>
349
+ <h4 class="text-lg font-bold text-slate-900">Click or Drag file here</h4>
350
+ <p class="text-sm text-slate-500 mt-1">Supports .csv and .xlsx files up to
351
+ 10MB</p>
352
+ <input type="file" id="fileInput" accept=".csv,.xlsx,.xls" class="hidden">
353
+ </div>
219
354
  </div>
220
- </div>
221
355
 
222
- <div id="test-error" class="hidden bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-lg"></div>
223
- </div>
224
- </div>
356
+ <!-- Database Config -->
357
+ <div id="database-section" class="hidden animate-fade-in space-y-6">
358
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
359
+ <div>
360
+ <label
361
+ class="block text-xs font-bold text-slate-700 uppercase mb-2">Database
362
+ Type</label>
363
+ <select id="dbType" class="input">
364
+ <option value="mssql">SQL Server</option>
365
+ <option value="mysql">MySQL</option>
366
+ <option value="postgresql">PostgreSQL</option>
367
+ <option value="sqlite">SQLite</option>
368
+ </select>
369
+ </div>
370
+ <div>
371
+ <label
372
+ class="block text-xs font-bold text-slate-700 uppercase mb-2">Host</label>
373
+ <input type="text" id="dbHost" placeholder="localhost" class="input">
374
+ </div>
375
+ <div>
376
+ <label
377
+ class="block text-xs font-bold text-slate-700 uppercase mb-2">Port</label>
378
+ <input type="number" id="dbPort" placeholder="3306" class="input">
379
+ </div>
380
+ <div>
381
+ <label
382
+ class="block text-xs font-bold text-slate-700 uppercase mb-2">Database
383
+ Name</label>
384
+ <input type="text" id="dbName" placeholder="my_database" class="input">
385
+ </div>
386
+ <div>
387
+ <label
388
+ class="block text-xs font-bold text-slate-700 uppercase mb-2">Username</label>
389
+ <input type="text" id="dbUser" placeholder="root" class="input">
390
+ </div>
391
+ <div>
392
+ <label
393
+ class="block text-xs font-bold text-slate-700 uppercase mb-2">Password</label>
394
+ <input type="password" id="dbPassword" placeholder="••••••••"
395
+ class="input">
396
+ </div>
397
+ </div>
398
+ </div>
225
399
 
226
- <!-- Custom Test -->
227
- <div class="bg-white rounded-2xl shadow-lg border border-gray-200/50 overflow-hidden">
228
- <div class="bg-gradient-to-r from-orange-50 to-yellow-50 p-6 border-b border-gray-200/50">
229
- <div class="flex items-center space-x-3">
230
- <div class="w-10 h-10 bg-gradient-to-r from-orange-500 to-yellow-500 rounded-xl flex items-center justify-center">
231
- <i class="fas fa-code text-white"></i>
400
+ <!-- Loading/Error -->
401
+ <div id="parse-loading" class="hidden text-center py-8">
402
+ <div
403
+ class="w-8 h-8 border-4 border-blue-600 border-t-transparent rounded-full animate-spin mx-auto mb-3">
404
+ </div>
405
+ <p class="text-sm font-medium text-blue-600">Analyzing data structure...</p>
232
406
  </div>
233
- <div>
234
- <h3 class="text-lg font-semibold text-gray-900">Custom Test</h3>
235
- <p class="text-sm text-gray-600">Create custom test scenarios</p>
407
+ <div id="parse-error"
408
+ class="hidden p-4 bg-red-50 text-red-700 rounded-lg text-sm border border-red-200">
409
+ </div>
410
+
411
+ <!-- Navigation -->
412
+ <div class="flex justify-end pt-4 border-t border-slate-100">
413
+ <button id="next-to-step-2"
414
+ class="bg-blue-600 hover:bg-blue-700 text-white px-6 py-2.5 rounded-lg font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed shadow-lg shadow-blue-500/30"
415
+ disabled>
416
+ Next Step <i class="fas fa-arrow-right ml-2"></i>
417
+ </button>
236
418
  </div>
237
419
  </div>
238
420
  </div>
239
421
 
240
- <div class="p-6 space-y-6">
241
- <div>
242
- <label class="block text-sm font-medium text-gray-700 mb-2">Test Type</label>
243
- <select id="testType" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-orange-500 focus:border-transparent">
244
- <option value="tools/call">Tool Call</option>
245
- <option value="resources/list">Resource List</option>
246
- <option value="resources/read">Resource Read</option>
247
- <option value="prompts/list">Prompt List</option>
248
- <option value="prompts/get">Prompt Get</option>
249
- </select>
422
+ <!-- Step 2 -->
423
+ <div id="wizard-step-2" class="wizard-step hidden">
424
+ <div
425
+ class="bg-slate-50/50 p-6 border-b border-slate-200/60 flex justify-between items-center">
426
+ <div>
427
+ <h3 class="text-lg font-bold text-slate-900">Data Preview</h3>
428
+ <p class="text-sm text-slate-500">Review the detected schema and data.</p>
429
+ </div>
250
430
  </div>
431
+ <div class="p-8 space-y-6">
432
+ <div id="data-preview" class="space-y-4"></div>
251
433
 
252
- <div>
253
- <label class="block text-sm font-medium text-gray-700 mb-2">Test Name</label>
254
- <div id="testNameContainer">
255
- <input type="text" id="testName" placeholder="my-test-tool" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-orange-500 focus:border-transparent">
434
+ <div class="flex justify-between pt-4 border-t border-slate-100">
435
+ <button id="back-to-step-1"
436
+ class="text-slate-600 hover:text-slate-900 font-medium px-4 py-2">
437
+ <i class="fas fa-arrow-left mr-2"></i> Back
438
+ </button>
439
+ <button id="next-to-step-3"
440
+ class="bg-blue-600 hover:bg-blue-700 text-white px-6 py-2.5 rounded-lg font-medium transition-colors shadow-lg shadow-blue-500/30">
441
+ Configure Server <i class="fas fa-arrow-right ml-2"></i>
442
+ </button>
256
443
  </div>
257
444
  </div>
445
+ </div>
258
446
 
259
- <div>
260
- <label class="block text-sm font-medium text-gray-700 mb-2">Parameters (JSON)</label>
261
- <textarea id="testParams" rows="4" placeholder='{"param1": "value1"}' class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-orange-500 focus:border-transparent font-mono text-sm resize-none"></textarea>
447
+ <!-- Step 3 -->
448
+ <div id="wizard-step-3" class="wizard-step hidden">
449
+ <div class="bg-slate-50/50 p-6 border-b border-slate-200/60">
450
+ <h3 class="text-lg font-bold text-slate-900">Final Configuration</h3>
451
+ <p class="text-sm text-slate-500">Set your server details and generate.</p>
452
+ </div>
453
+ <div class="p-8 space-y-6">
454
+ <div>
455
+ <label class="block text-xs font-bold text-slate-700 uppercase mb-2">Server
456
+ Name</label>
457
+ <input type="text" id="serverName" placeholder="my-mcp-server" class="input">
458
+ <div id="name-validation" class="mt-1 text-xs"></div>
459
+ </div>
460
+ <div>
461
+ <label
462
+ class="block text-xs font-bold text-slate-700 uppercase mb-2">Description</label>
463
+ <textarea id="serverDescription" rows="3"
464
+ placeholder="What does this server do?"
465
+ class="input resize-none"></textarea>
466
+ </div>
467
+ <div>
468
+ <label
469
+ class="block text-xs font-bold text-slate-700 uppercase mb-2">Version</label>
470
+ <input type="text" id="serverVersion" value="1.0.0" class="input">
471
+ </div>
472
+
473
+ <div id="generate-loading" class="hidden text-center py-8">
474
+ <div
475
+ class="w-8 h-8 border-4 border-purple-600 border-t-transparent rounded-full animate-spin mx-auto mb-3">
476
+ </div>
477
+ <p class="text-sm font-medium text-purple-600">Generating server code...</p>
478
+ </div>
479
+ <div id="generate-success"
480
+ class="hidden p-4 bg-green-50 text-green-700 rounded-lg text-sm border border-green-200">
481
+ </div>
482
+ <div id="generate-error"
483
+ class="hidden p-4 bg-red-50 text-red-700 rounded-lg text-sm border border-red-200">
484
+ </div>
485
+
486
+ <div class="flex justify-between pt-4 border-t border-slate-100">
487
+ <button id="back-to-step-2"
488
+ class="text-slate-600 hover:text-slate-900 font-medium px-4 py-2">
489
+ <i class="fas fa-arrow-left mr-2"></i> Back
490
+ </button>
491
+ <button id="generateBtn"
492
+ class="bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white px-8 py-3 rounded-lg font-bold transition-all shadow-lg shadow-purple-500/30 transform hover:-translate-y-0.5 disabled:opacity-50 disabled:cursor-not-allowed">
493
+ <i class="fas fa-rocket mr-2"></i> Generate Server
494
+ </button>
495
+ </div>
262
496
  </div>
497
+ </div>
263
498
 
264
- <button id="runCustomTestBtn" class="w-full bg-gradient-to-r from-orange-500 to-yellow-500 text-white px-6 py-3 rounded-xl font-medium hover:from-orange-600 hover:to-yellow-600 transition-all duration-200 transform hover:scale-[1.02]">
265
- <i class="fas fa-flask mr-2"></i>
266
- Run Custom Test
267
- </button>
499
+ </div>
500
+ </div>
501
+
502
+ <!-- Manage Servers Tab -->
503
+ <div id="manage-tab" class="tab-content hidden animate-fade-in">
504
+ <div class="flex justify-between items-center mb-8">
505
+ <div>
506
+ <h2 class="text-3xl font-bold text-slate-900">Manage Servers</h2>
507
+ <p class="text-slate-600 mt-1">View and control your generated servers.</p>
268
508
  </div>
509
+ <button onclick="window.location.href='/generate'"
510
+ class="bg-white border border-slate-200 hover:border-blue-400 text-slate-700 hover:text-blue-600 px-4 py-2 rounded-lg font-medium transition-colors shadow-sm">
511
+ <i class="fas fa-plus mr-2"></i> New Server
512
+ </button>
513
+ </div>
514
+ <div id="server-list" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
515
+ <!-- Server cards populated by JS -->
269
516
  </div>
270
517
  </div>
271
518
 
272
- <!-- Test Results -->
273
- <div class="bg-white rounded-2xl shadow-lg border border-gray-200/50 overflow-hidden">
274
- <div class="bg-gradient-to-r from-gray-50 to-slate-50 p-6 border-b border-gray-200/50">
275
- <div class="flex items-center space-x-3">
276
- <div class="w-10 h-10 bg-gradient-to-r from-gray-500 to-slate-500 rounded-xl flex items-center justify-center">
277
- <i class="fas fa-chart-line text-white"></i>
519
+ <!-- Test Servers Tab -->
520
+ <div id="test-tab" class="tab-content hidden animate-fade-in">
521
+ <div class="text-center mb-10">
522
+ <h2 class="text-3xl font-bold text-slate-900">Test Suite</h2>
523
+ <p class="text-slate-600">Verify your server functionality.</p>
524
+ </div>
525
+
526
+ <div class="card mb-6 p-0 overflow-hidden">
527
+ <div class="border-b border-slate-200 bg-slate-50/80">
528
+ <div class="px-5 pt-4">
529
+ <nav class="flex items-end gap-1" aria-label="Test Suite tabs">
530
+ <button data-test-mode-tab="automated" class="px-4 py-2.5 rounded-t-lg text-sm font-semibold border border-slate-200 border-b-white bg-white text-slate-900 -mb-px">
531
+ Automated Testing
532
+ </button>
533
+ <button data-test-mode-tab="custom" class="px-4 py-2.5 rounded-t-lg text-sm font-semibold border border-transparent text-slate-600 hover:text-blue-700 hover:bg-white/70">
534
+ Custom Request
535
+ </button>
536
+ <button data-test-mode-tab="e2e" data-test-mode-locked="true" disabled aria-disabled="true" title="E2E Testing yakında aktif olacak" class="px-4 py-2.5 rounded-t-lg text-sm font-semibold border border-transparent text-slate-400 cursor-not-allowed">
537
+ <i class="fas fa-lock mr-2 text-xs"></i>E2E Testing
538
+ </button>
539
+ </nav>
278
540
  </div>
279
- <div>
280
- <h3 class="text-lg font-semibold text-gray-900">Test Results</h3>
281
- <p class="text-sm text-gray-600">View test execution results</p>
541
+ </div>
542
+
543
+ <div class="p-6" data-test-mode-panel="automated">
544
+ <div class="grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_220px_auto] gap-3 items-end">
545
+ <div>
546
+ <label class="block text-xs font-bold text-slate-700 uppercase mb-2">Select Server</label>
547
+ <select id="autoTestServerSelect" class="input"></select>
548
+ </div>
549
+ <div>
550
+ <label class="block text-xs font-bold text-slate-700 uppercase mb-2">Type</label>
551
+ <select id="autoTestType" class="input">
552
+ <option value="quick">Quick Test</option>
553
+ <option value="full">Full Test</option>
554
+ </select>
555
+ </div>
556
+ <div class="flex">
557
+ <button id="runAutoTestsBtn"
558
+ class="w-full md:w-auto bg-blue-600 hover:bg-blue-700 text-white px-4 py-2.5 rounded-lg font-medium transition-colors shadow-md whitespace-nowrap">
559
+ <i id="autoTestRunIcon" class="fas fa-play mr-2"></i><span id="autoTestRunText">Run</span>
560
+ </button>
561
+ </div>
562
+ </div>
563
+ </div>
564
+
565
+ <div class="p-6 hidden" data-test-mode-panel="custom">
566
+ <div class="space-y-4">
567
+ <div>
568
+ <label class="block text-xs font-bold text-slate-700 uppercase mb-2">Select Server</label>
569
+ <select id="customTestServerSelect" class="input"></select>
570
+ </div>
571
+ <div class="grid grid-cols-2 gap-4">
572
+ <div>
573
+ <label class="block text-xs font-bold text-slate-700 uppercase mb-2">Type</label>
574
+ <select id="testType" class="input">
575
+ <option value="tools/call">Tool Call</option>
576
+ <option value="resources/list">Resource List</option>
577
+ <option value="prompts/list">Prompt List</option>
578
+ </select>
579
+ </div>
580
+ <div>
581
+ <label class="block text-xs font-bold text-slate-700 uppercase mb-2">Name</label>
582
+ <div id="testNameContainer">
583
+ <input type="text" id="testName" placeholder="tool_name" class="input">
584
+ </div>
585
+ </div>
586
+ </div>
587
+ <div>
588
+ <label class="block text-xs font-bold text-slate-700 uppercase mb-2">Params (JSON)</label>
589
+ <textarea id="testParams" rows="3" class="input font-mono text-xs"
590
+ placeholder="{}"></textarea>
591
+ </div>
592
+ <button id="runCustomTestBtn"
593
+ class="w-full bg-purple-600 hover:bg-purple-700 text-white px-4 py-2.5 rounded-lg font-medium transition-colors shadow-md">
594
+ Send Request
595
+ </button>
596
+ </div>
597
+ </div>
598
+
599
+ <div class="p-6 hidden" data-test-mode-panel="e2e">
600
+ <div class="grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_220px_auto] gap-3 items-end">
601
+ <div>
602
+ <label class="block text-xs font-bold text-slate-700 uppercase mb-2">Select Server</label>
603
+ <select id="transportTestServerSelect" class="input"></select>
604
+ </div>
605
+ <div>
606
+ <label class="block text-xs font-bold text-slate-700 uppercase mb-2">Transport</label>
607
+ <select id="transportType" class="input">
608
+ <option value="all">All</option>
609
+ <option value="stdio">STDIO</option>
610
+ <option value="sse">SSE</option>
611
+ <option value="streamable-http">Streamable HTTP</option>
612
+ <option value="websocket">WebSocket</option>
613
+ </select>
614
+ </div>
615
+ <div class="flex">
616
+ <button id="runTransportTestBtn"
617
+ class="w-full md:w-auto bg-emerald-600 hover:bg-emerald-700 text-white px-4 py-2.5 rounded-lg font-medium transition-colors shadow-md whitespace-nowrap">
618
+ <i class="fas fa-network-wired mr-2"></i> Run Transport Test
619
+ </button>
620
+ </div>
282
621
  </div>
283
622
  </div>
284
623
  </div>
285
- <div class="p-6">
286
- <pre id="test-results" class="hidden bg-gray-50 p-4 rounded-xl text-sm overflow-auto max-h-96 font-mono border border-gray-200"></pre>
287
- <div id="no-results" class="text-center py-12 text-gray-500">
288
- <i class="fas fa-chart-line text-4xl mb-4 opacity-50"></i>
289
- <p>No test results yet. Run a test to see results here.</p>
624
+
625
+ <div id="test-loading" class="hidden text-center text-sm text-blue-600 py-2">Running...</div>
626
+ <div id="test-error" class="hidden text-sm text-red-600 bg-red-50 p-3 rounded"></div>
627
+
628
+ <!-- Results -->
629
+ <div class="card mt-8">
630
+ <div
631
+ class="p-4 border-b border-slate-200/60 bg-slate-50/50 flex justify-between items-center">
632
+ <h3 class="font-bold text-slate-900">Results</h3>
633
+ <span class="text-xs text-slate-500 font-mono">JSON Output</span>
634
+ </div>
635
+ <div class="p-0">
636
+ <pre id="test-results"
637
+ class="hidden bg-white dark:bg-slate-900 text-slate-800 dark:text-blue-300 p-6 text-xs font-mono overflow-auto max-h-96 border border-slate-200 dark:border-slate-700 rounded-lg whitespace-pre-wrap"></pre>
638
+ <div id="no-results" class="p-12 text-center text-slate-400">
639
+ <i class="fas fa-terminal text-3xl mb-3 opacity-50"></i>
640
+ <p>No results to display</p>
641
+ </div>
290
642
  </div>
291
643
  </div>
292
644
  </div>
645
+
646
+ </div>
647
+ </div>
648
+ </div>
649
+ </div>
650
+
651
+ <!-- Success Modal -->
652
+ <div id="success-modal"
653
+ class="fixed inset-0 bg-slate-900/60 backdrop-blur-sm z-50 opacity-0 invisible transition-all duration-300 flex items-center justify-center p-4">
654
+ <div
655
+ class="bg-white rounded-2xl shadow-2xl max-w-md w-full transform scale-95 transition-transform duration-300 overflow-hidden">
656
+ <div class="p-8 text-center">
657
+ <div
658
+ class="w-20 h-20 bg-green-100 rounded-full flex items-center justify-center mx-auto mb-6 animate-bounce-slow">
659
+ <i class="fas fa-check text-green-500 text-4xl"></i>
293
660
  </div>
294
- </main>
661
+ <h3 class="text-2xl font-bold text-slate-900 mb-2">Server Generated!</h3>
662
+ <p id="success-message" class="text-slate-600 mb-8">Your MCP server is ready to use.</p>
663
+ <div class="flex flex-col gap-3">
664
+ <button
665
+ class="w-full bg-blue-600 hover:bg-blue-700 text-white px-4 py-3 rounded-xl font-bold transition-colors shadow-lg shadow-blue-500/30"
666
+ onclick="goToManageServers()">
667
+ <i class="fas fa-server mr-2"></i> Manage Servers
668
+ </button>
669
+ <button
670
+ class="w-full bg-slate-100 hover:bg-slate-200 text-slate-700 px-4 py-3 rounded-xl font-bold transition-colors"
671
+ onclick="closeSuccessModal()">
672
+ <i class="fas fa-plus mr-2"></i> Create Another
673
+ </button>
674
+ </div>
675
+ </div>
295
676
  </div>
296
677
  </div>
297
678
 
298
679
  <!-- Scripts -->
299
- <script src="shared.js"></script>
680
+ <script src="logger.js"></script>
681
+ <script src="shared.js"></script>
682
+ <script src="sidebar.js"></script>
300
683
  <script src="app.js"></script>
301
684
  </body>
302
- </html>
685
+
686
+ </html>