@trishchuk/coolors-mcp 1.0.1 → 1.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/.github/workflows/ci.yml +23 -20
- package/.github/workflows/deploy-docs.yml +6 -3
- package/.github/workflows/release.yml +11 -9
- package/README.md +123 -14
- package/dist/bin/server.js +997 -256
- package/dist/bin/server.js.map +1 -1
- package/dist/{chunk-P3ARRKLS.js → chunk-HOMDMKUY.js} +3 -1
- package/dist/{chunk-P3ARRKLS.js.map → chunk-HOMDMKUY.js.map} +1 -1
- package/dist/{chunk-IQ7NN26V.js → chunk-LHW2ZTOU.js} +14 -2
- package/dist/chunk-LHW2ZTOU.js.map +1 -0
- package/dist/color/index.js +1 -1
- package/dist/coolors-mcp.d.ts +4 -4
- package/dist/coolors-mcp.js +1 -1
- package/eslint.config.ts +13 -0
- package/jsr.json +1 -1
- package/package.json +16 -12
- package/src/bin/server.ts +13 -1
- package/src/color/__tests__/extract-colors.test.ts +20 -30
- package/src/color/apca.ts +105 -0
- package/src/color/color-blindness.ts +109 -0
- package/src/coolors-mcp.ts +1 -1
- package/src/session.ts +10 -2
- package/src/theme/matcher.ts +1 -1
- package/src/theme/refactor.ts +1 -1
- package/src/theme/types.ts +3 -0
- package/src/tools/__tests__/cohesion.test.ts +97 -0
- package/src/tools/__tests__/color-blindness.test.ts +45 -0
- package/src/tools/__tests__/color-conversion.test.ts +38 -0
- package/src/tools/__tests__/contrast-checker.test.ts +56 -0
- package/src/tools/__tests__/palette-export.test.ts +54 -0
- package/src/tools/adjust-color.tool.ts +80 -0
- package/src/tools/cohesion.tools.ts +380 -0
- package/src/tools/color-blindness.tool.ts +168 -0
- package/src/tools/color-conversion.tool.ts +1 -1
- package/src/tools/contrast-checker.tool.ts +53 -14
- package/src/tools/dislike-analyzer.tool.ts +41 -54
- package/src/tools/image-extraction.tools.ts +62 -115
- package/src/tools/index.ts +15 -2
- package/src/tools/palette-export.tool.ts +174 -0
- package/src/tools/palette-with-locks.tool.ts +8 -6
- package/src/types.ts +2 -3
- package/tsconfig.json +12 -2
- package/vitest.config.js +1 -3
- package/.claude/settings.local.json +0 -35
- package/.env +0 -2
- package/.mcp.json +0 -12
- package/CLAUDE.md +0 -201
- package/DOCUMENTATION.md +0 -274
- package/GEMINI.md +0 -54
- package/TOOLS_UK.md +0 -233
- package/demo/content_based_color.png +0 -0
- package/demo/music-player.html +0 -621
- package/demo/podcast-player.html +0 -903
- package/dist/chunk-IQ7NN26V.js.map +0 -1
- package/docs/.vitepress/cache/deps/@braintree_sanitize-url.js +0 -111
- package/docs/.vitepress/cache/deps/@braintree_sanitize-url.js.map +0 -7
- package/docs/.vitepress/cache/deps/_metadata.json +0 -127
- package/docs/.vitepress/cache/deps/chunk-BUSYA2B4.js +0 -12
- package/docs/.vitepress/cache/deps/chunk-BUSYA2B4.js.map +0 -7
- package/docs/.vitepress/cache/deps/chunk-JD3CXNQ6.js +0 -13614
- package/docs/.vitepress/cache/deps/chunk-JD3CXNQ6.js.map +0 -7
- package/docs/.vitepress/cache/deps/chunk-SYPOPCWC.js +0 -10698
- package/docs/.vitepress/cache/deps/chunk-SYPOPCWC.js.map +0 -7
- package/docs/.vitepress/cache/deps/cytoscape-cose-bilkent.js +0 -5609
- package/docs/.vitepress/cache/deps/cytoscape-cose-bilkent.js.map +0 -7
- package/docs/.vitepress/cache/deps/cytoscape.js +0 -36234
- package/docs/.vitepress/cache/deps/cytoscape.js.map +0 -7
- package/docs/.vitepress/cache/deps/dayjs.js +0 -507
- package/docs/.vitepress/cache/deps/dayjs.js.map +0 -7
- package/docs/.vitepress/cache/deps/debug.js +0 -512
- package/docs/.vitepress/cache/deps/debug.js.map +0 -7
- package/docs/.vitepress/cache/deps/package.json +0 -3
- package/docs/.vitepress/cache/deps/prismjs.js +0 -1638
- package/docs/.vitepress/cache/deps/prismjs.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-bash.js +0 -235
- package/docs/.vitepress/cache/deps/prismjs_components_prism-bash.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-javascript.js +0 -173
- package/docs/.vitepress/cache/deps/prismjs_components_prism-javascript.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-json.js +0 -27
- package/docs/.vitepress/cache/deps/prismjs_components_prism-json.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-python.js +0 -72
- package/docs/.vitepress/cache/deps/prismjs_components_prism-python.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-typescript.js +0 -56
- package/docs/.vitepress/cache/deps/prismjs_components_prism-typescript.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-yaml.js +0 -107
- package/docs/.vitepress/cache/deps/prismjs_components_prism-yaml.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -5074
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -584
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +0 -1483
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +0 -1779
- package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___minisearch.js +0 -2023
- package/docs/.vitepress/cache/deps/vitepress___minisearch.js.map +0 -7
- package/docs/.vitepress/cache/deps/vue.js +0 -344
- package/docs/.vitepress/cache/deps/vue.js.map +0 -7
- package/examples/theme-matching.md +0 -113
- package/mcp-config.json +0 -8
- package/note.md +0 -34
- package/research_results.md +0 -53
- package/src/tools/colors.ts +0 -31
- package/src/tools/registry.ts +0 -142
- package/src/tools/simple-tools.ts +0 -37
package/GEMINI.md
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# Аналіз проекту `coolors-mcp`
|
|
2
|
-
|
|
3
|
-
## Огляд
|
|
4
|
-
|
|
5
|
-
Цей проект є інструментом командного рядка (CLI) або сервером, створеним за допомогою TypeScript, який надає розширений
|
|
6
|
-
набір інструментів для роботи з кольорами та темами. Він значною мірою базується на принципах Material Design 3 і
|
|
7
|
-
використовує `@modelcontextprotocol/sdk` для надання своїх функціональних можливостей через набір інструментів.
|
|
8
|
-
|
|
9
|
-
## Основна функціональність
|
|
10
|
-
|
|
11
|
-
Проект пропонує комплексний набір інструментів для керування кольорами, зокрема:
|
|
12
|
-
|
|
13
|
-
- **Операції з кольорами:**
|
|
14
|
-
- Перетворення між різними колірними моделями (HEX, RGB, HSL, LAB, HCT).
|
|
15
|
-
- Обчислення перцептивної різниці кольорів (Delta E 2000).
|
|
16
|
-
- Забезпечення доступності за допомогою перевірки контрастності WCAG.
|
|
17
|
-
- Психологічна корекція кольору (виправлення "непривабливих" кольорів).
|
|
18
|
-
- **Тематизація на основі зображень:**
|
|
19
|
-
- Видобування домінуючих кольорів із зображення.
|
|
20
|
-
- Автоматичне створення повної теми Material Design 3 на основі видобутих кольорів.
|
|
21
|
-
- **Тематизація в стилі Material Design:**
|
|
22
|
-
- Генерація колірних тем Material Design 3.
|
|
23
|
-
- Створення тональних палітр.
|
|
24
|
-
- Гармонізація кольорів на основі принципів Material Design.
|
|
25
|
-
- **Рефакторинг CSS:**
|
|
26
|
-
- Аналіз існуючого CSS.
|
|
27
|
-
- Зіставлення жорстко закодованих кольорів із темою.
|
|
28
|
-
- Рефакторинг CSS для використання змінних теми.
|
|
29
|
-
- **Генерація палітри:**
|
|
30
|
-
- Створення різних типів колірних палітр (монохроматичних, аналогічних, комплементарних тощо) з базового кольору.
|
|
31
|
-
|
|
32
|
-
## Структура проекту
|
|
33
|
-
|
|
34
|
-
- `CoolorsMCP.ts`: Основна точка входу, що налаштовує сервер за допомогою `@modelcontextprotocol/sdk`.
|
|
35
|
-
- `session.ts`: Керує сеансами клієнтів і викликами інструментів.
|
|
36
|
-
- `tools/`: Містить усі визначення інструментів, які є основними функціями, що надаються сервером.
|
|
37
|
-
- `color/`: Ймовірно, містить базову логіку маніпулювання кольорами, що використовується інструментами.
|
|
38
|
-
- `theme/`: Ймовірно, містить логіку для розбору, зіставлення та рефакторингу тем.
|
|
39
|
-
- `bin/`: Містить виконувані сценарії для запуску сервера або CLI.
|
|
40
|
-
- `examples/`: Містить приклади використання інструментів.
|
|
41
|
-
|
|
42
|
-
## Ключові залежності
|
|
43
|
-
|
|
44
|
-
- `@modelcontextprotocol/sdk`: Використовується для створення сервера та обробки протоколу інструментів.
|
|
45
|
-
- `zod`: Використовується для перевірки вхідних даних в інструментах.
|
|
46
|
-
- `@standard-schema/spec`: Використовується для визначення параметрів інструментів.
|
|
47
|
-
- `xsschema`: Використовується для перетворення схем Zod на схеми JSON.
|
|
48
|
-
|
|
49
|
-
## Загальне враження
|
|
50
|
-
|
|
51
|
-
Цей проект є складним інструментом для розробників і дизайнерів, які працюють із кольорами та системами дизайну. Він
|
|
52
|
-
автоматизує багато виснажливих завдань, пов'язаних із керуванням кольорами та створенням тем, а функція рефакторингу CSS
|
|
53
|
-
є особливо вражаючою. Використання Model Context Protocol свідчить про те, що він призначений для інтеграції з іншими
|
|
54
|
-
інструментами розробки або агентами ШІ.
|
package/TOOLS_UK.md
DELETED
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
# Інструменти Coolors MCP
|
|
2
|
-
|
|
3
|
-
## 🎨 Конвертація кольорів
|
|
4
|
-
|
|
5
|
-
### convert_color
|
|
6
|
-
|
|
7
|
-
Конвертує кольори між форматами: hex, rgb, hsl, lab, hct
|
|
8
|
-
|
|
9
|
-
```javascript
|
|
10
|
-
{ color: "#6366f1", to: "hct" }
|
|
11
|
-
// Результат: "hct(265.8, 87.2, 47.9)"
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## 📏 Вимірювання відстані
|
|
15
|
-
|
|
16
|
-
### color_distance
|
|
17
|
-
|
|
18
|
-
Обчислює перцептивну відстань між кольорами
|
|
19
|
-
|
|
20
|
-
```javascript
|
|
21
|
-
{ color1: "#6366f1", color2: "#5355d1", metric: "deltaE2000" }
|
|
22
|
-
// Результат: 5.2 (помітна різниця)
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## ♿ Перевірка контрасту
|
|
26
|
-
|
|
27
|
-
### check_contrast
|
|
28
|
-
|
|
29
|
-
Перевіряє контраст за стандартами WCAG
|
|
30
|
-
|
|
31
|
-
```javascript
|
|
32
|
-
{ foreground: "#000000", background: "#ffffff" }
|
|
33
|
-
// Результат: 21:1 ✓ AAA
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## 🎨 Генерація палітр
|
|
37
|
-
|
|
38
|
-
### generate_palette
|
|
39
|
-
|
|
40
|
-
Створює палітри: монохроматичні, аналогові, комплементарні, тріадні, тетрадні
|
|
41
|
-
|
|
42
|
-
```javascript
|
|
43
|
-
{ baseColor: "#6366f1", type: "analogous", count: 5 }
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### generate_palette_with_locks
|
|
47
|
-
|
|
48
|
-
Генерує палітру зі збереженням заданих кольорів
|
|
49
|
-
|
|
50
|
-
```javascript
|
|
51
|
-
{ lockedColors: ["#6366f1", "#ec4899"], totalColors: 7, mode: "harmony" }
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### generate_gradient
|
|
55
|
-
|
|
56
|
-
Створює плавні градієнти
|
|
57
|
-
|
|
58
|
-
```javascript
|
|
59
|
-
{
|
|
60
|
-
colors: ["#6366f1", "#ec4899"],
|
|
61
|
-
steps: 10,
|
|
62
|
-
interpolation: "lab" // lab, hsl, rgb, hct
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## 🎭 Material Design 3
|
|
67
|
-
|
|
68
|
-
### generate_material_theme
|
|
69
|
-
|
|
70
|
-
Генерує повну тему Material Design 3
|
|
71
|
-
|
|
72
|
-
```javascript
|
|
73
|
-
{ sourceColor: "#6366f1", includeCustomColors: true }
|
|
74
|
-
// Результат: light/dark схеми + тональні палітри
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### generate_tonal_palette
|
|
78
|
-
|
|
79
|
-
Створює тональну палітру (0-100)
|
|
80
|
-
|
|
81
|
-
```javascript
|
|
82
|
-
{ color: "#6366f1", tones: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 99, 100] }
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### harmonize_colors
|
|
86
|
-
|
|
87
|
-
Гармонізує кольори для спільної роботи
|
|
88
|
-
|
|
89
|
-
```javascript
|
|
90
|
-
{ colors: ["#6366f1", "#ec4899", "#10b981"], method: "harmonize", factor: 0.5 }
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## 🔍 Підбір змінних теми
|
|
94
|
-
|
|
95
|
-
### match_theme_color
|
|
96
|
-
|
|
97
|
-
Знаходить найближчу CSS змінну для кольору
|
|
98
|
-
|
|
99
|
-
```javascript
|
|
100
|
-
{
|
|
101
|
-
color: "#6366f1",
|
|
102
|
-
themeCSS: ":root { --primary: #6366f1; }",
|
|
103
|
-
context: "background",
|
|
104
|
-
minConfidence: 70
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### refactor_css_with_theme
|
|
109
|
-
|
|
110
|
-
Автоматично замінює кольори на змінні теми
|
|
111
|
-
|
|
112
|
-
```javascript
|
|
113
|
-
{
|
|
114
|
-
css: ".btn { background: #6366f1; }",
|
|
115
|
-
themeCSS: ":root { --primary: #6366f1; }",
|
|
116
|
-
preserveOriginal: true
|
|
117
|
-
}
|
|
118
|
-
// Результат: .btn { background: var(--primary); /* was: #6366f1 */ }
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### match_theme_colors_batch
|
|
122
|
-
|
|
123
|
-
Підбирає змінні для багатьох кольорів
|
|
124
|
-
|
|
125
|
-
```javascript
|
|
126
|
-
{
|
|
127
|
-
colors: ["#6366f1", "#ec4899", "#10b981"],
|
|
128
|
-
themeCSS: "/* CSS зі змінними */"
|
|
129
|
-
}
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### generate_theme_css
|
|
133
|
-
|
|
134
|
-
Генерує CSS змінні для теми
|
|
135
|
-
|
|
136
|
-
```javascript
|
|
137
|
-
{
|
|
138
|
-
sourceColor: "#6366f1",
|
|
139
|
-
prefix: "color",
|
|
140
|
-
includeTones: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 99, 100]
|
|
141
|
-
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## 🖼️ Витягування кольорів з зображень
|
|
145
|
-
|
|
146
|
-
### extract_image_colors
|
|
147
|
-
|
|
148
|
-
Витягує домінантні кольори алгоритмом Celebi
|
|
149
|
-
|
|
150
|
-
```javascript
|
|
151
|
-
{ imageData: [/* RGBA масив */], maxColors: 5, minPopulation: 0.01 }
|
|
152
|
-
// Результат: масив кольорів з популяцією та оцінкою для UI
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### generate_theme_from_image
|
|
156
|
-
|
|
157
|
-
Генерує Material тему з кольорів зображення
|
|
158
|
-
|
|
159
|
-
```javascript
|
|
160
|
-
{
|
|
161
|
-
imageData: [/* пікселі */],
|
|
162
|
-
variant: "vibrant", // tonalSpot, fidelity, expressive, neutral, monochrome
|
|
163
|
-
contrastLevel: 0.5 // 0 (стандарт), 0.5 (середній), 1.0 (високий)
|
|
164
|
-
}
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
## 🚫 Аналіз неприємних кольорів
|
|
168
|
-
|
|
169
|
-
### analyze_color_likability
|
|
170
|
-
|
|
171
|
-
Перевіряє чи колір у "зоні огиди" (темні жовто-зелені)
|
|
172
|
-
|
|
173
|
-
```javascript
|
|
174
|
-
{ color: "#6b7c3a", autoFix: true }
|
|
175
|
-
// Результат: виправлений колір + пояснення
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### fix_disliked_colors_batch
|
|
179
|
-
|
|
180
|
-
Виправляє кілька неприємних кольорів
|
|
181
|
-
|
|
182
|
-
```javascript
|
|
183
|
-
{
|
|
184
|
-
colors: ["#6b7c3a", "#5c6b2f"],
|
|
185
|
-
strategy: "both" // shift, lighten, both
|
|
186
|
-
}
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
## Ключові особливості
|
|
190
|
-
|
|
191
|
-
### HCT колірний простір
|
|
192
|
-
|
|
193
|
-
- **Тон** (0-360°): позиція на колірному колі
|
|
194
|
-
- **Хрома** (0-150): насиченість
|
|
195
|
-
- **Тональність** (0-100): світлість з гарантованим контрастом
|
|
196
|
-
- Різниця 40 = контраст 3:1
|
|
197
|
-
- Різниця 50 = контраст 4.5:1
|
|
198
|
-
|
|
199
|
-
### Алгоритм підбору теми
|
|
200
|
-
|
|
201
|
-
1. Перцептивна відстань (60%) - схожість за HCT
|
|
202
|
-
2. Семантичний контекст (20%) - відповідність ролі
|
|
203
|
-
3. Доступність (20%) - дотримання контрасту
|
|
204
|
-
|
|
205
|
-
### Варіанти Material теми
|
|
206
|
-
|
|
207
|
-
- **tonalSpot** - збалансована (за замовчуванням)
|
|
208
|
-
- **fidelity** - зберігає бренд-колір точно
|
|
209
|
-
- **vibrant** - яскрава, грайлива
|
|
210
|
-
- **expressive** - креативні комбінації
|
|
211
|
-
- **neutral** - професійна, мінімальна
|
|
212
|
-
- **monochrome** - один відтінок
|
|
213
|
-
|
|
214
|
-
## Швидкий старт
|
|
215
|
-
|
|
216
|
-
### Claude Desktop
|
|
217
|
-
|
|
218
|
-
```json
|
|
219
|
-
{
|
|
220
|
-
"mcpServers": {
|
|
221
|
-
"coolors": {
|
|
222
|
-
"command": "npx",
|
|
223
|
-
"args": ["-y", "@trishchuk/coolors-mcp"]
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
### Claude Code
|
|
230
|
-
|
|
231
|
-
```bash
|
|
232
|
-
claude mcp add coolors --npm-package @trishchuk/coolors-mcp
|
|
233
|
-
```
|
|
Binary file
|