@eclipse-glsp/server-mcp 2.7.0-next.10 → 2.7.0-next.14
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/README.md +17 -3
- package/browser.d.ts +16 -0
- package/browser.js +18 -0
- package/common.d.ts +16 -0
- package/common.js +18 -0
- package/lib/browser/index.d.ts +21 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +37 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/modules/browser-mcp-server-module.d.ts +42 -0
- package/lib/browser/modules/browser-mcp-server-module.d.ts.map +1 -0
- package/lib/browser/modules/browser-mcp-server-module.js +50 -0
- package/lib/browser/modules/browser-mcp-server-module.js.map +1 -0
- package/lib/browser/reexport.d.ts +17 -0
- package/lib/browser/reexport.d.ts.map +1 -0
- package/lib/browser/reexport.js +33 -0
- package/lib/browser/reexport.js.map +1 -0
- package/lib/browser/server/browser-mcp-request-context.d.ts +27 -0
- package/lib/browser/server/browser-mcp-request-context.d.ts.map +1 -0
- package/lib/browser/server/browser-mcp-request-context.js +67 -0
- package/lib/browser/server/browser-mcp-request-context.js.map +1 -0
- package/lib/browser/server/mcp-worker-bridge.d.ts +81 -0
- package/lib/browser/server/mcp-worker-bridge.d.ts.map +1 -0
- package/lib/browser/server/mcp-worker-bridge.js +159 -0
- package/lib/browser/server/mcp-worker-bridge.js.map +1 -0
- package/lib/browser/server/web-mcp-server-launcher.d.ts +34 -0
- package/lib/browser/server/web-mcp-server-launcher.d.ts.map +1 -0
- package/lib/browser/server/web-mcp-server-launcher.js +50 -0
- package/lib/browser/server/web-mcp-server-launcher.js.map +1 -0
- package/lib/{index.d.ts → common/index.d.ts} +3 -4
- package/lib/common/index.d.ts.map +1 -0
- package/lib/{index.js → common/index.js} +17 -18
- package/lib/common/index.js.map +1 -0
- package/lib/{modules/mcp-server-module.d.ts → common/modules/abstract-mcp-server-module.d.ts} +46 -37
- package/lib/common/modules/abstract-mcp-server-module.d.ts.map +1 -0
- package/lib/{modules/mcp-server-module.js → common/modules/abstract-mcp-server-module.js} +43 -66
- package/lib/common/modules/abstract-mcp-server-module.js.map +1 -0
- package/lib/common/modules/mcp-diagram-module.d.ts.map +1 -0
- package/lib/common/modules/mcp-diagram-module.js.map +1 -0
- package/lib/common/prompts/handlers/describe-diagram-mcp-prompt-handler.d.ts.map +1 -0
- package/lib/common/prompts/handlers/describe-diagram-mcp-prompt-handler.js.map +1 -0
- package/lib/common/prompts/handlers/suggest-improvements-mcp-prompt-handler.d.ts.map +1 -0
- package/lib/common/prompts/handlers/suggest-improvements-mcp-prompt-handler.js.map +1 -0
- package/lib/common/resources/handlers/diagram-png-mcp-resource-handler.d.ts.map +1 -0
- package/lib/common/resources/handlers/diagram-png-mcp-resource-handler.js.map +1 -0
- package/lib/common/resources/handlers/diagram-svg-mcp-resource-handler.d.ts.map +1 -0
- package/lib/common/resources/handlers/diagram-svg-mcp-resource-handler.js.map +1 -0
- package/lib/common/resources/services/element-types-provider.d.ts.map +1 -0
- package/lib/common/resources/services/element-types-provider.js.map +1 -0
- package/lib/common/resources/services/mcp-model-serializer.d.ts.map +1 -0
- package/lib/common/resources/services/mcp-model-serializer.js.map +1 -0
- package/lib/common/server/abstract-mcp-server-launcher.d.ts +168 -0
- package/lib/common/server/abstract-mcp-server-launcher.d.ts.map +1 -0
- package/lib/{server/mcp-server-launcher.js → common/server/abstract-mcp-server-launcher.js} +235 -121
- package/lib/common/server/abstract-mcp-server-launcher.js.map +1 -0
- package/lib/{server → common/server}/glsp-mcp-server.d.ts +1 -1
- package/lib/common/server/glsp-mcp-server.d.ts.map +1 -0
- package/lib/{server → common/server}/glsp-mcp-server.js +6 -1
- package/lib/common/server/glsp-mcp-server.js.map +1 -0
- package/lib/{server → common/server}/lru-event-store.d.ts +1 -1
- package/lib/common/server/lru-event-store.d.ts.map +1 -0
- package/lib/common/server/lru-event-store.js.map +1 -0
- package/lib/{server → common/server}/mcp-diagram-handler-dispatcher.d.ts +3 -1
- package/lib/common/server/mcp-diagram-handler-dispatcher.d.ts.map +1 -0
- package/lib/{server → common/server}/mcp-diagram-handler-dispatcher.js +12 -6
- package/lib/common/server/mcp-diagram-handler-dispatcher.js.map +1 -0
- package/lib/common/server/mcp-diagram-prompt-handler-registry.d.ts.map +1 -0
- package/lib/common/server/mcp-diagram-prompt-handler-registry.js.map +1 -0
- package/lib/common/server/mcp-diagram-resource-handler-registry.d.ts.map +1 -0
- package/lib/{server → common/server}/mcp-diagram-resource-handler-registry.js +4 -1
- package/lib/common/server/mcp-diagram-resource-handler-registry.js.map +1 -0
- package/lib/common/server/mcp-diagram-tool-handler-registry.d.ts.map +1 -0
- package/lib/{server → common/server}/mcp-diagram-tool-handler-registry.js +3 -1
- package/lib/common/server/mcp-diagram-tool-handler-registry.js.map +1 -0
- package/lib/common/server/mcp-handler-shared.d.ts.map +1 -0
- package/lib/common/server/mcp-handler-shared.js.map +1 -0
- package/lib/common/server/mcp-id-alias-service.d.ts.map +1 -0
- package/lib/common/server/mcp-id-alias-service.js.map +1 -0
- package/lib/{server → common/server}/mcp-input-schemas.d.ts +8 -0
- package/lib/common/server/mcp-input-schemas.d.ts.map +1 -0
- package/lib/{server → common/server}/mcp-input-schemas.js +13 -1
- package/lib/common/server/mcp-input-schemas.js.map +1 -0
- package/lib/common/server/mcp-label-provider.d.ts.map +1 -0
- package/lib/common/server/mcp-label-provider.js.map +1 -0
- package/lib/{server → common/server}/mcp-log-level-registry.d.ts +1 -1
- package/lib/common/server/mcp-log-level-registry.d.ts.map +1 -0
- package/lib/common/server/mcp-log-level-registry.js.map +1 -0
- package/lib/{server → common/server}/mcp-logger.d.ts +4 -2
- package/lib/common/server/mcp-logger.d.ts.map +1 -0
- package/lib/{server → common/server}/mcp-logger.js +11 -3
- package/lib/common/server/mcp-logger.js.map +1 -0
- package/lib/common/server/mcp-mime-types.d.ts.map +1 -0
- package/lib/common/server/mcp-mime-types.js.map +1 -0
- package/lib/{server → common/server}/mcp-options.d.ts +1 -1
- package/lib/common/server/mcp-options.d.ts.map +1 -0
- package/lib/{server → common/server}/mcp-options.js +1 -1
- package/lib/common/server/mcp-options.js.map +1 -0
- package/lib/{server → common/server}/mcp-progress-reporter.d.ts +4 -2
- package/lib/common/server/mcp-progress-reporter.d.ts.map +1 -0
- package/lib/{server → common/server}/mcp-progress-reporter.js +14 -3
- package/lib/common/server/mcp-progress-reporter.js.map +1 -0
- package/lib/{server → common/server}/mcp-prompt-handler.d.ts +3 -1
- package/lib/common/server/mcp-prompt-handler.d.ts.map +1 -0
- package/lib/{server → common/server}/mcp-prompt-handler.js +10 -2
- package/lib/common/server/mcp-prompt-handler.js.map +1 -0
- package/lib/common/server/mcp-request-context.d.ts +35 -0
- package/lib/common/server/mcp-request-context.d.ts.map +1 -0
- package/lib/common/server/mcp-request-context.js +30 -0
- package/lib/common/server/mcp-request-context.js.map +1 -0
- package/lib/{server → common/server}/mcp-resource-handler.d.ts +3 -1
- package/lib/common/server/mcp-resource-handler.d.ts.map +1 -0
- package/lib/{server → common/server}/mcp-resource-handler.js +13 -5
- package/lib/common/server/mcp-resource-handler.js.map +1 -0
- package/lib/common/server/mcp-session.d.ts.map +1 -0
- package/lib/common/server/mcp-session.js.map +1 -0
- package/lib/{server → common/server}/mcp-tool-handler.d.ts +3 -1
- package/lib/common/server/mcp-tool-handler.d.ts.map +1 -0
- package/lib/{server → common/server}/mcp-tool-handler.js +7 -1
- package/lib/{server → common/server}/mcp-tool-handler.js.map +1 -1
- package/lib/common/tools/handlers/count-elements-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/count-elements-mcp-tool-handler.js.map +1 -0
- package/lib/{tools → common/tools}/handlers/create-edges-mcp-tool-handler.d.ts +2 -0
- package/lib/common/tools/handlers/create-edges-mcp-tool-handler.d.ts.map +1 -0
- package/lib/{tools → common/tools}/handlers/create-edges-mcp-tool-handler.js +2 -1
- package/lib/common/tools/handlers/create-edges-mcp-tool-handler.js.map +1 -0
- package/lib/{tools → common/tools}/handlers/create-nodes-mcp-tool-handler.d.ts +2 -0
- package/lib/common/tools/handlers/create-nodes-mcp-tool-handler.d.ts.map +1 -0
- package/lib/{tools → common/tools}/handlers/create-nodes-mcp-tool-handler.js +2 -1
- package/lib/common/tools/handlers/create-nodes-mcp-tool-handler.js.map +1 -0
- package/lib/{tools → common/tools}/handlers/delete-elements-mcp-tool-handler.d.ts +2 -0
- package/lib/common/tools/handlers/delete-elements-mcp-tool-handler.d.ts.map +1 -0
- package/lib/{tools → common/tools}/handlers/delete-elements-mcp-tool-handler.js +4 -2
- package/lib/common/tools/handlers/delete-elements-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/diagram-model-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/diagram-model-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/element-types-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/element-types-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/get-selection-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/get-selection-mcp-tool-handler.js.map +1 -0
- package/lib/{tools → common/tools}/handlers/layout-mcp-tool-handler.d.ts +2 -0
- package/lib/common/tools/handlers/layout-mcp-tool-handler.d.ts.map +1 -0
- package/lib/{tools → common/tools}/handlers/layout-mcp-tool-handler.js +3 -2
- package/lib/common/tools/handlers/layout-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/modify-edges-mcp-tool-handler.d.ts.map +1 -0
- package/lib/{tools → common/tools}/handlers/modify-edges-mcp-tool-handler.js +1 -1
- package/lib/common/tools/handlers/modify-edges-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/modify-nodes-mcp-tool-handler.d.ts.map +1 -0
- package/lib/{tools → common/tools}/handlers/modify-nodes-mcp-tool-handler.js +1 -1
- package/lib/common/tools/handlers/modify-nodes-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/query-elements-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/query-elements-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/redo-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/redo-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/save-model-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/save-model-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/session-info-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/session-info-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/set-selection-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/set-selection-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/set-view-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/set-view-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/undo-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/undo-mcp-tool-handler.js.map +1 -0
- package/lib/common/tools/handlers/validate-diagram-mcp-tool-handler.d.ts.map +1 -0
- package/lib/common/tools/handlers/validate-diagram-mcp-tool-handler.js.map +1 -0
- package/lib/common/util/markdown-util.d.ts.map +1 -0
- package/lib/common/util/markdown-util.js.map +1 -0
- package/lib/common/util/mcp-util.d.ts.map +1 -0
- package/lib/common/util/mcp-util.js.map +1 -0
- package/lib/node/index.d.ts +20 -0
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/index.js +36 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/modules/node-mcp-server-module.d.ts +37 -0
- package/lib/node/modules/node-mcp-server-module.d.ts.map +1 -0
- package/lib/node/modules/node-mcp-server-module.js +52 -0
- package/lib/node/modules/node-mcp-server-module.js.map +1 -0
- package/lib/node/reexport.d.ts +17 -0
- package/lib/node/reexport.d.ts.map +1 -0
- package/lib/node/reexport.js +33 -0
- package/lib/node/reexport.js.map +1 -0
- package/lib/node/server/node-mcp-request-context.d.ts +24 -0
- package/lib/node/server/node-mcp-request-context.d.ts.map +1 -0
- package/lib/node/server/node-mcp-request-context.js +43 -0
- package/lib/node/server/node-mcp-request-context.js.map +1 -0
- package/lib/node/server/node-mcp-server-launcher.d.ts +55 -0
- package/lib/node/server/node-mcp-server-launcher.d.ts.map +1 -0
- package/lib/node/server/node-mcp-server-launcher.js +123 -0
- package/lib/node/server/node-mcp-server-launcher.js.map +1 -0
- package/node.d.ts +16 -0
- package/node.js +18 -0
- package/package.json +19 -13
- package/src/browser/index.ts +21 -0
- package/src/browser/modules/browser-mcp-server-module.ts +54 -0
- package/src/browser/reexport.ts +16 -0
- package/src/browser/server/browser-mcp-request-context.ts +59 -0
- package/src/browser/server/mcp-worker-bridge.ts +200 -0
- package/src/browser/server/web-mcp-server-launcher.ts +39 -0
- package/src/{index.ts → common/index.ts} +4 -4
- package/src/{modules/mcp-server-module.ts → common/modules/abstract-mcp-server-module.ts} +54 -68
- package/src/common/server/abstract-mcp-server-launcher.spec.ts +458 -0
- package/src/common/server/abstract-mcp-server-launcher.ts +524 -0
- package/src/{server → common/server}/glsp-mcp-server.ts +7 -2
- package/src/{server → common/server}/lru-event-store.ts +1 -1
- package/src/{server → common/server}/mcp-diagram-handler-dispatcher.ts +13 -9
- package/src/{server → common/server}/mcp-diagram-resource-handler-registry.ts +4 -1
- package/src/{server → common/server}/mcp-diagram-tool-handler-registry.ts +3 -1
- package/src/{server → common/server}/mcp-input-schemas.ts +13 -0
- package/src/{server → common/server}/mcp-log-level-registry.ts +1 -1
- package/src/{server → common/server}/mcp-logger.spec.ts +26 -18
- package/src/{server → common/server}/mcp-logger.ts +9 -5
- package/src/{server → common/server}/mcp-options.ts +1 -1
- package/src/{server → common/server}/mcp-progress-reporter.spec.ts +19 -9
- package/src/{server → common/server}/mcp-progress-reporter.ts +9 -5
- package/src/{server → common/server}/mcp-prompt-handler.ts +8 -4
- package/src/{server → common/server}/mcp-request-context.ts +20 -16
- package/src/{server → common/server}/mcp-resource-handler.ts +11 -7
- package/src/{server → common/server}/mcp-tool-handler.spec.ts +4 -4
- package/src/{server → common/server}/mcp-tool-handler.ts +8 -4
- package/src/{tools → common/tools}/handlers/create-edges-mcp-tool-handler.ts +9 -2
- package/src/{tools → common/tools}/handlers/create-nodes-mcp-tool-handler.ts +9 -2
- package/src/{tools → common/tools}/handlers/delete-elements-mcp-tool-handler.ts +5 -3
- package/src/{tools → common/tools}/handlers/layout-mcp-tool-handler.ts +4 -3
- package/src/{tools → common/tools}/handlers/modify-edges-mcp-tool-handler.ts +8 -2
- package/src/{tools → common/tools}/handlers/modify-nodes-mcp-tool-handler.ts +8 -2
- package/src/node/index.ts +20 -0
- package/src/node/modules/node-mcp-server-module.ts +56 -0
- package/src/node/reexport.ts +16 -0
- package/src/node/server/mcp-http-transport-e2e.spec.ts +297 -0
- package/src/node/server/node-mcp-request-context.ts +33 -0
- package/src/{server/mcp-server-launcher.spec.ts → node/server/node-mcp-server-launcher.spec.ts} +19 -8
- package/src/node/server/node-mcp-server-launcher.ts +130 -0
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/modules/mcp-diagram-module.d.ts.map +0 -1
- package/lib/modules/mcp-diagram-module.js.map +0 -1
- package/lib/modules/mcp-server-module.d.ts.map +0 -1
- package/lib/modules/mcp-server-module.js.map +0 -1
- package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.d.ts.map +0 -1
- package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.js.map +0 -1
- package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.d.ts.map +0 -1
- package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.js.map +0 -1
- package/lib/resources/handlers/diagram-png-mcp-resource-handler.d.ts.map +0 -1
- package/lib/resources/handlers/diagram-png-mcp-resource-handler.js.map +0 -1
- package/lib/resources/handlers/diagram-svg-mcp-resource-handler.d.ts.map +0 -1
- package/lib/resources/handlers/diagram-svg-mcp-resource-handler.js.map +0 -1
- package/lib/resources/services/element-types-provider.d.ts.map +0 -1
- package/lib/resources/services/element-types-provider.js.map +0 -1
- package/lib/resources/services/mcp-model-serializer.d.ts.map +0 -1
- package/lib/resources/services/mcp-model-serializer.js.map +0 -1
- package/lib/server/glsp-mcp-server.d.ts.map +0 -1
- package/lib/server/glsp-mcp-server.js.map +0 -1
- package/lib/server/lru-event-store.d.ts.map +0 -1
- package/lib/server/lru-event-store.js.map +0 -1
- package/lib/server/mcp-diagram-handler-dispatcher.d.ts.map +0 -1
- package/lib/server/mcp-diagram-handler-dispatcher.js.map +0 -1
- package/lib/server/mcp-diagram-prompt-handler-registry.d.ts.map +0 -1
- package/lib/server/mcp-diagram-prompt-handler-registry.js.map +0 -1
- package/lib/server/mcp-diagram-resource-handler-registry.d.ts.map +0 -1
- package/lib/server/mcp-diagram-resource-handler-registry.js.map +0 -1
- package/lib/server/mcp-diagram-tool-handler-registry.d.ts.map +0 -1
- package/lib/server/mcp-diagram-tool-handler-registry.js.map +0 -1
- package/lib/server/mcp-handler-shared.d.ts.map +0 -1
- package/lib/server/mcp-handler-shared.js.map +0 -1
- package/lib/server/mcp-http-transport.d.ts +0 -93
- package/lib/server/mcp-http-transport.d.ts.map +0 -1
- package/lib/server/mcp-http-transport.js +0 -350
- package/lib/server/mcp-http-transport.js.map +0 -1
- package/lib/server/mcp-id-alias-service.d.ts.map +0 -1
- package/lib/server/mcp-id-alias-service.js.map +0 -1
- package/lib/server/mcp-input-schemas.d.ts.map +0 -1
- package/lib/server/mcp-input-schemas.js.map +0 -1
- package/lib/server/mcp-label-provider.d.ts.map +0 -1
- package/lib/server/mcp-label-provider.js.map +0 -1
- package/lib/server/mcp-log-level-registry.d.ts.map +0 -1
- package/lib/server/mcp-log-level-registry.js.map +0 -1
- package/lib/server/mcp-logger.d.ts.map +0 -1
- package/lib/server/mcp-logger.js.map +0 -1
- package/lib/server/mcp-mime-types.d.ts.map +0 -1
- package/lib/server/mcp-mime-types.js.map +0 -1
- package/lib/server/mcp-options.d.ts.map +0 -1
- package/lib/server/mcp-options.js.map +0 -1
- package/lib/server/mcp-progress-reporter.d.ts.map +0 -1
- package/lib/server/mcp-progress-reporter.js.map +0 -1
- package/lib/server/mcp-prompt-handler.d.ts.map +0 -1
- package/lib/server/mcp-prompt-handler.js.map +0 -1
- package/lib/server/mcp-request-context.d.ts +0 -37
- package/lib/server/mcp-request-context.d.ts.map +0 -1
- package/lib/server/mcp-request-context.js +0 -37
- package/lib/server/mcp-request-context.js.map +0 -1
- package/lib/server/mcp-resource-handler.d.ts.map +0 -1
- package/lib/server/mcp-resource-handler.js.map +0 -1
- package/lib/server/mcp-server-launcher.d.ts +0 -143
- package/lib/server/mcp-server-launcher.d.ts.map +0 -1
- package/lib/server/mcp-server-launcher.js.map +0 -1
- package/lib/server/mcp-session.d.ts.map +0 -1
- package/lib/server/mcp-session.js.map +0 -1
- package/lib/server/mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/count-elements-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/count-elements-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/create-edges-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/create-edges-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/create-nodes-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/create-nodes-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/delete-elements-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/delete-elements-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/diagram-model-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/diagram-model-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/element-types-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/element-types-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/get-selection-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/get-selection-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/layout-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/layout-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/modify-edges-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/modify-edges-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/modify-nodes-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/modify-nodes-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/query-elements-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/query-elements-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/redo-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/redo-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/save-model-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/save-model-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/session-info-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/session-info-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/set-selection-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/set-selection-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/set-view-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/set-view-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/undo-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/undo-mcp-tool-handler.js.map +0 -1
- package/lib/tools/handlers/validate-diagram-mcp-tool-handler.d.ts.map +0 -1
- package/lib/tools/handlers/validate-diagram-mcp-tool-handler.js.map +0 -1
- package/lib/util/markdown-util.d.ts.map +0 -1
- package/lib/util/markdown-util.js.map +0 -1
- package/lib/util/mcp-util.d.ts.map +0 -1
- package/lib/util/mcp-util.js.map +0 -1
- package/src/server/mcp-http-transport-e2e.spec.ts +0 -151
- package/src/server/mcp-http-transport.spec.ts +0 -385
- package/src/server/mcp-http-transport.ts +0 -368
- package/src/server/mcp-server-launcher.ts +0 -369
- /package/lib/{modules → common/modules}/mcp-diagram-module.d.ts +0 -0
- /package/lib/{modules → common/modules}/mcp-diagram-module.js +0 -0
- /package/lib/{prompts → common/prompts}/handlers/describe-diagram-mcp-prompt-handler.d.ts +0 -0
- /package/lib/{prompts → common/prompts}/handlers/describe-diagram-mcp-prompt-handler.js +0 -0
- /package/lib/{prompts → common/prompts}/handlers/suggest-improvements-mcp-prompt-handler.d.ts +0 -0
- /package/lib/{prompts → common/prompts}/handlers/suggest-improvements-mcp-prompt-handler.js +0 -0
- /package/lib/{resources → common/resources}/handlers/diagram-png-mcp-resource-handler.d.ts +0 -0
- /package/lib/{resources → common/resources}/handlers/diagram-png-mcp-resource-handler.js +0 -0
- /package/lib/{resources → common/resources}/handlers/diagram-svg-mcp-resource-handler.d.ts +0 -0
- /package/lib/{resources → common/resources}/handlers/diagram-svg-mcp-resource-handler.js +0 -0
- /package/lib/{resources → common/resources}/services/element-types-provider.d.ts +0 -0
- /package/lib/{resources → common/resources}/services/element-types-provider.js +0 -0
- /package/lib/{resources → common/resources}/services/mcp-model-serializer.d.ts +0 -0
- /package/lib/{resources → common/resources}/services/mcp-model-serializer.js +0 -0
- /package/lib/{server → common/server}/lru-event-store.js +0 -0
- /package/lib/{server → common/server}/mcp-diagram-prompt-handler-registry.d.ts +0 -0
- /package/lib/{server → common/server}/mcp-diagram-prompt-handler-registry.js +0 -0
- /package/lib/{server → common/server}/mcp-diagram-resource-handler-registry.d.ts +0 -0
- /package/lib/{server → common/server}/mcp-diagram-tool-handler-registry.d.ts +0 -0
- /package/lib/{server → common/server}/mcp-handler-shared.d.ts +0 -0
- /package/lib/{server → common/server}/mcp-handler-shared.js +0 -0
- /package/lib/{server → common/server}/mcp-id-alias-service.d.ts +0 -0
- /package/lib/{server → common/server}/mcp-id-alias-service.js +0 -0
- /package/lib/{server → common/server}/mcp-label-provider.d.ts +0 -0
- /package/lib/{server → common/server}/mcp-label-provider.js +0 -0
- /package/lib/{server → common/server}/mcp-log-level-registry.js +0 -0
- /package/lib/{server → common/server}/mcp-mime-types.d.ts +0 -0
- /package/lib/{server → common/server}/mcp-mime-types.js +0 -0
- /package/lib/{server → common/server}/mcp-session.d.ts +0 -0
- /package/lib/{server → common/server}/mcp-session.js +0 -0
- /package/lib/{tools → common/tools}/handlers/count-elements-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/count-elements-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/diagram-model-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/diagram-model-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/element-types-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/element-types-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/get-selection-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/get-selection-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/modify-edges-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/modify-nodes-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/query-elements-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/query-elements-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/redo-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/redo-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/save-model-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/save-model-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/session-info-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/session-info-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/set-selection-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/set-selection-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/set-view-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/set-view-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/undo-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/undo-mcp-tool-handler.js +0 -0
- /package/lib/{tools → common/tools}/handlers/validate-diagram-mcp-tool-handler.d.ts +0 -0
- /package/lib/{tools → common/tools}/handlers/validate-diagram-mcp-tool-handler.js +0 -0
- /package/lib/{util → common/util}/markdown-util.d.ts +0 -0
- /package/lib/{util → common/util}/markdown-util.js +0 -0
- /package/lib/{util → common/util}/mcp-util.d.ts +0 -0
- /package/lib/{util → common/util}/mcp-util.js +0 -0
- /package/src/{modules → common/modules}/mcp-diagram-module.ts +0 -0
- /package/src/{prompts → common/prompts}/handlers/describe-diagram-mcp-prompt-handler.ts +0 -0
- /package/src/{prompts → common/prompts}/handlers/suggest-improvements-mcp-prompt-handler.ts +0 -0
- /package/src/{resources → common/resources}/handlers/diagram-png-mcp-resource-handler.ts +0 -0
- /package/src/{resources → common/resources}/handlers/diagram-svg-mcp-resource-handler.ts +0 -0
- /package/src/{resources → common/resources}/services/element-types-provider.ts +0 -0
- /package/src/{resources → common/resources}/services/mcp-model-serializer.ts +0 -0
- /package/src/{server → common/server}/glsp-mcp-server.spec.ts +0 -0
- /package/src/{server → common/server}/lru-event-store.spec.ts +0 -0
- /package/src/{server → common/server}/mcp-diagram-handler-dispatcher.spec.ts +0 -0
- /package/src/{server → common/server}/mcp-diagram-prompt-handler-registry.ts +0 -0
- /package/src/{server → common/server}/mcp-handler-shared.spec.ts +0 -0
- /package/src/{server → common/server}/mcp-handler-shared.ts +0 -0
- /package/src/{server → common/server}/mcp-id-alias-service.spec.ts +0 -0
- /package/src/{server → common/server}/mcp-id-alias-service.ts +0 -0
- /package/src/{server → common/server}/mcp-label-provider.ts +0 -0
- /package/src/{server → common/server}/mcp-log-level-registry.spec.ts +0 -0
- /package/src/{server → common/server}/mcp-mime-types.ts +0 -0
- /package/src/{server → common/server}/mcp-session.ts +0 -0
- /package/src/{tools → common/tools}/handlers/count-elements-mcp-tool-handler.spec.ts +0 -0
- /package/src/{tools → common/tools}/handlers/count-elements-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/create-edges-mcp-tool-handler.spec.ts +0 -0
- /package/src/{tools → common/tools}/handlers/create-nodes-mcp-tool-handler.spec.ts +0 -0
- /package/src/{tools → common/tools}/handlers/diagram-model-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/element-types-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/get-selection-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/query-elements-mcp-tool-handler.spec.ts +0 -0
- /package/src/{tools → common/tools}/handlers/query-elements-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/redo-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/save-model-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/session-info-mcp-tool-handler.spec.ts +0 -0
- /package/src/{tools → common/tools}/handlers/session-info-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/set-selection-mcp-tool-handler.spec.ts +0 -0
- /package/src/{tools → common/tools}/handlers/set-selection-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/set-view-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/undo-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/handlers/validate-diagram-mcp-tool-handler.ts +0 -0
- /package/src/{tools → common/tools}/tool-annotations.spec.ts +0 -0
- /package/src/{util → common/util}/markdown-util.ts +0 -0
- /package/src/{util → common/util}/mcp-util.ts +0 -0
- /package/src/{server → node/server}/raw-http.spec.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/********************************************************************************
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
4
4
|
*
|
|
5
5
|
* This program and the accompanying materials are made available under the
|
|
6
6
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -24,29 +24,22 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
24
24
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
25
|
};
|
|
26
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.
|
|
27
|
+
exports.AbstractMcpServerLauncher = exports.SERVER_VERSION = void 0;
|
|
28
28
|
exports.pickInitOptions = pickInitOptions;
|
|
29
|
-
exports.isLoopbackHost = isLoopbackHost;
|
|
30
|
-
exports.assertLoopbackOrAcknowledged = assertLoopbackOrAcknowledged;
|
|
31
29
|
const server_1 = require("@eclipse-glsp/server");
|
|
32
30
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
31
|
+
const webStandardStreamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js");
|
|
33
32
|
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
34
33
|
const inversify_1 = require("inversify");
|
|
35
|
-
const package_json_1 = require("
|
|
34
|
+
const package_json_1 = require("../../../package.json");
|
|
36
35
|
const glsp_mcp_server_1 = require("./glsp-mcp-server");
|
|
36
|
+
const lru_event_store_1 = require("./lru-event-store");
|
|
37
37
|
const mcp_diagram_handler_dispatcher_1 = require("./mcp-diagram-handler-dispatcher");
|
|
38
|
-
const mcp_http_transport_1 = require("./mcp-http-transport");
|
|
39
38
|
const mcp_log_level_registry_1 = require("./mcp-log-level-registry");
|
|
40
39
|
const mcp_options_1 = require("./mcp-options");
|
|
41
40
|
const mcp_prompt_handler_1 = require("./mcp-prompt-handler");
|
|
42
41
|
const mcp_resource_handler_1 = require("./mcp-resource-handler");
|
|
43
42
|
const mcp_tool_handler_1 = require("./mcp-tool-handler");
|
|
44
|
-
/**
|
|
45
|
-
* Stdout tag used to announce the started MCP server so IDE integrations can pick up the URL
|
|
46
|
-
* automatically. The full line is `MCP_SERVER_READY_MSG + JSON.stringify({name, url, route})`,
|
|
47
|
-
* mirroring how the GLSP server itself announces its port via `START_UP_COMPLETE_MSG`.
|
|
48
|
-
*/
|
|
49
|
-
exports.MCP_SERVER_READY_MSG = '[GLSP-MCP-Server]:Ready. ';
|
|
50
43
|
/**
|
|
51
44
|
* Server version reported in MCP `initialize` handshake responses (the SDK's `serverInfo.version`
|
|
52
45
|
* field). Sourced from the package's own `package.json` so adopters and clients can tell builds
|
|
@@ -54,11 +47,11 @@ exports.MCP_SERVER_READY_MSG = '[GLSP-MCP-Server]:Ready. ';
|
|
|
54
47
|
*/
|
|
55
48
|
exports.SERVER_VERSION = package_json_1.version;
|
|
56
49
|
/**
|
|
57
|
-
* Defense-in-depth filter for the init-side options payload. The static type already rules
|
|
58
|
-
*
|
|
59
|
-
* `McpServerConfiguration.options`, but the wire payload is JSON, so a malformed or
|
|
60
|
-
*
|
|
61
|
-
*
|
|
50
|
+
* Defense-in-depth filter for the init-side options payload. The static type already rules out
|
|
51
|
+
* deploy-only fields (`host`, `allowedHosts`, `allowedOrigins`, `acknowledgedNoAuth`) on
|
|
52
|
+
* `McpServerConfiguration.options`, but the wire payload is JSON, so a malformed or malicious
|
|
53
|
+
* client could smuggle extra keys. Destructure-based pick drops anything outside the allowed set
|
|
54
|
+
* so deploy-only fields are sourced *only* from adopter defaults.
|
|
62
55
|
*
|
|
63
56
|
* **Update this allowlist when adding a field to `McpServerInitOptions`** — the destructure
|
|
64
57
|
* below is the single source of truth for which init-side fields cross the wire.
|
|
@@ -77,42 +70,40 @@ function pickInitOptions(options) {
|
|
|
77
70
|
return picked;
|
|
78
71
|
}
|
|
79
72
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*/
|
|
84
|
-
function isLoopbackHost(host) {
|
|
85
|
-
return host === 'localhost' || host === '::1' || /^127\./.test(host);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Refuse to bind on a non-loopback host unless the operator has acknowledged that traffic is
|
|
89
|
-
* authenticated externally (reverse proxy, mTLS, ACL). The MCP server has no built-in auth.
|
|
90
|
-
* Exported for regression tests only; not part of the public surface.
|
|
73
|
+
* JSON-RPC 2.0 § 5 mandates `null` for error responses where the request id cannot be determined
|
|
74
|
+
* (e.g., parse errors, batch-level rejection, missing session id). Centralized so the unavoidable
|
|
75
|
+
* `null` literal lives behind one eslint exception instead of many.
|
|
91
76
|
*/
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
throw new Error(`Refusing to bind MCP server to non-loopback host '${host}' without authentication. ` +
|
|
97
|
-
'The MCP server has no built-in auth; binding to a non-loopback interface exposes an ' +
|
|
98
|
-
'unauthenticated MCP endpoint to the network. If this is intentional (e.g., the endpoint ' +
|
|
99
|
-
'is fronted by a reverse proxy, mTLS, or a network ACL that authenticates traffic), set ' +
|
|
100
|
-
'`acknowledgedNoAuth: true` on the McpServerDefaults you pass to the server module.');
|
|
101
|
-
}
|
|
77
|
+
// eslint-disable-next-line no-null/no-null
|
|
78
|
+
const JSON_RPC_NULL_ID = null;
|
|
102
79
|
/**
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
* {@link
|
|
80
|
+
* Portable, target-neutral MCP server launcher. Owns the per-MCP-session
|
|
81
|
+
* {@link WebStandardStreamableHTTPServerTransport} map, the per-session {@link GLSPMcpServer}
|
|
82
|
+
* registry, handler registration, and the Fetch-shaped `(Request) => Promise<Response>` entry
|
|
83
|
+
* point. Concrete subclasses bind a listener (or no listener) in {@link bindTransport}.
|
|
84
|
+
*
|
|
85
|
+
* **Session state is single-process and in-memory.** Multi-isolate/Durable-Objects adopters
|
|
86
|
+
* need to override the session storage hook in a follow-up.
|
|
87
|
+
*
|
|
88
|
+
* **Authentication** is the adopter's responsibility on non-Node targets — wrap the handler
|
|
89
|
+
* with whatever middleware the deployment requires (bearer, mTLS at proxy, Cloudflare Access,
|
|
90
|
+
* etc.). Node binders run the {@link assertLoopbackOrAcknowledged} guard since they bind the
|
|
91
|
+
* socket themselves.
|
|
107
92
|
*/
|
|
108
|
-
let
|
|
93
|
+
let AbstractMcpServerLauncher = class AbstractMcpServerLauncher {
|
|
109
94
|
constructor() {
|
|
110
95
|
this.toolHandlers = [];
|
|
111
96
|
this.resourceHandlers = [];
|
|
112
97
|
this.promptHandlers = [];
|
|
113
98
|
this.toDispose = new server_1.DisposableCollection();
|
|
99
|
+
/** Per-MCP-session transport — populated on session-init, cleared on session-close. */
|
|
100
|
+
this.sessions = new Map();
|
|
114
101
|
/** Per-MCP-session GLSPMcpServer registry — populated on session-init, cleared on session-close. */
|
|
115
102
|
this.sessionServers = new Map();
|
|
103
|
+
this.onSessionInitializedEmitter = new server_1.Emitter();
|
|
104
|
+
this.onSessionInitialized = this.onSessionInitializedEmitter.event;
|
|
105
|
+
this.onSessionClosedEmitter = new server_1.Emitter();
|
|
106
|
+
this.onSessionClosed = this.onSessionClosedEmitter.event;
|
|
116
107
|
}
|
|
117
108
|
async initializeServer(server, params, result) {
|
|
118
109
|
var _a, _b;
|
|
@@ -121,38 +112,24 @@ let McpServerLauncher = class McpServerLauncher {
|
|
|
121
112
|
return result;
|
|
122
113
|
}
|
|
123
114
|
// Idempotent: subsequent client sessions of the same GLSP server reuse the existing
|
|
124
|
-
// MCP
|
|
125
|
-
if (this.
|
|
126
|
-
|
|
115
|
+
// MCP server. Only the first call binds the listener.
|
|
116
|
+
if (this.serverConfig) {
|
|
117
|
+
if (this.serverUrl) {
|
|
118
|
+
return server_1.McpInitializeResult.attachServer(result, { name: this.serverConfig.name, url: this.serverUrl });
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
127
121
|
}
|
|
128
|
-
// Port defaults to 0 (random); the resolved URL is announced via the stdout marker
|
|
129
|
-
// below. `host` is intentionally NOT in the init-time schema — it comes from the
|
|
130
|
-
// server module's adopter defaults (no DNS-rebinding foot-gun via the LLM path).
|
|
131
122
|
const { port = 0, route = '/mcp', name = 'glsp', options = {} } = mcpServerParam;
|
|
132
|
-
// Init-time options win per field, but only fields in the init allowlist —
|
|
133
|
-
// `pickInitOptions` strips any wire-smuggled deploy-only keys before merge.
|
|
134
123
|
const mergedOptions = { ...this.mcpDefaults, ...pickInitOptions(options) };
|
|
135
124
|
this.mcpOptions.values = mergedOptions;
|
|
136
125
|
const host = (_a = mergedOptions.host) !== null && _a !== void 0 ? _a : '127.0.0.1';
|
|
137
|
-
// Auth-footgun guard: refuse non-loopback bind unless the operator opted in via
|
|
138
|
-
// `acknowledgedNoAuth`. Runs BEFORE the transport binds the socket so a careless
|
|
139
|
-
// `host: '0.0.0.0'` doesn't get a chance to expose an unauthenticated endpoint.
|
|
140
|
-
assertLoopbackOrAcknowledged(host, mergedOptions.acknowledgedNoAuth);
|
|
141
126
|
const mcpServerConfig = { port, host, route, name, options: mergedOptions };
|
|
142
127
|
this.dispatcher.harvest();
|
|
143
|
-
// Capture the per-init subscription disposables so a dispose-then-restart cycle
|
|
144
|
-
// (transport is `inSingletonScope()`) doesn't accumulate stale listeners.
|
|
145
|
-
this.toDispose.push(this.transport.onSessionInitialized(client => this.onSessionInitialized(client, mcpServerConfig)));
|
|
146
|
-
this.toDispose.push(this.transport.onSessionClosed(sessionId => this.onSessionClosed(sessionId)));
|
|
147
|
-
this.toDispose.push(this.transport);
|
|
148
128
|
this.installResourceListChangedNotifier();
|
|
149
|
-
const endpoint = await this.
|
|
150
|
-
this.serverUrl = endpoint.url;
|
|
129
|
+
const endpoint = await this.bindTransport(mcpServerConfig);
|
|
151
130
|
this.serverConfig = mcpServerConfig;
|
|
131
|
+
this.serverUrl = endpoint.url;
|
|
152
132
|
this.logger.info(`MCP server '${mcpServerConfig.name}' is ready to accept new client requests on: ${(_b = this.serverUrl) !== null && _b !== void 0 ? _b : '(no network endpoint)'}`);
|
|
153
|
-
// stdout ready-marker for parent processes to discover the URL. Uses `console.log`
|
|
154
|
-
// (not the GLSP logger) so adopter logger config can never hide it.
|
|
155
|
-
console.log(exports.MCP_SERVER_READY_MSG + JSON.stringify({ name: mcpServerConfig.name, url: this.serverUrl, route }));
|
|
156
133
|
if (endpoint.url) {
|
|
157
134
|
return server_1.McpInitializeResult.attachServer(result, {
|
|
158
135
|
name: mcpServerConfig.name,
|
|
@@ -162,22 +139,186 @@ let McpServerLauncher = class McpServerLauncher {
|
|
|
162
139
|
}
|
|
163
140
|
return result;
|
|
164
141
|
}
|
|
165
|
-
|
|
166
|
-
this.
|
|
142
|
+
serverShutDown(_server) {
|
|
143
|
+
this.dispose();
|
|
144
|
+
}
|
|
145
|
+
dispose() {
|
|
146
|
+
// Close transports first so in-flight SSE responses are signalled cleanly. The HTTP
|
|
147
|
+
// listener (registered on `toDispose`) is torn down only after the transport closes
|
|
148
|
+
// settle — closing it earlier would cut the SSE socket mid-flush.
|
|
149
|
+
const closing = Array.from(this.sessions.values()).map(transport => transport.close().catch(err => this.logger.warn(`Error closing MCP session ${transport.sessionId}: ${err}`)));
|
|
150
|
+
this.sessions.clear();
|
|
151
|
+
this.sessionServers.forEach(glspMcpServer => glspMcpServer.dispose());
|
|
152
|
+
this.sessionServers.clear();
|
|
153
|
+
Promise.allSettled(closing).then(() => {
|
|
154
|
+
this.toDispose.dispose();
|
|
155
|
+
this.toDispose.clear();
|
|
156
|
+
});
|
|
157
|
+
this.serverUrl = undefined;
|
|
158
|
+
this.serverConfig = undefined;
|
|
159
|
+
this.dispatcher.reset();
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Fetch-shaped request entry point. Dispatches POST/GET/DELETE against `config.route`,
|
|
163
|
+
* routing to the right per-session SDK transport. Validates the `MCP-Protocol-Version`
|
|
164
|
+
* header and the spec-mandated session-id rules before handing off to the SDK.
|
|
165
|
+
*/
|
|
166
|
+
async handleRequest(req, options) {
|
|
167
|
+
var _a, _b;
|
|
168
|
+
const url = new URL(req.url);
|
|
169
|
+
const route = (_b = (_a = this.serverConfig) === null || _a === void 0 ? void 0 : _a.route) !== null && _b !== void 0 ? _b : '/mcp';
|
|
170
|
+
if (url.pathname !== route) {
|
|
171
|
+
return new Response('Not Found', { status: 404 });
|
|
172
|
+
}
|
|
173
|
+
if (req.method !== 'POST' && req.method !== 'GET' && req.method !== 'DELETE') {
|
|
174
|
+
return new Response('Method Not Allowed', { status: 405, headers: { Allow: 'POST, GET, DELETE' } });
|
|
175
|
+
}
|
|
176
|
+
const hostError = this.validateHostHeader(req);
|
|
177
|
+
if (hostError) {
|
|
178
|
+
return hostError;
|
|
179
|
+
}
|
|
180
|
+
let parsedBody;
|
|
181
|
+
if (req.method === 'POST') {
|
|
182
|
+
// `req.clone()` is mandatory: the body stream can only be read once; the SDK reads the original.
|
|
183
|
+
parsedBody = await req
|
|
184
|
+
.clone()
|
|
185
|
+
.json()
|
|
186
|
+
.catch(() => undefined);
|
|
187
|
+
}
|
|
188
|
+
const isInit = req.method === 'POST' && (0, types_js_1.isInitializeRequest)(parsedBody);
|
|
189
|
+
const versionError = this.validateProtocolVersionHeader(req, isInit);
|
|
190
|
+
if (versionError) {
|
|
191
|
+
return versionError;
|
|
192
|
+
}
|
|
193
|
+
const transport = this.resolveTransport(req, isInit);
|
|
194
|
+
if (transport instanceof Response) {
|
|
195
|
+
return transport;
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
return await transport.handleRequest(req, { parsedBody, authInfo: options === null || options === void 0 ? void 0 : options.authInfo });
|
|
199
|
+
}
|
|
200
|
+
catch (err) {
|
|
201
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
202
|
+
this.logger.error('Error handling MCP request:', err);
|
|
203
|
+
return this.jsonRpcErrorResponse(500, -32603, `Internal server error: ${message}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/** Bound `(req) => Promise<Response>` for adopters plugging the handler into any Fetch-shaped listener. */
|
|
207
|
+
getRequestHandler() {
|
|
208
|
+
return (req, options) => this.handleRequest(req, options);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Resolve the right transport for an incoming request. Returns a {@link Response} for the
|
|
212
|
+
* spec-mandated 400/404 rejections so the caller can early-return.
|
|
213
|
+
*/
|
|
214
|
+
resolveTransport(req, isInit) {
|
|
215
|
+
var _a;
|
|
216
|
+
const sessionId = (_a = req.headers.get('mcp-session-id')) !== null && _a !== void 0 ? _a : undefined;
|
|
217
|
+
if (isInit && !sessionId) {
|
|
218
|
+
return this.createTransport();
|
|
219
|
+
}
|
|
220
|
+
if (!sessionId) {
|
|
221
|
+
// MCP Streamable HTTP § Session Management #2: non-initialize request without session id → 400.
|
|
222
|
+
return this.jsonRpcErrorResponse(400, -32000, 'Bad Request: No valid session ID provided');
|
|
223
|
+
}
|
|
224
|
+
const existing = this.sessions.get(sessionId);
|
|
225
|
+
if (!existing) {
|
|
226
|
+
// § Session Management #3: unknown or terminated session id → 404.
|
|
227
|
+
return this.jsonRpcErrorResponse(404, -32001, 'Session not found');
|
|
228
|
+
}
|
|
229
|
+
return existing;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Validate the `MCP-Protocol-Version` header per the Streamable HTTP transport spec.
|
|
233
|
+
* Initialize POSTs negotiate the version in the body — the header isn't expected there.
|
|
234
|
+
* For every other request: absent → pass through (server defaults to `2025-03-26`);
|
|
235
|
+
* present-but-unsupported → respond `400` with a JSON-RPC error envelope.
|
|
236
|
+
*/
|
|
237
|
+
validateProtocolVersionHeader(req, isInit) {
|
|
238
|
+
var _a;
|
|
239
|
+
if (isInit) {
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
const version = (_a = req.headers.get('mcp-protocol-version')) !== null && _a !== void 0 ? _a : undefined;
|
|
243
|
+
if (version === undefined) {
|
|
244
|
+
return undefined;
|
|
245
|
+
}
|
|
246
|
+
if (!types_js_1.SUPPORTED_PROTOCOL_VERSIONS.includes(version)) {
|
|
247
|
+
return this.jsonRpcErrorResponse(400, -32000, `Unsupported MCP-Protocol-Version: '${version}'. Supported versions: ${types_js_1.SUPPORTED_PROTOCOL_VERSIONS.join(', ')}.`);
|
|
248
|
+
}
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
/** Port-agnostic Host validation — `WebStandardStreamableHTTPServerTransport` does exact-string match incl. port. */
|
|
252
|
+
validateHostHeader(req) {
|
|
253
|
+
const allowedHosts = this.mcpOptions.values.allowedHosts;
|
|
254
|
+
if (!allowedHosts || allowedHosts.length === 0) {
|
|
255
|
+
return undefined;
|
|
256
|
+
}
|
|
257
|
+
const hostHeader = req.headers.get('host');
|
|
258
|
+
if (!hostHeader) {
|
|
259
|
+
return this.jsonRpcErrorResponse(403, -32000, 'Missing Host header');
|
|
260
|
+
}
|
|
261
|
+
let hostname;
|
|
262
|
+
try {
|
|
263
|
+
hostname = new URL(`http://${hostHeader}`).hostname;
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return this.jsonRpcErrorResponse(403, -32000, `Invalid Host header: ${hostHeader}`);
|
|
267
|
+
}
|
|
268
|
+
if (!allowedHosts.includes(hostname)) {
|
|
269
|
+
return this.jsonRpcErrorResponse(403, -32000, `Invalid Host: ${hostname}`);
|
|
270
|
+
}
|
|
271
|
+
return undefined;
|
|
272
|
+
}
|
|
273
|
+
createTransport() {
|
|
274
|
+
var _a;
|
|
275
|
+
const allowedOrigins = this.mcpOptions.values.allowedOrigins;
|
|
276
|
+
const transport = new webStandardStreamableHttp_js_1.WebStandardStreamableHTTPServerTransport({
|
|
277
|
+
// `globalThis.crypto` is available on Node 18+, Bun, Deno, Cloudflare Workers, browsers.
|
|
278
|
+
// Avoid `node:crypto` so this file compiles cleanly into a browser bundle.
|
|
279
|
+
sessionIdGenerator: () => globalThis.crypto.randomUUID(),
|
|
280
|
+
eventStore: new lru_event_store_1.LruEventStore(this.mcpOptions.values.eventStoreLimit, this.logger),
|
|
281
|
+
// Host validation lives on `validateHostHeader`.
|
|
282
|
+
allowedOrigins,
|
|
283
|
+
enableDnsRebindingProtection: ((_a = allowedOrigins === null || allowedOrigins === void 0 ? void 0 : allowedOrigins.length) !== null && _a !== void 0 ? _a : 0) > 0,
|
|
284
|
+
onsessioninitialized: sessionId => {
|
|
285
|
+
this.logger.info(`MCP session initialized with ID: ${sessionId}`);
|
|
286
|
+
this.sessions.set(sessionId, transport);
|
|
287
|
+
if (this.serverConfig) {
|
|
288
|
+
this.attachServerToSession(transport, this.serverConfig);
|
|
289
|
+
}
|
|
290
|
+
this.onSessionInitializedEmitter.fire(transport);
|
|
291
|
+
},
|
|
292
|
+
onsessionclosed: sessionId => this.closeSession(sessionId)
|
|
293
|
+
});
|
|
294
|
+
transport.onclose = () => this.closeSession(transport.sessionId);
|
|
295
|
+
transport.onerror = err => { var _a; return this.logger.error(`MCP transport error (session ${(_a = transport.sessionId) !== null && _a !== void 0 ? _a : '<pre-init>'}):`, err); };
|
|
296
|
+
return transport;
|
|
297
|
+
}
|
|
298
|
+
attachServerToSession(transport, config) {
|
|
299
|
+
const sessionId = transport.sessionId;
|
|
300
|
+
if (!sessionId) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
167
303
|
const glspMcpServer = this.createGlspMcpServer(config);
|
|
168
|
-
this.sessionServers.set(
|
|
169
|
-
this.registerLogLevelHandler(glspMcpServer,
|
|
170
|
-
|
|
171
|
-
glspMcpServer.connect(client);
|
|
304
|
+
this.sessionServers.set(sessionId, glspMcpServer);
|
|
305
|
+
this.registerLogLevelHandler(glspMcpServer, sessionId);
|
|
306
|
+
glspMcpServer.connect(transport);
|
|
172
307
|
}
|
|
173
|
-
|
|
308
|
+
closeSession(sessionId) {
|
|
309
|
+
if (!sessionId) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
const existed = this.sessions.delete(sessionId);
|
|
174
313
|
const glspMcpServer = this.sessionServers.get(sessionId);
|
|
175
314
|
if (glspMcpServer) {
|
|
176
315
|
this.sessionServers.delete(sessionId);
|
|
177
316
|
this.logLevelRegistry.clear(sessionId);
|
|
178
|
-
// The transport already closes the client end; close the SDK server end too.
|
|
179
317
|
glspMcpServer.dispose();
|
|
318
|
+
}
|
|
319
|
+
if (existed) {
|
|
180
320
|
this.logger.info(`MCP session closed: ${sessionId}`);
|
|
321
|
+
this.onSessionClosedEmitter.fire(sessionId);
|
|
181
322
|
}
|
|
182
323
|
}
|
|
183
324
|
/**
|
|
@@ -242,26 +383,10 @@ let McpServerLauncher = class McpServerLauncher {
|
|
|
242
383
|
return {
|
|
243
384
|
logging: {},
|
|
244
385
|
...(hasTools ? { tools: { listChanged: false } } : {}),
|
|
245
|
-
// `resources.listChanged: true` iff the catalog contains diagram-scope resources —
|
|
246
|
-
// those aggregate across open GLSP sessions, so the visible list mutates with
|
|
247
|
-
// session add/remove. Server-scope-only catalogs are static, so the flag stays
|
|
248
|
-
// honest at `false` (the SDK reads it; clients refetch only when notified).
|
|
249
386
|
...(hasResources ? { resources: { listChanged: hasDiagramResources } } : {}),
|
|
250
387
|
...(hasPrompts ? { prompts: { listChanged: false } } : {})
|
|
251
388
|
};
|
|
252
389
|
}
|
|
253
|
-
/**
|
|
254
|
-
* Registers tool/resource/prompt handlers against the per-MCP-session GLSP MCP server. Two
|
|
255
|
-
* sources flow into the catalog:
|
|
256
|
-
*
|
|
257
|
-
* 1. **Server-scope handlers**: singletons bound under `McpToolHandler` /
|
|
258
|
-
* `McpResourceHandler` / `McpPromptHandler`. Registered via their `register*(server)`
|
|
259
|
-
* methods — they're already-instantiated objects that close over their own state.
|
|
260
|
-
*
|
|
261
|
-
* 2. **Diagram-scope handlers**: registered by {@link McpDiagramHandlerDispatcher}, which
|
|
262
|
-
* walks the catalogs harvested at server start and dispatches each registered SDK
|
|
263
|
-
* callback by `params.sessionId` → per-GLSP-session container → registry lookup.
|
|
264
|
-
*/
|
|
265
390
|
registerHandlers(glspMcpServer, resourcesAsResources) {
|
|
266
391
|
this.toolHandlers.forEach(handler => handler.registerTool(glspMcpServer));
|
|
267
392
|
this.promptHandlers.forEach(handler => handler.registerPrompt(glspMcpServer));
|
|
@@ -275,9 +400,8 @@ let McpServerLauncher = class McpServerLauncher {
|
|
|
275
400
|
this.validatePromptToolReferences(glspMcpServer);
|
|
276
401
|
}
|
|
277
402
|
/**
|
|
278
|
-
* Warn when a server-scope prompt'
|
|
279
|
-
*
|
|
280
|
-
* a shipped prompt references via `${OtherHandler.NAME}`.
|
|
403
|
+
* Warn when a server-scope prompt references a tool that isn't registered on this MCP session
|
|
404
|
+
* — catches adopters who unbind a tool a shipped prompt mentions via `${OtherHandler.NAME}`.
|
|
281
405
|
*/
|
|
282
406
|
validatePromptToolReferences(glspMcpServer) {
|
|
283
407
|
for (const handler of this.promptHandlers) {
|
|
@@ -288,68 +412,58 @@ let McpServerLauncher = class McpServerLauncher {
|
|
|
288
412
|
}
|
|
289
413
|
}
|
|
290
414
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
this.sessionServers.clear();
|
|
297
|
-
this.toDispose.dispose();
|
|
298
|
-
this.toDispose.clear();
|
|
299
|
-
this.serverUrl = undefined;
|
|
300
|
-
this.serverConfig = undefined;
|
|
301
|
-
this.dispatcher.reset();
|
|
415
|
+
jsonRpcErrorResponse(status, code, message) {
|
|
416
|
+
return new Response(JSON.stringify({ jsonrpc: '2.0', error: { code, message }, id: JSON_RPC_NULL_ID }), {
|
|
417
|
+
status,
|
|
418
|
+
headers: { 'Content-Type': 'application/json' }
|
|
419
|
+
});
|
|
302
420
|
}
|
|
303
421
|
};
|
|
304
|
-
exports.
|
|
422
|
+
exports.AbstractMcpServerLauncher = AbstractMcpServerLauncher;
|
|
305
423
|
__decorate([
|
|
306
424
|
(0, inversify_1.inject)(server_1.Logger),
|
|
307
425
|
__metadata("design:type", server_1.Logger)
|
|
308
|
-
],
|
|
426
|
+
], AbstractMcpServerLauncher.prototype, "logger", void 0);
|
|
309
427
|
__decorate([
|
|
310
428
|
(0, inversify_1.inject)(mcp_options_1.McpServerOptions),
|
|
311
429
|
__metadata("design:type", mcp_options_1.McpServerOptions)
|
|
312
|
-
],
|
|
430
|
+
], AbstractMcpServerLauncher.prototype, "mcpOptions", void 0);
|
|
313
431
|
__decorate([
|
|
314
432
|
(0, inversify_1.inject)(mcp_options_1.McpServerDefaults),
|
|
315
433
|
__metadata("design:type", Object)
|
|
316
|
-
],
|
|
317
|
-
__decorate([
|
|
318
|
-
(0, inversify_1.inject)(mcp_http_transport_1.McpHttpTransport),
|
|
319
|
-
__metadata("design:type", mcp_http_transport_1.McpHttpTransport)
|
|
320
|
-
], McpServerLauncher.prototype, "transport", void 0);
|
|
434
|
+
], AbstractMcpServerLauncher.prototype, "mcpDefaults", void 0);
|
|
321
435
|
__decorate([
|
|
322
436
|
(0, inversify_1.inject)(glsp_mcp_server_1.GLSPMcpServerFactory),
|
|
323
437
|
__metadata("design:type", Function)
|
|
324
|
-
],
|
|
438
|
+
], AbstractMcpServerLauncher.prototype, "glspMcpServerFactory", void 0);
|
|
325
439
|
__decorate([
|
|
326
440
|
(0, inversify_1.inject)(mcp_diagram_handler_dispatcher_1.McpDiagramHandlerDispatcher),
|
|
327
441
|
__metadata("design:type", Object)
|
|
328
|
-
],
|
|
442
|
+
], AbstractMcpServerLauncher.prototype, "dispatcher", void 0);
|
|
329
443
|
__decorate([
|
|
330
444
|
(0, inversify_1.inject)(mcp_log_level_registry_1.McpLogLevelRegistry),
|
|
331
445
|
__metadata("design:type", Object)
|
|
332
|
-
],
|
|
446
|
+
], AbstractMcpServerLauncher.prototype, "logLevelRegistry", void 0);
|
|
333
447
|
__decorate([
|
|
334
448
|
(0, inversify_1.inject)(server_1.ClientSessionManager),
|
|
335
449
|
__metadata("design:type", Object)
|
|
336
|
-
],
|
|
450
|
+
], AbstractMcpServerLauncher.prototype, "clientSessionManager", void 0);
|
|
337
451
|
__decorate([
|
|
338
452
|
(0, inversify_1.multiInject)(mcp_tool_handler_1.McpToolHandler),
|
|
339
453
|
(0, inversify_1.optional)(),
|
|
340
454
|
__metadata("design:type", Array)
|
|
341
|
-
],
|
|
455
|
+
], AbstractMcpServerLauncher.prototype, "toolHandlers", void 0);
|
|
342
456
|
__decorate([
|
|
343
457
|
(0, inversify_1.multiInject)(mcp_resource_handler_1.McpResourceHandler),
|
|
344
458
|
(0, inversify_1.optional)(),
|
|
345
459
|
__metadata("design:type", Array)
|
|
346
|
-
],
|
|
460
|
+
], AbstractMcpServerLauncher.prototype, "resourceHandlers", void 0);
|
|
347
461
|
__decorate([
|
|
348
462
|
(0, inversify_1.multiInject)(mcp_prompt_handler_1.McpPromptHandler),
|
|
349
463
|
(0, inversify_1.optional)(),
|
|
350
464
|
__metadata("design:type", Array)
|
|
351
|
-
],
|
|
352
|
-
exports.
|
|
465
|
+
], AbstractMcpServerLauncher.prototype, "promptHandlers", void 0);
|
|
466
|
+
exports.AbstractMcpServerLauncher = AbstractMcpServerLauncher = __decorate([
|
|
353
467
|
(0, inversify_1.injectable)()
|
|
354
|
-
],
|
|
355
|
-
//# sourceMappingURL=mcp-server-launcher.js.map
|
|
468
|
+
], AbstractMcpServerLauncher);
|
|
469
|
+
//# sourceMappingURL=abstract-mcp-server-launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-mcp-server-launcher.js","sourceRoot":"","sources":["../../../src/common/server/abstract-mcp-server-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,7 +63,7 @@ export declare class DefaultGLSPMcpServer implements GLSPMcpServer {
|
|
|
63
63
|
protected readonly tools: Map<string, RegisteredTool>;
|
|
64
64
|
protected readonly resources: Map<string, GLSPMcpResource>;
|
|
65
65
|
protected readonly prompts: Map<string, RegisteredPrompt>;
|
|
66
|
-
protected keepAliveTimer?:
|
|
66
|
+
protected keepAliveTimer?: ReturnType<typeof setInterval>;
|
|
67
67
|
readonly registerTool: McpServer['registerTool'];
|
|
68
68
|
readonly registerResource: McpServer['registerResource'];
|
|
69
69
|
readonly registerPrompt: McpServer['registerPrompt'];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glsp-mcp-server.d.ts","sourceRoot":"","sources":["../../../src/common/server/glsp-mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,7 +95,12 @@ let DefaultGLSPMcpServer = class DefaultGLSPMcpServer {
|
|
|
95
95
|
this.logger.debug('MCP keep-alive ping failed:', err);
|
|
96
96
|
}
|
|
97
97
|
}), KEEP_ALIVE_INTERVAL_MS);
|
|
98
|
-
|
|
98
|
+
// `unref` lives on Node's Timeout but not on the browser's numeric handle; guard so the
|
|
99
|
+
// call is a no-op when the runtime doesn't ship it.
|
|
100
|
+
const maybeUnref = this.keepAliveTimer.unref;
|
|
101
|
+
if (typeof maybeUnref === 'function') {
|
|
102
|
+
maybeUnref.call(this.keepAliveTimer);
|
|
103
|
+
}
|
|
99
104
|
}
|
|
100
105
|
isConnected() {
|
|
101
106
|
return this.mcpServer.isConnected();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glsp-mcp-server.js","sourceRoot":"","sources":["../../../src/common/server/glsp-mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { Logger } from '@eclipse-glsp/server';
|
|
17
|
-
import { EventId, EventStore, StreamId } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
17
|
+
import type { EventId, EventStore, StreamId } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
18
18
|
import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
|
|
19
19
|
/**
|
|
20
20
|
* In-memory `EventStore` with a bounded LRU cap, replacing the SDK's `InMemoryEventStore`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru-event-store.d.ts","sourceRoot":"","sources":["../../../src/common/server/lru-event-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oDAAoD,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC5C,MAAM,CAAC,QAAQ,CAAC,aAAa,SAAU;IAEvC,SAAS,CAAC,QAAQ,CAAC,MAAM;kBAAgC,QAAQ;iBAAW,cAAc;OAAM;IAChG,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEvB,KAAK,GAAE,MAAoC,EAAE,MAAM,CAAC,EAAE,MAAM;IAQxE,8CAA8C;IAC9C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAezE,iBAAiB,CACnB,WAAW,EAAE,OAAO,EACpB,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GACjF,OAAO,CAAC,QAAQ,CAAC;CAmCvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru-event-store.js","sourceRoot":"","sources":["../../../src/common/server/lru-event-store.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAMlF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,aAAa;IAOtB,YAAY,QAAgB,aAAa,CAAC,aAAa,EAAE,MAAe;QAJrD,WAAM,GAAG,IAAI,GAAG,EAA4D,CAAC;QAK5F,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,8CAA8C;IAC9C,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAkB,EAAE,OAAuB;QACxD,oFAAoF;QACpF,uFAAuF;QACvF,8EAA8E;QAC9E,MAAM,OAAO,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC/C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,iBAAiB,CACnB,WAAoB,EACpB,EAAE,IAAI,EAA0E;;QAEhF,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,yEAAyE;YACzE,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CACb,kDAAkD,WAAW,KAAK;gBAC9D,UAAU,IAAI,CAAC,KAAK,4EAA4E,CACvG,CAAC;YACF,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACd,CAAC;QAED,qFAAqF;QACrF,mFAAmF;QACnF,sDAAsD;QACtD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACtE,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC3B,SAAS;YACb,CAAC;YACD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC1B,SAAS,GAAG,IAAI,CAAC;gBACjB,SAAS;YACb,CAAC;YACD,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;;AAxEL,sCAyEC;AAxEmB,2BAAa,GAAG,KAAM,AAAT,CAAU"}
|
|
@@ -21,6 +21,7 @@ import { Container, ContainerModule } from 'inversify';
|
|
|
21
21
|
import { GLSPMcpServer } from './glsp-mcp-server';
|
|
22
22
|
import { McpDiagramScopedInput } from './mcp-input-schemas';
|
|
23
23
|
import { AbstractMcpDiagramPromptHandler, McpDiagramPromptHandlerConstructor } from './mcp-prompt-handler';
|
|
24
|
+
import { McpRequestContext } from './mcp-request-context';
|
|
24
25
|
import { AbstractMcpDiagramResourceHandler, McpDiagramResourceHandlerConstructor } from './mcp-resource-handler';
|
|
25
26
|
import { BaseMcpDiagramToolHandler, McpDiagramToolHandlerConstructor } from './mcp-tool-handler';
|
|
26
27
|
/**
|
|
@@ -38,7 +39,7 @@ export interface DiagramTypeCatalog {
|
|
|
38
39
|
}
|
|
39
40
|
/**
|
|
40
41
|
* Owns diagram-scope handler discovery, SDK registration, and per-MCP-call dispatch routing.
|
|
41
|
-
* Extracted from {@link
|
|
42
|
+
* Extracted from {@link AbstractMcpServerLauncher} so adopters can `rebind(McpDiagramHandlerDispatcher)`
|
|
42
43
|
* to a custom implementation without subclassing the entire launcher lifecycle.
|
|
43
44
|
*
|
|
44
45
|
* Responsibilities:
|
|
@@ -64,6 +65,7 @@ export interface McpDiagramHandlerDispatcher {
|
|
|
64
65
|
}
|
|
65
66
|
export declare const McpDiagramHandlerDispatcher: unique symbol;
|
|
66
67
|
export declare class DefaultMcpDiagramHandlerDispatcher implements McpDiagramHandlerDispatcher {
|
|
68
|
+
protected requestContext: McpRequestContext;
|
|
67
69
|
protected serverContainer: Container;
|
|
68
70
|
protected diagramModules: Map<string, ContainerModule[]>;
|
|
69
71
|
protected clientSessionManager: ClientSessionManager;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-diagram-handler-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/common/server/mcp-diagram-handler-dispatcher.ts"],"names":[],"mappings":"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"}
|