@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.
Files changed (443) hide show
  1. package/README.md +17 -3
  2. package/browser.d.ts +16 -0
  3. package/browser.js +18 -0
  4. package/common.d.ts +16 -0
  5. package/common.js +18 -0
  6. package/lib/browser/index.d.ts +21 -0
  7. package/lib/browser/index.d.ts.map +1 -0
  8. package/lib/browser/index.js +37 -0
  9. package/lib/browser/index.js.map +1 -0
  10. package/lib/browser/modules/browser-mcp-server-module.d.ts +42 -0
  11. package/lib/browser/modules/browser-mcp-server-module.d.ts.map +1 -0
  12. package/lib/browser/modules/browser-mcp-server-module.js +50 -0
  13. package/lib/browser/modules/browser-mcp-server-module.js.map +1 -0
  14. package/lib/browser/reexport.d.ts +17 -0
  15. package/lib/browser/reexport.d.ts.map +1 -0
  16. package/lib/browser/reexport.js +33 -0
  17. package/lib/browser/reexport.js.map +1 -0
  18. package/lib/browser/server/browser-mcp-request-context.d.ts +27 -0
  19. package/lib/browser/server/browser-mcp-request-context.d.ts.map +1 -0
  20. package/lib/browser/server/browser-mcp-request-context.js +67 -0
  21. package/lib/browser/server/browser-mcp-request-context.js.map +1 -0
  22. package/lib/browser/server/mcp-worker-bridge.d.ts +81 -0
  23. package/lib/browser/server/mcp-worker-bridge.d.ts.map +1 -0
  24. package/lib/browser/server/mcp-worker-bridge.js +159 -0
  25. package/lib/browser/server/mcp-worker-bridge.js.map +1 -0
  26. package/lib/browser/server/web-mcp-server-launcher.d.ts +34 -0
  27. package/lib/browser/server/web-mcp-server-launcher.d.ts.map +1 -0
  28. package/lib/browser/server/web-mcp-server-launcher.js +50 -0
  29. package/lib/browser/server/web-mcp-server-launcher.js.map +1 -0
  30. package/lib/{index.d.ts → common/index.d.ts} +3 -4
  31. package/lib/common/index.d.ts.map +1 -0
  32. package/lib/{index.js → common/index.js} +17 -18
  33. package/lib/common/index.js.map +1 -0
  34. package/lib/{modules/mcp-server-module.d.ts → common/modules/abstract-mcp-server-module.d.ts} +46 -37
  35. package/lib/common/modules/abstract-mcp-server-module.d.ts.map +1 -0
  36. package/lib/{modules/mcp-server-module.js → common/modules/abstract-mcp-server-module.js} +43 -66
  37. package/lib/common/modules/abstract-mcp-server-module.js.map +1 -0
  38. package/lib/common/modules/mcp-diagram-module.d.ts.map +1 -0
  39. package/lib/common/modules/mcp-diagram-module.js.map +1 -0
  40. package/lib/common/prompts/handlers/describe-diagram-mcp-prompt-handler.d.ts.map +1 -0
  41. package/lib/common/prompts/handlers/describe-diagram-mcp-prompt-handler.js.map +1 -0
  42. package/lib/common/prompts/handlers/suggest-improvements-mcp-prompt-handler.d.ts.map +1 -0
  43. package/lib/common/prompts/handlers/suggest-improvements-mcp-prompt-handler.js.map +1 -0
  44. package/lib/common/resources/handlers/diagram-png-mcp-resource-handler.d.ts.map +1 -0
  45. package/lib/common/resources/handlers/diagram-png-mcp-resource-handler.js.map +1 -0
  46. package/lib/common/resources/handlers/diagram-svg-mcp-resource-handler.d.ts.map +1 -0
  47. package/lib/common/resources/handlers/diagram-svg-mcp-resource-handler.js.map +1 -0
  48. package/lib/common/resources/services/element-types-provider.d.ts.map +1 -0
  49. package/lib/common/resources/services/element-types-provider.js.map +1 -0
  50. package/lib/common/resources/services/mcp-model-serializer.d.ts.map +1 -0
  51. package/lib/common/resources/services/mcp-model-serializer.js.map +1 -0
  52. package/lib/common/server/abstract-mcp-server-launcher.d.ts +168 -0
  53. package/lib/common/server/abstract-mcp-server-launcher.d.ts.map +1 -0
  54. package/lib/{server/mcp-server-launcher.js → common/server/abstract-mcp-server-launcher.js} +235 -121
  55. package/lib/common/server/abstract-mcp-server-launcher.js.map +1 -0
  56. package/lib/{server → common/server}/glsp-mcp-server.d.ts +1 -1
  57. package/lib/common/server/glsp-mcp-server.d.ts.map +1 -0
  58. package/lib/{server → common/server}/glsp-mcp-server.js +6 -1
  59. package/lib/common/server/glsp-mcp-server.js.map +1 -0
  60. package/lib/{server → common/server}/lru-event-store.d.ts +1 -1
  61. package/lib/common/server/lru-event-store.d.ts.map +1 -0
  62. package/lib/common/server/lru-event-store.js.map +1 -0
  63. package/lib/{server → common/server}/mcp-diagram-handler-dispatcher.d.ts +3 -1
  64. package/lib/common/server/mcp-diagram-handler-dispatcher.d.ts.map +1 -0
  65. package/lib/{server → common/server}/mcp-diagram-handler-dispatcher.js +12 -6
  66. package/lib/common/server/mcp-diagram-handler-dispatcher.js.map +1 -0
  67. package/lib/common/server/mcp-diagram-prompt-handler-registry.d.ts.map +1 -0
  68. package/lib/common/server/mcp-diagram-prompt-handler-registry.js.map +1 -0
  69. package/lib/common/server/mcp-diagram-resource-handler-registry.d.ts.map +1 -0
  70. package/lib/{server → common/server}/mcp-diagram-resource-handler-registry.js +4 -1
  71. package/lib/common/server/mcp-diagram-resource-handler-registry.js.map +1 -0
  72. package/lib/common/server/mcp-diagram-tool-handler-registry.d.ts.map +1 -0
  73. package/lib/{server → common/server}/mcp-diagram-tool-handler-registry.js +3 -1
  74. package/lib/common/server/mcp-diagram-tool-handler-registry.js.map +1 -0
  75. package/lib/common/server/mcp-handler-shared.d.ts.map +1 -0
  76. package/lib/common/server/mcp-handler-shared.js.map +1 -0
  77. package/lib/common/server/mcp-id-alias-service.d.ts.map +1 -0
  78. package/lib/common/server/mcp-id-alias-service.js.map +1 -0
  79. package/lib/{server → common/server}/mcp-input-schemas.d.ts +8 -0
  80. package/lib/common/server/mcp-input-schemas.d.ts.map +1 -0
  81. package/lib/{server → common/server}/mcp-input-schemas.js +13 -1
  82. package/lib/common/server/mcp-input-schemas.js.map +1 -0
  83. package/lib/common/server/mcp-label-provider.d.ts.map +1 -0
  84. package/lib/common/server/mcp-label-provider.js.map +1 -0
  85. package/lib/{server → common/server}/mcp-log-level-registry.d.ts +1 -1
  86. package/lib/common/server/mcp-log-level-registry.d.ts.map +1 -0
  87. package/lib/common/server/mcp-log-level-registry.js.map +1 -0
  88. package/lib/{server → common/server}/mcp-logger.d.ts +4 -2
  89. package/lib/common/server/mcp-logger.d.ts.map +1 -0
  90. package/lib/{server → common/server}/mcp-logger.js +11 -3
  91. package/lib/common/server/mcp-logger.js.map +1 -0
  92. package/lib/common/server/mcp-mime-types.d.ts.map +1 -0
  93. package/lib/common/server/mcp-mime-types.js.map +1 -0
  94. package/lib/{server → common/server}/mcp-options.d.ts +1 -1
  95. package/lib/common/server/mcp-options.d.ts.map +1 -0
  96. package/lib/{server → common/server}/mcp-options.js +1 -1
  97. package/lib/common/server/mcp-options.js.map +1 -0
  98. package/lib/{server → common/server}/mcp-progress-reporter.d.ts +4 -2
  99. package/lib/common/server/mcp-progress-reporter.d.ts.map +1 -0
  100. package/lib/{server → common/server}/mcp-progress-reporter.js +14 -3
  101. package/lib/common/server/mcp-progress-reporter.js.map +1 -0
  102. package/lib/{server → common/server}/mcp-prompt-handler.d.ts +3 -1
  103. package/lib/common/server/mcp-prompt-handler.d.ts.map +1 -0
  104. package/lib/{server → common/server}/mcp-prompt-handler.js +10 -2
  105. package/lib/common/server/mcp-prompt-handler.js.map +1 -0
  106. package/lib/common/server/mcp-request-context.d.ts +35 -0
  107. package/lib/common/server/mcp-request-context.d.ts.map +1 -0
  108. package/lib/common/server/mcp-request-context.js +30 -0
  109. package/lib/common/server/mcp-request-context.js.map +1 -0
  110. package/lib/{server → common/server}/mcp-resource-handler.d.ts +3 -1
  111. package/lib/common/server/mcp-resource-handler.d.ts.map +1 -0
  112. package/lib/{server → common/server}/mcp-resource-handler.js +13 -5
  113. package/lib/common/server/mcp-resource-handler.js.map +1 -0
  114. package/lib/common/server/mcp-session.d.ts.map +1 -0
  115. package/lib/common/server/mcp-session.js.map +1 -0
  116. package/lib/{server → common/server}/mcp-tool-handler.d.ts +3 -1
  117. package/lib/common/server/mcp-tool-handler.d.ts.map +1 -0
  118. package/lib/{server → common/server}/mcp-tool-handler.js +7 -1
  119. package/lib/{server → common/server}/mcp-tool-handler.js.map +1 -1
  120. package/lib/common/tools/handlers/count-elements-mcp-tool-handler.d.ts.map +1 -0
  121. package/lib/common/tools/handlers/count-elements-mcp-tool-handler.js.map +1 -0
  122. package/lib/{tools → common/tools}/handlers/create-edges-mcp-tool-handler.d.ts +2 -0
  123. package/lib/common/tools/handlers/create-edges-mcp-tool-handler.d.ts.map +1 -0
  124. package/lib/{tools → common/tools}/handlers/create-edges-mcp-tool-handler.js +2 -1
  125. package/lib/common/tools/handlers/create-edges-mcp-tool-handler.js.map +1 -0
  126. package/lib/{tools → common/tools}/handlers/create-nodes-mcp-tool-handler.d.ts +2 -0
  127. package/lib/common/tools/handlers/create-nodes-mcp-tool-handler.d.ts.map +1 -0
  128. package/lib/{tools → common/tools}/handlers/create-nodes-mcp-tool-handler.js +2 -1
  129. package/lib/common/tools/handlers/create-nodes-mcp-tool-handler.js.map +1 -0
  130. package/lib/{tools → common/tools}/handlers/delete-elements-mcp-tool-handler.d.ts +2 -0
  131. package/lib/common/tools/handlers/delete-elements-mcp-tool-handler.d.ts.map +1 -0
  132. package/lib/{tools → common/tools}/handlers/delete-elements-mcp-tool-handler.js +4 -2
  133. package/lib/common/tools/handlers/delete-elements-mcp-tool-handler.js.map +1 -0
  134. package/lib/common/tools/handlers/diagram-model-mcp-tool-handler.d.ts.map +1 -0
  135. package/lib/common/tools/handlers/diagram-model-mcp-tool-handler.js.map +1 -0
  136. package/lib/common/tools/handlers/element-types-mcp-tool-handler.d.ts.map +1 -0
  137. package/lib/common/tools/handlers/element-types-mcp-tool-handler.js.map +1 -0
  138. package/lib/common/tools/handlers/get-selection-mcp-tool-handler.d.ts.map +1 -0
  139. package/lib/common/tools/handlers/get-selection-mcp-tool-handler.js.map +1 -0
  140. package/lib/{tools → common/tools}/handlers/layout-mcp-tool-handler.d.ts +2 -0
  141. package/lib/common/tools/handlers/layout-mcp-tool-handler.d.ts.map +1 -0
  142. package/lib/{tools → common/tools}/handlers/layout-mcp-tool-handler.js +3 -2
  143. package/lib/common/tools/handlers/layout-mcp-tool-handler.js.map +1 -0
  144. package/lib/common/tools/handlers/modify-edges-mcp-tool-handler.d.ts.map +1 -0
  145. package/lib/{tools → common/tools}/handlers/modify-edges-mcp-tool-handler.js +1 -1
  146. package/lib/common/tools/handlers/modify-edges-mcp-tool-handler.js.map +1 -0
  147. package/lib/common/tools/handlers/modify-nodes-mcp-tool-handler.d.ts.map +1 -0
  148. package/lib/{tools → common/tools}/handlers/modify-nodes-mcp-tool-handler.js +1 -1
  149. package/lib/common/tools/handlers/modify-nodes-mcp-tool-handler.js.map +1 -0
  150. package/lib/common/tools/handlers/query-elements-mcp-tool-handler.d.ts.map +1 -0
  151. package/lib/common/tools/handlers/query-elements-mcp-tool-handler.js.map +1 -0
  152. package/lib/common/tools/handlers/redo-mcp-tool-handler.d.ts.map +1 -0
  153. package/lib/common/tools/handlers/redo-mcp-tool-handler.js.map +1 -0
  154. package/lib/common/tools/handlers/save-model-mcp-tool-handler.d.ts.map +1 -0
  155. package/lib/common/tools/handlers/save-model-mcp-tool-handler.js.map +1 -0
  156. package/lib/common/tools/handlers/session-info-mcp-tool-handler.d.ts.map +1 -0
  157. package/lib/common/tools/handlers/session-info-mcp-tool-handler.js.map +1 -0
  158. package/lib/common/tools/handlers/set-selection-mcp-tool-handler.d.ts.map +1 -0
  159. package/lib/common/tools/handlers/set-selection-mcp-tool-handler.js.map +1 -0
  160. package/lib/common/tools/handlers/set-view-mcp-tool-handler.d.ts.map +1 -0
  161. package/lib/common/tools/handlers/set-view-mcp-tool-handler.js.map +1 -0
  162. package/lib/common/tools/handlers/undo-mcp-tool-handler.d.ts.map +1 -0
  163. package/lib/common/tools/handlers/undo-mcp-tool-handler.js.map +1 -0
  164. package/lib/common/tools/handlers/validate-diagram-mcp-tool-handler.d.ts.map +1 -0
  165. package/lib/common/tools/handlers/validate-diagram-mcp-tool-handler.js.map +1 -0
  166. package/lib/common/util/markdown-util.d.ts.map +1 -0
  167. package/lib/common/util/markdown-util.js.map +1 -0
  168. package/lib/common/util/mcp-util.d.ts.map +1 -0
  169. package/lib/common/util/mcp-util.js.map +1 -0
  170. package/lib/node/index.d.ts +20 -0
  171. package/lib/node/index.d.ts.map +1 -0
  172. package/lib/node/index.js +36 -0
  173. package/lib/node/index.js.map +1 -0
  174. package/lib/node/modules/node-mcp-server-module.d.ts +37 -0
  175. package/lib/node/modules/node-mcp-server-module.d.ts.map +1 -0
  176. package/lib/node/modules/node-mcp-server-module.js +52 -0
  177. package/lib/node/modules/node-mcp-server-module.js.map +1 -0
  178. package/lib/node/reexport.d.ts +17 -0
  179. package/lib/node/reexport.d.ts.map +1 -0
  180. package/lib/node/reexport.js +33 -0
  181. package/lib/node/reexport.js.map +1 -0
  182. package/lib/node/server/node-mcp-request-context.d.ts +24 -0
  183. package/lib/node/server/node-mcp-request-context.d.ts.map +1 -0
  184. package/lib/node/server/node-mcp-request-context.js +43 -0
  185. package/lib/node/server/node-mcp-request-context.js.map +1 -0
  186. package/lib/node/server/node-mcp-server-launcher.d.ts +55 -0
  187. package/lib/node/server/node-mcp-server-launcher.d.ts.map +1 -0
  188. package/lib/node/server/node-mcp-server-launcher.js +123 -0
  189. package/lib/node/server/node-mcp-server-launcher.js.map +1 -0
  190. package/node.d.ts +16 -0
  191. package/node.js +18 -0
  192. package/package.json +19 -13
  193. package/src/browser/index.ts +21 -0
  194. package/src/browser/modules/browser-mcp-server-module.ts +54 -0
  195. package/src/browser/reexport.ts +16 -0
  196. package/src/browser/server/browser-mcp-request-context.ts +59 -0
  197. package/src/browser/server/mcp-worker-bridge.ts +200 -0
  198. package/src/browser/server/web-mcp-server-launcher.ts +39 -0
  199. package/src/{index.ts → common/index.ts} +4 -4
  200. package/src/{modules/mcp-server-module.ts → common/modules/abstract-mcp-server-module.ts} +54 -68
  201. package/src/common/server/abstract-mcp-server-launcher.spec.ts +458 -0
  202. package/src/common/server/abstract-mcp-server-launcher.ts +524 -0
  203. package/src/{server → common/server}/glsp-mcp-server.ts +7 -2
  204. package/src/{server → common/server}/lru-event-store.ts +1 -1
  205. package/src/{server → common/server}/mcp-diagram-handler-dispatcher.ts +13 -9
  206. package/src/{server → common/server}/mcp-diagram-resource-handler-registry.ts +4 -1
  207. package/src/{server → common/server}/mcp-diagram-tool-handler-registry.ts +3 -1
  208. package/src/{server → common/server}/mcp-input-schemas.ts +13 -0
  209. package/src/{server → common/server}/mcp-log-level-registry.ts +1 -1
  210. package/src/{server → common/server}/mcp-logger.spec.ts +26 -18
  211. package/src/{server → common/server}/mcp-logger.ts +9 -5
  212. package/src/{server → common/server}/mcp-options.ts +1 -1
  213. package/src/{server → common/server}/mcp-progress-reporter.spec.ts +19 -9
  214. package/src/{server → common/server}/mcp-progress-reporter.ts +9 -5
  215. package/src/{server → common/server}/mcp-prompt-handler.ts +8 -4
  216. package/src/{server → common/server}/mcp-request-context.ts +20 -16
  217. package/src/{server → common/server}/mcp-resource-handler.ts +11 -7
  218. package/src/{server → common/server}/mcp-tool-handler.spec.ts +4 -4
  219. package/src/{server → common/server}/mcp-tool-handler.ts +8 -4
  220. package/src/{tools → common/tools}/handlers/create-edges-mcp-tool-handler.ts +9 -2
  221. package/src/{tools → common/tools}/handlers/create-nodes-mcp-tool-handler.ts +9 -2
  222. package/src/{tools → common/tools}/handlers/delete-elements-mcp-tool-handler.ts +5 -3
  223. package/src/{tools → common/tools}/handlers/layout-mcp-tool-handler.ts +4 -3
  224. package/src/{tools → common/tools}/handlers/modify-edges-mcp-tool-handler.ts +8 -2
  225. package/src/{tools → common/tools}/handlers/modify-nodes-mcp-tool-handler.ts +8 -2
  226. package/src/node/index.ts +20 -0
  227. package/src/node/modules/node-mcp-server-module.ts +56 -0
  228. package/src/node/reexport.ts +16 -0
  229. package/src/node/server/mcp-http-transport-e2e.spec.ts +297 -0
  230. package/src/node/server/node-mcp-request-context.ts +33 -0
  231. package/src/{server/mcp-server-launcher.spec.ts → node/server/node-mcp-server-launcher.spec.ts} +19 -8
  232. package/src/node/server/node-mcp-server-launcher.ts +130 -0
  233. package/lib/index.d.ts.map +0 -1
  234. package/lib/index.js.map +0 -1
  235. package/lib/modules/mcp-diagram-module.d.ts.map +0 -1
  236. package/lib/modules/mcp-diagram-module.js.map +0 -1
  237. package/lib/modules/mcp-server-module.d.ts.map +0 -1
  238. package/lib/modules/mcp-server-module.js.map +0 -1
  239. package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.d.ts.map +0 -1
  240. package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.js.map +0 -1
  241. package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.d.ts.map +0 -1
  242. package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.js.map +0 -1
  243. package/lib/resources/handlers/diagram-png-mcp-resource-handler.d.ts.map +0 -1
  244. package/lib/resources/handlers/diagram-png-mcp-resource-handler.js.map +0 -1
  245. package/lib/resources/handlers/diagram-svg-mcp-resource-handler.d.ts.map +0 -1
  246. package/lib/resources/handlers/diagram-svg-mcp-resource-handler.js.map +0 -1
  247. package/lib/resources/services/element-types-provider.d.ts.map +0 -1
  248. package/lib/resources/services/element-types-provider.js.map +0 -1
  249. package/lib/resources/services/mcp-model-serializer.d.ts.map +0 -1
  250. package/lib/resources/services/mcp-model-serializer.js.map +0 -1
  251. package/lib/server/glsp-mcp-server.d.ts.map +0 -1
  252. package/lib/server/glsp-mcp-server.js.map +0 -1
  253. package/lib/server/lru-event-store.d.ts.map +0 -1
  254. package/lib/server/lru-event-store.js.map +0 -1
  255. package/lib/server/mcp-diagram-handler-dispatcher.d.ts.map +0 -1
  256. package/lib/server/mcp-diagram-handler-dispatcher.js.map +0 -1
  257. package/lib/server/mcp-diagram-prompt-handler-registry.d.ts.map +0 -1
  258. package/lib/server/mcp-diagram-prompt-handler-registry.js.map +0 -1
  259. package/lib/server/mcp-diagram-resource-handler-registry.d.ts.map +0 -1
  260. package/lib/server/mcp-diagram-resource-handler-registry.js.map +0 -1
  261. package/lib/server/mcp-diagram-tool-handler-registry.d.ts.map +0 -1
  262. package/lib/server/mcp-diagram-tool-handler-registry.js.map +0 -1
  263. package/lib/server/mcp-handler-shared.d.ts.map +0 -1
  264. package/lib/server/mcp-handler-shared.js.map +0 -1
  265. package/lib/server/mcp-http-transport.d.ts +0 -93
  266. package/lib/server/mcp-http-transport.d.ts.map +0 -1
  267. package/lib/server/mcp-http-transport.js +0 -350
  268. package/lib/server/mcp-http-transport.js.map +0 -1
  269. package/lib/server/mcp-id-alias-service.d.ts.map +0 -1
  270. package/lib/server/mcp-id-alias-service.js.map +0 -1
  271. package/lib/server/mcp-input-schemas.d.ts.map +0 -1
  272. package/lib/server/mcp-input-schemas.js.map +0 -1
  273. package/lib/server/mcp-label-provider.d.ts.map +0 -1
  274. package/lib/server/mcp-label-provider.js.map +0 -1
  275. package/lib/server/mcp-log-level-registry.d.ts.map +0 -1
  276. package/lib/server/mcp-log-level-registry.js.map +0 -1
  277. package/lib/server/mcp-logger.d.ts.map +0 -1
  278. package/lib/server/mcp-logger.js.map +0 -1
  279. package/lib/server/mcp-mime-types.d.ts.map +0 -1
  280. package/lib/server/mcp-mime-types.js.map +0 -1
  281. package/lib/server/mcp-options.d.ts.map +0 -1
  282. package/lib/server/mcp-options.js.map +0 -1
  283. package/lib/server/mcp-progress-reporter.d.ts.map +0 -1
  284. package/lib/server/mcp-progress-reporter.js.map +0 -1
  285. package/lib/server/mcp-prompt-handler.d.ts.map +0 -1
  286. package/lib/server/mcp-prompt-handler.js.map +0 -1
  287. package/lib/server/mcp-request-context.d.ts +0 -37
  288. package/lib/server/mcp-request-context.d.ts.map +0 -1
  289. package/lib/server/mcp-request-context.js +0 -37
  290. package/lib/server/mcp-request-context.js.map +0 -1
  291. package/lib/server/mcp-resource-handler.d.ts.map +0 -1
  292. package/lib/server/mcp-resource-handler.js.map +0 -1
  293. package/lib/server/mcp-server-launcher.d.ts +0 -143
  294. package/lib/server/mcp-server-launcher.d.ts.map +0 -1
  295. package/lib/server/mcp-server-launcher.js.map +0 -1
  296. package/lib/server/mcp-session.d.ts.map +0 -1
  297. package/lib/server/mcp-session.js.map +0 -1
  298. package/lib/server/mcp-tool-handler.d.ts.map +0 -1
  299. package/lib/tools/handlers/count-elements-mcp-tool-handler.d.ts.map +0 -1
  300. package/lib/tools/handlers/count-elements-mcp-tool-handler.js.map +0 -1
  301. package/lib/tools/handlers/create-edges-mcp-tool-handler.d.ts.map +0 -1
  302. package/lib/tools/handlers/create-edges-mcp-tool-handler.js.map +0 -1
  303. package/lib/tools/handlers/create-nodes-mcp-tool-handler.d.ts.map +0 -1
  304. package/lib/tools/handlers/create-nodes-mcp-tool-handler.js.map +0 -1
  305. package/lib/tools/handlers/delete-elements-mcp-tool-handler.d.ts.map +0 -1
  306. package/lib/tools/handlers/delete-elements-mcp-tool-handler.js.map +0 -1
  307. package/lib/tools/handlers/diagram-model-mcp-tool-handler.d.ts.map +0 -1
  308. package/lib/tools/handlers/diagram-model-mcp-tool-handler.js.map +0 -1
  309. package/lib/tools/handlers/element-types-mcp-tool-handler.d.ts.map +0 -1
  310. package/lib/tools/handlers/element-types-mcp-tool-handler.js.map +0 -1
  311. package/lib/tools/handlers/get-selection-mcp-tool-handler.d.ts.map +0 -1
  312. package/lib/tools/handlers/get-selection-mcp-tool-handler.js.map +0 -1
  313. package/lib/tools/handlers/layout-mcp-tool-handler.d.ts.map +0 -1
  314. package/lib/tools/handlers/layout-mcp-tool-handler.js.map +0 -1
  315. package/lib/tools/handlers/modify-edges-mcp-tool-handler.d.ts.map +0 -1
  316. package/lib/tools/handlers/modify-edges-mcp-tool-handler.js.map +0 -1
  317. package/lib/tools/handlers/modify-nodes-mcp-tool-handler.d.ts.map +0 -1
  318. package/lib/tools/handlers/modify-nodes-mcp-tool-handler.js.map +0 -1
  319. package/lib/tools/handlers/query-elements-mcp-tool-handler.d.ts.map +0 -1
  320. package/lib/tools/handlers/query-elements-mcp-tool-handler.js.map +0 -1
  321. package/lib/tools/handlers/redo-mcp-tool-handler.d.ts.map +0 -1
  322. package/lib/tools/handlers/redo-mcp-tool-handler.js.map +0 -1
  323. package/lib/tools/handlers/save-model-mcp-tool-handler.d.ts.map +0 -1
  324. package/lib/tools/handlers/save-model-mcp-tool-handler.js.map +0 -1
  325. package/lib/tools/handlers/session-info-mcp-tool-handler.d.ts.map +0 -1
  326. package/lib/tools/handlers/session-info-mcp-tool-handler.js.map +0 -1
  327. package/lib/tools/handlers/set-selection-mcp-tool-handler.d.ts.map +0 -1
  328. package/lib/tools/handlers/set-selection-mcp-tool-handler.js.map +0 -1
  329. package/lib/tools/handlers/set-view-mcp-tool-handler.d.ts.map +0 -1
  330. package/lib/tools/handlers/set-view-mcp-tool-handler.js.map +0 -1
  331. package/lib/tools/handlers/undo-mcp-tool-handler.d.ts.map +0 -1
  332. package/lib/tools/handlers/undo-mcp-tool-handler.js.map +0 -1
  333. package/lib/tools/handlers/validate-diagram-mcp-tool-handler.d.ts.map +0 -1
  334. package/lib/tools/handlers/validate-diagram-mcp-tool-handler.js.map +0 -1
  335. package/lib/util/markdown-util.d.ts.map +0 -1
  336. package/lib/util/markdown-util.js.map +0 -1
  337. package/lib/util/mcp-util.d.ts.map +0 -1
  338. package/lib/util/mcp-util.js.map +0 -1
  339. package/src/server/mcp-http-transport-e2e.spec.ts +0 -151
  340. package/src/server/mcp-http-transport.spec.ts +0 -385
  341. package/src/server/mcp-http-transport.ts +0 -368
  342. package/src/server/mcp-server-launcher.ts +0 -369
  343. /package/lib/{modules → common/modules}/mcp-diagram-module.d.ts +0 -0
  344. /package/lib/{modules → common/modules}/mcp-diagram-module.js +0 -0
  345. /package/lib/{prompts → common/prompts}/handlers/describe-diagram-mcp-prompt-handler.d.ts +0 -0
  346. /package/lib/{prompts → common/prompts}/handlers/describe-diagram-mcp-prompt-handler.js +0 -0
  347. /package/lib/{prompts → common/prompts}/handlers/suggest-improvements-mcp-prompt-handler.d.ts +0 -0
  348. /package/lib/{prompts → common/prompts}/handlers/suggest-improvements-mcp-prompt-handler.js +0 -0
  349. /package/lib/{resources → common/resources}/handlers/diagram-png-mcp-resource-handler.d.ts +0 -0
  350. /package/lib/{resources → common/resources}/handlers/diagram-png-mcp-resource-handler.js +0 -0
  351. /package/lib/{resources → common/resources}/handlers/diagram-svg-mcp-resource-handler.d.ts +0 -0
  352. /package/lib/{resources → common/resources}/handlers/diagram-svg-mcp-resource-handler.js +0 -0
  353. /package/lib/{resources → common/resources}/services/element-types-provider.d.ts +0 -0
  354. /package/lib/{resources → common/resources}/services/element-types-provider.js +0 -0
  355. /package/lib/{resources → common/resources}/services/mcp-model-serializer.d.ts +0 -0
  356. /package/lib/{resources → common/resources}/services/mcp-model-serializer.js +0 -0
  357. /package/lib/{server → common/server}/lru-event-store.js +0 -0
  358. /package/lib/{server → common/server}/mcp-diagram-prompt-handler-registry.d.ts +0 -0
  359. /package/lib/{server → common/server}/mcp-diagram-prompt-handler-registry.js +0 -0
  360. /package/lib/{server → common/server}/mcp-diagram-resource-handler-registry.d.ts +0 -0
  361. /package/lib/{server → common/server}/mcp-diagram-tool-handler-registry.d.ts +0 -0
  362. /package/lib/{server → common/server}/mcp-handler-shared.d.ts +0 -0
  363. /package/lib/{server → common/server}/mcp-handler-shared.js +0 -0
  364. /package/lib/{server → common/server}/mcp-id-alias-service.d.ts +0 -0
  365. /package/lib/{server → common/server}/mcp-id-alias-service.js +0 -0
  366. /package/lib/{server → common/server}/mcp-label-provider.d.ts +0 -0
  367. /package/lib/{server → common/server}/mcp-label-provider.js +0 -0
  368. /package/lib/{server → common/server}/mcp-log-level-registry.js +0 -0
  369. /package/lib/{server → common/server}/mcp-mime-types.d.ts +0 -0
  370. /package/lib/{server → common/server}/mcp-mime-types.js +0 -0
  371. /package/lib/{server → common/server}/mcp-session.d.ts +0 -0
  372. /package/lib/{server → common/server}/mcp-session.js +0 -0
  373. /package/lib/{tools → common/tools}/handlers/count-elements-mcp-tool-handler.d.ts +0 -0
  374. /package/lib/{tools → common/tools}/handlers/count-elements-mcp-tool-handler.js +0 -0
  375. /package/lib/{tools → common/tools}/handlers/diagram-model-mcp-tool-handler.d.ts +0 -0
  376. /package/lib/{tools → common/tools}/handlers/diagram-model-mcp-tool-handler.js +0 -0
  377. /package/lib/{tools → common/tools}/handlers/element-types-mcp-tool-handler.d.ts +0 -0
  378. /package/lib/{tools → common/tools}/handlers/element-types-mcp-tool-handler.js +0 -0
  379. /package/lib/{tools → common/tools}/handlers/get-selection-mcp-tool-handler.d.ts +0 -0
  380. /package/lib/{tools → common/tools}/handlers/get-selection-mcp-tool-handler.js +0 -0
  381. /package/lib/{tools → common/tools}/handlers/modify-edges-mcp-tool-handler.d.ts +0 -0
  382. /package/lib/{tools → common/tools}/handlers/modify-nodes-mcp-tool-handler.d.ts +0 -0
  383. /package/lib/{tools → common/tools}/handlers/query-elements-mcp-tool-handler.d.ts +0 -0
  384. /package/lib/{tools → common/tools}/handlers/query-elements-mcp-tool-handler.js +0 -0
  385. /package/lib/{tools → common/tools}/handlers/redo-mcp-tool-handler.d.ts +0 -0
  386. /package/lib/{tools → common/tools}/handlers/redo-mcp-tool-handler.js +0 -0
  387. /package/lib/{tools → common/tools}/handlers/save-model-mcp-tool-handler.d.ts +0 -0
  388. /package/lib/{tools → common/tools}/handlers/save-model-mcp-tool-handler.js +0 -0
  389. /package/lib/{tools → common/tools}/handlers/session-info-mcp-tool-handler.d.ts +0 -0
  390. /package/lib/{tools → common/tools}/handlers/session-info-mcp-tool-handler.js +0 -0
  391. /package/lib/{tools → common/tools}/handlers/set-selection-mcp-tool-handler.d.ts +0 -0
  392. /package/lib/{tools → common/tools}/handlers/set-selection-mcp-tool-handler.js +0 -0
  393. /package/lib/{tools → common/tools}/handlers/set-view-mcp-tool-handler.d.ts +0 -0
  394. /package/lib/{tools → common/tools}/handlers/set-view-mcp-tool-handler.js +0 -0
  395. /package/lib/{tools → common/tools}/handlers/undo-mcp-tool-handler.d.ts +0 -0
  396. /package/lib/{tools → common/tools}/handlers/undo-mcp-tool-handler.js +0 -0
  397. /package/lib/{tools → common/tools}/handlers/validate-diagram-mcp-tool-handler.d.ts +0 -0
  398. /package/lib/{tools → common/tools}/handlers/validate-diagram-mcp-tool-handler.js +0 -0
  399. /package/lib/{util → common/util}/markdown-util.d.ts +0 -0
  400. /package/lib/{util → common/util}/markdown-util.js +0 -0
  401. /package/lib/{util → common/util}/mcp-util.d.ts +0 -0
  402. /package/lib/{util → common/util}/mcp-util.js +0 -0
  403. /package/src/{modules → common/modules}/mcp-diagram-module.ts +0 -0
  404. /package/src/{prompts → common/prompts}/handlers/describe-diagram-mcp-prompt-handler.ts +0 -0
  405. /package/src/{prompts → common/prompts}/handlers/suggest-improvements-mcp-prompt-handler.ts +0 -0
  406. /package/src/{resources → common/resources}/handlers/diagram-png-mcp-resource-handler.ts +0 -0
  407. /package/src/{resources → common/resources}/handlers/diagram-svg-mcp-resource-handler.ts +0 -0
  408. /package/src/{resources → common/resources}/services/element-types-provider.ts +0 -0
  409. /package/src/{resources → common/resources}/services/mcp-model-serializer.ts +0 -0
  410. /package/src/{server → common/server}/glsp-mcp-server.spec.ts +0 -0
  411. /package/src/{server → common/server}/lru-event-store.spec.ts +0 -0
  412. /package/src/{server → common/server}/mcp-diagram-handler-dispatcher.spec.ts +0 -0
  413. /package/src/{server → common/server}/mcp-diagram-prompt-handler-registry.ts +0 -0
  414. /package/src/{server → common/server}/mcp-handler-shared.spec.ts +0 -0
  415. /package/src/{server → common/server}/mcp-handler-shared.ts +0 -0
  416. /package/src/{server → common/server}/mcp-id-alias-service.spec.ts +0 -0
  417. /package/src/{server → common/server}/mcp-id-alias-service.ts +0 -0
  418. /package/src/{server → common/server}/mcp-label-provider.ts +0 -0
  419. /package/src/{server → common/server}/mcp-log-level-registry.spec.ts +0 -0
  420. /package/src/{server → common/server}/mcp-mime-types.ts +0 -0
  421. /package/src/{server → common/server}/mcp-session.ts +0 -0
  422. /package/src/{tools → common/tools}/handlers/count-elements-mcp-tool-handler.spec.ts +0 -0
  423. /package/src/{tools → common/tools}/handlers/count-elements-mcp-tool-handler.ts +0 -0
  424. /package/src/{tools → common/tools}/handlers/create-edges-mcp-tool-handler.spec.ts +0 -0
  425. /package/src/{tools → common/tools}/handlers/create-nodes-mcp-tool-handler.spec.ts +0 -0
  426. /package/src/{tools → common/tools}/handlers/diagram-model-mcp-tool-handler.ts +0 -0
  427. /package/src/{tools → common/tools}/handlers/element-types-mcp-tool-handler.ts +0 -0
  428. /package/src/{tools → common/tools}/handlers/get-selection-mcp-tool-handler.ts +0 -0
  429. /package/src/{tools → common/tools}/handlers/query-elements-mcp-tool-handler.spec.ts +0 -0
  430. /package/src/{tools → common/tools}/handlers/query-elements-mcp-tool-handler.ts +0 -0
  431. /package/src/{tools → common/tools}/handlers/redo-mcp-tool-handler.ts +0 -0
  432. /package/src/{tools → common/tools}/handlers/save-model-mcp-tool-handler.ts +0 -0
  433. /package/src/{tools → common/tools}/handlers/session-info-mcp-tool-handler.spec.ts +0 -0
  434. /package/src/{tools → common/tools}/handlers/session-info-mcp-tool-handler.ts +0 -0
  435. /package/src/{tools → common/tools}/handlers/set-selection-mcp-tool-handler.spec.ts +0 -0
  436. /package/src/{tools → common/tools}/handlers/set-selection-mcp-tool-handler.ts +0 -0
  437. /package/src/{tools → common/tools}/handlers/set-view-mcp-tool-handler.ts +0 -0
  438. /package/src/{tools → common/tools}/handlers/undo-mcp-tool-handler.ts +0 -0
  439. /package/src/{tools → common/tools}/handlers/validate-diagram-mcp-tool-handler.ts +0 -0
  440. /package/src/{tools → common/tools}/tool-annotations.spec.ts +0 -0
  441. /package/src/{util → common/util}/markdown-util.ts +0 -0
  442. /package/src/{util → common/util}/mcp-util.ts +0 -0
  443. /package/src/{server → node/server}/raw-http.spec.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /********************************************************************************
3
- * Copyright (c) 2025-2026 EclipseSource and others.
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.McpServerLauncher = exports.SERVER_VERSION = exports.MCP_SERVER_READY_MSG = void 0;
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("../../package.json");
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
- * out deploy-only fields (`host`, `allowedHosts`, `allowedOrigins`, `acknowledgedNoAuth`) on
59
- * `McpServerConfiguration.options`, but the wire payload is JSON, so a malformed or
60
- * malicious client could smuggle extra keys. Destructure-based pick drops anything outside
61
- * the allowed set so deploy-only fields are sourced *only* from adopter defaults.
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
- * Returns true iff `host` is a loopback bind: `localhost`, `::1`, or any IPv4 in
81
- * `127.0.0.0/8`. Any other value (`0.0.0.0`, `::`, LAN/public addresses) is non-loopback.
82
- * Used by {@link assertLoopbackOrAcknowledged} for the auth-footgun runtime check.
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
- function assertLoopbackOrAcknowledged(host, acknowledgedNoAuth) {
93
- if (isLoopbackHost(host) || acknowledgedNoAuth === true) {
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
- * Boots the embedded MCP HTTP server when a GLSP `initialize` call carries an `mcpServer`
104
- * configuration. Runs in-process via the {@link GLSPServerInitializer} lifecycle — not a
105
- * separate process runner. Diagram-scope handler discovery and dispatch are delegated to
106
- * {@link McpDiagramHandlerDispatcher}.
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 McpServerLauncher = class McpServerLauncher {
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 HTTP server. Only the first call starts it.
125
- if (this.serverUrl && this.serverConfig) {
126
- return server_1.McpInitializeResult.attachServer(result, { name: this.serverConfig.name, url: this.serverUrl });
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.transport.start(mcpServerConfig);
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
- onSessionInitialized(client, config) {
166
- this.logger.info(`MCP session initialized with ID: ${client.sessionId}`);
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(client.sessionId, glspMcpServer);
169
- this.registerLogLevelHandler(glspMcpServer, client.sessionId);
170
- // server assumes control of the connection
171
- glspMcpServer.connect(client);
304
+ this.sessionServers.set(sessionId, glspMcpServer);
305
+ this.registerLogLevelHandler(glspMcpServer, sessionId);
306
+ glspMcpServer.connect(transport);
172
307
  }
173
- onSessionClosed(sessionId) {
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's {@link AbstractMcpPromptHandler.referencedToolNames}
279
- * contains a name not registered on this MCP session — catches adopters who unbind a tool
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
- serverShutDown(server) {
292
- this.dispose();
293
- }
294
- dispose() {
295
- this.sessionServers.forEach(glspMcpServer => glspMcpServer.dispose());
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.McpServerLauncher = McpServerLauncher;
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
- ], McpServerLauncher.prototype, "logger", void 0);
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
- ], McpServerLauncher.prototype, "mcpOptions", void 0);
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
- ], McpServerLauncher.prototype, "mcpDefaults", void 0);
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
- ], McpServerLauncher.prototype, "glspMcpServerFactory", void 0);
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
- ], McpServerLauncher.prototype, "dispatcher", void 0);
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
- ], McpServerLauncher.prototype, "logLevelRegistry", void 0);
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
- ], McpServerLauncher.prototype, "clientSessionManager", void 0);
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
- ], McpServerLauncher.prototype, "toolHandlers", void 0);
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
- ], McpServerLauncher.prototype, "resourceHandlers", void 0);
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
- ], McpServerLauncher.prototype, "promptHandlers", void 0);
352
- exports.McpServerLauncher = McpServerLauncher = __decorate([
465
+ ], AbstractMcpServerLauncher.prototype, "promptHandlers", void 0);
466
+ exports.AbstractMcpServerLauncher = AbstractMcpServerLauncher = __decorate([
353
467
  (0, inversify_1.injectable)()
354
- ], McpServerLauncher);
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?: NodeJS.Timeout;
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
- this.keepAliveTimer.unref();
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 McpServerLauncher} so adopters can `rebind(McpDiagramHandlerDispatcher)`
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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"}