@loop_ouroboros/mcp-hub-lite 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/client/assets/{HomeView-7rMg9C6t.js → HomeView-Bu2joUvW.js} +1 -1
  3. package/dist/client/assets/ResourceDetailView-BvrhDCD1.js +1 -0
  4. package/dist/client/assets/ResourceDetailView-DUJZbegl.css +1 -0
  5. package/dist/client/assets/ResourcesView-Cc8RHtia.css +1 -0
  6. package/dist/client/assets/ResourcesView-LjqioF_s.js +1 -0
  7. package/dist/client/assets/ServerDashboard-BfLeFDGw.css +1 -0
  8. package/dist/client/assets/ServerDashboard-FhHJFvUi.js +1 -0
  9. package/dist/client/assets/ServerDetail-BKV-M4qT.js +2 -0
  10. package/dist/client/assets/ServerDetail-CtnNKJGx.css +1 -0
  11. package/dist/client/assets/{ServerListView-Bws09jNR.css → ServerListView-B-bPljsO.css} +1 -1
  12. package/dist/client/assets/ServerListView-BXgtDyt3.js +36 -0
  13. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-D-ooYNdN.js +1 -0
  14. package/dist/client/assets/SettingsView-CMFG91Z4.js +1 -0
  15. package/dist/client/assets/SettingsView-GkBOKL0V.css +1 -0
  16. package/dist/client/assets/ToolCallDialog-Bf4Xe4gH.js +1 -0
  17. package/dist/client/assets/ToolsView-DFpha1z0.js +1 -0
  18. package/dist/client/assets/{_baseClone-5q1b0P3O.js → _baseClone-Bp9Rjwd7.js} +1 -1
  19. package/dist/client/assets/el-form-item-B4LbJ6OO.css +1 -0
  20. package/dist/client/assets/el-form-item-DdSUWYsl.js +12 -0
  21. package/dist/client/assets/el-input-99gMrutP.js +1 -0
  22. package/dist/client/assets/el-input-BH4BZKnG.css +1 -0
  23. package/dist/client/assets/{el-loading-H85n3BUC.js → el-loading-CIQ5pD5u.js} +1 -1
  24. package/dist/client/assets/el-overlay-BVM6msGX.js +1 -0
  25. package/dist/client/assets/{el-select-C0U_l4IZ.css → el-overlay-CBvdpA69.css} +1 -1
  26. package/dist/client/assets/{ResourceDetailView-BdOaL_-o.css → el-radio-group-B0bauIRR.css} +1 -1
  27. package/dist/client/assets/el-radio-group-DhXWy7ry.js +1 -0
  28. package/dist/client/assets/el-skeleton-item-BLY1jEuR.css +1 -0
  29. package/dist/client/assets/el-skeleton-item-DJz-Us12.js +1 -0
  30. package/dist/client/assets/el-switch-BBrS-_6y.css +1 -0
  31. package/dist/client/assets/el-switch-Bu8AQ5uM.js +1 -0
  32. package/dist/client/assets/el-tab-pane-BnGMaV56.js +1 -0
  33. package/dist/client/assets/el-table-column-BMWOaLS_.js +1 -0
  34. package/dist/client/assets/el-table-column-BdvRS9Y2.css +1 -0
  35. package/dist/client/assets/index-C2V-ZGji.js +1 -0
  36. package/dist/client/assets/{index-BsDWtoIl.css → index-DpH6ZSbs.css} +1 -1
  37. package/dist/client/assets/index-vhkqgpmN.js +2 -0
  38. package/dist/client/assets/{omit-DPsOVNIJ.js → omit-CqPQN3XP.js} +1 -1
  39. package/dist/client/assets/{raf-DY5mgbuB.js → raf-C2wXzaVU.js} +1 -1
  40. package/dist/client/assets/{vue-vendor-6ny5zj9i.js → vue-vendor-BLHLXXJK.js} +1 -1
  41. package/dist/client/index.html +3 -3
  42. package/dist/server/shared/models/resource.model.d.ts +2 -1
  43. package/dist/server/shared/models/resource.model.d.ts.map +1 -1
  44. package/dist/server/shared/models/server.model.d.ts +362 -5
  45. package/dist/server/shared/models/server.model.d.ts.map +1 -1
  46. package/dist/server/shared/models/server.model.js +220 -1
  47. package/dist/server/shared/models/session.model.d.ts +1 -57
  48. package/dist/server/shared/models/session.model.d.ts.map +1 -1
  49. package/dist/server/shared/models/session.model.js +1 -55
  50. package/dist/server/shared/models/tool.model.d.ts +4 -2
  51. package/dist/server/shared/models/tool.model.d.ts.map +1 -1
  52. package/dist/server/shared/types/session-context.types.d.ts +0 -2
  53. package/dist/server/shared/types/session-context.types.d.ts.map +1 -1
  54. package/dist/server/shared/types/websocket.types.d.ts +17 -10
  55. package/dist/server/shared/types/websocket.types.d.ts.map +1 -1
  56. package/dist/server/src/api/mcp/gateway.d.ts +1 -3
  57. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  58. package/dist/server/src/api/mcp/gateway.js +19 -50
  59. package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -1
  60. package/dist/server/src/api/mcp/session-context-extractor.js +5 -14
  61. package/dist/server/src/api/web/hub-tools.d.ts +2 -2
  62. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  63. package/dist/server/src/api/web/hub-tools.js +3 -54
  64. package/dist/server/src/api/web/mcp-status.d.ts +1 -1
  65. package/dist/server/src/api/web/mcp-status.d.ts.map +1 -1
  66. package/dist/server/src/api/web/mcp-status.js +71 -30
  67. package/dist/server/src/api/web/resources.d.ts.map +1 -1
  68. package/dist/server/src/api/web/resources.js +28 -22
  69. package/dist/server/src/api/web/search.d.ts +2 -16
  70. package/dist/server/src/api/web/search.d.ts.map +1 -1
  71. package/dist/server/src/api/web/search.js +24 -45
  72. package/dist/server/src/api/web/servers.d.ts +3 -3
  73. package/dist/server/src/api/web/servers.d.ts.map +1 -1
  74. package/dist/server/src/api/web/servers.js +70 -25
  75. package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -1
  76. package/dist/server/src/api/ws/ws-handler.js +4 -2
  77. package/dist/server/src/app.d.ts.map +1 -1
  78. package/dist/server/src/app.js +0 -2
  79. package/dist/server/src/cli/commands/list.js +2 -2
  80. package/dist/server/src/cli/commands/status.d.ts.map +1 -1
  81. package/dist/server/src/cli/commands/status.js +41 -30
  82. package/dist/server/src/cli/index.d.ts.map +1 -1
  83. package/dist/server/src/cli/index.js +2 -1
  84. package/dist/server/src/cli/server.d.ts +11 -2
  85. package/dist/server/src/cli/server.d.ts.map +1 -1
  86. package/dist/server/src/config/config-change-logger.d.ts +22 -0
  87. package/dist/server/src/config/config-change-logger.d.ts.map +1 -1
  88. package/dist/server/src/config/config-change-logger.js +135 -11
  89. package/dist/server/src/config/config-loader.d.ts +6 -5
  90. package/dist/server/src/config/config-loader.d.ts.map +1 -1
  91. package/dist/server/src/config/config-loader.js +54 -16
  92. package/dist/server/src/config/config-manager.d.ts +51 -43
  93. package/dist/server/src/config/config-manager.d.ts.map +1 -1
  94. package/dist/server/src/config/config-manager.js +84 -66
  95. package/dist/server/src/config/config-migrator.d.ts +82 -0
  96. package/dist/server/src/config/config-migrator.d.ts.map +1 -0
  97. package/dist/server/src/config/config-migrator.js +348 -0
  98. package/dist/server/src/config/config-saver.d.ts +2 -0
  99. package/dist/server/src/config/config-saver.d.ts.map +1 -1
  100. package/dist/server/src/config/config-saver.js +8 -2
  101. package/dist/server/src/config/config.schema.d.ts +10 -104
  102. package/dist/server/src/config/config.schema.d.ts.map +1 -1
  103. package/dist/server/src/config/config.schema.js +15 -99
  104. package/dist/server/src/config/path-validator.d.ts +27 -0
  105. package/dist/server/src/config/path-validator.d.ts.map +1 -0
  106. package/dist/server/src/config/path-validator.js +53 -0
  107. package/dist/server/src/config/server-config-manager.d.ts +37 -31
  108. package/dist/server/src/config/server-config-manager.d.ts.map +1 -1
  109. package/dist/server/src/config/server-config-manager.js +222 -66
  110. package/dist/server/src/config/type-converter.d.ts.map +1 -1
  111. package/dist/server/src/config/type-converter.js +3 -2
  112. package/dist/server/src/models/event.model.d.ts +17 -10
  113. package/dist/server/src/models/event.model.d.ts.map +1 -1
  114. package/dist/server/src/models/server.model.d.ts +17 -3
  115. package/dist/server/src/models/server.model.d.ts.map +1 -1
  116. package/dist/server/src/models/server.model.js +2 -1
  117. package/dist/server/src/models/system-tools.constants.d.ts +10 -27
  118. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  119. package/dist/server/src/models/system-tools.constants.js +4 -8
  120. package/dist/server/src/pid/manager.d.ts.map +1 -1
  121. package/dist/server/src/pid/manager.js +2 -1
  122. package/dist/server/src/server/dev-server.js +34 -20
  123. package/dist/server/src/server/runner.d.ts.map +1 -1
  124. package/dist/server/src/server/runner.js +41 -26
  125. package/dist/server/src/services/connection/connection-manager.d.ts +85 -103
  126. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  127. package/dist/server/src/services/connection/connection-manager.js +286 -241
  128. package/dist/server/src/services/connection/tool-cache.d.ts +27 -25
  129. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
  130. package/dist/server/src/services/connection/tool-cache.js +50 -55
  131. package/dist/server/src/services/gateway/gateway.service.d.ts +2 -0
  132. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  133. package/dist/server/src/services/gateway/gateway.service.js +15 -19
  134. package/dist/server/src/services/gateway/global-transport.d.ts +10 -0
  135. package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -0
  136. package/dist/server/src/services/gateway/global-transport.js +42 -0
  137. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
  138. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +67 -65
  139. package/dist/server/src/services/gateway/request-handlers/index.d.ts +1 -1
  140. package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -1
  141. package/dist/server/src/services/gateway/request-handlers/index.js +1 -1
  142. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +1 -4
  143. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
  144. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +10 -81
  145. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts +35 -0
  146. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts.map +1 -0
  147. package/dist/server/src/services/gateway/request-handlers/initialize.constants.js +44 -0
  148. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
  149. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -4
  150. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
  151. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +32 -77
  152. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -1
  153. package/dist/server/src/services/gateway/request-handlers/tools-handler.js +4 -3
  154. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
  155. package/dist/server/src/services/gateway/tool-list-generator.js +37 -16
  156. package/dist/server/src/services/gateway/types.d.ts +2 -1
  157. package/dist/server/src/services/gateway/types.d.ts.map +1 -1
  158. package/dist/server/src/services/hub-manager.service.d.ts +32 -238
  159. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
  160. package/dist/server/src/services/hub-manager.service.js +89 -267
  161. package/dist/server/src/services/hub-tools/index.d.ts +1 -3
  162. package/dist/server/src/services/hub-tools/index.d.ts.map +1 -1
  163. package/dist/server/src/services/hub-tools/index.js +1 -2
  164. package/dist/server/src/services/hub-tools/instance-matcher.d.ts +62 -0
  165. package/dist/server/src/services/hub-tools/instance-matcher.d.ts.map +1 -0
  166. package/dist/server/src/services/hub-tools/instance-matcher.js +132 -0
  167. package/dist/server/src/services/hub-tools/instance-selector.d.ts +29 -0
  168. package/dist/server/src/services/hub-tools/instance-selector.d.ts.map +1 -0
  169. package/dist/server/src/services/hub-tools/instance-selector.js +103 -0
  170. package/dist/server/src/services/hub-tools/resource-generator.d.ts +24 -1
  171. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  172. package/dist/server/src/services/hub-tools/resource-generator.js +259 -39
  173. package/dist/server/src/services/hub-tools/server-selector.d.ts +26 -13
  174. package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -1
  175. package/dist/server/src/services/hub-tools/server-selector.js +44 -37
  176. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +1 -4
  177. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
  178. package/dist/server/src/services/hub-tools/system-tool-definitions.js +17 -80
  179. package/dist/server/src/services/hub-tools/tool-search.d.ts +7 -7
  180. package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -1
  181. package/dist/server/src/services/hub-tools/tool-search.js +10 -4
  182. package/dist/server/src/services/hub-tools/types.d.ts +2 -2
  183. package/dist/server/src/services/hub-tools/types.d.ts.map +1 -1
  184. package/dist/server/src/services/hub-tools.service.d.ts +43 -72
  185. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  186. package/dist/server/src/services/hub-tools.service.js +185 -110
  187. package/dist/server/src/services/search/search-core.service.d.ts +5 -5
  188. package/dist/server/src/services/search/search-core.service.js +11 -11
  189. package/dist/server/src/services/session/session-manager.d.ts +12 -256
  190. package/dist/server/src/services/session/session-manager.d.ts.map +1 -1
  191. package/dist/server/src/services/session/session-manager.js +23 -585
  192. package/dist/server/src/services/session-tracker.service.d.ts +2 -10
  193. package/dist/server/src/services/session-tracker.service.d.ts.map +1 -1
  194. package/dist/server/src/services/session-tracker.service.js +2 -53
  195. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
  196. package/dist/server/src/services/system-tool-handler.js +7 -17
  197. package/dist/server/src/utils/composite-key.d.ts +29 -0
  198. package/dist/server/src/utils/composite-key.d.ts.map +1 -0
  199. package/dist/server/src/utils/composite-key.js +39 -0
  200. package/dist/server/src/utils/error-handler.d.ts.map +1 -1
  201. package/dist/server/src/utils/error-handler.js +3 -2
  202. package/dist/server/src/utils/index.d.ts +2 -0
  203. package/dist/server/src/utils/index.d.ts.map +1 -1
  204. package/dist/server/src/utils/index.js +2 -0
  205. package/dist/server/src/utils/instance-id.d.ts +22 -0
  206. package/dist/server/src/utils/instance-id.d.ts.map +1 -0
  207. package/dist/server/src/utils/instance-id.js +59 -0
  208. package/dist/server/src/utils/json-utils.d.ts +4 -4
  209. package/dist/server/src/utils/json-utils.d.ts.map +1 -1
  210. package/dist/server/src/utils/json-utils.js +4 -4
  211. package/dist/server/src/utils/logger/dev-logger.d.ts +2 -1
  212. package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -1
  213. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
  214. package/dist/server/src/utils/logger/log-formatter.js +82 -5
  215. package/dist/server/src/utils/logger/log-modules.d.ts +15 -9
  216. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
  217. package/dist/server/src/utils/logger/log-modules.js +8 -6
  218. package/dist/server/src/utils/parameter-validator.d.ts +10 -0
  219. package/dist/server/src/utils/parameter-validator.d.ts.map +1 -0
  220. package/dist/server/src/utils/parameter-validator.js +53 -0
  221. package/dist/server/src/utils/process-tree.d.ts +49 -0
  222. package/dist/server/src/utils/process-tree.d.ts.map +1 -0
  223. package/dist/server/src/utils/process-tree.js +285 -0
  224. package/dist/server/src/utils/request-context.d.ts +0 -18
  225. package/dist/server/src/utils/request-context.d.ts.map +1 -1
  226. package/dist/server/src/utils/request-context.js +0 -20
  227. package/dist/server/src/utils/sort-utils.d.ts +40 -0
  228. package/dist/server/src/utils/sort-utils.d.ts.map +1 -0
  229. package/dist/server/src/utils/sort-utils.js +131 -0
  230. package/dist/server/src/utils/transports/sse-transport.d.ts +16 -1
  231. package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -1
  232. package/dist/server/src/utils/transports/sse-transport.js +55 -9
  233. package/dist/server/src/utils/transports/stdio-transport.d.ts +24 -53
  234. package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -1
  235. package/dist/server/src/utils/transports/stdio-transport.js +66 -247
  236. package/dist/server/src/utils/transports/streamable-http-transport.d.ts +24 -1
  237. package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -1
  238. package/dist/server/src/utils/transports/streamable-http-transport.js +68 -8
  239. package/dist/server/src/utils/transports/transport-factory.d.ts +9 -4
  240. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
  241. package/dist/server/src/utils/transports/transport-factory.js +31 -11
  242. package/dist/server/src/utils/transports/transport.interface.d.ts +6 -0
  243. package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -1
  244. package/dist/server/src/utils/version.d.ts +11 -0
  245. package/dist/server/src/utils/version.d.ts.map +1 -0
  246. package/dist/server/src/utils/version.js +57 -0
  247. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +24 -24
  248. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +49 -45
  249. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +35 -36
  250. package/dist/server/tests/evaluation/evaluation.test.js +10 -9
  251. package/dist/server/tests/integration/api/gateway.test.js +2 -2
  252. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +65 -25
  253. package/dist/server/tests/integration/gateway/mcp-connection.test.js +53 -61
  254. package/dist/server/tests/server.test.js +27 -16
  255. package/dist/server/tests/temp/temp-run-docling.d.ts +2 -0
  256. package/dist/server/tests/temp/temp-run-docling.d.ts.map +1 -0
  257. package/dist/server/tests/temp/temp-run-docling.js +53 -0
  258. package/dist/server/tests/types/test-helpers.d.ts +1 -2
  259. package/dist/server/tests/types/test-helpers.d.ts.map +1 -1
  260. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts +2 -0
  261. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts.map +1 -0
  262. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.js +199 -0
  263. package/dist/server/tests/unit/config/config-migrator.test.d.ts +2 -0
  264. package/dist/server/tests/unit/config/config-migrator.test.d.ts.map +1 -0
  265. package/dist/server/tests/unit/config/config-migrator.test.js +316 -0
  266. package/dist/server/tests/unit/config/config-saver.test.d.ts +2 -0
  267. package/dist/server/tests/unit/config/config-saver.test.d.ts.map +1 -0
  268. package/dist/server/tests/unit/config/config-saver.test.js +200 -0
  269. package/dist/server/tests/unit/config/config.schema.test.d.ts +2 -0
  270. package/dist/server/tests/unit/config/config.schema.test.d.ts.map +1 -0
  271. package/dist/server/tests/unit/config/config.schema.test.js +347 -0
  272. package/dist/server/tests/unit/server/runner.test.js +86 -62
  273. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts +2 -0
  274. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts.map +1 -0
  275. package/dist/server/tests/unit/services/connection/connection-manager.test.js +112 -0
  276. package/dist/server/tests/unit/services/hub-manager-service.test.js +112 -46
  277. package/dist/server/tests/unit/services/hub-manager.test.js +25 -15
  278. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts +2 -0
  279. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts.map +1 -0
  280. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.js +195 -0
  281. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts +2 -0
  282. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts.map +1 -0
  283. package/dist/server/tests/unit/services/hub-tools/server-selector.test.js +190 -0
  284. package/dist/server/tests/unit/services/hub-tools.service.test.js +560 -320
  285. package/dist/server/tests/unit/services/instance-matcher.test.d.ts +2 -0
  286. package/dist/server/tests/unit/services/instance-matcher.test.d.ts.map +1 -0
  287. package/dist/server/tests/unit/services/instance-matcher.test.js +256 -0
  288. package/dist/server/tests/unit/services/session-manager.test.js +26 -436
  289. package/dist/server/tests/unit/utils/config.test.js +88 -186
  290. package/dist/server/tests/unit/utils/json-utils.test.js +18 -18
  291. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts +2 -0
  292. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts.map +1 -0
  293. package/dist/server/tests/unit/utils/logger-formatter.test.js +66 -0
  294. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts +2 -0
  295. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts.map +1 -0
  296. package/dist/server/tests/unit/utils/parameter-validator.test.js +63 -0
  297. package/dist/server/tests/unit/utils/process-tree.test.d.ts +2 -0
  298. package/dist/server/tests/unit/utils/process-tree.test.d.ts.map +1 -0
  299. package/dist/server/tests/unit/utils/process-tree.test.js +129 -0
  300. package/dist/server/tests/unit/utils/request-context.test.js +5 -24
  301. package/dist/server/tests/unit/utils/sort-utils.test.d.ts +2 -0
  302. package/dist/server/tests/unit/utils/sort-utils.test.d.ts.map +1 -0
  303. package/dist/server/tests/unit/utils/sort-utils.test.js +220 -0
  304. package/dist/server/tests/unit/utils/transport-factory.test.d.ts +2 -0
  305. package/dist/server/tests/unit/utils/transport-factory.test.d.ts.map +1 -0
  306. package/dist/server/tests/unit/utils/transport-factory.test.js +55 -0
  307. package/package.json +1 -1
  308. package/dist/client/assets/ResourceDetailView-Bf-1ffbk.js +0 -1
  309. package/dist/client/assets/ResourcesView-CjMklkyv.css +0 -1
  310. package/dist/client/assets/ResourcesView-g5x4xCPh.js +0 -1
  311. package/dist/client/assets/ServerDashboard-Chpne8Q0.css +0 -1
  312. package/dist/client/assets/ServerDashboard-G8Wmp4hF.js +0 -2
  313. package/dist/client/assets/ServerListView-dV2XrPjo.js +0 -32
  314. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +0 -1
  315. package/dist/client/assets/SessionsView-Ckd38lj1.js +0 -1
  316. package/dist/client/assets/SettingsView-BJUdepEQ.js +0 -1
  317. package/dist/client/assets/ToolCallDialog-C_bTCpHC.js +0 -1
  318. package/dist/client/assets/ToolsView-0c2eputu.js +0 -1
  319. package/dist/client/assets/el-form-item-BVMLpmVC.css +0 -1
  320. package/dist/client/assets/el-form-item-ClFnj49k.js +0 -12
  321. package/dist/client/assets/el-input-CDnuSKVZ.js +0 -1
  322. package/dist/client/assets/el-input-CmuHb8HS.css +0 -1
  323. package/dist/client/assets/el-overlay-B2ZKM6Up.css +0 -1
  324. package/dist/client/assets/el-overlay-CzMkXyYy.js +0 -1
  325. package/dist/client/assets/el-select-DvjGddk_.js +0 -1
  326. package/dist/client/assets/el-tab-pane-C_DQMcwe.js +0 -1
  327. package/dist/client/assets/el-table-column-CASRIbZM.js +0 -1
  328. package/dist/client/assets/el-table-column-T_mV9jNw.css +0 -1
  329. package/dist/client/assets/el-tag-DjxZVOpb.css +0 -1
  330. package/dist/client/assets/el-tag-npbwux4f.js +0 -1
  331. package/dist/client/assets/index-CCnAxNF8.js +0 -2
  332. package/dist/client/assets/index-d1DZeSfz.js +0 -1
  333. package/dist/client/assets/vnode-CHomNjgN.js +0 -1
@@ -1 +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"}
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,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,cAAc,2BAA2B,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Gateway request handlers index.
3
3
  */
4
4
  export { registerInitializeHandlers } from './initialize-handler.js';
5
- export { registerToolsHandlers } from './tools-handler.js';
6
5
  export { registerResourcesHandlers } from './resources-handler.js';
7
6
  export { registerSystemToolsHandlers } from './system-tools-handler.js';
8
7
  export { registerCallToolHandler } from './call-tool-handler.js';
8
+ export * from './initialize.constants.js';
@@ -1,7 +1,4 @@
1
- /**
2
- * Initialize and ping request handlers for Gateway service.
3
- */
4
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
2
  /**
6
3
  * Register initialize and ping handlers on the MCP server.
7
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"initialize-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/initialize-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8HlE"}
1
+ {"version":3,"file":"initialize-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/initialize-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWpE;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4ClE"}
@@ -1,76 +1,28 @@
1
- /**
2
- * Initialize and ping request handlers for Gateway service.
3
- */
4
- import { z } from 'zod';
5
- import { logger, LOG_MODULES } from '../../../utils/index.js';
6
- import { getSessionContext } from '../../../utils/request-context.js';
7
- import { sessionTrackerService } from '../../session-tracker.service.js';
1
+ import { logger, LOG_MODULES } from '../../../utils/logger/index.js';
8
2
  import { MCP_HUB_LITE_SERVER } from '../../../models/system-tools.constants.js';
3
+ import { getAppVersion, getProtocolVersion } from '../../../utils/version.js';
4
+ import { InitializedNotificationSchema, InitializeRequestSchema, PingRequestSchema } from './initialize.constants.js';
9
5
  /**
10
6
  * Register initialize and ping handlers on the MCP server.
11
7
  *
12
8
  * @param server - MCP server instance to register handlers on
13
9
  */
14
10
  export function registerInitializeHandlers(server) {
15
- // MCP standard initialize handler
16
- const InitializeRequestSchema = z.object({
17
- method: z.literal('initialize'),
18
- params: z
19
- .object({
20
- clientInfo: z
21
- .object({
22
- name: z.string(),
23
- version: z.string(),
24
- mcpVersion: z.string().optional()
25
- })
26
- .optional(),
27
- capabilities: z
28
- .object({
29
- tools: z
30
- .object({
31
- list: z.boolean().optional(),
32
- execute: z.boolean().optional()
33
- })
34
- .optional(),
35
- roots: z
36
- .object({
37
- list: z.boolean().optional()
38
- })
39
- .optional(),
40
- experimental: z.record(z.string(), z.any()).optional()
41
- })
42
- .optional(),
43
- protocolVersion: z.string().optional()
44
- })
45
- .optional(),
46
- id: z.union([z.string(), z.number()]),
47
- jsonrpc: z.literal('2.0')
48
- });
49
11
  server.server.setRequestHandler(InitializeRequestSchema, async (request) => {
50
- // Capture session info
51
- const context = getSessionContext();
52
- if (context && request.params?.clientInfo) {
12
+ if (request.params?.clientInfo) {
53
13
  const { name, version } = request.params.clientInfo;
14
+ const protocolVersion = request.params?.protocolVersion || getProtocolVersion();
54
15
  const clientCapabilities = request.params?.capabilities;
55
- logger.info(`Initialized client: ${name} v${version} (ID: ${context.sessionId})`, LOG_MODULES.GATEWAY);
16
+ logger.debug(`Initialized client: Name=${name}, Version=${version}, ProtocolVersion=${protocolVersion}`, LOG_MODULES.GATEWAY);
56
17
  if (clientCapabilities?.roots) {
57
18
  logger.debug(`Client ${name} supports roots capability`, LOG_MODULES.GATEWAY);
58
19
  }
59
- // Update session info in tracker with capabilities
60
- sessionTrackerService.updateSession({
61
- ...context,
62
- clientName: name,
63
- clientVersion: version,
64
- protocolVersion: request.params?.protocolVersion,
65
- capabilities: clientCapabilities
66
- });
67
20
  }
68
21
  return {
69
- protocolVersion: '2024-11-05',
22
+ protocolVersion: getProtocolVersion(),
70
23
  serverInfo: {
71
24
  name: MCP_HUB_LITE_SERVER,
72
- version: '1.0.0',
73
- mcpVersion: '2024-11-05'
25
+ version: getAppVersion()
74
26
  },
75
27
  capabilities: {
76
28
  tools: {
@@ -85,33 +37,10 @@ export function registerInitializeHandlers(server) {
85
37
  }
86
38
  };
87
39
  });
88
- // MCP standard ping handler
89
- const PingRequestSchema = z.object({
90
- method: z.literal('ping'),
91
- params: z.object({}).optional(),
92
- id: z.union([z.string(), z.number()]),
93
- jsonrpc: z.literal('2.0')
94
- });
95
40
  server.server.setRequestHandler(PingRequestSchema, async () => {
96
- return { pong: true }; // Response format compliant with MCP specification
97
- });
98
- // MCP initialized notification handler
99
- const InitializedNotificationSchema = z.object({
100
- method: z.literal('notifications/initialized'),
101
- params: z.any().optional(),
102
- jsonrpc: z.literal('2.0')
41
+ return { pong: true };
103
42
  });
104
43
  server.server.setNotificationHandler(InitializedNotificationSchema, async () => {
105
- const context = getSessionContext();
106
- if (!context) {
107
- logger.warn('Received initialized notification but no session context available', LOG_MODULES.GATEWAY);
108
- return;
109
- }
110
- const sessionInfo = sessionTrackerService.getSession(context.sessionId);
111
- if (!sessionInfo) {
112
- logger.warn(`Received initialized notification but no session info for session ${context.sessionId}`, LOG_MODULES.GATEWAY);
113
- return;
114
- }
115
- logger.debug(`Received initialized notification from client ${sessionInfo.clientName || 'unknown'} (${context.sessionId})`, LOG_MODULES.GATEWAY);
44
+ logger.debug('Received initialized notification from client', LOG_MODULES.GATEWAY);
116
45
  });
117
46
  }
@@ -0,0 +1,35 @@
1
+ import { z } from 'zod';
2
+ export declare const InitializeRequestSchema: z.ZodObject<{
3
+ method: z.ZodLiteral<"initialize">;
4
+ params: z.ZodOptional<z.ZodObject<{
5
+ clientInfo: z.ZodOptional<z.ZodObject<{
6
+ name: z.ZodString;
7
+ version: z.ZodString;
8
+ }, z.core.$strip>>;
9
+ capabilities: z.ZodOptional<z.ZodObject<{
10
+ tools: z.ZodOptional<z.ZodObject<{
11
+ list: z.ZodOptional<z.ZodBoolean>;
12
+ execute: z.ZodOptional<z.ZodBoolean>;
13
+ }, z.core.$strip>>;
14
+ roots: z.ZodOptional<z.ZodObject<{
15
+ list: z.ZodOptional<z.ZodBoolean>;
16
+ }, z.core.$strip>>;
17
+ experimental: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
18
+ }, z.core.$strip>>;
19
+ protocolVersion: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>>;
21
+ id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
22
+ jsonrpc: z.ZodLiteral<"2.0">;
23
+ }, z.core.$strip>;
24
+ export declare const PingRequestSchema: z.ZodObject<{
25
+ method: z.ZodLiteral<"ping">;
26
+ params: z.ZodOptional<z.ZodObject<{}, z.core.$strip>>;
27
+ id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
28
+ jsonrpc: z.ZodLiteral<"2.0">;
29
+ }, z.core.$strip>;
30
+ export declare const InitializedNotificationSchema: z.ZodObject<{
31
+ method: z.ZodLiteral<"notifications/initialized">;
32
+ params: z.ZodOptional<z.ZodAny>;
33
+ jsonrpc: z.ZodLiteral<"2.0">;
34
+ }, z.core.$strip>;
35
+ //# sourceMappingURL=initialize.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.constants.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/initialize.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;iBA+BlC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;iBAIxC,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { z } from 'zod';
2
+ export const InitializeRequestSchema = z.object({
3
+ method: z.literal('initialize'),
4
+ params: z
5
+ .object({
6
+ clientInfo: z
7
+ .object({
8
+ name: z.string(),
9
+ version: z.string()
10
+ })
11
+ .optional(),
12
+ capabilities: z
13
+ .object({
14
+ tools: z
15
+ .object({
16
+ list: z.boolean().optional(),
17
+ execute: z.boolean().optional()
18
+ })
19
+ .optional(),
20
+ roots: z
21
+ .object({
22
+ list: z.boolean().optional()
23
+ })
24
+ .optional(),
25
+ experimental: z.record(z.string(), z.any()).optional()
26
+ })
27
+ .optional(),
28
+ protocolVersion: z.string().optional()
29
+ })
30
+ .optional(),
31
+ id: z.union([z.string(), z.number()]),
32
+ jsonrpc: z.literal('2.0')
33
+ });
34
+ export const PingRequestSchema = z.object({
35
+ method: z.literal('ping'),
36
+ params: z.object({}).optional(),
37
+ id: z.union([z.string(), z.number()]),
38
+ jsonrpc: z.literal('2.0')
39
+ });
40
+ export const InitializedNotificationSchema = z.object({
41
+ method: z.literal('notifications/initialized'),
42
+ params: z.any().optional(),
43
+ jsonrpc: z.literal('2.0')
44
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"resources-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/resources-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwCjE"}
1
+ {"version":3,"file":"resources-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/resources-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwCjE"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { ListResourcesRequestSchema, ReadResourceRequestSchema, McpError } from '@modelcontextprotocol/sdk/types.js';
5
5
  import { logger } from '../../../utils/index.js';
6
+ import { LOG_MODULES } from '../../../utils/logger/log-modules.js';
6
7
  import { stringifyForLogging } from '../../../utils/json-utils.js';
7
8
  import { hubToolsService } from '../../hub-tools.service.js';
8
9
  /**
@@ -18,11 +19,11 @@ export function registerResourcesHandlers(server) {
18
19
  }
19
20
  catch (error) {
20
21
  if (error instanceof Error) {
21
- logger.error(`List resources error:`, error);
22
+ logger.error(`List resources error:`, error, LOG_MODULES.RESOURCES_HANDLER);
22
23
  throw new McpError(-32802, error.message);
23
24
  }
24
25
  else {
25
- logger.error(`List resources error:`, error);
26
+ logger.error(`List resources error:`, error, LOG_MODULES.RESOURCES_HANDLER);
26
27
  throw new McpError(-32802, String(error));
27
28
  }
28
29
  }
@@ -44,11 +45,11 @@ export function registerResourcesHandlers(server) {
44
45
  }
45
46
  catch (error) {
46
47
  if (error instanceof Error) {
47
- logger.error(`Read resource error:`, error);
48
+ logger.error(`Read resource error:`, error, LOG_MODULES.RESOURCES_HANDLER);
48
49
  throw new McpError(-32802, error.message);
49
50
  }
50
51
  else {
51
- logger.error(`Read resource error:`, error);
52
+ logger.error(`Read resource error:`, error, LOG_MODULES.RESOURCES_HANDLER);
52
53
  throw new McpError(-32802, String(error));
53
54
  }
54
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"system-tools-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/system-tools-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4OnE"}
1
+ {"version":3,"file":"system-tools-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/system-tools-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyLnE"}
@@ -4,9 +4,9 @@
4
4
  import { z } from 'zod';
5
5
  import { McpError } from '@modelcontextprotocol/sdk/types.js';
6
6
  import { logger } from '../../../utils/index.js';
7
- import { getSessionCwd } from '../../../utils/request-context.js';
7
+ import { LOG_MODULES } from '../../../utils/logger/log-modules.js';
8
8
  import { hubToolsService } from '../../hub-tools.service.js';
9
- import { LIST_SERVERS_TOOL, FIND_SERVERS_TOOL, LIST_ALL_TOOLS_IN_SERVER_TOOL, FIND_TOOLS_IN_SERVER_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, FIND_TOOLS_TOOL } from '../../../models/system-tools.constants.js';
9
+ import { LIST_SERVERS_TOOL, LIST_TOOLS_IN_SERVER_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, UPDATE_SERVER_DESCRIPTION_TOOL } from '../../../models/system-tools.constants.js';
10
10
  /**
11
11
  * Register system tools handlers on the MCP server.
12
12
  *
@@ -24,63 +24,11 @@ export function registerSystemToolsHandlers(server) {
24
24
  const servers = await hubToolsService.listServers();
25
25
  return { servers };
26
26
  });
27
- // Find servers
28
- const FindServersRequestSchema = z.object({
29
- method: z.literal(FIND_SERVERS_TOOL),
30
- params: z.object({
31
- pattern: z.string(),
32
- searchIn: z.enum(['name', 'description', 'both']).optional().default('both'),
33
- caseSensitive: z.boolean().optional().default(false)
34
- }),
35
- id: z.union([z.string(), z.number()]),
36
- jsonrpc: z.literal('2.0')
37
- });
38
- server.server.setRequestHandler(FindServersRequestSchema, async (request) => {
39
- const servers = await hubToolsService.findServers(request.params);
40
- return { servers };
41
- });
42
27
  // List all tools in a specific server
43
- const ListAllToolsInServerRequestSchema = z.object({
44
- method: z.literal(LIST_ALL_TOOLS_IN_SERVER_TOOL),
45
- params: z.object({
46
- serverName: z.string(),
47
- requestOptions: z
48
- .object({
49
- sessionId: z
50
- .union([z.string(), z.null()])
51
- .optional()
52
- .transform((val) => val ?? undefined),
53
- tags: z.record(z.string(), z.string()).optional()
54
- })
55
- .optional()
56
- }),
57
- id: z.union([z.string(), z.number()]),
58
- jsonrpc: z.literal('2.0')
59
- });
60
- server.server.setRequestHandler(ListAllToolsInServerRequestSchema, async (request) => {
61
- try {
62
- const result = await hubToolsService.listAllToolsInServer(request.params);
63
- return result;
64
- }
65
- catch (error) {
66
- if (error instanceof Error) {
67
- logger.error(`List tools in server error:`, error);
68
- throw new McpError(-32802, error.message);
69
- }
70
- else {
71
- logger.error(`List tools in server error:`, error);
72
- throw new McpError(-32802, String(error));
73
- }
74
- }
75
- });
76
- // Find tools in a specific server
77
- const FindToolsInServerRequestSchema = z.object({
78
- method: z.literal(FIND_TOOLS_IN_SERVER_TOOL),
28
+ const ListToolsInServerRequestSchema = z.object({
29
+ method: z.literal(LIST_TOOLS_IN_SERVER_TOOL),
79
30
  params: z.object({
80
31
  serverName: z.string(),
81
- pattern: z.string(),
82
- searchIn: z.enum(['name', 'description', 'both']).optional().default('both'),
83
- caseSensitive: z.boolean().optional().default(false),
84
32
  requestOptions: z
85
33
  .object({
86
34
  sessionId: z
@@ -94,18 +42,18 @@ export function registerSystemToolsHandlers(server) {
94
42
  id: z.union([z.string(), z.number()]),
95
43
  jsonrpc: z.literal('2.0')
96
44
  });
97
- server.server.setRequestHandler(FindToolsInServerRequestSchema, async (request) => {
45
+ server.server.setRequestHandler(ListToolsInServerRequestSchema, async (request) => {
98
46
  try {
99
- const result = await hubToolsService.findToolsInServer(request.params);
47
+ const result = await hubToolsService.listToolsInServer(request.params);
100
48
  return result;
101
49
  }
102
50
  catch (error) {
103
51
  if (error instanceof Error) {
104
- logger.error(`Find tools in server error:`, error);
52
+ logger.error(`List tools in server error:`, error, LOG_MODULES.SYSTEM_TOOLS_HANDLER);
105
53
  throw new McpError(-32802, error.message);
106
54
  }
107
55
  else {
108
- logger.error(`Find tools in server error:`, error);
56
+ logger.error(`List tools in server error:`, error, LOG_MODULES.SYSTEM_TOOLS_HANDLER);
109
57
  throw new McpError(-32802, String(error));
110
58
  }
111
59
  }
@@ -138,7 +86,7 @@ export function registerSystemToolsHandlers(server) {
138
86
  return { tool };
139
87
  }
140
88
  catch (error) {
141
- logger.error(`Get tool error:`, error);
89
+ logger.error(`Get tool error:`, error, LOG_MODULES.SYSTEM_TOOLS_HANDLER);
142
90
  if (error instanceof McpError) {
143
91
  throw error;
144
92
  }
@@ -173,12 +121,6 @@ export function registerSystemToolsHandlers(server) {
173
121
  server.server.setRequestHandler(CallToolDirectRequestSchema, async (request) => {
174
122
  try {
175
123
  const params = { ...request.params };
176
- // Inject CWD if available and not present in args
177
- const cwd = getSessionCwd();
178
- if (cwd && !params.toolArgs.cwd) {
179
- params.toolArgs.cwd = cwd;
180
- logger.debug(`Injected CWD into direct tool call: ${cwd}`);
181
- }
182
124
  const result = await hubToolsService.callTool(params);
183
125
  // Wrap the result in a valid CallToolResult structure
184
126
  if (typeof result === 'object' && result !== null) {
@@ -199,7 +141,7 @@ export function registerSystemToolsHandlers(server) {
199
141
  }
200
142
  }
201
143
  catch (error) {
202
- logger.error(`Call tool error:`, error);
144
+ logger.error(`Call tool error:`, error, LOG_MODULES.SYSTEM_TOOLS_HANDLER);
203
145
  if (error instanceof McpError) {
204
146
  throw error;
205
147
  }
@@ -222,19 +164,32 @@ export function registerSystemToolsHandlers(server) {
222
164
  const allTools = await hubToolsService.listAllTools();
223
165
  return allTools;
224
166
  });
225
- // Find tools across all servers
226
- const FindToolsRequestSchema = z.object({
227
- method: z.literal(FIND_TOOLS_TOOL),
167
+ // Update server description
168
+ const UpdateServerDescriptionRequestSchema = z.object({
169
+ method: z.literal(UPDATE_SERVER_DESCRIPTION_TOOL),
228
170
  params: z.object({
229
- pattern: z.string(),
230
- searchIn: z.enum(['name', 'description', 'both']).optional().default('both'),
231
- caseSensitive: z.boolean().optional().default(false)
171
+ serverName: z.string(),
172
+ description: z.string()
232
173
  }),
233
174
  id: z.union([z.string(), z.number()]),
234
175
  jsonrpc: z.literal('2.0')
235
176
  });
236
- server.server.setRequestHandler(FindToolsRequestSchema, async (request) => {
237
- const tools = await hubToolsService.findTools(request.params);
238
- return tools;
177
+ server.server.setRequestHandler(UpdateServerDescriptionRequestSchema, async (request) => {
178
+ try {
179
+ const result = await hubToolsService.updateServerDescription(request.params);
180
+ return result;
181
+ }
182
+ catch (error) {
183
+ logger.error(`Update server description error:`, error, LOG_MODULES.SYSTEM_TOOLS_HANDLER);
184
+ if (error instanceof McpError) {
185
+ throw error;
186
+ }
187
+ else if (error instanceof Error) {
188
+ throw new McpError(-32802, error.message);
189
+ }
190
+ else {
191
+ throw new McpError(-32802, String(error));
192
+ }
193
+ }
239
194
  });
240
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tools-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/tools-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqE7D"}
1
+ {"version":3,"file":"tools-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/tools-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqE7D"}
@@ -4,6 +4,7 @@
4
4
  import { z } from 'zod';
5
5
  import { McpError } from '@modelcontextprotocol/sdk/types.js';
6
6
  import { logger } from '../../../utils/index.js';
7
+ import { LOG_MODULES } from '../../../utils/logger/log-modules.js';
7
8
  import { searchCoreService } from '../../search/search-core.service.js';
8
9
  import { hubManager } from '../../hub-manager.service.js';
9
10
  /**
@@ -42,7 +43,7 @@ export function registerToolsHandlers(server) {
42
43
  filters: {}
43
44
  };
44
45
  if (filters.serverName) {
45
- const serverInstances = hubManager.getServerInstanceByName(filters.serverName);
46
+ const serverInstances = hubManager.getServerInstancesByName(filters.serverName);
46
47
  if (serverInstances.length > 0) {
47
48
  // Use the first instance's ID as filter condition
48
49
  searchOptions.filters.serverId = serverInstances[0].id;
@@ -67,11 +68,11 @@ export function registerToolsHandlers(server) {
67
68
  }
68
69
  catch (error) {
69
70
  if (error instanceof Error) {
70
- logger.error(`Search tools error:`, error);
71
+ logger.error(`Search tools error:`, error, LOG_MODULES.TOOLS_HANDLER);
71
72
  throw new McpError(-32802, `Search failed: ${error.message}`);
72
73
  }
73
74
  else {
74
- logger.error(`Search tools error:`, error);
75
+ logger.error(`Search tools error:`, error, LOG_MODULES.TOOLS_HANDLER);
75
76
  throw new McpError(-32802, `Search failed: ${String(error)}`);
76
77
  }
77
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-list-generator.d.ts","sourceRoot":"","sources":["../../../../../src/services/gateway/tool-list-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CA4G/F"}
1
+ {"version":3,"file":"tool-list-generator.d.ts","sourceRoot":"","sources":["../../../../../src/services/gateway/tool-list-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAkI/F"}
@@ -2,9 +2,11 @@
2
2
  * Gateway tool list generator with collision resolution.
3
3
  */
4
4
  import { logger } from '../../utils/index.js';
5
+ import { LOG_MODULES } from '../../utils/logger/log-modules.js';
5
6
  import { mcpConnectionManager } from '../mcp-connection-manager.js';
6
7
  import { hubManager } from '../hub-manager.service.js';
7
8
  import { hubToolsService } from '../hub-tools.service.js';
9
+ import { parseCompositeKey } from '../../utils/composite-key.js';
8
10
  /**
9
11
  * Generates a unified list of gateway tools with proper naming and collision resolution.
10
12
  *
@@ -39,13 +41,21 @@ export function generateGatewayToolsList(toolMap) {
39
41
  }
40
42
  // First pass: Count tool name frequencies to determine uniqueness
41
43
  const toolNameCounts = new Map();
42
- // Iterate through toolCache to get all tools and their server IDs
43
- for (const [serverId, tools] of mcpConnectionManager.getToolCacheEntries()) {
44
+ // Iterate through toolCache to get all tools - entries are keyed by compositeKey (serverName-serverIndex)
45
+ for (const [compositeKey, tools] of mcpConnectionManager.getToolCacheEntries()) {
44
46
  for (const tool of tools) {
45
- const serverConfig = hubManager.getServerById(serverId);
47
+ // Parse composite key to get serverName
48
+ const parsed = parseCompositeKey(compositeKey);
49
+ const serverName = parsed ? parsed.serverName : compositeKey;
50
+ const serverConfig = hubManager.getServerByName(serverName);
46
51
  if (serverConfig) {
47
- if (serverConfig.config.allowedTools &&
48
- !serverConfig.config.allowedTools.includes(tool.name)) {
52
+ // Only include tools if server has aggregatedTools configured AND tool is in aggregatedTools
53
+ const aggregatedTools = serverConfig.template?.aggregatedTools;
54
+ const hasAggregatedTools = aggregatedTools && aggregatedTools.length > 0;
55
+ if (!hasAggregatedTools) {
56
+ continue;
57
+ }
58
+ if (!aggregatedTools.includes(tool.name)) {
49
59
  continue;
50
60
  }
51
61
  }
@@ -53,32 +63,42 @@ export function generateGatewayToolsList(toolMap) {
53
63
  }
54
64
  }
55
65
  // Second pass: Generate gateway tools with proper naming
56
- for (const [serverId, tools] of mcpConnectionManager.getToolCacheEntries()) {
57
- const serverConfig = hubManager.getServerById(serverId);
66
+ for (const [compositeKey, tools] of mcpConnectionManager.getToolCacheEntries()) {
67
+ // Parse composite key to get serverName
68
+ const parsed = parseCompositeKey(compositeKey);
69
+ const serverName = parsed ? parsed.serverName : compositeKey;
70
+ const serverIndex = parsed ? parsed.serverIndex : 0;
71
+ const serverConfig = hubManager.getServerByName(serverName);
58
72
  // Skip if server configuration not found
59
73
  if (!serverConfig) {
60
- logger.warn(`Server configuration not found for serverId: ${serverId}, skipping tools`);
74
+ logger.warn(`Server configuration not found for serverName: ${serverName}, skipping tools`, LOG_MODULES.TOOL_LIST_GENERATOR);
75
+ continue;
76
+ }
77
+ // Only include tools if server has aggregatedTools configured
78
+ const aggregatedTools = serverConfig.template?.aggregatedTools;
79
+ const hasAggregatedTools = aggregatedTools && aggregatedTools.length > 0;
80
+ if (!hasAggregatedTools) {
61
81
  continue;
62
82
  }
83
+ // Get the instance ID for hash suffix (use compositeKey which contains serverName-serverIndex format)
84
+ const hashSuffix = compositeKey;
63
85
  for (const tool of tools) {
64
- if (serverConfig.config.allowedTools &&
65
- !serverConfig.config.allowedTools.includes(tool.name)) {
86
+ if (!aggregatedTools.includes(tool.name)) {
66
87
  continue;
67
88
  }
68
- const serverName = serverConfig.name;
69
89
  let gatewayToolName = tool.name;
70
90
  const isUnique = toolNameCounts.get(tool.name) === 1;
71
91
  const isSystemConflict = usedNames.has(tool.name);
72
92
  // If tool name is not unique or conflicts with system tool, append server hash
73
93
  if (!isUnique || isSystemConflict) {
74
- // Get instance hash from serverConfig, use first 4 characters of serverId as default
75
- const hash = serverConfig.instance?.hash || serverId.substring(0, 4);
94
+ // Use hash suffix from compositeKey for uniqueness
95
+ const hash = hashSuffix.substring(0, 4);
76
96
  gatewayToolName = `${tool.name}_${hash}`;
77
97
  }
78
98
  // Ensure name doesn't exceed 60 chars
79
99
  if (gatewayToolName.length > 60) {
80
- // Use first 4 characters of serverId as default hash
81
- const hash = serverConfig.instance?.hash || serverId.substring(0, 4);
100
+ // Use hash suffix from compositeKey
101
+ const hash = hashSuffix.substring(0, 4);
82
102
  // Reserve space for hash and separator
83
103
  const maxToolNameLen = 60 - hash.length - 1;
84
104
  const truncatedToolName = tool.name.substring(0, maxToolNameLen);
@@ -101,7 +121,8 @@ export function generateGatewayToolsList(toolMap) {
101
121
  gatewayToolName = finalName;
102
122
  usedNames.add(gatewayToolName);
103
123
  toolMap.set(gatewayToolName, {
104
- serverId: serverId,
124
+ serverName,
125
+ serverIndex,
105
126
  realToolName: tool.name
106
127
  });
107
128
  gatewayTools.push({
@@ -6,7 +6,8 @@ import type { JsonSchema } from '../../../shared/models/tool.model.js';
6
6
  * Tool map entry for routing gateway tool calls to actual servers.
7
7
  */
8
8
  export interface ToolMapEntry {
9
- serverId: string;
9
+ serverName: string;
10
+ serverIndex: number;
10
11
  realToolName: string;
11
12
  }
12
13
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/services/gateway/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/services/gateway/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH"}