@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.
Files changed (105) hide show
  1. package/.github/workflows/ci.yml +23 -20
  2. package/.github/workflows/deploy-docs.yml +6 -3
  3. package/.github/workflows/release.yml +11 -9
  4. package/README.md +123 -14
  5. package/dist/bin/server.js +997 -256
  6. package/dist/bin/server.js.map +1 -1
  7. package/dist/{chunk-P3ARRKLS.js → chunk-HOMDMKUY.js} +3 -1
  8. package/dist/{chunk-P3ARRKLS.js.map → chunk-HOMDMKUY.js.map} +1 -1
  9. package/dist/{chunk-IQ7NN26V.js → chunk-LHW2ZTOU.js} +14 -2
  10. package/dist/chunk-LHW2ZTOU.js.map +1 -0
  11. package/dist/color/index.js +1 -1
  12. package/dist/coolors-mcp.d.ts +4 -4
  13. package/dist/coolors-mcp.js +1 -1
  14. package/eslint.config.ts +13 -0
  15. package/jsr.json +1 -1
  16. package/package.json +16 -12
  17. package/src/bin/server.ts +13 -1
  18. package/src/color/__tests__/extract-colors.test.ts +20 -30
  19. package/src/color/apca.ts +105 -0
  20. package/src/color/color-blindness.ts +109 -0
  21. package/src/coolors-mcp.ts +1 -1
  22. package/src/session.ts +10 -2
  23. package/src/theme/matcher.ts +1 -1
  24. package/src/theme/refactor.ts +1 -1
  25. package/src/theme/types.ts +3 -0
  26. package/src/tools/__tests__/cohesion.test.ts +97 -0
  27. package/src/tools/__tests__/color-blindness.test.ts +45 -0
  28. package/src/tools/__tests__/color-conversion.test.ts +38 -0
  29. package/src/tools/__tests__/contrast-checker.test.ts +56 -0
  30. package/src/tools/__tests__/palette-export.test.ts +54 -0
  31. package/src/tools/adjust-color.tool.ts +80 -0
  32. package/src/tools/cohesion.tools.ts +380 -0
  33. package/src/tools/color-blindness.tool.ts +168 -0
  34. package/src/tools/color-conversion.tool.ts +1 -1
  35. package/src/tools/contrast-checker.tool.ts +53 -14
  36. package/src/tools/dislike-analyzer.tool.ts +41 -54
  37. package/src/tools/image-extraction.tools.ts +62 -115
  38. package/src/tools/index.ts +15 -2
  39. package/src/tools/palette-export.tool.ts +174 -0
  40. package/src/tools/palette-with-locks.tool.ts +8 -6
  41. package/src/types.ts +2 -3
  42. package/tsconfig.json +12 -2
  43. package/vitest.config.js +1 -3
  44. package/.claude/settings.local.json +0 -35
  45. package/.env +0 -2
  46. package/.mcp.json +0 -12
  47. package/CLAUDE.md +0 -201
  48. package/DOCUMENTATION.md +0 -274
  49. package/GEMINI.md +0 -54
  50. package/TOOLS_UK.md +0 -233
  51. package/demo/content_based_color.png +0 -0
  52. package/demo/music-player.html +0 -621
  53. package/demo/podcast-player.html +0 -903
  54. package/dist/chunk-IQ7NN26V.js.map +0 -1
  55. package/docs/.vitepress/cache/deps/@braintree_sanitize-url.js +0 -111
  56. package/docs/.vitepress/cache/deps/@braintree_sanitize-url.js.map +0 -7
  57. package/docs/.vitepress/cache/deps/_metadata.json +0 -127
  58. package/docs/.vitepress/cache/deps/chunk-BUSYA2B4.js +0 -12
  59. package/docs/.vitepress/cache/deps/chunk-BUSYA2B4.js.map +0 -7
  60. package/docs/.vitepress/cache/deps/chunk-JD3CXNQ6.js +0 -13614
  61. package/docs/.vitepress/cache/deps/chunk-JD3CXNQ6.js.map +0 -7
  62. package/docs/.vitepress/cache/deps/chunk-SYPOPCWC.js +0 -10698
  63. package/docs/.vitepress/cache/deps/chunk-SYPOPCWC.js.map +0 -7
  64. package/docs/.vitepress/cache/deps/cytoscape-cose-bilkent.js +0 -5609
  65. package/docs/.vitepress/cache/deps/cytoscape-cose-bilkent.js.map +0 -7
  66. package/docs/.vitepress/cache/deps/cytoscape.js +0 -36234
  67. package/docs/.vitepress/cache/deps/cytoscape.js.map +0 -7
  68. package/docs/.vitepress/cache/deps/dayjs.js +0 -507
  69. package/docs/.vitepress/cache/deps/dayjs.js.map +0 -7
  70. package/docs/.vitepress/cache/deps/debug.js +0 -512
  71. package/docs/.vitepress/cache/deps/debug.js.map +0 -7
  72. package/docs/.vitepress/cache/deps/package.json +0 -3
  73. package/docs/.vitepress/cache/deps/prismjs.js +0 -1638
  74. package/docs/.vitepress/cache/deps/prismjs.js.map +0 -7
  75. package/docs/.vitepress/cache/deps/prismjs_components_prism-bash.js +0 -235
  76. package/docs/.vitepress/cache/deps/prismjs_components_prism-bash.js.map +0 -7
  77. package/docs/.vitepress/cache/deps/prismjs_components_prism-javascript.js +0 -173
  78. package/docs/.vitepress/cache/deps/prismjs_components_prism-javascript.js.map +0 -7
  79. package/docs/.vitepress/cache/deps/prismjs_components_prism-json.js +0 -27
  80. package/docs/.vitepress/cache/deps/prismjs_components_prism-json.js.map +0 -7
  81. package/docs/.vitepress/cache/deps/prismjs_components_prism-python.js +0 -72
  82. package/docs/.vitepress/cache/deps/prismjs_components_prism-python.js.map +0 -7
  83. package/docs/.vitepress/cache/deps/prismjs_components_prism-typescript.js +0 -56
  84. package/docs/.vitepress/cache/deps/prismjs_components_prism-typescript.js.map +0 -7
  85. package/docs/.vitepress/cache/deps/prismjs_components_prism-yaml.js +0 -107
  86. package/docs/.vitepress/cache/deps/prismjs_components_prism-yaml.js.map +0 -7
  87. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -5074
  88. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
  89. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -584
  90. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
  91. package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +0 -1483
  92. package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +0 -7
  93. package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +0 -1779
  94. package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +0 -7
  95. package/docs/.vitepress/cache/deps/vitepress___minisearch.js +0 -2023
  96. package/docs/.vitepress/cache/deps/vitepress___minisearch.js.map +0 -7
  97. package/docs/.vitepress/cache/deps/vue.js +0 -344
  98. package/docs/.vitepress/cache/deps/vue.js.map +0 -7
  99. package/examples/theme-matching.md +0 -113
  100. package/mcp-config.json +0 -8
  101. package/note.md +0 -34
  102. package/research_results.md +0 -53
  103. package/src/tools/colors.ts +0 -31
  104. package/src/tools/registry.ts +0 -142
  105. 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