@softtechai/quickmcp 1.0.16 → 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 +176 -187
  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
@@ -0,0 +1,63 @@
1
+ import crypto from 'crypto';
2
+ import { McpIdentity, McpTokenAuthRecord } from '../auth/auth-utils';
3
+ import { AuthMode } from '../config/auth-config';
4
+ import { IDataStore } from '../database/datastore';
5
+ import { DynamicMCPExecutor } from '../server/dynamic-mcp-executor';
6
+ export type JsonRpcMessage = {
7
+ jsonrpc?: string;
8
+ id?: string | number | null;
9
+ method?: string;
10
+ params?: any;
11
+ };
12
+ export type McpAuthContext = {
13
+ identity: McpIdentity | null;
14
+ tokenRecord: McpTokenAuthRecord | null;
15
+ };
16
+ export type AuthTokenSources = {
17
+ authorization?: string;
18
+ xMcpToken?: string;
19
+ queryToken?: string;
20
+ bodyToken?: string;
21
+ };
22
+ type McpCoreServiceDeps = {
23
+ executor: DynamicMCPExecutor;
24
+ authStore: IDataStore;
25
+ authMode: AuthMode;
26
+ deployMode?: string;
27
+ tokenMode?: string;
28
+ tokenSecret: string;
29
+ defaultToken?: string;
30
+ rsaPublicKey?: crypto.KeyObject;
31
+ };
32
+ export declare class McpCoreService {
33
+ private readonly executor;
34
+ private readonly authStore;
35
+ private readonly authMode;
36
+ private readonly deploymentUtil;
37
+ private readonly tokenSecret;
38
+ private readonly defaultToken;
39
+ private readonly rsaPublicKey;
40
+ private readonly liteAdminUsernames;
41
+ constructor(deps: McpCoreServiceDeps);
42
+ parseIncomingMessage(body: any): JsonRpcMessage;
43
+ resolveAuthContextFromSources(sources: AuthTokenSources): Promise<McpAuthContext>;
44
+ private describeIdentity;
45
+ processJsonRpcMessage(messageData: JsonRpcMessage, authContext: McpAuthContext): Promise<any | null>;
46
+ private resolveAuthContextFromToken;
47
+ private mapToAuthRecord;
48
+ private parseQualifiedName;
49
+ private getAuthorizedTools;
50
+ private withToolSecuritySchemes;
51
+ private withAuthRetryProbeTool;
52
+ private getAuthorizedResources;
53
+ private ensureToolAllowed;
54
+ private ensureResourceAllowed;
55
+ private getServerRequireMcpToken;
56
+ private isServerOwnedByIdentity;
57
+ private isServerAuthorizedAsync;
58
+ private isToolAuthorizedAsync;
59
+ private getToolRequireMcpToken;
60
+ private isResourceAuthorizedAsync;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=McpCoreService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpCoreService.d.ts","sourceRoot":"","sources":["../../src/mcp-core/McpCoreService.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAGL,WAAW,EACX,kBAAkB,EAEnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIpE,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;CACjC,CAAC;AAIF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;IAC5D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAc;gBAErC,IAAI,EAAE,kBAAkB;IAWpC,oBAAoB,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc;IAOzC,6BAA6B,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;IA2BvF,OAAO,CAAC,gBAAgB;IAMlB,qBAAqB,CAAC,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;YAuH5F,2BAA2B;IAkDzC,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,kBAAkB;YAWZ,kBAAkB;YAsBlB,uBAAuB;IA2BrC,OAAO,CAAC,sBAAsB;YAuBhB,sBAAsB;YAoBtB,iBAAiB;YASjB,qBAAqB;YASrB,wBAAwB;IA4BtC,OAAO,CAAC,uBAAuB;YAWjB,uBAAuB;YAqBvB,qBAAqB;YA6BrB,sBAAsB;YAUtB,yBAAyB;CAmBxC"}
@@ -0,0 +1,492 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.McpCoreService = void 0;
4
+ const auth_utils_1 = require("../auth/auth-utils");
5
+ const token_utils_1 = require("../auth/token-utils");
6
+ const constant_1 = require("../constant/constant");
7
+ const deployment_util_1 = require("../utils/deployment-util");
8
+ const logger_1 = require("../utils/logger");
9
+ const AUTH_RETRY_PROBE_TOOL_NAME = 'quickmcp__auth_retry_probe';
10
+ class McpCoreService {
11
+ constructor(deps) {
12
+ this.executor = deps.executor;
13
+ this.authStore = deps.authStore;
14
+ this.authMode = deps.authMode;
15
+ this.deploymentUtil = deployment_util_1.DeploymentUtil.fromRuntime(deps.deployMode, deps.tokenMode);
16
+ this.tokenSecret = deps.tokenSecret;
17
+ this.defaultToken = (deps.defaultToken || '').trim();
18
+ this.rsaPublicKey = deps.rsaPublicKey;
19
+ this.liteAdminUsernames = (0, auth_utils_1.resolveLiteAdminUsernames)();
20
+ }
21
+ parseIncomingMessage(body) {
22
+ if (Buffer.isBuffer(body))
23
+ return JSON.parse(body.toString());
24
+ if (typeof body === 'string')
25
+ return JSON.parse(body);
26
+ if (body && typeof body === 'object')
27
+ return body;
28
+ throw new Error('Invalid JSON-RPC payload');
29
+ }
30
+ async resolveAuthContextFromSources(sources) {
31
+ if (this.deploymentUtil.authModeIsNone(this.authMode)) {
32
+ return { identity: null, tokenRecord: null };
33
+ }
34
+ const authHeader = String(sources.authorization || '').trim();
35
+ const bearerMatch = authHeader.match(/^Bearer\s+(.+)$/i);
36
+ const bearer = bearerMatch ? String(bearerMatch[1] || '').trim() : '';
37
+ const xMcpToken = String(sources.xMcpToken || '').trim();
38
+ const queryToken = String(sources.queryToken || '').trim();
39
+ const bodyToken = String(sources.bodyToken || '').trim();
40
+ const token = bearer || xMcpToken || queryToken || bodyToken;
41
+ if (!token) {
42
+ logger_1.logger.info(`[MCP] auth carriers authHeader=${authHeader ? '1' : '0'} bearer=${bearer ? '1' : '0'} x-mcp-token=${xMcpToken ? '1' : '0'} query=${queryToken ? '1' : '0'} body=${bodyToken ? '1' : '0'}`);
43
+ if (this.defaultToken) {
44
+ logger_1.logger.info(`[MCP] auth: no token in request, using default token`);
45
+ return this.resolveAuthContextFromToken(this.defaultToken);
46
+ }
47
+ logger_1.logger.info('[MCP] auth: no token in request, no default token → unauthenticated');
48
+ return { identity: null, tokenRecord: null };
49
+ }
50
+ return this.resolveAuthContextFromToken(token);
51
+ }
52
+ describeIdentity(authContext) {
53
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
54
+ return 'anonymous (auth=NONE)';
55
+ if (authContext.identity)
56
+ return `user=${authContext.identity.username} workspace=${authContext.identity.workspace} role=${authContext.identity.role}`;
57
+ return 'unauthenticated (no valid token)';
58
+ }
59
+ async processJsonRpcMessage(messageData, authContext) {
60
+ const method = String(messageData.method || '');
61
+ const who = this.describeIdentity(authContext);
62
+ logger_1.logger.info(`[MCP] request method=${method} ${who}`);
63
+ switch (messageData.method) {
64
+ case 'initialize': {
65
+ const protocolVersion = String(messageData.params?.protocolVersion || '2025-11-25');
66
+ return {
67
+ jsonrpc: '2.0',
68
+ id: messageData.id,
69
+ result: {
70
+ protocolVersion,
71
+ serverInfo: {
72
+ name: 'quickmcp-integrated',
73
+ version: '1.0.0'
74
+ },
75
+ capabilities: {
76
+ tools: {},
77
+ resources: {},
78
+ prompts: {}
79
+ }
80
+ }
81
+ };
82
+ }
83
+ case 'tools/list': {
84
+ const allTools = await this.executor.getAllTools();
85
+ const tools = await this.getAuthorizedTools(allTools, authContext);
86
+ const toolsWithSecuritySchemes = await this.withToolSecuritySchemes(tools);
87
+ const toolsWithProbe = this.withAuthRetryProbeTool(toolsWithSecuritySchemes);
88
+ if (tools.length === 0 && allTools.length > 0) {
89
+ logger_1.logger.info(`[MCP] tools/list ${who} → 0/${allTools.length} tools (authorization filtered all tools)`);
90
+ }
91
+ else {
92
+ const toolNames = tools.map((t) => String(t.name || '')).join(', ') || '(none)';
93
+ logger_1.logger.info(`[MCP] tools/list ${who} → ${tools.length}/${allTools.length} tools: [${toolNames}]`);
94
+ }
95
+ return { jsonrpc: '2.0', id: messageData.id, result: { tools: toolsWithProbe } };
96
+ }
97
+ case 'resources/list': {
98
+ const allResources = await this.executor.getAllResources();
99
+ const resources = await this.getAuthorizedResources(allResources, authContext);
100
+ logger_1.logger.info(`[MCP] resources/list ${who} → ${resources.length}/${allResources.length} resources`);
101
+ return { jsonrpc: '2.0', id: messageData.id, result: { resources } };
102
+ }
103
+ case 'prompts/list':
104
+ return { jsonrpc: '2.0', id: messageData.id, result: { prompts: [] } };
105
+ case 'tools/call': {
106
+ const toolName = String(messageData.params?.name || '');
107
+ logger_1.logger.info(`[MCP] tools/call tool=${toolName} ${who}`);
108
+ if (this.deploymentUtil.isSaasMode() && toolName === AUTH_RETRY_PROBE_TOOL_NAME) {
109
+ if (!authContext.identity) {
110
+ logger_1.logger.info(`[MCP] auth-retry-probe invoked without token; forcing insufficient_scope challenge`);
111
+ throw new Error('insufficient_scope: auth retry probe');
112
+ }
113
+ logger_1.logger.info(`[MCP] auth-retry-probe success authHeaderPresent=1 user=${authContext.identity.username} workspace=${authContext.identity.workspace}`);
114
+ return {
115
+ jsonrpc: '2.0',
116
+ id: messageData.id,
117
+ result: {
118
+ content: [
119
+ {
120
+ type: 'text',
121
+ text: JSON.stringify({
122
+ ok: true,
123
+ message: 'Auth retry probe passed. Client retried with token.',
124
+ username: authContext.identity.username,
125
+ workspace: authContext.identity.workspace
126
+ }, null, 2)
127
+ }
128
+ ]
129
+ }
130
+ };
131
+ }
132
+ await this.ensureToolAllowed(toolName, authContext);
133
+ const toolResult = await this.executor.executeTool(toolName, messageData.params?.arguments || {});
134
+ return {
135
+ jsonrpc: '2.0',
136
+ id: messageData.id,
137
+ result: {
138
+ content: [
139
+ {
140
+ type: 'text',
141
+ text: JSON.stringify(toolResult, null, 2)
142
+ }
143
+ ]
144
+ }
145
+ };
146
+ }
147
+ case 'resources/read': {
148
+ const uri = String(messageData.params?.uri || '');
149
+ const resourceName = uri.split('://')[0];
150
+ await this.ensureResourceAllowed(resourceName, authContext);
151
+ const resourceResult = await this.executor.readResource(resourceName);
152
+ return { jsonrpc: '2.0', id: messageData.id, result: resourceResult };
153
+ }
154
+ case 'notifications/initialized':
155
+ return null;
156
+ default:
157
+ if (!messageData.id)
158
+ return null;
159
+ return {
160
+ jsonrpc: '2.0',
161
+ id: messageData.id,
162
+ error: {
163
+ code: -32601,
164
+ message: `Method not found: ${String(messageData.method || '')}`
165
+ }
166
+ };
167
+ }
168
+ }
169
+ async resolveAuthContextFromToken(rawToken) {
170
+ if (this.deploymentUtil.authModeIsNone(this.authMode)) {
171
+ return { identity: null, tokenRecord: null };
172
+ }
173
+ const token = String(rawToken || '').trim();
174
+ if (!token) {
175
+ return { identity: null, tokenRecord: null };
176
+ }
177
+ if (this.deploymentUtil.tokenModeIsLocal()) {
178
+ const tokenHash = (0, token_utils_1.hashMcpToken)(token);
179
+ const row = await this.authStore.getMcpTokenByHash(tokenHash);
180
+ const tokenRecord = this.mapToAuthRecord(row);
181
+ if (!tokenRecord) {
182
+ throw new Error('Invalid MCP token');
183
+ }
184
+ const identity = {
185
+ tokenId: tokenRecord.id,
186
+ username: tokenRecord.subjectUsername,
187
+ workspace: tokenRecord.workspaceId,
188
+ role: this.liteAdminUsernames.has(String(tokenRecord.subjectUsername || '').trim().toLowerCase())
189
+ ? constant_1.Constant.Roles.ADMIN
190
+ : constant_1.Constant.Roles.USER
191
+ };
192
+ return { identity, tokenRecord };
193
+ }
194
+ else {
195
+ const verified = (this.rsaPublicKey ? (0, token_utils_1.verifyMcpTokenRS256)(token, this.rsaPublicKey) : null)
196
+ ?? (0, token_utils_1.verifyMcpToken)(token, this.tokenSecret);
197
+ if (!verified) {
198
+ throw new Error('Invalid MCP token');
199
+ }
200
+ const identity = {
201
+ tokenId: verified.jti ? String(verified.jti) : '',
202
+ username: String(verified.sub),
203
+ workspace: String(verified.ws || verified.workspace || verified.sub),
204
+ role: String(verified.role || constant_1.Constant.Roles.USER)
205
+ };
206
+ const tokenHash = (0, token_utils_1.hashMcpToken)(token);
207
+ const row = await this.authStore.getMcpTokenByHash(tokenHash);
208
+ const tokenRecord = this.mapToAuthRecord(row);
209
+ return { identity, tokenRecord };
210
+ }
211
+ }
212
+ mapToAuthRecord(row) {
213
+ if (!row)
214
+ return null;
215
+ return {
216
+ id: row.id,
217
+ tokenName: row.tokenName,
218
+ workspaceId: row.workspaceId,
219
+ subjectUsername: row.subjectUsername,
220
+ allowAllServers: row.allowAllServers,
221
+ allowAllTools: row.allowAllTools,
222
+ allowAllResources: row.allowAllResources,
223
+ serverIds: row.serverIds,
224
+ allowedTools: row.allowedTools,
225
+ allowedResources: row.allowedResources,
226
+ serverRules: row.serverRules || {},
227
+ toolRules: row.toolRules || {},
228
+ resourceRules: row.resourceRules || {},
229
+ neverExpires: row.neverExpires,
230
+ expiresAt: row.expiresAt,
231
+ revokedAt: row.revokedAt
232
+ };
233
+ }
234
+ parseQualifiedName(name) {
235
+ // Tool/resource names are "<serverId>__<itemName>" and serverId itself can contain "__".
236
+ // Split by the last separator so owner-scoped server ids keep their full value.
237
+ const sepIndex = name.lastIndexOf('__');
238
+ if (sepIndex <= 0 || sepIndex >= name.length - 2) {
239
+ logger_1.logger.error(`[MCP] invalid qualified name: ${name}`);
240
+ throw new Error(`Invalid qualified name format: ${name}`);
241
+ }
242
+ return [name.slice(0, sepIndex), name.slice(sepIndex + 2)];
243
+ }
244
+ async getAuthorizedTools(tools, authContext) {
245
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
246
+ return tools;
247
+ if (!authContext.identity) {
248
+ // In multi-tenant SaaS mode, unauthenticated discovery must never expose
249
+ // other tenants' tools. ChatGPT should attach bearer before scoped listing.
250
+ if (this.deploymentUtil.isSaasMode())
251
+ return [];
252
+ return tools;
253
+ }
254
+ const out = [];
255
+ for (const tool of tools) {
256
+ try {
257
+ const [serverId, toolName] = this.parseQualifiedName(String(tool.name || ''));
258
+ if (await this.isToolAuthorizedAsync(authContext, serverId, toolName)) {
259
+ out.push(tool);
260
+ }
261
+ }
262
+ catch {
263
+ // ignore invalid names
264
+ }
265
+ }
266
+ return out;
267
+ }
268
+ async withToolSecuritySchemes(tools) {
269
+ const out = [];
270
+ for (const tool of tools) {
271
+ const cloned = { ...tool };
272
+ try {
273
+ const [serverId, toolName] = this.parseQualifiedName(String(tool.name || ''));
274
+ const requireToken = await this.getToolRequireMcpToken(serverId, toolName);
275
+ const defaultSchemes = requireToken
276
+ ? [{ type: 'oauth2', scopes: ['mcp'] }]
277
+ : [{ type: 'noauth' }];
278
+ const schemes = Array.isArray(tool.securitySchemes) && tool.securitySchemes.length > 0
279
+ ? tool.securitySchemes
280
+ : defaultSchemes;
281
+ cloned.securitySchemes = schemes;
282
+ cloned._meta = { ...(tool._meta || {}), securitySchemes: schemes };
283
+ }
284
+ catch {
285
+ const schemes = Array.isArray(tool.securitySchemes) && tool.securitySchemes.length > 0
286
+ ? tool.securitySchemes
287
+ : [{ type: 'oauth2', scopes: ['mcp'] }];
288
+ cloned.securitySchemes = schemes;
289
+ cloned._meta = { ...(tool._meta || {}), securitySchemes: schemes };
290
+ }
291
+ out.push(cloned);
292
+ }
293
+ return out;
294
+ }
295
+ withAuthRetryProbeTool(tools) {
296
+ if (!this.deploymentUtil.isSaasMode())
297
+ return tools;
298
+ if (tools.some((tool) => String(tool?.name || '') === AUTH_RETRY_PROBE_TOOL_NAME))
299
+ return tools;
300
+ const schemes = [{ type: 'oauth2', scopes: ['mcp'] }];
301
+ const probeTool = {
302
+ name: AUTH_RETRY_PROBE_TOOL_NAME,
303
+ description: 'Auth retry probe tool. Always returns 401 with WWW-Authenticate to test bearer retry behavior.',
304
+ inputSchema: {
305
+ type: 'object',
306
+ properties: {
307
+ note: {
308
+ type: 'string',
309
+ description: 'Optional note for tracing.'
310
+ }
311
+ },
312
+ additionalProperties: true
313
+ },
314
+ securitySchemes: schemes,
315
+ _meta: { securitySchemes: schemes }
316
+ };
317
+ return [...tools, probeTool];
318
+ }
319
+ async getAuthorizedResources(resources, authContext) {
320
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
321
+ return resources;
322
+ if (!authContext.identity) {
323
+ if (this.deploymentUtil.isSaasMode())
324
+ return [];
325
+ return resources;
326
+ }
327
+ const out = [];
328
+ for (const resource of resources) {
329
+ try {
330
+ const [serverId, resourceName] = this.parseQualifiedName(String(resource.name || ''));
331
+ if (await this.isResourceAuthorizedAsync(authContext, serverId, resourceName)) {
332
+ out.push(resource);
333
+ }
334
+ }
335
+ catch {
336
+ // ignore invalid names
337
+ }
338
+ }
339
+ return out;
340
+ }
341
+ async ensureToolAllowed(qualifiedToolName, authContext) {
342
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
343
+ return;
344
+ const [serverId, toolName] = this.parseQualifiedName(qualifiedToolName);
345
+ const allowed = await this.isToolAuthorizedAsync(authContext, serverId, toolName);
346
+ if (!allowed) {
347
+ throw new Error('Unauthorized: tool is not allowed by token policy');
348
+ }
349
+ }
350
+ async ensureResourceAllowed(qualifiedResourceName, authContext) {
351
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
352
+ return;
353
+ const [serverId, resourceName] = this.parseQualifiedName(qualifiedResourceName);
354
+ const allowed = await this.isResourceAuthorizedAsync(authContext, serverId, resourceName);
355
+ if (!allowed) {
356
+ throw new Error('Unauthorized: resource is not allowed by token policy');
357
+ }
358
+ }
359
+ async getServerRequireMcpToken(serverId) {
360
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
361
+ return false;
362
+ // In SAAS mode, MCP calls must always be token-bound to avoid tenant leakage.
363
+ if (this.deploymentUtil.isSaasMode())
364
+ return true;
365
+ let requireToken = true;
366
+ const owner = (0, auth_utils_1.parseServerOwner)(serverId);
367
+ try {
368
+ if (typeof this.authStore.getMcpTokenPolicy === 'function') {
369
+ const globalCfg = await this.authStore.getMcpTokenPolicy('global', '*');
370
+ if (globalCfg)
371
+ requireToken = globalCfg.requireMcpToken !== false;
372
+ if (owner) {
373
+ const userCfg = await this.authStore.getMcpTokenPolicy('user', owner);
374
+ if (userCfg)
375
+ requireToken = userCfg.requireMcpToken !== false;
376
+ }
377
+ const serverCfg = await this.authStore.getMcpTokenPolicy('server', serverId);
378
+ if (serverCfg)
379
+ return serverCfg.requireMcpToken !== false;
380
+ }
381
+ if (typeof this.authStore.getServerAuthConfig === 'function') {
382
+ const legacyCfg = await this.authStore.getServerAuthConfig(serverId);
383
+ if (legacyCfg)
384
+ return legacyCfg.requireMcpToken !== false;
385
+ }
386
+ }
387
+ catch { }
388
+ return requireToken;
389
+ }
390
+ isServerOwnedByIdentity(authContext, serverId) {
391
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
392
+ return true;
393
+ if (!authContext.identity || !authContext.tokenRecord)
394
+ return false;
395
+ const owner = (0, auth_utils_1.parseServerOwner)(serverId);
396
+ // SAAS tenant isolation must be workspace-based, not username-based.
397
+ if (this.deploymentUtil.isSaasMode()) {
398
+ return owner === authContext.identity.workspace;
399
+ }
400
+ return owner === authContext.identity.workspace || owner === authContext.identity.username;
401
+ }
402
+ async isServerAuthorizedAsync(authContext, serverId) {
403
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
404
+ return true;
405
+ const requireToken = await this.getServerRequireMcpToken(serverId);
406
+ if (!requireToken)
407
+ return true;
408
+ if (!(0, auth_utils_1.isMcpAuthorizedGlobally)(this.authMode, authContext.identity, authContext.tokenRecord))
409
+ return false;
410
+ if (!this.isServerOwnedByIdentity(authContext, serverId))
411
+ return false;
412
+ const tokenRecord = authContext.tokenRecord;
413
+ if (tokenRecord?.serverRules && Object.prototype.hasOwnProperty.call(tokenRecord.serverRules, serverId)) {
414
+ const decision = tokenRecord.serverRules[serverId];
415
+ if (decision === false)
416
+ return false;
417
+ if (decision === true)
418
+ return true;
419
+ }
420
+ if (tokenRecord && !tokenRecord.allowAllServers) {
421
+ return tokenRecord.serverIds.includes(serverId);
422
+ }
423
+ return true;
424
+ }
425
+ async isToolAuthorizedAsync(authContext, serverId, toolName) {
426
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
427
+ return true;
428
+ let requireToken = await this.getServerRequireMcpToken(serverId);
429
+ try {
430
+ const toolCfg = await this.authStore.getMcpTokenPolicy('tool', `${serverId}__${toolName}`);
431
+ if (toolCfg)
432
+ requireToken = toolCfg.requireMcpToken !== false;
433
+ }
434
+ catch { }
435
+ if (!requireToken)
436
+ return true;
437
+ if (!(0, auth_utils_1.isMcpAuthorizedGlobally)(this.authMode, authContext.identity, authContext.tokenRecord))
438
+ return false;
439
+ if (!this.isServerOwnedByIdentity(authContext, serverId))
440
+ return false;
441
+ const tokenRecord = authContext.tokenRecord;
442
+ const full = `${serverId}__${toolName}`;
443
+ if (!tokenRecord)
444
+ return false;
445
+ if (tokenRecord.toolRules && Object.prototype.hasOwnProperty.call(tokenRecord.toolRules, full)) {
446
+ const decision = tokenRecord.toolRules[full];
447
+ if (decision === false)
448
+ return false;
449
+ if (decision === true)
450
+ return true;
451
+ }
452
+ if (!tokenRecord.allowAllTools) {
453
+ return tokenRecord.allowedTools.includes(full);
454
+ }
455
+ return true;
456
+ }
457
+ async getToolRequireMcpToken(serverId, toolName) {
458
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
459
+ return false;
460
+ let requireToken = await this.getServerRequireMcpToken(serverId);
461
+ try {
462
+ const toolCfg = await this.authStore.getMcpTokenPolicy('tool', `${serverId}__${toolName}`);
463
+ if (toolCfg)
464
+ requireToken = toolCfg.requireMcpToken !== false;
465
+ }
466
+ catch { }
467
+ return requireToken;
468
+ }
469
+ async isResourceAuthorizedAsync(authContext, serverId, resourceName) {
470
+ if (this.deploymentUtil.authModeIsNone(this.authMode))
471
+ return true;
472
+ if (!await this.isServerAuthorizedAsync(authContext, serverId))
473
+ return false;
474
+ const tokenRecord = authContext.tokenRecord;
475
+ if (!tokenRecord)
476
+ return false;
477
+ const full = `${serverId}__${resourceName}`;
478
+ if (tokenRecord.resourceRules && Object.prototype.hasOwnProperty.call(tokenRecord.resourceRules, full)) {
479
+ const decision = tokenRecord.resourceRules[full];
480
+ if (decision === false)
481
+ return false;
482
+ if (decision === true)
483
+ return true;
484
+ }
485
+ if (!tokenRecord.allowAllResources) {
486
+ return tokenRecord.allowedResources.includes(full);
487
+ }
488
+ return true;
489
+ }
490
+ }
491
+ exports.McpCoreService = McpCoreService;
492
+ //# sourceMappingURL=McpCoreService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpCoreService.js","sourceRoot":"","sources":["../../src/mcp-core/McpCoreService.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ParsedData } from '../types';
2
2
  export declare class CsvParser {
3
- parse(filePath: string): Promise<ParsedData>;
3
+ parse(filePath: string, displayName?: string): Promise<ParsedData>;
4
4
  private inferDataTypes;
5
5
  private inferColumnType;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CsvParser.d.ts","sourceRoot":"","sources":["../../src/parsers/CsvParser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,qBAAa,SAAS;IACd,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgClD,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,eAAe;CAkBxB"}
1
+ {"version":3,"file":"CsvParser.d.ts","sourceRoot":"","sources":["../../src/parsers/CsvParser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,qBAAa,SAAS;IACd,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiCxE,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,eAAe;CAkBxB"}
@@ -38,7 +38,7 @@ const fs = __importStar(require("fs"));
38
38
  const csv = __importStar(require("csv-parser"));
39
39
  const path = __importStar(require("path"));
40
40
  class CsvParser {
41
- async parse(filePath) {
41
+ async parse(filePath, displayName) {
42
42
  return new Promise((resolve, reject) => {
43
43
  const rows = [];
44
44
  let headers = [];
@@ -52,7 +52,8 @@ class CsvParser {
52
52
  })
53
53
  .on('end', () => {
54
54
  const dataTypes = this.inferDataTypes(rows, headers);
55
- const fileName = path.basename(filePath, path.extname(filePath));
55
+ const sourceName = String(displayName || filePath);
56
+ const fileName = path.basename(sourceName, path.extname(sourceName));
56
57
  resolve({
57
58
  tableName: fileName,
58
59
  headers,
@@ -1 +1 @@
1
- {"version":3,"file":"CsvParser.js","sourceRoot":"","sources":["../../src/parsers/CsvParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CsvParser.js","sourceRoot":"","sources":["../../src/parsers/CsvParser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseParser.d.ts","sourceRoot":"","sources":["../../src/parsers/DatabaseParser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE1D,qBAAa,cAAc;IACnB,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAehF,SAAS,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAepD,UAAU;YA8CV,eAAe;YAgDf,WAAW;YAwDX,cAAc;YAiBd,mBAAmB;YAqBnB,eAAe;IAmB7B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,aAAa;YASP,UAAU;YAwDV,cAAc;IA2B5B,OAAO,CAAC,YAAY;CASrB"}
1
+ {"version":3,"file":"DatabaseParser.d.ts","sourceRoot":"","sources":["../../src/parsers/DatabaseParser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG1D,qBAAa,cAAc;IACnB,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAehF,SAAS,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAepD,UAAU;YA8CV,eAAe;YAgDf,WAAW;YAwDX,cAAc;YAiBd,mBAAmB;YAqBnB,eAAe;IAmB7B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,aAAa;YASP,UAAU;YAwDV,cAAc;IA2B5B,OAAO,CAAC,YAAY;CASrB"}