@eclipse-glsp/server-mcp 2.7.0-next.9
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/LICENSE +642 -0
- package/README.md +57 -0
- package/lib/index.d.ts +23 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +41 -0
- package/lib/index.js.map +1 -0
- package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.d.ts +43 -0
- package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.d.ts.map +1 -0
- package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.js +96 -0
- package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.js.map +1 -0
- package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.d.ts +43 -0
- package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.d.ts.map +1 -0
- package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.js +95 -0
- package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.js.map +1 -0
- package/lib/prompts/index.d.ts +18 -0
- package/lib/prompts/index.d.ts.map +1 -0
- package/lib/prompts/index.js +34 -0
- package/lib/prompts/index.js.map +1 -0
- package/lib/resources/handlers/diagram-png-mcp-resource-handler.d.ts +81 -0
- package/lib/resources/handlers/diagram-png-mcp-resource-handler.d.ts.map +1 -0
- package/lib/resources/handlers/diagram-png-mcp-resource-handler.js +174 -0
- package/lib/resources/handlers/diagram-png-mcp-resource-handler.js.map +1 -0
- package/lib/resources/handlers/diagram-svg-mcp-resource-handler.d.ts +52 -0
- package/lib/resources/handlers/diagram-svg-mcp-resource-handler.d.ts.map +1 -0
- package/lib/resources/handlers/diagram-svg-mcp-resource-handler.js +96 -0
- package/lib/resources/handlers/diagram-svg-mcp-resource-handler.js.map +1 -0
- package/lib/resources/index.d.ts +20 -0
- package/lib/resources/index.d.ts.map +1 -0
- package/lib/resources/index.js +36 -0
- package/lib/resources/index.js.map +1 -0
- package/lib/resources/services/element-types-provider.d.ts +65 -0
- package/lib/resources/services/element-types-provider.d.ts.map +1 -0
- package/lib/resources/services/element-types-provider.js +81 -0
- package/lib/resources/services/element-types-provider.js.map +1 -0
- package/lib/resources/services/mcp-model-serializer.d.ts +78 -0
- package/lib/resources/services/mcp-model-serializer.d.ts.map +1 -0
- package/lib/resources/services/mcp-model-serializer.js +188 -0
- package/lib/resources/services/mcp-model-serializer.js.map +1 -0
- package/lib/server/glsp-mcp-server.d.ts +82 -0
- package/lib/server/glsp-mcp-server.d.ts.map +1 -0
- package/lib/server/glsp-mcp-server.js +140 -0
- package/lib/server/glsp-mcp-server.js.map +1 -0
- package/lib/server/index.d.ts +37 -0
- package/lib/server/index.d.ts.map +1 -0
- package/lib/server/index.js +57 -0
- package/lib/server/index.js.map +1 -0
- package/lib/server/lru-event-store.d.ts +53 -0
- package/lib/server/lru-event-store.d.ts.map +1 -0
- package/lib/server/lru-event-store.js +100 -0
- package/lib/server/lru-event-store.js.map +1 -0
- package/lib/server/mcp-diagram-handler-dispatcher.d.ts +144 -0
- package/lib/server/mcp-diagram-handler-dispatcher.d.ts.map +1 -0
- package/lib/server/mcp-diagram-handler-dispatcher.js +382 -0
- package/lib/server/mcp-diagram-handler-dispatcher.js.map +1 -0
- package/lib/server/mcp-diagram-module.d.ts +123 -0
- package/lib/server/mcp-diagram-module.d.ts.map +1 -0
- package/lib/server/mcp-diagram-module.js +186 -0
- package/lib/server/mcp-diagram-module.js.map +1 -0
- package/lib/server/mcp-diagram-prompt-handler-registry.d.ts +33 -0
- package/lib/server/mcp-diagram-prompt-handler-registry.d.ts.map +1 -0
- package/lib/server/mcp-diagram-prompt-handler-registry.js +76 -0
- package/lib/server/mcp-diagram-prompt-handler-registry.js.map +1 -0
- package/lib/server/mcp-diagram-resource-handler-registry.d.ts +35 -0
- package/lib/server/mcp-diagram-resource-handler-registry.d.ts.map +1 -0
- package/lib/server/mcp-diagram-resource-handler-registry.js +94 -0
- package/lib/server/mcp-diagram-resource-handler-registry.js.map +1 -0
- package/lib/server/mcp-diagram-tool-handler-registry.d.ts +57 -0
- package/lib/server/mcp-diagram-tool-handler-registry.d.ts.map +1 -0
- package/lib/server/mcp-diagram-tool-handler-registry.js +111 -0
- package/lib/server/mcp-diagram-tool-handler-registry.js.map +1 -0
- package/lib/server/mcp-handler-shared.d.ts +142 -0
- package/lib/server/mcp-handler-shared.d.ts.map +1 -0
- package/lib/server/mcp-handler-shared.js +199 -0
- package/lib/server/mcp-handler-shared.js.map +1 -0
- package/lib/server/mcp-http-transport.d.ts +93 -0
- package/lib/server/mcp-http-transport.d.ts.map +1 -0
- package/lib/server/mcp-http-transport.js +350 -0
- package/lib/server/mcp-http-transport.js.map +1 -0
- package/lib/server/mcp-id-alias-service.d.ts +70 -0
- package/lib/server/mcp-id-alias-service.d.ts.map +1 -0
- package/lib/server/mcp-id-alias-service.js +85 -0
- package/lib/server/mcp-id-alias-service.js.map +1 -0
- package/lib/server/mcp-input-schemas.d.ts +73 -0
- package/lib/server/mcp-input-schemas.d.ts.map +1 -0
- package/lib/server/mcp-input-schemas.js +67 -0
- package/lib/server/mcp-input-schemas.js.map +1 -0
- package/lib/server/mcp-label-provider.d.ts +45 -0
- package/lib/server/mcp-label-provider.d.ts.map +1 -0
- package/lib/server/mcp-label-provider.js +42 -0
- package/lib/server/mcp-label-provider.js.map +1 -0
- package/lib/server/mcp-log-level-registry.d.ts +54 -0
- package/lib/server/mcp-log-level-registry.d.ts.map +1 -0
- package/lib/server/mcp-log-level-registry.js +80 -0
- package/lib/server/mcp-log-level-registry.js.map +1 -0
- package/lib/server/mcp-logger.d.ts +59 -0
- package/lib/server/mcp-logger.d.ts.map +1 -0
- package/lib/server/mcp-logger.js +104 -0
- package/lib/server/mcp-logger.js.map +1 -0
- package/lib/server/mcp-mime-types.d.ts +28 -0
- package/lib/server/mcp-mime-types.d.ts.map +1 -0
- package/lib/server/mcp-mime-types.js +18 -0
- package/lib/server/mcp-mime-types.js.map +1 -0
- package/lib/server/mcp-options.d.ts +39 -0
- package/lib/server/mcp-options.d.ts.map +1 -0
- package/lib/server/mcp-options.js +53 -0
- package/lib/server/mcp-options.js.map +1 -0
- package/lib/server/mcp-progress-reporter.d.ts +48 -0
- package/lib/server/mcp-progress-reporter.d.ts.map +1 -0
- package/lib/server/mcp-progress-reporter.js +66 -0
- package/lib/server/mcp-progress-reporter.js.map +1 -0
- package/lib/server/mcp-prompt-handler.d.ts +120 -0
- package/lib/server/mcp-prompt-handler.d.ts.map +1 -0
- package/lib/server/mcp-prompt-handler.js +131 -0
- package/lib/server/mcp-prompt-handler.js.map +1 -0
- package/lib/server/mcp-request-context.d.ts +37 -0
- package/lib/server/mcp-request-context.d.ts.map +1 -0
- package/lib/server/mcp-request-context.js +37 -0
- package/lib/server/mcp-request-context.js.map +1 -0
- package/lib/server/mcp-resource-handler.d.ts +212 -0
- package/lib/server/mcp-resource-handler.d.ts.map +1 -0
- package/lib/server/mcp-resource-handler.js +298 -0
- package/lib/server/mcp-resource-handler.js.map +1 -0
- package/lib/server/mcp-server-launcher.d.ts +143 -0
- package/lib/server/mcp-server-launcher.d.ts.map +1 -0
- package/lib/server/mcp-server-launcher.js +355 -0
- package/lib/server/mcp-server-launcher.js.map +1 -0
- package/lib/server/mcp-server-module.d.ts +143 -0
- package/lib/server/mcp-server-module.d.ts.map +1 -0
- package/lib/server/mcp-server-module.js +249 -0
- package/lib/server/mcp-server-module.js.map +1 -0
- package/lib/server/mcp-session.d.ts +44 -0
- package/lib/server/mcp-session.d.ts.map +1 -0
- package/lib/server/mcp-session.js +18 -0
- package/lib/server/mcp-session.js.map +1 -0
- package/lib/server/mcp-tool-handler.d.ts +259 -0
- package/lib/server/mcp-tool-handler.d.ts.map +1 -0
- package/lib/server/mcp-tool-handler.js +355 -0
- package/lib/server/mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/count-elements-mcp-tool-handler.d.ts +46 -0
- package/lib/tools/handlers/count-elements-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/count-elements-mcp-tool-handler.js +76 -0
- package/lib/tools/handlers/count-elements-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/create-edges-mcp-tool-handler.d.ts +112 -0
- package/lib/tools/handlers/create-edges-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/create-edges-mcp-tool-handler.js +190 -0
- package/lib/tools/handlers/create-edges-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/create-nodes-mcp-tool-handler.d.ts +81 -0
- package/lib/tools/handlers/create-nodes-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/create-nodes-mcp-tool-handler.js +123 -0
- package/lib/tools/handlers/create-nodes-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/delete-elements-mcp-tool-handler.d.ts +52 -0
- package/lib/tools/handlers/delete-elements-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/delete-elements-mcp-tool-handler.js +73 -0
- package/lib/tools/handlers/delete-elements-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/diagram-model-mcp-tool-handler.d.ts +59 -0
- package/lib/tools/handlers/diagram-model-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/diagram-model-mcp-tool-handler.js +78 -0
- package/lib/tools/handlers/diagram-model-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/element-types-mcp-tool-handler.d.ts +97 -0
- package/lib/tools/handlers/element-types-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/element-types-mcp-tool-handler.js +155 -0
- package/lib/tools/handlers/element-types-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/get-selection-mcp-tool-handler.d.ts +43 -0
- package/lib/tools/handlers/get-selection-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/get-selection-mcp-tool-handler.js +68 -0
- package/lib/tools/handlers/get-selection-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/layout-mcp-tool-handler.d.ts +43 -0
- package/lib/tools/handlers/layout-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/layout-mcp-tool-handler.js +71 -0
- package/lib/tools/handlers/layout-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/modify-edges-mcp-tool-handler.d.ts +78 -0
- package/lib/tools/handlers/modify-edges-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/modify-edges-mcp-tool-handler.js +136 -0
- package/lib/tools/handlers/modify-edges-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/modify-nodes-mcp-tool-handler.d.ts +92 -0
- package/lib/tools/handlers/modify-nodes-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/modify-nodes-mcp-tool-handler.js +125 -0
- package/lib/tools/handlers/modify-nodes-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/query-elements-mcp-tool-handler.d.ts +102 -0
- package/lib/tools/handlers/query-elements-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/query-elements-mcp-tool-handler.js +158 -0
- package/lib/tools/handlers/query-elements-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/redo-mcp-tool-handler.d.ts +45 -0
- package/lib/tools/handlers/redo-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/redo-mcp-tool-handler.js +73 -0
- package/lib/tools/handlers/redo-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/save-model-mcp-tool-handler.d.ts +55 -0
- package/lib/tools/handlers/save-model-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/save-model-mcp-tool-handler.js +91 -0
- package/lib/tools/handlers/save-model-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/session-info-mcp-tool-handler.d.ts +65 -0
- package/lib/tools/handlers/session-info-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/session-info-mcp-tool-handler.js +108 -0
- package/lib/tools/handlers/session-info-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/set-selection-mcp-tool-handler.d.ts +60 -0
- package/lib/tools/handlers/set-selection-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/set-selection-mcp-tool-handler.js +103 -0
- package/lib/tools/handlers/set-selection-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/set-view-mcp-tool-handler.d.ts +110 -0
- package/lib/tools/handlers/set-view-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/set-view-mcp-tool-handler.js +142 -0
- package/lib/tools/handlers/set-view-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/undo-mcp-tool-handler.d.ts +45 -0
- package/lib/tools/handlers/undo-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/undo-mcp-tool-handler.js +74 -0
- package/lib/tools/handlers/undo-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/validate-diagram-mcp-tool-handler.d.ts +66 -0
- package/lib/tools/handlers/validate-diagram-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/validate-diagram-mcp-tool-handler.js +0 -0
- package/lib/tools/handlers/validate-diagram-mcp-tool-handler.js.map +1 -0
- package/lib/tools/index.d.ts +34 -0
- package/lib/tools/index.d.ts.map +1 -0
- package/lib/tools/index.js +50 -0
- package/lib/tools/index.js.map +1 -0
- package/lib/util/index.d.ts +18 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/index.js +34 -0
- package/lib/util/index.js.map +1 -0
- package/lib/util/markdown-util.d.ts +20 -0
- package/lib/util/markdown-util.d.ts.map +1 -0
- package/lib/util/markdown-util.js +45 -0
- package/lib/util/markdown-util.js.map +1 -0
- package/lib/util/mcp-util.d.ts +22 -0
- package/lib/util/mcp-util.d.ts.map +1 -0
- package/lib/util/mcp-util.js +29 -0
- package/lib/util/mcp-util.js.map +1 -0
- package/package.json +63 -0
- package/src/index.ts +24 -0
- package/src/prompts/handlers/describe-diagram-mcp-prompt-handler.ts +89 -0
- package/src/prompts/handlers/suggest-improvements-mcp-prompt-handler.ts +86 -0
- package/src/prompts/index.ts +18 -0
- package/src/resources/handlers/diagram-png-mcp-resource-handler.ts +181 -0
- package/src/resources/handlers/diagram-svg-mcp-resource-handler.ts +89 -0
- package/src/resources/index.ts +20 -0
- package/src/resources/services/element-types-provider.ts +105 -0
- package/src/resources/services/mcp-model-serializer.ts +211 -0
- package/src/server/glsp-mcp-server.spec.ts +73 -0
- package/src/server/glsp-mcp-server.ts +196 -0
- package/src/server/index.ts +42 -0
- package/src/server/lru-event-store.spec.ts +121 -0
- package/src/server/lru-event-store.ts +112 -0
- package/src/server/mcp-diagram-handler-dispatcher.spec.ts +231 -0
- package/src/server/mcp-diagram-handler-dispatcher.ts +459 -0
- package/src/server/mcp-diagram-module.ts +248 -0
- package/src/server/mcp-diagram-prompt-handler-registry.ts +59 -0
- package/src/server/mcp-diagram-resource-handler-registry.ts +73 -0
- package/src/server/mcp-diagram-tool-handler-registry.ts +97 -0
- package/src/server/mcp-handler-shared.spec.ts +53 -0
- package/src/server/mcp-handler-shared.ts +247 -0
- package/src/server/mcp-http-transport-e2e.spec.ts +151 -0
- package/src/server/mcp-http-transport.spec.ts +385 -0
- package/src/server/mcp-http-transport.ts +368 -0
- package/src/server/mcp-id-alias-service.spec.ts +106 -0
- package/src/server/mcp-id-alias-service.ts +104 -0
- package/src/server/mcp-input-schemas.ts +82 -0
- package/src/server/mcp-label-provider.ts +52 -0
- package/src/server/mcp-log-level-registry.spec.ts +75 -0
- package/src/server/mcp-log-level-registry.ts +90 -0
- package/src/server/mcp-logger.spec.ts +227 -0
- package/src/server/mcp-logger.ts +91 -0
- package/src/server/mcp-mime-types.ts +31 -0
- package/src/server/mcp-options.ts +43 -0
- package/src/server/mcp-progress-reporter.spec.ts +93 -0
- package/src/server/mcp-progress-reporter.ts +67 -0
- package/src/server/mcp-prompt-handler.ts +157 -0
- package/src/server/mcp-request-context.ts +39 -0
- package/src/server/mcp-resource-handler.ts +389 -0
- package/src/server/mcp-server-launcher.spec.ts +173 -0
- package/src/server/mcp-server-launcher.ts +369 -0
- package/src/server/mcp-server-module.ts +287 -0
- package/src/server/mcp-session.ts +45 -0
- package/src/server/mcp-tool-handler.spec.ts +182 -0
- package/src/server/mcp-tool-handler.ts +431 -0
- package/src/server/raw-http.spec.ts +59 -0
- package/src/tools/handlers/count-elements-mcp-tool-handler.spec.ts +99 -0
- package/src/tools/handlers/count-elements-mcp-tool-handler.ts +66 -0
- package/src/tools/handlers/create-edges-mcp-tool-handler.spec.ts +196 -0
- package/src/tools/handlers/create-edges-mcp-tool-handler.ts +205 -0
- package/src/tools/handlers/create-nodes-mcp-tool-handler.spec.ts +197 -0
- package/src/tools/handlers/create-nodes-mcp-tool-handler.ts +131 -0
- package/src/tools/handlers/delete-elements-mcp-tool-handler.ts +73 -0
- package/src/tools/handlers/diagram-model-mcp-tool-handler.ts +66 -0
- package/src/tools/handlers/element-types-mcp-tool-handler.ts +151 -0
- package/src/tools/handlers/get-selection-mcp-tool-handler.ts +54 -0
- package/src/tools/handlers/layout-mcp-tool-handler.ts +56 -0
- package/src/tools/handlers/modify-edges-mcp-tool-handler.ts +148 -0
- package/src/tools/handlers/modify-nodes-mcp-tool-handler.ts +140 -0
- package/src/tools/handlers/query-elements-mcp-tool-handler.spec.ts +210 -0
- package/src/tools/handlers/query-elements-mcp-tool-handler.ts +161 -0
- package/src/tools/handlers/redo-mcp-tool-handler.ts +62 -0
- package/src/tools/handlers/save-model-mcp-tool-handler.ts +71 -0
- package/src/tools/handlers/session-info-mcp-tool-handler.spec.ts +152 -0
- package/src/tools/handlers/session-info-mcp-tool-handler.ts +97 -0
- package/src/tools/handlers/set-selection-mcp-tool-handler.spec.ts +118 -0
- package/src/tools/handlers/set-selection-mcp-tool-handler.ts +90 -0
- package/src/tools/handlers/set-view-mcp-tool-handler.ts +162 -0
- package/src/tools/handlers/undo-mcp-tool-handler.ts +61 -0
- package/src/tools/handlers/validate-diagram-mcp-tool-handler.ts +0 -0
- package/src/tools/index.ts +34 -0
- package/src/tools/tool-annotations.spec.ts +141 -0
- package/src/util/index.ts +18 -0
- package/src/util/markdown-util.ts +44 -0
- package/src/util/mcp-util.ts +25 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { BindingContext } from '@eclipse-glsp/protocol/lib/di';
|
|
17
|
+
import { AbstractMultiBinding, BindingTarget, GLSPModule } from '@eclipse-glsp/server';
|
|
18
|
+
import { interfaces } from 'inversify';
|
|
19
|
+
import { GLSPMcpServerFactory } from './glsp-mcp-server';
|
|
20
|
+
import { McpDiagramHandlerDispatcher } from './mcp-diagram-handler-dispatcher';
|
|
21
|
+
import { McpLogLevelRegistry } from './mcp-log-level-registry';
|
|
22
|
+
import { McpHttpTransport } from './mcp-http-transport';
|
|
23
|
+
import { McpLogger } from './mcp-logger';
|
|
24
|
+
import { McpServerDefaults, McpServerOptions } from './mcp-options';
|
|
25
|
+
import { McpProgressReporter } from './mcp-progress-reporter';
|
|
26
|
+
import { McpPromptHandler } from './mcp-prompt-handler';
|
|
27
|
+
import { McpResourceHandler } from './mcp-resource-handler';
|
|
28
|
+
import { McpServerLauncher } from './mcp-server-launcher';
|
|
29
|
+
import { McpToolHandler } from './mcp-tool-handler';
|
|
30
|
+
/**
|
|
31
|
+
* Multi-binding helper for MCP handler classes. Singleton-scoped sibling of core's
|
|
32
|
+
* `MultiBinding<T>` — same `binding.add(...)` / `binding.rebind(old, new)` adopter shape, but
|
|
33
|
+
* core's plain `MultiBinding` binds in transient scope, while MCP handlers cache deferred
|
|
34
|
+
* resolvers (selection/PNG round-trips) and need singleton scope to keep their state.
|
|
35
|
+
*/
|
|
36
|
+
export declare class McpHandlerMultiBinding<T> extends AbstractMultiBinding<interfaces.Newable<T>> {
|
|
37
|
+
applyBindings(context: BindingContext): void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Server-scope DI module for the MCP server. Adopters subclass {@link DefaultMcpServerModule}
|
|
41
|
+
* and override the `bind*` hooks to swap single-instance services or the `configure*` hooks to
|
|
42
|
+
* add/replace handlers in the multi-bindings. Mirrors the `DiagramModule` pattern from core
|
|
43
|
+
* (`bindGModelSerializer()`, `configureActionHandlers(binding)`, etc.).
|
|
44
|
+
*
|
|
45
|
+
* Adopter-provided default option values flow through the constructor — pass a
|
|
46
|
+
* `Partial<McpServerOptions>` to override individual fields. The launcher then merges these
|
|
47
|
+
* defaults with init-time options from the GLSP `initialize` request (init-time wins per field).
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* // Drop-in: GLSP defaults.
|
|
52
|
+
* launcher.configure(serverModule, new DefaultMcpServerModule());
|
|
53
|
+
*
|
|
54
|
+
* // Drop-in with a product-specific override.
|
|
55
|
+
* launcher.configure(serverModule, new DefaultMcpServerModule({ dataMode: 'resources' }));
|
|
56
|
+
*
|
|
57
|
+
* // Subclass when handler customization is needed.
|
|
58
|
+
* class WorkflowMcpServerModule extends DefaultMcpServerModule {
|
|
59
|
+
* constructor() { super({ agentPersona: WORKFLOW_PERSONA }); }
|
|
60
|
+
* protected override configureToolHandlers(binding) {
|
|
61
|
+
* super.configureToolHandlers(binding);
|
|
62
|
+
* binding.add(WorkflowSpecificTool);
|
|
63
|
+
* }
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare abstract class AbstractMcpServerModule extends GLSPModule {
|
|
68
|
+
protected readonly defaultOptions: McpServerDefaults;
|
|
69
|
+
protected bind: interfaces.Bind;
|
|
70
|
+
protected rebind: interfaces.Rebind;
|
|
71
|
+
constructor(defaultOptions?: McpServerDefaults);
|
|
72
|
+
protected configure(bind: interfaces.Bind, _unbind: interfaces.Unbind, isBound: interfaces.IsBound, rebind: interfaces.Rebind): void;
|
|
73
|
+
/**
|
|
74
|
+
* {@link McpServerLauncher} binding. Bound as a singleton AND aliased to
|
|
75
|
+
* `GLSPServerInitializer` + `GLSPServerListener` (the launcher implements both).
|
|
76
|
+
* Override to swap in a custom launcher impl.
|
|
77
|
+
*/
|
|
78
|
+
protected bindMcpServerLauncher(): BindingTarget<McpServerLauncher>;
|
|
79
|
+
/** {@link McpHttpTransport} binding. Override to swap to a different transport implementation. */
|
|
80
|
+
protected bindMcpHttpTransport(): BindingTarget<McpHttpTransport>;
|
|
81
|
+
/**
|
|
82
|
+
* {@link McpDiagramHandlerDispatcher} binding. Owns diagram-scope handler discovery,
|
|
83
|
+
* SDK registration, and per-call dispatch routing. Override (or `rebind` to a subclass)
|
|
84
|
+
* to customize registration without subclassing the launcher itself.
|
|
85
|
+
*/
|
|
86
|
+
protected bindMcpDiagramHandlerDispatcher(): BindingTarget<McpDiagramHandlerDispatcher>;
|
|
87
|
+
/** {@link McpServerOptions} holder binding. Mutated at init by the launcher. */
|
|
88
|
+
protected bindMcpServerOptions(): BindingTarget<McpServerOptions>;
|
|
89
|
+
/**
|
|
90
|
+
* {@link McpServerDefaults} binding — adopter-supplied default option values flow through
|
|
91
|
+
* the constructor and land here as a constant. The launcher merges these defaults with
|
|
92
|
+
* init-time options at server init (init-time wins per field).
|
|
93
|
+
*/
|
|
94
|
+
protected bindMcpServerDefaults(): BindingTarget<McpServerDefaults>;
|
|
95
|
+
/**
|
|
96
|
+
* {@link McpLogger} binding. Bound on the server container; per-session containers inherit
|
|
97
|
+
* it, so handlers at any scope can inject it; routes through the active MCP request via
|
|
98
|
+
* {@link mcpRequestContext}.
|
|
99
|
+
*/
|
|
100
|
+
protected bindMcpLogger(): BindingTarget<McpLogger>;
|
|
101
|
+
/** {@link McpProgressReporter} binding. Same scope/lifecycle story as {@link bindMcpLogger}. */
|
|
102
|
+
protected bindMcpProgressReporter(): BindingTarget<McpProgressReporter>;
|
|
103
|
+
/**
|
|
104
|
+
* {@link McpLogLevelRegistry} binding — holds per-MCP-session `logging/setLevel` thresholds
|
|
105
|
+
* read by {@link McpLogger} when filtering `notifications/message`.
|
|
106
|
+
*/
|
|
107
|
+
protected bindMcpLogLevelRegistry(): BindingTarget<McpLogLevelRegistry>;
|
|
108
|
+
/**
|
|
109
|
+
* {@link GLSPMcpServerFactory} binding — produces a fresh {@link DefaultGLSPMcpServer} per
|
|
110
|
+
* MCP-session-init call. Override to wrap the SDK `McpServer` differently (e.g. add custom
|
|
111
|
+
* middleware, swap the Proxy strategy).
|
|
112
|
+
*/
|
|
113
|
+
protected bindGLSPMcpServerFactory(): BindingTarget<GLSPMcpServerFactory>;
|
|
114
|
+
/**
|
|
115
|
+
* Override to add or replace tool handlers. Adopters typically `super.configureToolHandlers(binding)`
|
|
116
|
+
* to keep the defaults, then `binding.add(MyTool)` for additions or
|
|
117
|
+
* `binding.rebind(StandardTool, MyTool)` for overrides.
|
|
118
|
+
*/
|
|
119
|
+
protected configureToolHandlers(binding: McpHandlerMultiBinding<McpToolHandler>): void;
|
|
120
|
+
/** See {@link configureToolHandlers}. No server-scope resources ship by default. */
|
|
121
|
+
protected configureResourceHandlers(_binding: McpHandlerMultiBinding<McpResourceHandler>): void;
|
|
122
|
+
/**
|
|
123
|
+
* See {@link configureToolHandlers}. Server-scope by default because the shipped prompts
|
|
124
|
+
* (`describe-diagram`, `suggest-improvements`) are diagram-type-agnostic and resolve their
|
|
125
|
+
* target session at invocation time — diagram-scope adopters add prompts via
|
|
126
|
+
* {@link DefaultMcpDiagramModule.configurePromptHandlers}.
|
|
127
|
+
*/
|
|
128
|
+
protected configurePromptHandlers(binding: McpHandlerMultiBinding<McpPromptHandler>): void;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Default {@link AbstractMcpServerModule} entry point. Ships GLSP-default option values (see
|
|
132
|
+
* {@link DEFAULT_OPTIONS}) on top of the abstract module's hook defaults. Adopter-provided
|
|
133
|
+
* overrides via the constructor merge on top.
|
|
134
|
+
*
|
|
135
|
+
* @experimental The MCP integration is under active development. Option names, schema shapes,
|
|
136
|
+
* and handler contracts MAY change in minor releases until the feature graduates from
|
|
137
|
+
* experimental status.
|
|
138
|
+
*/
|
|
139
|
+
export declare class DefaultMcpServerModule extends AbstractMcpServerModule {
|
|
140
|
+
static readonly DEFAULT_OPTIONS: McpServerDefaults;
|
|
141
|
+
constructor(overrides?: McpServerDefaults);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=mcp-server-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server-module.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/********************************************************************************
|
|
3
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
4
|
+
*
|
|
5
|
+
* This program and the accompanying materials are made available under the
|
|
6
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
*
|
|
9
|
+
* This Source Code may also be made available under the following Secondary
|
|
10
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
* with the GNU Classpath Exception which is available at
|
|
13
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
*
|
|
15
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
16
|
+
********************************************************************************/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.DefaultMcpServerModule = exports.AbstractMcpServerModule = exports.McpHandlerMultiBinding = void 0;
|
|
19
|
+
const server_1 = require("@eclipse-glsp/server");
|
|
20
|
+
const prompts_1 = require("../prompts");
|
|
21
|
+
const tools_1 = require("../tools");
|
|
22
|
+
const glsp_mcp_server_1 = require("./glsp-mcp-server");
|
|
23
|
+
const mcp_diagram_handler_dispatcher_1 = require("./mcp-diagram-handler-dispatcher");
|
|
24
|
+
const mcp_log_level_registry_1 = require("./mcp-log-level-registry");
|
|
25
|
+
const lru_event_store_1 = require("./lru-event-store");
|
|
26
|
+
const mcp_http_transport_1 = require("./mcp-http-transport");
|
|
27
|
+
const mcp_logger_1 = require("./mcp-logger");
|
|
28
|
+
const mcp_options_1 = require("./mcp-options");
|
|
29
|
+
const mcp_progress_reporter_1 = require("./mcp-progress-reporter");
|
|
30
|
+
const mcp_prompt_handler_1 = require("./mcp-prompt-handler");
|
|
31
|
+
const mcp_resource_handler_1 = require("./mcp-resource-handler");
|
|
32
|
+
const mcp_server_launcher_1 = require("./mcp-server-launcher");
|
|
33
|
+
const mcp_tool_handler_1 = require("./mcp-tool-handler");
|
|
34
|
+
/**
|
|
35
|
+
* GLSP-generic default agent persona — adopters typically pass a product-specific persona to
|
|
36
|
+
* the {@link DefaultMcpServerModule} constructor (e.g. workflow-server might say "You are the
|
|
37
|
+
* Workflow Modeling Agent...").
|
|
38
|
+
*
|
|
39
|
+
* **Spec note.** This is wired to the MCP `instructions` field, which the spec describes as
|
|
40
|
+
* "concise instructions". This persona is intentionally verbose (~700 chars of behavior rules)
|
|
41
|
+
* — within the spec's "free-form server-supplied instructions" allowance and adopter-overridable
|
|
42
|
+
* via `mcpDefaults.agentPersona`. Don't trim on autopilot if a "concise" interpretation drifts
|
|
43
|
+
* back: the verbose form materially improves LLM tool-use compliance for graphical modelling.
|
|
44
|
+
*/
|
|
45
|
+
const DEFAULT_AGENT_PERSONA = `
|
|
46
|
+
You are the GLSP Modeling Agent. Your primary goal is to assist in the creation and modification of graphical models using the
|
|
47
|
+
GLSP MCP server. You have to adhere to the following principles:
|
|
48
|
+
- MCP-Interaction: Any modeling related activity has to occur using the MCP server.
|
|
49
|
+
- Real Data: The diagram model is the ground truth regarding the existing graphical model. Always query it before modifying the diagram.
|
|
50
|
+
- Real Creation: Consult the available element types before creating elements.
|
|
51
|
+
- Visual Proof: An image of the graphical model can be created, if you deem it useful for calculating or verifying layout decisions.
|
|
52
|
+
- Precision: All IDs and types must be exact.
|
|
53
|
+
- Visualization: When creating nodes, suggest sensible default positions and avoid visual overlapping.
|
|
54
|
+
- Careful: Under no circumstances save the model without explicit instruction. If you deem it sensible, you may ask the user for permission.
|
|
55
|
+
The same goes for Undo/Redo operations.
|
|
56
|
+
- Layouting: If available, make use of automatic layouting when not given explicit custom layouting requirements.
|
|
57
|
+
- Human-friendly references: When mentioning an element in user-visible prose, prefer its label, then its element type
|
|
58
|
+
(the bare ids returned by the tools are internal aliases that mean nothing to the user). Append the alias in parentheses
|
|
59
|
+
so the user can correlate it with follow-up tools. Use the \`set-selection\` tool — or the \`set-view\` tool with
|
|
60
|
+
\`action: "center-on-elements"\` — to point the user at the elements you reference.
|
|
61
|
+
`;
|
|
62
|
+
/**
|
|
63
|
+
* Multi-binding helper for MCP handler classes. Singleton-scoped sibling of core's
|
|
64
|
+
* `MultiBinding<T>` — same `binding.add(...)` / `binding.rebind(old, new)` adopter shape, but
|
|
65
|
+
* core's plain `MultiBinding` binds in transient scope, while MCP handlers cache deferred
|
|
66
|
+
* resolvers (selection/PNG round-trips) and need singleton scope to keep their state.
|
|
67
|
+
*/
|
|
68
|
+
class McpHandlerMultiBinding extends server_1.AbstractMultiBinding {
|
|
69
|
+
applyBindings(context) {
|
|
70
|
+
this.bindings.forEach(handlerClass => {
|
|
71
|
+
if (!context.isBound(handlerClass)) {
|
|
72
|
+
context.bind(handlerClass).toSelf().inSingletonScope();
|
|
73
|
+
}
|
|
74
|
+
context.bind(this.identifier).toService(handlerClass);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.McpHandlerMultiBinding = McpHandlerMultiBinding;
|
|
79
|
+
/**
|
|
80
|
+
* Server-scope DI module for the MCP server. Adopters subclass {@link DefaultMcpServerModule}
|
|
81
|
+
* and override the `bind*` hooks to swap single-instance services or the `configure*` hooks to
|
|
82
|
+
* add/replace handlers in the multi-bindings. Mirrors the `DiagramModule` pattern from core
|
|
83
|
+
* (`bindGModelSerializer()`, `configureActionHandlers(binding)`, etc.).
|
|
84
|
+
*
|
|
85
|
+
* Adopter-provided default option values flow through the constructor — pass a
|
|
86
|
+
* `Partial<McpServerOptions>` to override individual fields. The launcher then merges these
|
|
87
|
+
* defaults with init-time options from the GLSP `initialize` request (init-time wins per field).
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* // Drop-in: GLSP defaults.
|
|
92
|
+
* launcher.configure(serverModule, new DefaultMcpServerModule());
|
|
93
|
+
*
|
|
94
|
+
* // Drop-in with a product-specific override.
|
|
95
|
+
* launcher.configure(serverModule, new DefaultMcpServerModule({ dataMode: 'resources' }));
|
|
96
|
+
*
|
|
97
|
+
* // Subclass when handler customization is needed.
|
|
98
|
+
* class WorkflowMcpServerModule extends DefaultMcpServerModule {
|
|
99
|
+
* constructor() { super({ agentPersona: WORKFLOW_PERSONA }); }
|
|
100
|
+
* protected override configureToolHandlers(binding) {
|
|
101
|
+
* super.configureToolHandlers(binding);
|
|
102
|
+
* binding.add(WorkflowSpecificTool);
|
|
103
|
+
* }
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
class AbstractMcpServerModule extends server_1.GLSPModule {
|
|
108
|
+
constructor(defaultOptions = {}) {
|
|
109
|
+
super();
|
|
110
|
+
this.defaultOptions = defaultOptions;
|
|
111
|
+
}
|
|
112
|
+
configure(bind, _unbind, isBound, rebind) {
|
|
113
|
+
this.bind = bind;
|
|
114
|
+
this.rebind = rebind;
|
|
115
|
+
const context = { bind, isBound };
|
|
116
|
+
(0, server_1.applyBindingTarget)(context, mcp_server_launcher_1.McpServerLauncher, this.bindMcpServerLauncher()).inSingletonScope();
|
|
117
|
+
// The launcher is bound under two additional service identifiers so core's existing
|
|
118
|
+
// multi-bindings pick it up alongside the rest of the server's contributions/listeners.
|
|
119
|
+
bind(server_1.GLSPServerInitializer).toService(mcp_server_launcher_1.McpServerLauncher);
|
|
120
|
+
bind(server_1.GLSPServerListener).toService(mcp_server_launcher_1.McpServerLauncher);
|
|
121
|
+
(0, server_1.applyBindingTarget)(context, mcp_http_transport_1.McpHttpTransport, this.bindMcpHttpTransport()).inSingletonScope();
|
|
122
|
+
(0, server_1.applyBindingTarget)(context, mcp_diagram_handler_dispatcher_1.McpDiagramHandlerDispatcher, this.bindMcpDiagramHandlerDispatcher()).inSingletonScope();
|
|
123
|
+
(0, server_1.applyBindingTarget)(context, mcp_options_1.McpServerOptions, this.bindMcpServerOptions()).inSingletonScope();
|
|
124
|
+
(0, server_1.applyBindingTarget)(context, mcp_options_1.McpServerDefaults, this.bindMcpServerDefaults());
|
|
125
|
+
(0, server_1.applyBindingTarget)(context, mcp_logger_1.McpLogger, this.bindMcpLogger()).inSingletonScope();
|
|
126
|
+
(0, server_1.applyBindingTarget)(context, mcp_log_level_registry_1.McpLogLevelRegistry, this.bindMcpLogLevelRegistry()).inSingletonScope();
|
|
127
|
+
(0, server_1.applyBindingTarget)(context, mcp_progress_reporter_1.McpProgressReporter, this.bindMcpProgressReporter()).inSingletonScope();
|
|
128
|
+
(0, server_1.applyBindingTarget)(context, glsp_mcp_server_1.GLSPMcpServerFactory, this.bindGLSPMcpServerFactory());
|
|
129
|
+
this.configureMultiBinding(new McpHandlerMultiBinding(mcp_tool_handler_1.McpToolHandler), binding => this.configureToolHandlers(binding));
|
|
130
|
+
this.configureMultiBinding(new McpHandlerMultiBinding(mcp_resource_handler_1.McpResourceHandler), binding => this.configureResourceHandlers(binding));
|
|
131
|
+
this.configureMultiBinding(new McpHandlerMultiBinding(mcp_prompt_handler_1.McpPromptHandler), binding => this.configurePromptHandlers(binding));
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* {@link McpServerLauncher} binding. Bound as a singleton AND aliased to
|
|
135
|
+
* `GLSPServerInitializer` + `GLSPServerListener` (the launcher implements both).
|
|
136
|
+
* Override to swap in a custom launcher impl.
|
|
137
|
+
*/
|
|
138
|
+
bindMcpServerLauncher() {
|
|
139
|
+
return mcp_server_launcher_1.McpServerLauncher;
|
|
140
|
+
}
|
|
141
|
+
/** {@link McpHttpTransport} binding. Override to swap to a different transport implementation. */
|
|
142
|
+
bindMcpHttpTransport() {
|
|
143
|
+
return mcp_http_transport_1.McpHttpTransport;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* {@link McpDiagramHandlerDispatcher} binding. Owns diagram-scope handler discovery,
|
|
147
|
+
* SDK registration, and per-call dispatch routing. Override (or `rebind` to a subclass)
|
|
148
|
+
* to customize registration without subclassing the launcher itself.
|
|
149
|
+
*/
|
|
150
|
+
bindMcpDiagramHandlerDispatcher() {
|
|
151
|
+
return mcp_diagram_handler_dispatcher_1.DefaultMcpDiagramHandlerDispatcher;
|
|
152
|
+
}
|
|
153
|
+
/** {@link McpServerOptions} holder binding. Mutated at init by the launcher. */
|
|
154
|
+
bindMcpServerOptions() {
|
|
155
|
+
return mcp_options_1.McpServerOptions;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* {@link McpServerDefaults} binding — adopter-supplied default option values flow through
|
|
159
|
+
* the constructor and land here as a constant. The launcher merges these defaults with
|
|
160
|
+
* init-time options at server init (init-time wins per field).
|
|
161
|
+
*/
|
|
162
|
+
bindMcpServerDefaults() {
|
|
163
|
+
return { constantValue: this.defaultOptions };
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* {@link McpLogger} binding. Bound on the server container; per-session containers inherit
|
|
167
|
+
* it, so handlers at any scope can inject it; routes through the active MCP request via
|
|
168
|
+
* {@link mcpRequestContext}.
|
|
169
|
+
*/
|
|
170
|
+
bindMcpLogger() {
|
|
171
|
+
return mcp_logger_1.McpLogger;
|
|
172
|
+
}
|
|
173
|
+
/** {@link McpProgressReporter} binding. Same scope/lifecycle story as {@link bindMcpLogger}. */
|
|
174
|
+
bindMcpProgressReporter() {
|
|
175
|
+
return mcp_progress_reporter_1.McpProgressReporter;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* {@link McpLogLevelRegistry} binding — holds per-MCP-session `logging/setLevel` thresholds
|
|
179
|
+
* read by {@link McpLogger} when filtering `notifications/message`.
|
|
180
|
+
*/
|
|
181
|
+
bindMcpLogLevelRegistry() {
|
|
182
|
+
return mcp_log_level_registry_1.DefaultMcpLogLevelRegistry;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* {@link GLSPMcpServerFactory} binding — produces a fresh {@link DefaultGLSPMcpServer} per
|
|
186
|
+
* MCP-session-init call. Override to wrap the SDK `McpServer` differently (e.g. add custom
|
|
187
|
+
* middleware, swap the Proxy strategy).
|
|
188
|
+
*/
|
|
189
|
+
bindGLSPMcpServerFactory() {
|
|
190
|
+
return {
|
|
191
|
+
dynamicValue: ctx => {
|
|
192
|
+
const logger = ctx.container.get(server_1.Logger);
|
|
193
|
+
return (mcpServer, options) => new glsp_mcp_server_1.DefaultGLSPMcpServer(mcpServer, options, logger);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Override to add or replace tool handlers. Adopters typically `super.configureToolHandlers(binding)`
|
|
199
|
+
* to keep the defaults, then `binding.add(MyTool)` for additions or
|
|
200
|
+
* `binding.rebind(StandardTool, MyTool)` for overrides.
|
|
201
|
+
*/
|
|
202
|
+
configureToolHandlers(binding) {
|
|
203
|
+
binding.add(tools_1.SessionInfoMcpToolHandler);
|
|
204
|
+
binding.add(tools_1.ElementTypesMcpToolHandler);
|
|
205
|
+
}
|
|
206
|
+
/** See {@link configureToolHandlers}. No server-scope resources ship by default. */
|
|
207
|
+
configureResourceHandlers(_binding) {
|
|
208
|
+
// empty by default
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* See {@link configureToolHandlers}. Server-scope by default because the shipped prompts
|
|
212
|
+
* (`describe-diagram`, `suggest-improvements`) are diagram-type-agnostic and resolve their
|
|
213
|
+
* target session at invocation time — diagram-scope adopters add prompts via
|
|
214
|
+
* {@link DefaultMcpDiagramModule.configurePromptHandlers}.
|
|
215
|
+
*/
|
|
216
|
+
configurePromptHandlers(binding) {
|
|
217
|
+
binding.add(prompts_1.DescribeDiagramMcpPromptHandler);
|
|
218
|
+
binding.add(prompts_1.SuggestImprovementsMcpPromptHandler);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
exports.AbstractMcpServerModule = AbstractMcpServerModule;
|
|
222
|
+
/**
|
|
223
|
+
* Default {@link AbstractMcpServerModule} entry point. Ships GLSP-default option values (see
|
|
224
|
+
* {@link DEFAULT_OPTIONS}) on top of the abstract module's hook defaults. Adopter-provided
|
|
225
|
+
* overrides via the constructor merge on top.
|
|
226
|
+
*
|
|
227
|
+
* @experimental The MCP integration is under active development. Option names, schema shapes,
|
|
228
|
+
* and handler contracts MAY change in minor releases until the feature graduates from
|
|
229
|
+
* experimental status.
|
|
230
|
+
*/
|
|
231
|
+
class DefaultMcpServerModule extends AbstractMcpServerModule {
|
|
232
|
+
constructor(overrides = {}) {
|
|
233
|
+
super({ ...DefaultMcpServerModule.DEFAULT_OPTIONS, ...overrides });
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
exports.DefaultMcpServerModule = DefaultMcpServerModule;
|
|
237
|
+
DefaultMcpServerModule.DEFAULT_OPTIONS = {
|
|
238
|
+
host: '127.0.0.1',
|
|
239
|
+
allowedHosts: ['127.0.0.1', 'localhost'],
|
|
240
|
+
// `allowedOrigins` deliberately undefined: accept absent Origin (typical for desktop-IDE
|
|
241
|
+
// MCP clients) and rely on Host validation to gate DNS-rebinding. Adopters whose
|
|
242
|
+
// deployment is browser-fronted set this explicitly to their frontend's origin.
|
|
243
|
+
dataMode: 'tools',
|
|
244
|
+
agentPersona: DEFAULT_AGENT_PERSONA,
|
|
245
|
+
// 10K events per session is generous for typical workloads (a few MB) and large enough
|
|
246
|
+
// that disconnects within seconds recover via `Last-Event-ID` resumability.
|
|
247
|
+
eventStoreLimit: lru_event_store_1.LruEventStore.DEFAULT_LIMIT
|
|
248
|
+
};
|
|
249
|
+
//# sourceMappingURL=mcp-server-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server-module.js","sourceRoot":"","sources":["../../src/server/mcp-server-module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAIlF,iDAQ8B;AAG9B,wCAAkG;AAClG,oCAAiF;AACjF,uDAA+E;AAC/E,qFAAmH;AACnH,qEAA2F;AAC3F,uDAAkD;AAClD,6DAAwD;AACxD,6CAAyC;AACzC,+CAAoE;AACpE,mEAA8D;AAC9D,6DAAwD;AACxD,iEAA4D;AAC5D,+DAA0D;AAC1D,yDAAoD;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;CAgB7B,CAAC;AAEF;;;;;GAKG;AACH,MAAa,sBAA0B,SAAQ,6BAA2C;IAC7E,aAAa,CAAC,OAAuB;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;YAC3D,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AATD,wDASC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAsB,uBAAwB,SAAQ,mBAAU;IAI5D,YAA+B,iBAAoC,EAAE;QACjE,KAAK,EAAE,CAAC;QADmB,mBAAc,GAAd,cAAc,CAAwB;IAErE,CAAC;IAEkB,SAAS,CACxB,IAAqB,EACrB,OAA0B,EAC1B,OAA2B,EAC3B,MAAyB;QAEzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAClC,IAAA,2BAAkB,EAAC,OAAO,EAAE,uCAAiB,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAChG,oFAAoF;QACpF,wFAAwF;QACxF,IAAI,CAAC,8BAAqB,CAAC,CAAC,SAAS,CAAC,uCAAiB,CAAC,CAAC;QACzD,IAAI,CAAC,2BAAkB,CAAC,CAAC,SAAS,CAAC,uCAAiB,CAAC,CAAC;QACtD,IAAA,2BAAkB,EAAC,OAAO,EAAE,qCAAgB,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC9F,IAAA,2BAAkB,EAAC,OAAO,EAAE,4DAA2B,EAAE,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACpH,IAAA,2BAAkB,EAAC,OAAO,EAAE,8BAAgB,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC9F,IAAA,2BAAkB,EAAC,OAAO,EAAE,+BAAiB,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC7E,IAAA,2BAAkB,EAAC,OAAO,EAAE,sBAAS,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAChF,IAAA,2BAAkB,EAAC,OAAO,EAAE,4CAAmB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACpG,IAAA,2BAAkB,EAAC,OAAO,EAAE,2CAAmB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACpG,IAAA,2BAAkB,EAAC,OAAO,EAAE,sCAAoB,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,qBAAqB,CAAC,IAAI,sBAAsB,CAAiB,iCAAc,CAAC,EAAE,OAAO,CAAC,EAAE,CAC7F,IAAI,CAAC,qBAAqB,CAAC,OAAiD,CAAC,CAChF,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,IAAI,sBAAsB,CAAqB,yCAAkB,CAAC,EAAE,OAAO,CAAC,EAAE,CACrG,IAAI,CAAC,yBAAyB,CAAC,OAAqD,CAAC,CACxF,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,IAAI,sBAAsB,CAAmB,qCAAgB,CAAC,EAAE,OAAO,CAAC,EAAE,CACjG,IAAI,CAAC,uBAAuB,CAAC,OAAmD,CAAC,CACpF,CAAC;IACN,CAAC;IAED;;;;OAIG;IACO,qBAAqB;QAC3B,OAAO,uCAAiB,CAAC;IAC7B,CAAC;IAED,kGAAkG;IACxF,oBAAoB;QAC1B,OAAO,qCAAgB,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACO,+BAA+B;QACrC,OAAO,mEAAkC,CAAC;IAC9C,CAAC;IAED,gFAAgF;IACtE,oBAAoB;QAC1B,OAAO,8BAAgB,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACO,qBAAqB;QAC3B,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACO,aAAa;QACnB,OAAO,sBAAS,CAAC;IACrB,CAAC;IAED,gGAAgG;IACtF,uBAAuB;QAC7B,OAAO,2CAAmB,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACO,uBAAuB;QAC7B,OAAO,mDAA0B,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACO,wBAAwB;QAC9B,OAAO;YACH,YAAY,EAAE,GAAG,CAAC,EAAE;gBAChB,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAS,eAAM,CAAC,CAAC;gBACjD,OAAO,CAAC,SAAoB,EAAE,OAA6B,EAAwB,EAAE,CACjF,IAAI,sCAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7D,CAAC;SACJ,CAAC;IACN,CAAC;IAED;;;;OAIG;IACO,qBAAqB,CAAC,OAA+C;QAC3E,OAAO,CAAC,GAAG,CAAC,iCAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,kCAA0B,CAAC,CAAC;IAC5C,CAAC;IAED,oFAAoF;IAC1E,yBAAyB,CAAC,QAAoD;QACpF,mBAAmB;IACvB,CAAC;IAED;;;;;OAKG;IACO,uBAAuB,CAAC,OAAiD;QAC/E,OAAO,CAAC,GAAG,CAAC,yCAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,6CAAmC,CAAC,CAAC;IACrD,CAAC;CACJ;AA5ID,0DA4IC;AAED;;;;;;;;GAQG;AACH,MAAa,sBAAuB,SAAQ,uBAAuB;IAc/D,YAAY,YAA+B,EAAE;QACzC,KAAK,CAAC,EAAE,GAAG,sBAAsB,CAAC,eAAe,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;;AAhBL,wDAiBC;AAhBmB,sCAAe,GAAsB;IACjD,IAAI,EAAE,WAAW;IACjB,YAAY,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;IACxC,yFAAyF;IACzF,iFAAiF;IACjF,gFAAgF;IAChF,QAAQ,EAAE,OAAO;IACjB,YAAY,EAAE,qBAAqB;IACnC,uFAAuF;IACvF,4EAA4E;IAC5E,eAAe,EAAE,+BAAa,CAAC,aAAa;CAC/C,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
17
|
+
/**
|
|
18
|
+
* **Note on terminology** — the word "session" is overloaded in this codebase. Two
|
|
19
|
+
* independent concepts exist and must not be conflated:
|
|
20
|
+
*
|
|
21
|
+
* 1. **MCP session** (this file): one MCP client connection to the MCP HTTP endpoint, tracked by
|
|
22
|
+
* {@link McpHttpTransport.sessions} keyed by the SDK-issued `mcp-session-id` HTTP header.
|
|
23
|
+
* Created in `onsessioninitialized`, supports resumability across reconnects via
|
|
24
|
+
* `Last-Event-ID`. Each {@link McpSession} corresponds to one underlying SDK `McpServer`
|
|
25
|
+
* instance — multiple LLM clients can connect simultaneously, each with its own MCP session
|
|
26
|
+
* and its own SDK server.
|
|
27
|
+
*
|
|
28
|
+
* 2. **GLSP client session** (core): one open diagram, tracked by core's `ClientSessionManager`
|
|
29
|
+
* and represented by `ClientSession`. Tools/resources/prompts that target a specific diagram
|
|
30
|
+
* receive the GLSP session id via `params.sessionId` in their input schema.
|
|
31
|
+
*
|
|
32
|
+
* The two are independent in lifetime and cardinality: a single MCP session sees ALL open GLSP
|
|
33
|
+
* sessions; a single GLSP session is visible to every connected MCP session. Names in this
|
|
34
|
+
* package distinguish them: anything with the `Mcp` prefix in {@link mcp-session.ts} or
|
|
35
|
+
* `mcp-http-transport.ts` is MCP-side; anything talking about diagrams (`AbstractMcpDiagram*`,
|
|
36
|
+
* `requireGlspSession`, `GlspSession`) is GLSP-side.
|
|
37
|
+
*/
|
|
38
|
+
export type McpSessionId = string;
|
|
39
|
+
export type WithSessionId<T> = T & {
|
|
40
|
+
get sessionId(): McpSessionId;
|
|
41
|
+
};
|
|
42
|
+
/** SDK {@link Transport} widened with the session-id accessor every concrete MCP transport carries post-handshake. */
|
|
43
|
+
export type McpSession = WithSessionId<Transport>;
|
|
44
|
+
//# sourceMappingURL=mcp-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-session.d.ts","sourceRoot":"","sources":["../../src/server/mcp-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,IAAI,SAAS,IAAI,YAAY,CAAA;CAAE,CAAC;AAErE,sHAAsH;AACtH,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/********************************************************************************
|
|
3
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
4
|
+
*
|
|
5
|
+
* This program and the accompanying materials are made available under the
|
|
6
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
*
|
|
9
|
+
* This Source Code may also be made available under the following Secondary
|
|
10
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
* with the GNU Classpath Exception which is available at
|
|
13
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
*
|
|
15
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
16
|
+
********************************************************************************/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
//# sourceMappingURL=mcp-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-session.js","sourceRoot":"","sources":["../../src/server/mcp-session.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF"}
|