@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,17 @@
1
+ /**
2
+ * Tool arguments parser
3
+ */
4
+ export declare class ToolArgsParser {
5
+ /**
6
+ * Parses prefixed tool names (like mcp__mcp-hub-lite__xxx)
7
+ */
8
+ static parsePrefixedToolName(toolName: string): {
9
+ serverName: string;
10
+ toolName: string;
11
+ } | null;
12
+ /**
13
+ * Validates tool argument types
14
+ */
15
+ static validateToolArgs(): boolean;
16
+ }
17
+ //# sourceMappingURL=tool-args-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-args-parser.d.ts","sourceRoot":"","sources":["../../../../src/utils/tool-args-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAyB/F;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,OAAO;CAInC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Tool arguments parser
3
+ */
4
+ export class ToolArgsParser {
5
+ /**
6
+ * Parses prefixed tool names (like mcp__mcp-hub-lite__xxx)
7
+ */
8
+ static parsePrefixedToolName(toolName) {
9
+ if (!toolName.includes('__')) {
10
+ return null;
11
+ }
12
+ const doubleUnderscoreIndex = toolName.indexOf('__');
13
+ const secondDoubleUnderscoreIndex = toolName.indexOf('__', doubleUnderscoreIndex + 2);
14
+ if (secondDoubleUnderscoreIndex === -1) {
15
+ return null;
16
+ }
17
+ const serverName = toolName.substring(doubleUnderscoreIndex + 2, secondDoubleUnderscoreIndex);
18
+ const parsedToolName = toolName.substring(secondDoubleUnderscoreIndex + 2);
19
+ if (!serverName || !parsedToolName) {
20
+ return null;
21
+ }
22
+ return {
23
+ serverName,
24
+ toolName: parsedToolName
25
+ };
26
+ }
27
+ /**
28
+ * Validates tool argument types
29
+ */
30
+ static validateToolArgs() {
31
+ // 可以根据工具名称验证参数类型
32
+ return true;
33
+ }
34
+ }
@@ -0,0 +1,104 @@
1
+ import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
2
+ import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
3
+ /**
4
+ * SSE (Server-Sent Events) transport implementation for MCP protocol communication.
5
+ *
6
+ * This transport provides a unidirectional communication channel from server to client
7
+ * using the Server-Sent Events (SSE) protocol. It is designed for MCP servers that
8
+ * support SSE for streaming notifications and responses to the client.
9
+ *
10
+ * **Key Features:**
11
+ * - Automatic reconnection with exponential backoff strategy
12
+ * - JSON-RPC message parsing and validation
13
+ * - Configurable connection parameters (headers, reconnect interval, max attempts)
14
+ * - Built-in error handling and logging
15
+ * - Graceful shutdown and cleanup
16
+ *
17
+ * **Limitations:**
18
+ * - SSE is unidirectional (server-to-client only)
19
+ * - Client-to-server messages are not supported via this transport
20
+ * - For bidirectional communication, use stdio or HTTP transports instead
21
+ *
22
+ * **Usage Scenario:**
23
+ * Ideal for remote MCP servers that expose SSE endpoints for real-time updates,
24
+ * notifications, or streaming responses where the client primarily receives data
25
+ * from the server rather than sending requests.
26
+ *
27
+ * @implements {Transport}
28
+ */
29
+ export declare class SseTransport implements Transport {
30
+ private url;
31
+ private headers;
32
+ private reconnectInterval;
33
+ private maxReconnectAttempts;
34
+ private eventSource;
35
+ private reconnectAttempts;
36
+ private isClosing;
37
+ onmessage?: (message: JSONRPCMessage) => void;
38
+ onerror?: (error: Error) => void;
39
+ onclose?: () => void;
40
+ /**
41
+ * Creates a new SSE transport instance.
42
+ *
43
+ * @param url - The SSE endpoint URL to connect to
44
+ * @param headers - Optional HTTP headers to include in the SSE connection request
45
+ * @param reconnectInterval - Time interval (in milliseconds) between reconnection attempts (default: 3000ms)
46
+ * @param maxReconnectAttempts - Maximum number of reconnection attempts before giving up (default: 5)
47
+ */
48
+ constructor(url: string, headers?: Record<string, string>, reconnectInterval?: number, maxReconnectAttempts?: number);
49
+ /**
50
+ * Initializes and starts the SSE connection to the specified URL.
51
+ *
52
+ * This method establishes a connection to the SSE endpoint, sets up event handlers
53
+ * for message processing, error handling, and connection lifecycle events.
54
+ * It also configures automatic reconnection logic for handling transient network issues.
55
+ *
56
+ * @throws {Error} If the transport is already started or if connection creation fails
57
+ * @returns {Promise<void>} Resolves when the connection is successfully established
58
+ */
59
+ start(): Promise<void>;
60
+ /**
61
+ * Restarts the SSE connection by closing the current connection and starting a new one.
62
+ *
63
+ * This method is used internally for automatic reconnection after connection failures.
64
+ * It ensures proper cleanup of the existing connection before attempting to establish
65
+ * a new one, preventing resource leaks or duplicate connections.
66
+ *
67
+ * @returns {Promise<void>} Resolves when the restart process is complete
68
+ */
69
+ private restart;
70
+ /**
71
+ * Gracefully closes the SSE connection and prevents further reconnection attempts.
72
+ *
73
+ * This method sets the closing flag to prevent automatic reconnection and then
74
+ * delegates to the internal close implementation for actual cleanup.
75
+ *
76
+ * @returns {Promise<void>} Resolves when the connection is fully closed
77
+ */
78
+ close(): Promise<void>;
79
+ /**
80
+ * Performs the actual cleanup of the SSE connection resources.
81
+ *
82
+ * This internal method handles the low-level closing of the EventSource connection,
83
+ * nullifies the reference, and triggers the onclose callback if defined.
84
+ * It is used by both the public close method and the restart method.
85
+ *
86
+ * @returns {Promise<void>} Resolves when internal cleanup is complete
87
+ */
88
+ private closeInternal;
89
+ /**
90
+ * Attempts to send a JSON-RPC message through the SSE transport.
91
+ *
92
+ * **Note**: This method always throws an error because SSE is a unidirectional
93
+ * protocol (server-to-client only). Client-to-server communication is not supported
94
+ * by the SSE protocol specification.
95
+ *
96
+ * For bidirectional MCP communication, use stdio or HTTP transports instead.
97
+ *
98
+ * @param message - The JSON-RPC message to send (will not be actually sent)
99
+ * @throws {Error} Always throws an error indicating that SSE transport does not support sending messages
100
+ * @returns {Promise<void>} Never resolves successfully due to the inherent limitation of SSE
101
+ */
102
+ send(message: JSONRPCMessage): Promise<void>;
103
+ }
104
+ //# sourceMappingURL=sse-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse-transport.d.ts","sourceRoot":"","sources":["../../../../../src/utils/transports/sse-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAM1E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,YAAa,YAAW,SAAS;IAkB1C,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,oBAAoB;IApB9B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,SAAS,CAAS;IAEnB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B;;;;;;;OAOG;gBAEO,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,iBAAiB,GAAE,MAAa,EAChC,oBAAoB,GAAE,MAAU;IAG1C;;;;;;;;;OASG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0D5B;;;;;;;;OAQG;YACW,OAAO;IAOrB;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;;;;;OAQG;YACW,aAAa;IAQ3B;;;;;;;;;;;;OAYG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAqBnD"}
@@ -0,0 +1,189 @@
1
+ import { logger } from '../logger.js';
2
+ // Use EventSource from the 'eventsource' package for Node.js compatibility
3
+ import { EventSource } from 'eventsource';
4
+ /**
5
+ * SSE (Server-Sent Events) transport implementation for MCP protocol communication.
6
+ *
7
+ * This transport provides a unidirectional communication channel from server to client
8
+ * using the Server-Sent Events (SSE) protocol. It is designed for MCP servers that
9
+ * support SSE for streaming notifications and responses to the client.
10
+ *
11
+ * **Key Features:**
12
+ * - Automatic reconnection with exponential backoff strategy
13
+ * - JSON-RPC message parsing and validation
14
+ * - Configurable connection parameters (headers, reconnect interval, max attempts)
15
+ * - Built-in error handling and logging
16
+ * - Graceful shutdown and cleanup
17
+ *
18
+ * **Limitations:**
19
+ * - SSE is unidirectional (server-to-client only)
20
+ * - Client-to-server messages are not supported via this transport
21
+ * - For bidirectional communication, use stdio or HTTP transports instead
22
+ *
23
+ * **Usage Scenario:**
24
+ * Ideal for remote MCP servers that expose SSE endpoints for real-time updates,
25
+ * notifications, or streaming responses where the client primarily receives data
26
+ * from the server rather than sending requests.
27
+ *
28
+ * @implements {Transport}
29
+ */
30
+ export class SseTransport {
31
+ url;
32
+ headers;
33
+ reconnectInterval;
34
+ maxReconnectAttempts;
35
+ eventSource = null;
36
+ reconnectAttempts = 0;
37
+ isClosing = false;
38
+ onmessage;
39
+ onerror;
40
+ onclose;
41
+ /**
42
+ * Creates a new SSE transport instance.
43
+ *
44
+ * @param url - The SSE endpoint URL to connect to
45
+ * @param headers - Optional HTTP headers to include in the SSE connection request
46
+ * @param reconnectInterval - Time interval (in milliseconds) between reconnection attempts (default: 3000ms)
47
+ * @param maxReconnectAttempts - Maximum number of reconnection attempts before giving up (default: 5)
48
+ */
49
+ constructor(url, headers = {}, reconnectInterval = 3000, maxReconnectAttempts = 5) {
50
+ this.url = url;
51
+ this.headers = headers;
52
+ this.reconnectInterval = reconnectInterval;
53
+ this.maxReconnectAttempts = maxReconnectAttempts;
54
+ }
55
+ /**
56
+ * Initializes and starts the SSE connection to the specified URL.
57
+ *
58
+ * This method establishes a connection to the SSE endpoint, sets up event handlers
59
+ * for message processing, error handling, and connection lifecycle events.
60
+ * It also configures automatic reconnection logic for handling transient network issues.
61
+ *
62
+ * @throws {Error} If the transport is already started or if connection creation fails
63
+ * @returns {Promise<void>} Resolves when the connection is successfully established
64
+ */
65
+ async start() {
66
+ if (this.eventSource) {
67
+ throw new Error('SSE Transport already started!');
68
+ }
69
+ this.isClosing = false;
70
+ this.reconnectAttempts = 0;
71
+ // Note: The 'eventsource' package doesn't support custom headers directly,
72
+ // but we can pass them as options
73
+ try {
74
+ const options = {};
75
+ if (Object.keys(this.headers).length > 0) {
76
+ options.headers = this.headers;
77
+ }
78
+ this.eventSource = new EventSource(this.url, options);
79
+ this.eventSource.onmessage = (event) => {
80
+ try {
81
+ const message = JSON.parse(event.data);
82
+ this.onmessage?.(message);
83
+ this.reconnectAttempts = 0; // Reset on successful message
84
+ }
85
+ catch (error) {
86
+ logger.error('Failed to parse SSE message:', error);
87
+ this.onerror?.(new Error(`Invalid JSON in SSE message: ${event.data}`));
88
+ }
89
+ };
90
+ this.eventSource.onerror = () => {
91
+ const error = new Error(`SSE connection error for ${this.url}`);
92
+ logger.error('SSE connection error:', error);
93
+ if (!this.isClosing) {
94
+ this.reconnectAttempts++;
95
+ if (this.reconnectAttempts <= this.maxReconnectAttempts) {
96
+ logger.info(`Attempting to reconnect SSE (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`);
97
+ setTimeout(() => {
98
+ this.restart();
99
+ }, this.reconnectInterval);
100
+ }
101
+ else {
102
+ logger.error('Max reconnection attempts reached for SSE');
103
+ this.onerror?.(error);
104
+ this.closeInternal();
105
+ }
106
+ }
107
+ };
108
+ this.eventSource.onopen = () => {
109
+ logger.info(`SSE connection opened to ${this.url}`);
110
+ };
111
+ }
112
+ catch (error) {
113
+ logger.error('Failed to create SSE connection:', error);
114
+ throw error;
115
+ }
116
+ }
117
+ /**
118
+ * Restarts the SSE connection by closing the current connection and starting a new one.
119
+ *
120
+ * This method is used internally for automatic reconnection after connection failures.
121
+ * It ensures proper cleanup of the existing connection before attempting to establish
122
+ * a new one, preventing resource leaks or duplicate connections.
123
+ *
124
+ * @returns {Promise<void>} Resolves when the restart process is complete
125
+ */
126
+ async restart() {
127
+ await this.closeInternal();
128
+ if (!this.isClosing) {
129
+ await this.start();
130
+ }
131
+ }
132
+ /**
133
+ * Gracefully closes the SSE connection and prevents further reconnection attempts.
134
+ *
135
+ * This method sets the closing flag to prevent automatic reconnection and then
136
+ * delegates to the internal close implementation for actual cleanup.
137
+ *
138
+ * @returns {Promise<void>} Resolves when the connection is fully closed
139
+ */
140
+ async close() {
141
+ this.isClosing = true;
142
+ await this.closeInternal();
143
+ }
144
+ /**
145
+ * Performs the actual cleanup of the SSE connection resources.
146
+ *
147
+ * This internal method handles the low-level closing of the EventSource connection,
148
+ * nullifies the reference, and triggers the onclose callback if defined.
149
+ * It is used by both the public close method and the restart method.
150
+ *
151
+ * @returns {Promise<void>} Resolves when internal cleanup is complete
152
+ */
153
+ async closeInternal() {
154
+ if (this.eventSource) {
155
+ this.eventSource.close();
156
+ this.eventSource = null;
157
+ this.onclose?.();
158
+ }
159
+ }
160
+ /**
161
+ * Attempts to send a JSON-RPC message through the SSE transport.
162
+ *
163
+ * **Note**: This method always throws an error because SSE is a unidirectional
164
+ * protocol (server-to-client only). Client-to-server communication is not supported
165
+ * by the SSE protocol specification.
166
+ *
167
+ * For bidirectional MCP communication, use stdio or HTTP transports instead.
168
+ *
169
+ * @param message - The JSON-RPC message to send (will not be actually sent)
170
+ * @throws {Error} Always throws an error indicating that SSE transport does not support sending messages
171
+ * @returns {Promise<void>} Never resolves successfully due to the inherent limitation of SSE
172
+ */
173
+ async send(message) {
174
+ // SSE is unidirectional (server to client only)
175
+ // For bidirectional communication, we need a separate HTTP endpoint
176
+ // This is a limitation of SSE protocol
177
+ const error = new Error('SSE transport does not support sending messages. ' +
178
+ 'SSE is a unidirectional protocol (server-to-client only). ' +
179
+ 'For bidirectional MCP communication, use stdio or HTTP transports instead.');
180
+ // Type-safe way to access message properties
181
+ const messageId = 'id' in message ? String(message.id) : 'unknown';
182
+ const method = 'method' in message ? String(message.method) : 'unknown';
183
+ logger.warn('Attempted to send message via SSE transport', {
184
+ messageId,
185
+ method
186
+ });
187
+ throw error;
188
+ }
189
+ }
@@ -0,0 +1,122 @@
1
+ import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
2
+ import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
3
+ import type { LogStorageService } from '../../services/log-storage.service.js';
4
+ export interface StdioServerParameters {
5
+ command: string;
6
+ args?: string[];
7
+ env?: NodeJS.ProcessEnv;
8
+ stderr?: 'inherit' | 'pipe' | 'ignore';
9
+ cwd?: string;
10
+ }
11
+ export interface StdioTransportOptions {
12
+ serverId?: string;
13
+ logStorage?: LogStorageService;
14
+ }
15
+ /**
16
+ * A transport implementation for communicating with MCP (Model Context Protocol) servers
17
+ * via standard input/output streams. This transport spawns a child process and establishes
18
+ * bidirectional communication using stdin/stdout for JSON-RPC message exchange.
19
+ *
20
+ * The StdioTransport handles:
21
+ * - Cross-platform process spawning (including Windows batch file compatibility)
22
+ * - JSON-RPC message parsing and serialization
23
+ * - Proper process lifecycle management with graceful shutdown
24
+ * - Error handling and logging
25
+ * - Separate handling of stdout (for JSON-RPC) and stderr (for logging)
26
+ *
27
+ * This transport is primarily used for local MCP servers that communicate through
28
+ * standard I/O streams, such as those launched via npx, npm, or other package managers.
29
+ *
30
+ * @implements {Transport}
31
+ */
32
+ export declare class StdioTransport implements Transport {
33
+ private _process?;
34
+ private _readBuffer;
35
+ private _stderrStream;
36
+ private _serverParams;
37
+ private _serverName?;
38
+ private _serverId?;
39
+ private _logStorage?;
40
+ /**
41
+ * Gets the process ID of the spawned child process.
42
+ *
43
+ * @returns {number | undefined} The PID of the child process, or undefined if not started
44
+ */
45
+ get pid(): number | undefined;
46
+ onclose?: () => void;
47
+ onerror?: (error: Error) => void;
48
+ onmessage?: (message: JSONRPCMessage) => void;
49
+ onstdout?: (data: string) => void;
50
+ onstderr?: (data: string) => void;
51
+ /**
52
+ * Creates a new StdioTransport instance.
53
+ *
54
+ * @param {StdioServerParameters} server - Configuration parameters for the child process
55
+ * @param {string} [serverName] - Optional name for the server used in logging
56
+ * @param {StdioTransportOptions} [options] - Additional options for the transport
57
+ */
58
+ constructor(server: StdioServerParameters, serverName?: string, options?: StdioTransportOptions);
59
+ /**
60
+ * Starts the transport by spawning the child process and establishing communication channels.
61
+ *
62
+ * This method handles platform-specific considerations:
63
+ * - On Windows, it automatically wraps batch commands (like npx, npm, etc.) with cmd.exe /c
64
+ * - Sets up proper stdio configuration based on the server parameters
65
+ * - Configures event listeners for process lifecycle events
66
+ * - Establishes data flow for stdout and stderr handling
67
+ *
68
+ * @returns {Promise<void>} Resolves when the child process is successfully spawned
69
+ * @throws {Error} If the transport is already started
70
+ */
71
+ start(): Promise<void>;
72
+ /**
73
+ * Gets the stderr stream for the child process.
74
+ *
75
+ * Returns a PassThrough stream if stderr is configured as 'pipe', otherwise returns
76
+ * the actual stderr stream from the child process, or null if no stderr is available.
77
+ *
78
+ * @returns {PassThrough | NodeJS.ReadableStream | null} The stderr stream or null
79
+ */
80
+ get stderr(): import("node:stream").Readable | null;
81
+ /**
82
+ * Processes the internal read buffer to extract and dispatch JSON-RPC messages.
83
+ *
84
+ * This method continuously reads complete JSON-RPC messages from the buffer
85
+ * and dispatches them to the onmessage callback. It handles partial messages
86
+ * by leaving incomplete data in the buffer for future processing.
87
+ *
88
+ * The method uses a while loop to process all available complete messages
89
+ * in a single call, ensuring efficient message handling without blocking.
90
+ *
91
+ * @private
92
+ */
93
+ processReadBuffer(): void;
94
+ /**
95
+ * Closes the transport by gracefully terminating the child process.
96
+ *
97
+ * This method implements a graceful shutdown sequence:
98
+ * 1. Sends SIGTERM to allow the child process to clean up
99
+ * 2. Waits up to 5 seconds for graceful termination
100
+ * 3. Forces termination with SIGKILL if the process doesn't exit
101
+ * 4. Cleans up internal state and resolves the promise
102
+ *
103
+ * The method ensures proper cleanup of the read buffer and handles
104
+ * any errors that occur during the shutdown process.
105
+ *
106
+ * @returns {Promise<void>} Resolves when the transport is fully closed
107
+ */
108
+ close(): Promise<void>;
109
+ /**
110
+ * Sends a JSON-RPC message to the child process via stdin.
111
+ *
112
+ * This method serializes the message to JSON, appends a newline character,
113
+ * and writes it to the child process's stdin stream. It validates that
114
+ * the transport is connected before attempting to send the message.
115
+ *
116
+ * @param {JSONRPCMessage} message - The JSON-RPC message to send
117
+ * @returns {Promise<void>} Resolves when the message is written to stdin
118
+ * @throws {Error} If the transport is not connected (no active child process)
119
+ */
120
+ send(message: JSONRPCMessage): Promise<void>;
121
+ }
122
+ //# sourceMappingURL=stdio-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio-transport.d.ts","sourceRoot":"","sources":["../../../../../src/utils/transports/stdio-transport.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAgC1E,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAC,CAAoB;IAExC;;;;OAIG;IACH,IAAW,GAAG,IAAI,MAAM,GAAG,SAAS,CAEnC;IAEM,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;;;;;OAMG;gBACS,MAAM,EAAE,qBAAqB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAU/F;;;;;;;;;;;OAWG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmJ5B;;;;;;;OAOG;IACH,IAAI,MAAM,0CAET;IAED;;;;;;;;;;;OAWG;IACH,iBAAiB;IAcjB;;;;;;;;;;;;;OAaG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C5B;;;;;;;;;;OAUG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAOnD"}