@symbo.ls/mcp 1.0.24 → 1.0.26
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
CHANGED
|
@@ -105,16 +105,50 @@ No API keys required for documentation tools. Project management tools require a
|
|
|
105
105
|
pip install symbols-mcp
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
Or with `uv
|
|
108
|
+
Or with `uv` (no install needed):
|
|
109
109
|
|
|
110
110
|
```bash
|
|
111
111
|
uvx symbols-mcp
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
+
Or via npm:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
npx @symbo.ls/mcp
|
|
118
|
+
```
|
|
119
|
+
|
|
114
120
|
## Configuration
|
|
115
121
|
|
|
116
|
-
|
|
122
|
+
### Recommended (auto-updates on every launch)
|
|
117
123
|
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"mcpServers": {
|
|
127
|
+
"symbols": {
|
|
128
|
+
"command": "uvx",
|
|
129
|
+
"args": ["--refresh", "symbols-mcp"]
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
The `--refresh` flag checks PyPI for a newer version each time the server starts. Adds ~1-2s to startup but ensures you always have the latest rules and documentation.
|
|
136
|
+
|
|
137
|
+
### Alternative configs
|
|
138
|
+
|
|
139
|
+
**npm (also auto-updates):**
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"mcpServers": {
|
|
143
|
+
"symbols": {
|
|
144
|
+
"command": "npx",
|
|
145
|
+
"args": ["-y", "@symbo.ls/mcp"]
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Pinned version (manual updates):**
|
|
118
152
|
```json
|
|
119
153
|
{
|
|
120
154
|
"mcpServers": {
|
|
@@ -126,6 +160,19 @@ Add to your MCP client config (e.g. `mcp.json`):
|
|
|
126
160
|
}
|
|
127
161
|
```
|
|
128
162
|
|
|
163
|
+
### Manual update
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# pip
|
|
167
|
+
pip install --upgrade symbols-mcp
|
|
168
|
+
|
|
169
|
+
# uv (clear cache and re-run)
|
|
170
|
+
uv cache clean symbols-mcp && uvx symbols-mcp
|
|
171
|
+
|
|
172
|
+
# npm
|
|
173
|
+
npm update -g @symbo.ls/mcp
|
|
174
|
+
```
|
|
175
|
+
|
|
129
176
|
### Transport modes
|
|
130
177
|
|
|
131
178
|
By default, the server runs over **stdio**. For SSE transport:
|
package/package.json
CHANGED
|
@@ -6,8 +6,6 @@ Follow this protocol exactly. Execute each phase in order. Do not skip steps.
|
|
|
6
6
|
|
|
7
7
|
## 1. Install the MCP Server
|
|
8
8
|
|
|
9
|
-
Run the following command to install:
|
|
10
|
-
|
|
11
9
|
```bash
|
|
12
10
|
pip install symbols-mcp
|
|
13
11
|
```
|
|
@@ -16,14 +14,14 @@ pip install symbols-mcp
|
|
|
16
14
|
|
|
17
15
|
## 2. Configure the MCP Server
|
|
18
16
|
|
|
19
|
-
Add this configuration to your MCP settings:
|
|
17
|
+
Add this configuration to your MCP settings (uses `--refresh` to auto-update on every launch):
|
|
20
18
|
|
|
21
19
|
```json
|
|
22
20
|
{
|
|
23
21
|
"mcpServers": {
|
|
24
22
|
"symbols": {
|
|
25
23
|
"command": "uvx",
|
|
26
|
-
"args": ["symbols-mcp"]
|
|
24
|
+
"args": ["--refresh", "symbols-mcp"]
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
27
|
}
|
|
@@ -298,3 +298,33 @@ Dropdown: {
|
|
|
298
298
|
```
|
|
299
299
|
|
|
300
300
|
Use `show` only for elements that should be fully removed from layout with no animation. For modals, dropdowns, tooltips, drawers — always use the opacity pattern.
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## 17. CSS selectors — nest media and pseudo, never chain into one string
|
|
305
|
+
|
|
306
|
+
```js
|
|
307
|
+
// ❌ WRONG — chained selector string
|
|
308
|
+
'@dark :hover': { background: 'blue' }
|
|
309
|
+
'@mobileL :focus': { outline: 'none' }
|
|
310
|
+
|
|
311
|
+
// ✅ CORRECT — nested objects
|
|
312
|
+
'@dark': { ':hover': { background: 'blue' } }
|
|
313
|
+
'@mobileL': { ':focus': { outline: 'none' } }
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## 18. Colors — define once, shade with modifiers, not Tailwind-style palettes
|
|
319
|
+
|
|
320
|
+
```js
|
|
321
|
+
// ❌ WRONG — multiple shade definitions
|
|
322
|
+
color: {
|
|
323
|
+
blue50: '#eff6ff', blue100: '#dbeafe', blue200: '#bfdbfe',
|
|
324
|
+
blue300: '#93c5fd', blue400: '#60a5fa', blue500: '#3b82f6',
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// ✅ CORRECT — single base, use modifiers in components
|
|
328
|
+
color: { blue: '#0474f2' }
|
|
329
|
+
// Then: 'blue.7' (opacity), 'blue+20' (lighten), 'blue-30' (darken)
|
|
330
|
+
```
|
|
@@ -64,7 +64,7 @@ export default {
|
|
|
64
64
|
}
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
**Note:** Array values
|
|
67
|
+
**Note:** Array values are `[@dark, @light]` theme pairs. Format: `'--colorName opacity tone'` where `--` is the color reference prefix, opacity is 0-1, and tone is `+N`/`-N` (RGB delta) or `=N` (HSL lightness %). Use semantic names (`title`, `caption`, `paragraph`, `disabled`, `line`) for text colors.
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
@@ -53,28 +53,63 @@ Card: {
|
|
|
53
53
|
|
|
54
54
|
### Adaptive semantic colors
|
|
55
55
|
|
|
56
|
-
Array syntax `[darkValue, lightValue]` with
|
|
56
|
+
Array syntax `[darkValue, lightValue]` — values prefixed with `--` are resolved as color references using space-separated format: `'--colorName opacity tone'`.
|
|
57
|
+
|
|
58
|
+
The `--` prefix tells the parser to resolve the value as a color reference (strip `--`, split by space, look up the color, apply opacity and tone). This is NOT a CSS variable — it's the Symbols color reference syntax.
|
|
59
|
+
|
|
60
|
+
```js
|
|
61
|
+
title: ['--gray 1 -168', '--gray 1 +168'],
|
|
62
|
+
// ↑name ↑alpha ↑tone
|
|
63
|
+
// Dark: gray at full opacity, darkened 168 RGB
|
|
64
|
+
// Light: gray at full opacity, lightened 168 RGB
|
|
65
|
+
```
|
|
57
66
|
|
|
58
67
|
| Token | Dark | Light | Use |
|
|
59
68
|
|---|---|---|---|
|
|
60
|
-
| `title` |
|
|
61
|
-
| `caption` |
|
|
62
|
-
| `paragraph` |
|
|
63
|
-
| `disabled` |
|
|
64
|
-
| `line` |
|
|
69
|
+
| `title` | `'--gray 1 -168'` | `'--gray 1 +168'` | Primary text |
|
|
70
|
+
| `caption` | `'--gray 1 -68'` | `'--gray 1 +68'` | Secondary/meta |
|
|
71
|
+
| `paragraph` | `'--gray 1 -42'` | `'--gray 1 +42'` | Body copy |
|
|
72
|
+
| `disabled` | `'--gray 1 -26'` | `'--gray 1 +26'` | Disabled state |
|
|
73
|
+
| `line` | `'--gray 1 -16'` | `'--gray 1 +16'` | Borders/dividers |
|
|
65
74
|
|
|
66
|
-
### Color modifier syntax
|
|
75
|
+
### Color modifier syntax — the Symbols shading system
|
|
67
76
|
|
|
68
|
-
|
|
77
|
+
**Define each color ONCE as a single base value.** Generate all shades dynamically using modifiers — never define multiple shade variants of the same color (no `blue100`, `blue200`, `blue300` etc.).
|
|
69
78
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
'
|
|
73
|
-
'
|
|
74
|
-
'
|
|
75
|
-
'
|
|
76
|
-
'gray
|
|
77
|
-
|
|
79
|
+
| Modifier | Syntax | Example | Effect |
|
|
80
|
+
|----------|--------|---------|--------|
|
|
81
|
+
| Opacity | `.XX` | `'blue.7'` | 70% opacity (0.7) |
|
|
82
|
+
| Lighten | `+N` | `'gray+50'` | Add N to each RGB channel (0-255) |
|
|
83
|
+
| Darken | `-N` | `'gray-68'` | Subtract N from each RGB channel |
|
|
84
|
+
| Absolute | `=N` | `'gray=90'` | Set HSL lightness to N% |
|
|
85
|
+
| Combined | `.XX+N` | `'gray.85+8'` | 85% opacity + lighten by 8 RGB |
|
|
86
|
+
|
|
87
|
+
```js
|
|
88
|
+
// ✅ CORRECT — one base color, shades via modifiers
|
|
89
|
+
color: {
|
|
90
|
+
blue: '#0474f2',
|
|
91
|
+
gray: '#4e4e50',
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Use in components:
|
|
95
|
+
background: 'blue' // base
|
|
96
|
+
background: 'blue.8' // 80% opacity
|
|
97
|
+
background: 'blue+20' // lightened
|
|
98
|
+
background: 'blue-30' // darkened
|
|
99
|
+
color: 'gray.5+15' // 50% opacity + 15 lighter
|
|
100
|
+
borderColor: 'gray+100' // light gray border
|
|
101
|
+
|
|
102
|
+
// ❌ WRONG — Tailwind-style shade palette (DO NOT DO THIS)
|
|
103
|
+
color: {
|
|
104
|
+
blue50: '#eff6ff',
|
|
105
|
+
blue100: '#dbeafe',
|
|
106
|
+
blue200: '#bfdbfe',
|
|
107
|
+
blue300: '#93c5fd',
|
|
108
|
+
blue400: '#60a5fa',
|
|
109
|
+
blue500: '#3b82f6',
|
|
110
|
+
blue600: '#2563eb',
|
|
111
|
+
// ... redundant — just use 'blue+N' / 'blue-N' modifiers
|
|
112
|
+
}
|
|
78
113
|
```
|
|
79
114
|
|
|
80
115
|
Opacity rules:
|
|
@@ -250,18 +285,32 @@ Title: { fontWeight: 700 }
|
|
|
250
285
|
|
|
251
286
|
Golden Ratio scale (1.618 default). Applies to `padding`, `margin`, `gap`, `width`, `height`, `boxSize`, `borderRadius`/`round`, `inset`, `top`, `left`, `right`, `bottom`, etc.
|
|
252
287
|
|
|
253
|
-
|
|
288
|
+
### Token stepping system
|
|
289
|
+
|
|
290
|
+
Each letter is a major step. Sub-numbers are minor increments between letters. The sequence flows continuously — each sub-step is one tone increase:
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
... X < X1 < X2 < Z < Z1 < Z2 < A < A1 < A2 < A3 < B < B1 < B2 < B3 < C ...
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
How many sub-steps exist between letters depends on the range — smaller ranges (W, X) have only 1-2 sub-steps, larger ranges (A, B, C) have up to 3.
|
|
297
|
+
|
|
298
|
+
**To increase slightly:** go up one sub-step (e.g. `A` → `A1`, or `B2` → `B3`)
|
|
299
|
+
**To increase moderately:** go up one letter (e.g. `A` → `B`)
|
|
300
|
+
**To decrease:** reverse direction (e.g. `B` → `A3`, or `A` → `Z2`)
|
|
301
|
+
|
|
302
|
+
| Token range | Approx px | Use |
|
|
254
303
|
|---|---|---|
|
|
255
|
-
| `W`-`W2` | 2-4
|
|
256
|
-
| `X`-`X2` | 4-6
|
|
257
|
-
| `Z`-`Z2` | 10-16
|
|
258
|
-
| `A`-`
|
|
259
|
-
| `B`-`
|
|
260
|
-
| `C`-`
|
|
261
|
-
| `D`-`
|
|
262
|
-
| `E`-`F` | 110-178
|
|
263
|
-
|
|
264
|
-
|
|
304
|
+
| `W`-`W2` | 2-4 | Micro gaps, offsets |
|
|
305
|
+
| `X`-`X2` | 4-6 | Icon padding, tight gaps |
|
|
306
|
+
| `Z`-`Z2` | 10-16 | Compact padding |
|
|
307
|
+
| `A`-`A3` | 16-26 | Default padding, gutters |
|
|
308
|
+
| `B`-`B3` | 26-42 | Section padding |
|
|
309
|
+
| `C`-`C3` | 42-68 | Container padding, avatar sizes |
|
|
310
|
+
| `D`-`D3` | 68-110 | Large sections |
|
|
311
|
+
| `E`-`F` | 110-178 | Hero padding, max-widths |
|
|
312
|
+
|
|
313
|
+
Typography tokens use the same letter system for `fontSize`.
|
|
265
314
|
|
|
266
315
|
### Shorthand spacing
|
|
267
316
|
|
|
@@ -1213,3 +1213,42 @@ When creating new apps, always base the design system on the default template at
|
|
|
1213
1213
|
|
|
1214
1214
|
Never use font sizes smaller than what the default template defines. The default template enforces recommended, readable sizing for all new projects.
|
|
1215
1215
|
|
|
1216
|
+
---
|
|
1217
|
+
|
|
1218
|
+
## Rule 45 — Define each color ONCE — use modifier syntax for shades, not Tailwind-style palettes
|
|
1219
|
+
|
|
1220
|
+
Never define multiple shade variants of the same color (`blue100`, `blue200`, `blue300`). Define one base value and use the Symbols shading system: `.XX` (opacity), `+N` (lighten), `-N` (darken), `=N` (absolute lightness).
|
|
1221
|
+
|
|
1222
|
+
```js
|
|
1223
|
+
// ✅ CORRECT — single base, shades via modifiers in components
|
|
1224
|
+
color: { blue: '#0474f2' }
|
|
1225
|
+
// → 'blue', 'blue.7', 'blue+20', 'blue-30', 'blue.5+15'
|
|
1226
|
+
|
|
1227
|
+
// ❌ WRONG — Tailwind-style shade palette
|
|
1228
|
+
color: { blue50: '#eff6ff', blue100: '#dbeafe', blue200: '#bfdbfe', blue300: '#93c5fd' }
|
|
1229
|
+
```
|
|
1230
|
+
|
|
1231
|
+
---
|
|
1232
|
+
|
|
1233
|
+
## Rule 44 — Never chain CSS selectors — use nesting instead
|
|
1234
|
+
|
|
1235
|
+
Media queries (`@dark`, `@mobileL`) and pseudo-classes (`:hover`, `:active`) must be nested as separate objects, never chained into a single key string.
|
|
1236
|
+
|
|
1237
|
+
```js
|
|
1238
|
+
// ❌ WRONG — chained selector string
|
|
1239
|
+
Button: {
|
|
1240
|
+
'@dark :hover': { background: 'blue' },
|
|
1241
|
+
'@mobileL :active': { opacity: '0.5' },
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
// ✅ CORRECT — nested objects
|
|
1245
|
+
Button: {
|
|
1246
|
+
'@dark': {
|
|
1247
|
+
':hover': { background: 'blue' },
|
|
1248
|
+
},
|
|
1249
|
+
'@mobileL': {
|
|
1250
|
+
':active': { opacity: '0.5' },
|
|
1251
|
+
},
|
|
1252
|
+
}
|
|
1253
|
+
```
|
|
1254
|
+
|