@softtechai/quickmcp 1.0.14 → 1.1.0

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 (417) hide show
  1. package/dist/auth/auth-utils.d.ts +130 -0
  2. package/dist/auth/auth-utils.d.ts.map +1 -0
  3. package/dist/auth/auth-utils.js +600 -0
  4. package/dist/auth/auth-utils.js.map +1 -0
  5. package/dist/auth/jwks-provider.d.ts +9 -0
  6. package/dist/auth/jwks-provider.d.ts.map +1 -0
  7. package/dist/auth/jwks-provider.js +56 -0
  8. package/dist/auth/jwks-provider.js.map +1 -0
  9. package/dist/auth/token-utils.d.ts +40 -0
  10. package/dist/auth/token-utils.d.ts.map +1 -0
  11. package/dist/auth/token-utils.js +162 -0
  12. package/dist/auth/token-utils.js.map +1 -0
  13. package/dist/client/MCPClient.js +5 -4
  14. package/dist/client/MCPClient.js.map +1 -1
  15. package/dist/config/auth-config.d.ts +16 -0
  16. package/dist/config/auth-config.d.ts.map +1 -0
  17. package/dist/config/auth-config.js +107 -0
  18. package/dist/config/auth-config.js.map +1 -0
  19. package/dist/constant/constant.d.ts +20 -0
  20. package/dist/constant/constant.d.ts.map +1 -0
  21. package/dist/constant/constant.js +24 -0
  22. package/dist/constant/constant.js.map +1 -0
  23. package/dist/database/async-datastore.d.ts +6 -0
  24. package/dist/database/async-datastore.d.ts.map +1 -0
  25. package/dist/database/async-datastore.js +15 -0
  26. package/dist/database/async-datastore.js.map +1 -0
  27. package/dist/database/database-utils.d.ts +6 -0
  28. package/dist/database/database-utils.d.ts.map +1 -0
  29. package/dist/database/database-utils.js +29 -0
  30. package/dist/database/database-utils.js.map +1 -0
  31. package/dist/database/datastore.d.ts +164 -0
  32. package/dist/database/datastore.d.ts.map +1 -0
  33. package/dist/{parsers/types/index.js → database/datastore.js} +1 -0
  34. package/dist/database/datastore.js.map +1 -0
  35. package/dist/database/factory.d.ts +4 -0
  36. package/dist/database/factory.d.ts.map +1 -0
  37. package/dist/database/factory.js +32 -0
  38. package/dist/database/factory.js.map +1 -0
  39. package/dist/database/jdbc-manager.d.ts +49 -0
  40. package/dist/database/jdbc-manager.d.ts.map +1 -0
  41. package/dist/database/jdbc-manager.js +50 -0
  42. package/dist/database/jdbc-manager.js.map +1 -0
  43. package/dist/database/sqlite-manager.d.ts +46 -44
  44. package/dist/database/sqlite-manager.d.ts.map +1 -1
  45. package/dist/database/sqlite-manager.js +492 -42
  46. package/dist/database/sqlite-manager.js.map +1 -1
  47. package/dist/database/supabase-manager.d.ts +58 -0
  48. package/dist/database/supabase-manager.d.ts.map +1 -0
  49. package/dist/database/supabase-manager.js +432 -0
  50. package/dist/database/supabase-manager.js.map +1 -0
  51. package/dist/generators/MCPServerGenerator.d.ts +103 -20
  52. package/dist/generators/MCPServerGenerator.d.ts.map +1 -1
  53. package/dist/generators/MCPServerGenerator.js +6930 -128
  54. package/dist/generators/MCPServerGenerator.js.map +1 -1
  55. package/dist/index.d.ts +0 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +8 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/integrated-mcp-server-new.d.ts +14 -2
  60. package/dist/integrated-mcp-server-new.d.ts.map +1 -1
  61. package/dist/integrated-mcp-server-new.js +270 -180
  62. package/dist/integrated-mcp-server-new.js.map +1 -1
  63. package/dist/mcp-core/McpCoreService.d.ts +63 -0
  64. package/dist/mcp-core/McpCoreService.d.ts.map +1 -0
  65. package/dist/mcp-core/McpCoreService.js +492 -0
  66. package/dist/mcp-core/McpCoreService.js.map +1 -0
  67. package/dist/parsers/CsvParser.d.ts +1 -1
  68. package/dist/parsers/CsvParser.d.ts.map +1 -1
  69. package/dist/parsers/CsvParser.js +3 -2
  70. package/dist/parsers/CsvParser.js.map +1 -1
  71. package/dist/parsers/DatabaseParser.d.ts.map +1 -1
  72. package/dist/parsers/DatabaseParser.js +9 -8
  73. package/dist/parsers/DatabaseParser.js.map +1 -1
  74. package/dist/parsers/ExcelParser.d.ts +15 -0
  75. package/dist/parsers/ExcelParser.d.ts.map +1 -1
  76. package/dist/parsers/ExcelParser.js +287 -21
  77. package/dist/parsers/ExcelParser.js.map +1 -1
  78. package/dist/parsers/WebPageParser.d.ts +5 -0
  79. package/dist/parsers/WebPageParser.d.ts.map +1 -0
  80. package/dist/parsers/WebPageParser.js +35 -0
  81. package/dist/parsers/WebPageParser.js.map +1 -0
  82. package/dist/parsers/index.d.ts +3 -2
  83. package/dist/parsers/index.d.ts.map +1 -1
  84. package/dist/parsers/index.js +19 -16
  85. package/dist/parsers/index.js.map +1 -1
  86. package/dist/server/api/askApi.d.ts +41 -0
  87. package/dist/server/api/askApi.d.ts.map +1 -0
  88. package/dist/server/api/askApi.js +479 -0
  89. package/dist/server/api/askApi.js.map +1 -0
  90. package/dist/server/api/authApi.d.ts +101 -0
  91. package/dist/server/api/authApi.d.ts.map +1 -0
  92. package/dist/server/api/authApi.js +1472 -0
  93. package/dist/server/api/authApi.js.map +1 -0
  94. package/dist/server/api/authProperty.d.ts +18 -0
  95. package/dist/server/api/authProperty.d.ts.map +1 -0
  96. package/dist/server/api/authProperty.js +41 -0
  97. package/dist/server/api/authProperty.js.map +1 -0
  98. package/dist/server/api/configApi.d.ts +15 -0
  99. package/dist/server/api/configApi.d.ts.map +1 -0
  100. package/dist/server/api/configApi.js +42 -0
  101. package/dist/server/api/configApi.js.map +1 -0
  102. package/dist/server/api/databaseApi.d.ts +14 -0
  103. package/dist/server/api/databaseApi.d.ts.map +1 -0
  104. package/dist/server/api/databaseApi.js +111 -0
  105. package/dist/server/api/databaseApi.js.map +1 -0
  106. package/dist/server/api/directoryApi.d.ts +9 -0
  107. package/dist/server/api/directoryApi.d.ts.map +1 -0
  108. package/dist/server/api/directoryApi.js +103 -0
  109. package/dist/server/api/directoryApi.js.map +1 -0
  110. package/dist/server/api/generateApi.d.ts +24 -0
  111. package/dist/server/api/generateApi.d.ts.map +1 -0
  112. package/dist/server/api/generateApi.js +457 -0
  113. package/dist/server/api/generateApi.js.map +1 -0
  114. package/dist/server/api/healthApi.d.ts +9 -0
  115. package/dist/server/api/healthApi.d.ts.map +1 -0
  116. package/dist/server/api/healthApi.js +15 -0
  117. package/dist/server/api/healthApi.js.map +1 -0
  118. package/dist/server/api/indexApi.d.ts +21 -0
  119. package/dist/server/api/indexApi.d.ts.map +1 -0
  120. package/dist/server/api/indexApi.js +61 -0
  121. package/dist/server/api/indexApi.js.map +1 -0
  122. package/dist/server/api/logsApi.d.ts +12 -0
  123. package/dist/server/api/logsApi.d.ts.map +1 -0
  124. package/dist/server/api/logsApi.js +37 -0
  125. package/dist/server/api/logsApi.js.map +1 -0
  126. package/dist/server/api/mcpApi.d.ts +20 -0
  127. package/dist/server/api/mcpApi.d.ts.map +1 -0
  128. package/dist/server/api/mcpApi.js +120 -0
  129. package/dist/server/api/mcpApi.js.map +1 -0
  130. package/dist/server/api/nameApi.d.ts +21 -0
  131. package/dist/server/api/nameApi.d.ts.map +1 -0
  132. package/dist/server/api/nameApi.js +42 -0
  133. package/dist/server/api/nameApi.js.map +1 -0
  134. package/dist/server/api/parseApi.d.ts +9 -0
  135. package/dist/server/api/parseApi.d.ts.map +1 -0
  136. package/dist/server/api/parseApi.js +3245 -0
  137. package/dist/server/api/parseApi.js.map +1 -0
  138. package/dist/server/api/serverApi.d.ts +44 -0
  139. package/dist/server/api/serverApi.d.ts.map +1 -0
  140. package/dist/server/api/serverApi.js +417 -0
  141. package/dist/server/api/serverApi.js.map +1 -0
  142. package/dist/{dynamic-mcp-executor.d.ts → server/dynamic-mcp-executor.d.ts} +4 -5
  143. package/dist/server/dynamic-mcp-executor.d.ts.map +1 -0
  144. package/dist/server/dynamic-mcp-executor.js +62 -0
  145. package/dist/server/dynamic-mcp-executor.js.map +1 -0
  146. package/dist/server/port-utils.d.ts +14 -0
  147. package/dist/server/port-utils.d.ts.map +1 -0
  148. package/dist/server/port-utils.js +31 -0
  149. package/dist/server/port-utils.js.map +1 -0
  150. package/dist/server/server-utils.d.ts +13 -0
  151. package/dist/server/server-utils.d.ts.map +1 -0
  152. package/dist/server/server-utils.js +72 -0
  153. package/dist/server/server-utils.js.map +1 -0
  154. package/dist/{web → server}/server.d.ts +1 -0
  155. package/dist/server/server.d.ts.map +1 -0
  156. package/dist/server/server.js +535 -0
  157. package/dist/server/server.js.map +1 -0
  158. package/dist/server/tool-executer.d.ts +101 -0
  159. package/dist/server/tool-executer.d.ts.map +1 -0
  160. package/dist/server/tool-executer.js +6198 -0
  161. package/dist/server/tool-executer.js.map +1 -0
  162. package/dist/types/index.d.ts +1197 -4
  163. package/dist/types/index.d.ts.map +1 -1
  164. package/dist/types/index.js +1028 -0
  165. package/dist/types/index.js.map +1 -1
  166. package/dist/upload/upload-utils.d.ts +4 -0
  167. package/dist/upload/upload-utils.d.ts.map +1 -0
  168. package/dist/upload/upload-utils.js +29 -0
  169. package/dist/upload/upload-utils.js.map +1 -0
  170. package/dist/utils/deployment-util.d.ts +14 -0
  171. package/dist/utils/deployment-util.d.ts.map +1 -0
  172. package/dist/utils/deployment-util.js +46 -0
  173. package/dist/utils/deployment-util.js.map +1 -0
  174. package/dist/utils/logger.d.ts +15 -0
  175. package/dist/utils/logger.d.ts.map +1 -0
  176. package/dist/utils/logger.js +56 -0
  177. package/dist/utils/logger.js.map +1 -0
  178. package/package.json +18 -6
  179. package/quickmcp-direct-stdio.js +245 -163
  180. package/src/web/public/app.js +15370 -1471
  181. package/src/web/public/authorization.html +868 -0
  182. package/src/web/public/database-tables.html +283 -547
  183. package/src/web/public/how-to-use.html +446 -462
  184. package/src/web/public/how-to-use.js +4 -4
  185. package/src/web/public/images/app/activepieces.png +0 -0
  186. package/src/web/public/images/app/airtable.png +0 -0
  187. package/src/web/public/images/app/androidstudio.png +0 -0
  188. package/src/web/public/images/app/antigravity.png +0 -0
  189. package/src/web/public/images/app/applenotes.png +0 -0
  190. package/src/web/public/images/app/applereminders.png +0 -0
  191. package/src/web/public/images/app/asana.png +0 -0
  192. package/src/web/public/images/app/azureai.png +0 -0
  193. package/src/web/public/images/app/bash.png +0 -0
  194. package/src/web/public/images/app/bearnotes.png +0 -0
  195. package/src/web/public/images/app/bitbucket.png +0 -0
  196. package/src/web/public/images/app/claude.png +0 -0
  197. package/src/web/public/images/app/cli.png +0 -0
  198. package/src/web/public/images/app/clickup.png +0 -0
  199. package/src/web/public/images/app/cohere.png +0 -0
  200. package/src/web/public/images/app/confluence.png +0 -0
  201. package/src/web/public/images/app/confluence2.png +0 -0
  202. package/src/web/public/images/app/curl.png +0 -0
  203. package/src/web/public/images/app/curl_mini.png +0 -0
  204. package/src/web/public/images/app/cursor.png +0 -0
  205. package/src/web/public/images/app/db2.png +0 -0
  206. package/src/web/public/images/app/deepseek.png +0 -0
  207. package/src/web/public/images/app/discord.png +0 -0
  208. package/src/web/public/images/app/docker.png +0 -0
  209. package/src/web/public/images/app/dockerhub.png +0 -0
  210. package/src/web/public/images/app/dropbox.png +0 -0
  211. package/src/web/public/images/app/elasticsearch.png +0 -0
  212. package/src/web/public/images/app/facebook.png +0 -0
  213. package/src/web/public/images/app/falai.png +0 -0
  214. package/src/web/public/images/app/fireworks.png +0 -0
  215. package/src/web/public/images/app/gdrive.png +0 -0
  216. package/src/web/public/images/app/gemini.png +0 -0
  217. package/src/web/public/images/app/github.png +0 -0
  218. package/src/web/public/images/app/githubcopilot.png +0 -0
  219. package/src/web/public/images/app/gitlab.png +0 -0
  220. package/src/web/public/images/app/gmail.png +0 -0
  221. package/src/web/public/images/app/googlecalender.png +0 -0
  222. package/src/web/public/images/app/googledocs.png +0 -0
  223. package/src/web/public/images/app/googlesheets.png +0 -0
  224. package/src/web/public/images/app/gradle.png +0 -0
  225. package/src/web/public/images/app/grafana.png +0 -0
  226. package/src/web/public/images/app/graphql.png +0 -0
  227. package/src/web/public/images/app/grok.png +0 -0
  228. package/src/web/public/images/app/groq.png +0 -0
  229. package/src/web/public/images/app/hazelcast.png +0 -0
  230. package/src/web/public/images/app/huggingface.png +0 -0
  231. package/src/web/public/images/app/imessage.png +0 -0
  232. package/src/web/public/images/app/instagram.png +0 -0
  233. package/src/web/public/images/app/intellij.png +0 -0
  234. package/src/web/public/images/app/jenkins.png +0 -0
  235. package/src/web/public/images/app/jira.png +0 -0
  236. package/src/web/public/images/app/kafka.png +0 -0
  237. package/src/web/public/images/app/kubernetes.png +0 -0
  238. package/src/web/public/images/app/linear.png +0 -0
  239. package/src/web/public/images/app/linkedin.png +0 -0
  240. package/src/web/public/images/app/llama.png +0 -0
  241. package/src/web/public/images/app/make.png +0 -0
  242. package/src/web/public/images/app/maven.png +0 -0
  243. package/src/web/public/images/app/mcp.png +0 -0
  244. package/src/web/public/images/app/microsoftteams.png +0 -0
  245. package/src/web/public/images/app/mistral.png +0 -0
  246. package/src/web/public/images/app/monday.png +0 -0
  247. package/src/web/public/images/app/mongodb.png +0 -0
  248. package/src/web/public/images/app/mssql.png +0 -0
  249. package/src/web/public/images/app/mysql.png +0 -0
  250. package/src/web/public/images/app/n8n.png +0 -0
  251. package/src/web/public/images/app/notion.png +0 -0
  252. package/src/web/public/images/app/npm.png +0 -0
  253. package/src/web/public/images/app/nuget.png +0 -0
  254. package/src/web/public/images/app/obsidian.png +0 -0
  255. package/src/web/public/images/app/openai.png +0 -0
  256. package/src/web/public/images/app/openrouter.png +0 -0
  257. package/src/web/public/images/app/opensearch.png +0 -0
  258. package/src/web/public/images/app/openshift.png +0 -0
  259. package/src/web/public/images/app/oracle.png +0 -0
  260. package/src/web/public/images/app/perplexity.png +0 -0
  261. package/src/web/public/images/app/pipedream.png +0 -0
  262. package/src/web/public/images/app/postgresql.png +0 -0
  263. package/src/web/public/images/app/powershell.png +0 -0
  264. package/src/web/public/images/app/prometheus.png +0 -0
  265. package/src/web/public/images/app/reddit.png +0 -0
  266. package/src/web/public/images/app/redis.png +0 -0
  267. package/src/web/public/images/app/rss.png +0 -0
  268. package/src/web/public/images/app/signal.png +0 -0
  269. package/src/web/public/images/app/slack.png +0 -0
  270. package/src/web/public/images/app/soap.png +0 -0
  271. package/src/web/public/images/app/sqlite.png +0 -0
  272. package/src/web/public/images/app/supabase.png +0 -0
  273. package/src/web/public/images/app/telegram.png +0 -0
  274. package/src/web/public/images/app/things3.png +0 -0
  275. package/src/web/public/images/app/threads.png +0 -0
  276. package/src/web/public/images/app/tiktok.png +0 -0
  277. package/src/web/public/images/app/together.png +0 -0
  278. package/src/web/public/images/app/trello.png +0 -0
  279. package/src/web/public/images/app/vscode.png +0 -0
  280. package/src/web/public/images/app/webhook.png +0 -0
  281. package/src/web/public/images/app/webpage.png +0 -0
  282. package/src/web/public/images/app/whatsappbusiness.png +0 -0
  283. package/src/web/public/images/app/windsorf.png +0 -0
  284. package/src/web/public/images/app/x.png +0 -0
  285. package/src/web/public/images/app/youtube.png +0 -0
  286. package/src/web/public/images/app/zapier.png +0 -0
  287. package/src/web/public/images/app/zededitor.png +0 -0
  288. package/src/web/public/images/app/zoom.png +0 -0
  289. package/src/web/public/images/avatar-anon.svg +4 -0
  290. package/src/web/public/images/favicon.png +0 -0
  291. package/src/web/public/images/install/chatgpt-web/step0.png +0 -0
  292. package/src/web/public/images/install/chatgpt-web/step1.png +0 -0
  293. package/src/web/public/images/install/chatgpt-web/step2.png +0 -0
  294. package/src/web/public/images/install/chatgpt-web/step3.png +0 -0
  295. package/src/web/public/images/install/chatgpt-web/step4.png +0 -0
  296. package/src/web/public/images/install/chatgpt-web/step5.png +0 -0
  297. package/src/web/public/images/readme/1-generate-servers.png +0 -0
  298. package/src/web/public/images/readme/2-database-connection.png +0 -0
  299. package/src/web/public/images/readme/2-file-upload.png +0 -0
  300. package/src/web/public/images/readme/3-data-preview.png +0 -0
  301. package/src/web/public/images/readme/4-data-preview2.png +0 -0
  302. package/src/web/public/images/readme/5-server-configuration.png +0 -0
  303. package/src/web/public/images/readme/6-server-generated-modal.png +0 -0
  304. package/src/web/public/images/readme/7-generated-servers.png +0 -0
  305. package/src/web/public/images/readme/8-generated-servers-view-details.png +0 -0
  306. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.23.51.png +0 -0
  307. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.24.59.png +0 -0
  308. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.05.png +0 -0
  309. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.14.png +0 -0
  310. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.21.png +0 -0
  311. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.36.png +0 -0
  312. package/src/web/public/index.html +4685 -488
  313. package/src/web/public/landing.html +1638 -0
  314. package/src/web/public/logger.js +31 -0
  315. package/src/web/public/login.html +372 -0
  316. package/src/web/public/manage-servers.html +121 -188
  317. package/src/web/public/pricing.html +537 -0
  318. package/src/web/public/quick-ask.html +133 -0
  319. package/src/web/public/quickmcp-styles.css +708 -0
  320. package/src/web/public/roles.html +177 -0
  321. package/src/web/public/shared.js +736 -3
  322. package/src/web/public/sidebar.js +414 -0
  323. package/src/web/public/test-servers.html +605 -221
  324. package/src/web/public/users.html +191 -0
  325. package/dist/client/MCPClientUnified.d.ts +0 -31
  326. package/dist/client/MCPClientUnified.d.ts.map +0 -1
  327. package/dist/client/MCPClientUnified.js +0 -275
  328. package/dist/client/MCPClientUnified.js.map +0 -1
  329. package/dist/client/MCPTestRunnerUnified.d.ts +0 -48
  330. package/dist/client/MCPTestRunnerUnified.d.ts.map +0 -1
  331. package/dist/client/MCPTestRunnerUnified.js +0 -183
  332. package/dist/client/MCPTestRunnerUnified.js.map +0 -1
  333. package/dist/database/json-manager.d.ts +0 -55
  334. package/dist/database/json-manager.d.ts.map +0 -1
  335. package/dist/database/json-manager.js +0 -128
  336. package/dist/database/json-manager.js.map +0 -1
  337. package/dist/dynamic-mcp-executor.d.ts.map +0 -1
  338. package/dist/dynamic-mcp-executor.js +0 -274
  339. package/dist/dynamic-mcp-executor.js.map +0 -1
  340. package/dist/generators/MCPServerGenerator-new.d.ts +0 -37
  341. package/dist/generators/MCPServerGenerator-new.d.ts.map +0 -1
  342. package/dist/generators/MCPServerGenerator-new.js +0 -287
  343. package/dist/generators/MCPServerGenerator-new.js.map +0 -1
  344. package/dist/generators/database/sqlite-manager.d.ts +0 -52
  345. package/dist/generators/database/sqlite-manager.js +0 -143
  346. package/dist/generators/generators/MCPServerGenerator.d.ts +0 -37
  347. package/dist/generators/generators/MCPServerGenerator.js +0 -396
  348. package/dist/integrated-mcp-server.d.ts +0 -25
  349. package/dist/integrated-mcp-server.d.ts.map +0 -1
  350. package/dist/integrated-mcp-server.js +0 -541
  351. package/dist/integrated-mcp-server.js.map +0 -1
  352. package/dist/mcp-inspector-server.d.ts +0 -3
  353. package/dist/mcp-inspector-server.d.ts.map +0 -1
  354. package/dist/mcp-inspector-server.js +0 -119
  355. package/dist/mcp-inspector-server.js.map +0 -1
  356. package/dist/mcp-sdk-server.d.ts +0 -3
  357. package/dist/mcp-sdk-server.d.ts.map +0 -1
  358. package/dist/mcp-sdk-server.js +0 -90
  359. package/dist/mcp-sdk-server.js.map +0 -1
  360. package/dist/mcp-server.d.ts +0 -3
  361. package/dist/mcp-server.d.ts.map +0 -1
  362. package/dist/mcp-server.js +0 -300
  363. package/dist/mcp-server.js.map +0 -1
  364. package/dist/parsers/parsers/ExcelParser.js +0 -118
  365. package/dist/quickmcp-unified-bridge.d.ts +0 -13
  366. package/dist/quickmcp-unified-bridge.d.ts.map +0 -1
  367. package/dist/quickmcp-unified-bridge.js +0 -176
  368. package/dist/quickmcp-unified-bridge.js.map +0 -1
  369. package/dist/sqlite-manager.js +0 -145
  370. package/dist/test-app.d.ts +0 -2
  371. package/dist/test-app.d.ts.map +0 -1
  372. package/dist/test-app.js +0 -119
  373. package/dist/test-app.js.map +0 -1
  374. package/dist/transport/base-transport.d.ts +0 -21
  375. package/dist/transport/base-transport.d.ts.map +0 -1
  376. package/dist/transport/base-transport.js +0 -16
  377. package/dist/transport/base-transport.js.map +0 -1
  378. package/dist/transport/index.d.ts +0 -10
  379. package/dist/transport/index.d.ts.map +0 -1
  380. package/dist/transport/index.js +0 -12
  381. package/dist/transport/index.js.map +0 -1
  382. package/dist/transport/sse-transport.d.ts +0 -13
  383. package/dist/transport/sse-transport.d.ts.map +0 -1
  384. package/dist/transport/sse-transport.js +0 -106
  385. package/dist/transport/sse-transport.js.map +0 -1
  386. package/dist/transport/stdio-transport.d.ts +0 -8
  387. package/dist/transport/stdio-transport.d.ts.map +0 -1
  388. package/dist/transport/stdio-transport.js +0 -53
  389. package/dist/transport/stdio-transport.js.map +0 -1
  390. package/dist/transport/streamable-http-transport.d.ts +0 -15
  391. package/dist/transport/streamable-http-transport.d.ts.map +0 -1
  392. package/dist/transport/streamable-http-transport.js +0 -151
  393. package/dist/transport/streamable-http-transport.js.map +0 -1
  394. package/dist/web/client/MCPClient.js +0 -348
  395. package/dist/web/client/MCPTestRunner.js +0 -317
  396. package/dist/web/database/json-manager.js +0 -124
  397. package/dist/web/database/sqlite-manager.js +0 -146
  398. package/dist/web/dynamic-mcp-executor.js +0 -443
  399. package/dist/web/generators/MCPServerGenerator-new.js +0 -284
  400. package/dist/web/generators/MCPServerGenerator.js +0 -566
  401. package/dist/web/integrated-mcp-server-new.js +0 -394
  402. package/dist/web/parsers/CsvParser.js +0 -144
  403. package/dist/web/parsers/DatabaseParser.js +0 -637
  404. package/dist/web/parsers/ExcelParser.js +0 -180
  405. package/dist/web/parsers/index.js +0 -152
  406. package/dist/web/server.d.ts.map +0 -1
  407. package/dist/web/server.js +0 -790
  408. package/dist/web/server.js.map +0 -1
  409. package/dist/web/types/index.js +0 -2
  410. package/dist/web/web/server.js +0 -860
  411. package/src/web/public/modern-styles.css +0 -946
  412. package/src/web/public/shared-styles.css +0 -2091
  413. /package/src/web/public/images/{1-claude-quickmcp-stdio.png → readme/1-claude-quickmcp-stdio.png} +0 -0
  414. /package/src/web/public/images/{2-claude-tools.png → readme/2-claude-tools.png} +0 -0
  415. /package/src/web/public/images/{3-claude-developer-settings.png → readme/3-claude-developer-settings.png} +0 -0
  416. /package/src/web/public/images/{4-claude-config.png → readme/4-claude-config.png} +0 -0
  417. /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>