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