@loop_ouroboros/mcp-hub-lite 1.0.2 → 1.1.1
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-BBwvy1oj.js} +1 -1
- package/dist/client/assets/ResourceDetailView-CZ2aB73w.js +1 -0
- package/dist/client/assets/ResourceDetailView-DUJZbegl.css +1 -0
- package/dist/client/assets/ResourcesView-CN1NlhWs.js +1 -0
- package/dist/client/assets/ResourcesView-Cc8RHtia.css +1 -0
- package/dist/client/assets/ServerDashboard-BfLeFDGw.css +1 -0
- package/dist/client/assets/ServerDashboard-k652Vw4Z.js +1 -0
- package/dist/client/assets/ServerDetail-BLQ-a4cO.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-BHrsFD5i.js +36 -0
- package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHhwEuGe.js +1 -0
- package/dist/client/assets/SettingsView-CUOFNXrz.js +1 -0
- package/dist/client/assets/SettingsView-GkBOKL0V.css +1 -0
- package/dist/client/assets/ToolCallDialog-BfPjLxfV.js +1 -0
- package/dist/client/assets/ToolsView-BxgXvPC3.css +1 -0
- package/dist/client/assets/ToolsView-CyuhYAE2.js +1 -0
- package/dist/client/assets/{_baseClone-5q1b0P3O.js → _baseClone-DO5qfalW.js} +1 -1
- package/dist/client/assets/el-form-item-B4LbJ6OO.css +1 -0
- package/dist/client/assets/el-form-item-CcGsD2K_.js +12 -0
- package/dist/client/assets/el-input-BH4BZKnG.css +1 -0
- package/dist/client/assets/el-input-tYgeiaCT.js +1 -0
- package/dist/client/assets/{el-loading-H85n3BUC.js → el-loading-Dwl9E_Vr.js} +1 -1
- package/dist/client/assets/{el-select-C0U_l4IZ.css → el-overlay-CBvdpA69.css} +1 -1
- package/dist/client/assets/el-overlay-kqX_BABo.js +1 -0
- package/dist/client/assets/{ResourceDetailView-BdOaL_-o.css → el-radio-group-B0bauIRR.css} +1 -1
- package/dist/client/assets/el-radio-group-D8aWBVOT.js +1 -0
- package/dist/client/assets/el-skeleton-item-BLY1jEuR.css +1 -0
- package/dist/client/assets/el-skeleton-item-BRwIFspE.js +1 -0
- package/dist/client/assets/el-switch-BBrS-_6y.css +1 -0
- package/dist/client/assets/el-switch-BF8c-xeU.js +1 -0
- package/dist/client/assets/el-tab-pane-C4Ep94cd.js +1 -0
- package/dist/client/assets/el-table-column-BdvRS9Y2.css +1 -0
- package/dist/client/assets/el-table-column-Cog6uCh-.js +1 -0
- package/dist/client/assets/index-ByNBhPAR.js +1 -0
- package/dist/client/assets/index-CTB6oe-9.js +2 -0
- package/dist/client/assets/{index-BsDWtoIl.css → index-DpH6ZSbs.css} +1 -1
- package/dist/client/assets/omit-CUnDT6sS.js +1 -0
- package/dist/client/assets/{raf-DY5mgbuB.js → raf-CmzeRPMd.js} +1 -1
- package/dist/client/assets/{vue-vendor-6ny5zj9i.js → vue-vendor-CbgVSHIh.js} +3 -3
- 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/debug-response-wrapper.js +2 -2
- 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 +32 -49
- 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/server.d.ts +57 -0
- package/dist/server/src/cli/commands/server.d.ts.map +1 -0
- package/dist/server/src/cli/commands/server.js +169 -0
- 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 +53 -23
- package/dist/server/src/services/gateway/global-transport.d.ts +19 -0
- package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -0
- package/dist/server/src/services/gateway/global-transport.js +66 -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 +20 -80
- 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/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/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/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/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/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 +3 -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/ToolsView-E3Ps9c7i.css +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/omit-DPsOVNIJ.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;IAqBhC,OAAO,CAAC,gBAAgB;IAyCxB;;;;;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,34 +19,74 @@
|
|
|
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
|
+
logger.debug('Creating new MCP server with handlers', LOG_MODULES.GATEWAY_SERVICE);
|
|
38
|
+
const server = new McpServer({
|
|
31
39
|
name: MCP_HUB_LITE_SERVER,
|
|
32
|
-
version:
|
|
40
|
+
version: this.appVersion
|
|
33
41
|
}, {
|
|
34
42
|
capabilities: {
|
|
35
43
|
tools: {},
|
|
36
|
-
resources: {}
|
|
44
|
+
resources: {}
|
|
37
45
|
}
|
|
38
46
|
});
|
|
39
|
-
|
|
40
|
-
this.registerHandlers(
|
|
47
|
+
logger.debug('MCP server created successfully', LOG_MODULES.GATEWAY_SERVICE);
|
|
48
|
+
this.registerHandlers(server);
|
|
49
|
+
logger.debug('Handlers registered successfully on MCP server', LOG_MODULES.GATEWAY_SERVICE);
|
|
50
|
+
return server;
|
|
41
51
|
}
|
|
42
52
|
registerHandlers(server) {
|
|
53
|
+
logger.debug('Registering handlers on MCP server', LOG_MODULES.GATEWAY_SERVICE);
|
|
43
54
|
// Local toolMap for this connection
|
|
44
55
|
const toolMap = new Map();
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
56
|
+
logger.debug('Created local toolMap for connection', LOG_MODULES.GATEWAY_SERVICE);
|
|
57
|
+
try {
|
|
58
|
+
registerInitializeHandlers(server);
|
|
59
|
+
logger.debug('Initialize handlers registered successfully', LOG_MODULES.GATEWAY_SERVICE);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
logger.error('Failed to register initialize handlers:', error, LOG_MODULES.GATEWAY_SERVICE);
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
registerResourcesHandlers(server);
|
|
67
|
+
logger.debug('Resources handlers registered successfully', LOG_MODULES.GATEWAY_SERVICE);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
logger.error('Failed to register resources handlers:', error, LOG_MODULES.GATEWAY_SERVICE);
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
registerSystemToolsHandlers(server);
|
|
75
|
+
logger.debug('System tools handlers registered successfully', LOG_MODULES.GATEWAY_SERVICE);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
logger.error('Failed to register system tools handlers:', error, LOG_MODULES.GATEWAY_SERVICE);
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
registerCallToolHandler(server, toolMap);
|
|
83
|
+
logger.debug('Call tool handler registered successfully', LOG_MODULES.GATEWAY_SERVICE);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
logger.error('Failed to register call tool handler:', error, LOG_MODULES.GATEWAY_SERVICE);
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
logger.debug('All handlers registered successfully', LOG_MODULES.GATEWAY_SERVICE);
|
|
50
90
|
}
|
|
51
91
|
/**
|
|
52
92
|
* Generates a unified list of gateway tools with proper naming and collision resolution.
|
|
@@ -81,17 +121,7 @@ export class GatewayService {
|
|
|
81
121
|
* @returns {McpServer} New MCP server instance with all handlers registered
|
|
82
122
|
*/
|
|
83
123
|
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;
|
|
124
|
+
return this.createServerWithHandlers();
|
|
95
125
|
}
|
|
96
126
|
/**
|
|
97
127
|
* Starts the MCP gateway service on stdio transport.
|
|
@@ -101,7 +131,7 @@ export class GatewayService {
|
|
|
101
131
|
async start() {
|
|
102
132
|
this.transport = new StdioServerTransport();
|
|
103
133
|
await this.server.connect(this.transport);
|
|
104
|
-
logger.info('MCP Gateway started on stdio');
|
|
134
|
+
logger.info('MCP Gateway started on stdio', LOG_MODULES.GATEWAY_SERVICE);
|
|
105
135
|
}
|
|
106
136
|
}
|
|
107
137
|
export const gateway = new GatewayService();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP transport factory for per-request transport instances.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a factory function to create isolated MCP transport and server instances
|
|
5
|
+
* for each HTTP request, ensuring proper state isolation between concurrent clients.
|
|
6
|
+
*/
|
|
7
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new MCP transport and server instance for a single request session.
|
|
10
|
+
* Each call returns isolated instances that should be cleaned up after the request completes.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Promise<{ transport: StreamableHTTPServerTransport, server: import('@modelcontextprotocol/sdk/server/mcp.js').McpServer }>}
|
|
13
|
+
* Object containing the transport and server instances
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSessionTransport(): Promise<{
|
|
16
|
+
transport: StreamableHTTPServerTransport;
|
|
17
|
+
server: import("@modelcontextprotocol/sdk/server/mcp").McpServer;
|
|
18
|
+
}>;
|
|
19
|
+
//# 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;AAMnG;;;;;;GAMG;AACH,wBAAsB,sBAAsB;;;GA+D3C"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP transport factory for per-request transport instances.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a factory function to create isolated MCP transport and server instances
|
|
5
|
+
* for each HTTP request, ensuring proper state isolation between concurrent clients.
|
|
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 { stringifyForLogging, getMcpCommDebugSetting } from '../../utils/json-utils.js';
|
|
11
|
+
import { formatMcpMessageForLogging, logNotificationMessage } from '../../utils/logger/log-output.js';
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new MCP transport and server instance for a single request session.
|
|
14
|
+
* Each call returns isolated instances that should be cleaned up after the request completes.
|
|
15
|
+
*
|
|
16
|
+
* @returns {Promise<{ transport: StreamableHTTPServerTransport, server: import('@modelcontextprotocol/sdk/server/mcp.js').McpServer }>}
|
|
17
|
+
* Object containing the transport and server instances
|
|
18
|
+
*/
|
|
19
|
+
export async function createSessionTransport() {
|
|
20
|
+
const transport = new StreamableHTTPServerTransport();
|
|
21
|
+
const server = gateway.createConnectionServer();
|
|
22
|
+
// Set up message logging (use empty string for sessionId in per-request mode)
|
|
23
|
+
transport.onmessage = (message) => {
|
|
24
|
+
logger.debug(`Session transport onmessage called with: ${stringifyForLogging(message)}`, LOG_MODULES.GATEWAY);
|
|
25
|
+
try {
|
|
26
|
+
if (getMcpCommDebugSetting()) {
|
|
27
|
+
const logMessage = formatMcpMessageForLogging(message);
|
|
28
|
+
logger.debug(`MCP message received: ${logMessage}`, LOG_MODULES.COMMUNICATION);
|
|
29
|
+
}
|
|
30
|
+
logNotificationMessage(message, ''); // Empty sessionId for per-request
|
|
31
|
+
logger.debug(`Session transport onmessage completed successfully`, LOG_MODULES.GATEWAY);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
35
|
+
logger.error(`Error in session transport onmessage handler: ${errorMessage}`, LOG_MODULES.GATEWAY);
|
|
36
|
+
logger.error(`Message that caused error: ${stringifyForLogging(message)}`, LOG_MODULES.GATEWAY);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
// Wrap send method for debug logging
|
|
40
|
+
if (getMcpCommDebugSetting()) {
|
|
41
|
+
const originalSend = transport.send;
|
|
42
|
+
transport.send = async (message, options) => {
|
|
43
|
+
try {
|
|
44
|
+
const logMessage = formatMcpMessageForLogging(message);
|
|
45
|
+
logger.debug(`MCP message sent: ${logMessage}`, LOG_MODULES.COMMUNICATION);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
logger.debug(`MCP message sent: [Error formatting response]`, LOG_MODULES.COMMUNICATION);
|
|
49
|
+
}
|
|
50
|
+
return await originalSend.call(transport, message, options);
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// Connect server to transport
|
|
54
|
+
logger.debug('About to connect session server to transport', LOG_MODULES.GATEWAY);
|
|
55
|
+
try {
|
|
56
|
+
await server.connect(transport);
|
|
57
|
+
logger.info('MCP session transport initialized (per-request mode)', LOG_MODULES.GATEWAY);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
61
|
+
logger.error(`Failed to connect session server to transport: ${errorMessage}`, LOG_MODULES.GATEWAY);
|
|
62
|
+
logger.error(`Transport connection error details: ${stringifyForLogging(error)}`, LOG_MODULES.GATEWAY);
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
return { transport, server };
|
|
66
|
+
}
|
|
@@ -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"}
|