@synergy-design-system/mcp 2.15.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +826 -303
  3. package/dist/bin/start.js +57 -6
  4. package/dist/middleware/compose.d.ts +15 -0
  5. package/dist/middleware/compose.js +10 -0
  6. package/dist/middleware/compression.d.ts +19 -0
  7. package/dist/middleware/compression.js +35 -0
  8. package/dist/middleware/error-handler.d.ts +13 -0
  9. package/dist/middleware/error-handler.js +42 -0
  10. package/dist/middleware/index.d.ts +9 -0
  11. package/dist/middleware/index.js +8 -0
  12. package/dist/middleware/logging.d.ts +14 -0
  13. package/dist/middleware/logging.js +64 -0
  14. package/dist/middleware/types.d.ts +20 -0
  15. package/dist/middleware/types.js +4 -0
  16. package/dist/resources/asset-list.d.ts +7 -0
  17. package/dist/resources/asset-list.js +34 -0
  18. package/dist/resources/component-cluster-list.d.ts +7 -0
  19. package/dist/resources/component-cluster-list.js +30 -0
  20. package/dist/resources/component-list.d.ts +7 -0
  21. package/dist/resources/component-list.js +31 -0
  22. package/dist/resources/index.d.ts +5 -0
  23. package/dist/resources/index.js +5 -0
  24. package/dist/resources/styles-list.d.ts +7 -0
  25. package/dist/resources/styles-list.js +31 -0
  26. package/dist/resources/templates-list.d.ts +7 -0
  27. package/dist/resources/templates-list.js +28 -0
  28. package/dist/server.js +5 -1
  29. package/dist/tools/asset-info.js +41 -85
  30. package/dist/tools/asset-list.js +22 -31
  31. package/dist/tools/component-cluster-list.d.ts +6 -0
  32. package/dist/tools/component-cluster-list.js +30 -0
  33. package/dist/tools/component-info.js +38 -21
  34. package/dist/tools/component-list.js +35 -30
  35. package/dist/tools/davinci-migration-info.d.ts +2 -0
  36. package/dist/tools/davinci-migration-info.js +21 -0
  37. package/dist/tools/davinci-migration-list.d.ts +2 -0
  38. package/dist/tools/davinci-migration-list.js +20 -0
  39. package/dist/tools/index.d.ts +6 -5
  40. package/dist/tools/index.js +6 -5
  41. package/dist/tools/migration-info.js +12 -37
  42. package/dist/tools/migration-list.js +7 -13
  43. package/dist/tools/setup.d.ts +6 -0
  44. package/dist/tools/setup.js +31 -0
  45. package/dist/tools/styles-info.d.ts +1 -2
  46. package/dist/tools/styles-info.js +24 -20
  47. package/dist/tools/styles-list.js +19 -33
  48. package/dist/tools/template-info.js +19 -20
  49. package/dist/tools/template-list.d.ts +1 -1
  50. package/dist/tools/template-list.js +17 -32
  51. package/dist/tools/{tokens.d.ts → token-info.d.ts} +2 -2
  52. package/dist/tools/token-info.js +31 -0
  53. package/dist/tools/tokens-list.d.ts +6 -0
  54. package/dist/tools/tokens-list.js +52 -0
  55. package/dist/transports/http.d.ts +14 -0
  56. package/dist/transports/http.js +157 -0
  57. package/dist/transports/index.d.ts +23 -0
  58. package/dist/transports/index.js +23 -0
  59. package/dist/transports/stdio.d.ts +10 -0
  60. package/dist/transports/stdio.js +21 -0
  61. package/dist/types/tool-response.d.ts +13 -0
  62. package/dist/types/tool-response.js +7 -0
  63. package/dist/utilities/cli.d.ts +27 -0
  64. package/dist/utilities/cli.js +170 -0
  65. package/dist/utilities/compression.d.ts +7 -0
  66. package/dist/utilities/compression.js +45 -0
  67. package/dist/utilities/config.d.ts +122 -80
  68. package/dist/utilities/config.js +212 -81
  69. package/dist/utilities/davinci.d.ts +12 -0
  70. package/dist/utilities/davinci.js +55 -0
  71. package/dist/utilities/index.d.ts +10 -10
  72. package/dist/utilities/index.js +10 -10
  73. package/dist/utilities/local-file-logger.d.ts +2 -0
  74. package/dist/utilities/local-file-logger.js +22 -0
  75. package/dist/utilities/logger.d.ts +12 -0
  76. package/dist/utilities/logger.js +30 -0
  77. package/dist/utilities/logging-context.d.ts +8 -0
  78. package/dist/utilities/logging-context.js +7 -0
  79. package/dist/utilities/logging-service.d.ts +2 -0
  80. package/dist/utilities/logging-service.js +24 -0
  81. package/dist/utilities/logging-types.d.ts +19 -0
  82. package/dist/utilities/metadata.d.ts +10 -17
  83. package/dist/utilities/metadata.js +34 -51
  84. package/dist/utilities/migration.d.ts +2 -1
  85. package/dist/utilities/migration.js +33 -30
  86. package/dist/utilities/rules.d.ts +8 -0
  87. package/dist/utilities/rules.js +37 -0
  88. package/dist/utilities/server.d.ts +7 -0
  89. package/dist/utilities/server.js +12 -0
  90. package/dist/utilities/token-counter.d.ts +14 -0
  91. package/dist/utilities/token-counter.js +53 -0
  92. package/package.json +18 -28
  93. package/rules/asset-info.md +10 -0
  94. package/rules/asset-list.md +10 -0
  95. package/rules/component-cluster-list.md +5 -0
  96. package/{metadata/static/angular/index.md → rules/component-info-angular.md} +2 -1
  97. package/{metadata/static/react/index.md → rules/component-info-react.md} +2 -1
  98. package/{metadata/static/vue/index.md → rules/component-info-vue.md} +4 -1
  99. package/{metadata/static/component-list/index.md → rules/component-list.md} +5 -7
  100. package/rules/styles-info.md +9 -0
  101. package/{metadata/static/styles/index.md → rules/styles-list.md} +0 -2
  102. package/{metadata/static/templates/index.md → rules/template-info.md} +0 -1
  103. package/rules/template-list.md +7 -0
  104. package/dist/bin/create-checksum.d.ts +0 -2
  105. package/dist/bin/create-checksum.js +0 -24
  106. package/dist/build/assets.d.ts +0 -4
  107. package/dist/build/assets.js +0 -57
  108. package/dist/build/build.js +0 -35
  109. package/dist/build/components.d.ts +0 -4
  110. package/dist/build/components.js +0 -133
  111. package/dist/build/fonts.d.ts +0 -4
  112. package/dist/build/fonts.js +0 -49
  113. package/dist/build/frameworks.d.ts +0 -4
  114. package/dist/build/frameworks.js +0 -61
  115. package/dist/build/static.d.ts +0 -4
  116. package/dist/build/static.js +0 -65
  117. package/dist/build/styles.d.ts +0 -4
  118. package/dist/build/styles.js +0 -58
  119. package/dist/build/tokens.d.ts +0 -4
  120. package/dist/build/tokens.js +0 -59
  121. package/dist/tools/davinci-migration.d.ts +0 -3
  122. package/dist/tools/davinci-migration.js +0 -66
  123. package/dist/tools/font-info.d.ts +0 -6
  124. package/dist/tools/font-info.js +0 -35
  125. package/dist/tools/framework-info.d.ts +0 -7
  126. package/dist/tools/framework-info.js +0 -58
  127. package/dist/tools/tokens.js +0 -24
  128. package/dist/tools/version.d.ts +0 -7
  129. package/dist/tools/version.js +0 -53
  130. package/dist/utilities/assets.d.ts +0 -2
  131. package/dist/utilities/assets.js +0 -3
  132. package/dist/utilities/checksum.d.ts +0 -36
  133. package/dist/utilities/checksum.js +0 -94
  134. package/dist/utilities/components.d.ts +0 -25
  135. package/dist/utilities/components.js +0 -86
  136. package/dist/utilities/file.d.ts +0 -12
  137. package/dist/utilities/file.js +0 -31
  138. package/dist/utilities/fonts.d.ts +0 -2
  139. package/dist/utilities/fonts.js +0 -3
  140. package/dist/utilities/stdio.d.ts +0 -14
  141. package/dist/utilities/stdio.js +0 -60
  142. package/dist/utilities/storybook/build-docs.d.ts +0 -2
  143. package/dist/utilities/storybook/build-docs.js +0 -43
  144. package/dist/utilities/storybook/configs.d.ts +0 -13
  145. package/dist/utilities/storybook/configs.js +0 -85
  146. package/dist/utilities/storybook/docs-scraper.d.ts +0 -26
  147. package/dist/utilities/storybook/docs-scraper.js +0 -96
  148. package/dist/utilities/storybook/index.d.ts +0 -5
  149. package/dist/utilities/storybook/index.js +0 -4
  150. package/dist/utilities/storybook/scraper.d.ts +0 -14
  151. package/dist/utilities/storybook/scraper.js +0 -243
  152. package/dist/utilities/storybook/storybook-manager.d.ts +0 -29
  153. package/dist/utilities/storybook/storybook-manager.js +0 -138
  154. package/dist/utilities/storybook/types.d.ts +0 -22
  155. package/dist/utilities/storybook/types.js +0 -1
  156. package/dist/utilities/styles.d.ts +0 -6
  157. package/dist/utilities/styles.js +0 -24
  158. package/dist/utilities/templates.d.ts +0 -12
  159. package/dist/utilities/templates.js +0 -28
  160. package/dist/utilities/tokens.d.ts +0 -1
  161. package/dist/utilities/tokens.js +0 -21
  162. package/dist/utilities/version.d.ts +0 -28
  163. package/dist/utilities/version.js +0 -21
  164. package/metadata/checksum.txt +0 -1
  165. package/metadata/davinci-migration/migration-guide.md +0 -1859
  166. package/metadata/packages/angular/LIMITATIONS.md +0 -32
  167. package/metadata/packages/angular/README.md +0 -393
  168. package/metadata/packages/assets/BREAKING_CHANGES.md +0 -305
  169. package/metadata/packages/assets/CHANGELOG.md +0 -374
  170. package/metadata/packages/assets/README.md +0 -103
  171. package/metadata/packages/components/components/syn-accordion/component.angular.ts +0 -80
  172. package/metadata/packages/components/components/syn-accordion/component.react.ts +0 -30
  173. package/metadata/packages/components/components/syn-accordion/component.styles.ts +0 -15
  174. package/metadata/packages/components/components/syn-accordion/component.ts +0 -111
  175. package/metadata/packages/components/components/syn-accordion/component.vue +0 -64
  176. package/metadata/packages/components/components/syn-alert/component.angular.ts +0 -169
  177. package/metadata/packages/components/components/syn-alert/component.react.ts +0 -60
  178. package/metadata/packages/components/components/syn-alert/component.styles.ts +0 -203
  179. package/metadata/packages/components/components/syn-alert/component.ts +0 -322
  180. package/metadata/packages/components/components/syn-alert/component.vue +0 -135
  181. package/metadata/packages/components/components/syn-badge/component.angular.ts +0 -53
  182. package/metadata/packages/components/components/syn-badge/component.custom.styles.ts +0 -62
  183. package/metadata/packages/components/components/syn-badge/component.react.ts +0 -29
  184. package/metadata/packages/components/components/syn-badge/component.styles.ts +0 -52
  185. package/metadata/packages/components/components/syn-badge/component.ts +0 -58
  186. package/metadata/packages/components/components/syn-badge/component.vue +0 -53
  187. package/metadata/packages/components/components/syn-breadcrumb/component.angular.ts +0 -58
  188. package/metadata/packages/components/components/syn-breadcrumb/component.custom.styles.ts +0 -5
  189. package/metadata/packages/components/components/syn-breadcrumb/component.react.ts +0 -32
  190. package/metadata/packages/components/components/syn-breadcrumb/component.styles.ts +0 -11
  191. package/metadata/packages/components/components/syn-breadcrumb/component.ts +0 -103
  192. package/metadata/packages/components/components/syn-breadcrumb/component.vue +0 -58
  193. package/metadata/packages/components/components/syn-breadcrumb-item/component.angular.ts +0 -88
  194. package/metadata/packages/components/components/syn-breadcrumb-item/component.custom.styles.ts +0 -78
  195. package/metadata/packages/components/components/syn-breadcrumb-item/component.react.ts +0 -37
  196. package/metadata/packages/components/components/syn-breadcrumb-item/component.styles.ts +0 -88
  197. package/metadata/packages/components/components/syn-breadcrumb-item/component.ts +0 -132
  198. package/metadata/packages/components/components/syn-breadcrumb-item/component.vue +0 -76
  199. package/metadata/packages/components/components/syn-button/component.angular.ts +0 -318
  200. package/metadata/packages/components/components/syn-button/component.custom.styles.ts +0 -245
  201. package/metadata/packages/components/components/syn-button/component.react.ts +0 -56
  202. package/metadata/packages/components/components/syn-button/component.styles.ts +0 -361
  203. package/metadata/packages/components/components/syn-button/component.ts +0 -315
  204. package/metadata/packages/components/components/syn-button/component.vue +0 -204
  205. package/metadata/packages/components/components/syn-button-group/component.angular.ts +0 -79
  206. package/metadata/packages/components/components/syn-button-group/component.custom.styles.ts +0 -5
  207. package/metadata/packages/components/components/syn-button-group/component.react.ts +0 -29
  208. package/metadata/packages/components/components/syn-button-group/component.styles.ts +0 -14
  209. package/metadata/packages/components/components/syn-button-group/component.ts +0 -171
  210. package/metadata/packages/components/components/syn-button-group/component.vue +0 -67
  211. package/metadata/packages/components/components/syn-card/component.angular.ts +0 -83
  212. package/metadata/packages/components/components/syn-card/component.custom.styles.ts +0 -60
  213. package/metadata/packages/components/components/syn-card/component.react.ts +0 -41
  214. package/metadata/packages/components/components/syn-card/component.styles.ts +0 -70
  215. package/metadata/packages/components/components/syn-card/component.ts +0 -65
  216. package/metadata/packages/components/components/syn-card/component.vue +0 -73
  217. package/metadata/packages/components/components/syn-checkbox/component.angular.ts +0 -273
  218. package/metadata/packages/components/components/syn-checkbox/component.react.ts +0 -64
  219. package/metadata/packages/components/components/syn-checkbox/component.styles.ts +0 -183
  220. package/metadata/packages/components/components/syn-checkbox/component.ts +0 -287
  221. package/metadata/packages/components/components/syn-checkbox/component.vue +0 -191
  222. package/metadata/packages/components/components/syn-combobox/component.angular.ts +0 -516
  223. package/metadata/packages/components/components/syn-combobox/component.react.ts +0 -118
  224. package/metadata/packages/components/components/syn-combobox/component.styles.ts +0 -393
  225. package/metadata/packages/components/components/syn-combobox/component.ts +0 -1684
  226. package/metadata/packages/components/components/syn-combobox/component.vue +0 -350
  227. package/metadata/packages/components/components/syn-details/component.angular.ts +0 -186
  228. package/metadata/packages/components/components/syn-details/component.react.ts +0 -65
  229. package/metadata/packages/components/components/syn-details/component.styles.ts +0 -181
  230. package/metadata/packages/components/components/syn-details/component.ts +0 -261
  231. package/metadata/packages/components/components/syn-details/component.vue +0 -136
  232. package/metadata/packages/components/components/syn-dialog/component.angular.ts +0 -201
  233. package/metadata/packages/components/components/syn-dialog/component.react.ts +0 -91
  234. package/metadata/packages/components/components/syn-dialog/component.styles.ts +0 -130
  235. package/metadata/packages/components/components/syn-dialog/component.ts +0 -367
  236. package/metadata/packages/components/components/syn-dialog/component.vue +0 -169
  237. package/metadata/packages/components/components/syn-divider/component.angular.ts +0 -55
  238. package/metadata/packages/components/components/syn-divider/component.react.ts +0 -29
  239. package/metadata/packages/components/components/syn-divider/component.styles.ts +0 -22
  240. package/metadata/packages/components/components/syn-divider/component.ts +0 -34
  241. package/metadata/packages/components/components/syn-divider/component.vue +0 -51
  242. package/metadata/packages/components/components/syn-drawer/component.angular.ts +0 -234
  243. package/metadata/packages/components/components/syn-drawer/component.custom.styles.ts +0 -78
  244. package/metadata/packages/components/components/syn-drawer/component.react.ts +0 -98
  245. package/metadata/packages/components/components/syn-drawer/component.styles.ts +0 -158
  246. package/metadata/packages/components/components/syn-drawer/component.ts +0 -489
  247. package/metadata/packages/components/components/syn-drawer/component.vue +0 -188
  248. package/metadata/packages/components/components/syn-dropdown/component.angular.ts +0 -208
  249. package/metadata/packages/components/components/syn-dropdown/component.react.ts +0 -59
  250. package/metadata/packages/components/components/syn-dropdown/component.styles.ts +0 -51
  251. package/metadata/packages/components/components/syn-dropdown/component.ts +0 -469
  252. package/metadata/packages/components/components/syn-dropdown/component.vue +0 -152
  253. package/metadata/packages/components/components/syn-file/component.angular.ts +0 -372
  254. package/metadata/packages/components/components/syn-file/component.react.ts +0 -85
  255. package/metadata/packages/components/components/syn-file/component.styles.ts +0 -197
  256. package/metadata/packages/components/components/syn-file/component.ts +0 -645
  257. package/metadata/packages/components/components/syn-file/component.vue +0 -256
  258. package/metadata/packages/components/components/syn-header/component.angular.ts +0 -149
  259. package/metadata/packages/components/components/syn-header/component.react.ts +0 -68
  260. package/metadata/packages/components/components/syn-header/component.styles.ts +0 -143
  261. package/metadata/packages/components/components/syn-header/component.ts +0 -310
  262. package/metadata/packages/components/components/syn-header/component.vue +0 -126
  263. package/metadata/packages/components/components/syn-icon/component.angular.ts +0 -115
  264. package/metadata/packages/components/components/syn-icon/component.custom.styles.ts +0 -5
  265. package/metadata/packages/components/components/syn-icon/component.react.ts +0 -41
  266. package/metadata/packages/components/components/syn-icon/component.styles.ts +0 -18
  267. package/metadata/packages/components/components/syn-icon/component.ts +0 -227
  268. package/metadata/packages/components/components/syn-icon/component.vue +0 -100
  269. package/metadata/packages/components/components/syn-icon-button/component.angular.ts +0 -185
  270. package/metadata/packages/components/components/syn-icon-button/component.custom.styles.ts +0 -79
  271. package/metadata/packages/components/components/syn-icon-button/component.react.ts +0 -42
  272. package/metadata/packages/components/components/syn-icon-button/component.styles.ts +0 -52
  273. package/metadata/packages/components/components/syn-icon-button/component.ts +0 -147
  274. package/metadata/packages/components/components/syn-icon-button/component.vue +0 -132
  275. package/metadata/packages/components/components/syn-input/component.angular.ts +0 -608
  276. package/metadata/packages/components/components/syn-input/component.custom.styles.ts +0 -278
  277. package/metadata/packages/components/components/syn-input/component.react.ts +0 -91
  278. package/metadata/packages/components/components/syn-input/component.styles.ts +0 -280
  279. package/metadata/packages/components/components/syn-input/component.ts +0 -941
  280. package/metadata/packages/components/components/syn-input/component.vue +0 -370
  281. package/metadata/packages/components/components/syn-menu/component.angular.ts +0 -52
  282. package/metadata/packages/components/components/syn-menu/component.react.ts +0 -36
  283. package/metadata/packages/components/components/syn-menu/component.styles.ts +0 -37
  284. package/metadata/packages/components/components/syn-menu/component.ts +0 -191
  285. package/metadata/packages/components/components/syn-menu/component.vue +0 -48
  286. package/metadata/packages/components/components/syn-menu-item/component.angular.ts +0 -121
  287. package/metadata/packages/components/components/syn-menu-item/component.react.ts +0 -45
  288. package/metadata/packages/components/components/syn-menu-item/component.styles.ts +0 -285
  289. package/metadata/packages/components/components/syn-menu-item/component.ts +0 -201
  290. package/metadata/packages/components/components/syn-menu-item/component.vue +0 -91
  291. package/metadata/packages/components/components/syn-menu-label/component.angular.ts +0 -48
  292. package/metadata/packages/components/components/syn-menu-label/component.react.ts +0 -35
  293. package/metadata/packages/components/components/syn-menu-label/component.styles.ts +0 -31
  294. package/metadata/packages/components/components/syn-menu-label/component.ts +0 -46
  295. package/metadata/packages/components/components/syn-menu-label/component.vue +0 -41
  296. package/metadata/packages/components/components/syn-nav-item/component.angular.ts +0 -242
  297. package/metadata/packages/components/components/syn-nav-item/component.react.ts +0 -82
  298. package/metadata/packages/components/components/syn-nav-item/component.styles.ts +0 -333
  299. package/metadata/packages/components/components/syn-nav-item/component.ts +0 -491
  300. package/metadata/packages/components/components/syn-nav-item/component.vue +0 -182
  301. package/metadata/packages/components/components/syn-optgroup/component.angular.ts +0 -79
  302. package/metadata/packages/components/components/syn-optgroup/component.react.ts +0 -41
  303. package/metadata/packages/components/components/syn-optgroup/component.styles.ts +0 -61
  304. package/metadata/packages/components/components/syn-optgroup/component.ts +0 -176
  305. package/metadata/packages/components/components/syn-optgroup/component.vue +0 -71
  306. package/metadata/packages/components/components/syn-option/component.angular.ts +0 -79
  307. package/metadata/packages/components/components/syn-option/component.react.ts +0 -37
  308. package/metadata/packages/components/components/syn-option/component.styles.ts +0 -165
  309. package/metadata/packages/components/components/syn-option/component.ts +0 -191
  310. package/metadata/packages/components/components/syn-option/component.vue +0 -71
  311. package/metadata/packages/components/components/syn-pagination/component.angular.ts +0 -201
  312. package/metadata/packages/components/components/syn-pagination/component.react.ts +0 -56
  313. package/metadata/packages/components/components/syn-pagination/component.styles.ts +0 -128
  314. package/metadata/packages/components/components/syn-pagination/component.ts +0 -452
  315. package/metadata/packages/components/components/syn-pagination/component.vue +0 -144
  316. package/metadata/packages/components/components/syn-popup/component.angular.ts +0 -372
  317. package/metadata/packages/components/components/syn-popup/component.react.ts +0 -55
  318. package/metadata/packages/components/components/syn-popup/component.styles.ts +0 -70
  319. package/metadata/packages/components/components/syn-popup/component.ts +0 -582
  320. package/metadata/packages/components/components/syn-popup/component.vue +0 -233
  321. package/metadata/packages/components/components/syn-prio-nav/component.angular.ts +0 -67
  322. package/metadata/packages/components/components/syn-prio-nav/component.react.ts +0 -54
  323. package/metadata/packages/components/components/syn-prio-nav/component.styles.ts +0 -48
  324. package/metadata/packages/components/components/syn-prio-nav/component.ts +0 -288
  325. package/metadata/packages/components/components/syn-prio-nav/component.vue +0 -60
  326. package/metadata/packages/components/components/syn-progress-bar/component.angular.ts +0 -85
  327. package/metadata/packages/components/components/syn-progress-bar/component.custom.styles.ts +0 -24
  328. package/metadata/packages/components/components/syn-progress-bar/component.react.ts +0 -37
  329. package/metadata/packages/components/components/syn-progress-bar/component.styles.ts +0 -87
  330. package/metadata/packages/components/components/syn-progress-bar/component.ts +0 -67
  331. package/metadata/packages/components/components/syn-progress-bar/component.vue +0 -71
  332. package/metadata/packages/components/components/syn-progress-ring/component.angular.ts +0 -72
  333. package/metadata/packages/components/components/syn-progress-ring/component.custom.styles.ts +0 -19
  334. package/metadata/packages/components/components/syn-progress-ring/component.react.ts +0 -37
  335. package/metadata/packages/components/components/syn-progress-ring/component.styles.ts +0 -70
  336. package/metadata/packages/components/components/syn-progress-ring/component.ts +0 -83
  337. package/metadata/packages/components/components/syn-progress-ring/component.vue +0 -66
  338. package/metadata/packages/components/components/syn-radio/component.angular.ts +0 -122
  339. package/metadata/packages/components/components/syn-radio/component.react.ts +0 -48
  340. package/metadata/packages/components/components/syn-radio/component.styles.ts +0 -179
  341. package/metadata/packages/components/components/syn-radio/component.ts +0 -131
  342. package/metadata/packages/components/components/syn-radio/component.vue +0 -104
  343. package/metadata/packages/components/components/syn-radio-button/component.angular.ts +0 -123
  344. package/metadata/packages/components/components/syn-radio-button/component.react.ts +0 -49
  345. package/metadata/packages/components/components/syn-radio-button/component.styles.ts +0 -30
  346. package/metadata/packages/components/components/syn-radio-button/component.ts +0 -142
  347. package/metadata/packages/components/components/syn-radio-button/component.vue +0 -105
  348. package/metadata/packages/components/components/syn-radio-group/component.angular.ts +0 -204
  349. package/metadata/packages/components/components/syn-radio-group/component.react.ts +0 -56
  350. package/metadata/packages/components/components/syn-radio-group/component.styles.ts +0 -58
  351. package/metadata/packages/components/components/syn-radio-group/component.ts +0 -440
  352. package/metadata/packages/components/components/syn-radio-group/component.vue +0 -158
  353. package/metadata/packages/components/components/syn-range/component.angular.ts +0 -347
  354. package/metadata/packages/components/components/syn-range/component.react.ts +0 -92
  355. package/metadata/packages/components/components/syn-range/component.styles.ts +0 -310
  356. package/metadata/packages/components/components/syn-range/component.ts +0 -933
  357. package/metadata/packages/components/components/syn-range/component.vue +0 -245
  358. package/metadata/packages/components/components/syn-range-tick/component.angular.ts +0 -59
  359. package/metadata/packages/components/components/syn-range-tick/component.react.ts +0 -33
  360. package/metadata/packages/components/components/syn-range-tick/component.styles.ts +0 -34
  361. package/metadata/packages/components/components/syn-range-tick/component.ts +0 -50
  362. package/metadata/packages/components/components/syn-range-tick/component.vue +0 -57
  363. package/metadata/packages/components/components/syn-resize-observer/component.styles.ts +0 -9
  364. package/metadata/packages/components/components/syn-resize-observer/component.ts +0 -91
  365. package/metadata/packages/components/components/syn-select/component.angular.ts +0 -439
  366. package/metadata/packages/components/components/syn-select/component.react.ts +0 -101
  367. package/metadata/packages/components/components/syn-select/component.styles.ts +0 -380
  368. package/metadata/packages/components/components/syn-select/component.ts +0 -1056
  369. package/metadata/packages/components/components/syn-select/component.vue +0 -301
  370. package/metadata/packages/components/components/syn-side-nav/component.angular.ts +0 -210
  371. package/metadata/packages/components/components/syn-side-nav/component.react.ts +0 -95
  372. package/metadata/packages/components/components/syn-side-nav/component.styles.ts +0 -142
  373. package/metadata/packages/components/components/syn-side-nav/component.ts +0 -458
  374. package/metadata/packages/components/components/syn-side-nav/component.vue +0 -188
  375. package/metadata/packages/components/components/syn-spinner/component.angular.ts +0 -44
  376. package/metadata/packages/components/components/syn-spinner/component.custom.styles.ts +0 -32
  377. package/metadata/packages/components/components/syn-spinner/component.react.ts +0 -31
  378. package/metadata/packages/components/components/syn-spinner/component.styles.ts +0 -48
  379. package/metadata/packages/components/components/syn-spinner/component.ts +0 -35
  380. package/metadata/packages/components/components/syn-spinner/component.vue +0 -35
  381. package/metadata/packages/components/components/syn-switch/component.angular.ts +0 -257
  382. package/metadata/packages/components/components/syn-switch/component.react.ts +0 -63
  383. package/metadata/packages/components/components/syn-switch/component.styles.ts +0 -252
  384. package/metadata/packages/components/components/syn-switch/component.ts +0 -279
  385. package/metadata/packages/components/components/syn-switch/component.vue +0 -183
  386. package/metadata/packages/components/components/syn-tab/component.angular.ts +0 -109
  387. package/metadata/packages/components/components/syn-tab/component.custom.styles.ts +0 -94
  388. package/metadata/packages/components/components/syn-tab/component.react.ts +0 -42
  389. package/metadata/packages/components/components/syn-tab/component.styles.ts +0 -70
  390. package/metadata/packages/components/components/syn-tab/component.ts +0 -125
  391. package/metadata/packages/components/components/syn-tab/component.vue +0 -91
  392. package/metadata/packages/components/components/syn-tab-group/component.angular.ts +0 -166
  393. package/metadata/packages/components/components/syn-tab-group/component.custom.styles.ts +0 -218
  394. package/metadata/packages/components/components/syn-tab-group/component.react.ts +0 -58
  395. package/metadata/packages/components/components/syn-tab-group/component.styles.ts +0 -193
  396. package/metadata/packages/components/components/syn-tab-group/component.ts +0 -551
  397. package/metadata/packages/components/components/syn-tab-group/component.vue +0 -126
  398. package/metadata/packages/components/components/syn-tab-panel/component.angular.ts +0 -68
  399. package/metadata/packages/components/components/syn-tab-panel/component.custom.styles.ts +0 -8
  400. package/metadata/packages/components/components/syn-tab-panel/component.react.ts +0 -31
  401. package/metadata/packages/components/components/syn-tab-panel/component.styles.ts +0 -20
  402. package/metadata/packages/components/components/syn-tab-panel/component.ts +0 -60
  403. package/metadata/packages/components/components/syn-tab-panel/component.vue +0 -60
  404. package/metadata/packages/components/components/syn-tag/component.angular.ts +0 -83
  405. package/metadata/packages/components/components/syn-tag/component.custom.styles.ts +0 -121
  406. package/metadata/packages/components/components/syn-tag/component.react.ts +0 -43
  407. package/metadata/packages/components/components/syn-tag/component.styles.ts +0 -58
  408. package/metadata/packages/components/components/syn-tag/component.ts +0 -83
  409. package/metadata/packages/components/components/syn-tag/component.vue +0 -81
  410. package/metadata/packages/components/components/syn-tag-group/component.angular.ts +0 -83
  411. package/metadata/packages/components/components/syn-tag-group/component.react.ts +0 -33
  412. package/metadata/packages/components/components/syn-tag-group/component.styles.ts +0 -49
  413. package/metadata/packages/components/components/syn-tag-group/component.ts +0 -95
  414. package/metadata/packages/components/components/syn-tag-group/component.vue +0 -69
  415. package/metadata/packages/components/components/syn-textarea/component.angular.ts +0 -396
  416. package/metadata/packages/components/components/syn-textarea/component.react.ts +0 -60
  417. package/metadata/packages/components/components/syn-textarea/component.styles.ts +0 -208
  418. package/metadata/packages/components/components/syn-textarea/component.ts +0 -400
  419. package/metadata/packages/components/components/syn-textarea/component.vue +0 -244
  420. package/metadata/packages/components/components/syn-tooltip/component.angular.ts +0 -196
  421. package/metadata/packages/components/components/syn-tooltip/component.react.ts +0 -63
  422. package/metadata/packages/components/components/syn-tooltip/component.styles.ts +0 -62
  423. package/metadata/packages/components/components/syn-tooltip/component.ts +0 -312
  424. package/metadata/packages/components/components/syn-tooltip/component.vue +0 -150
  425. package/metadata/packages/components/components/syn-validate/component.angular.ts +0 -137
  426. package/metadata/packages/components/components/syn-validate/component.react.ts +0 -44
  427. package/metadata/packages/components/components/syn-validate/component.styles.ts +0 -9
  428. package/metadata/packages/components/components/syn-validate/component.ts +0 -590
  429. package/metadata/packages/components/components/syn-validate/component.vue +0 -107
  430. package/metadata/packages/components/migration/BREAKING_CHANGES.md +0 -908
  431. package/metadata/packages/components/static/CHANGELOG.md +0 -2155
  432. package/metadata/packages/components/static/LIMITATIONS.md +0 -433
  433. package/metadata/packages/components/static/README.md +0 -231
  434. package/metadata/packages/fonts/CHANGELOG.md +0 -57
  435. package/metadata/packages/fonts/README.md +0 -164
  436. package/metadata/packages/fonts/package.json +0 -72
  437. package/metadata/packages/react/LIMITATIONS.md +0 -31
  438. package/metadata/packages/react/README.md +0 -262
  439. package/metadata/packages/styles/BREAKING_CHANGES.md +0 -105
  440. package/metadata/packages/styles/CHANGELOG.md +0 -188
  441. package/metadata/packages/styles/README.md +0 -132
  442. package/metadata/packages/styles/index.css +0 -300
  443. package/metadata/packages/styles/link-list.css +0 -47
  444. package/metadata/packages/styles/link.css +0 -81
  445. package/metadata/packages/styles/tables.css +0 -132
  446. package/metadata/packages/styles/typography.css +0 -52
  447. package/metadata/packages/tokens/BREAKING_CHANGES.md +0 -180
  448. package/metadata/packages/tokens/CHANGELOG.md +0 -959
  449. package/metadata/packages/tokens/README.md +0 -435
  450. package/metadata/packages/tokens/dark.css +0 -454
  451. package/metadata/packages/tokens/index.js +0 -2224
  452. package/metadata/packages/tokens/light.css +0 -454
  453. package/metadata/packages/tokens/sick2018_dark.css +0 -454
  454. package/metadata/packages/tokens/sick2018_light.css +0 -454
  455. package/metadata/packages/tokens/sick2025_dark.css +0 -454
  456. package/metadata/packages/tokens/sick2025_light.css +0 -454
  457. package/metadata/packages/vue/LIMITATIONS.md +0 -53
  458. package/metadata/packages/vue/README.md +0 -252
  459. package/metadata/static/assets/index.md +0 -10
  460. package/metadata/static/components/index.md +0 -10
  461. package/metadata/static/components/syn-accordion/docs.md +0 -449
  462. package/metadata/static/components/syn-alert/docs.md +0 -282
  463. package/metadata/static/components/syn-badge/docs.md +0 -106
  464. package/metadata/static/components/syn-breadcrumb/docs.md +0 -265
  465. package/metadata/static/components/syn-breadcrumb-item/docs.md +0 -49
  466. package/metadata/static/components/syn-button/docs.md +0 -472
  467. package/metadata/static/components/syn-button-group/docs.md +0 -259
  468. package/metadata/static/components/syn-card/docs.md +0 -314
  469. package/metadata/static/components/syn-checkbox/docs.md +0 -176
  470. package/metadata/static/components/syn-combobox/docs.md +0 -2633
  471. package/metadata/static/components/syn-details/docs.md +0 -227
  472. package/metadata/static/components/syn-dialog/docs.md +0 -220
  473. package/metadata/static/components/syn-divider/docs.md +0 -77
  474. package/metadata/static/components/syn-drawer/docs.md +0 -269
  475. package/metadata/static/components/syn-dropdown/docs.md +0 -316
  476. package/metadata/static/components/syn-file/docs.md +0 -239
  477. package/metadata/static/components/syn-header/docs.md +0 -209
  478. package/metadata/static/components/syn-icon/docs.md +0 -177
  479. package/metadata/static/components/syn-icon-button/docs.md +0 -142
  480. package/metadata/static/components/syn-input/docs.md +0 -462
  481. package/metadata/static/components/syn-menu/docs.md +0 -162
  482. package/metadata/static/components/syn-menu-item/docs.md +0 -216
  483. package/metadata/static/components/syn-menu-label/docs.md +0 -29
  484. package/metadata/static/components/syn-nav-item/docs.md +0 -166
  485. package/metadata/static/components/syn-optgroup/docs.md +0 -167
  486. package/metadata/static/components/syn-option/docs.md +0 -137
  487. package/metadata/static/components/syn-pagination/docs.md +0 -102
  488. package/metadata/static/components/syn-popup/docs.md +0 -812
  489. package/metadata/static/components/syn-prio-nav/docs.md +0 -54
  490. package/metadata/static/components/syn-progress-bar/docs.md +0 -77
  491. package/metadata/static/components/syn-progress-ring/docs.md +0 -89
  492. package/metadata/static/components/syn-radio/docs.md +0 -178
  493. package/metadata/static/components/syn-radio-group/docs.md +0 -484
  494. package/metadata/static/components/syn-range/docs.md +0 -438
  495. package/metadata/static/components/syn-range-tick/docs.md +0 -110
  496. package/metadata/static/components/syn-select/docs.md +0 -811
  497. package/metadata/static/components/syn-side-nav/docs.md +0 -593
  498. package/metadata/static/components/syn-spinner/docs.md +0 -45
  499. package/metadata/static/components/syn-switch/docs.md +0 -121
  500. package/metadata/static/components/syn-tab/docs.md +0 -47
  501. package/metadata/static/components/syn-tab-group/docs.md +0 -1094
  502. package/metadata/static/components/syn-tab-panel/docs.md +0 -91
  503. package/metadata/static/components/syn-tag/docs.md +0 -50
  504. package/metadata/static/components/syn-tag-group/docs.md +0 -269
  505. package/metadata/static/components/syn-textarea/docs.md +0 -215
  506. package/metadata/static/components/syn-tooltip/docs.md +0 -217
  507. package/metadata/static/components/syn-validate/docs.md +0 -305
  508. package/metadata/static/fonts/index.md +0 -4
  509. package/metadata/static/migration/index.md +0 -57
  510. package/metadata/static/migration/v2-2018-to-v2-2025.md +0 -481
  511. package/metadata/static/migration/v2-2018-to-v3-2018.md +0 -147
  512. package/metadata/static/migration/v2-2018-to-v3-2025.md +0 -150
  513. package/metadata/static/migration/v2-2025-to-v3-2025.md +0 -133
  514. package/metadata/static/setup/icon-usage.md +0 -411
  515. package/metadata/static/setup/prerequisites.md +0 -319
  516. package/metadata/static/styles/syn-body.md +0 -5
  517. package/metadata/static/styles/syn-heading.md +0 -5
  518. package/metadata/static/styles/syn-link-list.md +0 -325
  519. package/metadata/static/styles/syn-link.md +0 -156
  520. package/metadata/static/styles/syn-table-cell.md +0 -127
  521. package/metadata/static/styles/syn-table.md +0 -201
  522. package/metadata/static/styles/syn-weight.md +0 -5
  523. package/metadata/static/templates/appshell.md +0 -2053
  524. package/metadata/static/templates/breadcrumb.md +0 -379
  525. package/metadata/static/templates/footer.md +0 -340
  526. package/metadata/static/templates/forms.md +0 -558
  527. package/metadata/static/templates/localization.md +0 -279
  528. package/metadata/static/templates/table.md +0 -1425
  529. package/metadata/static/templates/tag-group.md +0 -833
  530. /package/dist/{build/build.d.ts → utilities/logging-types.js} +0 -0
  531. /package/{metadata/static/component-info/index.md → rules/component-info.md} +0 -0
package/README.md CHANGED
@@ -1,10 +1,8 @@
1
1
  # @synergy-design-system/mcp
2
2
 
3
- Synergy MCP Server Multi-Framework Component Metadata & Tooling
3
+ The `@synergy-design-system/mcp` package provides a Model Context Protocol (MCP) server for the Synergy Design System. It exposes Synergy components, setup guidance, tokens, styles, templates, icons, and migration content to AI assistants over stdio or http.
4
4
 
5
- ---
6
-
7
- The `@synergy-design-system/mcp` package provides a Model Context Protocol (MCP) server for the Synergy Design System. It enables AI assistants and development tools to access structured information about Synergy components, design tokens, icons, and migration guides across multiple frameworks (Angular, React, Vue, and vanilla Web Components).
5
+ Data is provided via the low level `@synergy-design-system/metadata` package.
8
6
 
9
7
  ## Quick Start
10
8
 
@@ -16,19 +14,53 @@ npm install --save-dev @synergy-design-system/mcp
16
14
 
17
15
  ### Running the Server
18
16
 
19
- The MCP server can be started using the `syn-mcp` binary:
17
+ The package ships a `syn-mcp` binary:
20
18
 
21
19
  ```bash
22
- # Run directly
20
+ # Run via stdio (default, for editor integration)
23
21
  npx @synergy-design-system/mcp
24
22
 
25
23
  # Or if installed globally
26
24
  syn-mcp
25
+
26
+ # Start with an explicit runtime config
27
+ syn-mcp --config ./synergy-mcp.json
28
+
29
+ # Start HTTP server on default port 9119
30
+ syn-mcp --interface http
31
+
32
+ # Start HTTP server on a custom port
33
+ syn-mcp --interface http --port 3000
34
+
35
+ # Listen on all IPv4 interfaces for container/cloud deployment
36
+ syn-mcp --interface http --host 0.0.0.0
37
+
38
+ # Start HTTPS server with TLS certificates
39
+ syn-mcp --interface http --tls-key ./server.key --tls-cert ./server.crt
40
+
41
+ # Enable local tool-call logging to a directory
42
+ syn-mcp --log ./logs
43
+
44
+ # Explicitly disable logging (also disabled when omitted)
45
+ syn-mcp --log false
27
46
  ```
28
47
 
48
+ Available CLI flags:
49
+
50
+ - `--help`, `-h`: Show usage information
51
+ - `--version`, `-v`: Print the package version
52
+ - `--config <path>`: Load runtime defaults from a `synergy-mcp.json` file
53
+ - `--interface <stdio|http>`: Server interface (default: `stdio`)
54
+ - `--port <number>`: HTTP server port (default: `9119`, only used with `--interface http`)
55
+ - `--host <address>`: HTTP bind address (default: `127.0.0.1`)
56
+ - `--log <value>`: Local tool-call log directory path, or `false` / `null` to disable
57
+ - `--tls-key <path>`: Path to TLS private key file (enables HTTPS)
58
+ - `--tls-cert <path>`: Path to TLS certificate file (enables HTTPS)
59
+ - `--compression <none|toon>`: Response compression mode (default: `none`; experimental)
60
+
29
61
  ### VS Code Integration
30
62
 
31
- To integrate with VS Code and AI assistants, add this configuration to your VS Code `settings.json` under the `mcp.servers` section:
63
+ To integrate with VS Code and AI assistants, add this configuration to your `settings.json` under `mcp.servers`:
32
64
 
33
65
  ```jsonc
34
66
  {
@@ -42,11 +74,14 @@ To integrate with VS Code and AI assistants, add this configuration to your VS C
42
74
  },
43
75
  },
44
76
  }
77
+
78
+ # Enable experimental toon format compression for responses
79
+ syn-mcp --compression toon
45
80
  ```
46
81
 
47
82
  ### Claude Desktop Integration
48
83
 
49
- For Claude Desktop, add this to your `claude_desktop_config.json`:
84
+ For Claude Desktop, add this to `claude_desktop_config.json`:
50
85
 
51
86
  ```json
52
87
  {
@@ -59,96 +94,428 @@ For Claude Desktop, add this to your `claude_desktop_config.json`:
59
94
  }
60
95
  ```
61
96
 
97
+ ### Runtime Configuration
98
+
99
+ The server can read optional runtime defaults from a `synergy-mcp.json` file passed via `--config`.
100
+
101
+ #### Server Interface
102
+
103
+ You can run the server in two modes:
104
+
105
+ - **stdio** (default): Communicate via stdin/stdout with the parent process. This is the recommended mode for editor and CLI integrations.
106
+ - **http**: Run as an HTTP/HTTPS server listening on a specified port. This enables standalone deployments.
107
+
108
+ #### Configuration File
109
+
110
+ Example:
111
+
112
+ ```jsonc
113
+ {
114
+ // Server interface mode: "stdio" (default) or "http"
115
+ "interface": "http",
116
+
117
+ // HTTP server port (only used when interface is "http")
118
+ "port": 3000,
119
+
120
+ // HTTP bind address.
121
+ // Use 127.0.0.1 for local-only access or 0.0.0.0 for container/cloud deployments.
122
+ "host": "127.0.0.1",
123
+
124
+ // TLS configuration (optional, enables HTTPS)
125
+ // Both keyPath and certPath must be provided together
126
+ "tls": {
127
+ "keyPath": "./server.key",
128
+ "certPath": "./server.crt",
129
+ },
130
+
131
+ // Include custom ai rules for each tool.
132
+ "includeAiRules": true,
133
+
134
+ // Optional logging providers
135
+ "logging": {
136
+ "localFile": {
137
+ // Base folder for logs (YY-MM-DD/SESSION.json)
138
+ // Set to null to disable local file logging
139
+ "path": "./logs",
140
+ },
141
+ },
142
+
143
+ // Response compression mode (experimental!)
144
+ // "none" (default): No compression
145
+ // "toon": Encode structured data to compact toon text format
146
+ "compression": "none",
147
+
148
+ // Default parameters for each endpoint can be overridden
149
+ "tools": {
150
+ "assetInfo": {
151
+ "iconset": "current",
152
+ },
153
+ "componentInfo": {
154
+ // Set to angular, react or vue, depending on your framework
155
+ "framework": "vanilla",
156
+ // Defines which type of information to return.
157
+ // full = filtered source files,
158
+ // examples = markdown examples,
159
+ // interface = markdown API overview.
160
+ // Note that examples and interface are only available
161
+ // for vanilla components at the moment.
162
+ "layer": "full",
163
+ },
164
+ "tokenInfo": {
165
+ // If you are preferring scss, use "sass" here
166
+ "type": "css",
167
+ },
168
+ },
169
+ }
170
+ ```
171
+
172
+ #### CLI Override Precedence
173
+
174
+ CLI flags take precedence over configuration file values:
175
+
176
+ ```bash
177
+ # Config file specifies port 3000, but CLI overrides it to 8080
178
+ syn-mcp --config ./synergy-mcp.json --port 8080
179
+
180
+ # Config file specifies a local-only bind, but CLI overrides it for deployment
181
+ syn-mcp --config ./synergy-mcp.json --host 0.0.0.0
182
+
183
+ # Config enables logging, but CLI disables it for this run
184
+ syn-mcp --config ./synergy-mcp.json --log false
185
+ ```
186
+
187
+ #### Tool-call logging
188
+
189
+ Tool-call logging is provider-based. The built-in local file provider writes one JSON entry per line to:
190
+
191
+ - `YY-MM-DD/SESSION.json`
192
+
193
+ Each entry includes:
194
+
195
+ - `timestamp`
196
+ - `toolName`
197
+ - `parameters`
198
+ - `durationMs`
199
+ - `sessionId` (`stdio` when no session id exists)
200
+ - `transport` (`stdio` or `http`)
201
+ - `success` and optional `errorMessage`
202
+ - `tokenCount` (optional, populated when tiktoken is available)
203
+
204
+ ##### Optional Token Counting
205
+
206
+ The MCP server can automatically count output tokens for each tool call when the optional `tiktoken` dependency is available.
207
+
208
+ **Installation:**
209
+
210
+ Token counting is an optional feature. To enable it, install tiktoken:
211
+
212
+ ```bash
213
+ npm install tiktoken
214
+ # or
215
+ pnpm add tiktoken
216
+ ```
217
+
218
+ The MCP package declares tiktoken as both a dev dependency (for build/test) and optional dependency (for runtime). When installed, token counts are automatically computed and logged for every successful tool call.
219
+
220
+ **Behavior:**
221
+
222
+ - If tiktoken is installed, `tokenCount` is populated with the output token count for the tool response using the `o200k_base` encoding.
223
+ - If tiktoken is not available, `tokenCount` will be omitted from log entries.
224
+ - Token counting failure does not fail the tool call; it only results in `tokenCount` being absent from the log entry.
225
+
226
+ **Example log entry with tokenCount:**
227
+
228
+ ```json
229
+ {
230
+ "durationMs": 187.69,
231
+ "parameters": {},
232
+ "sessionId": "stdio",
233
+ "success": true,
234
+ "timestamp": "2026-04-22T09:21:47.533Z",
235
+ "tokenCount": 421,
236
+ "toolName": "asset-list",
237
+ "transport": "stdio"
238
+ }
239
+ ```
240
+
241
+ Notes:
242
+
243
+ - Logging is disabled by default.
244
+ - Use `--log <path>` or set `logging.localFile.path` in config to enable.
245
+ - `--log false` and `--log null` explicitly disable local file logging.
246
+ - Token counting is always optional and non-blocking; the server runs fine without it.
247
+
248
+ #### HTTP Server Endpoint
249
+
250
+ When running in HTTP mode, the MCP protocol is served at the `/mcp` path:
251
+
252
+ ```
253
+ http://127.0.0.1:9119/mcp
254
+ https://127.0.0.1:3000/mcp
255
+ ```
256
+
257
+ Non-`/mcp` paths return HTTP 404.
258
+
259
+ #### Metadata cache behavior in HTTP mode
260
+
261
+ The MCP server reads data via `@synergy-design-system/metadata`, which now uses a process-local cache for index, entity, and layer file reads.
262
+ In HTTP mode this reduces repeated filesystem reads across requests and sessions inside the same process.
263
+
264
+ Operationally, treat metadata as immutable for the process lifetime and roll out updates via restart/redeploy.
265
+ If you run multiple replicas, each replica maintains its own in-memory cache.
266
+
267
+ For public or containerized deployments, bind to all interfaces explicitly:
268
+
269
+ ```bash
270
+ syn-mcp --interface http --host 0.0.0.0
271
+ ```
272
+
273
+ Example deployment patterns:
274
+
275
+ ```bash
276
+ # Docker / Kubernetes: listen on all interfaces inside the container
277
+ syn-mcp --interface http --host 0.0.0.0 --port 3000
278
+
279
+ # Reverse proxy / load balancer forwards external traffic to the MCP endpoint
280
+ # https://mcp.example.com/mcp -> http://127.0.0.1:3000/mcp
281
+ syn-mcp --interface http --host 127.0.0.1 --port 3000
282
+ ```
283
+
284
+ In general:
285
+
286
+ - Use `127.0.0.1` when the server should only be reachable through the local machine or a reverse proxy on the same host.
287
+ - Use `0.0.0.0` when the runtime environment needs the process to accept traffic from outside its own network namespace, such as Docker, Kubernetes, ECS, or EC2.
288
+
289
+ This lets you change per-tool defaults without modifying the MCP server code.
290
+
62
291
  ## Features
63
292
 
64
- - **Component Information**: Get detailed usage information for Synergy components across frameworks
65
- - **Icon Assets**: Search and discover available icons from multiple icon sets
66
- - **Design Tokens**: Access CSS and JavaScript design tokens
67
- - **Style Utilities**: Information about available CSS utility classes
68
- - **Templates**: Access static templates built with the Synergy Design System
69
- - **Migration Guides**: DaVinci to Synergy component migration assistance and Synergy version migrations
70
- - **Framework Support**: Specific documentation for Angular, React, Vue, and vanilla Web Components
71
- - **Version Information**: Get version and metadata about the MCP server
72
- - **MCP Protocol**: Standard Model Context Protocol interface for AI assistant integration
293
+ - **Metadata-backed component docs**: Retrieve component data directly from `@synergy-design-system/metadata`.
294
+ - **Setup guidance**: Return package setup instructions for components, framework adapters, tokens, styles, fonts, assets, and migrations.
295
+ - **Asset and icon discovery**: Browse icon sets and search icons across the Synergy asset libraries.
296
+ - **Token access**: Read CSS, JavaScript, and Sass token outputs.
297
+ - **Styles and templates**: Retrieve CSS utility guidance and static template content.
298
+ - **Migration guidance**: Access both DaVinci migration guides and Synergy package migration documents.
299
+ - **AI response rules**: Optionally prepends package-local guidance files from `rules/` to selected tool responses.
300
+ - **MCP stdio transport**: Ready for editor, assistant, and CLI integrations.
301
+
302
+ ## Available Resources
303
+
304
+ The MCP server currently registers 5 resources. Resources expose static, read-only data that does not change during server runtime. Clients that support MCP resources can read them directly without calling a tool.
305
+
306
+ Resource identifier reference (exact values used by the server):
307
+
308
+ - `synergy://components/list` → name: `component-list`
309
+ - `synergy://assets/list` → name: `asset-list`
310
+ - `synergy://component-clusters/list` → name: `component-clusters-list`
311
+ - `synergy://styles/list` → name: `styles-list`
312
+ - `synergy://templates/list` → name: `templates-list`
313
+
314
+ ### 1. `synergy://components/list`
315
+
316
+ **Name:** `component-list`
317
+
318
+ **MIME type:** `application/json`
319
+
320
+ **Description:** A sorted JSON array of all available component names in the Synergy Design System.
321
+
322
+ **Example:**
323
+
324
+ ```json
325
+ ["syn-button", "syn-checkbox", "syn-dialog", ...]
326
+ ```
327
+
328
+ ### 2. `synergy://assets/list`
329
+
330
+ **Name:** `asset-list`
331
+
332
+ **MIME type:** `application/json`
333
+
334
+ **Description:** All available icon sets in the Synergy Design System, grouped by theme. Each entry includes `id`, `name`, `since`, `theme`, and `iconCount`.
335
+
336
+ **Example:**
337
+
338
+ ```json
339
+ {
340
+ "default": [
341
+ {
342
+ "iconCount": 512,
343
+ "id": "current",
344
+ "name": "Current",
345
+ "since": "1.0.0",
346
+ "theme": "default"
347
+ }
348
+ ]
349
+ }
350
+ ```
351
+
352
+ ### 3. `synergy://component-clusters/list`
353
+
354
+ **Name:** `component-clusters-list`
355
+
356
+ **MIME type:** `application/json`
357
+
358
+ **Description:** All available component clusters in the Synergy Design System. Each entry includes `id`, `name`, and `description`.
359
+
360
+ **Example:**
361
+
362
+ ```json
363
+ [
364
+ {
365
+ "id": "components-by-tag/structure",
366
+ "name": "Structure",
367
+ "description": "Layout and structure components"
368
+ }
369
+ ]
370
+ ```
371
+
372
+ ### 4. `synergy://styles/list`
373
+
374
+ **Name:** `styles-list`
375
+
376
+ **MIME type:** `application/json`
377
+
378
+ **Description:** A sorted JSON array of all available style names in the Synergy Design System.
379
+
380
+ **Example:**
381
+
382
+ ```json
383
+ ["animation", "breakpoints", "spacing", ...]
384
+ ```
385
+
386
+ ### 5. `synergy://templates/list`
387
+
388
+ **Name:** `templates-list`
389
+
390
+ **MIME type:** `application/json`
391
+
392
+ **Description:** A sorted JSON array of all available template names in the Synergy Design System.
393
+
394
+ **Example:**
395
+
396
+ ```json
397
+ ["app-shell", "dashboard", "form", ...]
398
+ ```
73
399
 
74
400
  ## Available Tools
75
401
 
76
- The MCP server provides the following tools that can be invoked by AI assistants:
402
+ The MCP server currently registers 16 tools.
77
403
 
78
404
  ### 1. `component-list`
79
405
 
80
406
  **Description:** Outputs a list of all available components in the Synergy Design System.
81
407
 
82
- **Parameters:** None
408
+ **Parameters:**
409
+
410
+ - `cluster` (string, optional): Cluster id to filter by, for example `components-by-tag/structure`.
83
411
 
84
412
  **Example prompts:**
85
413
 
86
414
  - "Show me all available Synergy components"
415
+ - "List all components in the structure cluster"
87
416
  - "What components are available in the Synergy Design System?"
88
417
  - "List all syn-\* components"
89
418
 
90
- ### 2. `component-info`
419
+ ### 2. `component-cluster-list`
420
+
421
+ **Description:** Outputs all available component clusters in the Synergy Design System.
422
+
423
+ **Note:** The corresponding MCP resource uses the pluralized name `component-clusters-list` at URI `synergy://component-clusters/list`.
424
+
425
+ **Parameters:** None
426
+
427
+ **Example prompts:**
428
+
429
+ - "What component clusters are available?"
430
+ - "List all Synergy component clusters"
431
+ - "Show me cluster ids I can use with component-list"
432
+
433
+ #### Cluster-first workflow
434
+
435
+ Use this two-step flow when you want to narrow component discovery to one group:
436
+
437
+ 1. Call `component-cluster-list` and pick one cluster id from the result (for example `components-by-tag/structure`).
438
+ 2. Call `component-list` with `cluster` set to that id.
439
+
440
+ Example prompts:
441
+
442
+ - "List component clusters, then show me components for `components-by-tag/structure`."
443
+ - "Give me all components in the `components-by-tag/navigation` cluster."
91
444
 
92
- **Description:** Get detailed information about the usage of a specific component in the Synergy Design System.
445
+ ### 3. `component-info`
446
+
447
+ **Description:** Get information about the usage of a specific component in the Synergy Design System.
93
448
 
94
449
  **Parameters:**
95
450
 
96
- - `component` (string, required): The name of the component (must start with `syn-`, e.g., `syn-button`)
97
- - `framework` (string, optional): The framework (`react`, `vue`, `angular`, `vanilla`). Defaults to `vanilla`
451
+ - `component` (string, required): The component name. Must start with `syn-`, for example `syn-button`.
452
+ - `framework` (string, optional): `react`, `vue`, `angular`, or `vanilla`. Defaults to the runtime config value, which is `vanilla` by default.
453
+ - `layer` (string, optional): `full`, `examples`, or `interface`. Defaults to the runtime config value, which is `full` by default. `examples` and `interface` are currently only available for vanilla components.
98
454
 
99
455
  **Example prompts:**
100
456
 
101
- - "How do I use the syn-button component in React?"
102
- - "Show me the syn-input component documentation"
103
- - "What props does syn-dialog support in Vue?"
104
- - "Give me an example of syn-card in Angular"
457
+ - "How do I use syn-button in React?"
458
+ - "Show me the interface docs for syn-dialog"
459
+ - "Give me examples for syn-card"
105
460
 
106
- ### 3. `asset-list`
461
+ ### 4. `asset-list`
107
462
 
108
- **Description:** Get the available iconsets in the Synergy Design System.
463
+ **Description:** Get the available icon sets in the Synergy Design System.
109
464
 
110
465
  **Parameters:** None
111
466
 
112
467
  **Example prompts:**
113
468
 
114
- - "What iconsets are available?"
469
+ - "What icon sets are available?"
115
470
  - "Show me all available icon libraries"
116
- - "List all iconsets in Synergy"
471
+ - "List all Synergy icon sets"
117
472
 
118
- ### 4. `asset-info`
473
+ ### 5. `asset-info`
119
474
 
120
475
  **Description:** Get information about available icons in the Synergy Design System.
121
476
 
122
477
  **Parameters:**
123
478
 
124
- - `filter` (string, optional): Filter icon names by substring match
125
- - `iconset` (string, optional): Icon set to search (`current`, `legacy`, `v2`, `synergy2018`, `brand2018`, `brand2025`, `synergy2025`, `new`, `next`). Defaults to `current`
126
- - `limit` (number, optional): Maximum number of icons to return. Defaults to 5
479
+ - `filter` (string, optional): Filter icon names by substring. Supports comma-separated search terms such as `home,search,menu`.
480
+ - `iconset` (string, optional): One of `legacy`, `v2`, `synergy2018`, `brand2018`, `sick2018`, `current`, `default`, `brand2025`, `sick2025`, `synergy2025`, `new`, `next`, or `v3`. Defaults to the runtime config value, which is `current` by default.
481
+ - `limit` (number, optional): Maximum number of icons to return. When using multiple filters, the limit applies per filter term.
127
482
 
128
483
  **Example prompts:**
129
484
 
130
- - "Show me icons with 'add' in the name"
131
- - "What icons are available for cancel actions?"
132
- - "List 10 icons from the new iconset"
133
- - "Find icons related to 'close' in the current iconset"
485
+ - "Show me icons with add in the name"
486
+ - "Find icons for close and cancel"
487
+ - "List 10 icons from the current icon set"
134
488
 
135
- ### 5. `token-info`
489
+ ### 6. `token-info`
136
490
 
137
- **Description:** Get information about design tokens available in the Synergy Design System.
491
+ **Description:** Get raw design token file contents from the Synergy Design System.
138
492
 
139
493
  **Parameters:**
140
494
 
141
- - `type` (string, optional): Token type (`javascript` or `css`). Defaults to `css`
495
+ - `type` (string, optional): `javascript`, `css`, or `sass`. Defaults to the runtime config value, which is `css` by default.
496
+ - `theme` (string, optional): `sick2025-light`, `sick2025-dark`, `sick2018-light`, or `sick2018-dark`. This is only relevant for CSS token output.
142
497
 
143
498
  **Example prompts:**
144
499
 
145
- - "Show me the available CSS design tokens"
146
- - "What JavaScript design tokens are available?"
147
- - "List all design tokens for styling"
500
+ - "Show me the CSS tokens for sick2025-light"
501
+ - "Give me the JavaScript token output"
502
+ - "Show me the Sass design tokens"
148
503
 
149
- ### 6. `styles-list`
504
+ ### 7. `tokens-list`
150
505
 
151
- **Description:** Outputs a list of available styles in the Synergy Design System.
506
+ **Description:** Outputs a list of available token output types and CSS themes in the Synergy Design System.
507
+
508
+ **Parameters:** None
509
+
510
+ **Example prompts:**
511
+
512
+ - "What token formats are available?"
513
+ - "List the supported token themes"
514
+ - "Show me which token outputs this server can provide"
515
+
516
+ ### 8. `styles-list`
517
+
518
+ **Description:** Outputs a list of available CSS classes and styles in the Synergy Design System.
152
519
 
153
520
  **Parameters:** None
154
521
 
@@ -158,19 +525,21 @@ The MCP server provides the following tools that can be invoked by AI assistants
158
525
  - "Show me all available CSS utility classes"
159
526
  - "List all style modules"
160
527
 
161
- ### 7. `styles-info`
528
+ ### 9. `styles-info`
162
529
 
163
530
  **Description:** Get information about CSS utilities available in the Synergy Design System.
164
531
 
165
- **Parameters:** None
532
+ **Parameters:**
533
+
534
+ - `style` (string, required): The style name to retrieve.
166
535
 
167
536
  **Example prompts:**
168
537
 
169
- - "Show me information about Synergy CSS utilities"
170
- - "What CSS utilities does Synergy provide?"
171
- - "Tell me about the styles package"
538
+ - "Show me information about visually-hidden"
539
+ - "What does the spacing utility package contain?"
540
+ - "Tell me about a specific Synergy style"
172
541
 
173
- ### 8. `template-list`
542
+ ### 10. `template-list`
174
543
 
175
544
  **Description:** Outputs a list of available static templates built with the Synergy Design System.
176
545
 
@@ -182,13 +551,13 @@ The MCP server provides the following tools that can be invoked by AI assistants
182
551
  - "Show me all available static templates"
183
552
  - "List all templates"
184
553
 
185
- ### 9. `template-info`
554
+ ### 11. `template-info`
186
555
 
187
556
  **Description:** Get a specific template in the Synergy Design System.
188
557
 
189
558
  **Parameters:**
190
559
 
191
- - `template` (string, required): The name of the template to get information about.
560
+ - `template` (string, required): The template name to retrieve.
192
561
 
193
562
  **Example prompts:**
194
563
 
@@ -196,25 +565,28 @@ The MCP server provides the following tools that can be invoked by AI assistants
196
565
  - "Give me information about the dashboard template"
197
566
  - "How do I use the form template?"
198
567
 
199
- ### 10. `davinci-migrate-list`
568
+ ### 12. `davinci-migration-list`
200
569
 
201
570
  **Description:** Get a list of all components that have migration information from DaVinci to Synergy.
202
571
 
203
- **Parameters:** None
572
+ **Parameters:**
573
+
574
+ - `package` (string, optional): `components` or `charts`. Defaults to the runtime config value, which is `components` by default. Currently only `components` is available.
204
575
 
205
576
  **Example prompts:**
206
577
 
207
578
  - "What DaVinci components can be migrated to Synergy?"
208
- - "Show me all available migration guides"
579
+ - "Show me all available DaVinci migration entries"
209
580
  - "List components with migration information"
210
581
 
211
- ### 11. `davinci-migrate-component`
582
+ ### 13. `davinci-migration-info`
212
583
 
213
584
  **Description:** Get information about the migration of a specific component from DaVinci to Synergy.
214
585
 
215
586
  **Parameters:**
216
587
 
217
- - `component` (string, required): Name of the DaVinci component (must start with `davinci-`, e.g., `davinci-button`)
588
+ - `component` (string, required): Name of the DaVinci component. Must start with `davinci-`, for example `davinci-button`.
589
+ - `package` (string, optional): `components` or `charts`. Defaults to the runtime config value, which is `components` by default. Currently only `components` is available.
218
590
 
219
591
  **Example prompts:**
220
592
 
@@ -222,352 +594,503 @@ The MCP server provides the following tools that can be invoked by AI assistants
222
594
  - "Show me the migration guide for davinci-input"
223
595
  - "What's the Synergy equivalent of davinci-auto-suggest?"
224
596
 
225
- ### 12. `framework-info`
597
+ ### 14. `migration-list`
226
598
 
227
- **Description:** Get information about a specific framework package that the Synergy Design System supports.
599
+ **Description:** List available migration documents for a Synergy package in a compact, token-efficient format.
228
600
 
229
601
  **Parameters:**
230
602
 
231
- - `framework` (string, optional): Framework name (`react`, `vue`, `angular`, `vanilla`). Defaults to `vanilla`
232
- - `setupInstructions` (boolean, optional): Adds additional context to include setup instructions for all synergy applications. Defaults to `false`
603
+ - `synergyPackage` (string, optional): `assets`, `components`, `styles`, or `tokens`. Defaults to the runtime config value, which is `components` by default.
604
+
605
+ **Behavior:**
606
+
607
+ - For `components`, this returns a compact index of the migration overview, path guides, and package-level docs.
608
+ - For component path guides, the tool also derives metadata such as `from`, `to`, `fromTheme`, `toTheme`, `title`, and a short `summary` where possible.
233
609
 
234
610
  **Example prompts:**
235
611
 
236
- - "How do I set up Synergy with React?"
237
- - "Show me the Angular integration guide"
238
- - "What's needed to use Synergy with Vue?"
239
- - "How do I install Synergy for vanilla JavaScript?"
612
+ - "List all Synergy component migration guides"
613
+ - "Show me available migration docs for tokens"
614
+ - "What migration paths exist from Synergy 2 to Synergy 3?"
240
615
 
241
- ### 13. `migration-list`
616
+ ### 15. `migration-info`
242
617
 
243
- **Description:** List available migration documents for a specific Synergy package in a compact, token‑efficient format.
618
+ **Description:** Get detailed migration documentation for a Synergy package. Use together with `migration-list` to fetch only the documents you need.
244
619
 
245
620
  **Parameters:**
246
621
 
247
- - `synergyPackage` (string, optional): The package to list migration documents for (`assets`, `components`, `styles`, `tokens`). Defaults to `components`.
622
+ - `filename` (string, optional): Specific migration document filename to return. Especially useful for the `components` package.
623
+ - `synergyPackage` (string, optional): `assets`, `components`, `styles`, or `tokens`. Defaults to the runtime config value, which is `components` by default.
248
624
 
249
- **Notes:**
625
+ **Behavior:**
250
626
 
251
- - For the `components` package this returns an index of:
252
- - High‑level overview docs (e.g. migration overview)
253
- - Path‑specific guides (e.g. v2‑2018 v3‑2018)
254
- - Package‑level docs (e.g. `BREAKING_CHANGES.md`, `CHANGELOG.md`)
255
- - Each entry contains at least the filename and package name. For component paths, additional metadata such as `from`, `to`, `fromTheme`, `toTheme`, and a short `summary` is included where possible.
627
+ - For `components` with `filename`, returns exactly that document.
628
+ - For `components` without `filename`, returns the overview and high-level package docs, not every path guide.
629
+ - For `assets`, `styles`, and `tokens`, returns the available migration documents for the selected package.
256
630
 
257
631
  **Example prompts:**
258
632
 
259
- - "List all Synergy component migration guides"
260
- - "Show me available migration docs for tokens"
261
- - "What migration paths exist from Synergy 2 to Synergy 3?"
633
+ - "List the available Synergy component migrations"
634
+ - "Show me the migration guide from Synergy 2 (SICK 2018) to Synergy 3 (SICK 2018)"
635
+ - "Give me the breaking changes for the tokens package"
262
636
 
263
- ### 14. `migration-info`
637
+ ### 16. `setup`
264
638
 
265
- **Description:** Get detailed migration documentation for a Synergy package. Use this together with `migration-list` to fetch only the documents you need.
639
+ **Description:** Get setup information for a Synergy package. Framework packages automatically include base components setup.
266
640
 
267
641
  **Parameters:**
268
642
 
269
- - `filename` (string, optional): Specific migration document filename to return. Strongly recommended for the `components` package to avoid fetching all path guides at once.
270
- - `synergyPackage` (string, optional): The package to get migration information about (`assets`, `components`, `styles`, `tokens`). Defaults to `components`.
643
+ - `package` (string, required): `components`, `react`, `vue`, `angular`, `tokens`, `styles`, `fonts`, `assets`, or `migrations`.
644
+ - `includeLimitations` (boolean, optional): Include known limitations and issues. Defaults to the runtime config value, which is `true` by default.
271
645
 
272
- **Behavior:**
646
+ **Example prompts:**
273
647
 
274
- - For `components`:
275
- - With `filename`: returns exactly that migration document (e.g. a specific v2‑to‑v3 path guide).
276
- - Without `filename`: returns only the migration overview and high‑level package docs (such as `BREAKING_CHANGES` and `CHANGELOG`), **not** every path‑specific guide.
277
- - For other packages (`assets`, `styles`, `tokens`):
278
- - Returns all migration‑related documents for the selected package (typically `BREAKING_CHANGES` and `CHANGELOG`).
648
+ - "How do I set up Synergy for React?"
649
+ - "Show me the setup instructions for tokens"
650
+ - "Give me the Synergy assets setup and limitations"
279
651
 
280
- **Example prompts:**
652
+ ## Usage Examples
281
653
 
282
- - "List the available Synergy component migrations" (first call `migration-list`)
283
- - "Show me the migration guide from Synergy 2 (SICK 2018) to Synergy 3 (SICK 2018)"
284
- - "Give me the breaking changes for the tokens package between major versions"
654
+ ### Command Line Interface
285
655
 
286
- ### 15. `version`
656
+ ```bash
657
+ # Start the MCP server
658
+ syn-mcp
287
659
 
288
- **Description:** Get version and basic information about the Synergy Design System MCP Server.
660
+ # Start with custom defaults
661
+ syn-mcp --config ./synergy-mcp.json
662
+ ```
289
663
 
290
- **Parameters:** None
664
+ ### Programmatic Usage
291
665
 
292
- **Example prompts:**
666
+ StdIO transport:
667
+
668
+ ```typescript
669
+ import { createServer } from "@synergy-design-system/mcp";
670
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
293
671
 
294
- - "What version of the MCP server is running?"
295
- - "Show me information about this Synergy MCP server"
296
- - "What's the current version?"
672
+ const server = createServer();
673
+ const transport = new StdioServerTransport();
674
+
675
+ await server.connect(transport);
676
+ ```
677
+
678
+ HTTP transport (session-aware):
679
+
680
+ ```typescript
681
+ import { randomUUID } from "node:crypto";
682
+ import { createServer as createHttpServer } from "node:http";
683
+ import { createServer } from "@synergy-design-system/mcp";
684
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
685
+
686
+ const sessions = new Map<string, StreamableHTTPServerTransport>();
687
+ const nodeServer = createHttpServer();
688
+
689
+ nodeServer.on("request", async (req, res) => {
690
+ if (!(req.url || "/").startsWith("/mcp")) {
691
+ res.statusCode = 404;
692
+ res.end("Not Found\\n");
693
+ return;
694
+ }
695
+
696
+ const sessionId = req.headers["mcp-session-id"] as string | undefined;
697
+
698
+ if (sessionId) {
699
+ const existing = sessions.get(sessionId);
700
+ if (!existing) {
701
+ res.statusCode = 400;
702
+ res.setHeader("Content-Type", "application/json");
703
+ res.end(
704
+ JSON.stringify({
705
+ jsonrpc: "2.0",
706
+ id: null,
707
+ error: { code: -32000, message: "Unknown session ID" },
708
+ }),
709
+ );
710
+ return;
711
+ }
712
+
713
+ await existing.handleRequest(req, res);
714
+ return;
715
+ }
716
+
717
+ const server = createServer();
718
+ const transport = new StreamableHTTPServerTransport({
719
+ sessionIdGenerator: () => randomUUID(),
720
+ onsessioninitialized: sid => {
721
+ sessions.set(sid, transport);
722
+ },
723
+ });
724
+
725
+ transport.onclose = () => {
726
+ if (transport.sessionId) {
727
+ sessions.delete(transport.sessionId);
728
+ }
729
+ };
730
+
731
+ await server.connect(transport);
732
+ await transport.handleRequest(req, res);
733
+ });
734
+
735
+ nodeServer.listen(9119, "127.0.0.1");
736
+ ```
737
+
738
+ ### AI Assistant Examples
739
+
740
+ Once connected to an AI assistant, you can use prompts like:
741
+
742
+ ```text
743
+ Show me how to use syn-button in React
744
+ Give me the interface docs for syn-select
745
+ What token formats are available?
746
+ How do I set up Synergy for Vue?
747
+ Find icons related to search and filter
748
+ How do I migrate from davinci-textarea to Synergy?
749
+ What migration paths exist from Synergy 2 to Synergy 3?
750
+ List all available Synergy templates
751
+ ```
297
752
 
298
753
  ## Developer Documentation
299
754
 
300
755
  ### Project Structure
301
756
 
302
- ```
757
+ ```text
303
758
  src/
304
759
  ├── bin/
305
- └── start.ts # CLI entry point (syn-mcp command)
306
- ├── build/ # Build scripts for metadata generation
307
- ├── assets.ts # Asset metadata builder
308
- ├── build.ts # Main build orchestrator
309
- │ ├── components.ts # Component metadata builder
310
- │ ├── frameworks.ts # Framework info builder
311
- │ ├── static.ts # Static content builder
312
- │ ├── styles.ts # Styles metadata builder
313
- └── tokens.ts # Token metadata builder
314
- ├── scripts/ # Build and utility scripts
315
- │ └── generate-checksum.ts # TypeScript checksum generator (replaces shell scripts)
316
- ├── server.ts # MCP server setup and tool registration
317
- ├── tools/ # MCP tool implementations
318
- │ ├── asset-info.ts # Icon search and information
319
- │ ├── asset-list.ts # Available iconsets
320
- │ ├── component-info.ts # Individual component details
321
- ├── component-list.ts # List all components
322
- ├── davinci-migration.ts # Migration guides
323
- │ ├── font-info.ts # Font and prerequisites information
324
- │ ├── framework-info.ts # Framework-specific information
325
- │ ├── migration-info.ts # Package migration documentation
326
- │ ├── migration-list.ts # Package migration index (filenames + metadata)
327
- │ ├── styles-info.ts # CSS utilities information
328
- │ ├── styles-list.ts # List all styles
329
- │ ├── template-info.ts # Template details
330
- │ ├── template-list.ts # List all templates
331
- │ ├── tokens.ts # Design tokens
332
- │ ├── version.ts # MCP server version info
333
- └── index.ts # Tool exports
334
- └── utilities/ # Helper functions and metadata loaders
335
- ├── assets.ts # Asset utilities
336
- ├── checksum.ts # Folder checksum utilities (replaces shell scripts)
337
- ├── components.ts # Component utilities
338
- ├── config.ts # Configuration management
339
- ├── file.ts # File system utilities
340
- ├── metadata.ts # Metadata loading utilities
341
- ├── stdio.ts # Standard I/O utilities
342
- ├── styles.ts # Style utilities
343
- ├── templates.ts # Template utilities
344
- ├── tokens.ts # Token utilities
345
- ├── version.ts # Version utilities
346
- ├── storybook/ # Storybook documentation utilities
347
- └── index.ts # Utility exports
348
- metadata/ # Generated and static metadata files
349
- ├── checksum.txt # Metadata integrity checksum
350
- ├── davinci-migration/ # DaVinci to Synergy migration guides
351
- ├── packages/ # Synergy package specific information
352
- └── static/ # Static metadata for tools
760
+ ├── clean.js # Removes dist/ before builds
761
+ │ └── start.ts # CLI entry point for syn-mcp
762
+ ├── server.ts # MCP server creation, tool and resource registration
763
+ ├── middleware/ # Tool execution middleware pipeline
764
+ │ ├── compose.ts # composeMiddlewares (reduceRight composition)
765
+ │ ├── compression.ts # withCompressionMiddleware (experimental)
766
+ │ ├── error-handler.ts # withErrorHandlingMiddleware
767
+ │ ├── logging.ts # withToolLoggingMiddleware
768
+ ├── types.ts # ToolMiddleware, ToolMiddlewareContext, RawToolHandler, WithErrorHandlerOptions
769
+ │ └── index.ts # Middleware module entrypoint
770
+ ├── resources/ # MCP resource implementations (static, read-only data)
771
+ ├── component-list.ts
772
+ ├── asset-list.ts
773
+ │ ├── component-cluster-list.ts
774
+ │ ├── styles-list.ts
775
+ │ ├── templates-list.ts
776
+ └── index.ts
777
+ ├── tools/ # MCP tool implementations
778
+ │ ├── asset-info.ts
779
+ │ ├── asset-list.ts
780
+ │ ├── component-cluster-list.ts
781
+ │ ├── component-info.ts
782
+ │ ├── component-list.ts
783
+ │ ├── davinci-migration-info.ts
784
+ │ ├── davinci-migration-list.ts
785
+ │ ├── migration-info.ts
786
+ │ ├── migration-list.ts
787
+ │ ├── setup.ts
788
+ ├── styles-info.ts
789
+ │ ├── styles-list.ts
790
+ ├── template-info.ts
791
+ ├── template-list.ts
792
+ ├── token-info.ts
793
+ ├── tokens-list.ts
794
+ │ └── index.ts
795
+ ├── transports/ # Transport factory and implementations
796
+ ├── http.ts
797
+ ├── stdio.ts
798
+ │ └── index.ts
799
+ ├── types/ # Shared type definitions
800
+ │ └── tool-response.ts
801
+ └── utilities/ # Runtime config, metadata adapters, and CLI helpers
802
+ ├── cli.ts
803
+ ├── config.ts
804
+ ├── davinci.ts
805
+ ├── metadata.ts
806
+ ├── migration.ts
807
+ ├── rules.ts
808
+ ├── server.ts
809
+ └── index.ts
810
+ rules/ # Markdown guidance files prepended to selected tool output
811
+ test/
812
+ ├── e2e/ # End-to-end MCP tests
813
+ ├── fixtures/ # Self-signed TLS test certificates
814
+ ├── unit/ # Unit tests
815
+ ├── utilities/ # Test helpers
816
+ └── watermarks/ # Token watermark scenarios, baseline, and runner
353
817
  ```
354
818
 
819
+ There is no in-package metadata. This is now handled via `@synergy-design-system/metadata`.
820
+
355
821
  ### Available Scripts
356
822
 
357
- The following npm scripts are available for development:
823
+ The package currently exposes these development scripts:
358
824
 
359
825
  ```bash
360
- # Build the entire project (TypeScript + metadata + Storybook docs)
826
+ # Compile TypeScript into dist/
361
827
  pnpm build
362
828
 
363
- # Build only TypeScript files
364
- pnpm build:ts
365
-
366
- # Build metadata from source packages
367
- pnpm build:metadata
368
-
369
- # Generate metadata integrity checksum (uses TypeScript instead of shell script)
370
- pnpm build:hash
371
-
372
- # Build Storybook documentation
373
- pnpm build:storybook
829
+ # Remove dist/
830
+ pnpm clean
374
831
 
375
- # Run linting
832
+ # Run all lint tasks
376
833
  pnpm lint
834
+
835
+ # Lint the source tree with ESLint
377
836
  pnpm lint:js
378
837
 
379
- # Run tests with coverage
838
+ # Run the end-to-end test suite
380
839
  pnpm test
840
+
841
+ # Run watermark measurements (report-only)
842
+ pnpm watermark:report
843
+
844
+ # Write/update local watermark baseline file
845
+ pnpm watermark:baseline
846
+
847
+ # Enforce watermark budgets and baseline regressions
848
+ pnpm lint:watermark
849
+
850
+ # Run tests in watch mode
851
+ pnpm test:watch
852
+
853
+ # Launch the MCP inspector
854
+ pnpm debug
381
855
  ```
382
856
 
383
- ### Development Workflow
857
+ ### Token Watermarks
384
858
 
385
- 1. **Setup**: Install dependencies with `pnpm install`
386
- 2. **Build**: Run `pnpm build` to compile TypeScript and generate metadata
387
- - `pnpm build:ts` compiles TypeScript files
388
- - `pnpm build:metadata` generates metadata from source packages
389
- - `pnpm build:hash` creates integrity checksum for metadata using TypeScript utilities
390
- 3. **Test**: Use `pnpm test` to run the test suite with coverage
391
- 4. **Lint**: Run `pnpm lint` to check code quality
392
- 5. **Run**: Start the server with `npx syn-mcp` or `node dist/bin/start.js`
859
+ The MCP package includes token watermark verification for AI-facing tool responses.
393
860
 
394
- The metadata build process runs multiple specialized builders in sequence:
861
+ - Scenarios are defined in `test/watermarks/scenarios.ts`.
862
+ - The runner is `test/watermarks/run.ts`.
863
+ - Baseline data is stored in `test/watermarks/baseline.latest-release.json`.
864
+ - The baseline records `encoding`, `generatedAt`, `source`, and per-scenario token counts.
395
865
 
396
- 1. Assets (icons and iconsets)
397
- 2. Components (from package manifests)
398
- 3. Framework information (setup guides)
399
- 4. Design tokens (CSS and JS tokens)
400
- 5. Styles (utility classes)
401
- 6. Static files (hand-written documentation)
866
+ Current tokenizer configuration:
402
867
 
403
- ### Adding New Tools
868
+ - The runner uses a fixed tokenizer encoding: `o200k_base`.
869
+ - This keeps token measurements deterministic across runs.
870
+ - Baseline `encoding` is persisted to make provenance explicit and support future validation or migrations.
404
871
 
405
- To add a new tool:
872
+ Recommended workflow:
406
873
 
407
- 1. Create a new file in `src/tools/` (e.g., `my-tool.ts`)
408
- 2. Implement the tool following the MCP SDK patterns
409
- 3. Export the tool from `src/tools/index.ts`
410
- 4. Your tool will automatically be registered into the server.
874
+ 1. Run `pnpm watermark:report` to generate a report.
875
+ 2. Run `pnpm watermark:baseline` when intentionally refreshing baseline values.
876
+ 3. Run `pnpm lint:watermark` in CI or pregate checks to enforce budgets.
411
877
 
412
- Example tool structure:
878
+ ### Development Workflow
413
879
 
414
- ```typescript
415
- import { z } from "zod";
416
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
880
+ 1. Install dependencies with `pnpm install`.
881
+ 2. Build the package with `pnpm build`.
882
+ 3. Start the server with `npx @synergy-design-system/mcp`, `node dist/bin/start.js`, or `syn-mcp --config ./synergy-mcp.json`.
883
+ 4. Run `pnpm test` for end-to-end verification.
884
+ 5. Run `pnpm watermark:report` to review token watermark report output.
885
+ 6. Run `pnpm lint` before shipping changes.
417
886
 
418
- export const myTool = (server: McpServer) => {
419
- server.registerTool(
420
- "my-tool",
421
- {
422
- description: "Description of what the tool does",
423
- inputSchema: {
424
- param: z.string().describe("Parameter description"),
425
- },
426
- title: "My Tool",
427
- },
428
- async ({ param }) => {
429
- // Tool implementation
430
- return {
431
- content: [
432
- {
433
- text: `Result for ${param}`,
434
- type: "text",
435
- },
436
- ],
437
- };
438
- },
439
- );
440
- };
441
- ```
887
+ If the MCP server appears to be missing data, check the state of `@synergy-design-system/metadata` first. This package reads runtime content from the metadata package and does not generate component, token, style, or migration data itself.
442
888
 
443
- ### Metadata Management
889
+ ### Setting up the MCP Inspector for local debugging
444
890
 
445
- Metadata is stored in the `metadata/` directory and is built during the build process:
891
+ You may start the [mcp inspector](https://github.com/modelcontextprotocol/inspector) by issuing the command `pnpm debug`. This will automatically install the MCP inspector and launch it once downloaded. You can use the following configuration for the available transports:
446
892
 
447
- - **Static metadata**: Hand-written files in `metadata/static/`
448
- - **Component metadata**: Generated from Synergy packages in `metadata/packages/`
449
- - **Migration guides**: DaVinci migration information in `metadata/davinci-migration/`
450
- - **Checksum validation**: `metadata/checksum.txt` ensures metadata integrity
893
+ #### STDIO transport
451
894
 
452
- The `pnpm build:metadata` script processes source packages and generates structured metadata files using specialized builders:
895
+ To test the STDIO transport, use the following values:
453
896
 
454
- - `build/assets.ts` - Processes icon and asset information
455
- - `build/components.ts` - Extracts component metadata from packages
456
- - `build/frameworks.ts` - Generates framework-specific documentation
457
- - `build/static.ts` - Processes static content files
458
- - `build/styles.ts` - Extracts CSS utility information
459
- - `build/tokens.ts` - Processes design token data
460
- - `build/build.ts` - Orchestrates the entire build process
897
+ 1. **Transport Type**: `STDIO`
898
+ 2. **Command**: `node`
899
+ 3. **Arguments**: PATH_TO_MCP_DOWNLOAD/dist/bin/start.js
461
900
 
462
- ### Checksum Utilities
901
+ #### HTTP transport
463
902
 
464
- The project includes TypeScript utilities for generating and verifying folder checksums, replacing shell scripts for cross-platform compatibility:
903
+ To test the http transport, use the following values:
465
904
 
466
- **Key Features:**
905
+ 1. Start the http mcp server (`node PATH_TO_MCP_DOWNLOAD/dist/bin/start.js --interface http`)
906
+ 2. **Transport Type**: `Streamable HTTP`
907
+ 3. **URL**: `http://localhost:9119/mcp`
467
908
 
468
- - **Cross-platform**: Works on Windows, macOS, and Linux
469
- - **Configurable**: Support for custom exclude patterns and hash algorithms (MD5, SHA1, SHA256)
470
- - **TypeScript native**: Full type safety and IDE support
471
- - **Shell script replacement**: Replaces `find | sort | xargs | md5` commands
909
+ ### Architecture
472
910
 
473
- **Available Functions:**
911
+ The MCP server is intentionally small:
474
912
 
475
- - `createFolderChecksum(path, options?)` - Generate checksum and optionally write to file
476
- - `verifyFolderChecksum(path, options?)` - Verify current contents match stored checksum
477
- - `getFolderChecksum(path, options?)` - Get checksum without writing to file
913
+ - `src/bin/start.ts` parses CLI arguments, loads optional runtime config, resolves overrides, and starts the selected transport.
914
+ - `src/transports/` contains the transport factory and runtime implementations for stdio and HTTP/HTTPS.
915
+ - `src/server.ts` creates the `McpServer` instance and registers all exported tools from `src/tools/index.ts` and all exported resources from `src/resources/index.ts`.
916
+ - Tool implementations in `src/tools/` call the public APIs of `@synergy-design-system/metadata` to retrieve data.
917
+ - Resource implementations in `src/resources/` expose static, read-only data that does not change during server runtime. Resources bypass the tool middleware pipeline entirely — no compression, logging, or error wrapping is applied.
918
+ - Utilities in `src/utilities/` handle runtime config, MCP response shaping, DaVinci migration extraction, and package migration document loading.
919
+ - Markdown files in `rules/` provide assistant-facing response guidance for selected tools and frameworks.
478
920
 
479
- **Usage Example:**
921
+ #### Middleware Pipeline
480
922
 
481
- ```typescript
482
- import {
483
- createFolderChecksum,
484
- verifyFolderChecksum,
485
- } from "./utilities/checksum.js";
486
-
487
- // Generate checksum (equivalent to shell script)
488
- await createFolderChecksum("./metadata", {
489
- excludePatterns: [".*", "checksum.txt"],
490
- algorithm: "md5",
491
- outputFile: "checksum.txt",
492
- });
923
+ Every tool call passes through a composed middleware stack defined in `src/middleware/`. Middlewares are applied with `composeMiddlewares` using `reduceRight`, meaning execution order is **left-to-right** (first entry in the array wraps outermost, last entry wraps closest to the handler).
493
924
 
494
- // Verify integrity
495
- const isValid = await verifyFolderChecksum("./metadata");
496
- ```
925
+ Current stack (in declaration order):
497
926
 
498
- The build process uses `scripts/generate-checksum.ts` instead of shell commands for better cross-platform support and maintainability.
927
+ 1. `withErrorHandlingMiddleware` outermost; catches any uncaught error and returns a structured error response.
928
+ 2. `withToolLoggingMiddleware` — records duration, token count, and success/failure metadata. Exits early (skipping token counting) when logging is disabled via config.
929
+ 3. `withCompressionMiddleware` — innermost; encodes structured data to toon text format when compression is `toon`. Disabled by default.
499
930
 
500
- ### Binary Distribution
931
+ **Note:** Compression runs before logging so token counts reflect the compressed payload size.
501
932
 
502
- The package includes a `syn-mcp` binary that starts the MCP server via stdio transport. This is defined in `package.json`:
933
+ All middlewares share the `ToolMiddleware<TArgs>` type from `src/middleware/types.ts`:
503
934
 
504
- ```json
505
- {
506
- "bin": {
507
- "syn-mcp": "./dist/bin/start.js"
508
- }
509
- }
935
+ ```typescript
936
+ type ToolMiddleware<TArgs extends Record<string, unknown>> = (
937
+ next: RawToolHandler<TArgs>,
938
+ context: ToolMiddlewareContext,
939
+ ) => RawToolHandler<TArgs>;
510
940
  ```
511
941
 
512
- ## Usage Examples
942
+ The `ToolMiddlewareContext` carries the **full runtime config** (`McpRuntimeConfig`), so any middleware can read its own config key without additional plumbing:
513
943
 
514
- ### Command Line Interface
944
+ ```typescript
945
+ type ToolMiddlewareContext = {
946
+ config: McpRuntimeConfig; // e.g. context.config.logging, context.config.compression
947
+ options: WithErrorHandlerOptions;
948
+ toolName: string;
949
+ };
950
+ ```
951
+
952
+ To add a new middleware (e.g., compression), create `src/middleware/compression.ts`, export it from `src/middleware/index.ts`, and add it to the `middlewareStack` in `src/utilities/metadata.ts`.
953
+
954
+ #### Response Compression (Experimental)
955
+
956
+ The MCP server can compress tool response payloads using the optional `@toon-format/toon` library. Compression encodes structured data into a compact text format while leaving string entries unchanged.
957
+
958
+ **Installation:**
515
959
 
516
960
  ```bash
517
- # Start the MCP server
518
- syn-mcp
961
+ npm install @toon-format/toon
962
+ ```
963
+
964
+ **Usage:**
519
965
 
520
- # The server will communicate via stdio and wait for MCP protocol messages
966
+ ```bash
967
+ syn-mcp --compression toon
521
968
  ```
522
969
 
523
- ### Programmatic Usage
970
+ **Behavior:**
971
+
972
+ - `compression: 'none'` (default): No compression
973
+ - `compression: 'toon'`: Non-string entries encoded to toon format; strings pass through unchanged
974
+ - If toon library not installed: gracefully disabled (non-fatal)
975
+ - Token counts reflect compressed payload size when logging enabled
976
+
977
+ **Notes:**
978
+
979
+ - Experimental feature; may be subject to changes
980
+ - Disabled by default; explicitly enable via `--compression toon`
981
+
982
+ ### Data Sources
983
+
984
+ Runtime data is resolved from `@synergy-design-system/metadata`:
985
+
986
+ - Component docs and component lists come from metadata package component APIs.
987
+ - Setup guidance comes from metadata setup entities.
988
+ - DaVinci migrations are extracted from the setup content exposed by the metadata package.
989
+ - Synergy package migration docs are resolved from metadata store layer files.
990
+ - Tokens, styles, templates, and assets are all read from metadata package APIs at request time.
991
+
992
+ ### Adding New Resources
993
+
994
+ To add a new resource:
995
+
996
+ 1. Create a file in `src/resources/`.
997
+ 2. Register the resource with `server.registerResource(...)` using a `synergy://` URI.
998
+ 3. Export it from `src/resources/index.ts`.
999
+ 4. Update this README so the public resource inventory stays aligned with the code.
1000
+
1001
+ Example:
524
1002
 
525
1003
  ```typescript
526
- import { createServer } from "@synergy-design-system/mcp";
527
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
1004
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1005
+ import { listThings } from "@synergy-design-system/metadata";
528
1006
 
529
- // Create and start the server
530
- const server = createServer();
531
- const transport = new StdioServerTransport();
532
- await server.connect(transport);
1007
+ const RESOURCE_URI = "synergy://things/list";
1008
+
1009
+ export const thingsListResource = (server: McpServer) => {
1010
+ server.registerResource(
1011
+ "things-list",
1012
+ RESOURCE_URI,
1013
+ {
1014
+ description:
1015
+ "A list of all available things in the Synergy Design System.",
1016
+ mimeType: "application/json",
1017
+ title: "Things list",
1018
+ },
1019
+ async _uri => {
1020
+ const things = await listThings();
1021
+ const names = things.data.map(t => t.name).toSorted();
1022
+ return {
1023
+ contents: [
1024
+ {
1025
+ mimeType: "application/json",
1026
+ text: JSON.stringify(names, null, 2),
1027
+ uri: RESOURCE_URI,
1028
+ },
1029
+ ],
1030
+ };
1031
+ },
1032
+ );
1033
+ };
533
1034
  ```
534
1035
 
535
- ### AI Assistant Integration
1036
+ **Note:** Resource callbacks receive the request URI and return a `ReadResourceResult` directly. They do **not** go through the tool middleware pipeline (no compression, logging, or error wrapping).
536
1037
 
537
- Once configured with an AI assistant, you can use natural language prompts like:
1038
+ ### Adding New Tools
538
1039
 
539
- ```
540
- "Show me how to use syn-button in React"
541
- "What icons are available for navigation?"
542
- "How do I migrate from davinci-textarea to Synergy?"
543
- "How do I migrate from Synergy v1 to v2?"
544
- "List all available Synergy components"
545
- "What CSS utilities does Synergy provide?"
546
- ```
1040
+ To add a new tool:
547
1041
 
548
- The MCP server will interpret these prompts and call the appropriate tools to provide structured responses.
1042
+ 1. Create a file in `src/tools/`.
1043
+ 2. Register the tool with `server.registerTool(...)`.
1044
+ 3. Export it from `src/tools/index.ts`.
1045
+ 4. If needed, add a matching guidance file under `rules/`.
1046
+ 5. Update this README so the public tool inventory stays aligned with the code.
549
1047
 
550
- ## Architecture
1048
+ Example:
551
1049
 
552
- The MCP server is built using the Model Context Protocol SDK and provides a standardized interface for AI assistants to access Synergy Design System information.
1050
+ ```typescript
1051
+ import { z } from "zod";
1052
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1053
+ import {
1054
+ createToolAnnotations,
1055
+ getRuntimeConfig,
1056
+ getToolRule,
1057
+ withErrorHandler,
1058
+ } from "../utilities/index.js";
553
1059
 
554
- ### Core Components
1060
+ export const myTool = (server: McpServer) => {
1061
+ server.registerTool(
1062
+ "my-tool",
1063
+ {
1064
+ annotations: createToolAnnotations(),
1065
+ description: "Description of what the tool does",
1066
+ inputSchema: {
1067
+ param: z.string().describe("Parameter description"),
1068
+ },
1069
+ title: "My Tool",
1070
+ },
1071
+ async ({ param }) =>
1072
+ withErrorHandler(async () => {
1073
+ // Get the AI rules for this tool, used as a preface for LLM output quality.
1074
+ const aiRules = await getToolRule("my-tool");
1075
+ const content = `You provided ${param} as parameter`;
1076
+ return [aiRules, content];
1077
+ }),
1078
+ );
1079
+ };
1080
+ ```
555
1081
 
556
- - **Server**: MCP server instance that manages tool registration and request handling
557
- - **Tools**: Individual tool implementations that provide specific functionality
558
- - **Utilities**: Helper functions for metadata loading and processing
559
- - **Metadata**: Static and generated metadata files containing component and framework information
1082
+ ### Binary Distribution
560
1083
 
561
- ### Data Flow
1084
+ The package exposes the `syn-mcp` binary via `package.json`:
562
1085
 
563
- 1. AI assistant sends MCP request to the server
564
- 2. Server routes request to appropriate tool
565
- 3. Tool processes request and loads relevant metadata
566
- 4. Tool returns structured response to AI assistant
567
- 5. AI assistant processes response and provides user-friendly output
1086
+ ```json
1087
+ {
1088
+ "bin": {
1089
+ "syn-mcp": "./dist/bin/start.js"
1090
+ }
1091
+ }
1092
+ ```
568
1093
 
569
1094
  ## License
570
1095
 
571
1096
  MIT
572
-
573
- ---