@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.
- package/CHANGELOG.md +13 -0
- package/README.md +826 -303
- package/dist/bin/start.js +57 -6
- package/dist/middleware/compose.d.ts +15 -0
- package/dist/middleware/compose.js +10 -0
- package/dist/middleware/compression.d.ts +19 -0
- package/dist/middleware/compression.js +35 -0
- package/dist/middleware/error-handler.d.ts +13 -0
- package/dist/middleware/error-handler.js +42 -0
- package/dist/middleware/index.d.ts +9 -0
- package/dist/middleware/index.js +8 -0
- package/dist/middleware/logging.d.ts +14 -0
- package/dist/middleware/logging.js +64 -0
- package/dist/middleware/types.d.ts +20 -0
- package/dist/middleware/types.js +4 -0
- package/dist/resources/asset-list.d.ts +7 -0
- package/dist/resources/asset-list.js +34 -0
- package/dist/resources/component-cluster-list.d.ts +7 -0
- package/dist/resources/component-cluster-list.js +30 -0
- package/dist/resources/component-list.d.ts +7 -0
- package/dist/resources/component-list.js +31 -0
- package/dist/resources/index.d.ts +5 -0
- package/dist/resources/index.js +5 -0
- package/dist/resources/styles-list.d.ts +7 -0
- package/dist/resources/styles-list.js +31 -0
- package/dist/resources/templates-list.d.ts +7 -0
- package/dist/resources/templates-list.js +28 -0
- package/dist/server.js +5 -1
- package/dist/tools/asset-info.js +41 -85
- package/dist/tools/asset-list.js +22 -31
- package/dist/tools/component-cluster-list.d.ts +6 -0
- package/dist/tools/component-cluster-list.js +30 -0
- package/dist/tools/component-info.js +38 -21
- package/dist/tools/component-list.js +35 -30
- package/dist/tools/davinci-migration-info.d.ts +2 -0
- package/dist/tools/davinci-migration-info.js +21 -0
- package/dist/tools/davinci-migration-list.d.ts +2 -0
- package/dist/tools/davinci-migration-list.js +20 -0
- package/dist/tools/index.d.ts +6 -5
- package/dist/tools/index.js +6 -5
- package/dist/tools/migration-info.js +12 -37
- package/dist/tools/migration-list.js +7 -13
- package/dist/tools/setup.d.ts +6 -0
- package/dist/tools/setup.js +31 -0
- package/dist/tools/styles-info.d.ts +1 -2
- package/dist/tools/styles-info.js +24 -20
- package/dist/tools/styles-list.js +19 -33
- package/dist/tools/template-info.js +19 -20
- package/dist/tools/template-list.d.ts +1 -1
- package/dist/tools/template-list.js +17 -32
- package/dist/tools/{tokens.d.ts → token-info.d.ts} +2 -2
- package/dist/tools/token-info.js +31 -0
- package/dist/tools/tokens-list.d.ts +6 -0
- package/dist/tools/tokens-list.js +52 -0
- package/dist/transports/http.d.ts +14 -0
- package/dist/transports/http.js +157 -0
- package/dist/transports/index.d.ts +23 -0
- package/dist/transports/index.js +23 -0
- package/dist/transports/stdio.d.ts +10 -0
- package/dist/transports/stdio.js +21 -0
- package/dist/types/tool-response.d.ts +13 -0
- package/dist/types/tool-response.js +7 -0
- package/dist/utilities/cli.d.ts +27 -0
- package/dist/utilities/cli.js +170 -0
- package/dist/utilities/compression.d.ts +7 -0
- package/dist/utilities/compression.js +45 -0
- package/dist/utilities/config.d.ts +122 -80
- package/dist/utilities/config.js +212 -81
- package/dist/utilities/davinci.d.ts +12 -0
- package/dist/utilities/davinci.js +55 -0
- package/dist/utilities/index.d.ts +10 -10
- package/dist/utilities/index.js +10 -10
- package/dist/utilities/local-file-logger.d.ts +2 -0
- package/dist/utilities/local-file-logger.js +22 -0
- package/dist/utilities/logger.d.ts +12 -0
- package/dist/utilities/logger.js +30 -0
- package/dist/utilities/logging-context.d.ts +8 -0
- package/dist/utilities/logging-context.js +7 -0
- package/dist/utilities/logging-service.d.ts +2 -0
- package/dist/utilities/logging-service.js +24 -0
- package/dist/utilities/logging-types.d.ts +19 -0
- package/dist/utilities/metadata.d.ts +10 -17
- package/dist/utilities/metadata.js +34 -51
- package/dist/utilities/migration.d.ts +2 -1
- package/dist/utilities/migration.js +33 -30
- package/dist/utilities/rules.d.ts +8 -0
- package/dist/utilities/rules.js +37 -0
- package/dist/utilities/server.d.ts +7 -0
- package/dist/utilities/server.js +12 -0
- package/dist/utilities/token-counter.d.ts +14 -0
- package/dist/utilities/token-counter.js +53 -0
- package/package.json +18 -28
- package/rules/asset-info.md +10 -0
- package/rules/asset-list.md +10 -0
- package/rules/component-cluster-list.md +5 -0
- package/{metadata/static/angular/index.md → rules/component-info-angular.md} +2 -1
- package/{metadata/static/react/index.md → rules/component-info-react.md} +2 -1
- package/{metadata/static/vue/index.md → rules/component-info-vue.md} +4 -1
- package/{metadata/static/component-list/index.md → rules/component-list.md} +5 -7
- package/rules/styles-info.md +9 -0
- package/{metadata/static/styles/index.md → rules/styles-list.md} +0 -2
- package/{metadata/static/templates/index.md → rules/template-info.md} +0 -1
- package/rules/template-list.md +7 -0
- package/dist/bin/create-checksum.d.ts +0 -2
- package/dist/bin/create-checksum.js +0 -24
- package/dist/build/assets.d.ts +0 -4
- package/dist/build/assets.js +0 -57
- package/dist/build/build.js +0 -35
- package/dist/build/components.d.ts +0 -4
- package/dist/build/components.js +0 -133
- package/dist/build/fonts.d.ts +0 -4
- package/dist/build/fonts.js +0 -49
- package/dist/build/frameworks.d.ts +0 -4
- package/dist/build/frameworks.js +0 -61
- package/dist/build/static.d.ts +0 -4
- package/dist/build/static.js +0 -65
- package/dist/build/styles.d.ts +0 -4
- package/dist/build/styles.js +0 -58
- package/dist/build/tokens.d.ts +0 -4
- package/dist/build/tokens.js +0 -59
- package/dist/tools/davinci-migration.d.ts +0 -3
- package/dist/tools/davinci-migration.js +0 -66
- package/dist/tools/font-info.d.ts +0 -6
- package/dist/tools/font-info.js +0 -35
- package/dist/tools/framework-info.d.ts +0 -7
- package/dist/tools/framework-info.js +0 -58
- package/dist/tools/tokens.js +0 -24
- package/dist/tools/version.d.ts +0 -7
- package/dist/tools/version.js +0 -53
- package/dist/utilities/assets.d.ts +0 -2
- package/dist/utilities/assets.js +0 -3
- package/dist/utilities/checksum.d.ts +0 -36
- package/dist/utilities/checksum.js +0 -94
- package/dist/utilities/components.d.ts +0 -25
- package/dist/utilities/components.js +0 -86
- package/dist/utilities/file.d.ts +0 -12
- package/dist/utilities/file.js +0 -31
- package/dist/utilities/fonts.d.ts +0 -2
- package/dist/utilities/fonts.js +0 -3
- package/dist/utilities/stdio.d.ts +0 -14
- package/dist/utilities/stdio.js +0 -60
- package/dist/utilities/storybook/build-docs.d.ts +0 -2
- package/dist/utilities/storybook/build-docs.js +0 -43
- package/dist/utilities/storybook/configs.d.ts +0 -13
- package/dist/utilities/storybook/configs.js +0 -85
- package/dist/utilities/storybook/docs-scraper.d.ts +0 -26
- package/dist/utilities/storybook/docs-scraper.js +0 -96
- package/dist/utilities/storybook/index.d.ts +0 -5
- package/dist/utilities/storybook/index.js +0 -4
- package/dist/utilities/storybook/scraper.d.ts +0 -14
- package/dist/utilities/storybook/scraper.js +0 -243
- package/dist/utilities/storybook/storybook-manager.d.ts +0 -29
- package/dist/utilities/storybook/storybook-manager.js +0 -138
- package/dist/utilities/storybook/types.d.ts +0 -22
- package/dist/utilities/storybook/types.js +0 -1
- package/dist/utilities/styles.d.ts +0 -6
- package/dist/utilities/styles.js +0 -24
- package/dist/utilities/templates.d.ts +0 -12
- package/dist/utilities/templates.js +0 -28
- package/dist/utilities/tokens.d.ts +0 -1
- package/dist/utilities/tokens.js +0 -21
- package/dist/utilities/version.d.ts +0 -28
- package/dist/utilities/version.js +0 -21
- package/metadata/checksum.txt +0 -1
- package/metadata/davinci-migration/migration-guide.md +0 -1859
- package/metadata/packages/angular/LIMITATIONS.md +0 -32
- package/metadata/packages/angular/README.md +0 -393
- package/metadata/packages/assets/BREAKING_CHANGES.md +0 -305
- package/metadata/packages/assets/CHANGELOG.md +0 -374
- package/metadata/packages/assets/README.md +0 -103
- package/metadata/packages/components/components/syn-accordion/component.angular.ts +0 -80
- package/metadata/packages/components/components/syn-accordion/component.react.ts +0 -30
- package/metadata/packages/components/components/syn-accordion/component.styles.ts +0 -15
- package/metadata/packages/components/components/syn-accordion/component.ts +0 -111
- package/metadata/packages/components/components/syn-accordion/component.vue +0 -64
- package/metadata/packages/components/components/syn-alert/component.angular.ts +0 -169
- package/metadata/packages/components/components/syn-alert/component.react.ts +0 -60
- package/metadata/packages/components/components/syn-alert/component.styles.ts +0 -203
- package/metadata/packages/components/components/syn-alert/component.ts +0 -322
- package/metadata/packages/components/components/syn-alert/component.vue +0 -135
- package/metadata/packages/components/components/syn-badge/component.angular.ts +0 -53
- package/metadata/packages/components/components/syn-badge/component.custom.styles.ts +0 -62
- package/metadata/packages/components/components/syn-badge/component.react.ts +0 -29
- package/metadata/packages/components/components/syn-badge/component.styles.ts +0 -52
- package/metadata/packages/components/components/syn-badge/component.ts +0 -58
- package/metadata/packages/components/components/syn-badge/component.vue +0 -53
- package/metadata/packages/components/components/syn-breadcrumb/component.angular.ts +0 -58
- package/metadata/packages/components/components/syn-breadcrumb/component.custom.styles.ts +0 -5
- package/metadata/packages/components/components/syn-breadcrumb/component.react.ts +0 -32
- package/metadata/packages/components/components/syn-breadcrumb/component.styles.ts +0 -11
- package/metadata/packages/components/components/syn-breadcrumb/component.ts +0 -103
- package/metadata/packages/components/components/syn-breadcrumb/component.vue +0 -58
- package/metadata/packages/components/components/syn-breadcrumb-item/component.angular.ts +0 -88
- package/metadata/packages/components/components/syn-breadcrumb-item/component.custom.styles.ts +0 -78
- package/metadata/packages/components/components/syn-breadcrumb-item/component.react.ts +0 -37
- package/metadata/packages/components/components/syn-breadcrumb-item/component.styles.ts +0 -88
- package/metadata/packages/components/components/syn-breadcrumb-item/component.ts +0 -132
- package/metadata/packages/components/components/syn-breadcrumb-item/component.vue +0 -76
- package/metadata/packages/components/components/syn-button/component.angular.ts +0 -318
- package/metadata/packages/components/components/syn-button/component.custom.styles.ts +0 -245
- package/metadata/packages/components/components/syn-button/component.react.ts +0 -56
- package/metadata/packages/components/components/syn-button/component.styles.ts +0 -361
- package/metadata/packages/components/components/syn-button/component.ts +0 -315
- package/metadata/packages/components/components/syn-button/component.vue +0 -204
- package/metadata/packages/components/components/syn-button-group/component.angular.ts +0 -79
- package/metadata/packages/components/components/syn-button-group/component.custom.styles.ts +0 -5
- package/metadata/packages/components/components/syn-button-group/component.react.ts +0 -29
- package/metadata/packages/components/components/syn-button-group/component.styles.ts +0 -14
- package/metadata/packages/components/components/syn-button-group/component.ts +0 -171
- package/metadata/packages/components/components/syn-button-group/component.vue +0 -67
- package/metadata/packages/components/components/syn-card/component.angular.ts +0 -83
- package/metadata/packages/components/components/syn-card/component.custom.styles.ts +0 -60
- package/metadata/packages/components/components/syn-card/component.react.ts +0 -41
- package/metadata/packages/components/components/syn-card/component.styles.ts +0 -70
- package/metadata/packages/components/components/syn-card/component.ts +0 -65
- package/metadata/packages/components/components/syn-card/component.vue +0 -73
- package/metadata/packages/components/components/syn-checkbox/component.angular.ts +0 -273
- package/metadata/packages/components/components/syn-checkbox/component.react.ts +0 -64
- package/metadata/packages/components/components/syn-checkbox/component.styles.ts +0 -183
- package/metadata/packages/components/components/syn-checkbox/component.ts +0 -287
- package/metadata/packages/components/components/syn-checkbox/component.vue +0 -191
- package/metadata/packages/components/components/syn-combobox/component.angular.ts +0 -516
- package/metadata/packages/components/components/syn-combobox/component.react.ts +0 -118
- package/metadata/packages/components/components/syn-combobox/component.styles.ts +0 -393
- package/metadata/packages/components/components/syn-combobox/component.ts +0 -1684
- package/metadata/packages/components/components/syn-combobox/component.vue +0 -350
- package/metadata/packages/components/components/syn-details/component.angular.ts +0 -186
- package/metadata/packages/components/components/syn-details/component.react.ts +0 -65
- package/metadata/packages/components/components/syn-details/component.styles.ts +0 -181
- package/metadata/packages/components/components/syn-details/component.ts +0 -261
- package/metadata/packages/components/components/syn-details/component.vue +0 -136
- package/metadata/packages/components/components/syn-dialog/component.angular.ts +0 -201
- package/metadata/packages/components/components/syn-dialog/component.react.ts +0 -91
- package/metadata/packages/components/components/syn-dialog/component.styles.ts +0 -130
- package/metadata/packages/components/components/syn-dialog/component.ts +0 -367
- package/metadata/packages/components/components/syn-dialog/component.vue +0 -169
- package/metadata/packages/components/components/syn-divider/component.angular.ts +0 -55
- package/metadata/packages/components/components/syn-divider/component.react.ts +0 -29
- package/metadata/packages/components/components/syn-divider/component.styles.ts +0 -22
- package/metadata/packages/components/components/syn-divider/component.ts +0 -34
- package/metadata/packages/components/components/syn-divider/component.vue +0 -51
- package/metadata/packages/components/components/syn-drawer/component.angular.ts +0 -234
- package/metadata/packages/components/components/syn-drawer/component.custom.styles.ts +0 -78
- package/metadata/packages/components/components/syn-drawer/component.react.ts +0 -98
- package/metadata/packages/components/components/syn-drawer/component.styles.ts +0 -158
- package/metadata/packages/components/components/syn-drawer/component.ts +0 -489
- package/metadata/packages/components/components/syn-drawer/component.vue +0 -188
- package/metadata/packages/components/components/syn-dropdown/component.angular.ts +0 -208
- package/metadata/packages/components/components/syn-dropdown/component.react.ts +0 -59
- package/metadata/packages/components/components/syn-dropdown/component.styles.ts +0 -51
- package/metadata/packages/components/components/syn-dropdown/component.ts +0 -469
- package/metadata/packages/components/components/syn-dropdown/component.vue +0 -152
- package/metadata/packages/components/components/syn-file/component.angular.ts +0 -372
- package/metadata/packages/components/components/syn-file/component.react.ts +0 -85
- package/metadata/packages/components/components/syn-file/component.styles.ts +0 -197
- package/metadata/packages/components/components/syn-file/component.ts +0 -645
- package/metadata/packages/components/components/syn-file/component.vue +0 -256
- package/metadata/packages/components/components/syn-header/component.angular.ts +0 -149
- package/metadata/packages/components/components/syn-header/component.react.ts +0 -68
- package/metadata/packages/components/components/syn-header/component.styles.ts +0 -143
- package/metadata/packages/components/components/syn-header/component.ts +0 -310
- package/metadata/packages/components/components/syn-header/component.vue +0 -126
- package/metadata/packages/components/components/syn-icon/component.angular.ts +0 -115
- package/metadata/packages/components/components/syn-icon/component.custom.styles.ts +0 -5
- package/metadata/packages/components/components/syn-icon/component.react.ts +0 -41
- package/metadata/packages/components/components/syn-icon/component.styles.ts +0 -18
- package/metadata/packages/components/components/syn-icon/component.ts +0 -227
- package/metadata/packages/components/components/syn-icon/component.vue +0 -100
- package/metadata/packages/components/components/syn-icon-button/component.angular.ts +0 -185
- package/metadata/packages/components/components/syn-icon-button/component.custom.styles.ts +0 -79
- package/metadata/packages/components/components/syn-icon-button/component.react.ts +0 -42
- package/metadata/packages/components/components/syn-icon-button/component.styles.ts +0 -52
- package/metadata/packages/components/components/syn-icon-button/component.ts +0 -147
- package/metadata/packages/components/components/syn-icon-button/component.vue +0 -132
- package/metadata/packages/components/components/syn-input/component.angular.ts +0 -608
- package/metadata/packages/components/components/syn-input/component.custom.styles.ts +0 -278
- package/metadata/packages/components/components/syn-input/component.react.ts +0 -91
- package/metadata/packages/components/components/syn-input/component.styles.ts +0 -280
- package/metadata/packages/components/components/syn-input/component.ts +0 -941
- package/metadata/packages/components/components/syn-input/component.vue +0 -370
- package/metadata/packages/components/components/syn-menu/component.angular.ts +0 -52
- package/metadata/packages/components/components/syn-menu/component.react.ts +0 -36
- package/metadata/packages/components/components/syn-menu/component.styles.ts +0 -37
- package/metadata/packages/components/components/syn-menu/component.ts +0 -191
- package/metadata/packages/components/components/syn-menu/component.vue +0 -48
- package/metadata/packages/components/components/syn-menu-item/component.angular.ts +0 -121
- package/metadata/packages/components/components/syn-menu-item/component.react.ts +0 -45
- package/metadata/packages/components/components/syn-menu-item/component.styles.ts +0 -285
- package/metadata/packages/components/components/syn-menu-item/component.ts +0 -201
- package/metadata/packages/components/components/syn-menu-item/component.vue +0 -91
- package/metadata/packages/components/components/syn-menu-label/component.angular.ts +0 -48
- package/metadata/packages/components/components/syn-menu-label/component.react.ts +0 -35
- package/metadata/packages/components/components/syn-menu-label/component.styles.ts +0 -31
- package/metadata/packages/components/components/syn-menu-label/component.ts +0 -46
- package/metadata/packages/components/components/syn-menu-label/component.vue +0 -41
- package/metadata/packages/components/components/syn-nav-item/component.angular.ts +0 -242
- package/metadata/packages/components/components/syn-nav-item/component.react.ts +0 -82
- package/metadata/packages/components/components/syn-nav-item/component.styles.ts +0 -333
- package/metadata/packages/components/components/syn-nav-item/component.ts +0 -491
- package/metadata/packages/components/components/syn-nav-item/component.vue +0 -182
- package/metadata/packages/components/components/syn-optgroup/component.angular.ts +0 -79
- package/metadata/packages/components/components/syn-optgroup/component.react.ts +0 -41
- package/metadata/packages/components/components/syn-optgroup/component.styles.ts +0 -61
- package/metadata/packages/components/components/syn-optgroup/component.ts +0 -176
- package/metadata/packages/components/components/syn-optgroup/component.vue +0 -71
- package/metadata/packages/components/components/syn-option/component.angular.ts +0 -79
- package/metadata/packages/components/components/syn-option/component.react.ts +0 -37
- package/metadata/packages/components/components/syn-option/component.styles.ts +0 -165
- package/metadata/packages/components/components/syn-option/component.ts +0 -191
- package/metadata/packages/components/components/syn-option/component.vue +0 -71
- package/metadata/packages/components/components/syn-pagination/component.angular.ts +0 -201
- package/metadata/packages/components/components/syn-pagination/component.react.ts +0 -56
- package/metadata/packages/components/components/syn-pagination/component.styles.ts +0 -128
- package/metadata/packages/components/components/syn-pagination/component.ts +0 -452
- package/metadata/packages/components/components/syn-pagination/component.vue +0 -144
- package/metadata/packages/components/components/syn-popup/component.angular.ts +0 -372
- package/metadata/packages/components/components/syn-popup/component.react.ts +0 -55
- package/metadata/packages/components/components/syn-popup/component.styles.ts +0 -70
- package/metadata/packages/components/components/syn-popup/component.ts +0 -582
- package/metadata/packages/components/components/syn-popup/component.vue +0 -233
- package/metadata/packages/components/components/syn-prio-nav/component.angular.ts +0 -67
- package/metadata/packages/components/components/syn-prio-nav/component.react.ts +0 -54
- package/metadata/packages/components/components/syn-prio-nav/component.styles.ts +0 -48
- package/metadata/packages/components/components/syn-prio-nav/component.ts +0 -288
- package/metadata/packages/components/components/syn-prio-nav/component.vue +0 -60
- package/metadata/packages/components/components/syn-progress-bar/component.angular.ts +0 -85
- package/metadata/packages/components/components/syn-progress-bar/component.custom.styles.ts +0 -24
- package/metadata/packages/components/components/syn-progress-bar/component.react.ts +0 -37
- package/metadata/packages/components/components/syn-progress-bar/component.styles.ts +0 -87
- package/metadata/packages/components/components/syn-progress-bar/component.ts +0 -67
- package/metadata/packages/components/components/syn-progress-bar/component.vue +0 -71
- package/metadata/packages/components/components/syn-progress-ring/component.angular.ts +0 -72
- package/metadata/packages/components/components/syn-progress-ring/component.custom.styles.ts +0 -19
- package/metadata/packages/components/components/syn-progress-ring/component.react.ts +0 -37
- package/metadata/packages/components/components/syn-progress-ring/component.styles.ts +0 -70
- package/metadata/packages/components/components/syn-progress-ring/component.ts +0 -83
- package/metadata/packages/components/components/syn-progress-ring/component.vue +0 -66
- package/metadata/packages/components/components/syn-radio/component.angular.ts +0 -122
- package/metadata/packages/components/components/syn-radio/component.react.ts +0 -48
- package/metadata/packages/components/components/syn-radio/component.styles.ts +0 -179
- package/metadata/packages/components/components/syn-radio/component.ts +0 -131
- package/metadata/packages/components/components/syn-radio/component.vue +0 -104
- package/metadata/packages/components/components/syn-radio-button/component.angular.ts +0 -123
- package/metadata/packages/components/components/syn-radio-button/component.react.ts +0 -49
- package/metadata/packages/components/components/syn-radio-button/component.styles.ts +0 -30
- package/metadata/packages/components/components/syn-radio-button/component.ts +0 -142
- package/metadata/packages/components/components/syn-radio-button/component.vue +0 -105
- package/metadata/packages/components/components/syn-radio-group/component.angular.ts +0 -204
- package/metadata/packages/components/components/syn-radio-group/component.react.ts +0 -56
- package/metadata/packages/components/components/syn-radio-group/component.styles.ts +0 -58
- package/metadata/packages/components/components/syn-radio-group/component.ts +0 -440
- package/metadata/packages/components/components/syn-radio-group/component.vue +0 -158
- package/metadata/packages/components/components/syn-range/component.angular.ts +0 -347
- package/metadata/packages/components/components/syn-range/component.react.ts +0 -92
- package/metadata/packages/components/components/syn-range/component.styles.ts +0 -310
- package/metadata/packages/components/components/syn-range/component.ts +0 -933
- package/metadata/packages/components/components/syn-range/component.vue +0 -245
- package/metadata/packages/components/components/syn-range-tick/component.angular.ts +0 -59
- package/metadata/packages/components/components/syn-range-tick/component.react.ts +0 -33
- package/metadata/packages/components/components/syn-range-tick/component.styles.ts +0 -34
- package/metadata/packages/components/components/syn-range-tick/component.ts +0 -50
- package/metadata/packages/components/components/syn-range-tick/component.vue +0 -57
- package/metadata/packages/components/components/syn-resize-observer/component.styles.ts +0 -9
- package/metadata/packages/components/components/syn-resize-observer/component.ts +0 -91
- package/metadata/packages/components/components/syn-select/component.angular.ts +0 -439
- package/metadata/packages/components/components/syn-select/component.react.ts +0 -101
- package/metadata/packages/components/components/syn-select/component.styles.ts +0 -380
- package/metadata/packages/components/components/syn-select/component.ts +0 -1056
- package/metadata/packages/components/components/syn-select/component.vue +0 -301
- package/metadata/packages/components/components/syn-side-nav/component.angular.ts +0 -210
- package/metadata/packages/components/components/syn-side-nav/component.react.ts +0 -95
- package/metadata/packages/components/components/syn-side-nav/component.styles.ts +0 -142
- package/metadata/packages/components/components/syn-side-nav/component.ts +0 -458
- package/metadata/packages/components/components/syn-side-nav/component.vue +0 -188
- package/metadata/packages/components/components/syn-spinner/component.angular.ts +0 -44
- package/metadata/packages/components/components/syn-spinner/component.custom.styles.ts +0 -32
- package/metadata/packages/components/components/syn-spinner/component.react.ts +0 -31
- package/metadata/packages/components/components/syn-spinner/component.styles.ts +0 -48
- package/metadata/packages/components/components/syn-spinner/component.ts +0 -35
- package/metadata/packages/components/components/syn-spinner/component.vue +0 -35
- package/metadata/packages/components/components/syn-switch/component.angular.ts +0 -257
- package/metadata/packages/components/components/syn-switch/component.react.ts +0 -63
- package/metadata/packages/components/components/syn-switch/component.styles.ts +0 -252
- package/metadata/packages/components/components/syn-switch/component.ts +0 -279
- package/metadata/packages/components/components/syn-switch/component.vue +0 -183
- package/metadata/packages/components/components/syn-tab/component.angular.ts +0 -109
- package/metadata/packages/components/components/syn-tab/component.custom.styles.ts +0 -94
- package/metadata/packages/components/components/syn-tab/component.react.ts +0 -42
- package/metadata/packages/components/components/syn-tab/component.styles.ts +0 -70
- package/metadata/packages/components/components/syn-tab/component.ts +0 -125
- package/metadata/packages/components/components/syn-tab/component.vue +0 -91
- package/metadata/packages/components/components/syn-tab-group/component.angular.ts +0 -166
- package/metadata/packages/components/components/syn-tab-group/component.custom.styles.ts +0 -218
- package/metadata/packages/components/components/syn-tab-group/component.react.ts +0 -58
- package/metadata/packages/components/components/syn-tab-group/component.styles.ts +0 -193
- package/metadata/packages/components/components/syn-tab-group/component.ts +0 -551
- package/metadata/packages/components/components/syn-tab-group/component.vue +0 -126
- package/metadata/packages/components/components/syn-tab-panel/component.angular.ts +0 -68
- package/metadata/packages/components/components/syn-tab-panel/component.custom.styles.ts +0 -8
- package/metadata/packages/components/components/syn-tab-panel/component.react.ts +0 -31
- package/metadata/packages/components/components/syn-tab-panel/component.styles.ts +0 -20
- package/metadata/packages/components/components/syn-tab-panel/component.ts +0 -60
- package/metadata/packages/components/components/syn-tab-panel/component.vue +0 -60
- package/metadata/packages/components/components/syn-tag/component.angular.ts +0 -83
- package/metadata/packages/components/components/syn-tag/component.custom.styles.ts +0 -121
- package/metadata/packages/components/components/syn-tag/component.react.ts +0 -43
- package/metadata/packages/components/components/syn-tag/component.styles.ts +0 -58
- package/metadata/packages/components/components/syn-tag/component.ts +0 -83
- package/metadata/packages/components/components/syn-tag/component.vue +0 -81
- package/metadata/packages/components/components/syn-tag-group/component.angular.ts +0 -83
- package/metadata/packages/components/components/syn-tag-group/component.react.ts +0 -33
- package/metadata/packages/components/components/syn-tag-group/component.styles.ts +0 -49
- package/metadata/packages/components/components/syn-tag-group/component.ts +0 -95
- package/metadata/packages/components/components/syn-tag-group/component.vue +0 -69
- package/metadata/packages/components/components/syn-textarea/component.angular.ts +0 -396
- package/metadata/packages/components/components/syn-textarea/component.react.ts +0 -60
- package/metadata/packages/components/components/syn-textarea/component.styles.ts +0 -208
- package/metadata/packages/components/components/syn-textarea/component.ts +0 -400
- package/metadata/packages/components/components/syn-textarea/component.vue +0 -244
- package/metadata/packages/components/components/syn-tooltip/component.angular.ts +0 -196
- package/metadata/packages/components/components/syn-tooltip/component.react.ts +0 -63
- package/metadata/packages/components/components/syn-tooltip/component.styles.ts +0 -62
- package/metadata/packages/components/components/syn-tooltip/component.ts +0 -312
- package/metadata/packages/components/components/syn-tooltip/component.vue +0 -150
- package/metadata/packages/components/components/syn-validate/component.angular.ts +0 -137
- package/metadata/packages/components/components/syn-validate/component.react.ts +0 -44
- package/metadata/packages/components/components/syn-validate/component.styles.ts +0 -9
- package/metadata/packages/components/components/syn-validate/component.ts +0 -590
- package/metadata/packages/components/components/syn-validate/component.vue +0 -107
- package/metadata/packages/components/migration/BREAKING_CHANGES.md +0 -908
- package/metadata/packages/components/static/CHANGELOG.md +0 -2155
- package/metadata/packages/components/static/LIMITATIONS.md +0 -433
- package/metadata/packages/components/static/README.md +0 -231
- package/metadata/packages/fonts/CHANGELOG.md +0 -57
- package/metadata/packages/fonts/README.md +0 -164
- package/metadata/packages/fonts/package.json +0 -72
- package/metadata/packages/react/LIMITATIONS.md +0 -31
- package/metadata/packages/react/README.md +0 -262
- package/metadata/packages/styles/BREAKING_CHANGES.md +0 -105
- package/metadata/packages/styles/CHANGELOG.md +0 -188
- package/metadata/packages/styles/README.md +0 -132
- package/metadata/packages/styles/index.css +0 -300
- package/metadata/packages/styles/link-list.css +0 -47
- package/metadata/packages/styles/link.css +0 -81
- package/metadata/packages/styles/tables.css +0 -132
- package/metadata/packages/styles/typography.css +0 -52
- package/metadata/packages/tokens/BREAKING_CHANGES.md +0 -180
- package/metadata/packages/tokens/CHANGELOG.md +0 -959
- package/metadata/packages/tokens/README.md +0 -435
- package/metadata/packages/tokens/dark.css +0 -454
- package/metadata/packages/tokens/index.js +0 -2224
- package/metadata/packages/tokens/light.css +0 -454
- package/metadata/packages/tokens/sick2018_dark.css +0 -454
- package/metadata/packages/tokens/sick2018_light.css +0 -454
- package/metadata/packages/tokens/sick2025_dark.css +0 -454
- package/metadata/packages/tokens/sick2025_light.css +0 -454
- package/metadata/packages/vue/LIMITATIONS.md +0 -53
- package/metadata/packages/vue/README.md +0 -252
- package/metadata/static/assets/index.md +0 -10
- package/metadata/static/components/index.md +0 -10
- package/metadata/static/components/syn-accordion/docs.md +0 -449
- package/metadata/static/components/syn-alert/docs.md +0 -282
- package/metadata/static/components/syn-badge/docs.md +0 -106
- package/metadata/static/components/syn-breadcrumb/docs.md +0 -265
- package/metadata/static/components/syn-breadcrumb-item/docs.md +0 -49
- package/metadata/static/components/syn-button/docs.md +0 -472
- package/metadata/static/components/syn-button-group/docs.md +0 -259
- package/metadata/static/components/syn-card/docs.md +0 -314
- package/metadata/static/components/syn-checkbox/docs.md +0 -176
- package/metadata/static/components/syn-combobox/docs.md +0 -2633
- package/metadata/static/components/syn-details/docs.md +0 -227
- package/metadata/static/components/syn-dialog/docs.md +0 -220
- package/metadata/static/components/syn-divider/docs.md +0 -77
- package/metadata/static/components/syn-drawer/docs.md +0 -269
- package/metadata/static/components/syn-dropdown/docs.md +0 -316
- package/metadata/static/components/syn-file/docs.md +0 -239
- package/metadata/static/components/syn-header/docs.md +0 -209
- package/metadata/static/components/syn-icon/docs.md +0 -177
- package/metadata/static/components/syn-icon-button/docs.md +0 -142
- package/metadata/static/components/syn-input/docs.md +0 -462
- package/metadata/static/components/syn-menu/docs.md +0 -162
- package/metadata/static/components/syn-menu-item/docs.md +0 -216
- package/metadata/static/components/syn-menu-label/docs.md +0 -29
- package/metadata/static/components/syn-nav-item/docs.md +0 -166
- package/metadata/static/components/syn-optgroup/docs.md +0 -167
- package/metadata/static/components/syn-option/docs.md +0 -137
- package/metadata/static/components/syn-pagination/docs.md +0 -102
- package/metadata/static/components/syn-popup/docs.md +0 -812
- package/metadata/static/components/syn-prio-nav/docs.md +0 -54
- package/metadata/static/components/syn-progress-bar/docs.md +0 -77
- package/metadata/static/components/syn-progress-ring/docs.md +0 -89
- package/metadata/static/components/syn-radio/docs.md +0 -178
- package/metadata/static/components/syn-radio-group/docs.md +0 -484
- package/metadata/static/components/syn-range/docs.md +0 -438
- package/metadata/static/components/syn-range-tick/docs.md +0 -110
- package/metadata/static/components/syn-select/docs.md +0 -811
- package/metadata/static/components/syn-side-nav/docs.md +0 -593
- package/metadata/static/components/syn-spinner/docs.md +0 -45
- package/metadata/static/components/syn-switch/docs.md +0 -121
- package/metadata/static/components/syn-tab/docs.md +0 -47
- package/metadata/static/components/syn-tab-group/docs.md +0 -1094
- package/metadata/static/components/syn-tab-panel/docs.md +0 -91
- package/metadata/static/components/syn-tag/docs.md +0 -50
- package/metadata/static/components/syn-tag-group/docs.md +0 -269
- package/metadata/static/components/syn-textarea/docs.md +0 -215
- package/metadata/static/components/syn-tooltip/docs.md +0 -217
- package/metadata/static/components/syn-validate/docs.md +0 -305
- package/metadata/static/fonts/index.md +0 -4
- package/metadata/static/migration/index.md +0 -57
- package/metadata/static/migration/v2-2018-to-v2-2025.md +0 -481
- package/metadata/static/migration/v2-2018-to-v3-2018.md +0 -147
- package/metadata/static/migration/v2-2018-to-v3-2025.md +0 -150
- package/metadata/static/migration/v2-2025-to-v3-2025.md +0 -133
- package/metadata/static/setup/icon-usage.md +0 -411
- package/metadata/static/setup/prerequisites.md +0 -319
- package/metadata/static/styles/syn-body.md +0 -5
- package/metadata/static/styles/syn-heading.md +0 -5
- package/metadata/static/styles/syn-link-list.md +0 -325
- package/metadata/static/styles/syn-link.md +0 -156
- package/metadata/static/styles/syn-table-cell.md +0 -127
- package/metadata/static/styles/syn-table.md +0 -201
- package/metadata/static/styles/syn-weight.md +0 -5
- package/metadata/static/templates/appshell.md +0 -2053
- package/metadata/static/templates/breadcrumb.md +0 -379
- package/metadata/static/templates/footer.md +0 -340
- package/metadata/static/templates/forms.md +0 -558
- package/metadata/static/templates/localization.md +0 -279
- package/metadata/static/templates/table.md +0 -1425
- package/metadata/static/templates/tag-group.md +0 -833
- /package/dist/{build/build.d.ts → utilities/logging-types.js} +0 -0
- /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
|
-
|
|
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
|
|
17
|
+
The package ships a `syn-mcp` binary:
|
|
20
18
|
|
|
21
19
|
```bash
|
|
22
|
-
# Run
|
|
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
|
|
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
|
|
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
|
-
- **
|
|
65
|
-
- **
|
|
66
|
-
- **
|
|
67
|
-
- **
|
|
68
|
-
- **
|
|
69
|
-
- **Migration
|
|
70
|
-
- **
|
|
71
|
-
- **
|
|
72
|
-
|
|
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
|
|
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:**
|
|
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-
|
|
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
|
-
|
|
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
|
|
97
|
-
- `framework` (string, optional):
|
|
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
|
|
102
|
-
- "Show me the syn-
|
|
103
|
-
- "
|
|
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
|
-
###
|
|
461
|
+
### 4. `asset-list`
|
|
107
462
|
|
|
108
|
-
**Description:** Get the available
|
|
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
|
|
469
|
+
- "What icon sets are available?"
|
|
115
470
|
- "Show me all available icon libraries"
|
|
116
|
-
- "List all
|
|
471
|
+
- "List all Synergy icon sets"
|
|
117
472
|
|
|
118
|
-
###
|
|
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
|
|
125
|
-
- `iconset` (string, optional):
|
|
126
|
-
- `limit` (number, optional): Maximum number of icons to return.
|
|
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
|
|
131
|
-
- "
|
|
132
|
-
- "List 10 icons from the
|
|
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
|
-
###
|
|
489
|
+
### 6. `token-info`
|
|
136
490
|
|
|
137
|
-
**Description:** Get
|
|
491
|
+
**Description:** Get raw design token file contents from the Synergy Design System.
|
|
138
492
|
|
|
139
493
|
**Parameters:**
|
|
140
494
|
|
|
141
|
-
- `type` (string, optional):
|
|
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
|
|
146
|
-
- "
|
|
147
|
-
- "
|
|
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
|
-
###
|
|
504
|
+
### 7. `tokens-list`
|
|
150
505
|
|
|
151
|
-
**Description:** Outputs a list of available
|
|
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
|
-
###
|
|
528
|
+
### 9. `styles-info`
|
|
162
529
|
|
|
163
530
|
**Description:** Get information about CSS utilities available in the Synergy Design System.
|
|
164
531
|
|
|
165
|
-
**Parameters:**
|
|
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
|
|
170
|
-
- "What
|
|
171
|
-
- "Tell me about
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
|
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
|
-
###
|
|
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:**
|
|
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
|
|
579
|
+
- "Show me all available DaVinci migration entries"
|
|
209
580
|
- "List components with migration information"
|
|
210
581
|
|
|
211
|
-
###
|
|
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
|
|
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
|
-
###
|
|
597
|
+
### 14. `migration-list`
|
|
226
598
|
|
|
227
|
-
**Description:**
|
|
599
|
+
**Description:** List available migration documents for a Synergy package in a compact, token-efficient format.
|
|
228
600
|
|
|
229
601
|
**Parameters:**
|
|
230
602
|
|
|
231
|
-
- `
|
|
232
|
-
|
|
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
|
-
- "
|
|
237
|
-
- "Show me
|
|
238
|
-
- "What
|
|
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
|
-
###
|
|
616
|
+
### 15. `migration-info`
|
|
242
617
|
|
|
243
|
-
**Description:**
|
|
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
|
-
- `
|
|
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
|
-
**
|
|
625
|
+
**Behavior:**
|
|
250
626
|
|
|
251
|
-
- For
|
|
252
|
-
|
|
253
|
-
|
|
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
|
|
260
|
-
- "Show me
|
|
261
|
-
- "
|
|
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
|
-
###
|
|
637
|
+
### 16. `setup`
|
|
264
638
|
|
|
265
|
-
**Description:** Get
|
|
639
|
+
**Description:** Get setup information for a Synergy package. Framework packages automatically include base components setup.
|
|
266
640
|
|
|
267
641
|
**Parameters:**
|
|
268
642
|
|
|
269
|
-
- `
|
|
270
|
-
- `
|
|
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
|
-
**
|
|
646
|
+
**Example prompts:**
|
|
273
647
|
|
|
274
|
-
-
|
|
275
|
-
|
|
276
|
-
|
|
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
|
-
|
|
652
|
+
## Usage Examples
|
|
281
653
|
|
|
282
|
-
|
|
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
|
-
|
|
656
|
+
```bash
|
|
657
|
+
# Start the MCP server
|
|
658
|
+
syn-mcp
|
|
287
659
|
|
|
288
|
-
|
|
660
|
+
# Start with custom defaults
|
|
661
|
+
syn-mcp --config ./synergy-mcp.json
|
|
662
|
+
```
|
|
289
663
|
|
|
290
|
-
|
|
664
|
+
### Programmatic Usage
|
|
291
665
|
|
|
292
|
-
|
|
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
|
-
|
|
295
|
-
|
|
296
|
-
|
|
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
|
-
│
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
│ ├──
|
|
310
|
-
│ ├──
|
|
311
|
-
│ ├──
|
|
312
|
-
│ ├──
|
|
313
|
-
│
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
├──
|
|
317
|
-
├──
|
|
318
|
-
│ ├──
|
|
319
|
-
│ ├──
|
|
320
|
-
│ ├──
|
|
321
|
-
│
|
|
322
|
-
|
|
323
|
-
│ ├──
|
|
324
|
-
│ ├──
|
|
325
|
-
│ ├──
|
|
326
|
-
│ ├──
|
|
327
|
-
│ ├──
|
|
328
|
-
│ ├──
|
|
329
|
-
│ ├──
|
|
330
|
-
│ ├──
|
|
331
|
-
│ ├──
|
|
332
|
-
│ ├──
|
|
333
|
-
│
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
├──
|
|
350
|
-
├──
|
|
351
|
-
├──
|
|
352
|
-
|
|
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
|
|
823
|
+
The package currently exposes these development scripts:
|
|
358
824
|
|
|
359
825
|
```bash
|
|
360
|
-
#
|
|
826
|
+
# Compile TypeScript into dist/
|
|
361
827
|
pnpm build
|
|
362
828
|
|
|
363
|
-
#
|
|
364
|
-
pnpm
|
|
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
|
|
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
|
|
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
|
-
###
|
|
857
|
+
### Token Watermarks
|
|
384
858
|
|
|
385
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
872
|
+
Recommended workflow:
|
|
406
873
|
|
|
407
|
-
1.
|
|
408
|
-
2.
|
|
409
|
-
3.
|
|
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
|
-
|
|
878
|
+
### Development Workflow
|
|
413
879
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
889
|
+
### Setting up the MCP Inspector for local debugging
|
|
444
890
|
|
|
445
|
-
|
|
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
|
-
|
|
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
|
-
|
|
895
|
+
To test the STDIO transport, use the following values:
|
|
453
896
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
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
|
-
|
|
901
|
+
#### HTTP transport
|
|
463
902
|
|
|
464
|
-
|
|
903
|
+
To test the http transport, use the following values:
|
|
465
904
|
|
|
466
|
-
|
|
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
|
-
|
|
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
|
-
|
|
911
|
+
The MCP server is intentionally small:
|
|
474
912
|
|
|
475
|
-
- `
|
|
476
|
-
- `
|
|
477
|
-
- `
|
|
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
|
-
|
|
921
|
+
#### Middleware Pipeline
|
|
480
922
|
|
|
481
|
-
|
|
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
|
-
|
|
495
|
-
const isValid = await verifyFolderChecksum("./metadata");
|
|
496
|
-
```
|
|
925
|
+
Current stack (in declaration order):
|
|
497
926
|
|
|
498
|
-
|
|
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
|
-
|
|
931
|
+
**Note:** Compression runs before logging so token counts reflect the compressed payload size.
|
|
501
932
|
|
|
502
|
-
|
|
933
|
+
All middlewares share the `ToolMiddleware<TArgs>` type from `src/middleware/types.ts`:
|
|
503
934
|
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
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
|
-
|
|
942
|
+
The `ToolMiddlewareContext` carries the **full runtime config** (`McpRuntimeConfig`), so any middleware can read its own config key without additional plumbing:
|
|
513
943
|
|
|
514
|
-
|
|
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
|
-
|
|
518
|
-
|
|
961
|
+
npm install @toon-format/toon
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
**Usage:**
|
|
519
965
|
|
|
520
|
-
|
|
966
|
+
```bash
|
|
967
|
+
syn-mcp --compression toon
|
|
521
968
|
```
|
|
522
969
|
|
|
523
|
-
|
|
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 {
|
|
527
|
-
import {
|
|
1004
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
1005
|
+
import { listThings } from "@synergy-design-system/metadata";
|
|
528
1006
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
const
|
|
532
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1048
|
+
Example:
|
|
551
1049
|
|
|
552
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1084
|
+
The package exposes the `syn-mcp` binary via `package.json`:
|
|
562
1085
|
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
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
|
-
---
|