@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 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 의 실 사용 모음)