@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,11 +1,66 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  const path = require('path');
4
+ const fs = require('fs');
5
+ const os = require('os');
6
+ const net = require('net');
7
+ const dotenv = require('dotenv');
8
+
9
+ // Load .env from script directory first (works with Claude Desktop custom CWD),
10
+ // then fallback to process CWD.
11
+ dotenv.config({ path: path.join(__dirname, '.env') });
12
+ dotenv.config();
13
+
14
+ let logger;
15
+ try {
16
+ ({ logger } = require('./dist/utils/logger.js'));
17
+ } catch (_) {
18
+ logger = {
19
+ trace: (...args) => console.error(...args),
20
+ debug: (...args) => console.error(...args),
21
+ info: (...args) => console.error(...args),
22
+ warn: (...args) => console.error(...args),
23
+ error: (...args) => console.error(...args)
24
+ };
25
+ }
26
+
27
+ // Secure default for direct-stdio: if caller does not provide auth/deploy mode,
28
+ // enforce ONPREM semantics (AUTH_MODE=LITE) so MCP token checks are active.
29
+ if (!process.env.AUTH_MODE && !process.env.DEPLOY_MODE) {
30
+ process.env.DEPLOY_MODE = 'ONPREM';
31
+ logger.error('[QuickMCP] AUTH_MODE/DEPLOY_MODE not provided, defaulting DEPLOY_MODE=ONPREM (AUTH_MODE=LITE)');
32
+ }
4
33
 
5
34
  // Use the current working directory provided by the caller.
6
35
  // Do not change directories; keep paths relative to this script.
7
36
 
8
- const { SQLiteManager } = require('./dist/database/sqlite-manager.js');
37
+ let safeCreateDataStore;
38
+ try {
39
+ ({ safeCreateDataStore } = require('./dist/database/database-utils.js'));
40
+ } catch (_) {
41
+ throw new Error('[QuickMCP] Missing dist/database/database-utils.js. Run `npm run build` before starting quickmcp-direct-stdio.js');
42
+ }
43
+
44
+ let resolveAuthMode;
45
+ try {
46
+ ({ resolveAuthMode } = require('./dist/config/auth-config.js'));
47
+ } catch (_) {
48
+ throw new Error('[QuickMCP] Missing dist/config/auth-config.js. Run `npm run build` before starting quickmcp-direct-stdio.js');
49
+ }
50
+
51
+ let DynamicMCPExecutor;
52
+ try {
53
+ ({ DynamicMCPExecutor } = require('./dist/server/dynamic-mcp-executor.js'));
54
+ } catch (_) {
55
+ throw new Error('[QuickMCP] Missing dist/server/dynamic-mcp-executor.js. Run `npm run build` before starting quickmcp-direct-stdio.js');
56
+ }
57
+
58
+ let McpCoreService;
59
+ try {
60
+ ({ McpCoreService } = require('./dist/mcp-core/McpCoreService.js'));
61
+ } catch (_) {
62
+ throw new Error('[QuickMCP] Missing dist/mcp-core/McpCoreService.js. Run `npm run build` before starting quickmcp-direct-stdio.js');
63
+ }
9
64
 
10
65
  // Parse CLI flags for convenience
11
66
  // Supported flags:
@@ -33,38 +88,161 @@ if (dataDirArg) {
33
88
  if (val) process.env.QUICKMCP_DATA_DIR = val;
34
89
  }
35
90
 
36
- // Create SQLite manager
37
- const sqliteManager = new SQLiteManager();
91
+ const dataStore = safeCreateDataStore({ logger: (...args) => logger.error(...args) });
92
+ const executor = new DynamicMCPExecutor();
93
+
94
+ const mcpAuthMode = resolveAuthMode();
95
+ const mcpTokenSecret = process.env.QUICKMCP_TOKEN_SECRET || process.env.AUTH_COOKIE_SECRET || 'change-me';
96
+ const mcpToken = (process.env.QUICKMCP_TOKEN || '').trim();
97
+ let startupAuthError = null;
98
+ let mcpCore;
99
+ try {
100
+ mcpCore = new McpCoreService({
101
+ executor,
102
+ authStore: dataStore,
103
+ authMode: mcpAuthMode,
104
+ tokenSecret: mcpTokenSecret,
105
+ defaultToken: mcpToken
106
+ });
107
+ } catch (error) {
108
+ startupAuthError = error && error.message ? String(error.message) : 'Invalid MCP token';
109
+ mcpCore = new McpCoreService({
110
+ executor,
111
+ authStore: dataStore,
112
+ authMode: mcpAuthMode,
113
+ tokenSecret: mcpTokenSecret,
114
+ defaultToken: ''
115
+ });
116
+ }
117
+
118
+ logger.error(`[QuickMCP] MCP auth mode: ${mcpAuthMode}`);
119
+ logger.error(`[QuickMCP] MCP token present: ${mcpToken ? 'yes' : 'no'}`);
120
+ if (startupAuthError) {
121
+ logger.error('[QuickMCP] Provided MCP token is invalid/revoked/expired for current workspace.');
122
+ }
38
123
 
39
124
  // Optionally start the Web UI (Express) like `npm run dev`
40
125
  // Enable by setting QUICKMCP_ENABLE_WEB=1 (and optionally PORT, QUICKMCP_DATA_DIR)
41
126
  if (process.env.QUICKMCP_ENABLE_WEB === '1') {
42
127
  try {
43
- console.error('[QuickMCP] QUICKMCP_ENABLE_WEB=1 -> starting Web UI server...');
44
- // This require starts the Express app and integrated MCP sidecar
45
- require('./dist/web/server.js');
128
+ logger.error('[QuickMCP] QUICKMCP_ENABLE_WEB=1 -> starting Web UI server...');
129
+ // Ensure we run from a writable directory when invoked via npx (CWD may be '/')
130
+ const canWrite = (dir) => {
131
+ try { fs.accessSync(dir, fs.constants.W_OK); return true; } catch { return false; }
132
+ };
133
+ let runDir = process.cwd();
134
+ if (runDir === '/' || !canWrite(runDir)) {
135
+ const home = os.homedir() || os.tmpdir();
136
+ runDir = path.join(home, '.quickmcp');
137
+ try { fs.mkdirSync(runDir, { recursive: true }); } catch {}
138
+ // NOTE: Disabled intentionally.
139
+ // Do not change process CWD here; changing CWD causes SQLite/database path drift
140
+ // between different launch modes (dev, npx, stdio).
141
+ // try { process.chdir(runDir); } catch {}
142
+ }
143
+ // Prepare uploads directory and expose as env for newer builds
144
+ const uploadsDir = path.join(runDir, 'uploads');
145
+ try { fs.mkdirSync(uploadsDir, { recursive: true }); } catch {}
146
+ if (!process.env.QUICKMCP_UPLOAD_DIR) process.env.QUICKMCP_UPLOAD_DIR = uploadsDir;
147
+
148
+ // Determine preferred port and acquire a simple lock so only one process owns the UI for that port
149
+ const preferredPort = parseInt(process.env.PORT || '3000', 10);
150
+ const lockPath = path.join(runDir, `ui-${preferredPort}.lock`);
151
+ let hasLock = false;
152
+ try {
153
+ const fd = fs.openSync(lockPath, 'wx');
154
+ fs.closeSync(fd);
155
+ hasLock = true;
156
+ const cleanup = () => { try { fs.unlinkSync(lockPath); } catch {} };
157
+ process.once('exit', cleanup);
158
+ process.once('SIGINT', () => { cleanup(); process.exit(0); });
159
+ process.once('SIGTERM', () => { cleanup(); process.exit(0); });
160
+ } catch (e) {
161
+ if (e && e.code !== 'EEXIST') {
162
+ logger.error('[QuickMCP] UI lock error (continuing without UI):', e.message || e);
163
+ }
164
+ // Another process holds the UI lock; skip starting UI in this process
165
+ }
166
+
167
+ if (!hasLock) {
168
+ logger.error('[QuickMCP] UI lock held by another process; skipping Web UI in this process');
169
+ } else {
170
+ // Only start Web UI if preferred port is actually free.
171
+ const probe = net.createServer();
172
+ probe.once('error', (err) => {
173
+ if (err && (err.code === 'EADDRINUSE' || err.code === 'EACCES')) {
174
+ // Port is busy or not permitted; skip starting Web UI to avoid crashing Claude session
175
+ try { fs.unlinkSync(lockPath); } catch {}
176
+ return;
177
+ }
178
+ // For other errors, still try starting server; better to attempt than silently skip for unknown cases
179
+ safeStartWebServer();
180
+ });
181
+ probe.once('listening', () => {
182
+ probe.close(() => {
183
+ safeStartWebServer();
184
+ });
185
+ });
186
+ try {
187
+ // Probe on IPv6 unspecified to mirror Express default, falling back to IPv4 if needed
188
+ probe.listen(preferredPort, '::');
189
+ } catch (_e) {
190
+ // If probing throws synchronously (rare), just skip UI
191
+ }
192
+ }
46
193
  } catch (e) {
47
- console.error('[QuickMCP] Failed to start Web UI:', e && e.message);
194
+ logger.error('[QuickMCP] Failed to start Web UI:', e && e.message);
48
195
  }
49
196
  }
50
197
 
198
+ // Start the web server but swallow a race-condition EADDRINUSE from Express listen
199
+ function safeStartWebServer() {
200
+ let handled = false;
201
+ const handler = (err) => {
202
+ if (!handled && err && err.code === 'EADDRINUSE' && err.syscall === 'listen') {
203
+ handled = true;
204
+ // Swallow this once so the STDIO server keeps running; another instance already owns :3000
205
+ process.removeListener('uncaughtException', handler);
206
+ return;
207
+ }
208
+ // Not our case; restore default behavior
209
+ process.removeListener('uncaughtException', handler);
210
+ throw err;
211
+ };
212
+ // Install one-time handler to catch immediate async throw from Express
213
+ process.prependOnceListener('uncaughtException', handler);
214
+ try {
215
+ require('./dist/server/server.js');
216
+ } catch (e) {
217
+ // Synchronous load error
218
+ process.removeListener('uncaughtException', handler);
219
+ logger.error('[QuickMCP] Failed to start Web UI:', e && e.message);
220
+ }
221
+ // Remove handler on next tick if nothing happened, to avoid swallowing unrelated errors later
222
+ setImmediate(() => {
223
+ if (!handled) {
224
+ process.removeListener('uncaughtException', handler);
225
+ }
226
+ });
227
+ }
228
+
51
229
  // Diagnostics: print environment and mssql details to help debug Claude Desktop
52
230
  try {
53
- const resolvedDynExec = require.resolve('./dist/dynamic-mcp-executor.js');
231
+ const resolvedDynExec = require.resolve('./dist/server/dynamic-mcp-executor.js');
54
232
  const mssql = require('mssql');
55
233
  const mssqlVersion = require('mssql/package.json').version;
56
- console.error('[QuickMCP] Node:', process.version);
57
- console.error('[QuickMCP] CWD:', process.cwd());
58
- console.error('[QuickMCP] Dynamic executor path:', resolvedDynExec);
59
- console.error('[QuickMCP] mssql version:', mssqlVersion);
60
- console.error('[QuickMCP] mssql exports:', {
234
+ logger.error('[QuickMCP] Node:', process.version);
235
+ logger.error('[QuickMCP] CWD:', process.cwd());
236
+ logger.error('[QuickMCP] Dynamic executor path:', resolvedDynExec);
237
+ logger.error('[QuickMCP] mssql version:', mssqlVersion);
238
+ logger.error('[QuickMCP] mssql exports:', {
61
239
  hasDefault: !!mssql.default,
62
240
  hasConnect: typeof mssql.connect,
63
241
  typeofConnectionPool: typeof (mssql.ConnectionPool),
64
242
  keys: Object.keys(mssql).slice(0, 10)
65
243
  });
66
244
  } catch (e) {
67
- console.error('[QuickMCP] Diagnostic init error:', e && e.message);
245
+ logger.error('[QuickMCP] Diagnostic init error:', e && e.message);
68
246
  }
69
247
 
70
248
  // Direct STDIO MCP implementation with LSP-style framing support
@@ -83,150 +261,51 @@ function sendMessage(message) {
83
261
  process.stdout.write(json + '\n');
84
262
  }
85
263
  } catch (e) {
86
- console.error('[QuickMCP] Failed to send message:', e && e.message);
264
+ logger.error('[QuickMCP] Failed to send message:', e && e.message);
87
265
  }
88
266
  }
89
267
 
90
268
  async function handleMessage(message) {
91
- console.error(`[QuickMCP] Received: ${message.method} (id: ${message.id})`);
92
-
93
- let response;
94
-
95
- switch (message.method) {
96
- case 'initialize':
97
- response = {
98
- jsonrpc: '2.0',
99
- id: message.id,
100
- result: {
101
- protocolVersion: '2024-11-05',
102
- serverInfo: { name: 'quickmcp-direct', version: '1.0.0' },
103
- capabilities: {
104
- tools: { listChanged: true },
105
- resources: { listChanged: true },
106
- prompts: { listChanged: true }
107
- }
108
- }
109
- };
110
- break;
111
-
112
- case 'tools/list':
113
- try {
114
- const tools = sqliteManager.getAllTools();
115
- console.error(`[QuickMCP] Got ${tools.length} tools from SQLite`);
116
- const formattedTools = tools.map(tool => ({
117
- name: `${tool.server_id}__${tool.name}`,
118
- description: `[${tool.server_id}] ${tool.description}`,
119
- inputSchema: typeof tool.inputSchema === 'string' ? JSON.parse(tool.inputSchema) : tool.inputSchema
120
- }));
121
- console.error(`[QuickMCP] Formatted ${formattedTools.length} tools`);
122
-
123
- response = {
124
- jsonrpc: '2.0',
125
- id: message.id,
126
- result: { tools: formattedTools }
127
- };
128
- } catch (error) {
129
- console.error('[QuickMCP] Error getting tools:', error);
130
- response = {
131
- jsonrpc: '2.0',
132
- id: message.id,
133
- result: { tools: [] }
134
- };
135
- }
136
- break;
137
-
138
- case 'resources/list':
139
- try {
140
- const resources = sqliteManager.getAllResources();
141
- const formattedResources = resources.map(resource => ({
142
- name: `${resource.server_id}__${resource.name}`,
143
- description: `[${resource.server_id}] ${resource.description}`,
144
- uri: resource.uri_template
145
- }));
146
-
147
- response = {
148
- jsonrpc: '2.0',
149
- id: message.id,
150
- result: { resources: formattedResources }
151
- };
152
- } catch (error) {
153
- console.error('[QuickMCP] Error getting resources:', error);
154
- response = {
155
- jsonrpc: '2.0',
156
- id: message.id,
157
- result: { resources: [] }
158
- };
159
- }
160
- break;
161
-
162
- case 'prompts/list':
163
- // Return empty prompts list for now
164
- response = {
165
- jsonrpc: '2.0',
166
- id: message.id,
167
- result: { prompts: [] }
168
- };
169
- break;
170
-
171
- case 'tools/call':
172
- try {
173
- console.error(`[QuickMCP] Executing tool: ${message.params.name}`);
174
- console.error(`[QuickMCP] Arguments:`, JSON.stringify(message.params.arguments));
175
-
176
- const { DynamicMCPExecutor } = require('./dist/dynamic-mcp-executor.js');
177
- const executor = new DynamicMCPExecutor();
178
-
179
- const timeoutPromise = new Promise((_, reject) => {
180
- setTimeout(() => reject(new Error('Tool execution timeout')), 10000);
181
- });
182
-
183
- const toolResult = await Promise.race([
184
- executor.executeTool(message.params.name, message.params.arguments || {}),
185
- timeoutPromise
186
- ]);
187
-
188
- console.error(`[QuickMCP] Tool result:`, JSON.stringify(toolResult, null, 2));
189
-
190
- response = {
191
- jsonrpc: '2.0',
192
- id: message.id,
193
- result: {
194
- content: [{
195
- type: 'text',
196
- text: JSON.stringify(toolResult, null, 2)
197
- }]
198
- }
199
- };
200
- } catch (error) {
201
- console.error(`[QuickMCP] Tool execution error:`, error);
202
- response = {
203
- jsonrpc: '2.0',
204
- id: message.id,
205
- error: {
206
- code: -32603,
207
- message: `Tool execution failed: ${error.message}`
208
- }
209
- };
210
- }
211
- break;
212
-
213
- case 'notifications/initialized':
214
- console.error('[QuickMCP] Client initialized');
215
- break;
216
-
217
- default:
218
- if (message.id) {
219
- response = {
220
- jsonrpc: '2.0',
221
- id: message.id,
222
- error: { code: -32601, message: `Method not found: ${message.method}` }
223
- };
269
+ logger.error(`[QuickMCP] Received: ${message.method} (id: ${message.id})`);
270
+
271
+ if (startupAuthError && message.method !== 'initialize' && message.method !== 'notifications/initialized') {
272
+ const authErrorResponse = {
273
+ jsonrpc: '2.0',
274
+ id: message.id,
275
+ error: {
276
+ code: -32001,
277
+ message: startupAuthError
224
278
  }
279
+ };
280
+ logger.error('[QuickMCP] Sending: auth-error');
281
+ sendMessage(authErrorResponse);
282
+ return;
225
283
  }
226
284
 
227
- if (response) {
228
- console.error(`[QuickMCP] Sending: ${response.result ? 'success' : 'error'}`);
229
- sendMessage(response);
285
+ try {
286
+ let authContext;
287
+ try {
288
+ authContext = await mcpCore.resolveAuthContextFromSources({});
289
+ } catch (authError) {
290
+ logger.error('[QuickMCP] Failed to resolve auth context:', authError && authError.message ? authError.message : String(authError));
291
+ authContext = { identity: null, tokenRecord: null };
292
+ }
293
+ const response = await mcpCore.processJsonRpcMessage(message, authContext);
294
+ if (response) {
295
+ logger.error(`[QuickMCP] Sending: ${response.result ? 'success' : 'error'}`);
296
+ sendMessage(response);
297
+ }
298
+ } catch (error) {
299
+ const errorResponse = {
300
+ jsonrpc: '2.0',
301
+ id: message.id,
302
+ error: {
303
+ code: -32603,
304
+ message: `Internal error: ${error && error.message ? error.message : 'Unknown error'}`
305
+ }
306
+ };
307
+ logger.error('[QuickMCP] Sending: error');
308
+ sendMessage(errorResponse);
230
309
  }
231
310
  }
232
311
 
@@ -260,7 +339,7 @@ process.stdin.on('data', async (data) => {
260
339
  const match = /Content-Length:\s*(\d+)/i.exec(header);
261
340
  if (!match) {
262
341
  // Invalid header; drop up to headerEnd+4
263
- console.error('[QuickMCP] Invalid header, dropping bytes');
342
+ logger.error('[QuickMCP] Invalid header, dropping bytes');
264
343
  stdinBuffer = Buffer.from(str.slice(headerEnd + 4), 'utf8');
265
344
  continue;
266
345
  }
@@ -274,12 +353,12 @@ process.stdin.on('data', async (data) => {
274
353
  try {
275
354
  if (useLspFraming === null) {
276
355
  useLspFraming = true;
277
- console.error('[QuickMCP] Detected LSP framing (Content-Length)');
356
+ logger.error('[QuickMCP] Detected LSP framing (Content-Length)');
278
357
  }
279
358
  const message = JSON.parse(body);
280
359
  await handleMessage(message);
281
360
  } catch (e) {
282
- console.error('[QuickMCP] Error parsing framed JSON:', e && e.message);
361
+ logger.error('[QuickMCP] Error parsing framed JSON:', e && e.message);
283
362
  }
284
363
  stdinBuffer = stdinBuffer.slice(totalLength);
285
364
  continue;
@@ -293,13 +372,13 @@ process.stdin.on('data', async (data) => {
293
372
  }
294
373
  if (useLspFraming === null) {
295
374
  useLspFraming = false;
296
- console.error('[QuickMCP] Detected newline-delimited JSON framing');
375
+ logger.error('[QuickMCP] Detected newline-delimited JSON framing');
297
376
  }
298
377
  for (const msg of messages) {
299
378
  try {
300
379
  await handleMessage(msg);
301
380
  } catch (e) {
302
- console.error('[QuickMCP] Error handling message:', e && e.message);
381
+ logger.error('[QuickMCP] Error handling message:', e && e.message);
303
382
  }
304
383
  }
305
384
  stdinBuffer = Buffer.from(str.slice(consumed), 'utf8');
@@ -307,22 +386,25 @@ process.stdin.on('data', async (data) => {
307
386
  });
308
387
 
309
388
  process.stdin.on('end', () => {
310
- console.error('[QuickMCP] STDIN ended');
311
- sqliteManager.close();
389
+ logger.error('[QuickMCP] STDIN ended');
390
+ try { executor.close && executor.close(); } catch (_) {}
391
+ try { dataStore.close && dataStore.close(); } catch (_) {}
312
392
  process.exit(0);
313
393
  });
314
394
 
315
395
  process.on('SIGINT', () => {
316
- console.error('[QuickMCP] Interrupted');
317
- sqliteManager.close();
396
+ logger.error('[QuickMCP] Interrupted');
397
+ try { executor.close && executor.close(); } catch (_) {}
398
+ try { dataStore.close && dataStore.close(); } catch (_) {}
318
399
  process.exit(0);
319
400
  });
320
401
 
321
402
  process.on('SIGTERM', () => {
322
- console.error('[QuickMCP] Terminated');
323
- sqliteManager.close();
403
+ logger.error('[QuickMCP] Terminated');
404
+ try { executor.close && executor.close(); } catch (_) {}
405
+ try { dataStore.close && dataStore.close(); } catch (_) {}
324
406
  process.exit(0);
325
407
  });
326
408
 
327
409
  process.stdin.resume();
328
- console.error('QuickMCP Direct STDIO Server started...');
410
+ logger.error('QuickMCP Direct STDIO Server started...');