design-tokens-mcp
by N-Link-Lab
README.md
# design-tokens-mcp-server
デザイントークン(色・余白・フォント)を1つのJSONファイルで管理し、MCP経由でエージェントに読み書き・書き出し・ドリフト検知をさせる最小構成のMCPサーバーです。
FigmaのMCPサーバー+Skillエコシステムで注目される「デザイントークンをコードとデザインの間で同期し、ずれ(ドリフト)を検知する」というワークフローを、Figma契約なしで体験できる教材として実装しています。
## できること
サーバーは5つのツールを公開します。
| ツール | 内容 |
| --- | --- |
| tokens_list | トークン一覧(type / 名前プレフィックスで絞り込み可) |
| tokens_get | 1件取得。名前が違うときは近い候補を提示 |
| tokens_set | 追加・更新。型ごとに値を検証(colorはhex、dimensionは単位付き数値など) |
| tokens_export | css / tailwind / figma-variables 形式で書き出し |
| tokens_check_drift | CSSファイル内のハードコードされた色・px値をトークンと照合し、ずれを最寄りトークン付きで報告 |
トークンファイルはW3C Design Tokens(DTCG)風の `$type` / `$value` 形式です。`tokens.example.json` を参照してください。
## 動作要件
- Node.js 18以上(動作確認は v22)
## セットアップ
```bash
git clone <このリポジトリのURL>
cd design-tokens-mcp
npm install
npm run build
npm test
```
`npm test` はビルド済みサーバーをstdioで起動し、5ツールすべて(バリデーションエラーとドリフト検知を含む16項目)を検証します。すべてPASSすれば準備完了です。
## Claude Codeへの登録
```bash
claude mcp add design-tokens \
--env TOKENS_FILE=/絶対パス/tokens.json \
-- node /絶対パス/design-tokens-mcp/dist/index.js
```
`TOKENS_FILE` を省略するとカレントディレクトリの `tokens.json` を使います。初回は `tokens.example.json` をコピーして始めてください。
```bash
cp tokens.example.json tokens.json
```
他のMCPクライアント(Cursor等)でも、stdioサーバーとして `node dist/index.js` を登録すれば動きます。
## 使用例
エージェントへの指示例:
- 「トークン一覧を見せて」→ tokens_list
- 「spacing.xl を 32px で追加して」→ tokens_set(`32` だけを渡すと単位がないためエラーになり、修正方法が返ります)
- 「トークンをCSS変数に書き出して styles/tokens.css に保存して」→ tokens_export
- 「src/app.css がトークンからずれていないか調べて」→ tokens_check_drift
ドリフト検知の出力例(実際の実行結果):
```json
{
"checked_file": "/tmp/sample.css",
"matched": 2,
"drift_count": 2,
"drift": [
{
"value": "#0e7a6f",
"line": 3,
"kind": "color",
"nearest_token": "color.primary",
"nearest_value": "#0F766E"
},
{
"value": "23px",
"line": 5,
"kind": "dimension",
"nearest_token": "spacing.lg",
"nearest_value": "24px"
}
]
}
```
## 設計メモ
Anthropicのmcp-builderスキルの指針に沿っています。
- ツール名はサービス接頭辞付きのsnake_case(tokens_list など)
- 入力はZodスキーマで検証し、制約違反時は「次に何をすべきか」を含むエラーメッセージを返す
- 読み取り系ツールには readOnlyHint / idempotentHint のannotationsを付与
- 出力は structuredContent(構造化データ)とテキストの両方で返す
## ライセンス
MIT License. 詳細は LICENSE を参照してください。
TDQS
A4.6/5.0
Scored across 5 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: listing, getting, setting, exporting, and drift-checking. No overlap.
Naming Consistency5/5
All tool names follow a consistent 'tokens_verb' pattern with snake_case, making the set predictable.
Tool Count5/5
5 tools is well-scoped for a design token server; each tool covers a core operation without redundancy.
Completeness4/5
The set covers CRUD except deletion, and includes export and drift detection. A delete token tool is missing, but the surface is otherwise complete for common workflows.
Maintenance
ActivityMaintained
ResponsivenessSyncing