@loop_ouroboros/mcp-hub-lite 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +228 -0
- package/LICENSE +21 -0
- package/README.md +354 -0
- package/dist/client/assets/HomeView-f901HeKw.js +1 -0
- package/dist/client/assets/ResourceDetailView-BdOaL_-o.css +1 -0
- package/dist/client/assets/ResourceDetailView-Bz66ZjfY.js +1 -0
- package/dist/client/assets/ResourcesView-CjMklkyv.css +1 -0
- package/dist/client/assets/ResourcesView-lI_fItfA.js +1 -0
- package/dist/client/assets/ServerDashboard-7_8Og9JJ.css +1 -0
- package/dist/client/assets/ServerDashboard-Bgx8WVkx.js +2 -0
- package/dist/client/assets/ServerListView-Bws09jNR.css +1 -0
- package/dist/client/assets/ServerListView-CP6Ffkfx.js +30 -0
- package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +1 -0
- package/dist/client/assets/SessionsView-D68qKR4D.js +1 -0
- package/dist/client/assets/SettingsView-BPYfO9BE.js +1 -0
- package/dist/client/assets/ToolCallDialog-Br8FNebN.js +1 -0
- package/dist/client/assets/ToolCallDialog-C7eh7jHE.css +1 -0
- package/dist/client/assets/ToolsView-B6hUiR43.js +1 -0
- package/dist/client/assets/ToolsView-BLnU8cV6.css +1 -0
- package/dist/client/assets/_baseClone-DCmK847M.js +1 -0
- package/dist/client/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
- package/dist/client/assets/el-form-item-BVMLpmVC.css +1 -0
- package/dist/client/assets/el-form-item-DM0q2hmO.js +12 -0
- package/dist/client/assets/el-input-BtI9NECe.js +1 -0
- package/dist/client/assets/el-input-CmuHb8HS.css +1 -0
- package/dist/client/assets/el-loading-CChNmKeI.js +1 -0
- package/dist/client/assets/el-loading-bpKhqqQq.css +1 -0
- package/dist/client/assets/el-overlay-B2ZKM6Up.css +1 -0
- package/dist/client/assets/el-overlay-lZZbPmsX.js +1 -0
- package/dist/client/assets/el-select-BXztu2b5.js +1 -0
- package/dist/client/assets/el-select-C0U_l4IZ.css +1 -0
- package/dist/client/assets/el-tab-pane-CnNoQHsR.css +1 -0
- package/dist/client/assets/el-tab-pane-Dy9ruaEX.js +1 -0
- package/dist/client/assets/el-table-column-98UyVgBH.js +1 -0
- package/dist/client/assets/el-table-column-T_mV9jNw.css +1 -0
- package/dist/client/assets/el-tag-B5lLT51E.js +1 -0
- package/dist/client/assets/el-tag-DjxZVOpb.css +1 -0
- package/dist/client/assets/event-BB_Ol6Sd.js +1 -0
- package/dist/client/assets/index-BgKcmWJr.js +1 -0
- package/dist/client/assets/index-BsDWtoIl.css +1 -0
- package/dist/client/assets/index-BzQXG7no.js +1 -0
- package/dist/client/assets/index-CSTs2jYk.js +2 -0
- package/dist/client/assets/omit-Bx5HJNV_.js +1 -0
- package/dist/client/assets/raf-B9VDMtMF.js +1 -0
- package/dist/client/assets/typescript-Bp3YSIOJ.js +1 -0
- package/dist/client/assets/vnode-B8aJx8u4.js +1 -0
- package/dist/client/assets/vue-vendor-6ny5zj9i.js +3 -0
- package/dist/client/index.html +15 -0
- package/dist/server/shared/index.d.ts +3 -0
- package/dist/server/shared/index.d.ts.map +1 -0
- package/dist/server/shared/index.js +2 -0
- package/dist/server/shared/models/index.d.ts +4 -0
- package/dist/server/shared/models/index.d.ts.map +1 -0
- package/dist/server/shared/models/index.js +3 -0
- package/dist/server/shared/models/resource.model.d.ts +8 -0
- package/dist/server/shared/models/resource.model.d.ts.map +1 -0
- package/dist/server/shared/models/resource.model.js +1 -0
- package/dist/server/shared/models/server.model.d.ts +57 -0
- package/dist/server/shared/models/server.model.d.ts.map +1 -0
- package/dist/server/shared/models/server.model.js +1 -0
- package/dist/server/shared/models/session.model.d.ts +73 -0
- package/dist/server/shared/models/session.model.d.ts.map +1 -0
- package/dist/server/shared/models/session.model.js +70 -0
- package/dist/server/shared/models/tool.model.d.ts +22 -0
- package/dist/server/shared/models/tool.model.d.ts.map +1 -0
- package/dist/server/shared/models/tool.model.js +1 -0
- package/dist/server/shared/types/client.types.d.ts +35 -0
- package/dist/server/shared/types/client.types.d.ts.map +1 -0
- package/dist/server/shared/types/client.types.js +5 -0
- package/dist/server/shared/types/common.types.d.ts +5 -0
- package/dist/server/shared/types/common.types.d.ts.map +1 -0
- package/dist/server/shared/types/common.types.js +2 -0
- package/dist/server/shared/types/index.d.ts +4 -0
- package/dist/server/shared/types/index.d.ts.map +1 -0
- package/dist/server/shared/types/index.js +3 -0
- package/dist/server/shared/types/session.types.d.ts +15 -0
- package/dist/server/shared/types/session.types.d.ts.map +1 -0
- package/dist/server/shared/types/session.types.js +5 -0
- package/dist/server/shared/types/websocket.types.d.ts +177 -0
- package/dist/server/shared/types/websocket.types.d.ts.map +1 -0
- package/dist/server/shared/types/websocket.types.js +25 -0
- package/dist/server/src/api/mcp/debug-response-wrapper.d.ts +13 -0
- package/dist/server/src/api/mcp/debug-response-wrapper.d.ts.map +1 -0
- package/dist/server/src/api/mcp/debug-response-wrapper.js +271 -0
- package/dist/server/src/api/mcp/gateway.d.ts +14 -0
- package/dist/server/src/api/mcp/gateway.d.ts.map +1 -0
- package/dist/server/src/api/mcp/gateway.js +116 -0
- package/dist/server/src/api/mcp/session-context-extractor.d.ts +47 -0
- package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -0
- package/dist/server/src/api/mcp/session-context-extractor.js +127 -0
- package/dist/server/src/api/mcp/sse-stream-manager.d.ts +13 -0
- package/dist/server/src/api/mcp/sse-stream-manager.d.ts.map +1 -0
- package/dist/server/src/api/mcp/sse-stream-manager.js +40 -0
- package/dist/server/src/api/web/clients.d.ts +30 -0
- package/dist/server/src/api/web/clients.d.ts.map +1 -0
- package/dist/server/src/api/web/clients.js +41 -0
- package/dist/server/src/api/web/config.d.ts +21 -0
- package/dist/server/src/api/web/config.d.ts.map +1 -0
- package/dist/server/src/api/web/config.js +119 -0
- package/dist/server/src/api/web/health.d.ts +21 -0
- package/dist/server/src/api/web/health.d.ts.map +1 -0
- package/dist/server/src/api/web/health.js +24 -0
- package/dist/server/src/api/web/hub-tools.d.ts +30 -0
- package/dist/server/src/api/web/hub-tools.d.ts.map +1 -0
- package/dist/server/src/api/web/hub-tools.js +202 -0
- package/dist/server/src/api/web/logs.d.ts +30 -0
- package/dist/server/src/api/web/logs.d.ts.map +1 -0
- package/dist/server/src/api/web/logs.js +141 -0
- package/dist/server/src/api/web/mcp-status.d.ts +29 -0
- package/dist/server/src/api/web/mcp-status.d.ts.map +1 -0
- package/dist/server/src/api/web/mcp-status.js +126 -0
- package/dist/server/src/api/web/resources.d.ts +28 -0
- package/dist/server/src/api/web/resources.d.ts.map +1 -0
- package/dist/server/src/api/web/resources.js +93 -0
- package/dist/server/src/api/web/search.d.ts +26 -0
- package/dist/server/src/api/web/search.d.ts.map +1 -0
- package/dist/server/src/api/web/search.js +62 -0
- package/dist/server/src/api/web/servers.d.ts +33 -0
- package/dist/server/src/api/web/servers.d.ts.map +1 -0
- package/dist/server/src/api/web/servers.js +235 -0
- package/dist/server/src/api/web/sessions.d.ts +29 -0
- package/dist/server/src/api/web/sessions.d.ts.map +1 -0
- package/dist/server/src/api/web/sessions.js +104 -0
- package/dist/server/src/api/ws/events.d.ts +29 -0
- package/dist/server/src/api/ws/events.d.ts.map +1 -0
- package/dist/server/src/api/ws/events.js +44 -0
- package/dist/server/src/api/ws/ws-handler.d.ts +83 -0
- package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -0
- package/dist/server/src/api/ws/ws-handler.js +217 -0
- package/dist/server/src/app.d.ts +24 -0
- package/dist/server/src/app.d.ts.map +1 -0
- package/dist/server/src/app.js +108 -0
- package/dist/server/src/cli/commands/list.d.ts +71 -0
- package/dist/server/src/cli/commands/list.d.ts.map +1 -0
- package/dist/server/src/cli/commands/list.js +97 -0
- package/dist/server/src/cli/commands/restart.d.ts +42 -0
- package/dist/server/src/cli/commands/restart.d.ts.map +1 -0
- package/dist/server/src/cli/commands/restart.js +61 -0
- package/dist/server/src/cli/commands/start.d.ts +43 -0
- package/dist/server/src/cli/commands/start.d.ts.map +1 -0
- package/dist/server/src/cli/commands/start.js +160 -0
- package/dist/server/src/cli/commands/status.d.ts +39 -0
- package/dist/server/src/cli/commands/status.d.ts.map +1 -0
- package/dist/server/src/cli/commands/status.js +164 -0
- package/dist/server/src/cli/commands/stop.d.ts +34 -0
- package/dist/server/src/cli/commands/stop.d.ts.map +1 -0
- package/dist/server/src/cli/commands/stop.js +47 -0
- package/dist/server/src/cli/commands/ui.d.ts +44 -0
- package/dist/server/src/cli/commands/ui.d.ts.map +1 -0
- package/dist/server/src/cli/commands/ui.js +95 -0
- package/dist/server/src/cli/index.d.ts +62 -0
- package/dist/server/src/cli/index.d.ts.map +1 -0
- package/dist/server/src/cli/index.js +88 -0
- package/dist/server/src/cli/parse-args.d.ts +108 -0
- package/dist/server/src/cli/parse-args.d.ts.map +1 -0
- package/dist/server/src/cli/parse-args.js +131 -0
- package/dist/server/src/cli/server.d.ts +171 -0
- package/dist/server/src/cli/server.d.ts.map +1 -0
- package/dist/server/src/cli/server.js +246 -0
- package/dist/server/src/config/config-change-logger.d.ts +16 -0
- package/dist/server/src/config/config-change-logger.d.ts.map +1 -0
- package/dist/server/src/config/config-change-logger.js +43 -0
- package/dist/server/src/config/config-loader.d.ts +22 -0
- package/dist/server/src/config/config-loader.d.ts.map +1 -0
- package/dist/server/src/config/config-loader.js +66 -0
- package/dist/server/src/config/config-manager.d.ts +158 -0
- package/dist/server/src/config/config-manager.d.ts.map +1 -0
- package/dist/server/src/config/config-manager.js +246 -0
- package/dist/server/src/config/config-saver.d.ts +16 -0
- package/dist/server/src/config/config-saver.d.ts.map +1 -0
- package/dist/server/src/config/config-saver.js +28 -0
- package/dist/server/src/config/config.schema.d.ts +108 -0
- package/dist/server/src/config/config.schema.d.ts.map +1 -0
- package/dist/server/src/config/config.schema.js +103 -0
- package/dist/server/src/config/server-config-manager.d.ts +74 -0
- package/dist/server/src/config/server-config-manager.d.ts.map +1 -0
- package/dist/server/src/config/server-config-manager.js +157 -0
- package/dist/server/src/config/type-converter.d.ts +13 -0
- package/dist/server/src/config/type-converter.d.ts.map +1 -0
- package/dist/server/src/config/type-converter.js +37 -0
- package/dist/server/src/index.d.ts +3 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/index.js +352 -0
- package/dist/server/src/models/event.model.d.ts +106 -0
- package/dist/server/src/models/event.model.d.ts.map +1 -0
- package/dist/server/src/models/event.model.js +5 -0
- package/dist/server/src/models/server.model.d.ts +19 -0
- package/dist/server/src/models/server.model.d.ts.map +1 -0
- package/dist/server/src/models/server.model.js +1 -0
- package/dist/server/src/models/system-tools.constants.d.ts +73 -0
- package/dist/server/src/models/system-tools.constants.d.ts.map +1 -0
- package/dist/server/src/models/system-tools.constants.js +31 -0
- package/dist/server/src/models/types.d.ts +84 -0
- package/dist/server/src/models/types.d.ts.map +1 -0
- package/dist/server/src/models/types.js +67 -0
- package/dist/server/src/pid/file.d.ts +26 -0
- package/dist/server/src/pid/file.d.ts.map +1 -0
- package/dist/server/src/pid/file.js +68 -0
- package/dist/server/src/pid/manager.d.ts +98 -0
- package/dist/server/src/pid/manager.d.ts.map +1 -0
- package/dist/server/src/pid/manager.js +158 -0
- package/dist/server/src/pid/types.d.ts +13 -0
- package/dist/server/src/pid/types.d.ts.map +1 -0
- package/dist/server/src/pid/types.js +4 -0
- package/dist/server/src/server/dev-server.d.ts +2 -0
- package/dist/server/src/server/dev-server.d.ts.map +1 -0
- package/dist/server/src/server/dev-server.js +171 -0
- package/dist/server/src/server/runner.d.ts +57 -0
- package/dist/server/src/server/runner.d.ts.map +1 -0
- package/dist/server/src/server/runner.js +163 -0
- package/dist/server/src/services/client-tracker.service.d.ts +132 -0
- package/dist/server/src/services/client-tracker.service.d.ts.map +1 -0
- package/dist/server/src/services/client-tracker.service.js +203 -0
- package/dist/server/src/services/connection/connection-manager.d.ts +478 -0
- package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -0
- package/dist/server/src/services/connection/connection-manager.js +929 -0
- package/dist/server/src/services/connection/index.d.ts +6 -0
- package/dist/server/src/services/connection/index.d.ts.map +1 -0
- package/dist/server/src/services/connection/index.js +4 -0
- package/dist/server/src/services/connection/tool-cache.d.ts +122 -0
- package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -0
- package/dist/server/src/services/connection/tool-cache.js +202 -0
- package/dist/server/src/services/connection/types.d.ts +30 -0
- package/dist/server/src/services/connection/types.d.ts.map +1 -0
- package/dist/server/src/services/connection/types.js +1 -0
- package/dist/server/src/services/event-bus.service.d.ts +169 -0
- package/dist/server/src/services/event-bus.service.d.ts.map +1 -0
- package/dist/server/src/services/event-bus.service.js +200 -0
- package/dist/server/src/services/gateway/gateway.service.d.ts +61 -0
- package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -0
- package/dist/server/src/services/gateway/gateway.service.js +107 -0
- package/dist/server/src/services/gateway/index.d.ts +8 -0
- package/dist/server/src/services/gateway/index.d.ts.map +1 -0
- package/dist/server/src/services/gateway/index.js +6 -0
- package/dist/server/src/services/gateway/log-formatter.d.ts +26 -0
- package/dist/server/src/services/gateway/log-formatter.d.ts.map +1 -0
- package/dist/server/src/services/gateway/log-formatter.js +66 -0
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts +13 -0
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +131 -0
- package/dist/server/src/services/gateway/request-handlers/index.d.ts +9 -0
- package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/index.js +8 -0
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +11 -0
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +85 -0
- package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts +11 -0
- package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/resources-handler.js +56 -0
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts +11 -0
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +228 -0
- package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts +11 -0
- package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/tools-handler.js +79 -0
- package/dist/server/src/services/gateway/tool-list-generator.d.ts +23 -0
- package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -0
- package/dist/server/src/services/gateway/tool-list-generator.js +115 -0
- package/dist/server/src/services/gateway/types.d.ts +27 -0
- package/dist/server/src/services/gateway/types.d.ts.map +1 -0
- package/dist/server/src/services/gateway/types.js +4 -0
- package/dist/server/src/services/gateway.service.d.ts +7 -0
- package/dist/server/src/services/gateway.service.d.ts.map +1 -0
- package/dist/server/src/services/gateway.service.js +6 -0
- package/dist/server/src/services/hub-manager.service.d.ts +299 -0
- package/dist/server/src/services/hub-manager.service.d.ts.map +1 -0
- package/dist/server/src/services/hub-manager.service.js +413 -0
- package/dist/server/src/services/hub-tools/index.d.ts +10 -0
- package/dist/server/src/services/hub-tools/index.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/index.js +6 -0
- package/dist/server/src/services/hub-tools/resource-generator.d.ts +63 -0
- package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/resource-generator.js +141 -0
- package/dist/server/src/services/hub-tools/server-selector.d.ts +63 -0
- package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/server-selector.js +108 -0
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +47 -0
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/system-tool-definitions.js +225 -0
- package/dist/server/src/services/hub-tools/tool-search.d.ts +85 -0
- package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/tool-search.js +115 -0
- package/dist/server/src/services/hub-tools/types.d.ts +42 -0
- package/dist/server/src/services/hub-tools/types.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/types.js +1 -0
- package/dist/server/src/services/hub-tools.service.d.ts +235 -0
- package/dist/server/src/services/hub-tools.service.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools.service.js +457 -0
- package/dist/server/src/services/log-storage.service.d.ts +177 -0
- package/dist/server/src/services/log-storage.service.d.ts.map +1 -0
- package/dist/server/src/services/log-storage.service.js +243 -0
- package/dist/server/src/services/mcp-connection-manager.d.ts +7 -0
- package/dist/server/src/services/mcp-connection-manager.d.ts.map +1 -0
- package/dist/server/src/services/mcp-connection-manager.js +6 -0
- package/dist/server/src/services/mcp-session-manager.d.ts +6 -0
- package/dist/server/src/services/mcp-session-manager.d.ts.map +1 -0
- package/dist/server/src/services/mcp-session-manager.js +4 -0
- package/dist/server/src/services/search/index.d.ts +5 -0
- package/dist/server/src/services/search/index.d.ts.map +1 -0
- package/dist/server/src/services/search/index.js +5 -0
- package/dist/server/src/services/search/search-cache.d.ts +132 -0
- package/dist/server/src/services/search/search-cache.d.ts.map +1 -0
- package/dist/server/src/services/search/search-cache.js +151 -0
- package/dist/server/src/services/search/search-core.service.d.ts +108 -0
- package/dist/server/src/services/search/search-core.service.d.ts.map +1 -0
- package/dist/server/src/services/search/search-core.service.js +187 -0
- package/dist/server/src/services/search/search-scorer.d.ts +54 -0
- package/dist/server/src/services/search/search-scorer.d.ts.map +1 -0
- package/dist/server/src/services/search/search-scorer.js +83 -0
- package/dist/server/src/services/search/types.d.ts +20 -0
- package/dist/server/src/services/search/types.d.ts.map +1 -0
- package/dist/server/src/services/search/types.js +1 -0
- package/dist/server/src/services/session/index.d.ts +6 -0
- package/dist/server/src/services/session/index.d.ts.map +1 -0
- package/dist/server/src/services/session/index.js +4 -0
- package/dist/server/src/services/session/session-manager.d.ts +352 -0
- package/dist/server/src/services/session/session-manager.d.ts.map +1 -0
- package/dist/server/src/services/session/session-manager.js +835 -0
- package/dist/server/src/services/session/types.d.ts +32 -0
- package/dist/server/src/services/session/types.d.ts.map +1 -0
- package/dist/server/src/services/session/types.js +1 -0
- package/dist/server/src/services/simple-search.service.d.ts +67 -0
- package/dist/server/src/services/simple-search.service.d.ts.map +1 -0
- package/dist/server/src/services/simple-search.service.js +82 -0
- package/dist/server/src/services/system-tool-handler.d.ts +10 -0
- package/dist/server/src/services/system-tool-handler.d.ts.map +1 -0
- package/dist/server/src/services/system-tool-handler.js +77 -0
- package/dist/server/src/utils/error-handler.d.ts +18 -0
- package/dist/server/src/utils/error-handler.d.ts.map +1 -0
- package/dist/server/src/utils/error-handler.js +59 -0
- package/dist/server/src/utils/format-utils.d.ts +23 -0
- package/dist/server/src/utils/format-utils.d.ts.map +1 -0
- package/dist/server/src/utils/format-utils.js +58 -0
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -0
- package/dist/server/src/utils/index.js +1 -0
- package/dist/server/src/utils/json-utils.d.ts +82 -0
- package/dist/server/src/utils/json-utils.d.ts.map +1 -0
- package/dist/server/src/utils/json-utils.js +204 -0
- package/dist/server/src/utils/log-rotator.d.ts +223 -0
- package/dist/server/src/utils/log-rotator.d.ts.map +1 -0
- package/dist/server/src/utils/log-rotator.js +306 -0
- package/dist/server/src/utils/logger/dev-logger.d.ts +39 -0
- package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -0
- package/dist/server/src/utils/logger/dev-logger.js +63 -0
- package/dist/server/src/utils/logger/index.d.ts +36 -0
- package/dist/server/src/utils/logger/index.d.ts.map +1 -0
- package/dist/server/src/utils/logger/index.js +46 -0
- package/dist/server/src/utils/logger/log-colors.d.ts +27 -0
- package/dist/server/src/utils/logger/log-colors.d.ts.map +1 -0
- package/dist/server/src/utils/logger/log-colors.js +41 -0
- package/dist/server/src/utils/logger/log-context.d.ts +13 -0
- package/dist/server/src/utils/logger/log-context.d.ts.map +1 -0
- package/dist/server/src/utils/logger/log-context.js +5 -0
- package/dist/server/src/utils/logger/log-formatter.d.ts +47 -0
- package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -0
- package/dist/server/src/utils/logger/log-formatter.js +150 -0
- package/dist/server/src/utils/logger/log-modules.d.ts +141 -0
- package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -0
- package/dist/server/src/utils/logger/log-modules.js +81 -0
- package/dist/server/src/utils/logger/log-output.d.ts +68 -0
- package/dist/server/src/utils/logger/log-output.d.ts.map +1 -0
- package/dist/server/src/utils/logger/log-output.js +320 -0
- package/dist/server/src/utils/logger/logger.d.ts +190 -0
- package/dist/server/src/utils/logger/logger.d.ts.map +1 -0
- package/dist/server/src/utils/logger/logger.js +350 -0
- package/dist/server/src/utils/logger.d.ts +12 -0
- package/dist/server/src/utils/logger.d.ts.map +1 -0
- package/dist/server/src/utils/logger.js +12 -0
- package/dist/server/src/utils/mcp-error-handler.d.ts +162 -0
- package/dist/server/src/utils/mcp-error-handler.d.ts.map +1 -0
- package/dist/server/src/utils/mcp-error-handler.js +270 -0
- package/dist/server/src/utils/port-checker.d.ts +16 -0
- package/dist/server/src/utils/port-checker.d.ts.map +1 -0
- package/dist/server/src/utils/port-checker.js +242 -0
- package/dist/server/src/utils/request-context.d.ts +71 -0
- package/dist/server/src/utils/request-context.d.ts.map +1 -0
- package/dist/server/src/utils/request-context.js +73 -0
- package/dist/server/src/utils/tool-args-parser.d.ts +17 -0
- package/dist/server/src/utils/tool-args-parser.d.ts.map +1 -0
- package/dist/server/src/utils/tool-args-parser.js +34 -0
- package/dist/server/src/utils/transports/sse-transport.d.ts +104 -0
- package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -0
- package/dist/server/src/utils/transports/sse-transport.js +189 -0
- package/dist/server/src/utils/transports/stdio-transport.d.ts +122 -0
- package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -0
- package/dist/server/src/utils/transports/stdio-transport.js +324 -0
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts +146 -0
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -0
- package/dist/server/src/utils/transports/streamable-http-transport.js +212 -0
- package/dist/server/src/utils/transports/transport-factory.d.ts +26 -0
- package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -0
- package/dist/server/src/utils/transports/transport-factory.js +104 -0
- package/dist/server/src/utils/transports/transport.interface.d.ts +35 -0
- package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -0
- package/dist/server/src/utils/transports/transport.interface.js +1 -0
- package/dist/server/tests/contract/mcp-protocol/initialize.test.d.ts +2 -0
- package/dist/server/tests/contract/mcp-protocol/initialize.test.d.ts.map +1 -0
- package/dist/server/tests/contract/mcp-protocol/initialize.test.js +103 -0
- package/dist/server/tests/contract/mcp-protocol/tools-call.test.d.ts +2 -0
- package/dist/server/tests/contract/mcp-protocol/tools-call.test.d.ts.map +1 -0
- package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +181 -0
- package/dist/server/tests/contract/mcp-protocol/tools-list.test.d.ts +2 -0
- package/dist/server/tests/contract/mcp-protocol/tools-list.test.d.ts.map +1 -0
- package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +155 -0
- package/dist/server/tests/evaluation/evaluation.test.d.ts +2 -0
- package/dist/server/tests/evaluation/evaluation.test.d.ts.map +1 -0
- package/dist/server/tests/evaluation/evaluation.test.js +102 -0
- package/dist/server/tests/helpers/sdk-test-helpers.d.ts +32 -0
- package/dist/server/tests/helpers/sdk-test-helpers.d.ts.map +1 -0
- package/dist/server/tests/helpers/sdk-test-helpers.js +82 -0
- package/dist/server/tests/integration/api/gateway.test.d.ts +2 -0
- package/dist/server/tests/integration/api/gateway.test.d.ts.map +1 -0
- package/dist/server/tests/integration/api/gateway.test.js +366 -0
- package/dist/server/tests/integration/gateway/fault-tolerance.test.d.ts +2 -0
- package/dist/server/tests/integration/gateway/fault-tolerance.test.d.ts.map +1 -0
- package/dist/server/tests/integration/gateway/fault-tolerance.test.js +109 -0
- package/dist/server/tests/integration/gateway/mcp-connection.test.d.ts +2 -0
- package/dist/server/tests/integration/gateway/mcp-connection.test.d.ts.map +1 -0
- package/dist/server/tests/integration/gateway/mcp-connection.test.js +149 -0
- package/dist/server/tests/server.test.d.ts +2 -0
- package/dist/server/tests/server.test.d.ts.map +1 -0
- package/dist/server/tests/server.test.js +95 -0
- package/dist/server/tests/setup.d.ts +7 -0
- package/dist/server/tests/setup.d.ts.map +1 -0
- package/dist/server/tests/setup.js +53 -0
- package/dist/server/tests/types/logger-test-helpers.d.ts +17 -0
- package/dist/server/tests/types/logger-test-helpers.d.ts.map +1 -0
- package/dist/server/tests/types/logger-test-helpers.js +4 -0
- package/dist/server/tests/types/test-helpers.d.ts +27 -0
- package/dist/server/tests/types/test-helpers.d.ts.map +1 -0
- package/dist/server/tests/types/test-helpers.js +4 -0
- package/dist/server/tests/unit/cli/basic-cli.test.d.ts +2 -0
- package/dist/server/tests/unit/cli/basic-cli.test.d.ts.map +1 -0
- package/dist/server/tests/unit/cli/basic-cli.test.js +33 -0
- package/dist/server/tests/unit/cli/cli.test.d.ts +2 -0
- package/dist/server/tests/unit/cli/cli.test.d.ts.map +1 -0
- package/dist/server/tests/unit/cli/cli.test.js +17 -0
- package/dist/server/tests/unit/cli/commands.test.d.ts +2 -0
- package/dist/server/tests/unit/cli/commands.test.d.ts.map +1 -0
- package/dist/server/tests/unit/cli/commands.test.js +75 -0
- package/dist/server/tests/unit/cli/server.test.d.ts +2 -0
- package/dist/server/tests/unit/cli/server.test.d.ts.map +1 -0
- package/dist/server/tests/unit/cli/server.test.js +68 -0
- package/dist/server/tests/unit/server/runner.test.d.ts +2 -0
- package/dist/server/tests/unit/server/runner.test.d.ts.map +1 -0
- package/dist/server/tests/unit/server/runner.test.js +488 -0
- package/dist/server/tests/unit/server/setup.d.ts +2 -0
- package/dist/server/tests/unit/server/setup.d.ts.map +1 -0
- package/dist/server/tests/unit/server/setup.js +21 -0
- package/dist/server/tests/unit/services/gateway-logging.test.d.ts +2 -0
- package/dist/server/tests/unit/services/gateway-logging.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/gateway-logging.test.js +47 -0
- package/dist/server/tests/unit/services/hub-manager-service.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-manager-service.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-manager-service.test.js +140 -0
- package/dist/server/tests/unit/services/hub-manager.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-manager.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-manager.test.js +98 -0
- package/dist/server/tests/unit/services/hub-tools.service.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-tools.service.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-tools.service.test.js +674 -0
- package/dist/server/tests/unit/services/search/search-cache.test.d.ts +2 -0
- package/dist/server/tests/unit/services/search/search-cache.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/search/search-cache.test.js +58 -0
- package/dist/server/tests/unit/services/search/search-core.service.test.d.ts +2 -0
- package/dist/server/tests/unit/services/search/search-core.service.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/search/search-core.service.test.js +84 -0
- package/dist/server/tests/unit/services/search/search-scorer.test.d.ts +2 -0
- package/dist/server/tests/unit/services/search/search-scorer.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/search/search-scorer.test.js +97 -0
- package/dist/server/tests/unit/services/session-manager.test.d.ts +2 -0
- package/dist/server/tests/unit/services/session-manager.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/session-manager.test.js +481 -0
- package/dist/server/tests/unit/utils/config.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/config.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/config.test.js +634 -0
- package/dist/server/tests/unit/utils/json-utils.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/json-utils.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/json-utils.test.js +296 -0
- package/dist/server/tests/unit/utils/log-rotator.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/log-rotator.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/log-rotator.test.js +296 -0
- package/dist/server/tests/unit/utils/logger.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/logger.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/logger.test.js +462 -0
- package/dist/server/tests/unit/utils/mcp-error-handler.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/mcp-error-handler.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/mcp-error-handler.test.js +163 -0
- package/dist/server/tests/unit/utils/request-context.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/request-context.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/request-context.test.js +82 -0
- package/dist/server/vite.config.d.ts +3 -0
- package/dist/server/vite.config.d.ts.map +1 -0
- package/dist/server/vite.config.js +160 -0
- package/dist/server/vitest.config.d.ts +3 -0
- package/dist/server/vitest.config.d.ts.map +1 -0
- package/dist/server/vitest.config.js +53 -0
- package/package.json +113 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { buildApp } from '../app.js';
|
|
2
|
+
import { configManager } from '../config/config-manager.js';
|
|
3
|
+
import { logger, LOG_MODULES } from '../utils/logger.js';
|
|
4
|
+
import { mcpConnectionManager } from '../services/mcp-connection-manager.js';
|
|
5
|
+
import { PidManager } from '../pid/manager.js';
|
|
6
|
+
// Set log level to debug for development server
|
|
7
|
+
logger.setLevel('debug');
|
|
8
|
+
// Enable dev logging to file (this also enables communication debug logging)
|
|
9
|
+
logger.enableDevLog();
|
|
10
|
+
let app = null;
|
|
11
|
+
/**
|
|
12
|
+
* Starts the MCP Hub Lite development server with enhanced debugging capabilities.
|
|
13
|
+
*
|
|
14
|
+
* This function initializes and starts a development-focused Fastify server instance
|
|
15
|
+
* with the following features:
|
|
16
|
+
* - Debug-level logging enabled for detailed development insights
|
|
17
|
+
* - Development log file output for persistent debugging information
|
|
18
|
+
* - Automatic connection to all enabled MCP servers configured in the system
|
|
19
|
+
* - OpenTelemetry tracing initialization for observability
|
|
20
|
+
* - PID file management for process tracking
|
|
21
|
+
* - Graceful shutdown handling for SIGTERM and SIGINT signals
|
|
22
|
+
*
|
|
23
|
+
* The development server differs from the production server by:
|
|
24
|
+
* - Using debug log level instead of info/warn
|
|
25
|
+
* - Enabling development-specific logging to file
|
|
26
|
+
* - Automatically connecting to all enabled servers on startup
|
|
27
|
+
* - Providing enhanced error reporting for development debugging
|
|
28
|
+
*
|
|
29
|
+
* Usage:
|
|
30
|
+
* - Called automatically when running `npm run dev` or `npm run dev:server`
|
|
31
|
+
* - Should only be used in development environments, not production
|
|
32
|
+
* - Handles its own process lifecycle including graceful shutdown
|
|
33
|
+
*
|
|
34
|
+
* Error Handling:
|
|
35
|
+
* - Catches and logs any startup errors with full stack traces
|
|
36
|
+
* - Cleans up PID file on startup failure
|
|
37
|
+
* - Exits process with code 1 on fatal errors
|
|
38
|
+
* - Provides graceful shutdown on termination signals
|
|
39
|
+
*
|
|
40
|
+
* @async
|
|
41
|
+
* @returns {Promise<void>} Resolves when server starts successfully and begins listening.
|
|
42
|
+
* Never resolves if server fails to start (process exits with code 1).
|
|
43
|
+
* @throws {Error} If server fails to initialize or start due to configuration errors,
|
|
44
|
+
* port conflicts, invalid server configurations, or other startup issues.
|
|
45
|
+
* Note: Errors are caught internally and cause process.exit(1), so the promise
|
|
46
|
+
* typically does not reject but rather the process terminates.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* // Typically called automatically at module level
|
|
51
|
+
* startDevServer();
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @see {@link buildApp} - Creates the Fastify application instance
|
|
55
|
+
* @see {@link configManager} - Manages server configuration and MCP server instances
|
|
56
|
+
* @see {@link mcpConnectionManager} - Handles MCP server connections and communication
|
|
57
|
+
* @see {@link telemetryManager} - Manages OpenTelemetry tracing and observability
|
|
58
|
+
* @see {@link PidManager} - Handles PID file creation and cleanup
|
|
59
|
+
*/
|
|
60
|
+
async function startDevServer() {
|
|
61
|
+
try {
|
|
62
|
+
// Log startup separator
|
|
63
|
+
logger.info('------------------------------------------------', LOG_MODULES.DEV_SERVER);
|
|
64
|
+
logger.info('MCP Hub Lite Dev Server Starting...', LOG_MODULES.DEV_SERVER);
|
|
65
|
+
logger.info(`Start Time: ${new Date().toISOString()}`, LOG_MODULES.DEV_SERVER);
|
|
66
|
+
logger.info('------------------------------------------------', LOG_MODULES.DEV_SERVER);
|
|
67
|
+
app = await buildApp();
|
|
68
|
+
const config = configManager.getConfig();
|
|
69
|
+
// Auto-connect to enabled servers
|
|
70
|
+
logger.info('Initializing server connections...', LOG_MODULES.DEV_SERVER);
|
|
71
|
+
const serverConfigs = configManager.getServers();
|
|
72
|
+
for (const { name: serverName, config: serverConfig } of serverConfigs) {
|
|
73
|
+
if (serverConfig.enabled) {
|
|
74
|
+
// Check if there are existing instances
|
|
75
|
+
const existingInstances = configManager.getServerInstanceByName(serverName);
|
|
76
|
+
if (existingInstances.length === 0) {
|
|
77
|
+
// Auto-create instance for enabled servers
|
|
78
|
+
try {
|
|
79
|
+
const newInstance = await configManager.addServerInstance(serverName, {});
|
|
80
|
+
// Connect the new instance
|
|
81
|
+
mcpConnectionManager.connect({ ...serverConfig, ...newInstance }).catch((err) => {
|
|
82
|
+
logger.error(`Failed to auto-connect to ${serverName}:`, err, LOG_MODULES.DEV_SERVER);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
logger.error(`Failed to create instance for ${serverName}:`, err, LOG_MODULES.DEV_SERVER);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Connect existing instances
|
|
91
|
+
existingInstances.forEach((instance) => {
|
|
92
|
+
mcpConnectionManager.connect({ ...serverConfig, ...instance }).catch((err) => {
|
|
93
|
+
logger.error(`Failed to auto-connect to ${serverName}:`, err, LOG_MODULES.DEV_SERVER);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Listen on configured port
|
|
100
|
+
await app.listen({
|
|
101
|
+
port: config.system.port,
|
|
102
|
+
host: config.system.host
|
|
103
|
+
});
|
|
104
|
+
logger.info(`MCP Hub Lite Dev Server running at http://${config.system.host}:${config.system.port}`, LOG_MODULES.DEV_SERVER);
|
|
105
|
+
// Write PID file after server starts successfully
|
|
106
|
+
PidManager.writePid();
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
logger.error('Failed to start dev server:', err, LOG_MODULES.DEV_SERVER);
|
|
110
|
+
// Clean up PID file if it exists
|
|
111
|
+
PidManager.removePid();
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Handles graceful shutdown of the development server when receiving termination signals.
|
|
117
|
+
*
|
|
118
|
+
* This function performs a clean shutdown sequence to ensure:
|
|
119
|
+
* - All MCP server connections are properly disconnected
|
|
120
|
+
* - The Fastify HTTP server is closed gracefully
|
|
121
|
+
* - OpenTelemetry tracing resources are properly shut down
|
|
122
|
+
* - PID file is removed to prevent stale process detection
|
|
123
|
+
* - All resources are cleaned up before process exit
|
|
124
|
+
*
|
|
125
|
+
* It handles both SIGTERM (termination request) and SIGINT (interrupt/CTRL+C) signals,
|
|
126
|
+
* providing consistent shutdown behavior regardless of how the process is terminated.
|
|
127
|
+
*
|
|
128
|
+
* Error Handling:
|
|
129
|
+
* - Catches and logs any errors during shutdown process
|
|
130
|
+
* - Ensures PID file is always removed even if shutdown fails
|
|
131
|
+
* - Exits with code 0 on successful shutdown, or after logging errors
|
|
132
|
+
*
|
|
133
|
+
* @param signal - The termination signal that triggered shutdown ('SIGTERM' or 'SIGINT')
|
|
134
|
+
* @returns {Promise<void>} Resolves when shutdown sequence completes successfully
|
|
135
|
+
*/
|
|
136
|
+
// Handle graceful shutdown for better restart experience
|
|
137
|
+
const shutdown = async (signal) => {
|
|
138
|
+
logger.info(`Received ${signal}, shutting down gracefully...`, LOG_MODULES.DEV_SERVER);
|
|
139
|
+
try {
|
|
140
|
+
await mcpConnectionManager.disconnectAll();
|
|
141
|
+
if (app) {
|
|
142
|
+
await app.close();
|
|
143
|
+
}
|
|
144
|
+
PidManager.removePid();
|
|
145
|
+
logger.info('Dev server stopped gracefully', LOG_MODULES.DEV_SERVER);
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
logger.error('Error during shutdown:', error, LOG_MODULES.DEV_SERVER);
|
|
149
|
+
PidManager.removePid();
|
|
150
|
+
}
|
|
151
|
+
process.exit(0);
|
|
152
|
+
};
|
|
153
|
+
process.on('SIGTERM', () => shutdown('SIGTERM').catch((err) => {
|
|
154
|
+
logger.error('Shutdown failed:', err, LOG_MODULES.DEV_SERVER);
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}));
|
|
157
|
+
process.on('SIGINT', () => shutdown('SIGINT').catch((err) => {
|
|
158
|
+
logger.error('Shutdown failed:', err, LOG_MODULES.DEV_SERVER);
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}));
|
|
161
|
+
// Handle uncaught exceptions
|
|
162
|
+
process.on('uncaughtException', (err) => {
|
|
163
|
+
logger.error('Uncaught Exception:', err, LOG_MODULES.DEV_SERVER);
|
|
164
|
+
process.exit(1);
|
|
165
|
+
});
|
|
166
|
+
// Handle unhandled promise rejections
|
|
167
|
+
process.on('unhandledRejection', (reason, promise) => {
|
|
168
|
+
logger.error('Unhandled Rejection at:', promise, 'reason:', reason, LOG_MODULES.DEV_SERVER);
|
|
169
|
+
process.exit(1);
|
|
170
|
+
});
|
|
171
|
+
startDevServer();
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Starts the MCP Hub Lite server in either HTTP mode or stdio MCP gateway mode.
|
|
3
|
+
*
|
|
4
|
+
* This function is the main entry point for running the MCP Hub Lite server in production.
|
|
5
|
+
* It handles two distinct operational modes:
|
|
6
|
+
*
|
|
7
|
+
* 1. **HTTP Server Mode** (default): Runs a full Fastify HTTP server with REST API,
|
|
8
|
+
* WebSocket support, and web interface on the specified host and port.
|
|
9
|
+
*
|
|
10
|
+
* 2. **Stdio MCP Gateway Mode**: Runs as an MCP (Model Context Protocol) gateway
|
|
11
|
+
* that communicates via stdin/stdout streams, suitable for integration with
|
|
12
|
+
* MCP-compatible clients like IDEs or AI assistants.
|
|
13
|
+
*
|
|
14
|
+
* The function performs the following key operations:
|
|
15
|
+
* - Validates and checks port availability (HTTP mode only)
|
|
16
|
+
* - Automatically connects to all enabled MCP servers from configuration
|
|
17
|
+
* - Sets up graceful shutdown handlers for SIGTERM and SIGINT signals
|
|
18
|
+
* - Manages PID file creation and cleanup for process tracking
|
|
19
|
+
* - Handles both successful startup and error scenarios with appropriate logging
|
|
20
|
+
*
|
|
21
|
+
* @param options - Configuration options for server startup
|
|
22
|
+
* @param options.stdio - When true, runs in stdio MCP gateway mode instead of HTTP server mode
|
|
23
|
+
* @param options.port - Override the configured port number (HTTP mode only)
|
|
24
|
+
* @param options.host - Override the configured host address (HTTP mode only)
|
|
25
|
+
*
|
|
26
|
+
* @returns Promise that resolves when the server is successfully started,
|
|
27
|
+
* or rejects with an error if startup fails
|
|
28
|
+
*
|
|
29
|
+
* @throws {Error} If server startup fails due to port conflicts, configuration errors,
|
|
30
|
+
* or other critical issues. The process will exit with code 1 in such cases.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* // Start in default HTTP mode
|
|
34
|
+
* await runServer();
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* // Start in stdio MCP gateway mode
|
|
38
|
+
* await runServer({ stdio: true });
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* // Start HTTP server on custom port and host
|
|
42
|
+
* await runServer({ port: 8080, host: '0.0.0.0' });
|
|
43
|
+
*
|
|
44
|
+
* @remarks
|
|
45
|
+
* - In HTTP mode, the function will check if the specified port is already in use
|
|
46
|
+
* and provide detailed error messages for port conflicts
|
|
47
|
+
* - In stdio mode, port checking is skipped as no network ports are used
|
|
48
|
+
* - The function automatically connects to all enabled servers configured in .mcp-hub.json
|
|
49
|
+
* - Graceful shutdown ensures proper cleanup of connections and PID files when receiving termination signals
|
|
50
|
+
* - This function is typically called from the CLI entry point (`src/index.ts`)
|
|
51
|
+
*/
|
|
52
|
+
export declare function runServer(options?: {
|
|
53
|
+
stdio?: boolean;
|
|
54
|
+
port?: number;
|
|
55
|
+
host?: string;
|
|
56
|
+
}): Promise<void>;
|
|
57
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/server/runner.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,iBA2G9F"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { buildApp } from '../app.js';
|
|
2
|
+
import { configManager } from '../config/config-manager.js';
|
|
3
|
+
import { logger, LOG_MODULES } from '../utils/logger.js';
|
|
4
|
+
import { setJsonPrettyConfigGetter } from '../utils/json-utils.js';
|
|
5
|
+
import { mcpConnectionManager } from '../services/mcp-connection-manager.js';
|
|
6
|
+
import { gateway } from '../services/gateway.service.js';
|
|
7
|
+
import { PidManager } from '../pid/manager.js';
|
|
8
|
+
import { checkPort } from '../utils/port-checker.js';
|
|
9
|
+
/**
|
|
10
|
+
* Starts the MCP Hub Lite server in either HTTP mode or stdio MCP gateway mode.
|
|
11
|
+
*
|
|
12
|
+
* This function is the main entry point for running the MCP Hub Lite server in production.
|
|
13
|
+
* It handles two distinct operational modes:
|
|
14
|
+
*
|
|
15
|
+
* 1. **HTTP Server Mode** (default): Runs a full Fastify HTTP server with REST API,
|
|
16
|
+
* WebSocket support, and web interface on the specified host and port.
|
|
17
|
+
*
|
|
18
|
+
* 2. **Stdio MCP Gateway Mode**: Runs as an MCP (Model Context Protocol) gateway
|
|
19
|
+
* that communicates via stdin/stdout streams, suitable for integration with
|
|
20
|
+
* MCP-compatible clients like IDEs or AI assistants.
|
|
21
|
+
*
|
|
22
|
+
* The function performs the following key operations:
|
|
23
|
+
* - Validates and checks port availability (HTTP mode only)
|
|
24
|
+
* - Automatically connects to all enabled MCP servers from configuration
|
|
25
|
+
* - Sets up graceful shutdown handlers for SIGTERM and SIGINT signals
|
|
26
|
+
* - Manages PID file creation and cleanup for process tracking
|
|
27
|
+
* - Handles both successful startup and error scenarios with appropriate logging
|
|
28
|
+
*
|
|
29
|
+
* @param options - Configuration options for server startup
|
|
30
|
+
* @param options.stdio - When true, runs in stdio MCP gateway mode instead of HTTP server mode
|
|
31
|
+
* @param options.port - Override the configured port number (HTTP mode only)
|
|
32
|
+
* @param options.host - Override the configured host address (HTTP mode only)
|
|
33
|
+
*
|
|
34
|
+
* @returns Promise that resolves when the server is successfully started,
|
|
35
|
+
* or rejects with an error if startup fails
|
|
36
|
+
*
|
|
37
|
+
* @throws {Error} If server startup fails due to port conflicts, configuration errors,
|
|
38
|
+
* or other critical issues. The process will exit with code 1 in such cases.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* // Start in default HTTP mode
|
|
42
|
+
* await runServer();
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* // Start in stdio MCP gateway mode
|
|
46
|
+
* await runServer({ stdio: true });
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* // Start HTTP server on custom port and host
|
|
50
|
+
* await runServer({ port: 8080, host: '0.0.0.0' });
|
|
51
|
+
*
|
|
52
|
+
* @remarks
|
|
53
|
+
* - In HTTP mode, the function will check if the specified port is already in use
|
|
54
|
+
* and provide detailed error messages for port conflicts
|
|
55
|
+
* - In stdio mode, port checking is skipped as no network ports are used
|
|
56
|
+
* - The function automatically connects to all enabled servers configured in .mcp-hub.json
|
|
57
|
+
* - Graceful shutdown ensures proper cleanup of connections and PID files when receiving termination signals
|
|
58
|
+
* - This function is typically called from the CLI entry point (`src/index.ts`)
|
|
59
|
+
*/
|
|
60
|
+
export async function runServer(options = {}) {
|
|
61
|
+
try {
|
|
62
|
+
const isStdio = options.stdio || false;
|
|
63
|
+
if (isStdio) {
|
|
64
|
+
logger.setUseStderr(true);
|
|
65
|
+
logger.info('Starting in MCP Gateway mode (stdio)...', LOG_MODULES.SERVER);
|
|
66
|
+
}
|
|
67
|
+
const config = configManager.getConfig();
|
|
68
|
+
// Set config getter for json-utils to use config from configManager
|
|
69
|
+
setJsonPrettyConfigGetter(() => configManager.getConfig());
|
|
70
|
+
const app = isStdio ? null : await buildApp();
|
|
71
|
+
// Override config with options if provided
|
|
72
|
+
const host = options.host || config.system.host;
|
|
73
|
+
const port = options.port || config.system.port;
|
|
74
|
+
// Check if port is already in use (only for HTTP mode)
|
|
75
|
+
if (!isStdio) {
|
|
76
|
+
const portCheck = await checkPort(port);
|
|
77
|
+
if (portCheck.inUse) {
|
|
78
|
+
if (portCheck.isSelfProject) {
|
|
79
|
+
// This project is already running
|
|
80
|
+
logger.error(`MCP Hub Lite is already running on port ${port} (PID: ${portCheck.pid})`);
|
|
81
|
+
logger.error(`Use 'npm run stop' or 'mcp-hub-lite stop' to stop the running instance.`);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Port is occupied by another application
|
|
86
|
+
logger.error(`Port ${port} is already in use by another application:`);
|
|
87
|
+
logger.error(` Process: ${portCheck.processName} (PID: ${portCheck.pid})`);
|
|
88
|
+
if (portCheck.commandLine) {
|
|
89
|
+
logger.error(` Command: ${portCheck.commandLine}`);
|
|
90
|
+
}
|
|
91
|
+
logger.error(`Please stop the conflicting application or use a different port.`);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Auto-connect to enabled servers
|
|
97
|
+
logger.info('Initializing server connections...', LOG_MODULES.SERVER);
|
|
98
|
+
const serverConfigs = configManager.getServers();
|
|
99
|
+
for (const { name: serverName, config: serverConfig } of serverConfigs) {
|
|
100
|
+
if (serverConfig.enabled) {
|
|
101
|
+
// Check if there are existing instances
|
|
102
|
+
const existingInstances = configManager.getServerInstanceByName(serverName);
|
|
103
|
+
if (existingInstances.length === 0) {
|
|
104
|
+
// Auto-create instance for enabled servers
|
|
105
|
+
try {
|
|
106
|
+
const newInstance = await configManager.addServerInstance(serverName, {});
|
|
107
|
+
// Connect the new instance
|
|
108
|
+
mcpConnectionManager.connect({ ...serverConfig, ...newInstance }).catch((err) => {
|
|
109
|
+
logger.error(`Failed to auto-connect to ${serverName}:`, err, LOG_MODULES.SERVER);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
logger.error(`Failed to create instance for ${serverName}:`, err, LOG_MODULES.SERVER);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// Connect existing instances
|
|
118
|
+
existingInstances.forEach((instance) => {
|
|
119
|
+
mcpConnectionManager.connect({ ...serverConfig, ...instance }).catch((err) => {
|
|
120
|
+
logger.error(`Failed to auto-connect to ${serverName}:`, err, LOG_MODULES.SERVER);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Setup signal handlers for graceful shutdown
|
|
127
|
+
const shutdown = async (signal) => {
|
|
128
|
+
logger.info(`Received ${signal}, shutting down...`, LOG_MODULES.SERVER);
|
|
129
|
+
try {
|
|
130
|
+
await mcpConnectionManager.disconnectAll();
|
|
131
|
+
if (!isStdio && app) {
|
|
132
|
+
await app.close();
|
|
133
|
+
}
|
|
134
|
+
PidManager.removePid();
|
|
135
|
+
logger.info('Server stopped gracefully', LOG_MODULES.SERVER);
|
|
136
|
+
process.exit(0);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
logger.error('Error during shutdown:', error, LOG_MODULES.SERVER);
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
144
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
145
|
+
if (isStdio) {
|
|
146
|
+
await gateway.start();
|
|
147
|
+
// Write PID after gateway starts successfully
|
|
148
|
+
PidManager.writePid();
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
await app.listen({ port, host });
|
|
152
|
+
logger.info(`MCP Hub Lite Server running at http://${host}:${port}`, LOG_MODULES.SERVER);
|
|
153
|
+
// Write PID after server starts successfully
|
|
154
|
+
PidManager.writePid();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
logger.error('Failed to start server:', err, LOG_MODULES.SERVER);
|
|
159
|
+
// Clean up PID file if it exists
|
|
160
|
+
PidManager.removePid();
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { ClientContext, ClientInfo, ClientRoot } from '../../shared/types/client.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Client tracking service that manages client connections and their metadata.
|
|
4
|
+
*
|
|
5
|
+
* This service maintains a registry of connected clients (typically IDEs or other
|
|
6
|
+
* MCP clients) and tracks their connection state, metadata, and workspace roots.
|
|
7
|
+
* It provides automatic cleanup of stale clients after a timeout period and
|
|
8
|
+
* publishes connection/disconnection events via the event bus.
|
|
9
|
+
*
|
|
10
|
+
* The service is primarily used by the MCP session manager to track which clients
|
|
11
|
+
* are connected and maintain their context information for proper session management.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // Update client information when a new connection is established
|
|
15
|
+
* clientTrackerService.updateClient({
|
|
16
|
+
* sessionId: 'session-123',
|
|
17
|
+
* clientName: 'VS Code',
|
|
18
|
+
* clientVersion: '1.85.0',
|
|
19
|
+
* cwd: '/home/user/project'
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* // Get all currently connected clients
|
|
23
|
+
* const clients = clientTrackerService.getClients();
|
|
24
|
+
*/
|
|
25
|
+
declare class ClientTrackerService {
|
|
26
|
+
private clients;
|
|
27
|
+
private get TIMEOUT_MS();
|
|
28
|
+
/**
|
|
29
|
+
* Creates a new client tracker service instance.
|
|
30
|
+
*
|
|
31
|
+
* Initializes the service with automatic periodic cleanup of stale clients
|
|
32
|
+
* every 60 seconds to prevent memory leaks from disconnected clients.
|
|
33
|
+
*/
|
|
34
|
+
constructor();
|
|
35
|
+
/**
|
|
36
|
+
* Updates or creates a client entry with the provided context information.
|
|
37
|
+
*
|
|
38
|
+
* This method is called whenever a client sends a request with context information.
|
|
39
|
+
* It preserves existing client metadata that isn't provided in the new context,
|
|
40
|
+
* ensuring that clients don't lose their previously established information.
|
|
41
|
+
*
|
|
42
|
+
* If this is a new client (not previously tracked), it publishes a 'client-connected'
|
|
43
|
+
* event to notify other services about the new connection.
|
|
44
|
+
*
|
|
45
|
+
* @param context - The client context containing session ID and optional metadata
|
|
46
|
+
* @param context.sessionId - Unique identifier for the client session
|
|
47
|
+
* @param context.clientName - Optional name of the client application
|
|
48
|
+
* @param context.clientVersion - Optional version of the client application
|
|
49
|
+
* @param context.protocolVersion - Optional MCP protocol version
|
|
50
|
+
* @param context.project - Optional project identifier
|
|
51
|
+
* @param context.cwd - Optional current working directory
|
|
52
|
+
* @param context.userAgent - Optional user agent string
|
|
53
|
+
* @param context.ip - Optional client IP address
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* clientTrackerService.updateClient({
|
|
57
|
+
* sessionId: 'session-123',
|
|
58
|
+
* clientName: 'VS Code',
|
|
59
|
+
* clientVersion: '1.85.0',
|
|
60
|
+
* cwd: '/home/user/project'
|
|
61
|
+
* });
|
|
62
|
+
*/
|
|
63
|
+
updateClient(context: ClientContext): void;
|
|
64
|
+
/**
|
|
65
|
+
* Updates the workspace roots for a specific client session.
|
|
66
|
+
*
|
|
67
|
+
* This method is typically called when a client provides its workspace root
|
|
68
|
+
* directories, which helps determine the client's working directory context.
|
|
69
|
+
* If the client doesn't have a current working directory (cwd) set, it will
|
|
70
|
+
* attempt to infer one from the first root URI in the list.
|
|
71
|
+
*
|
|
72
|
+
* For file:// URIs, it converts them to local file paths using Node.js's
|
|
73
|
+
* fileURLToPath utility. For other URI schemes, it uses the URI directly.
|
|
74
|
+
*
|
|
75
|
+
* @param sessionId - The unique session identifier for the client
|
|
76
|
+
* @param roots - Array of client root objects containing URI information
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* clientTrackerService.updateClientRoots('session-123', [
|
|
80
|
+
* { uri: 'file:///home/user/project' },
|
|
81
|
+
* { uri: 'file:///home/user/other-project' }
|
|
82
|
+
* ]);
|
|
83
|
+
*/
|
|
84
|
+
updateClientRoots(sessionId: string, roots: ClientRoot[]): void;
|
|
85
|
+
/**
|
|
86
|
+
* Retrieves all currently tracked client information.
|
|
87
|
+
*
|
|
88
|
+
* Returns an array of all active client info objects, including their metadata
|
|
89
|
+
* and connection state. This is useful for monitoring all connected clients
|
|
90
|
+
* or displaying client information in administrative interfaces.
|
|
91
|
+
*
|
|
92
|
+
* @returns Array of ClientInfo objects representing all tracked clients
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* const allClients = clientTrackerService.getClients();
|
|
96
|
+
* console.log(`Currently tracking ${allClients.length} clients`);
|
|
97
|
+
*/
|
|
98
|
+
getClients(): ClientInfo[];
|
|
99
|
+
/**
|
|
100
|
+
* Retrieves client information for a specific session ID.
|
|
101
|
+
*
|
|
102
|
+
* Returns the complete client info object for the given session ID, or undefined
|
|
103
|
+
* if no client with that session ID is currently being tracked.
|
|
104
|
+
*
|
|
105
|
+
* @param sessionId - The unique session identifier to look up
|
|
106
|
+
* @returns ClientInfo object if found, undefined otherwise
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* const client = clientTrackerService.getClient('session-123');
|
|
110
|
+
* if (client) {
|
|
111
|
+
* console.log(`Client ${client.clientName} is connected`);
|
|
112
|
+
* }
|
|
113
|
+
*/
|
|
114
|
+
getClient(sessionId: string): ClientInfo | undefined;
|
|
115
|
+
/**
|
|
116
|
+
* Cleans up stale client entries that haven't been seen recently.
|
|
117
|
+
*
|
|
118
|
+
* This private method is called periodically to remove clients that haven't
|
|
119
|
+
* sent any requests within the timeout period (5 minutes by default). When
|
|
120
|
+
* a client is removed, it publishes a 'client-disconnected' event to notify
|
|
121
|
+
* other services about the disconnection.
|
|
122
|
+
*
|
|
123
|
+
* This prevents memory leaks from accumulating disconnected clients and ensures
|
|
124
|
+
* that the client registry only contains active connections.
|
|
125
|
+
*
|
|
126
|
+
* @private
|
|
127
|
+
*/
|
|
128
|
+
private cleanup;
|
|
129
|
+
}
|
|
130
|
+
export declare const clientTrackerService: ClientTrackerService;
|
|
131
|
+
export {};
|
|
132
|
+
//# sourceMappingURL=client-tracker.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-tracker.service.d.ts","sourceRoot":"","sources":["../../../../src/services/client-tracker.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAO3F;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,cAAM,oBAAoB;IACxB,OAAO,CAAC,OAAO,CAAsC;IAErD,OAAO,KAAK,UAAU,GAErB;IAED;;;;;OAKG;;IAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,YAAY,CAAC,OAAO,EAAE,aAAa;IA2B1C;;;;;;;;;;;;;;;;;;;OAmBG;IACI,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;IAwB/D;;;;;;;;;;;;OAYG;IACI,UAAU,IAAI,UAAU,EAAE;IAIjC;;;;;;;;;;;;;;OAcG;IACI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI3D;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,OAAO;CAiBhB;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|