@loop_ouroboros/mcp-hub-lite 1.0.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 (499) hide show
  1. package/CHANGELOG.md +228 -0
  2. package/LICENSE +21 -0
  3. package/README.md +354 -0
  4. package/dist/client/assets/HomeView-f901HeKw.js +1 -0
  5. package/dist/client/assets/ResourceDetailView-BdOaL_-o.css +1 -0
  6. package/dist/client/assets/ResourceDetailView-Bz66ZjfY.js +1 -0
  7. package/dist/client/assets/ResourcesView-CjMklkyv.css +1 -0
  8. package/dist/client/assets/ResourcesView-lI_fItfA.js +1 -0
  9. package/dist/client/assets/ServerDashboard-7_8Og9JJ.css +1 -0
  10. package/dist/client/assets/ServerDashboard-Bgx8WVkx.js +2 -0
  11. package/dist/client/assets/ServerListView-Bws09jNR.css +1 -0
  12. package/dist/client/assets/ServerListView-CP6Ffkfx.js +30 -0
  13. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +1 -0
  14. package/dist/client/assets/SessionsView-D68qKR4D.js +1 -0
  15. package/dist/client/assets/SettingsView-BPYfO9BE.js +1 -0
  16. package/dist/client/assets/ToolCallDialog-Br8FNebN.js +1 -0
  17. package/dist/client/assets/ToolCallDialog-C7eh7jHE.css +1 -0
  18. package/dist/client/assets/ToolsView-B6hUiR43.js +1 -0
  19. package/dist/client/assets/ToolsView-BLnU8cV6.css +1 -0
  20. package/dist/client/assets/_baseClone-DCmK847M.js +1 -0
  21. package/dist/client/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  22. package/dist/client/assets/el-form-item-BVMLpmVC.css +1 -0
  23. package/dist/client/assets/el-form-item-DM0q2hmO.js +12 -0
  24. package/dist/client/assets/el-input-BtI9NECe.js +1 -0
  25. package/dist/client/assets/el-input-CmuHb8HS.css +1 -0
  26. package/dist/client/assets/el-loading-CChNmKeI.js +1 -0
  27. package/dist/client/assets/el-loading-bpKhqqQq.css +1 -0
  28. package/dist/client/assets/el-overlay-B2ZKM6Up.css +1 -0
  29. package/dist/client/assets/el-overlay-lZZbPmsX.js +1 -0
  30. package/dist/client/assets/el-select-BXztu2b5.js +1 -0
  31. package/dist/client/assets/el-select-C0U_l4IZ.css +1 -0
  32. package/dist/client/assets/el-tab-pane-CnNoQHsR.css +1 -0
  33. package/dist/client/assets/el-tab-pane-Dy9ruaEX.js +1 -0
  34. package/dist/client/assets/el-table-column-98UyVgBH.js +1 -0
  35. package/dist/client/assets/el-table-column-T_mV9jNw.css +1 -0
  36. package/dist/client/assets/el-tag-B5lLT51E.js +1 -0
  37. package/dist/client/assets/el-tag-DjxZVOpb.css +1 -0
  38. package/dist/client/assets/event-BB_Ol6Sd.js +1 -0
  39. package/dist/client/assets/index-BgKcmWJr.js +1 -0
  40. package/dist/client/assets/index-BsDWtoIl.css +1 -0
  41. package/dist/client/assets/index-BzQXG7no.js +1 -0
  42. package/dist/client/assets/index-CSTs2jYk.js +2 -0
  43. package/dist/client/assets/omit-Bx5HJNV_.js +1 -0
  44. package/dist/client/assets/raf-B9VDMtMF.js +1 -0
  45. package/dist/client/assets/typescript-Bp3YSIOJ.js +1 -0
  46. package/dist/client/assets/vnode-B8aJx8u4.js +1 -0
  47. package/dist/client/assets/vue-vendor-6ny5zj9i.js +3 -0
  48. package/dist/client/index.html +15 -0
  49. package/dist/server/shared/index.d.ts +3 -0
  50. package/dist/server/shared/index.d.ts.map +1 -0
  51. package/dist/server/shared/index.js +2 -0
  52. package/dist/server/shared/models/index.d.ts +4 -0
  53. package/dist/server/shared/models/index.d.ts.map +1 -0
  54. package/dist/server/shared/models/index.js +3 -0
  55. package/dist/server/shared/models/resource.model.d.ts +8 -0
  56. package/dist/server/shared/models/resource.model.d.ts.map +1 -0
  57. package/dist/server/shared/models/resource.model.js +1 -0
  58. package/dist/server/shared/models/server.model.d.ts +57 -0
  59. package/dist/server/shared/models/server.model.d.ts.map +1 -0
  60. package/dist/server/shared/models/server.model.js +1 -0
  61. package/dist/server/shared/models/session.model.d.ts +73 -0
  62. package/dist/server/shared/models/session.model.d.ts.map +1 -0
  63. package/dist/server/shared/models/session.model.js +70 -0
  64. package/dist/server/shared/models/tool.model.d.ts +22 -0
  65. package/dist/server/shared/models/tool.model.d.ts.map +1 -0
  66. package/dist/server/shared/models/tool.model.js +1 -0
  67. package/dist/server/shared/types/client.types.d.ts +35 -0
  68. package/dist/server/shared/types/client.types.d.ts.map +1 -0
  69. package/dist/server/shared/types/client.types.js +5 -0
  70. package/dist/server/shared/types/common.types.d.ts +5 -0
  71. package/dist/server/shared/types/common.types.d.ts.map +1 -0
  72. package/dist/server/shared/types/common.types.js +2 -0
  73. package/dist/server/shared/types/index.d.ts +4 -0
  74. package/dist/server/shared/types/index.d.ts.map +1 -0
  75. package/dist/server/shared/types/index.js +3 -0
  76. package/dist/server/shared/types/session.types.d.ts +15 -0
  77. package/dist/server/shared/types/session.types.d.ts.map +1 -0
  78. package/dist/server/shared/types/session.types.js +5 -0
  79. package/dist/server/shared/types/websocket.types.d.ts +177 -0
  80. package/dist/server/shared/types/websocket.types.d.ts.map +1 -0
  81. package/dist/server/shared/types/websocket.types.js +25 -0
  82. package/dist/server/src/api/mcp/debug-response-wrapper.d.ts +13 -0
  83. package/dist/server/src/api/mcp/debug-response-wrapper.d.ts.map +1 -0
  84. package/dist/server/src/api/mcp/debug-response-wrapper.js +271 -0
  85. package/dist/server/src/api/mcp/gateway.d.ts +14 -0
  86. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -0
  87. package/dist/server/src/api/mcp/gateway.js +116 -0
  88. package/dist/server/src/api/mcp/session-context-extractor.d.ts +47 -0
  89. package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -0
  90. package/dist/server/src/api/mcp/session-context-extractor.js +127 -0
  91. package/dist/server/src/api/mcp/sse-stream-manager.d.ts +13 -0
  92. package/dist/server/src/api/mcp/sse-stream-manager.d.ts.map +1 -0
  93. package/dist/server/src/api/mcp/sse-stream-manager.js +40 -0
  94. package/dist/server/src/api/web/clients.d.ts +30 -0
  95. package/dist/server/src/api/web/clients.d.ts.map +1 -0
  96. package/dist/server/src/api/web/clients.js +41 -0
  97. package/dist/server/src/api/web/config.d.ts +21 -0
  98. package/dist/server/src/api/web/config.d.ts.map +1 -0
  99. package/dist/server/src/api/web/config.js +119 -0
  100. package/dist/server/src/api/web/health.d.ts +21 -0
  101. package/dist/server/src/api/web/health.d.ts.map +1 -0
  102. package/dist/server/src/api/web/health.js +24 -0
  103. package/dist/server/src/api/web/hub-tools.d.ts +30 -0
  104. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -0
  105. package/dist/server/src/api/web/hub-tools.js +202 -0
  106. package/dist/server/src/api/web/logs.d.ts +30 -0
  107. package/dist/server/src/api/web/logs.d.ts.map +1 -0
  108. package/dist/server/src/api/web/logs.js +141 -0
  109. package/dist/server/src/api/web/mcp-status.d.ts +29 -0
  110. package/dist/server/src/api/web/mcp-status.d.ts.map +1 -0
  111. package/dist/server/src/api/web/mcp-status.js +126 -0
  112. package/dist/server/src/api/web/resources.d.ts +28 -0
  113. package/dist/server/src/api/web/resources.d.ts.map +1 -0
  114. package/dist/server/src/api/web/resources.js +93 -0
  115. package/dist/server/src/api/web/search.d.ts +26 -0
  116. package/dist/server/src/api/web/search.d.ts.map +1 -0
  117. package/dist/server/src/api/web/search.js +62 -0
  118. package/dist/server/src/api/web/servers.d.ts +33 -0
  119. package/dist/server/src/api/web/servers.d.ts.map +1 -0
  120. package/dist/server/src/api/web/servers.js +235 -0
  121. package/dist/server/src/api/web/sessions.d.ts +29 -0
  122. package/dist/server/src/api/web/sessions.d.ts.map +1 -0
  123. package/dist/server/src/api/web/sessions.js +104 -0
  124. package/dist/server/src/api/ws/events.d.ts +29 -0
  125. package/dist/server/src/api/ws/events.d.ts.map +1 -0
  126. package/dist/server/src/api/ws/events.js +44 -0
  127. package/dist/server/src/api/ws/ws-handler.d.ts +83 -0
  128. package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -0
  129. package/dist/server/src/api/ws/ws-handler.js +217 -0
  130. package/dist/server/src/app.d.ts +24 -0
  131. package/dist/server/src/app.d.ts.map +1 -0
  132. package/dist/server/src/app.js +108 -0
  133. package/dist/server/src/cli/commands/list.d.ts +71 -0
  134. package/dist/server/src/cli/commands/list.d.ts.map +1 -0
  135. package/dist/server/src/cli/commands/list.js +97 -0
  136. package/dist/server/src/cli/commands/restart.d.ts +42 -0
  137. package/dist/server/src/cli/commands/restart.d.ts.map +1 -0
  138. package/dist/server/src/cli/commands/restart.js +61 -0
  139. package/dist/server/src/cli/commands/start.d.ts +43 -0
  140. package/dist/server/src/cli/commands/start.d.ts.map +1 -0
  141. package/dist/server/src/cli/commands/start.js +160 -0
  142. package/dist/server/src/cli/commands/status.d.ts +39 -0
  143. package/dist/server/src/cli/commands/status.d.ts.map +1 -0
  144. package/dist/server/src/cli/commands/status.js +164 -0
  145. package/dist/server/src/cli/commands/stop.d.ts +34 -0
  146. package/dist/server/src/cli/commands/stop.d.ts.map +1 -0
  147. package/dist/server/src/cli/commands/stop.js +47 -0
  148. package/dist/server/src/cli/commands/ui.d.ts +44 -0
  149. package/dist/server/src/cli/commands/ui.d.ts.map +1 -0
  150. package/dist/server/src/cli/commands/ui.js +95 -0
  151. package/dist/server/src/cli/index.d.ts +62 -0
  152. package/dist/server/src/cli/index.d.ts.map +1 -0
  153. package/dist/server/src/cli/index.js +88 -0
  154. package/dist/server/src/cli/parse-args.d.ts +108 -0
  155. package/dist/server/src/cli/parse-args.d.ts.map +1 -0
  156. package/dist/server/src/cli/parse-args.js +131 -0
  157. package/dist/server/src/cli/server.d.ts +171 -0
  158. package/dist/server/src/cli/server.d.ts.map +1 -0
  159. package/dist/server/src/cli/server.js +246 -0
  160. package/dist/server/src/config/config-change-logger.d.ts +16 -0
  161. package/dist/server/src/config/config-change-logger.d.ts.map +1 -0
  162. package/dist/server/src/config/config-change-logger.js +43 -0
  163. package/dist/server/src/config/config-loader.d.ts +22 -0
  164. package/dist/server/src/config/config-loader.d.ts.map +1 -0
  165. package/dist/server/src/config/config-loader.js +66 -0
  166. package/dist/server/src/config/config-manager.d.ts +158 -0
  167. package/dist/server/src/config/config-manager.d.ts.map +1 -0
  168. package/dist/server/src/config/config-manager.js +246 -0
  169. package/dist/server/src/config/config-saver.d.ts +16 -0
  170. package/dist/server/src/config/config-saver.d.ts.map +1 -0
  171. package/dist/server/src/config/config-saver.js +28 -0
  172. package/dist/server/src/config/config.schema.d.ts +108 -0
  173. package/dist/server/src/config/config.schema.d.ts.map +1 -0
  174. package/dist/server/src/config/config.schema.js +103 -0
  175. package/dist/server/src/config/server-config-manager.d.ts +74 -0
  176. package/dist/server/src/config/server-config-manager.d.ts.map +1 -0
  177. package/dist/server/src/config/server-config-manager.js +157 -0
  178. package/dist/server/src/config/type-converter.d.ts +13 -0
  179. package/dist/server/src/config/type-converter.d.ts.map +1 -0
  180. package/dist/server/src/config/type-converter.js +37 -0
  181. package/dist/server/src/index.d.ts +3 -0
  182. package/dist/server/src/index.d.ts.map +1 -0
  183. package/dist/server/src/index.js +352 -0
  184. package/dist/server/src/models/event.model.d.ts +106 -0
  185. package/dist/server/src/models/event.model.d.ts.map +1 -0
  186. package/dist/server/src/models/event.model.js +5 -0
  187. package/dist/server/src/models/server.model.d.ts +19 -0
  188. package/dist/server/src/models/server.model.d.ts.map +1 -0
  189. package/dist/server/src/models/server.model.js +1 -0
  190. package/dist/server/src/models/system-tools.constants.d.ts +73 -0
  191. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -0
  192. package/dist/server/src/models/system-tools.constants.js +31 -0
  193. package/dist/server/src/models/types.d.ts +84 -0
  194. package/dist/server/src/models/types.d.ts.map +1 -0
  195. package/dist/server/src/models/types.js +67 -0
  196. package/dist/server/src/pid/file.d.ts +26 -0
  197. package/dist/server/src/pid/file.d.ts.map +1 -0
  198. package/dist/server/src/pid/file.js +68 -0
  199. package/dist/server/src/pid/manager.d.ts +98 -0
  200. package/dist/server/src/pid/manager.d.ts.map +1 -0
  201. package/dist/server/src/pid/manager.js +158 -0
  202. package/dist/server/src/pid/types.d.ts +13 -0
  203. package/dist/server/src/pid/types.d.ts.map +1 -0
  204. package/dist/server/src/pid/types.js +4 -0
  205. package/dist/server/src/server/dev-server.d.ts +2 -0
  206. package/dist/server/src/server/dev-server.d.ts.map +1 -0
  207. package/dist/server/src/server/dev-server.js +171 -0
  208. package/dist/server/src/server/runner.d.ts +57 -0
  209. package/dist/server/src/server/runner.d.ts.map +1 -0
  210. package/dist/server/src/server/runner.js +163 -0
  211. package/dist/server/src/services/client-tracker.service.d.ts +132 -0
  212. package/dist/server/src/services/client-tracker.service.d.ts.map +1 -0
  213. package/dist/server/src/services/client-tracker.service.js +203 -0
  214. package/dist/server/src/services/connection/connection-manager.d.ts +478 -0
  215. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -0
  216. package/dist/server/src/services/connection/connection-manager.js +929 -0
  217. package/dist/server/src/services/connection/index.d.ts +6 -0
  218. package/dist/server/src/services/connection/index.d.ts.map +1 -0
  219. package/dist/server/src/services/connection/index.js +4 -0
  220. package/dist/server/src/services/connection/tool-cache.d.ts +122 -0
  221. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -0
  222. package/dist/server/src/services/connection/tool-cache.js +202 -0
  223. package/dist/server/src/services/connection/types.d.ts +30 -0
  224. package/dist/server/src/services/connection/types.d.ts.map +1 -0
  225. package/dist/server/src/services/connection/types.js +1 -0
  226. package/dist/server/src/services/event-bus.service.d.ts +169 -0
  227. package/dist/server/src/services/event-bus.service.d.ts.map +1 -0
  228. package/dist/server/src/services/event-bus.service.js +200 -0
  229. package/dist/server/src/services/gateway/gateway.service.d.ts +61 -0
  230. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -0
  231. package/dist/server/src/services/gateway/gateway.service.js +107 -0
  232. package/dist/server/src/services/gateway/index.d.ts +8 -0
  233. package/dist/server/src/services/gateway/index.d.ts.map +1 -0
  234. package/dist/server/src/services/gateway/index.js +6 -0
  235. package/dist/server/src/services/gateway/log-formatter.d.ts +26 -0
  236. package/dist/server/src/services/gateway/log-formatter.d.ts.map +1 -0
  237. package/dist/server/src/services/gateway/log-formatter.js +66 -0
  238. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts +13 -0
  239. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -0
  240. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +131 -0
  241. package/dist/server/src/services/gateway/request-handlers/index.d.ts +9 -0
  242. package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -0
  243. package/dist/server/src/services/gateway/request-handlers/index.js +8 -0
  244. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +11 -0
  245. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -0
  246. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +85 -0
  247. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts +11 -0
  248. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -0
  249. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +56 -0
  250. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts +11 -0
  251. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -0
  252. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +228 -0
  253. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts +11 -0
  254. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -0
  255. package/dist/server/src/services/gateway/request-handlers/tools-handler.js +79 -0
  256. package/dist/server/src/services/gateway/tool-list-generator.d.ts +23 -0
  257. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -0
  258. package/dist/server/src/services/gateway/tool-list-generator.js +115 -0
  259. package/dist/server/src/services/gateway/types.d.ts +27 -0
  260. package/dist/server/src/services/gateway/types.d.ts.map +1 -0
  261. package/dist/server/src/services/gateway/types.js +4 -0
  262. package/dist/server/src/services/gateway.service.d.ts +7 -0
  263. package/dist/server/src/services/gateway.service.d.ts.map +1 -0
  264. package/dist/server/src/services/gateway.service.js +6 -0
  265. package/dist/server/src/services/hub-manager.service.d.ts +299 -0
  266. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -0
  267. package/dist/server/src/services/hub-manager.service.js +413 -0
  268. package/dist/server/src/services/hub-tools/index.d.ts +10 -0
  269. package/dist/server/src/services/hub-tools/index.d.ts.map +1 -0
  270. package/dist/server/src/services/hub-tools/index.js +6 -0
  271. package/dist/server/src/services/hub-tools/resource-generator.d.ts +63 -0
  272. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -0
  273. package/dist/server/src/services/hub-tools/resource-generator.js +141 -0
  274. package/dist/server/src/services/hub-tools/server-selector.d.ts +63 -0
  275. package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -0
  276. package/dist/server/src/services/hub-tools/server-selector.js +108 -0
  277. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +47 -0
  278. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -0
  279. package/dist/server/src/services/hub-tools/system-tool-definitions.js +225 -0
  280. package/dist/server/src/services/hub-tools/tool-search.d.ts +85 -0
  281. package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -0
  282. package/dist/server/src/services/hub-tools/tool-search.js +115 -0
  283. package/dist/server/src/services/hub-tools/types.d.ts +42 -0
  284. package/dist/server/src/services/hub-tools/types.d.ts.map +1 -0
  285. package/dist/server/src/services/hub-tools/types.js +1 -0
  286. package/dist/server/src/services/hub-tools.service.d.ts +235 -0
  287. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -0
  288. package/dist/server/src/services/hub-tools.service.js +457 -0
  289. package/dist/server/src/services/log-storage.service.d.ts +177 -0
  290. package/dist/server/src/services/log-storage.service.d.ts.map +1 -0
  291. package/dist/server/src/services/log-storage.service.js +243 -0
  292. package/dist/server/src/services/mcp-connection-manager.d.ts +7 -0
  293. package/dist/server/src/services/mcp-connection-manager.d.ts.map +1 -0
  294. package/dist/server/src/services/mcp-connection-manager.js +6 -0
  295. package/dist/server/src/services/mcp-session-manager.d.ts +6 -0
  296. package/dist/server/src/services/mcp-session-manager.d.ts.map +1 -0
  297. package/dist/server/src/services/mcp-session-manager.js +4 -0
  298. package/dist/server/src/services/search/index.d.ts +5 -0
  299. package/dist/server/src/services/search/index.d.ts.map +1 -0
  300. package/dist/server/src/services/search/index.js +5 -0
  301. package/dist/server/src/services/search/search-cache.d.ts +132 -0
  302. package/dist/server/src/services/search/search-cache.d.ts.map +1 -0
  303. package/dist/server/src/services/search/search-cache.js +151 -0
  304. package/dist/server/src/services/search/search-core.service.d.ts +108 -0
  305. package/dist/server/src/services/search/search-core.service.d.ts.map +1 -0
  306. package/dist/server/src/services/search/search-core.service.js +187 -0
  307. package/dist/server/src/services/search/search-scorer.d.ts +54 -0
  308. package/dist/server/src/services/search/search-scorer.d.ts.map +1 -0
  309. package/dist/server/src/services/search/search-scorer.js +83 -0
  310. package/dist/server/src/services/search/types.d.ts +20 -0
  311. package/dist/server/src/services/search/types.d.ts.map +1 -0
  312. package/dist/server/src/services/search/types.js +1 -0
  313. package/dist/server/src/services/session/index.d.ts +6 -0
  314. package/dist/server/src/services/session/index.d.ts.map +1 -0
  315. package/dist/server/src/services/session/index.js +4 -0
  316. package/dist/server/src/services/session/session-manager.d.ts +352 -0
  317. package/dist/server/src/services/session/session-manager.d.ts.map +1 -0
  318. package/dist/server/src/services/session/session-manager.js +835 -0
  319. package/dist/server/src/services/session/types.d.ts +32 -0
  320. package/dist/server/src/services/session/types.d.ts.map +1 -0
  321. package/dist/server/src/services/session/types.js +1 -0
  322. package/dist/server/src/services/simple-search.service.d.ts +67 -0
  323. package/dist/server/src/services/simple-search.service.d.ts.map +1 -0
  324. package/dist/server/src/services/simple-search.service.js +82 -0
  325. package/dist/server/src/services/system-tool-handler.d.ts +10 -0
  326. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -0
  327. package/dist/server/src/services/system-tool-handler.js +77 -0
  328. package/dist/server/src/utils/error-handler.d.ts +18 -0
  329. package/dist/server/src/utils/error-handler.d.ts.map +1 -0
  330. package/dist/server/src/utils/error-handler.js +59 -0
  331. package/dist/server/src/utils/format-utils.d.ts +23 -0
  332. package/dist/server/src/utils/format-utils.d.ts.map +1 -0
  333. package/dist/server/src/utils/format-utils.js +58 -0
  334. package/dist/server/src/utils/index.d.ts +2 -0
  335. package/dist/server/src/utils/index.d.ts.map +1 -0
  336. package/dist/server/src/utils/index.js +1 -0
  337. package/dist/server/src/utils/json-utils.d.ts +82 -0
  338. package/dist/server/src/utils/json-utils.d.ts.map +1 -0
  339. package/dist/server/src/utils/json-utils.js +204 -0
  340. package/dist/server/src/utils/log-rotator.d.ts +223 -0
  341. package/dist/server/src/utils/log-rotator.d.ts.map +1 -0
  342. package/dist/server/src/utils/log-rotator.js +306 -0
  343. package/dist/server/src/utils/logger/dev-logger.d.ts +39 -0
  344. package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -0
  345. package/dist/server/src/utils/logger/dev-logger.js +63 -0
  346. package/dist/server/src/utils/logger/index.d.ts +36 -0
  347. package/dist/server/src/utils/logger/index.d.ts.map +1 -0
  348. package/dist/server/src/utils/logger/index.js +46 -0
  349. package/dist/server/src/utils/logger/log-colors.d.ts +27 -0
  350. package/dist/server/src/utils/logger/log-colors.d.ts.map +1 -0
  351. package/dist/server/src/utils/logger/log-colors.js +41 -0
  352. package/dist/server/src/utils/logger/log-context.d.ts +13 -0
  353. package/dist/server/src/utils/logger/log-context.d.ts.map +1 -0
  354. package/dist/server/src/utils/logger/log-context.js +5 -0
  355. package/dist/server/src/utils/logger/log-formatter.d.ts +47 -0
  356. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -0
  357. package/dist/server/src/utils/logger/log-formatter.js +150 -0
  358. package/dist/server/src/utils/logger/log-modules.d.ts +141 -0
  359. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -0
  360. package/dist/server/src/utils/logger/log-modules.js +81 -0
  361. package/dist/server/src/utils/logger/log-output.d.ts +68 -0
  362. package/dist/server/src/utils/logger/log-output.d.ts.map +1 -0
  363. package/dist/server/src/utils/logger/log-output.js +320 -0
  364. package/dist/server/src/utils/logger/logger.d.ts +190 -0
  365. package/dist/server/src/utils/logger/logger.d.ts.map +1 -0
  366. package/dist/server/src/utils/logger/logger.js +350 -0
  367. package/dist/server/src/utils/logger.d.ts +12 -0
  368. package/dist/server/src/utils/logger.d.ts.map +1 -0
  369. package/dist/server/src/utils/logger.js +12 -0
  370. package/dist/server/src/utils/mcp-error-handler.d.ts +162 -0
  371. package/dist/server/src/utils/mcp-error-handler.d.ts.map +1 -0
  372. package/dist/server/src/utils/mcp-error-handler.js +270 -0
  373. package/dist/server/src/utils/port-checker.d.ts +16 -0
  374. package/dist/server/src/utils/port-checker.d.ts.map +1 -0
  375. package/dist/server/src/utils/port-checker.js +242 -0
  376. package/dist/server/src/utils/request-context.d.ts +71 -0
  377. package/dist/server/src/utils/request-context.d.ts.map +1 -0
  378. package/dist/server/src/utils/request-context.js +73 -0
  379. package/dist/server/src/utils/tool-args-parser.d.ts +17 -0
  380. package/dist/server/src/utils/tool-args-parser.d.ts.map +1 -0
  381. package/dist/server/src/utils/tool-args-parser.js +34 -0
  382. package/dist/server/src/utils/transports/sse-transport.d.ts +104 -0
  383. package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -0
  384. package/dist/server/src/utils/transports/sse-transport.js +189 -0
  385. package/dist/server/src/utils/transports/stdio-transport.d.ts +122 -0
  386. package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -0
  387. package/dist/server/src/utils/transports/stdio-transport.js +324 -0
  388. package/dist/server/src/utils/transports/streamable-http-transport.d.ts +146 -0
  389. package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -0
  390. package/dist/server/src/utils/transports/streamable-http-transport.js +212 -0
  391. package/dist/server/src/utils/transports/transport-factory.d.ts +26 -0
  392. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -0
  393. package/dist/server/src/utils/transports/transport-factory.js +104 -0
  394. package/dist/server/src/utils/transports/transport.interface.d.ts +35 -0
  395. package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -0
  396. package/dist/server/src/utils/transports/transport.interface.js +1 -0
  397. package/dist/server/tests/contract/mcp-protocol/initialize.test.d.ts +2 -0
  398. package/dist/server/tests/contract/mcp-protocol/initialize.test.d.ts.map +1 -0
  399. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +103 -0
  400. package/dist/server/tests/contract/mcp-protocol/tools-call.test.d.ts +2 -0
  401. package/dist/server/tests/contract/mcp-protocol/tools-call.test.d.ts.map +1 -0
  402. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +181 -0
  403. package/dist/server/tests/contract/mcp-protocol/tools-list.test.d.ts +2 -0
  404. package/dist/server/tests/contract/mcp-protocol/tools-list.test.d.ts.map +1 -0
  405. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +155 -0
  406. package/dist/server/tests/evaluation/evaluation.test.d.ts +2 -0
  407. package/dist/server/tests/evaluation/evaluation.test.d.ts.map +1 -0
  408. package/dist/server/tests/evaluation/evaluation.test.js +102 -0
  409. package/dist/server/tests/helpers/sdk-test-helpers.d.ts +32 -0
  410. package/dist/server/tests/helpers/sdk-test-helpers.d.ts.map +1 -0
  411. package/dist/server/tests/helpers/sdk-test-helpers.js +82 -0
  412. package/dist/server/tests/integration/api/gateway.test.d.ts +2 -0
  413. package/dist/server/tests/integration/api/gateway.test.d.ts.map +1 -0
  414. package/dist/server/tests/integration/api/gateway.test.js +366 -0
  415. package/dist/server/tests/integration/gateway/fault-tolerance.test.d.ts +2 -0
  416. package/dist/server/tests/integration/gateway/fault-tolerance.test.d.ts.map +1 -0
  417. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +109 -0
  418. package/dist/server/tests/integration/gateway/mcp-connection.test.d.ts +2 -0
  419. package/dist/server/tests/integration/gateway/mcp-connection.test.d.ts.map +1 -0
  420. package/dist/server/tests/integration/gateway/mcp-connection.test.js +149 -0
  421. package/dist/server/tests/server.test.d.ts +2 -0
  422. package/dist/server/tests/server.test.d.ts.map +1 -0
  423. package/dist/server/tests/server.test.js +95 -0
  424. package/dist/server/tests/setup.d.ts +7 -0
  425. package/dist/server/tests/setup.d.ts.map +1 -0
  426. package/dist/server/tests/setup.js +53 -0
  427. package/dist/server/tests/types/logger-test-helpers.d.ts +17 -0
  428. package/dist/server/tests/types/logger-test-helpers.d.ts.map +1 -0
  429. package/dist/server/tests/types/logger-test-helpers.js +4 -0
  430. package/dist/server/tests/types/test-helpers.d.ts +27 -0
  431. package/dist/server/tests/types/test-helpers.d.ts.map +1 -0
  432. package/dist/server/tests/types/test-helpers.js +4 -0
  433. package/dist/server/tests/unit/cli/basic-cli.test.d.ts +2 -0
  434. package/dist/server/tests/unit/cli/basic-cli.test.d.ts.map +1 -0
  435. package/dist/server/tests/unit/cli/basic-cli.test.js +33 -0
  436. package/dist/server/tests/unit/cli/cli.test.d.ts +2 -0
  437. package/dist/server/tests/unit/cli/cli.test.d.ts.map +1 -0
  438. package/dist/server/tests/unit/cli/cli.test.js +17 -0
  439. package/dist/server/tests/unit/cli/commands.test.d.ts +2 -0
  440. package/dist/server/tests/unit/cli/commands.test.d.ts.map +1 -0
  441. package/dist/server/tests/unit/cli/commands.test.js +75 -0
  442. package/dist/server/tests/unit/cli/server.test.d.ts +2 -0
  443. package/dist/server/tests/unit/cli/server.test.d.ts.map +1 -0
  444. package/dist/server/tests/unit/cli/server.test.js +68 -0
  445. package/dist/server/tests/unit/server/runner.test.d.ts +2 -0
  446. package/dist/server/tests/unit/server/runner.test.d.ts.map +1 -0
  447. package/dist/server/tests/unit/server/runner.test.js +488 -0
  448. package/dist/server/tests/unit/server/setup.d.ts +2 -0
  449. package/dist/server/tests/unit/server/setup.d.ts.map +1 -0
  450. package/dist/server/tests/unit/server/setup.js +21 -0
  451. package/dist/server/tests/unit/services/gateway-logging.test.d.ts +2 -0
  452. package/dist/server/tests/unit/services/gateway-logging.test.d.ts.map +1 -0
  453. package/dist/server/tests/unit/services/gateway-logging.test.js +47 -0
  454. package/dist/server/tests/unit/services/hub-manager-service.test.d.ts +2 -0
  455. package/dist/server/tests/unit/services/hub-manager-service.test.d.ts.map +1 -0
  456. package/dist/server/tests/unit/services/hub-manager-service.test.js +140 -0
  457. package/dist/server/tests/unit/services/hub-manager.test.d.ts +2 -0
  458. package/dist/server/tests/unit/services/hub-manager.test.d.ts.map +1 -0
  459. package/dist/server/tests/unit/services/hub-manager.test.js +98 -0
  460. package/dist/server/tests/unit/services/hub-tools.service.test.d.ts +2 -0
  461. package/dist/server/tests/unit/services/hub-tools.service.test.d.ts.map +1 -0
  462. package/dist/server/tests/unit/services/hub-tools.service.test.js +674 -0
  463. package/dist/server/tests/unit/services/search/search-cache.test.d.ts +2 -0
  464. package/dist/server/tests/unit/services/search/search-cache.test.d.ts.map +1 -0
  465. package/dist/server/tests/unit/services/search/search-cache.test.js +58 -0
  466. package/dist/server/tests/unit/services/search/search-core.service.test.d.ts +2 -0
  467. package/dist/server/tests/unit/services/search/search-core.service.test.d.ts.map +1 -0
  468. package/dist/server/tests/unit/services/search/search-core.service.test.js +84 -0
  469. package/dist/server/tests/unit/services/search/search-scorer.test.d.ts +2 -0
  470. package/dist/server/tests/unit/services/search/search-scorer.test.d.ts.map +1 -0
  471. package/dist/server/tests/unit/services/search/search-scorer.test.js +97 -0
  472. package/dist/server/tests/unit/services/session-manager.test.d.ts +2 -0
  473. package/dist/server/tests/unit/services/session-manager.test.d.ts.map +1 -0
  474. package/dist/server/tests/unit/services/session-manager.test.js +481 -0
  475. package/dist/server/tests/unit/utils/config.test.d.ts +2 -0
  476. package/dist/server/tests/unit/utils/config.test.d.ts.map +1 -0
  477. package/dist/server/tests/unit/utils/config.test.js +634 -0
  478. package/dist/server/tests/unit/utils/json-utils.test.d.ts +2 -0
  479. package/dist/server/tests/unit/utils/json-utils.test.d.ts.map +1 -0
  480. package/dist/server/tests/unit/utils/json-utils.test.js +296 -0
  481. package/dist/server/tests/unit/utils/log-rotator.test.d.ts +2 -0
  482. package/dist/server/tests/unit/utils/log-rotator.test.d.ts.map +1 -0
  483. package/dist/server/tests/unit/utils/log-rotator.test.js +296 -0
  484. package/dist/server/tests/unit/utils/logger.test.d.ts +2 -0
  485. package/dist/server/tests/unit/utils/logger.test.d.ts.map +1 -0
  486. package/dist/server/tests/unit/utils/logger.test.js +462 -0
  487. package/dist/server/tests/unit/utils/mcp-error-handler.test.d.ts +2 -0
  488. package/dist/server/tests/unit/utils/mcp-error-handler.test.d.ts.map +1 -0
  489. package/dist/server/tests/unit/utils/mcp-error-handler.test.js +163 -0
  490. package/dist/server/tests/unit/utils/request-context.test.d.ts +2 -0
  491. package/dist/server/tests/unit/utils/request-context.test.d.ts.map +1 -0
  492. package/dist/server/tests/unit/utils/request-context.test.js +82 -0
  493. package/dist/server/vite.config.d.ts +3 -0
  494. package/dist/server/vite.config.d.ts.map +1 -0
  495. package/dist/server/vite.config.js +160 -0
  496. package/dist/server/vitest.config.d.ts +3 -0
  497. package/dist/server/vitest.config.d.ts.map +1 -0
  498. package/dist/server/vitest.config.js +53 -0
  499. package/package.json +113 -0
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Event Bus Service
3
+ *
4
+ * Centralized event management system for decoupled communication between different modules
5
+ * throughout the MCP Hub Lite application. This service implements the publish-subscribe
6
+ * pattern to enable loose coupling between components while maintaining efficient
7
+ * event-driven architecture.
8
+ *
9
+ * The event bus handles various types of events including server status changes,
10
+ * connection state updates, tool registry changes, log entries, configuration updates,
11
+ * and system health notifications. It provides thread-safe operations with error
12
+ * handling for listener callbacks to prevent cascading failures.
13
+ *
14
+ * Usage scenarios:
15
+ * - Server management modules publish server lifecycle events
16
+ * - Connection managers notify about connection state changes
17
+ * - UI components subscribe to relevant events for real-time updates
18
+ * - Logging services broadcast log entries to interested parties
19
+ * - Configuration services announce configuration changes
20
+ *
21
+ * All public methods are safe to call from any part of the application, and the service
22
+ * automatically manages memory by cleaning up empty event type entries when all listeners
23
+ * are unsubscribed.
24
+ */
25
+ export class EventBusService {
26
+ listeners = new Map();
27
+ /**
28
+ * Publishes an event to all subscribed listeners for the specified event type.
29
+ *
30
+ * This method notifies all registered listeners for the given event type by
31
+ * invoking their callback functions with the provided event data. Each listener
32
+ * is executed in a try-catch block to prevent errors in one listener from
33
+ * affecting other listeners or the publisher.
34
+ *
35
+ * @param {string} eventType - The type of event to publish (e.g., EventTypes.SERVER_CONNECTED)
36
+ * @param {EventData} data - The event payload data to be passed to all listeners
37
+ * @throws {Error} - Never throws; errors in listeners are caught and logged to console.error
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * eventBus.publish(EventTypes.SERVER_CONNECTED, { serverId: 'server-1', timestamp: Date.now() });
42
+ * ```
43
+ */
44
+ publish(eventType, data) {
45
+ const listeners = this.listeners.get(eventType);
46
+ if (listeners) {
47
+ listeners.forEach((listener) => {
48
+ try {
49
+ listener(data);
50
+ }
51
+ catch (error) {
52
+ console.error(`Error in event listener for type ${eventType}:`, error);
53
+ }
54
+ });
55
+ }
56
+ }
57
+ /**
58
+ * Subscribes a listener function to receive events of the specified type.
59
+ *
60
+ * Registers the provided listener callback to be invoked whenever an event
61
+ * of the specified type is published. Returns an unsubscribe function that
62
+ * can be called to remove the listener registration.
63
+ *
64
+ * The service automatically creates a new listener set for the event type
65
+ * if it doesn't already exist, ensuring safe concurrent access.
66
+ *
67
+ * @param {string} eventType - The event type to subscribe to (e.g., EventTypes.TOOLS_UPDATED)
68
+ * @param {(data: EventData) => void} listener - The callback function to invoke when the event is published
69
+ * @returns {() => void} A function that, when called, unsubscribes the listener from the event type
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const unsubscribe = eventBus.subscribe(EventTypes.SERVER_DISCONNECTED, (data) => {
74
+ * console.log('Server disconnected:', data.serverId);
75
+ * });
76
+ * // Later, to unsubscribe:
77
+ * unsubscribe();
78
+ * ```
79
+ */
80
+ subscribe(eventType, listener) {
81
+ if (!this.listeners.has(eventType)) {
82
+ this.listeners.set(eventType, new Set());
83
+ }
84
+ this.listeners.get(eventType).add(listener);
85
+ // Return unsubscribe function
86
+ return () => this.unsubscribe(eventType, listener);
87
+ }
88
+ /**
89
+ * Unsubscribes a listener from receiving events of the specified type.
90
+ *
91
+ * Removes the specified listener from the registry for the given event type.
92
+ * If this was the last listener for the event type, the entire event type
93
+ * entry is removed from the registry to free memory.
94
+ *
95
+ * This method is private and should only be called internally by the
96
+ * unsubscribe function returned by the subscribe method.
97
+ *
98
+ * @param {string} eventType - The event type to unsubscribe from
99
+ * @param {(data: EventData) => void} listener - The listener function to remove
100
+ * @access private
101
+ */
102
+ unsubscribe(eventType, listener) {
103
+ const listeners = this.listeners.get(eventType);
104
+ if (listeners) {
105
+ listeners.delete(listener);
106
+ // If the listeners for this event type are empty, remove the event type entry
107
+ if (listeners.size === 0) {
108
+ this.listeners.delete(eventType);
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * Unsubscribes all listeners from all event types.
114
+ *
115
+ * Clears the entire listener registry, effectively removing all subscriptions
116
+ * across all event types. This is typically used during application shutdown
117
+ * or when a complete reset of the event system is required.
118
+ *
119
+ * @returns {void}
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * // Clean up all event subscriptions before application shutdown
124
+ * eventBus.unsubscribeAll();
125
+ * ```
126
+ */
127
+ unsubscribeAll() {
128
+ this.listeners.clear();
129
+ }
130
+ /**
131
+ * Retrieves all currently registered event types that have active listeners.
132
+ *
133
+ * Returns an array of event type strings that currently have at least one
134
+ * subscribed listener. This can be useful for debugging, monitoring, or
135
+ * introspection purposes.
136
+ *
137
+ * @returns {string[]} Array of event type strings with active listeners
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * const activeEventTypes = eventBus.getEventTypes();
142
+ * console.log('Active event types:', activeEventTypes);
143
+ * ```
144
+ */
145
+ getEventTypes() {
146
+ return Array.from(this.listeners.keys());
147
+ }
148
+ /**
149
+ * Gets the number of active listeners subscribed to a specific event type.
150
+ *
151
+ * Returns the count of listener functions currently registered for the
152
+ * specified event type. Returns 0 if no listeners are registered for
153
+ * the event type or if the event type doesn't exist.
154
+ *
155
+ * @param {string} eventType - The event type to check listener count for
156
+ * @returns {number} The number of active listeners for the event type (0 if none)
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * const listenerCount = eventBus.getListenerCount(EventTypes.LOG_ENTRY);
161
+ * console.log(`There are ${listenerCount} listeners for log entries`);
162
+ * ```
163
+ */
164
+ getListenerCount(eventType) {
165
+ const listeners = this.listeners.get(eventType);
166
+ return listeners ? listeners.size : 0;
167
+ }
168
+ }
169
+ // Event type constants
170
+ export const EventTypes = {
171
+ // Server status related events
172
+ SERVER_STATUS_CHANGE: 'server-status',
173
+ SERVER_CONNECTED: 'server-connected',
174
+ SERVER_DISCONNECTED: 'server-disconnected',
175
+ // Server management events
176
+ SERVER_ADDED: 'server-added',
177
+ SERVER_UPDATED: 'server-updated',
178
+ SERVER_DELETED: 'server-deleted',
179
+ SERVER_INSTANCE_ADDED: 'server-instance-added',
180
+ SERVER_INSTANCE_UPDATED: 'server-instance-updated',
181
+ SERVER_INSTANCE_DELETED: 'server-instance-deleted',
182
+ // Tool related events
183
+ TOOLS_UPDATED: 'tools',
184
+ TOOL_CALL_STARTED: 'tool-call-started',
185
+ TOOL_CALL_COMPLETED: 'tool-call-completed',
186
+ TOOL_CALL_ERROR: 'tool-call-error',
187
+ // Resource related events
188
+ RESOURCES_UPDATED: 'resources',
189
+ // Log related events
190
+ LOG_ENTRY: 'log',
191
+ LOGS_CLEARED: 'logs-cleared',
192
+ // System related events
193
+ SYSTEM_HEALTH: 'system-health',
194
+ CONFIGURATION_UPDATED: 'configuration-updated',
195
+ // Client related events
196
+ CLIENT_CONNECTED: 'client-connected',
197
+ CLIENT_DISCONNECTED: 'client-disconnected'
198
+ };
199
+ // Create global event bus instance
200
+ export const eventBus = new EventBusService();
@@ -0,0 +1,61 @@
1
+ /**
2
+ * MCP Gateway service that aggregates tools from multiple MCP servers and provides a unified interface.
3
+ *
4
+ * This service acts as the central hub for MCP (Model Context Protocol) communication,
5
+ * exposing both system tools and aggregated tools from connected MCP servers through
6
+ * a single stdio transport endpoint.
7
+ *
8
+ * This is a thin wrapper around modular handlers for better maintainability.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const gateway = new GatewayService();
13
+ * await gateway.start(); // Start on stdio transport
14
+ *
15
+ * // Or create connection server for HTTP transport
16
+ * const server = gateway.createConnectionServer();
17
+ * ```
18
+ */
19
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
20
+ import type { ToolMapEntry, GatewayTool } from './types.js';
21
+ export declare class GatewayService {
22
+ private server;
23
+ private transport;
24
+ constructor();
25
+ private registerHandlers;
26
+ /**
27
+ * Generates a unified list of gateway tools with proper naming and collision resolution.
28
+ *
29
+ * @param {Map<string, ToolMapEntry>} toolMap - Map to populate with gateway tool name to actual tool mappings
30
+ * @returns {Array<GatewayTool>} Array of gateway tools with resolved names and descriptions
31
+ */
32
+ generateGatewayToolsList(toolMap: Map<string, ToolMapEntry>): Array<GatewayTool>;
33
+ /**
34
+ * Safely formats tool arguments for logging with circular reference handling and size limits.
35
+ *
36
+ * @param {unknown} args - Tool arguments to format
37
+ * @returns {string} Safe formatted string representation of the arguments
38
+ */
39
+ formatToolArgs(args: unknown): string;
40
+ /**
41
+ * Safely formats tool responses for logging with size limits.
42
+ *
43
+ * @param {unknown} response - Tool response to format
44
+ * @returns {string} Safe formatted string representation of the response
45
+ */
46
+ formatToolResponse(response: unknown): string;
47
+ /**
48
+ * Creates a new MCP server instance with all handlers registered for connection-based transports.
49
+ *
50
+ * @returns {McpServer} New MCP server instance with all handlers registered
51
+ */
52
+ createConnectionServer(): McpServer;
53
+ /**
54
+ * Starts the MCP gateway service on stdio transport.
55
+ *
56
+ * @returns {Promise<void>} Resolves when the gateway is successfully started on stdio
57
+ */
58
+ start(): Promise<void>;
59
+ }
60
+ export declare const gateway: GatewayService;
61
+ //# sourceMappingURL=gateway.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/gateway/gateway.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAapE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAqC;;IAoBtD,OAAO,CAAC,gBAAgB;IAWxB;;;;;OAKG;IACI,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;IAIvF;;;;;OAKG;IACI,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAI5C;;;;;OAKG;IACI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM;IAIpD;;;;OAIG;IACI,sBAAsB,IAAI,SAAS;IAmB1C;;;;OAIG;IACU,KAAK;CAKnB;AAED,eAAO,MAAM,OAAO,gBAAuB,CAAC"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * MCP Gateway service that aggregates tools from multiple MCP servers and provides a unified interface.
3
+ *
4
+ * This service acts as the central hub for MCP (Model Context Protocol) communication,
5
+ * exposing both system tools and aggregated tools from connected MCP servers through
6
+ * a single stdio transport endpoint.
7
+ *
8
+ * This is a thin wrapper around modular handlers for better maintainability.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const gateway = new GatewayService();
13
+ * await gateway.start(); // Start on stdio transport
14
+ *
15
+ * // Or create connection server for HTTP transport
16
+ * const server = gateway.createConnectionServer();
17
+ * ```
18
+ */
19
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
20
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
21
+ import { logger } from '../../utils/index.js';
22
+ import { MCP_HUB_LITE_SERVER } from '../../models/system-tools.constants.js';
23
+ import { registerInitializeHandlers, registerToolsHandlers, registerResourcesHandlers, registerSystemToolsHandlers, registerCallToolHandler } from './request-handlers/index.js';
24
+ import { generateGatewayToolsList } from './tool-list-generator.js';
25
+ import { formatToolArgs, formatToolResponse } from './log-formatter.js';
26
+ export class GatewayService {
27
+ server;
28
+ transport = null;
29
+ constructor() {
30
+ this.server = new McpServer({
31
+ name: MCP_HUB_LITE_SERVER,
32
+ version: '1.0.0'
33
+ }, {
34
+ capabilities: {
35
+ tools: {},
36
+ resources: {} // Add resource capability support
37
+ }
38
+ });
39
+ // Call registerHandlers directly in constructor
40
+ this.registerHandlers(this.server);
41
+ }
42
+ registerHandlers(server) {
43
+ // Local toolMap for this connection
44
+ const toolMap = new Map();
45
+ registerInitializeHandlers(server);
46
+ registerToolsHandlers(server);
47
+ registerResourcesHandlers(server);
48
+ registerSystemToolsHandlers(server);
49
+ registerCallToolHandler(server, toolMap);
50
+ }
51
+ /**
52
+ * Generates a unified list of gateway tools with proper naming and collision resolution.
53
+ *
54
+ * @param {Map<string, ToolMapEntry>} toolMap - Map to populate with gateway tool name to actual tool mappings
55
+ * @returns {Array<GatewayTool>} Array of gateway tools with resolved names and descriptions
56
+ */
57
+ generateGatewayToolsList(toolMap) {
58
+ return generateGatewayToolsList(toolMap);
59
+ }
60
+ /**
61
+ * Safely formats tool arguments for logging with circular reference handling and size limits.
62
+ *
63
+ * @param {unknown} args - Tool arguments to format
64
+ * @returns {string} Safe formatted string representation of the arguments
65
+ */
66
+ formatToolArgs(args) {
67
+ return formatToolArgs(args);
68
+ }
69
+ /**
70
+ * Safely formats tool responses for logging with size limits.
71
+ *
72
+ * @param {unknown} response - Tool response to format
73
+ * @returns {string} Safe formatted string representation of the response
74
+ */
75
+ formatToolResponse(response) {
76
+ return formatToolResponse(response);
77
+ }
78
+ /**
79
+ * Creates a new MCP server instance with all handlers registered for connection-based transports.
80
+ *
81
+ * @returns {McpServer} New MCP server instance with all handlers registered
82
+ */
83
+ createConnectionServer() {
84
+ const server = new McpServer({
85
+ name: MCP_HUB_LITE_SERVER,
86
+ version: '1.0.0'
87
+ }, {
88
+ capabilities: {
89
+ tools: {},
90
+ resources: {} // Add resource capability support
91
+ }
92
+ });
93
+ this.registerHandlers(server);
94
+ return server;
95
+ }
96
+ /**
97
+ * Starts the MCP gateway service on stdio transport.
98
+ *
99
+ * @returns {Promise<void>} Resolves when the gateway is successfully started on stdio
100
+ */
101
+ async start() {
102
+ this.transport = new StdioServerTransport();
103
+ await this.server.connect(this.transport);
104
+ logger.info('MCP Gateway started on stdio');
105
+ }
106
+ }
107
+ export const gateway = new GatewayService();
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Gateway service module index.
3
+ */
4
+ export { GatewayService, gateway } from './gateway.service.js';
5
+ export type { ToolMapEntry, GatewayTool } from './types.js';
6
+ export { generateGatewayToolsList } from './tool-list-generator.js';
7
+ export { formatToolArgs, formatToolResponse } from './log-formatter.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/gateway/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Gateway service module index.
3
+ */
4
+ export { GatewayService, gateway } from './gateway.service.js';
5
+ export { generateGatewayToolsList } from './tool-list-generator.js';
6
+ export { formatToolArgs, formatToolResponse } from './log-formatter.js';
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Log formatting utilities for Gateway service.
3
+ */
4
+ /**
5
+ * Safely formats tool arguments for logging with circular reference handling and size limits.
6
+ *
7
+ * This method provides safe JSON serialization of tool arguments for logging purposes,
8
+ * handling circular references by replacing them with '[Circular Reference]' and
9
+ * truncating large strings and outputs to prevent log noise and performance issues.
10
+ *
11
+ * @param {unknown} args - Tool arguments to format
12
+ * @returns {string} Safe formatted string representation of the arguments
13
+ */
14
+ export declare function formatToolArgs(args: unknown): string;
15
+ /**
16
+ * Safely formats tool responses for logging with size limits.
17
+ *
18
+ * This method provides safe JSON serialization of tool responses for logging purposes,
19
+ * truncating large outputs to prevent log noise and performance issues while maintaining
20
+ * readability through pretty-printed JSON formatting.
21
+ *
22
+ * @param {unknown} response - Tool response to format
23
+ * @returns {string} Safe formatted string representation of the response
24
+ */
25
+ export declare function formatToolResponse(response: unknown): string;
26
+ //# sourceMappingURL=log-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-formatter.d.ts","sourceRoot":"","sources":["../../../../../src/services/gateway/log-formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CA4BpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAe5D"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Log formatting utilities for Gateway service.
3
+ */
4
+ import { stringifyForLogging, stringifyForLoggingWithReplacer } from '../../utils/json-utils.js';
5
+ /**
6
+ * Safely formats tool arguments for logging with circular reference handling and size limits.
7
+ *
8
+ * This method provides safe JSON serialization of tool arguments for logging purposes,
9
+ * handling circular references by replacing them with '[Circular Reference]' and
10
+ * truncating large strings and outputs to prevent log noise and performance issues.
11
+ *
12
+ * @param {unknown} args - Tool arguments to format
13
+ * @returns {string} Safe formatted string representation of the arguments
14
+ */
15
+ export function formatToolArgs(args) {
16
+ try {
17
+ const seen = new WeakSet();
18
+ const replacer = (_key, value) => {
19
+ if (typeof value === 'object' && value !== null) {
20
+ if (seen.has(value)) {
21
+ return '[Circular Reference]';
22
+ }
23
+ seen.add(value);
24
+ }
25
+ // Limit string length and truncate large objects
26
+ if (typeof value === 'string' && value.length > 500) {
27
+ return value.substring(0, 500) + '... [truncated]';
28
+ }
29
+ return value;
30
+ };
31
+ const formatted = stringifyForLoggingWithReplacer(args, replacer);
32
+ // Limit total output length
33
+ if (formatted.length > 2000) {
34
+ return formatted.substring(0, 2000) + '... [truncated]';
35
+ }
36
+ return formatted;
37
+ }
38
+ catch (error) {
39
+ return ('[Error formatting args: ' + (error instanceof Error ? error.message : String(error)) + ']');
40
+ }
41
+ }
42
+ /**
43
+ * Safely formats tool responses for logging with size limits.
44
+ *
45
+ * This method provides safe JSON serialization of tool responses for logging purposes,
46
+ * truncating large outputs to prevent log noise and performance issues while maintaining
47
+ * readability through pretty-printed JSON formatting.
48
+ *
49
+ * @param {unknown} response - Tool response to format
50
+ * @returns {string} Safe formatted string representation of the response
51
+ */
52
+ export function formatToolResponse(response) {
53
+ try {
54
+ const formatted = stringifyForLogging(response);
55
+ // Limit total output length
56
+ if (formatted.length > 2000) {
57
+ return formatted.substring(0, 2000) + '... [truncated]';
58
+ }
59
+ return formatted;
60
+ }
61
+ catch (error) {
62
+ return ('[Error formatting response: ' +
63
+ (error instanceof Error ? error.message : String(error)) +
64
+ ']');
65
+ }
66
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Call tool request handler for Gateway service.
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { ToolMapEntry } from '../types.js';
6
+ /**
7
+ * Register call tool handler on the MCP server.
8
+ *
9
+ * @param server - MCP server instance to register handlers on
10
+ * @param toolMap - Tool map for routing tool calls
11
+ */
12
+ export declare function registerCallToolHandler(server: McpServer, toolMap: Map<string, ToolMapEntry>): void;
13
+ //# sourceMappingURL=call-tool-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-tool-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/call-tool-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACjC,IAAI,CAwKN"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Call tool request handler for Gateway service.
3
+ */
4
+ import { CallToolRequestSchema, ListToolsRequestSchema, McpError } from '@modelcontextprotocol/sdk/types.js';
5
+ import { logger, LOG_MODULES } from '../../../utils/index.js';
6
+ import { stringifyForLogging } from '../../../utils/json-utils.js';
7
+ import { getClientCwd } from '../../../utils/request-context.js';
8
+ import { mcpConnectionManager } from '../../mcp-connection-manager.js';
9
+ import { SystemToolHandler } from '../../system-tool-handler.js';
10
+ import { ErrorHandler } from '../../../utils/error-handler.js';
11
+ import { ToolArgsParser } from '../../../utils/tool-args-parser.js';
12
+ import { SYSTEM_TOOL_NAMES, MCP_HUB_LITE_SERVER } from '../../../models/system-tools.constants.js';
13
+ import { formatToolArgs, formatToolResponse } from '../log-formatter.js';
14
+ import { generateGatewayToolsList } from '../tool-list-generator.js';
15
+ /**
16
+ * Register call tool handler on the MCP server.
17
+ *
18
+ * @param server - MCP server instance to register handlers on
19
+ * @param toolMap - Tool map for routing tool calls
20
+ */
21
+ export function registerCallToolHandler(server, toolMap) {
22
+ // Original list tools handler (for compatibility)
23
+ server.server.setRequestHandler(ListToolsRequestSchema, async () => {
24
+ const gatewayTools = generateGatewayToolsList(toolMap);
25
+ return {
26
+ tools: gatewayTools
27
+ };
28
+ });
29
+ // Original call tool handler (for compatibility)
30
+ server.server.setRequestHandler(CallToolRequestSchema, async (request) => {
31
+ const toolName = request.params.name;
32
+ const toolArgs = request.params.arguments || {};
33
+ // Parse prefixed tool names (like mcp__mcp-hub-lite__xxx) if applicable
34
+ // This handles Claude Code style tool names with server prefix
35
+ const parsedTool = ToolArgsParser.parsePrefixedToolName(toolName);
36
+ if (parsedTool) {
37
+ logger.debug(`Parsed prefixed tool name: "${toolName}" → server="${parsedTool.serverName}", tool="${parsedTool.toolName}"`, LOG_MODULES.GATEWAY);
38
+ // Check if it's a system tool call
39
+ if (parsedTool.serverName === MCP_HUB_LITE_SERVER &&
40
+ SYSTEM_TOOL_NAMES.includes(parsedTool.toolName)) {
41
+ logger.info(`System tool called via prefixed name: ${parsedTool.toolName}`, LOG_MODULES.GATEWAY);
42
+ try {
43
+ const result = await SystemToolHandler.handleSystemToolCall(parsedTool.toolName, toolArgs);
44
+ if (result &&
45
+ typeof result === 'object' &&
46
+ 'content' in result &&
47
+ Array.isArray(result.content)) {
48
+ return result;
49
+ }
50
+ return {
51
+ content: [
52
+ {
53
+ type: 'text',
54
+ text: stringifyForLogging(result)
55
+ }
56
+ ]
57
+ };
58
+ }
59
+ catch (error) {
60
+ ErrorHandler.handleSystemToolError(parsedTool.toolName, error);
61
+ }
62
+ }
63
+ }
64
+ // Log incoming tool request with full context
65
+ logger.info(`Tool call REQUEST received: toolName=${toolName}, args=${formatToolArgs(toolArgs)}`, LOG_MODULES.GATEWAY);
66
+ logger.debug(`Tool context: toolMap size=${toolMap.size}, available tools=${Array.from(toolMap.keys()).slice(0, 10).join(', ')}${toolMap.size > 10 ? '...' : ''}`, LOG_MODULES.GATEWAY);
67
+ // Handle system tools
68
+ if (typeof toolName === 'string' && SYSTEM_TOOL_NAMES.includes(toolName)) {
69
+ logger.debug(`System tool called: ${toolName}, args=${formatToolArgs(toolArgs)}`, LOG_MODULES.GATEWAY);
70
+ try {
71
+ const result = await SystemToolHandler.handleSystemToolCall(toolName, toolArgs);
72
+ if (result &&
73
+ typeof result === 'object' &&
74
+ 'content' in result &&
75
+ Array.isArray(result.content)) {
76
+ return result;
77
+ }
78
+ return {
79
+ content: [
80
+ {
81
+ type: 'text',
82
+ text: stringifyForLogging(result)
83
+ }
84
+ ]
85
+ };
86
+ }
87
+ catch (error) {
88
+ ErrorHandler.handleSystemToolError(toolName, error);
89
+ }
90
+ }
91
+ const target = toolMap.get(toolName);
92
+ logger.debug(`Tool lookup SUCCESS: toolName=${toolName} -> serverId=${target?.serverId}, realToolName=${target?.realToolName}`, LOG_MODULES.GATEWAY);
93
+ if (!target) {
94
+ logger.error(`Tool NOT FOUND: toolName=${toolName}, available tools=${Array.from(toolMap.keys()).join(', ')}`, LOG_MODULES.GATEWAY);
95
+ throw new McpError(-32801, `Tool ${toolName} not found`);
96
+ }
97
+ const startTime = Date.now();
98
+ try {
99
+ // Inject CWD if available and not present in args
100
+ const cwd = getClientCwd();
101
+ if (cwd && !toolArgs.cwd) {
102
+ toolArgs.cwd = cwd;
103
+ logger.debug(`Injected CWD into tool call ${toolName}: ${cwd}`, LOG_MODULES.dynamic(toolName));
104
+ }
105
+ logger.debug(`Tool call EXECUTING: serverId=${target.serverId}, realToolName=${target.realToolName}, args=${formatToolArgs(toolArgs)}`, LOG_MODULES.GATEWAY);
106
+ const result = await mcpConnectionManager.callTool(target.serverId, target.realToolName, toolArgs);
107
+ const duration = Date.now() - startTime;
108
+ logger.info(`Tool call SUCCESS: serverId=${target.serverId}, realToolName=${target.realToolName}, duration=${duration}ms, response=${formatToolResponse(result)}`, LOG_MODULES.GATEWAY);
109
+ // Wrap the result in a valid CallToolResult structure
110
+ if (typeof result === 'object' && result !== null) {
111
+ return {
112
+ content: [],
113
+ ...result
114
+ };
115
+ }
116
+ else {
117
+ return {
118
+ content: [
119
+ {
120
+ type: 'text',
121
+ text: String(result)
122
+ }
123
+ ]
124
+ };
125
+ }
126
+ }
127
+ catch (error) {
128
+ ErrorHandler.handleToolCallError(target.serverId, target.realToolName, error);
129
+ }
130
+ });
131
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Gateway request handlers index.
3
+ */
4
+ export { registerInitializeHandlers } from './initialize-handler.js';
5
+ export { registerToolsHandlers } from './tools-handler.js';
6
+ export { registerResourcesHandlers } from './resources-handler.js';
7
+ export { registerSystemToolsHandlers } from './system-tools-handler.js';
8
+ export { registerCallToolHandler } from './call-tool-handler.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Gateway request handlers index.
3
+ */
4
+ export { registerInitializeHandlers } from './initialize-handler.js';
5
+ export { registerToolsHandlers } from './tools-handler.js';
6
+ export { registerResourcesHandlers } from './resources-handler.js';
7
+ export { registerSystemToolsHandlers } from './system-tools-handler.js';
8
+ export { registerCallToolHandler } from './call-tool-handler.js';