@makitt.io/mds-mcp-server 0.1.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/README.md +149 -0
- package/dist/data/catalog.json +10567 -0
- package/dist/data/playbook/ai-fill.md +175 -0
- package/dist/data/playbook/anti-patterns.md +188 -0
- package/dist/data/playbook/array-input.md +249 -0
- package/dist/data/playbook/async-states.md +137 -0
- package/dist/data/playbook/data-grid.md +192 -0
- package/dist/data/playbook/feedback.md +238 -0
- package/dist/data/playbook/form.md +259 -0
- package/dist/data/playbook/overlay.md +222 -0
- package/dist/data/playbook/page-layout.md +222 -0
- package/dist/data/playbook/responsive-tokens.md +191 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +329 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -0
package/README.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# @makitt.io/mds-mcp-server
|
|
2
|
+
|
|
3
|
+
MCP (Model Context Protocol) server for `@makitt/mds`. AI 가 mds 의 catalog +
|
|
4
|
+
playbook 을 자동 query — fabrication 0 의 최종 layer.
|
|
5
|
+
|
|
6
|
+
> **Registry**: npmjs.org (표준 public npm registry). `.npmrc` 의 별도 setup 없이 install.
|
|
7
|
+
|
|
8
|
+
## 무엇을 하는가
|
|
9
|
+
|
|
10
|
+
Claude Code / Cursor 같은 AI 도구가 다음을 자동 query:
|
|
11
|
+
|
|
12
|
+
- **컴포넌트 spec** — props / types / JSDoc / stories (301 components in catalog.json)
|
|
13
|
+
- **Playbook 9 영역** — form / feedback / data-grid / overlay / page-layout / array-input / async-states / ai-fill / anti-patterns
|
|
14
|
+
- **결정 표 검색** — "modal-form vs page-form 어떻게 선택?" → playbook 안 lookup
|
|
15
|
+
- **안티패턴 자동 검출** — 작성 코드의 mds rule 위반 식별
|
|
16
|
+
|
|
17
|
+
## Tools
|
|
18
|
+
|
|
19
|
+
| Tool | 용도 |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `mds_components_list` | 모든 mds 컴포넌트 list (layer 필터 가능) |
|
|
22
|
+
| `mds_components_get` | 특정 컴포넌트의 full spec (props / types / JSDoc) |
|
|
23
|
+
| `mds_components_search` | 컴포넌트 name / description / prop 의 text search |
|
|
24
|
+
| `mds_playbook_list` | 9 Playbook 영역 list |
|
|
25
|
+
| `mds_playbook_get` | 특정 Playbook 의 full content (markdown) |
|
|
26
|
+
| `mds_playbook_search` | 모든 Playbook 의 decision matrix / 안티패턴 text search |
|
|
27
|
+
|
|
28
|
+
## 설치
|
|
29
|
+
|
|
30
|
+
### A. NPM (외부 사용자 — 가장 단순)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
claude mcp add mds -- npx -y @makitt.io/mds-mcp-server@latest
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
→ npmjs.org 에서 자동 fetch + 실행. self-contained (embedded catalog + playbook). 별도 auth / scope mapping 없음.
|
|
37
|
+
|
|
38
|
+
### B. Local build (mds 개발자 monorepo)
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
cd packages/mds && pnpm build # catalog.json 생성
|
|
42
|
+
cd ../mds-mcp-server && pnpm build # tsc + copy:data
|
|
43
|
+
claude mcp add mds -- node /absolute/path/.../mds-mcp-server/dist/index.js
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### C. Customize (자체 catalog/playbook)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
claude mcp add mds \
|
|
50
|
+
-e MDS_CATALOG_PATH=/path/to/your/catalog.json \
|
|
51
|
+
-e MDS_PLAYBOOK_DIR=/path/to/your/playbook \
|
|
52
|
+
-- npx -y @makitt.io/mds-mcp-server@latest
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
→ 본인 design system 위에 mds 패턴 사용.
|
|
56
|
+
|
|
57
|
+
### 검증
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
claude mcp list # mds 등록 확인
|
|
61
|
+
claude mcp get mds # 상세
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Claude Code 재시작 후 자동 사용:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
사용자: 새 상품 등록 페이지 만들어줘
|
|
68
|
+
AI: (mds_playbook_get 'form' 자동 호출 → 결정 표 lookup)
|
|
69
|
+
상품 등록은 6+ section 의 큰 form → Section + AnchorNav 사용.
|
|
70
|
+
(mds_components_get 'AnchorNav' → props spec lookup)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Path resolution 우선순위
|
|
74
|
+
|
|
75
|
+
1. **env var** (`MDS_CATALOG_PATH` / `MDS_PLAYBOOK_DIR`) — 외부 customize
|
|
76
|
+
2. **embedded data** (`dist/data/`) — published package 의 self-contained
|
|
77
|
+
3. **monorepo relative** (`../../mds/`) — dev fallback
|
|
78
|
+
|
|
79
|
+
## Build (data 자동 embed)
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
pnpm build # tsc + scripts/copy-data.mjs
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- `tsc` — TypeScript compile (`dist/index.js`)
|
|
86
|
+
- `copy-data.mjs` — `../mds/dist/catalog.json` + `../mds/docs/playbook/` 을 `dist/data/` 로 복사
|
|
87
|
+
|
|
88
|
+
→ self-contained package. `files: ["dist", "README.md"]` 가 npm publish 의 포함.
|
|
89
|
+
|
|
90
|
+
## Transport
|
|
91
|
+
|
|
92
|
+
stdio (Claude Code / Cursor 표준).
|
|
93
|
+
|
|
94
|
+
## Publish (maintainer 용)
|
|
95
|
+
|
|
96
|
+
npm registry (`registry.npmjs.org`) 의 `@makitt.io/mds-mcp-server` 의 publish.
|
|
97
|
+
|
|
98
|
+
### 첫 setup — Granular Access Token (공용 계정 권장)
|
|
99
|
+
|
|
100
|
+
공용 npm 계정 (예: `techtaka-makitt`) 의 publish 의 자동 — 매번 2FA OTP race 의 안 적합. **Granular Access Token + bypass 2FA** 의 1회 setup + 이후 publish 자동.
|
|
101
|
+
|
|
102
|
+
1. **token 생성** — https://www.npmjs.com/settings/<username>/tokens/granular-access-tokens/new
|
|
103
|
+
- **Token name**: `mds-mcp-server publish` (또는 유의미한 라벨)
|
|
104
|
+
- **Expiration**: 1 year (또는 정책 따라)
|
|
105
|
+
- **Allowed IP ranges**: 비워두기 (또는 CI / 사무실 IP)
|
|
106
|
+
- **Packages and scopes**:
|
|
107
|
+
- "Only select packages and scopes" → **`@makitt.io`** scope 추가
|
|
108
|
+
- Permissions: **Read and write**
|
|
109
|
+
- **Bypass 2FA**: ✓ enable (publish 의 OTP 안 필요)
|
|
110
|
+
- Generate token → 값 복사 (한 번 만 표시)
|
|
111
|
+
2. **token 의 공용 vault share** — 1Password / LastPass / Bitwarden 등 의 team 의 공유 entry. 채팅 / 코드 에 직접 X
|
|
112
|
+
3. **각 maintainer 의 local setup** — `~/.npmrc` 의 직접 entry (또는 `npm config set`):
|
|
113
|
+
```bash
|
|
114
|
+
npm config set //registry.npmjs.org/:_authToken=<token>
|
|
115
|
+
```
|
|
116
|
+
→ `~/.npmrc` 의 추가. git ignore 됨 (사용자 home dir).
|
|
117
|
+
|
|
118
|
+
### Publish 흐름
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
cd packages/mds-mcp-server
|
|
122
|
+
pnpm build # tsc + copy-data (catalog.json + playbook md → dist/data/)
|
|
123
|
+
npm publish --dry-run # tarball 검증 (file list / size / name / version)
|
|
124
|
+
npm publish # 실제 publish (bypass 2FA token 의 자동)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Version bump
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
npm version patch # 0.1.0 → 0.1.1 (bugfix)
|
|
131
|
+
npm version minor # 0.1.0 → 0.2.0 (feature)
|
|
132
|
+
npm version major # 0.1.0 → 1.0.0 (breaking)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
→ `package.json` 자동 bump + git tag 자동 생성. push 시 `git push --follow-tags`.
|
|
136
|
+
|
|
137
|
+
### 보안
|
|
138
|
+
|
|
139
|
+
- ❌ token 의 채팅 / git 의 commit / chat log 등 의 leak — 즉시 npmjs.com 의 settings 의 **Revoke**
|
|
140
|
+
- ❌ 무한 expiration token — 1 year 이내
|
|
141
|
+
- ❌ "Read and write" 의 모든 scope — `@makitt.io` 의 specific scope 만
|
|
142
|
+
- ✓ Bypass 2FA 의 enable — 공용 계정 의 publish 의 OTP race 의 안
|
|
143
|
+
|
|
144
|
+
## 향후 (Step 6 follow-up)
|
|
145
|
+
|
|
146
|
+
- `mds_lint_check(code)` — 사용자 코드의 mds rule 위반 자동 검출
|
|
147
|
+
- `mds_skills_list` — AI fill 의 skill registry (ai-fill.md)
|
|
148
|
+
- `mds_responsive_check(component, viewport)` — 컴포넌트의 responsive 동작 spec
|
|
149
|
+
- `mds_examples_get(component)` — 컴포넌트 사용 예 (story args + apps/web 의 실 사용 모음)
|