@ncds/ui-admin-mcp 1.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +113 -0
  2. package/bin/components.bundle.js +1 -0
  3. package/bin/definitions/compliance-rules.json +64 -0
  4. package/bin/definitions/instructions.md +164 -0
  5. package/bin/definitions/js-api.json +165 -0
  6. package/bin/definitions/rules.json +59 -0
  7. package/bin/definitions/token-descriptions.json +27 -0
  8. package/bin/definitions/tool-definitions.json +58 -0
  9. package/bin/server.d.ts +1 -0
  10. package/bin/server.js +217 -0
  11. package/bin/server.mjs +8 -0
  12. package/bin/tools/getComponentProps.d.ts +4 -0
  13. package/bin/tools/getComponentProps.js +20 -0
  14. package/bin/tools/getDesignTokens.d.ts +13 -0
  15. package/bin/tools/getDesignTokens.js +20 -0
  16. package/bin/tools/listComponents.d.ts +16 -0
  17. package/bin/tools/listComponents.js +24 -0
  18. package/bin/tools/listIcons.d.ts +22 -0
  19. package/bin/tools/listIcons.js +23 -0
  20. package/bin/tools/ping.d.ts +17 -0
  21. package/bin/tools/ping.js +20 -0
  22. package/bin/tools/renderToHtml.d.ts +23 -0
  23. package/bin/tools/renderToHtml.js +267 -0
  24. package/bin/tools/searchComponent.d.ts +4 -0
  25. package/bin/tools/searchComponent.js +33 -0
  26. package/bin/tools/searchIcon.d.ts +7 -0
  27. package/bin/tools/searchIcon.js +19 -0
  28. package/bin/tools/validateHtml.d.ts +18 -0
  29. package/bin/tools/validateHtml.js +85 -0
  30. package/bin/types.d.ts +123 -0
  31. package/bin/types.js +5 -0
  32. package/bin/utils/bemValidator.d.ts +36 -0
  33. package/bin/utils/bemValidator.js +198 -0
  34. package/bin/utils/compliance.d.ts +52 -0
  35. package/bin/utils/compliance.js +199 -0
  36. package/bin/utils/dataLoader.d.ts +35 -0
  37. package/bin/utils/dataLoader.js +192 -0
  38. package/bin/utils/domEnvironment.d.ts +9 -0
  39. package/bin/utils/domEnvironment.js +75 -0
  40. package/bin/utils/fuzzyMatch.d.ts +21 -0
  41. package/bin/utils/fuzzyMatch.js +110 -0
  42. package/bin/utils/logger.d.ts +18 -0
  43. package/bin/utils/logger.js +27 -0
  44. package/bin/utils/response.d.ts +28 -0
  45. package/bin/utils/response.js +39 -0
  46. package/bin/utils/tokenValidator.d.ts +24 -0
  47. package/bin/utils/tokenValidator.js +162 -0
  48. package/bin/version.d.ts +4 -0
  49. package/bin/version.js +7 -0
  50. package/data/_icons.json +12401 -0
  51. package/data/_meta.json +12 -0
  52. package/data/_tokens.json +661 -0
  53. package/data/badge-group.json +295 -0
  54. package/data/badge.json +246 -0
  55. package/data/bread-crumb.json +87 -0
  56. package/data/button-group.json +94 -0
  57. package/data/button.json +259 -0
  58. package/data/carousel-arrow.json +87 -0
  59. package/data/carousel-number-group.json +87 -0
  60. package/data/checkbox.json +99 -0
  61. package/data/combo-box.json +173 -0
  62. package/data/date-picker.json +123 -0
  63. package/data/divider.json +91 -0
  64. package/data/dot.json +103 -0
  65. package/data/dropdown.json +258 -0
  66. package/data/empty-state.json +227 -0
  67. package/data/featured-icon.json +139 -0
  68. package/data/file-input.json +315 -0
  69. package/data/horizontal-tab.json +329 -0
  70. package/data/image-file-input.json +339 -0
  71. package/data/input-base.json +299 -0
  72. package/data/modal.json +143 -0
  73. package/data/notification.json +194 -0
  74. package/data/number-input.json +295 -0
  75. package/data/pagination.json +101 -0
  76. package/data/password-input.json +263 -0
  77. package/data/progress-bar.json +109 -0
  78. package/data/progress-circle.json +96 -0
  79. package/data/radio.json +86 -0
  80. package/data/range-date-picker-with-buttons.json +273 -0
  81. package/data/range-date-picker.json +259 -0
  82. package/data/select-box.json +193 -0
  83. package/data/select.json +132 -0
  84. package/data/slider.json +100 -0
  85. package/data/spinner.json +93 -0
  86. package/data/switch.json +156 -0
  87. package/data/tag.json +159 -0
  88. package/data/textarea.json +96 -0
  89. package/data/toggle.json +102 -0
  90. package/data/tooltip.json +185 -0
  91. package/data/vertical-tab.json +314 -0
  92. package/package.json +61 -0
  93. package/templates/.mcp.json.example +8 -0
  94. package/templates/README.md +30 -0
@@ -0,0 +1,314 @@
1
+ {
2
+ "name": "vertical-tab",
3
+ "exportName": "VerticalTab",
4
+ "importPath": "@ncds/ui-admin",
5
+ "jsRequired": true,
6
+ "category": "navigation",
7
+ "description": "VerticalTab은 동일한 계층 구조의 관련 콘텐츠를 그룹화하여 동일 화면 내에서 콘텐츠를 전환하는 내비게이션 UI 컴포넌트입니다.",
8
+ "aliases": [
9
+ "VerticalTab",
10
+ "세로탭",
11
+ "탭",
12
+ "Tab",
13
+ "수직탭",
14
+ "콘텐츠전환",
15
+ "설정페이지",
16
+ "좌측네비게이션",
17
+ "Badge",
18
+ "SPA",
19
+ "네비게이션",
20
+ "NCDS",
21
+ "breakPoint",
22
+ "반응형",
23
+ "Select전환"
24
+ ],
25
+ "hasChildren": false,
26
+ "whenToUse": [
27
+ "좌측 영역에서 수직 방향으로 콘텐츠를 전환하는 내비게이션",
28
+ "설정 페이지, 계정 관리, 관리자 메뉴 등 좌측 네비게이션 성격의 콘텐츠 그룹 전환",
29
+ "SPA 기준 라우팅 변경으로 동작"
30
+ ],
31
+ "forbiddenRules": [
32
+ "1개 항목만 있는 경우 사용 금지",
33
+ "좌측 네비게이션과 혼동되도록 과도한 확장 금지",
34
+ "페이지 이동용 GNB처럼 사용 금지",
35
+ "이미지 사용 금지",
36
+ "장식 아이콘 사용 금지",
37
+ "서로 다른 계층 혼합 금지",
38
+ "페이지 리로드 금지",
39
+ "과도한 컬러 사용 금지"
40
+ ],
41
+ "seeAlso": [
42
+ "horizontal-tab",
43
+ "badge"
44
+ ],
45
+ "props": {
46
+ "activeTab": {
47
+ "type": "string",
48
+ "required": false
49
+ },
50
+ "breakPoint": {
51
+ "type": "enum",
52
+ "required": false,
53
+ "values": [
54
+ "mobile",
55
+ "pc"
56
+ ],
57
+ "default": "pc"
58
+ },
59
+ "menus": {
60
+ "type": "object",
61
+ "required": false,
62
+ "rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/components/tab/TabButton\").TabButtonProps[] | undefined",
63
+ "properties": {
64
+ "id": {
65
+ "type": "string",
66
+ "required": false
67
+ },
68
+ "label": {
69
+ "type": "string",
70
+ "required": false
71
+ },
72
+ "size": {
73
+ "type": "enum",
74
+ "required": false,
75
+ "values": [
76
+ "lg",
77
+ "md",
78
+ "sm"
79
+ ]
80
+ },
81
+ "tabButtonType": {
82
+ "type": "enum",
83
+ "required": false,
84
+ "values": [
85
+ "button-primary",
86
+ "button-white",
87
+ "line-vertical",
88
+ "underline",
89
+ "underline-fill"
90
+ ]
91
+ },
92
+ "isActive": {
93
+ "type": "boolean",
94
+ "required": false
95
+ },
96
+ "badgeInfo": {
97
+ "type": "object",
98
+ "required": false,
99
+ "rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/components/badge/Badge\").BadgeProps | undefined",
100
+ "properties": {
101
+ "label": {
102
+ "type": "string",
103
+ "required": true
104
+ },
105
+ "type": {
106
+ "type": "enum",
107
+ "required": false,
108
+ "values": [
109
+ "pill-dark-color",
110
+ "pill-outline"
111
+ ]
112
+ },
113
+ "color": {
114
+ "type": "enum",
115
+ "required": false,
116
+ "values": [
117
+ "blue",
118
+ "disabled",
119
+ "error",
120
+ "neutral",
121
+ "pink",
122
+ "success",
123
+ "warning"
124
+ ]
125
+ },
126
+ "className": {
127
+ "type": "string",
128
+ "required": false
129
+ },
130
+ "leadingIcon": {
131
+ "type": "object",
132
+ "required": false,
133
+ "rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
134
+ "properties": {
135
+ "type": {
136
+ "type": "string",
137
+ "required": true,
138
+ "rawType": "\"icon\""
139
+ },
140
+ "icon": {
141
+ "type": "function",
142
+ "required": false
143
+ },
144
+ "color": {
145
+ "type": "enum",
146
+ "required": false,
147
+ "values": [
148
+ "black",
149
+ "blue500",
150
+ "blue600",
151
+ "currentColor",
152
+ "gray100",
153
+ "gray200",
154
+ "gray300",
155
+ "gray400",
156
+ "gray500",
157
+ "gray600",
158
+ "gray700",
159
+ "green500",
160
+ "green600",
161
+ "orange500",
162
+ "orange600",
163
+ "pink100",
164
+ "pink600",
165
+ "red500",
166
+ "red600",
167
+ "secondary-gray-blue-100",
168
+ "secondary-gray-blue-200",
169
+ "secondary-gray-blue-300",
170
+ "secondary-gray-blue-400",
171
+ "secondary-gray-blue-450",
172
+ "secondary-gray-blue-50",
173
+ "secondary-gray-blue-500",
174
+ "secondary-gray-blue-600",
175
+ "secondary-gray-blue-700",
176
+ "violet300",
177
+ "violet600",
178
+ "white",
179
+ "yellow600"
180
+ ]
181
+ },
182
+ "size": {
183
+ "type": "number",
184
+ "required": false
185
+ },
186
+ "children": {
187
+ "type": "ReactNode",
188
+ "required": false
189
+ }
190
+ }
191
+ },
192
+ "trailingIcon": {
193
+ "type": "object",
194
+ "required": false,
195
+ "rawType": "import(\"/Users/nhncommerce/Desktop/company/ai-driven-ncds/packages/ui-admin/src/types/side-slot\").SideSlotType | undefined",
196
+ "properties": {
197
+ "type": {
198
+ "type": "string",
199
+ "required": true,
200
+ "rawType": "\"icon\""
201
+ },
202
+ "icon": {
203
+ "type": "function",
204
+ "required": false
205
+ },
206
+ "color": {
207
+ "type": "enum",
208
+ "required": false,
209
+ "values": [
210
+ "black",
211
+ "blue500",
212
+ "blue600",
213
+ "currentColor",
214
+ "gray100",
215
+ "gray200",
216
+ "gray300",
217
+ "gray400",
218
+ "gray500",
219
+ "gray600",
220
+ "gray700",
221
+ "green500",
222
+ "green600",
223
+ "orange500",
224
+ "orange600",
225
+ "pink100",
226
+ "pink600",
227
+ "red500",
228
+ "red600",
229
+ "secondary-gray-blue-100",
230
+ "secondary-gray-blue-200",
231
+ "secondary-gray-blue-300",
232
+ "secondary-gray-blue-400",
233
+ "secondary-gray-blue-450",
234
+ "secondary-gray-blue-50",
235
+ "secondary-gray-blue-500",
236
+ "secondary-gray-blue-600",
237
+ "secondary-gray-blue-700",
238
+ "violet300",
239
+ "violet600",
240
+ "white",
241
+ "yellow600"
242
+ ]
243
+ },
244
+ "size": {
245
+ "type": "number",
246
+ "required": false
247
+ },
248
+ "children": {
249
+ "type": "ReactNode",
250
+ "required": false
251
+ }
252
+ }
253
+ },
254
+ "size": {
255
+ "type": "enum",
256
+ "required": false,
257
+ "values": [
258
+ "md",
259
+ "sm",
260
+ "xs"
261
+ ]
262
+ }
263
+ }
264
+ },
265
+ "className": {
266
+ "type": "string",
267
+ "required": false
268
+ },
269
+ "children": {
270
+ "type": "ReactNode",
271
+ "required": false
272
+ },
273
+ "onClick": {
274
+ "type": "function",
275
+ "required": false
276
+ }
277
+ }
278
+ },
279
+ "onSelect": {
280
+ "type": "function",
281
+ "required": false
282
+ },
283
+ "type": {
284
+ "type": "enum",
285
+ "required": false,
286
+ "values": [
287
+ "button-primary",
288
+ "button-white",
289
+ "line-vertical"
290
+ ],
291
+ "default": "button-primary"
292
+ }
293
+ },
294
+ "html": {},
295
+ "bemClasses": [
296
+ "ncua-vertical-tab",
297
+ "ncua-vertical-tab--button-primary",
298
+ "ncua-vertical-tab--button-white",
299
+ "ncua-vertical-tab--line-vertical",
300
+ "ncua-vertical-tab--mobile",
301
+ "ncua-vertical-tab--pc"
302
+ ],
303
+ "usage": {
304
+ "import": "import { VerticalTab } from '@ncds/ui-admin';",
305
+ "react": {
306
+ "default": "<VerticalTab />",
307
+ "breakPoint:mobile": "<VerticalTab breakPoint=\"mobile\" />",
308
+ "breakPoint:pc": "<VerticalTab breakPoint=\"pc\" />",
309
+ "type:button-primary": "<VerticalTab type=\"button-primary\" />",
310
+ "type:button-white": "<VerticalTab type=\"button-white\" />",
311
+ "type:line-vertical": "<VerticalTab type=\"line-vertical\" />"
312
+ }
313
+ }
314
+ }
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@ncds/ui-admin-mcp",
3
+ "version": "1.0.0-alpha.10",
4
+ "description": "NCDS UI Admin MCP 서버 — AI 에이전트가 NCUA 컴포넌트를 조회하고 HTML을 검증할 수 있는 MCP 서버",
5
+ "bin": {
6
+ "ncua-mcp": "./bin/server.mjs"
7
+ },
8
+ "files": [
9
+ "bin",
10
+ "data",
11
+ "templates",
12
+ "README.md"
13
+ ],
14
+ "engines": {
15
+ "node": ">=20"
16
+ },
17
+ "scripts": {
18
+ "extract": "tsx scripts/extract-mcp-data.ts",
19
+ "extract:icons": "tsx scripts/extract-icons.ts",
20
+ "extract:tokens": "tsx scripts/extract-design-tokens.ts",
21
+ "generate:cdn-meta": "tsx scripts/generate-cdn-meta.ts",
22
+ "build:bundle": "tsx scripts/build-bundle.ts",
23
+ "build:server": "tsc --project tsconfig.json && rm -rf bin/definitions && cp -r src/definitions bin/definitions",
24
+ "build": "yarn extract && yarn extract:icons && yarn extract:tokens && yarn generate:cdn-meta && yarn build:bundle && yarn build:server",
25
+ "test": "vitest run --config vitest.config.ts",
26
+ "test:coverage": "vitest run --coverage --config vitest.config.ts",
27
+ "publish:npm": "npm publish --access=public"
28
+ },
29
+ "keywords": [
30
+ "ncds",
31
+ "nhn-commerce",
32
+ "design-system",
33
+ "mcp",
34
+ "model-context-protocol"
35
+ ],
36
+ "license": "SEE LICENSE IN LICENSE",
37
+ "private": false,
38
+ "dependencies": {
39
+ "@modelcontextprotocol/sdk": "^1.27.1",
40
+ "@ncds/types-common": "^1.0.0",
41
+ "@ncds/types-layout": "^1.0.0",
42
+ "@ncds/ui-admin-icon": "0.1.6",
43
+ "classnames": "^2.3.2",
44
+ "flatpickr": "4.6.13",
45
+ "jsdom": "^26.1.0",
46
+ "lodash": "^4.17.21",
47
+ "lodash-es": "^4.17.21",
48
+ "moment": "^2.30.1",
49
+ "node-html-parser": "^7.1.0",
50
+ "react": "^18.2.0",
51
+ "react-dom": "^18.2.0",
52
+ "react-flatpickr": "^4.0.10",
53
+ "swiper": "^11.1.1",
54
+ "zod": "^4.3.6"
55
+ },
56
+ "devDependencies": {
57
+ "@types/node": "^25.5.0",
58
+ "@types/react": "^18.3.20",
59
+ "ts-morph": "^27.0.2"
60
+ }
61
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "ncds-ui-admin": {
4
+ "command": "npx",
5
+ "args": ["-y", "@ncds/ui-admin-mcp"]
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,30 @@
1
+ # NCUA MCP 서버 설정 템플릿
2
+
3
+ ## 빠른 시작
4
+
5
+ 프로젝트 루트에 `.mcp.json` 파일을 생성하고 아래 내용을 추가합니다.
6
+
7
+ ```json
8
+ {
9
+ "mcpServers": {
10
+ "ncds-ui-admin": {
11
+ "command": "npx",
12
+ "args": ["-y", "@ncds/ui-admin-mcp"]
13
+ }
14
+ }
15
+ }
16
+ ```
17
+
18
+ 또는 이 디렉토리의 `.mcp.json.example` 파일을 프로젝트 루트로 복사합니다.
19
+
20
+ ```bash
21
+ cp node_modules/@ncds/ui-admin-mcp/templates/.mcp.json.example .mcp.json
22
+ ```
23
+
24
+ ## 요구사항
25
+
26
+ - Node.js 20 이상
27
+
28
+ ## 확인 방법
29
+
30
+ 설정 후 Claude Desktop 또는 Claude Code를 재시작하면 `ncds-ui-admin` MCP 서버가 자동으로 인식됩니다.