@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,63 @@
|
|
|
1
|
+
import type { RequestOptions, ServerInstanceInfo, ValidServer } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Type guard to validate that a server object has valid name and configuration.
|
|
4
|
+
*
|
|
5
|
+
* This function checks if the provided object is a valid server with both a non-empty
|
|
6
|
+
* name string and a configuration object, ensuring type safety for server operations.
|
|
7
|
+
*
|
|
8
|
+
* @param {unknown} server - Object to validate as a server
|
|
9
|
+
* @returns {boolean} True if the object is a valid server with name and config
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const server = { name: 'my-server', config: { type: 'stdio' } };
|
|
14
|
+
* if (hasValidId(server)) {
|
|
15
|
+
* // TypeScript knows server is properly typed
|
|
16
|
+
* console.log(server.name);
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function hasValidId(server: unknown): server is ValidServer;
|
|
21
|
+
/**
|
|
22
|
+
* Selects the best server instance based on server name and request options.
|
|
23
|
+
*
|
|
24
|
+
* This function resolves a server name to its configuration and instance details,
|
|
25
|
+
* handling both single and multiple instance scenarios. Currently, it returns
|
|
26
|
+
* the first instance for multi-instance servers, but the architecture supports
|
|
27
|
+
* future extensions for intelligent instance selection based on session ID,
|
|
28
|
+
* tags, client ID, or load conditions.
|
|
29
|
+
*
|
|
30
|
+
* The function performs the following steps:
|
|
31
|
+
* 1. Retrieves all instances of the specified server name
|
|
32
|
+
* 2. Returns undefined if no instances are found
|
|
33
|
+
* 3. Gets the server configuration from the hub manager
|
|
34
|
+
* 4. For single-instance servers, returns the instance directly
|
|
35
|
+
* 5. For multi-instance servers, currently returns the first instance (with future extension support)
|
|
36
|
+
*
|
|
37
|
+
* Future extensions planned include:
|
|
38
|
+
* - Session-aware instance selection based on sessionId
|
|
39
|
+
* - Tag-based instance selection for matching specific requirements
|
|
40
|
+
* - Load-balancing across multiple instances
|
|
41
|
+
* - Client-specific instance assignment
|
|
42
|
+
*
|
|
43
|
+
* @param {string} serverName - Name of the server to select an instance for
|
|
44
|
+
* @param {RequestOptions} [requestOptions] - Optional request options for instance selection
|
|
45
|
+
* @returns {{ name: string; config: ServerConfig; instance: ServerInstanceConfig & Record<string, unknown> } | undefined}
|
|
46
|
+
* Server information with configuration and instance details, or undefined if not found
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const serverInfo = selectBestInstance('my-mcp-server');
|
|
51
|
+
* if (serverInfo) {
|
|
52
|
+
* console.log(`Selected instance: ${serverInfo.instance.id}`);
|
|
53
|
+
* }
|
|
54
|
+
*
|
|
55
|
+
* // With request options (future extension)
|
|
56
|
+
* const serverInfoWithOptions = selectBestInstance('my-mcp-server', {
|
|
57
|
+
* sessionId: 'session-123',
|
|
58
|
+
* tags: { environment: 'production' }
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function selectBestInstance(serverName: string, requestOptions?: RequestOptions): ServerInstanceInfo | undefined;
|
|
63
|
+
//# sourceMappingURL=server-selector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-selector.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/server-selector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAElF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,WAAW,CAMjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,cAAc,GAC9B,kBAAkB,GAAG,SAAS,CA+ChC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { hubManager } from '../hub-manager.service.js';
|
|
2
|
+
/**
|
|
3
|
+
* Type guard to validate that a server object has valid name and configuration.
|
|
4
|
+
*
|
|
5
|
+
* This function checks if the provided object is a valid server with both a non-empty
|
|
6
|
+
* name string and a configuration object, ensuring type safety for server operations.
|
|
7
|
+
*
|
|
8
|
+
* @param {unknown} server - Object to validate as a server
|
|
9
|
+
* @returns {boolean} True if the object is a valid server with name and config
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const server = { name: 'my-server', config: { type: 'stdio' } };
|
|
14
|
+
* if (hasValidId(server)) {
|
|
15
|
+
* // TypeScript knows server is properly typed
|
|
16
|
+
* console.log(server.name);
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function hasValidId(server) {
|
|
21
|
+
if (typeof server !== 'object' || server === null) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
const s = server;
|
|
25
|
+
return typeof s.name === 'string' && s.name.length > 0 && typeof s.config === 'object';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Selects the best server instance based on server name and request options.
|
|
29
|
+
*
|
|
30
|
+
* This function resolves a server name to its configuration and instance details,
|
|
31
|
+
* handling both single and multiple instance scenarios. Currently, it returns
|
|
32
|
+
* the first instance for multi-instance servers, but the architecture supports
|
|
33
|
+
* future extensions for intelligent instance selection based on session ID,
|
|
34
|
+
* tags, client ID, or load conditions.
|
|
35
|
+
*
|
|
36
|
+
* The function performs the following steps:
|
|
37
|
+
* 1. Retrieves all instances of the specified server name
|
|
38
|
+
* 2. Returns undefined if no instances are found
|
|
39
|
+
* 3. Gets the server configuration from the hub manager
|
|
40
|
+
* 4. For single-instance servers, returns the instance directly
|
|
41
|
+
* 5. For multi-instance servers, currently returns the first instance (with future extension support)
|
|
42
|
+
*
|
|
43
|
+
* Future extensions planned include:
|
|
44
|
+
* - Session-aware instance selection based on sessionId
|
|
45
|
+
* - Tag-based instance selection for matching specific requirements
|
|
46
|
+
* - Load-balancing across multiple instances
|
|
47
|
+
* - Client-specific instance assignment
|
|
48
|
+
*
|
|
49
|
+
* @param {string} serverName - Name of the server to select an instance for
|
|
50
|
+
* @param {RequestOptions} [requestOptions] - Optional request options for instance selection
|
|
51
|
+
* @returns {{ name: string; config: ServerConfig; instance: ServerInstanceConfig & Record<string, unknown> } | undefined}
|
|
52
|
+
* Server information with configuration and instance details, or undefined if not found
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const serverInfo = selectBestInstance('my-mcp-server');
|
|
57
|
+
* if (serverInfo) {
|
|
58
|
+
* console.log(`Selected instance: ${serverInfo.instance.id}`);
|
|
59
|
+
* }
|
|
60
|
+
*
|
|
61
|
+
* // With request options (future extension)
|
|
62
|
+
* const serverInfoWithOptions = selectBestInstance('my-mcp-server', {
|
|
63
|
+
* sessionId: 'session-123',
|
|
64
|
+
* tags: { environment: 'production' }
|
|
65
|
+
* });
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export function selectBestInstance(serverName, requestOptions) {
|
|
69
|
+
// Get all instances of the server
|
|
70
|
+
const instances = hubManager.getServerInstanceByName(serverName);
|
|
71
|
+
if (instances.length === 0) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
// Get server configuration
|
|
75
|
+
const serverConfig = hubManager.getServerByName(serverName);
|
|
76
|
+
if (!serverConfig) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
// If there's only one instance, return it directly
|
|
80
|
+
if (instances.length === 1) {
|
|
81
|
+
return {
|
|
82
|
+
name: serverName,
|
|
83
|
+
config: serverConfig,
|
|
84
|
+
instance: instances[0]
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// Multi-instance selection logic (for future extension)
|
|
88
|
+
// Currently simplified implementation: return the first instance
|
|
89
|
+
// Future extensions could support:
|
|
90
|
+
// - Selecting specific instance based on sessionId
|
|
91
|
+
// - Selecting optimal instance based on tags matching
|
|
92
|
+
// - Selecting dedicated instance based on client ID
|
|
93
|
+
// - Selecting instance based on load conditions
|
|
94
|
+
// Although requestOptions is not currently used, it's kept for future extension
|
|
95
|
+
if (requestOptions?.sessionId) {
|
|
96
|
+
// In the future, specific instance can be selected based on sessionId
|
|
97
|
+
// Currently return the first instance temporarily
|
|
98
|
+
}
|
|
99
|
+
if (requestOptions?.tags) {
|
|
100
|
+
// In the future, optimal instance can be selected based on tags matching
|
|
101
|
+
// Currently return the first instance temporarily
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
name: serverName,
|
|
105
|
+
config: serverConfig,
|
|
106
|
+
instance: instances[0] // Will be extended to intelligent selection logic later
|
|
107
|
+
};
|
|
108
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { JsonSchema } from '../../../shared/models/tool.model.js';
|
|
2
|
+
/**
|
|
3
|
+
* Tool annotation configuration.
|
|
4
|
+
*/
|
|
5
|
+
export interface ToolAnnotations {
|
|
6
|
+
title?: string;
|
|
7
|
+
readOnlyHint?: boolean;
|
|
8
|
+
destructiveHint?: boolean;
|
|
9
|
+
idempotentHint?: boolean;
|
|
10
|
+
openWorldHint?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* System tool definition structure.
|
|
14
|
+
*/
|
|
15
|
+
export interface SystemToolDefinition {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
inputSchema: JsonSchema;
|
|
19
|
+
annotations?: ToolAnnotations;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Retrieves the complete list of system tools provided by this service.
|
|
23
|
+
*
|
|
24
|
+
* This method generates system tool configurations based on the SYSTEM_TOOL_NAMES constant,
|
|
25
|
+
* ensuring consistency with the defined system tool names. Each tool includes its name,
|
|
26
|
+
* description, input schema, and annotations for proper client-side rendering and behavior.
|
|
27
|
+
*
|
|
28
|
+
* The method implements all standard system tools:
|
|
29
|
+
* - list-servers: List all connected servers
|
|
30
|
+
* - find-servers: Find servers matching a pattern
|
|
31
|
+
* - list-all-tools-in-server: List tools from a specific server
|
|
32
|
+
* - find-tools-in-server: Find tools in a specific server
|
|
33
|
+
* - get-tool: Get complete tool schema
|
|
34
|
+
* - call-tool: Call a specific tool from a specific server
|
|
35
|
+
* - find-tools: Find tools across all servers
|
|
36
|
+
*
|
|
37
|
+
* @returns {Array<{ name: string; description: string; inputSchema: JsonSchema; annotations?: ToolAnnotations }>}
|
|
38
|
+
* Array of system tool configurations
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const systemTools = getSystemTools();
|
|
43
|
+
* console.log(`Available system tools: ${systemTools.length}`);
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function getSystemTools(): SystemToolDefinition[];
|
|
47
|
+
//# sourceMappingURL=system-tool-definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-tool-definitions.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/system-tool-definitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAY/D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,IAAI,oBAAoB,EAAE,CAwMvD"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { SYSTEM_TOOL_NAMES, LIST_SERVERS_TOOL, FIND_SERVERS_TOOL, LIST_ALL_TOOLS_IN_SERVER_TOOL, FIND_TOOLS_IN_SERVER_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, FIND_TOOLS_TOOL } from '../../models/system-tools.constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* Retrieves the complete list of system tools provided by this service.
|
|
4
|
+
*
|
|
5
|
+
* This method generates system tool configurations based on the SYSTEM_TOOL_NAMES constant,
|
|
6
|
+
* ensuring consistency with the defined system tool names. Each tool includes its name,
|
|
7
|
+
* description, input schema, and annotations for proper client-side rendering and behavior.
|
|
8
|
+
*
|
|
9
|
+
* The method implements all standard system tools:
|
|
10
|
+
* - list-servers: List all connected servers
|
|
11
|
+
* - find-servers: Find servers matching a pattern
|
|
12
|
+
* - list-all-tools-in-server: List tools from a specific server
|
|
13
|
+
* - find-tools-in-server: Find tools in a specific server
|
|
14
|
+
* - get-tool: Get complete tool schema
|
|
15
|
+
* - call-tool: Call a specific tool from a specific server
|
|
16
|
+
* - find-tools: Find tools across all servers
|
|
17
|
+
*
|
|
18
|
+
* @returns {Array<{ name: string; description: string; inputSchema: JsonSchema; annotations?: ToolAnnotations }>}
|
|
19
|
+
* Array of system tool configurations
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const systemTools = getSystemTools();
|
|
24
|
+
* console.log(`Available system tools: ${systemTools.length}`);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function getSystemTools() {
|
|
28
|
+
const systemTools = [];
|
|
29
|
+
// Build system tools based on the constant array to ensure consistency
|
|
30
|
+
for (const toolName of SYSTEM_TOOL_NAMES) {
|
|
31
|
+
switch (toolName) {
|
|
32
|
+
case LIST_SERVERS_TOOL:
|
|
33
|
+
systemTools.push({
|
|
34
|
+
name: toolName,
|
|
35
|
+
description: 'List all connected servers',
|
|
36
|
+
inputSchema: {
|
|
37
|
+
type: 'object',
|
|
38
|
+
properties: {}
|
|
39
|
+
},
|
|
40
|
+
annotations: {
|
|
41
|
+
title: 'List Servers',
|
|
42
|
+
readOnlyHint: true,
|
|
43
|
+
destructiveHint: false,
|
|
44
|
+
idempotentHint: true,
|
|
45
|
+
openWorldHint: false
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
break;
|
|
49
|
+
case FIND_SERVERS_TOOL:
|
|
50
|
+
systemTools.push({
|
|
51
|
+
name: toolName,
|
|
52
|
+
description: 'Find servers matching a pattern',
|
|
53
|
+
inputSchema: {
|
|
54
|
+
type: 'object',
|
|
55
|
+
properties: {
|
|
56
|
+
pattern: { type: 'string', description: 'Regex pattern to search for' },
|
|
57
|
+
searchIn: {
|
|
58
|
+
type: 'string',
|
|
59
|
+
enum: ['name', 'description', 'both'],
|
|
60
|
+
default: 'both'
|
|
61
|
+
},
|
|
62
|
+
caseSensitive: { type: 'boolean', default: false }
|
|
63
|
+
},
|
|
64
|
+
required: ['pattern']
|
|
65
|
+
},
|
|
66
|
+
annotations: {
|
|
67
|
+
title: 'Find Servers',
|
|
68
|
+
readOnlyHint: true,
|
|
69
|
+
destructiveHint: false,
|
|
70
|
+
idempotentHint: true,
|
|
71
|
+
openWorldHint: false
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
break;
|
|
75
|
+
case LIST_ALL_TOOLS_IN_SERVER_TOOL:
|
|
76
|
+
systemTools.push({
|
|
77
|
+
name: toolName,
|
|
78
|
+
description: 'List all tools from a specific server',
|
|
79
|
+
inputSchema: {
|
|
80
|
+
type: 'object',
|
|
81
|
+
properties: {
|
|
82
|
+
serverName: { type: 'string', description: 'Name of the MCP server' },
|
|
83
|
+
requestOptions: {
|
|
84
|
+
type: 'object',
|
|
85
|
+
properties: {
|
|
86
|
+
sessionId: { type: 'string', description: 'Session ID for instance selection' },
|
|
87
|
+
tags: { type: 'object', description: 'Tags for instance selection' }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
required: ['serverName']
|
|
92
|
+
},
|
|
93
|
+
annotations: {
|
|
94
|
+
title: 'List Tools in Server',
|
|
95
|
+
readOnlyHint: true,
|
|
96
|
+
destructiveHint: false,
|
|
97
|
+
idempotentHint: true,
|
|
98
|
+
openWorldHint: false
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
break;
|
|
102
|
+
case FIND_TOOLS_IN_SERVER_TOOL:
|
|
103
|
+
systemTools.push({
|
|
104
|
+
name: toolName,
|
|
105
|
+
description: 'Find tools matching a pattern in a specific server',
|
|
106
|
+
inputSchema: {
|
|
107
|
+
type: 'object',
|
|
108
|
+
properties: {
|
|
109
|
+
serverName: { type: 'string', description: 'Name of the MCP server' },
|
|
110
|
+
pattern: { type: 'string', description: 'Regex pattern to search for' },
|
|
111
|
+
searchIn: {
|
|
112
|
+
type: 'string',
|
|
113
|
+
enum: ['name', 'description', 'both'],
|
|
114
|
+
default: 'both'
|
|
115
|
+
},
|
|
116
|
+
caseSensitive: { type: 'boolean', default: false },
|
|
117
|
+
requestOptions: {
|
|
118
|
+
type: 'object',
|
|
119
|
+
properties: {
|
|
120
|
+
sessionId: { type: 'string', description: 'Session ID for instance selection' },
|
|
121
|
+
tags: { type: 'object', description: 'Tags for instance selection' }
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
required: ['serverName', 'pattern']
|
|
126
|
+
},
|
|
127
|
+
annotations: {
|
|
128
|
+
title: 'Find Tools in Server',
|
|
129
|
+
readOnlyHint: true,
|
|
130
|
+
destructiveHint: false,
|
|
131
|
+
idempotentHint: true,
|
|
132
|
+
openWorldHint: false
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
break;
|
|
136
|
+
case GET_TOOL_TOOL:
|
|
137
|
+
systemTools.push({
|
|
138
|
+
name: toolName,
|
|
139
|
+
description: 'Get complete schema for a specific tool from a specific server',
|
|
140
|
+
inputSchema: {
|
|
141
|
+
type: 'object',
|
|
142
|
+
properties: {
|
|
143
|
+
serverName: { type: 'string', description: 'Name of the MCP server' },
|
|
144
|
+
toolName: { type: 'string', description: 'Exact name of the tool' },
|
|
145
|
+
requestOptions: {
|
|
146
|
+
type: 'object',
|
|
147
|
+
properties: {
|
|
148
|
+
sessionId: { type: 'string', description: 'Session ID for instance selection' },
|
|
149
|
+
tags: { type: 'object', description: 'Tags for instance selection' }
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
required: ['serverName', 'toolName']
|
|
154
|
+
},
|
|
155
|
+
annotations: {
|
|
156
|
+
title: 'Get Tool Details',
|
|
157
|
+
readOnlyHint: true,
|
|
158
|
+
destructiveHint: false,
|
|
159
|
+
idempotentHint: true,
|
|
160
|
+
openWorldHint: false
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
break;
|
|
164
|
+
case CALL_TOOL_TOOL:
|
|
165
|
+
systemTools.push({
|
|
166
|
+
name: toolName,
|
|
167
|
+
description: 'Call a specific tool from a specific server',
|
|
168
|
+
inputSchema: {
|
|
169
|
+
type: 'object',
|
|
170
|
+
properties: {
|
|
171
|
+
serverName: { type: 'string', description: 'Name of the MCP server' },
|
|
172
|
+
toolName: { type: 'string', description: 'Name of the tool to call' },
|
|
173
|
+
toolArgs: { type: 'object', description: 'Arguments to pass to the tool' },
|
|
174
|
+
requestOptions: {
|
|
175
|
+
type: 'object',
|
|
176
|
+
properties: {
|
|
177
|
+
sessionId: { type: 'string', description: 'Session ID for instance selection' },
|
|
178
|
+
tags: { type: 'object', description: 'Tags for instance selection' }
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
required: ['serverName', 'toolName', 'toolArgs']
|
|
183
|
+
},
|
|
184
|
+
annotations: {
|
|
185
|
+
title: 'Call Tool',
|
|
186
|
+
readOnlyHint: false,
|
|
187
|
+
destructiveHint: false,
|
|
188
|
+
idempotentHint: false,
|
|
189
|
+
openWorldHint: true
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
break;
|
|
193
|
+
case FIND_TOOLS_TOOL:
|
|
194
|
+
systemTools.push({
|
|
195
|
+
name: toolName,
|
|
196
|
+
description: 'Find tools matching a pattern across all connected servers',
|
|
197
|
+
inputSchema: {
|
|
198
|
+
type: 'object',
|
|
199
|
+
properties: {
|
|
200
|
+
pattern: { type: 'string', description: 'Regex pattern to search for' },
|
|
201
|
+
searchIn: {
|
|
202
|
+
type: 'string',
|
|
203
|
+
enum: ['name', 'description', 'both'],
|
|
204
|
+
default: 'both'
|
|
205
|
+
},
|
|
206
|
+
caseSensitive: { type: 'boolean', default: false }
|
|
207
|
+
},
|
|
208
|
+
required: ['pattern']
|
|
209
|
+
},
|
|
210
|
+
annotations: {
|
|
211
|
+
title: 'Find Tools',
|
|
212
|
+
readOnlyHint: true,
|
|
213
|
+
destructiveHint: false,
|
|
214
|
+
idempotentHint: true,
|
|
215
|
+
openWorldHint: false
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
break;
|
|
219
|
+
default:
|
|
220
|
+
// This should never happen due to TypeScript type checking
|
|
221
|
+
throw new Error(`Unknown system tool: ${toolName}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return systemTools;
|
|
225
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { Tool } from '../../../shared/models/tool.model.js';
|
|
2
|
+
import type { RequestOptions } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Search options for server searches.
|
|
5
|
+
*/
|
|
6
|
+
export interface SearchOptions {
|
|
7
|
+
searchIn?: 'name' | 'description' | 'both';
|
|
8
|
+
caseSensitive?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Finds servers matching a specified regex pattern.
|
|
12
|
+
*
|
|
13
|
+
* This method searches through all configured servers using the provided regex pattern,
|
|
14
|
+
* supporting flexible search options including case sensitivity and search scope
|
|
15
|
+
* (name, description, or both). It returns an array of matching server names.
|
|
16
|
+
*
|
|
17
|
+
* @param {string} pattern - Regex pattern to search for in server names and descriptions
|
|
18
|
+
* @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
|
|
19
|
+
* @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
|
|
20
|
+
* @returns {Promise<string[]>} Array of matching server names
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // Find servers with 'api' in their name (case-insensitive)
|
|
25
|
+
* const apiServers = await findServers('api');
|
|
26
|
+
*
|
|
27
|
+
* // Find servers with exact case match
|
|
28
|
+
* const exactMatch = await findServers('^MyServer$', 'name', true);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function findServers(pattern: string, searchIn?: 'name' | 'description' | 'both', caseSensitive?: boolean): Promise<string[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Finds tools matching a pattern within a specific MCP server.
|
|
34
|
+
*
|
|
35
|
+
* This method searches through all tools available from the specified server using
|
|
36
|
+
* the provided regex pattern, supporting flexible search options including case
|
|
37
|
+
* sensitivity and search scope (name, description, or both). It returns matching
|
|
38
|
+
* tools grouped by server name.
|
|
39
|
+
*
|
|
40
|
+
* @param {string} serverName - Name of the MCP server to search tools in
|
|
41
|
+
* @param {string} pattern - Regex pattern to search for in tool names and descriptions
|
|
42
|
+
* @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
|
|
43
|
+
* @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
|
|
44
|
+
* @param {RequestOptions} [requestOptions] - Optional request options for instance selection
|
|
45
|
+
* @returns {Promise<{ serverName: string; tools: Tool[] }>} Object containing server name and matching tools
|
|
46
|
+
* @throws {Error} If the specified server is not found or not connected
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const result = await findToolsInServer('my-mcp-server', 'list');
|
|
51
|
+
* console.log(`Found ${result.tools.length} tools matching 'list'`);
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function findToolsInServer(serverName: string, pattern: string, searchIn?: 'name' | 'description' | 'both', caseSensitive?: boolean, requestOptions?: RequestOptions): Promise<{
|
|
55
|
+
serverName: string;
|
|
56
|
+
tools: Tool[];
|
|
57
|
+
}>;
|
|
58
|
+
/**
|
|
59
|
+
* Finds tools matching a pattern across all connected MCP servers.
|
|
60
|
+
*
|
|
61
|
+
* This method searches through all available tools from all connected servers using the
|
|
62
|
+
* provided regex pattern, supporting flexible search options including case sensitivity
|
|
63
|
+
* and search scope (name, description, or both). It returns matching tools grouped by
|
|
64
|
+
* their originating server names.
|
|
65
|
+
*
|
|
66
|
+
* @param {string} pattern - Regex pattern to search for in tool names and descriptions
|
|
67
|
+
* @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
|
|
68
|
+
* @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
|
|
69
|
+
* @param {() => Promise<Record<string, { tools: Tool[] }>>} listAllToolsFn - Function to list all tools
|
|
70
|
+
* @returns {Promise<Record<string, { tools: Tool[] }>>} Object mapping server names to matching tools
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const matchingTools = await findTools('list');
|
|
75
|
+
* Object.entries(matchingTools).forEach(([serverName, { tools }]) => {
|
|
76
|
+
* console.log(`${serverName}: ${tools.length} matching tools`);
|
|
77
|
+
* });
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function findTools(pattern: string, searchIn: "name" | "description" | "both" | undefined, caseSensitive: boolean | undefined, listAllToolsFn: () => Promise<Record<string, {
|
|
81
|
+
tools: Tool[];
|
|
82
|
+
}>>): Promise<Record<string, {
|
|
83
|
+
tools: Tool[];
|
|
84
|
+
}>>;
|
|
85
|
+
//# sourceMappingURL=tool-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-search.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/tool-search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,aAAa,GAAG,MAAe,EAClD,aAAa,GAAE,OAAe,GAC7B,OAAO,CAAC,MAAM,EAAE,CAAC,CAYnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,aAAa,GAAG,MAAe,EAClD,aAAa,GAAE,OAAe,EAC9B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf,CAAC,CAqBD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,YAAS,EAClD,aAAa,EAAE,OAAO,YAAQ,EAC9B,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CAAC,GAC/D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CAAC,CAsB5C"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { hubManager } from '../hub-manager.service.js';
|
|
2
|
+
import { mcpConnectionManager } from '../mcp-connection-manager.js';
|
|
3
|
+
import { hasValidId, selectBestInstance } from './server-selector.js';
|
|
4
|
+
/**
|
|
5
|
+
* Finds servers matching a specified regex pattern.
|
|
6
|
+
*
|
|
7
|
+
* This method searches through all configured servers using the provided regex pattern,
|
|
8
|
+
* supporting flexible search options including case sensitivity and search scope
|
|
9
|
+
* (name, description, or both). It returns an array of matching server names.
|
|
10
|
+
*
|
|
11
|
+
* @param {string} pattern - Regex pattern to search for in server names and descriptions
|
|
12
|
+
* @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
|
|
13
|
+
* @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
|
|
14
|
+
* @returns {Promise<string[]>} Array of matching server names
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Find servers with 'api' in their name (case-insensitive)
|
|
19
|
+
* const apiServers = await findServers('api');
|
|
20
|
+
*
|
|
21
|
+
* // Find servers with exact case match
|
|
22
|
+
* const exactMatch = await findServers('^MyServer$', 'name', true);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export async function findServers(pattern, searchIn = 'both', caseSensitive = false) {
|
|
26
|
+
const allServers = hubManager.getAllServers();
|
|
27
|
+
const validServers = allServers.filter(hasValidId);
|
|
28
|
+
const regex = new RegExp(pattern, caseSensitive ? '' : 'i');
|
|
29
|
+
return validServers
|
|
30
|
+
.filter((server) => {
|
|
31
|
+
const matchName = searchIn !== 'description' && regex.test(server.name);
|
|
32
|
+
const matchDescription = searchIn !== 'name' && server.name && regex.test(server.name); // Using name as fallback if no description
|
|
33
|
+
return matchName || matchDescription;
|
|
34
|
+
})
|
|
35
|
+
.map((server) => server.name);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Finds tools matching a pattern within a specific MCP server.
|
|
39
|
+
*
|
|
40
|
+
* This method searches through all tools available from the specified server using
|
|
41
|
+
* the provided regex pattern, supporting flexible search options including case
|
|
42
|
+
* sensitivity and search scope (name, description, or both). It returns matching
|
|
43
|
+
* tools grouped by server name.
|
|
44
|
+
*
|
|
45
|
+
* @param {string} serverName - Name of the MCP server to search tools in
|
|
46
|
+
* @param {string} pattern - Regex pattern to search for in tool names and descriptions
|
|
47
|
+
* @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
|
|
48
|
+
* @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
|
|
49
|
+
* @param {RequestOptions} [requestOptions] - Optional request options for instance selection
|
|
50
|
+
* @returns {Promise<{ serverName: string; tools: Tool[] }>} Object containing server name and matching tools
|
|
51
|
+
* @throws {Error} If the specified server is not found or not connected
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const result = await findToolsInServer('my-mcp-server', 'list');
|
|
56
|
+
* console.log(`Found ${result.tools.length} tools matching 'list'`);
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export async function findToolsInServer(serverName, pattern, searchIn = 'both', caseSensitive = false, requestOptions) {
|
|
60
|
+
const serverInfo = selectBestInstance(serverName, requestOptions);
|
|
61
|
+
if (!serverInfo) {
|
|
62
|
+
throw new Error(`Server not found: ${serverName}`);
|
|
63
|
+
}
|
|
64
|
+
const tools = mcpConnectionManager.getTools(serverInfo.instance.id);
|
|
65
|
+
const regex = new RegExp(pattern, caseSensitive ? '' : 'i');
|
|
66
|
+
const matchingTools = tools.filter((tool) => {
|
|
67
|
+
const matchName = searchIn !== 'description' && regex.test(tool.name);
|
|
68
|
+
const matchDescription = searchIn !== 'name' && tool.description && regex.test(tool.description);
|
|
69
|
+
return matchName || matchDescription;
|
|
70
|
+
});
|
|
71
|
+
return {
|
|
72
|
+
serverName: serverName,
|
|
73
|
+
tools: matchingTools
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Finds tools matching a pattern across all connected MCP servers.
|
|
78
|
+
*
|
|
79
|
+
* This method searches through all available tools from all connected servers using the
|
|
80
|
+
* provided regex pattern, supporting flexible search options including case sensitivity
|
|
81
|
+
* and search scope (name, description, or both). It returns matching tools grouped by
|
|
82
|
+
* their originating server names.
|
|
83
|
+
*
|
|
84
|
+
* @param {string} pattern - Regex pattern to search for in tool names and descriptions
|
|
85
|
+
* @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
|
|
86
|
+
* @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
|
|
87
|
+
* @param {() => Promise<Record<string, { tools: Tool[] }>>} listAllToolsFn - Function to list all tools
|
|
88
|
+
* @returns {Promise<Record<string, { tools: Tool[] }>>} Object mapping server names to matching tools
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* const matchingTools = await findTools('list');
|
|
93
|
+
* Object.entries(matchingTools).forEach(([serverName, { tools }]) => {
|
|
94
|
+
* console.log(`${serverName}: ${tools.length} matching tools`);
|
|
95
|
+
* });
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export async function findTools(pattern, searchIn = 'both', caseSensitive = false, listAllToolsFn) {
|
|
99
|
+
const allTools = await listAllToolsFn();
|
|
100
|
+
const regex = new RegExp(pattern, caseSensitive ? '' : 'i');
|
|
101
|
+
const matchingTools = {};
|
|
102
|
+
for (const [serverName, serverData] of Object.entries(allTools)) {
|
|
103
|
+
const filteredTools = serverData.tools.filter((tool) => {
|
|
104
|
+
const matchName = searchIn !== 'description' && regex.test(tool.name);
|
|
105
|
+
const matchDescription = searchIn !== 'name' && tool.description && regex.test(tool.description);
|
|
106
|
+
return matchName || matchDescription;
|
|
107
|
+
});
|
|
108
|
+
if (filteredTools.length > 0) {
|
|
109
|
+
matchingTools[serverName] = {
|
|
110
|
+
tools: filteredTools
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return matchingTools;
|
|
115
|
+
}
|