@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.
- package/CHANGELOG.md +32 -0
- package/dist/client/assets/{HomeView-7rMg9C6t.js → HomeView-Bu2joUvW.js} +1 -1
- package/dist/client/assets/ResourceDetailView-BvrhDCD1.js +1 -0
- package/dist/client/assets/ResourceDetailView-DUJZbegl.css +1 -0
- package/dist/client/assets/ResourcesView-Cc8RHtia.css +1 -0
- package/dist/client/assets/ResourcesView-LjqioF_s.js +1 -0
- package/dist/client/assets/ServerDashboard-BfLeFDGw.css +1 -0
- package/dist/client/assets/ServerDashboard-FhHJFvUi.js +1 -0
- package/dist/client/assets/ServerDetail-BKV-M4qT.js +2 -0
- package/dist/client/assets/ServerDetail-CtnNKJGx.css +1 -0
- package/dist/client/assets/{ServerListView-Bws09jNR.css → ServerListView-B-bPljsO.css} +1 -1
- package/dist/client/assets/ServerListView-BXgtDyt3.js +36 -0
- package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-D-ooYNdN.js +1 -0
- package/dist/client/assets/SettingsView-CMFG91Z4.js +1 -0
- package/dist/client/assets/SettingsView-GkBOKL0V.css +1 -0
- package/dist/client/assets/ToolCallDialog-Bf4Xe4gH.js +1 -0
- package/dist/client/assets/ToolsView-DFpha1z0.js +1 -0
- package/dist/client/assets/{_baseClone-5q1b0P3O.js → _baseClone-Bp9Rjwd7.js} +1 -1
- package/dist/client/assets/el-form-item-B4LbJ6OO.css +1 -0
- package/dist/client/assets/el-form-item-DdSUWYsl.js +12 -0
- package/dist/client/assets/el-input-99gMrutP.js +1 -0
- package/dist/client/assets/el-input-BH4BZKnG.css +1 -0
- package/dist/client/assets/{el-loading-H85n3BUC.js → el-loading-CIQ5pD5u.js} +1 -1
- package/dist/client/assets/el-overlay-BVM6msGX.js +1 -0
- package/dist/client/assets/{el-select-C0U_l4IZ.css → el-overlay-CBvdpA69.css} +1 -1
- package/dist/client/assets/{ResourceDetailView-BdOaL_-o.css → el-radio-group-B0bauIRR.css} +1 -1
- package/dist/client/assets/el-radio-group-DhXWy7ry.js +1 -0
- package/dist/client/assets/el-skeleton-item-BLY1jEuR.css +1 -0
- package/dist/client/assets/el-skeleton-item-DJz-Us12.js +1 -0
- package/dist/client/assets/el-switch-BBrS-_6y.css +1 -0
- package/dist/client/assets/el-switch-Bu8AQ5uM.js +1 -0
- package/dist/client/assets/el-tab-pane-BnGMaV56.js +1 -0
- package/dist/client/assets/el-table-column-BMWOaLS_.js +1 -0
- package/dist/client/assets/el-table-column-BdvRS9Y2.css +1 -0
- package/dist/client/assets/index-C2V-ZGji.js +1 -0
- package/dist/client/assets/{index-BsDWtoIl.css → index-DpH6ZSbs.css} +1 -1
- package/dist/client/assets/index-vhkqgpmN.js +2 -0
- package/dist/client/assets/{omit-DPsOVNIJ.js → omit-CqPQN3XP.js} +1 -1
- package/dist/client/assets/{raf-DY5mgbuB.js → raf-C2wXzaVU.js} +1 -1
- package/dist/client/assets/{vue-vendor-6ny5zj9i.js → vue-vendor-BLHLXXJK.js} +1 -1
- package/dist/client/index.html +3 -3
- package/dist/server/shared/models/resource.model.d.ts +2 -1
- package/dist/server/shared/models/resource.model.d.ts.map +1 -1
- package/dist/server/shared/models/server.model.d.ts +362 -5
- package/dist/server/shared/models/server.model.d.ts.map +1 -1
- package/dist/server/shared/models/server.model.js +220 -1
- package/dist/server/shared/models/session.model.d.ts +1 -57
- package/dist/server/shared/models/session.model.d.ts.map +1 -1
- package/dist/server/shared/models/session.model.js +1 -55
- package/dist/server/shared/models/tool.model.d.ts +4 -2
- package/dist/server/shared/models/tool.model.d.ts.map +1 -1
- package/dist/server/shared/types/session-context.types.d.ts +0 -2
- package/dist/server/shared/types/session-context.types.d.ts.map +1 -1
- package/dist/server/shared/types/websocket.types.d.ts +17 -10
- package/dist/server/shared/types/websocket.types.d.ts.map +1 -1
- package/dist/server/src/api/mcp/gateway.d.ts +1 -3
- package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
- package/dist/server/src/api/mcp/gateway.js +19 -50
- package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -1
- package/dist/server/src/api/mcp/session-context-extractor.js +5 -14
- package/dist/server/src/api/web/hub-tools.d.ts +2 -2
- package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
- package/dist/server/src/api/web/hub-tools.js +3 -54
- package/dist/server/src/api/web/mcp-status.d.ts +1 -1
- package/dist/server/src/api/web/mcp-status.d.ts.map +1 -1
- package/dist/server/src/api/web/mcp-status.js +71 -30
- package/dist/server/src/api/web/resources.d.ts.map +1 -1
- package/dist/server/src/api/web/resources.js +28 -22
- package/dist/server/src/api/web/search.d.ts +2 -16
- package/dist/server/src/api/web/search.d.ts.map +1 -1
- package/dist/server/src/api/web/search.js +24 -45
- package/dist/server/src/api/web/servers.d.ts +3 -3
- package/dist/server/src/api/web/servers.d.ts.map +1 -1
- package/dist/server/src/api/web/servers.js +70 -25
- package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -1
- package/dist/server/src/api/ws/ws-handler.js +4 -2
- package/dist/server/src/app.d.ts.map +1 -1
- package/dist/server/src/app.js +0 -2
- package/dist/server/src/cli/commands/list.js +2 -2
- package/dist/server/src/cli/commands/status.d.ts.map +1 -1
- package/dist/server/src/cli/commands/status.js +41 -30
- package/dist/server/src/cli/index.d.ts.map +1 -1
- package/dist/server/src/cli/index.js +2 -1
- package/dist/server/src/cli/server.d.ts +11 -2
- package/dist/server/src/cli/server.d.ts.map +1 -1
- package/dist/server/src/config/config-change-logger.d.ts +22 -0
- package/dist/server/src/config/config-change-logger.d.ts.map +1 -1
- package/dist/server/src/config/config-change-logger.js +135 -11
- package/dist/server/src/config/config-loader.d.ts +6 -5
- package/dist/server/src/config/config-loader.d.ts.map +1 -1
- package/dist/server/src/config/config-loader.js +54 -16
- package/dist/server/src/config/config-manager.d.ts +51 -43
- package/dist/server/src/config/config-manager.d.ts.map +1 -1
- package/dist/server/src/config/config-manager.js +84 -66
- package/dist/server/src/config/config-migrator.d.ts +82 -0
- package/dist/server/src/config/config-migrator.d.ts.map +1 -0
- package/dist/server/src/config/config-migrator.js +348 -0
- package/dist/server/src/config/config-saver.d.ts +2 -0
- package/dist/server/src/config/config-saver.d.ts.map +1 -1
- package/dist/server/src/config/config-saver.js +8 -2
- package/dist/server/src/config/config.schema.d.ts +10 -104
- package/dist/server/src/config/config.schema.d.ts.map +1 -1
- package/dist/server/src/config/config.schema.js +15 -99
- package/dist/server/src/config/path-validator.d.ts +27 -0
- package/dist/server/src/config/path-validator.d.ts.map +1 -0
- package/dist/server/src/config/path-validator.js +53 -0
- package/dist/server/src/config/server-config-manager.d.ts +37 -31
- package/dist/server/src/config/server-config-manager.d.ts.map +1 -1
- package/dist/server/src/config/server-config-manager.js +222 -66
- package/dist/server/src/config/type-converter.d.ts.map +1 -1
- package/dist/server/src/config/type-converter.js +3 -2
- package/dist/server/src/models/event.model.d.ts +17 -10
- package/dist/server/src/models/event.model.d.ts.map +1 -1
- package/dist/server/src/models/server.model.d.ts +17 -3
- package/dist/server/src/models/server.model.d.ts.map +1 -1
- package/dist/server/src/models/server.model.js +2 -1
- package/dist/server/src/models/system-tools.constants.d.ts +10 -27
- package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
- package/dist/server/src/models/system-tools.constants.js +4 -8
- package/dist/server/src/pid/manager.d.ts.map +1 -1
- package/dist/server/src/pid/manager.js +2 -1
- package/dist/server/src/server/dev-server.js +34 -20
- package/dist/server/src/server/runner.d.ts.map +1 -1
- package/dist/server/src/server/runner.js +41 -26
- package/dist/server/src/services/connection/connection-manager.d.ts +85 -103
- package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
- package/dist/server/src/services/connection/connection-manager.js +286 -241
- package/dist/server/src/services/connection/tool-cache.d.ts +27 -25
- package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
- package/dist/server/src/services/connection/tool-cache.js +50 -55
- package/dist/server/src/services/gateway/gateway.service.d.ts +2 -0
- package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
- package/dist/server/src/services/gateway/gateway.service.js +15 -19
- package/dist/server/src/services/gateway/global-transport.d.ts +10 -0
- package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -0
- package/dist/server/src/services/gateway/global-transport.js +42 -0
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +67 -65
- package/dist/server/src/services/gateway/request-handlers/index.d.ts +1 -1
- package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/index.js +1 -1
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +1 -4
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +10 -81
- package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts +35 -0
- package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/initialize.constants.js +44 -0
- package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -4
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +32 -77
- package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/tools-handler.js +4 -3
- package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
- package/dist/server/src/services/gateway/tool-list-generator.js +37 -16
- package/dist/server/src/services/gateway/types.d.ts +2 -1
- package/dist/server/src/services/gateway/types.d.ts.map +1 -1
- package/dist/server/src/services/hub-manager.service.d.ts +32 -238
- package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
- package/dist/server/src/services/hub-manager.service.js +89 -267
- package/dist/server/src/services/hub-tools/index.d.ts +1 -3
- package/dist/server/src/services/hub-tools/index.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/index.js +1 -2
- package/dist/server/src/services/hub-tools/instance-matcher.d.ts +62 -0
- package/dist/server/src/services/hub-tools/instance-matcher.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/instance-matcher.js +132 -0
- package/dist/server/src/services/hub-tools/instance-selector.d.ts +29 -0
- package/dist/server/src/services/hub-tools/instance-selector.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/instance-selector.js +103 -0
- package/dist/server/src/services/hub-tools/resource-generator.d.ts +24 -1
- package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/resource-generator.js +259 -39
- package/dist/server/src/services/hub-tools/server-selector.d.ts +26 -13
- package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/server-selector.js +44 -37
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +1 -4
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/system-tool-definitions.js +17 -80
- package/dist/server/src/services/hub-tools/tool-search.d.ts +7 -7
- package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/tool-search.js +10 -4
- package/dist/server/src/services/hub-tools/types.d.ts +2 -2
- package/dist/server/src/services/hub-tools/types.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools.service.d.ts +43 -72
- package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools.service.js +185 -110
- package/dist/server/src/services/search/search-core.service.d.ts +5 -5
- package/dist/server/src/services/search/search-core.service.js +11 -11
- package/dist/server/src/services/session/session-manager.d.ts +12 -256
- package/dist/server/src/services/session/session-manager.d.ts.map +1 -1
- package/dist/server/src/services/session/session-manager.js +23 -585
- package/dist/server/src/services/session-tracker.service.d.ts +2 -10
- package/dist/server/src/services/session-tracker.service.d.ts.map +1 -1
- package/dist/server/src/services/session-tracker.service.js +2 -53
- package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
- package/dist/server/src/services/system-tool-handler.js +7 -17
- package/dist/server/src/utils/composite-key.d.ts +29 -0
- package/dist/server/src/utils/composite-key.d.ts.map +1 -0
- package/dist/server/src/utils/composite-key.js +39 -0
- package/dist/server/src/utils/error-handler.d.ts.map +1 -1
- package/dist/server/src/utils/error-handler.js +3 -2
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/src/utils/index.js +2 -0
- package/dist/server/src/utils/instance-id.d.ts +22 -0
- package/dist/server/src/utils/instance-id.d.ts.map +1 -0
- package/dist/server/src/utils/instance-id.js +59 -0
- package/dist/server/src/utils/json-utils.d.ts +4 -4
- package/dist/server/src/utils/json-utils.d.ts.map +1 -1
- package/dist/server/src/utils/json-utils.js +4 -4
- package/dist/server/src/utils/logger/dev-logger.d.ts +2 -1
- package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-formatter.js +82 -5
- package/dist/server/src/utils/logger/log-modules.d.ts +15 -9
- package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-modules.js +8 -6
- package/dist/server/src/utils/parameter-validator.d.ts +10 -0
- package/dist/server/src/utils/parameter-validator.d.ts.map +1 -0
- package/dist/server/src/utils/parameter-validator.js +53 -0
- package/dist/server/src/utils/process-tree.d.ts +49 -0
- package/dist/server/src/utils/process-tree.d.ts.map +1 -0
- package/dist/server/src/utils/process-tree.js +285 -0
- package/dist/server/src/utils/request-context.d.ts +0 -18
- package/dist/server/src/utils/request-context.d.ts.map +1 -1
- package/dist/server/src/utils/request-context.js +0 -20
- package/dist/server/src/utils/sort-utils.d.ts +40 -0
- package/dist/server/src/utils/sort-utils.d.ts.map +1 -0
- package/dist/server/src/utils/sort-utils.js +131 -0
- package/dist/server/src/utils/transports/sse-transport.d.ts +16 -1
- package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -1
- package/dist/server/src/utils/transports/sse-transport.js +55 -9
- package/dist/server/src/utils/transports/stdio-transport.d.ts +24 -53
- package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -1
- package/dist/server/src/utils/transports/stdio-transport.js +66 -247
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts +24 -1
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -1
- package/dist/server/src/utils/transports/streamable-http-transport.js +68 -8
- package/dist/server/src/utils/transports/transport-factory.d.ts +9 -4
- package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
- package/dist/server/src/utils/transports/transport-factory.js +31 -11
- package/dist/server/src/utils/transports/transport.interface.d.ts +6 -0
- package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -1
- package/dist/server/src/utils/version.d.ts +11 -0
- package/dist/server/src/utils/version.d.ts.map +1 -0
- package/dist/server/src/utils/version.js +57 -0
- package/dist/server/tests/contract/mcp-protocol/initialize.test.js +24 -24
- package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +49 -45
- package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +35 -36
- package/dist/server/tests/evaluation/evaluation.test.js +10 -9
- package/dist/server/tests/integration/api/gateway.test.js +2 -2
- package/dist/server/tests/integration/gateway/fault-tolerance.test.js +65 -25
- package/dist/server/tests/integration/gateway/mcp-connection.test.js +53 -61
- package/dist/server/tests/server.test.js +27 -16
- package/dist/server/tests/temp/temp-run-docling.d.ts +2 -0
- package/dist/server/tests/temp/temp-run-docling.d.ts.map +1 -0
- package/dist/server/tests/temp/temp-run-docling.js +53 -0
- package/dist/server/tests/types/test-helpers.d.ts +1 -2
- package/dist/server/tests/types/test-helpers.d.ts.map +1 -1
- package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config-loader-automatic-migration.test.js +199 -0
- package/dist/server/tests/unit/config/config-migrator.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config-migrator.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config-migrator.test.js +316 -0
- package/dist/server/tests/unit/config/config-saver.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config-saver.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config-saver.test.js +200 -0
- package/dist/server/tests/unit/config/config.schema.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config.schema.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config.schema.test.js +347 -0
- package/dist/server/tests/unit/server/runner.test.js +86 -62
- package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts +2 -0
- package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/connection/connection-manager.test.js +112 -0
- package/dist/server/tests/unit/services/hub-manager-service.test.js +112 -46
- package/dist/server/tests/unit/services/hub-manager.test.js +25 -15
- package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-tools/instance-selector.test.js +195 -0
- package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-tools/server-selector.test.js +190 -0
- package/dist/server/tests/unit/services/hub-tools.service.test.js +560 -320
- package/dist/server/tests/unit/services/instance-matcher.test.d.ts +2 -0
- package/dist/server/tests/unit/services/instance-matcher.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/instance-matcher.test.js +256 -0
- package/dist/server/tests/unit/services/session-manager.test.js +26 -436
- package/dist/server/tests/unit/utils/config.test.js +88 -186
- package/dist/server/tests/unit/utils/json-utils.test.js +18 -18
- package/dist/server/tests/unit/utils/logger-formatter.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/logger-formatter.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/logger-formatter.test.js +66 -0
- package/dist/server/tests/unit/utils/parameter-validator.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/parameter-validator.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/parameter-validator.test.js +63 -0
- package/dist/server/tests/unit/utils/process-tree.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/process-tree.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/process-tree.test.js +129 -0
- package/dist/server/tests/unit/utils/request-context.test.js +5 -24
- package/dist/server/tests/unit/utils/sort-utils.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/sort-utils.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/sort-utils.test.js +220 -0
- package/dist/server/tests/unit/utils/transport-factory.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/transport-factory.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/transport-factory.test.js +55 -0
- package/package.json +1 -1
- package/dist/client/assets/ResourceDetailView-Bf-1ffbk.js +0 -1
- package/dist/client/assets/ResourcesView-CjMklkyv.css +0 -1
- package/dist/client/assets/ResourcesView-g5x4xCPh.js +0 -1
- package/dist/client/assets/ServerDashboard-Chpne8Q0.css +0 -1
- package/dist/client/assets/ServerDashboard-G8Wmp4hF.js +0 -2
- package/dist/client/assets/ServerListView-dV2XrPjo.js +0 -32
- package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +0 -1
- package/dist/client/assets/SessionsView-Ckd38lj1.js +0 -1
- package/dist/client/assets/SettingsView-BJUdepEQ.js +0 -1
- package/dist/client/assets/ToolCallDialog-C_bTCpHC.js +0 -1
- package/dist/client/assets/ToolsView-0c2eputu.js +0 -1
- package/dist/client/assets/el-form-item-BVMLpmVC.css +0 -1
- package/dist/client/assets/el-form-item-ClFnj49k.js +0 -12
- package/dist/client/assets/el-input-CDnuSKVZ.js +0 -1
- package/dist/client/assets/el-input-CmuHb8HS.css +0 -1
- package/dist/client/assets/el-overlay-B2ZKM6Up.css +0 -1
- package/dist/client/assets/el-overlay-CzMkXyYy.js +0 -1
- package/dist/client/assets/el-select-DvjGddk_.js +0 -1
- package/dist/client/assets/el-tab-pane-C_DQMcwe.js +0 -1
- package/dist/client/assets/el-table-column-CASRIbZM.js +0 -1
- package/dist/client/assets/el-table-column-T_mV9jNw.css +0 -1
- package/dist/client/assets/el-tag-DjxZVOpb.css +0 -1
- package/dist/client/assets/el-tag-npbwux4f.js +0 -1
- package/dist/client/assets/index-CCnAxNF8.js +0 -2
- package/dist/client/assets/index-d1DZeSfz.js +0 -1
- package/dist/client/assets/vnode-CHomNjgN.js +0 -1
|
@@ -1,63 +1,64 @@
|
|
|
1
1
|
import type { Tool } from '../../../shared/models/tool.model.js';
|
|
2
2
|
/**
|
|
3
|
-
* Manages tool caching for MCP connections at both
|
|
3
|
+
* Manages tool caching for MCP connections at both composite key and server name levels.
|
|
4
4
|
*
|
|
5
|
-
* This class encapsulates all tool cache operations, providing both
|
|
5
|
+
* This class encapsulates all tool cache operations, providing both composite key-level
|
|
6
6
|
* and server name-level caching for efficient tool lookup while maintaining data
|
|
7
7
|
* consistency across multiple instances of the same server.
|
|
8
8
|
*/
|
|
9
9
|
export declare class ToolCache {
|
|
10
10
|
private toolCache;
|
|
11
11
|
private serverNameToolCache;
|
|
12
|
-
private
|
|
12
|
+
private nameToCompositeKeyMap;
|
|
13
13
|
/**
|
|
14
|
-
* Sets the name-to-
|
|
14
|
+
* Sets the name-to-composite-key mapping for server name resolution.
|
|
15
15
|
*
|
|
16
16
|
* @param serverName - The server name
|
|
17
|
-
* @param
|
|
17
|
+
* @param compositeKey - The corresponding composite key
|
|
18
18
|
*/
|
|
19
|
-
setNameMapping(serverName: string,
|
|
19
|
+
setNameMapping(serverName: string, compositeKey: string): void;
|
|
20
20
|
/**
|
|
21
|
-
* Removes the name-to-
|
|
21
|
+
* Removes the name-to-composite-key mapping for a server.
|
|
22
22
|
*
|
|
23
23
|
* @param serverName - The server name to remove
|
|
24
24
|
*/
|
|
25
25
|
removeNameMapping(serverName: string): void;
|
|
26
26
|
/**
|
|
27
|
-
* Removes name mapping by
|
|
27
|
+
* Removes name mapping by composite key.
|
|
28
28
|
*
|
|
29
|
-
* @param
|
|
29
|
+
* @param compositeKey - The composite key to remove
|
|
30
30
|
*/
|
|
31
|
-
removeNameMappingById(
|
|
31
|
+
removeNameMappingById(compositeKey: string): void;
|
|
32
32
|
/**
|
|
33
|
-
* Gets the
|
|
33
|
+
* Gets the composite key for a given server name.
|
|
34
34
|
*
|
|
35
35
|
* @param name - The server name
|
|
36
|
-
* @returns The
|
|
36
|
+
* @returns The composite key or undefined if not found
|
|
37
37
|
*/
|
|
38
|
-
|
|
38
|
+
getCompositeKeyByName(name: string): string | undefined;
|
|
39
39
|
/**
|
|
40
|
-
* Gets the server name for a given
|
|
40
|
+
* Gets the server name for a given composite key.
|
|
41
41
|
*
|
|
42
|
-
* @param
|
|
42
|
+
* @param compositeKey - The composite key
|
|
43
43
|
* @returns The server name or 'unknown' if not found
|
|
44
44
|
*/
|
|
45
|
-
getServerNameById(
|
|
45
|
+
getServerNameById(compositeKey: string): string;
|
|
46
46
|
/**
|
|
47
47
|
* Sets tools for a specific server instance and updates both caches.
|
|
48
48
|
*
|
|
49
|
-
* @param
|
|
49
|
+
* @param serverName - The server name
|
|
50
|
+
* @param serverIndex - The instance index
|
|
50
51
|
* @param tools - The tools to cache
|
|
51
|
-
* @param serverName - Optional server name for name-level cache update
|
|
52
52
|
*/
|
|
53
|
-
setTools(
|
|
53
|
+
setTools(serverName: string, serverIndex: number, tools: Tool[]): void;
|
|
54
54
|
/**
|
|
55
55
|
* Gets tools for a specific server instance.
|
|
56
56
|
*
|
|
57
|
-
* @param
|
|
57
|
+
* @param serverName - The server name
|
|
58
|
+
* @param serverIndex - The instance index
|
|
58
59
|
* @returns Array of tools, empty if none
|
|
59
60
|
*/
|
|
60
|
-
getTools(
|
|
61
|
+
getTools(serverName: string, serverIndex: number): Tool[];
|
|
61
62
|
/**
|
|
62
63
|
* Gets tools by server name from the server name-level cache.
|
|
63
64
|
*
|
|
@@ -88,23 +89,24 @@ export declare class ToolCache {
|
|
|
88
89
|
/**
|
|
89
90
|
* Gets all tool cache entries.
|
|
90
91
|
*
|
|
91
|
-
* @returns Array of [
|
|
92
|
+
* @returns Array of [compositeKey, tools] tuples
|
|
92
93
|
*/
|
|
93
94
|
getToolCacheEntries(): [string, Tool[]][];
|
|
94
95
|
/**
|
|
95
96
|
* Returns an iterator over the tool cache entries for backward compatibility.
|
|
96
97
|
* This mimics the Map.entries() method signature.
|
|
97
98
|
*
|
|
98
|
-
* @returns Iterator of [
|
|
99
|
+
* @returns Iterator of [compositeKey, tools] tuples
|
|
99
100
|
* @deprecated Use getToolCacheEntries() instead
|
|
100
101
|
*/
|
|
101
102
|
entries(): IterableIterator<[string, Tool[]]>;
|
|
102
103
|
/**
|
|
103
104
|
* Clears tools for a specific server and updates both caches.
|
|
104
105
|
*
|
|
105
|
-
* @param
|
|
106
|
+
* @param serverName - The server name
|
|
107
|
+
* @param serverIndex - The instance index
|
|
106
108
|
*/
|
|
107
|
-
clearTools(
|
|
109
|
+
clearTools(serverName: string, serverIndex: number): void;
|
|
108
110
|
/**
|
|
109
111
|
* Updates the server name-level cache for a specific server.
|
|
110
112
|
* This aggregates tools from all instances of the same server name.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-cache.d.ts","sourceRoot":"","sources":["../../../../../src/services/connection/tool-cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-cache.d.ts","sourceRoot":"","sources":["../../../../../src/services/connection/tool-cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAGzD;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,qBAAqB,CAAkC;IAE/D;;;;;OAKG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAI9D;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI3C;;;;OAIG;IACH,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IASjD;;;;;OAKG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvD;;;;;OAKG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAS/C;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAWtE;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE;IAWzD;;;;;OAKG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE;IAIhD;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAK/D;;;;OAIG;IACH,WAAW,IAAI,IAAI,EAAE;IAQrB;;;;OAIG;IACH,uBAAuB,IAAI,IAAI,EAAE;IAQjC;;;;OAIG;IACH,mBAAmB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IAIzC;;;;;;OAMG;IACH,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAI7C;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAWzD;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;;;OAIG;IACH,IAAI,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAE3C;CACF"}
|
|
@@ -1,63 +1,64 @@
|
|
|
1
1
|
import { logger, LOG_MODULES } from '../../utils/logger.js';
|
|
2
|
+
import { getCompositeKey } from '../../utils/composite-key.js';
|
|
2
3
|
/**
|
|
3
|
-
* Manages tool caching for MCP connections at both
|
|
4
|
+
* Manages tool caching for MCP connections at both composite key and server name levels.
|
|
4
5
|
*
|
|
5
|
-
* This class encapsulates all tool cache operations, providing both
|
|
6
|
+
* This class encapsulates all tool cache operations, providing both composite key-level
|
|
6
7
|
* and server name-level caching for efficient tool lookup while maintaining data
|
|
7
8
|
* consistency across multiple instances of the same server.
|
|
8
9
|
*/
|
|
9
10
|
export class ToolCache {
|
|
10
11
|
toolCache = new Map();
|
|
11
12
|
serverNameToolCache = new Map();
|
|
12
|
-
|
|
13
|
+
nameToCompositeKeyMap = new Map();
|
|
13
14
|
/**
|
|
14
|
-
* Sets the name-to-
|
|
15
|
+
* Sets the name-to-composite-key mapping for server name resolution.
|
|
15
16
|
*
|
|
16
17
|
* @param serverName - The server name
|
|
17
|
-
* @param
|
|
18
|
+
* @param compositeKey - The corresponding composite key
|
|
18
19
|
*/
|
|
19
|
-
setNameMapping(serverName,
|
|
20
|
-
this.
|
|
20
|
+
setNameMapping(serverName, compositeKey) {
|
|
21
|
+
this.nameToCompositeKeyMap.set(serverName, compositeKey);
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
|
-
* Removes the name-to-
|
|
24
|
+
* Removes the name-to-composite-key mapping for a server.
|
|
24
25
|
*
|
|
25
26
|
* @param serverName - The server name to remove
|
|
26
27
|
*/
|
|
27
28
|
removeNameMapping(serverName) {
|
|
28
|
-
this.
|
|
29
|
+
this.nameToCompositeKeyMap.delete(serverName);
|
|
29
30
|
}
|
|
30
31
|
/**
|
|
31
|
-
* Removes name mapping by
|
|
32
|
+
* Removes name mapping by composite key.
|
|
32
33
|
*
|
|
33
|
-
* @param
|
|
34
|
+
* @param compositeKey - The composite key to remove
|
|
34
35
|
*/
|
|
35
|
-
removeNameMappingById(
|
|
36
|
-
for (const [name,
|
|
37
|
-
if (
|
|
38
|
-
this.
|
|
36
|
+
removeNameMappingById(compositeKey) {
|
|
37
|
+
for (const [name, key] of this.nameToCompositeKeyMap.entries()) {
|
|
38
|
+
if (key === compositeKey) {
|
|
39
|
+
this.nameToCompositeKeyMap.delete(name);
|
|
39
40
|
break;
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
|
-
* Gets the
|
|
45
|
+
* Gets the composite key for a given server name.
|
|
45
46
|
*
|
|
46
47
|
* @param name - The server name
|
|
47
|
-
* @returns The
|
|
48
|
+
* @returns The composite key or undefined if not found
|
|
48
49
|
*/
|
|
49
|
-
|
|
50
|
-
return this.
|
|
50
|
+
getCompositeKeyByName(name) {
|
|
51
|
+
return this.nameToCompositeKeyMap.get(name);
|
|
51
52
|
}
|
|
52
53
|
/**
|
|
53
|
-
* Gets the server name for a given
|
|
54
|
+
* Gets the server name for a given composite key.
|
|
54
55
|
*
|
|
55
|
-
* @param
|
|
56
|
+
* @param compositeKey - The composite key
|
|
56
57
|
* @returns The server name or 'unknown' if not found
|
|
57
58
|
*/
|
|
58
|
-
getServerNameById(
|
|
59
|
-
for (const [name,
|
|
60
|
-
if (
|
|
59
|
+
getServerNameById(compositeKey) {
|
|
60
|
+
for (const [name, key] of this.nameToCompositeKeyMap.entries()) {
|
|
61
|
+
if (key === compositeKey) {
|
|
61
62
|
return name;
|
|
62
63
|
}
|
|
63
64
|
}
|
|
@@ -66,33 +67,28 @@ export class ToolCache {
|
|
|
66
67
|
/**
|
|
67
68
|
* Sets tools for a specific server instance and updates both caches.
|
|
68
69
|
*
|
|
69
|
-
* @param
|
|
70
|
+
* @param serverName - The server name
|
|
71
|
+
* @param serverIndex - The instance index
|
|
70
72
|
* @param tools - The tools to cache
|
|
71
|
-
* @param serverName - Optional server name for name-level cache update
|
|
72
73
|
*/
|
|
73
|
-
setTools(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
const resolvedName = this.getServerNameById(serverId);
|
|
80
|
-
if (resolvedName !== 'unknown') {
|
|
81
|
-
this.updateServerNameCache(resolvedName);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
logger.debug(`ToolCache: Set ${tools.length} tools for server [${serverId}]`, LOG_MODULES.CONNECTION_MANAGER);
|
|
74
|
+
setTools(serverName, serverIndex, tools) {
|
|
75
|
+
const compositeKey = getCompositeKey(serverName, serverIndex);
|
|
76
|
+
this.toolCache.set(compositeKey, tools);
|
|
77
|
+
this.updateServerNameCache(serverName);
|
|
78
|
+
logger.debug(`ToolCache: Set ${tools.length} tools for server [${compositeKey}]`, LOG_MODULES.CONNECTION_MANAGER);
|
|
85
79
|
}
|
|
86
80
|
/**
|
|
87
81
|
* Gets tools for a specific server instance.
|
|
88
82
|
*
|
|
89
|
-
* @param
|
|
83
|
+
* @param serverName - The server name
|
|
84
|
+
* @param serverIndex - The instance index
|
|
90
85
|
* @returns Array of tools, empty if none
|
|
91
86
|
*/
|
|
92
|
-
getTools(
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
|
|
87
|
+
getTools(serverName, serverIndex) {
|
|
88
|
+
const compositeKey = getCompositeKey(serverName, serverIndex);
|
|
89
|
+
const tools = this.toolCache.get(compositeKey) || [];
|
|
90
|
+
const fromCache = this.toolCache.has(compositeKey);
|
|
91
|
+
logger.debug(`ToolCache: getTools for [${compositeKey}]: returned ${tools.length} tools (${fromCache ? 'from cache' : 'no cache'})`, LOG_MODULES.CONNECTION_MANAGER);
|
|
96
92
|
return tools;
|
|
97
93
|
}
|
|
98
94
|
/**
|
|
@@ -142,7 +138,7 @@ export class ToolCache {
|
|
|
142
138
|
/**
|
|
143
139
|
* Gets all tool cache entries.
|
|
144
140
|
*
|
|
145
|
-
* @returns Array of [
|
|
141
|
+
* @returns Array of [compositeKey, tools] tuples
|
|
146
142
|
*/
|
|
147
143
|
getToolCacheEntries() {
|
|
148
144
|
return Array.from(this.toolCache.entries());
|
|
@@ -151,7 +147,7 @@ export class ToolCache {
|
|
|
151
147
|
* Returns an iterator over the tool cache entries for backward compatibility.
|
|
152
148
|
* This mimics the Map.entries() method signature.
|
|
153
149
|
*
|
|
154
|
-
* @returns Iterator of [
|
|
150
|
+
* @returns Iterator of [compositeKey, tools] tuples
|
|
155
151
|
* @deprecated Use getToolCacheEntries() instead
|
|
156
152
|
*/
|
|
157
153
|
entries() {
|
|
@@ -160,15 +156,14 @@ export class ToolCache {
|
|
|
160
156
|
/**
|
|
161
157
|
* Clears tools for a specific server and updates both caches.
|
|
162
158
|
*
|
|
163
|
-
* @param
|
|
159
|
+
* @param serverName - The server name
|
|
160
|
+
* @param serverIndex - The instance index
|
|
164
161
|
*/
|
|
165
|
-
clearTools(
|
|
166
|
-
const
|
|
167
|
-
this.toolCache.delete(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
logger.debug(`ToolCache: Cleared tools for server [${serverId}]`, LOG_MODULES.CONNECTION_MANAGER);
|
|
162
|
+
clearTools(serverName, serverIndex) {
|
|
163
|
+
const compositeKey = getCompositeKey(serverName, serverIndex);
|
|
164
|
+
this.toolCache.delete(compositeKey);
|
|
165
|
+
this.updateServerNameCache(serverName);
|
|
166
|
+
logger.debug(`ToolCache: Cleared tools for server [${compositeKey}]`, LOG_MODULES.CONNECTION_MANAGER);
|
|
172
167
|
}
|
|
173
168
|
/**
|
|
174
169
|
* Updates the server name-level cache for a specific server.
|
|
@@ -178,8 +173,8 @@ export class ToolCache {
|
|
|
178
173
|
*/
|
|
179
174
|
updateServerNameCache(serverName) {
|
|
180
175
|
const allToolsForServer = [];
|
|
181
|
-
for (const [
|
|
182
|
-
const instanceServerName = this.getServerNameById(
|
|
176
|
+
for (const [compositeKey, cachedTools] of this.toolCache.entries()) {
|
|
177
|
+
const instanceServerName = this.getServerNameById(compositeKey);
|
|
183
178
|
if (instanceServerName === serverName) {
|
|
184
179
|
allToolsForServer.push(...cachedTools);
|
|
185
180
|
}
|
|
@@ -21,7 +21,9 @@ import type { ToolMapEntry, GatewayTool } from './types.js';
|
|
|
21
21
|
export declare class GatewayService {
|
|
22
22
|
private server;
|
|
23
23
|
private transport;
|
|
24
|
+
private readonly appVersion;
|
|
24
25
|
constructor();
|
|
26
|
+
private createServerWithHandlers;
|
|
25
27
|
private registerHandlers;
|
|
26
28
|
/**
|
|
27
29
|
* Generates a unified list of gateway tools with proper naming and collision resolution.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/gateway/gateway.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"gateway.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/gateway/gateway.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAcpE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;;IAOpC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,gBAAgB;IAUxB;;;;;OAKG;IACI,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;IAIvF;;;;;OAKG;IACI,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAI5C;;;;;OAKG;IACI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM;IAIpD;;;;OAIG;IACI,sBAAsB,IAAI,SAAS;IAI1C;;;;OAIG;IACU,KAAK;CAKnB;AAED,eAAO,MAAM,OAAO,gBAAuB,CAAC"}
|
|
@@ -19,31 +19,37 @@
|
|
|
19
19
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
20
20
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
21
21
|
import { logger } from '../../utils/index.js';
|
|
22
|
+
import { LOG_MODULES } from '../../utils/logger/log-modules.js';
|
|
22
23
|
import { MCP_HUB_LITE_SERVER } from '../../models/system-tools.constants.js';
|
|
23
|
-
import { registerInitializeHandlers,
|
|
24
|
+
import { registerInitializeHandlers, registerResourcesHandlers, registerSystemToolsHandlers, registerCallToolHandler } from './request-handlers/index.js';
|
|
25
|
+
import { getAppVersion } from '../../utils/version.js';
|
|
24
26
|
import { generateGatewayToolsList } from './tool-list-generator.js';
|
|
25
27
|
import { formatToolArgs, formatToolResponse } from './log-formatter.js';
|
|
26
28
|
export class GatewayService {
|
|
27
29
|
server;
|
|
28
30
|
transport = null;
|
|
31
|
+
appVersion;
|
|
29
32
|
constructor() {
|
|
30
|
-
this.
|
|
33
|
+
this.appVersion = getAppVersion();
|
|
34
|
+
this.server = this.createServerWithHandlers();
|
|
35
|
+
}
|
|
36
|
+
createServerWithHandlers() {
|
|
37
|
+
const server = new McpServer({
|
|
31
38
|
name: MCP_HUB_LITE_SERVER,
|
|
32
|
-
version:
|
|
39
|
+
version: this.appVersion
|
|
33
40
|
}, {
|
|
34
41
|
capabilities: {
|
|
35
42
|
tools: {},
|
|
36
|
-
resources: {}
|
|
43
|
+
resources: {}
|
|
37
44
|
}
|
|
38
45
|
});
|
|
39
|
-
|
|
40
|
-
|
|
46
|
+
this.registerHandlers(server);
|
|
47
|
+
return server;
|
|
41
48
|
}
|
|
42
49
|
registerHandlers(server) {
|
|
43
50
|
// Local toolMap for this connection
|
|
44
51
|
const toolMap = new Map();
|
|
45
52
|
registerInitializeHandlers(server);
|
|
46
|
-
registerToolsHandlers(server);
|
|
47
53
|
registerResourcesHandlers(server);
|
|
48
54
|
registerSystemToolsHandlers(server);
|
|
49
55
|
registerCallToolHandler(server, toolMap);
|
|
@@ -81,17 +87,7 @@ export class GatewayService {
|
|
|
81
87
|
* @returns {McpServer} New MCP server instance with all handlers registered
|
|
82
88
|
*/
|
|
83
89
|
createConnectionServer() {
|
|
84
|
-
|
|
85
|
-
name: MCP_HUB_LITE_SERVER,
|
|
86
|
-
version: '1.0.0'
|
|
87
|
-
}, {
|
|
88
|
-
capabilities: {
|
|
89
|
-
tools: {},
|
|
90
|
-
resources: {} // Add resource capability support
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
this.registerHandlers(server);
|
|
94
|
-
return server;
|
|
90
|
+
return this.createServerWithHandlers();
|
|
95
91
|
}
|
|
96
92
|
/**
|
|
97
93
|
* Starts the MCP gateway service on stdio transport.
|
|
@@ -101,7 +97,7 @@ export class GatewayService {
|
|
|
101
97
|
async start() {
|
|
102
98
|
this.transport = new StdioServerTransport();
|
|
103
99
|
await this.server.connect(this.transport);
|
|
104
|
-
logger.info('MCP Gateway started on stdio');
|
|
100
|
+
logger.info('MCP Gateway started on stdio', LOG_MODULES.GATEWAY_SERVICE);
|
|
105
101
|
}
|
|
106
102
|
}
|
|
107
103
|
export const gateway = new GatewayService();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global stateless MCP transport and server.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a shared, stateless MCP transport and server instance
|
|
5
|
+
* that can be used across all requests without session isolation.
|
|
6
|
+
*/
|
|
7
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
8
|
+
export declare const globalTransport: StreamableHTTPServerTransport;
|
|
9
|
+
export declare const globalServer: import("@modelcontextprotocol/sdk/server/mcp.js").McpServer;
|
|
10
|
+
//# sourceMappingURL=global-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-transport.d.ts","sourceRoot":"","sources":["../../../../../src/services/gateway/global-transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAwCnG,eAAO,MAAM,eAAe,+BAAY,CAAC;AACzC,eAAO,MAAM,YAAY,6DAAS,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global stateless MCP transport and server.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a shared, stateless MCP transport and server instance
|
|
5
|
+
* that can be used across all requests without session isolation.
|
|
6
|
+
*/
|
|
7
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
8
|
+
import { gateway } from './gateway.service.js';
|
|
9
|
+
import { logger, LOG_MODULES } from '../../utils/logger/index.js';
|
|
10
|
+
import { getMcpCommDebugSetting } from '../../utils/json-utils.js';
|
|
11
|
+
import { formatMcpMessageForLogging, logNotificationMessage } from '../../utils/logger/log-output.js';
|
|
12
|
+
// Create shared transport in STATELESS MODE - NO PARAMETERS NEEDED!
|
|
13
|
+
const transport = new StreamableHTTPServerTransport();
|
|
14
|
+
// Create shared server
|
|
15
|
+
const server = gateway.createConnectionServer();
|
|
16
|
+
// Set up message logging (use empty string for sessionId in stateless mode)
|
|
17
|
+
transport.onmessage = (message) => {
|
|
18
|
+
if (getMcpCommDebugSetting()) {
|
|
19
|
+
const logMessage = formatMcpMessageForLogging(message);
|
|
20
|
+
logger.debug(`MCP message received: ${logMessage}`, LOG_MODULES.COMMUNICATION);
|
|
21
|
+
}
|
|
22
|
+
logNotificationMessage(message, ''); // Empty sessionId for stateless
|
|
23
|
+
};
|
|
24
|
+
// Wrap send method for debug logging
|
|
25
|
+
if (getMcpCommDebugSetting()) {
|
|
26
|
+
const originalSend = transport.send;
|
|
27
|
+
transport.send = async (message, options) => {
|
|
28
|
+
try {
|
|
29
|
+
const logMessage = formatMcpMessageForLogging(message);
|
|
30
|
+
logger.debug(`MCP message sent: ${logMessage}`, LOG_MODULES.COMMUNICATION);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
logger.debug(`MCP message sent: [Error formatting response]`, LOG_MODULES.COMMUNICATION);
|
|
34
|
+
}
|
|
35
|
+
return await originalSend.call(transport, message, options);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// Connect server to transport
|
|
39
|
+
await server.connect(transport);
|
|
40
|
+
logger.info('Global MCP transport initialized (stateless mode)', LOG_MODULES.GATEWAY);
|
|
41
|
+
export const globalTransport = transport;
|
|
42
|
+
export const globalServer = server;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-tool-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/call-tool-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"call-tool-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/call-tool-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgFhD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACjC,IAAI,CA8FN"}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { logger, LOG_MODULES } from '../../../utils/index.js';
|
|
6
6
|
import { stringifyForLogging } from '../../../utils/json-utils.js';
|
|
7
|
-
import { getSessionCwd } from '../../../utils/request-context.js';
|
|
8
7
|
import { mcpConnectionManager } from '../../mcp-connection-manager.js';
|
|
9
8
|
import { SystemToolHandler } from '../../system-tool-handler.js';
|
|
10
9
|
import { ErrorHandler } from '../../../utils/error-handler.js';
|
|
@@ -12,6 +11,64 @@ import { ToolArgsParser } from '../../../utils/tool-args-parser.js';
|
|
|
12
11
|
import { SYSTEM_TOOL_NAMES, MCP_HUB_LITE_SERVER } from '../../../models/system-tools.constants.js';
|
|
13
12
|
import { formatToolArgs, formatToolResponse } from '../log-formatter.js';
|
|
14
13
|
import { generateGatewayToolsList } from '../tool-list-generator.js';
|
|
14
|
+
/**
|
|
15
|
+
* Type guard to check if a result is a valid CallToolResult.
|
|
16
|
+
*
|
|
17
|
+
* @param result - The result to check
|
|
18
|
+
* @returns True if result has the expected CallToolResult structure
|
|
19
|
+
*/
|
|
20
|
+
function isCallToolResult(result) {
|
|
21
|
+
return (!!result && typeof result === 'object' && 'content' in result && Array.isArray(result.content));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Executes a system tool call via the SystemToolHandler.
|
|
25
|
+
*
|
|
26
|
+
* @param toolName - Name of the system tool to call
|
|
27
|
+
* @param toolArgs - Arguments to pass to the tool
|
|
28
|
+
* @returns CallToolResult with the tool execution result
|
|
29
|
+
*/
|
|
30
|
+
async function executeSystemToolCall(toolName, toolArgs) {
|
|
31
|
+
try {
|
|
32
|
+
const result = await SystemToolHandler.handleSystemToolCall(toolName, toolArgs);
|
|
33
|
+
if (isCallToolResult(result)) {
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
content: [
|
|
38
|
+
{
|
|
39
|
+
type: 'text',
|
|
40
|
+
text: stringifyForLogging(result)
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
ErrorHandler.handleSystemToolError(toolName, error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parses a tool name to check if it refers to a system tool.
|
|
51
|
+
* Handles both direct system tool names (e.g., "list_servers") and
|
|
52
|
+
* prefixed names (e.g., "mcp__mcp-hub-lite__list_servers").
|
|
53
|
+
*
|
|
54
|
+
* @param toolName - The tool name to parse
|
|
55
|
+
* @returns The system tool name if it's a system tool, null otherwise
|
|
56
|
+
*/
|
|
57
|
+
function getSystemToolName(toolName) {
|
|
58
|
+
const parsedTool = ToolArgsParser.parsePrefixedToolName(toolName);
|
|
59
|
+
if (parsedTool) {
|
|
60
|
+
logger.debug(`Parsed prefixed tool name: "${toolName}" → server="${parsedTool.serverName}", tool="${parsedTool.toolName}"`, LOG_MODULES.GATEWAY);
|
|
61
|
+
if (parsedTool.serverName === MCP_HUB_LITE_SERVER &&
|
|
62
|
+
SYSTEM_TOOL_NAMES.includes(parsedTool.toolName)) {
|
|
63
|
+
logger.info(`System tool called via prefixed name: ${parsedTool.toolName}`, LOG_MODULES.GATEWAY);
|
|
64
|
+
return parsedTool.toolName;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (SYSTEM_TOOL_NAMES.includes(toolName)) {
|
|
68
|
+
return toolName;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
15
72
|
/**
|
|
16
73
|
* Register call tool handler on the MCP server.
|
|
17
74
|
*
|
|
@@ -30,82 +87,27 @@ export function registerCallToolHandler(server, toolMap) {
|
|
|
30
87
|
server.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
31
88
|
const toolName = request.params.name;
|
|
32
89
|
const toolArgs = request.params.arguments || {};
|
|
33
|
-
|
|
34
|
-
// This handles Claude Code style tool names with server prefix
|
|
35
|
-
const parsedTool = ToolArgsParser.parsePrefixedToolName(toolName);
|
|
36
|
-
if (parsedTool) {
|
|
37
|
-
logger.debug(`Parsed prefixed tool name: "${toolName}" → server="${parsedTool.serverName}", tool="${parsedTool.toolName}"`, LOG_MODULES.GATEWAY);
|
|
38
|
-
// Check if it's a system tool call
|
|
39
|
-
if (parsedTool.serverName === MCP_HUB_LITE_SERVER &&
|
|
40
|
-
SYSTEM_TOOL_NAMES.includes(parsedTool.toolName)) {
|
|
41
|
-
logger.info(`System tool called via prefixed name: ${parsedTool.toolName}`, LOG_MODULES.GATEWAY);
|
|
42
|
-
try {
|
|
43
|
-
const result = await SystemToolHandler.handleSystemToolCall(parsedTool.toolName, toolArgs);
|
|
44
|
-
if (result &&
|
|
45
|
-
typeof result === 'object' &&
|
|
46
|
-
'content' in result &&
|
|
47
|
-
Array.isArray(result.content)) {
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
content: [
|
|
52
|
-
{
|
|
53
|
-
type: 'text',
|
|
54
|
-
text: stringifyForLogging(result)
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
ErrorHandler.handleSystemToolError(parsedTool.toolName, error);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
90
|
+
const systemToolName = getSystemToolName(toolName);
|
|
64
91
|
// Log incoming tool request with full context
|
|
65
92
|
logger.info(`Tool call REQUEST received: toolName=${toolName}, args=${formatToolArgs(toolArgs)}`, LOG_MODULES.GATEWAY);
|
|
66
93
|
logger.debug(`Tool context: toolMap size=${toolMap.size}, available tools=${Array.from(toolMap.keys()).slice(0, 10).join(', ')}${toolMap.size > 10 ? '...' : ''}`, LOG_MODULES.GATEWAY);
|
|
67
94
|
// Handle system tools
|
|
68
|
-
if (
|
|
69
|
-
logger.debug(`System tool called: ${
|
|
70
|
-
|
|
71
|
-
const result = await SystemToolHandler.handleSystemToolCall(toolName, toolArgs);
|
|
72
|
-
if (result &&
|
|
73
|
-
typeof result === 'object' &&
|
|
74
|
-
'content' in result &&
|
|
75
|
-
Array.isArray(result.content)) {
|
|
76
|
-
return result;
|
|
77
|
-
}
|
|
78
|
-
return {
|
|
79
|
-
content: [
|
|
80
|
-
{
|
|
81
|
-
type: 'text',
|
|
82
|
-
text: stringifyForLogging(result)
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
ErrorHandler.handleSystemToolError(toolName, error);
|
|
89
|
-
}
|
|
95
|
+
if (systemToolName) {
|
|
96
|
+
logger.debug(`System tool called: ${systemToolName}, args=${formatToolArgs(toolArgs)}`, LOG_MODULES.GATEWAY);
|
|
97
|
+
return await executeSystemToolCall(systemToolName, toolArgs);
|
|
90
98
|
}
|
|
91
99
|
const target = toolMap.get(toolName);
|
|
92
|
-
logger.debug(`Tool lookup SUCCESS: toolName=${toolName} ->
|
|
100
|
+
logger.debug(`Tool lookup SUCCESS: toolName=${toolName} -> serverName=${target?.serverName}, serverIndex=${target?.serverIndex}, realToolName=${target?.realToolName}`, LOG_MODULES.GATEWAY);
|
|
93
101
|
if (!target) {
|
|
94
102
|
logger.error(`Tool NOT FOUND: toolName=${toolName}, available tools=${Array.from(toolMap.keys()).join(', ')}`, LOG_MODULES.GATEWAY);
|
|
95
103
|
throw new McpError(-32801, `Tool ${toolName} not found`);
|
|
96
104
|
}
|
|
97
105
|
const startTime = Date.now();
|
|
98
106
|
try {
|
|
99
|
-
|
|
100
|
-
const
|
|
101
|
-
if (cwd && !toolArgs.cwd) {
|
|
102
|
-
toolArgs.cwd = cwd;
|
|
103
|
-
logger.debug(`Injected CWD into tool call ${toolName}: ${cwd}`, LOG_MODULES.dynamic(toolName));
|
|
104
|
-
}
|
|
105
|
-
logger.debug(`Tool call EXECUTING: serverId=${target.serverId}, realToolName=${target.realToolName}, args=${formatToolArgs(toolArgs)}`, LOG_MODULES.GATEWAY);
|
|
106
|
-
const result = await mcpConnectionManager.callTool(target.serverId, target.realToolName, toolArgs);
|
|
107
|
+
logger.debug(`Tool call EXECUTING: serverName=${target.serverName}, serverIndex=${target.serverIndex}, realToolName=${target.realToolName}, args=${formatToolArgs(toolArgs)}`, LOG_MODULES.GATEWAY);
|
|
108
|
+
const result = await mcpConnectionManager.callTool(target.serverName, target.serverIndex, target.realToolName, toolArgs);
|
|
107
109
|
const duration = Date.now() - startTime;
|
|
108
|
-
logger.info(`Tool call SUCCESS:
|
|
110
|
+
logger.info(`Tool call SUCCESS: serverName=${target.serverName}, serverIndex=${target.serverIndex}, realToolName=${target.realToolName}, duration=${duration}ms, response=${formatToolResponse(result)}`, LOG_MODULES.GATEWAY);
|
|
109
111
|
// Wrap the result in a valid CallToolResult structure
|
|
110
112
|
if (typeof result === 'object' && result !== null) {
|
|
111
113
|
return {
|
|
@@ -125,7 +127,7 @@ export function registerCallToolHandler(server, toolMap) {
|
|
|
125
127
|
}
|
|
126
128
|
}
|
|
127
129
|
catch (error) {
|
|
128
|
-
ErrorHandler.handleToolCallError(target.
|
|
130
|
+
ErrorHandler.handleToolCallError(`${target.serverName}-${target.serverIndex}`, target.realToolName, error);
|
|
129
131
|
}
|
|
130
132
|
});
|
|
131
133
|
}
|
|
@@ -2,8 +2,8 @@
|
|
|
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';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|