@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,369 +0,0 @@
1
- /********************************************************************************
2
- * Copyright (c) 2025-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
-
17
- import {
18
- ClientSessionListener,
19
- ClientSessionManager,
20
- Disposable,
21
- DisposableCollection,
22
- GLSPServer,
23
- GLSPServerInitializer,
24
- GLSPServerListener,
25
- InitializeParameters,
26
- InitializeResult,
27
- Logger,
28
- McpInitializeParameters,
29
- McpInitializeResult,
30
- McpServerConfiguration,
31
- McpServerInitOptions
32
- } from '@eclipse-glsp/server';
33
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
34
- import { ServerCapabilities, SetLevelRequestSchema } from '@modelcontextprotocol/sdk/types.js';
35
- import { inject, injectable, multiInject, optional } from 'inversify';
36
- import { version as packageVersion } from '../../package.json';
37
- import { GLSPMcpServer, GLSPMcpServerFactory } from './glsp-mcp-server';
38
- import { McpDiagramHandlerDispatcher } from './mcp-diagram-handler-dispatcher';
39
- import { McpHttpTransport } from './mcp-http-transport';
40
- import { McpLogLevelRegistry } from './mcp-log-level-registry';
41
- import { McpServerDefaults, McpServerOptions } from './mcp-options';
42
- import { McpPromptHandler } from './mcp-prompt-handler';
43
- import { McpResourceHandler } from './mcp-resource-handler';
44
- import { McpSession } from './mcp-session';
45
- import { McpToolHandler } from './mcp-tool-handler';
46
-
47
- /**
48
- * Stdout tag used to announce the started MCP server so IDE integrations can pick up the URL
49
- * automatically. The full line is `MCP_SERVER_READY_MSG + JSON.stringify({name, url, route})`,
50
- * mirroring how the GLSP server itself announces its port via `START_UP_COMPLETE_MSG`.
51
- */
52
- export const MCP_SERVER_READY_MSG = '[GLSP-MCP-Server]:Ready. ';
53
-
54
- /**
55
- * Server version reported in MCP `initialize` handshake responses (the SDK's `serverInfo.version`
56
- * field). Sourced from the package's own `package.json` so adopters and clients can tell builds
57
- * apart without the server author having to remember to bump a literal.
58
- */
59
- export const SERVER_VERSION: string = packageVersion;
60
-
61
- /**
62
- * Launcher's internal handoff shape: everything from the public {@link McpServerConfiguration}
63
- * with all fields resolved, plus `host`. `host` is deliberately *not* in the public protocol's
64
- * init schema — it lives on `McpServerDeployOptions` (deploy-only) rather than
65
- * `McpServerInitOptions` (init-controllable). The launcher reads it from the adopter-supplied
66
- * defaults via `McpServerOptions.values.host` (whose ship default lives in
67
- * `DefaultMcpServerModule.DEFAULT_OPTIONS`). The init/deploy split limits blast radius:
68
- * MCP clients can negotiate behavioral fields like `port` over the wire, but security-sensitive
69
- * fields like the bind interface are settable only by the adopter at process start.
70
- */
71
- export type FullMcpServerConfiguration = Required<McpServerConfiguration> & { host: string };
72
-
73
- /**
74
- * Defense-in-depth filter for the init-side options payload. The static type already rules
75
- * out deploy-only fields (`host`, `allowedHosts`, `allowedOrigins`, `acknowledgedNoAuth`) on
76
- * `McpServerConfiguration.options`, but the wire payload is JSON, so a malformed or
77
- * malicious client could smuggle extra keys. Destructure-based pick drops anything outside
78
- * the allowed set so deploy-only fields are sourced *only* from adopter defaults.
79
- *
80
- * **Update this allowlist when adding a field to `McpServerInitOptions`** — the destructure
81
- * below is the single source of truth for which init-side fields cross the wire.
82
- *
83
- * Exported for regression-test access only; not part of the public package surface.
84
- */
85
- export function pickInitOptions(options: McpServerInitOptions): McpServerInitOptions {
86
- const { dataMode, agentPersona, eventStoreLimit } = options;
87
- const picked: McpServerInitOptions = {};
88
- if (dataMode !== undefined) picked.dataMode = dataMode;
89
- if (agentPersona !== undefined) picked.agentPersona = agentPersona;
90
- if (eventStoreLimit !== undefined) picked.eventStoreLimit = eventStoreLimit;
91
- return picked;
92
- }
93
-
94
- /**
95
- * Returns true iff `host` is a loopback bind: `localhost`, `::1`, or any IPv4 in
96
- * `127.0.0.0/8`. Any other value (`0.0.0.0`, `::`, LAN/public addresses) is non-loopback.
97
- * Used by {@link assertLoopbackOrAcknowledged} for the auth-footgun runtime check.
98
- */
99
- export function isLoopbackHost(host: string): boolean {
100
- return host === 'localhost' || host === '::1' || /^127\./.test(host);
101
- }
102
-
103
- /**
104
- * Refuse to bind on a non-loopback host unless the operator has acknowledged that traffic is
105
- * authenticated externally (reverse proxy, mTLS, ACL). The MCP server has no built-in auth.
106
- * Exported for regression tests only; not part of the public surface.
107
- */
108
- export function assertLoopbackOrAcknowledged(host: string, acknowledgedNoAuth: boolean | undefined): void {
109
- if (isLoopbackHost(host) || acknowledgedNoAuth === true) {
110
- return;
111
- }
112
- throw new Error(
113
- `Refusing to bind MCP server to non-loopback host '${host}' without authentication. ` +
114
- 'The MCP server has no built-in auth; binding to a non-loopback interface exposes an ' +
115
- 'unauthenticated MCP endpoint to the network. If this is intentional (e.g., the endpoint ' +
116
- 'is fronted by a reverse proxy, mTLS, or a network ACL that authenticates traffic), set ' +
117
- '`acknowledgedNoAuth: true` on the McpServerDefaults you pass to the server module.'
118
- );
119
- }
120
-
121
- /**
122
- * Boots the embedded MCP HTTP server when a GLSP `initialize` call carries an `mcpServer`
123
- * configuration. Runs in-process via the {@link GLSPServerInitializer} lifecycle — not a
124
- * separate process runner. Diagram-scope handler discovery and dispatch are delegated to
125
- * {@link McpDiagramHandlerDispatcher}.
126
- */
127
- @injectable()
128
- export class McpServerLauncher implements GLSPServerInitializer, GLSPServerListener, Disposable {
129
- @inject(Logger) protected logger: Logger;
130
-
131
- @inject(McpServerOptions) protected mcpOptions: McpServerOptions;
132
-
133
- @inject(McpServerDefaults) protected mcpDefaults: McpServerDefaults;
134
-
135
- @inject(McpHttpTransport) protected transport: McpHttpTransport;
136
-
137
- @inject(GLSPMcpServerFactory) protected glspMcpServerFactory: GLSPMcpServerFactory;
138
-
139
- @inject(McpDiagramHandlerDispatcher) protected dispatcher: McpDiagramHandlerDispatcher;
140
-
141
- @inject(McpLogLevelRegistry) protected logLevelRegistry: McpLogLevelRegistry;
142
-
143
- @inject(ClientSessionManager) protected clientSessionManager: ClientSessionManager;
144
-
145
- @multiInject(McpToolHandler) @optional() protected toolHandlers: McpToolHandler[] = [];
146
-
147
- @multiInject(McpResourceHandler) @optional() protected resourceHandlers: McpResourceHandler[] = [];
148
-
149
- @multiInject(McpPromptHandler) @optional() protected promptHandlers: McpPromptHandler[] = [];
150
-
151
- protected toDispose = new DisposableCollection();
152
- protected serverUrl: string | undefined;
153
- protected serverConfig: FullMcpServerConfiguration | undefined;
154
-
155
- /** Per-MCP-session GLSPMcpServer registry — populated on session-init, cleared on session-close. */
156
- protected readonly sessionServers = new Map<string, GLSPMcpServer>();
157
-
158
- async initializeServer(server: GLSPServer, params: InitializeParameters, result: InitializeResult): Promise<InitializeResult> {
159
- const mcpServerParam = McpInitializeParameters.getServerConfig(params);
160
- if (!mcpServerParam) {
161
- return result;
162
- }
163
-
164
- // Idempotent: subsequent client sessions of the same GLSP server reuse the existing
165
- // MCP HTTP server. Only the first call starts it.
166
- if (this.serverUrl && this.serverConfig) {
167
- return McpInitializeResult.attachServer(result, { name: this.serverConfig.name, url: this.serverUrl });
168
- }
169
-
170
- // Port defaults to 0 (random); the resolved URL is announced via the stdout marker
171
- // below. `host` is intentionally NOT in the init-time schema — it comes from the
172
- // server module's adopter defaults (no DNS-rebinding foot-gun via the LLM path).
173
- const { port = 0, route = '/mcp', name = 'glsp', options = {} } = mcpServerParam;
174
- // Init-time options win per field, but only fields in the init allowlist —
175
- // `pickInitOptions` strips any wire-smuggled deploy-only keys before merge.
176
- const mergedOptions = { ...this.mcpDefaults, ...pickInitOptions(options) };
177
- this.mcpOptions.values = mergedOptions;
178
- const host = mergedOptions.host ?? '127.0.0.1';
179
- // Auth-footgun guard: refuse non-loopback bind unless the operator opted in via
180
- // `acknowledgedNoAuth`. Runs BEFORE the transport binds the socket so a careless
181
- // `host: '0.0.0.0'` doesn't get a chance to expose an unauthenticated endpoint.
182
- assertLoopbackOrAcknowledged(host, mergedOptions.acknowledgedNoAuth);
183
- const mcpServerConfig: FullMcpServerConfiguration = { port, host, route, name, options: mergedOptions };
184
-
185
- this.dispatcher.harvest();
186
-
187
- // Capture the per-init subscription disposables so a dispose-then-restart cycle
188
- // (transport is `inSingletonScope()`) doesn't accumulate stale listeners.
189
- this.toDispose.push(this.transport.onSessionInitialized(client => this.onSessionInitialized(client, mcpServerConfig)));
190
- this.toDispose.push(this.transport.onSessionClosed(sessionId => this.onSessionClosed(sessionId)));
191
- this.toDispose.push(this.transport);
192
- this.installResourceListChangedNotifier();
193
-
194
- const endpoint = await this.transport.start(mcpServerConfig);
195
- this.serverUrl = endpoint.url;
196
- this.serverConfig = mcpServerConfig;
197
- this.logger.info(
198
- `MCP server '${mcpServerConfig.name}' is ready to accept new client requests on: ${this.serverUrl ?? '(no network endpoint)'}`
199
- );
200
-
201
- // stdout ready-marker for parent processes to discover the URL. Uses `console.log`
202
- // (not the GLSP logger) so adopter logger config can never hide it.
203
- console.log(MCP_SERVER_READY_MSG + JSON.stringify({ name: mcpServerConfig.name, url: this.serverUrl, route }));
204
- if (endpoint.url) {
205
- return McpInitializeResult.attachServer(result, {
206
- name: mcpServerConfig.name,
207
- url: endpoint.url,
208
- headers: endpoint.headers
209
- });
210
- }
211
- return result;
212
- }
213
-
214
- protected onSessionInitialized(client: McpSession, config: FullMcpServerConfiguration): void {
215
- this.logger.info(`MCP session initialized with ID: ${client.sessionId}`);
216
- const glspMcpServer = this.createGlspMcpServer(config);
217
- this.sessionServers.set(client.sessionId, glspMcpServer);
218
- this.registerLogLevelHandler(glspMcpServer, client.sessionId);
219
- // server assumes control of the connection
220
- glspMcpServer.connect(client);
221
- }
222
-
223
- protected onSessionClosed(sessionId: string): void {
224
- const glspMcpServer = this.sessionServers.get(sessionId);
225
- if (glspMcpServer) {
226
- this.sessionServers.delete(sessionId);
227
- this.logLevelRegistry.clear(sessionId);
228
- // The transport already closes the client end; close the SDK server end too.
229
- glspMcpServer.dispose();
230
- this.logger.info(`MCP session closed: ${sessionId}`);
231
- }
232
- }
233
-
234
- /**
235
- * Fire `notifications/resources/list_changed` to every connected MCP client when a GLSP
236
- * session opens or closes — diagram-scope resources aggregate across GLSP sessions, so the
237
- * visible list mutates with that lifecycle. No-op when no diagram-scope resources are bound.
238
- */
239
- protected installResourceListChangedNotifier(): void {
240
- if (!this.dispatcher.hasDiagramResources()) {
241
- return;
242
- }
243
- const listener: ClientSessionListener = {
244
- sessionCreated: () => this.broadcastResourceListChanged(),
245
- sessionDisposed: () => this.broadcastResourceListChanged()
246
- };
247
- this.clientSessionManager.addListener(listener);
248
- this.toDispose.push(Disposable.create(() => this.clientSessionManager.removeListener(listener)));
249
- }
250
-
251
- /** Best-effort fan-out — failures on individual MCP sessions (e.g. transport mid-close) are swallowed. */
252
- protected broadcastResourceListChanged(): void {
253
- for (const glspMcpServer of this.sessionServers.values()) {
254
- glspMcpServer
255
- .getRawServer()
256
- .server.sendResourceListChanged()
257
- .catch(err => this.logger.debug('sendResourceListChanged failed:', err));
258
- }
259
- }
260
-
261
- /** Register `logging/setLevel` so a connected MCP client can adjust its message severity threshold. */
262
- protected registerLogLevelHandler(glspMcpServer: GLSPMcpServer, sessionId: string): void {
263
- glspMcpServer.getRawServer().server.setRequestHandler(SetLevelRequestSchema, async request => {
264
- this.logLevelRegistry.setLevel(sessionId, request.params.level);
265
- return {};
266
- });
267
- }
268
-
269
- protected createGlspMcpServer({ name, options }: FullMcpServerConfiguration): GLSPMcpServer {
270
- const resourcesAsResources = options.dataMode === 'resources';
271
- const server = new McpServer(
272
- { name, version: SERVER_VERSION },
273
- {
274
- capabilities: this.buildCapabilities(resourcesAsResources),
275
- instructions: options.agentPersona
276
- }
277
- );
278
- const glspMcpServer = this.glspMcpServerFactory(server, options);
279
- this.registerHandlers(glspMcpServer, resourcesAsResources);
280
- return glspMcpServer;
281
- }
282
-
283
- /**
284
- * Build the MCP capabilities map from what is actually bound. Only declare a key when at
285
- * least one handler contributes — declaring a capability the SDK never registers a handler
286
- * for produces `-32601 Method not found` on `<cap>/list`. Resources surfaced as tools
287
- * (`dataMode === 'tools'`) count toward `tools`, not `resources`.
288
- */
289
- protected buildCapabilities(resourcesAsResources: boolean): ServerCapabilities {
290
- const hasStaticTools = this.toolHandlers.length > 0;
291
- const hasStaticPrompts = this.promptHandlers.length > 0;
292
- const hasStaticResources = this.resourceHandlers.length > 0;
293
- const hasDiagramTools = this.dispatcher.hasDiagramTools();
294
- const hasDiagramPrompts = this.dispatcher.hasDiagramPrompts();
295
- const hasDiagramResources = this.dispatcher.hasDiagramResources();
296
- const anyResources = hasStaticResources || hasDiagramResources;
297
-
298
- const hasTools = hasStaticTools || hasDiagramTools || (!resourcesAsResources && anyResources);
299
- const hasPrompts = hasStaticPrompts || hasDiagramPrompts;
300
- const hasResources = resourcesAsResources && anyResources;
301
-
302
- return {
303
- logging: {},
304
- ...(hasTools ? { tools: { listChanged: false } } : {}),
305
- // `resources.listChanged: true` iff the catalog contains diagram-scope resources —
306
- // those aggregate across open GLSP sessions, so the visible list mutates with
307
- // session add/remove. Server-scope-only catalogs are static, so the flag stays
308
- // honest at `false` (the SDK reads it; clients refetch only when notified).
309
- ...(hasResources ? { resources: { listChanged: hasDiagramResources } } : {}),
310
- ...(hasPrompts ? { prompts: { listChanged: false } } : {})
311
- };
312
- }
313
-
314
- /**
315
- * Registers tool/resource/prompt handlers against the per-MCP-session GLSP MCP server. Two
316
- * sources flow into the catalog:
317
- *
318
- * 1. **Server-scope handlers**: singletons bound under `McpToolHandler` /
319
- * `McpResourceHandler` / `McpPromptHandler`. Registered via their `register*(server)`
320
- * methods — they're already-instantiated objects that close over their own state.
321
- *
322
- * 2. **Diagram-scope handlers**: registered by {@link McpDiagramHandlerDispatcher}, which
323
- * walks the catalogs harvested at server start and dispatches each registered SDK
324
- * callback by `params.sessionId` → per-GLSP-session container → registry lookup.
325
- */
326
- protected registerHandlers(glspMcpServer: GLSPMcpServer, resourcesAsResources: boolean): void {
327
- this.toolHandlers.forEach(handler => handler.registerTool(glspMcpServer));
328
- this.promptHandlers.forEach(handler => handler.registerPrompt(glspMcpServer));
329
- if (resourcesAsResources) {
330
- this.resourceHandlers.forEach(handler => handler.registerResource(glspMcpServer));
331
- } else {
332
- this.resourceHandlers.forEach(handler => handler.registerToolAlternative?.(glspMcpServer));
333
- }
334
-
335
- this.dispatcher.registerAll(glspMcpServer, resourcesAsResources);
336
- this.validatePromptToolReferences(glspMcpServer);
337
- }
338
-
339
- /**
340
- * Warn when a server-scope prompt's {@link AbstractMcpPromptHandler.referencedToolNames}
341
- * contains a name not registered on this MCP session — catches adopters who unbind a tool
342
- * a shipped prompt references via `${OtherHandler.NAME}`.
343
- */
344
- protected validatePromptToolReferences(glspMcpServer: GLSPMcpServer): void {
345
- for (const handler of this.promptHandlers) {
346
- const missing = handler.referencedToolNames().filter(name => !glspMcpServer.hasTool(name));
347
- if (missing.length > 0) {
348
- this.logger.warn(
349
- `Prompt '${handler.name}' references unbound tool(s): ${missing.join(', ')}. ` +
350
- 'The prompt will still register but its text points at tools the LLM cannot invoke.'
351
- );
352
- }
353
- }
354
- }
355
-
356
- serverShutDown(server: GLSPServer): void {
357
- this.dispose();
358
- }
359
-
360
- dispose(): void {
361
- this.sessionServers.forEach(glspMcpServer => glspMcpServer.dispose());
362
- this.sessionServers.clear();
363
- this.toDispose.dispose();
364
- this.toDispose.clear();
365
- this.serverUrl = undefined;
366
- this.serverConfig = undefined;
367
- this.dispatcher.reset();
368
- }
369
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes