@vint.tri/report_gen_mcp 1.3.0 → 1.3.2

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.
@@ -36,6 +36,15 @@
36
36
 
37
37
  Обязательно покажите пользователю содержимое файла, чтобы он мог сразу ознакомиться с результатом без необходимости открывать файл отдельно.
38
38
 
39
+ **ВАЖНО ПО ФОРМАТИРОВАНИЮ ОТЧЕТОВ:**
40
+ - Все диаграммы автоматически создаются с разумными размерами (примерно 267x200 пикселей) для лучшего визуального восприятия
41
+ - Текст в отчетах автоматически форматируется с использованием HTML-разметки для улучшения читаемости
42
+ - Отчеты имеют профессиональный внешний вид с улучшенным стилем, включая:
43
+ * Четкую типографику с выравниванием текста по ширине
44
+ * Стилизованные заголовки с цветовой индикацией
45
+ * Улучшенное оформление списков и абзацев
46
+ * Цветовое выделение важной информации
47
+
39
48
  Пример формата ответа пользователю:
40
49
  ```
41
50
  Отчет успешно создан!
@@ -45,24 +54,75 @@
45
54
 
46
55
  📄 Содержимое отчета:
47
56
  <!DOCTYPE html>
48
- <html>
57
+ <html lang="ru">
49
58
  <head>
50
59
  <meta charset="UTF-8">
51
- <title>Report</title>
60
+ <title>Отчет</title>
52
61
  <style>
53
- body { font-family: Arial, sans-serif; }
54
- .chart-container, .image-container { margin: 20px 0; }
62
+ body {
63
+ font-family: Arial, sans-serif;
64
+ margin: 40px;
65
+ background-color: #f5f5f5;
66
+ }
67
+ .container {
68
+ max-width: 1200px;
69
+ margin: 0 auto;
70
+ background-color: white;
71
+ padding: 30px;
72
+ border-radius: 10px;
73
+ box-shadow: 0 0 10px rgba(0,0,0,0.1);
74
+ }
75
+ h1, h2, h3 {
76
+ color: #333;
77
+ }
78
+ h1 {
79
+ border-bottom: 2px solid #3498db;
80
+ padding-bottom: 10px;
81
+ }
82
+ h2 {
83
+ border-left: 4px solid #3498db;
84
+ padding-left: 15px;
85
+ }
86
+ .chart-container, .image-container {
87
+ margin: 30px 0;
88
+ text-align: center;
89
+ }
90
+ .chart-container canvas, .image-container img {
91
+ max-width: 100%;
92
+ height: auto;
93
+ border: 1px solid #ddd;
94
+ border-radius: 5px;
95
+ }
96
+ p {
97
+ line-height: 1.6;
98
+ text-align: justify;
99
+ }
100
+ ul, ol {
101
+ margin: 20px 0;
102
+ padding-left: 30px;
103
+ }
104
+ li {
105
+ margin: 10px 0;
106
+ }
107
+ strong {
108
+ color: #e74c3c;
109
+ }
110
+ em {
111
+ color: #2ecc71;
112
+ }
55
113
  </style>
56
114
  <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
57
115
  </head>
58
116
  <body>
59
- <h1>Отчет</h1>
60
- <div class="chart-container">
61
- <!-- Chart.js chart code -->
62
- </div>
63
- <div class="image-container">
64
- <!-- Generated image -->
65
- <img src="https://image.pollinations.ai/prompt/красивый%20закат" alt="красивый закат">
117
+ <div class="container">
118
+ <h1>Отчет</h1>
119
+ <div class="chart-container">
120
+ <!-- Chart.js chart code -->
121
+ </div>
122
+ <div class="image-container">
123
+ <!-- Generated image -->
124
+ <img src="https://image.pollinations.ai/prompt/красивый%20закат" alt="красивый закат">
125
+ </div>
66
126
  </div>
67
127
  </body>
68
128
  </html>
@@ -28,6 +28,15 @@
28
28
 
29
29
  Обязательно покажите пользователю содержимое файла, чтобы он мог сразу ознакомиться с результатом без необходимости открывать файл отдельно.
30
30
 
31
+ **ВАЖНО ПО ФОРМАТИРОВАНИЮ ОТЧЕТОВ:**
32
+ - Все диаграммы автоматически создаются с разумными размерами (примерно 267x200 пикселей) для лучшего визуального восприятия
33
+ - Текст в отчетах автоматически форматируется с использованием HTML-разметки для улучшения читаемости
34
+ - Отчеты имеют профессиональный внешний вид с улучшенным стилем, включая:
35
+ * Четкую типографику с выравниванием текста по ширине
36
+ * Стилизованные заголовки с цветовой индикацией
37
+ * Улучшенное оформление списков и абзацев
38
+ * Цветовое выделение важной информации
39
+
31
40
  Пример формата ответа пользователю:
32
41
  ```
33
42
  Отчет успешно создан!
@@ -37,24 +46,75 @@
37
46
 
38
47
  📄 Содержимое отчета:
39
48
  <!DOCTYPE html>
40
- <html>
49
+ <html lang="ru">
41
50
  <head>
42
51
  <meta charset="UTF-8">
43
- <title>Report</title>
52
+ <title>Отчет</title>
44
53
  <style>
45
- body { font-family: Arial, sans-serif; }
46
- .chart-container, .image-container { margin: 20px 0; }
54
+ body {
55
+ font-family: Arial, sans-serif;
56
+ margin: 40px;
57
+ background-color: #f5f5f5;
58
+ }
59
+ .container {
60
+ max-width: 1200px;
61
+ margin: 0 auto;
62
+ background-color: white;
63
+ padding: 30px;
64
+ border-radius: 10px;
65
+ box-shadow: 0 0 10px rgba(0,0,0,0.1);
66
+ }
67
+ h1, h2, h3 {
68
+ color: #333;
69
+ }
70
+ h1 {
71
+ border-bottom: 2px solid #3498db;
72
+ padding-bottom: 10px;
73
+ }
74
+ h2 {
75
+ border-left: 4px solid #3498db;
76
+ padding-left: 15px;
77
+ }
78
+ .chart-container, .image-container {
79
+ margin: 30px 0;
80
+ text-align: center;
81
+ }
82
+ .chart-container canvas, .image-container img {
83
+ max-width: 100%;
84
+ height: auto;
85
+ border: 1px solid #ddd;
86
+ border-radius: 5px;
87
+ }
88
+ p {
89
+ line-height: 1.6;
90
+ text-align: justify;
91
+ }
92
+ ul, ol {
93
+ margin: 20px 0;
94
+ padding-left: 30px;
95
+ }
96
+ li {
97
+ margin: 10px 0;
98
+ }
99
+ strong {
100
+ color: #e74c3c;
101
+ }
102
+ em {
103
+ color: #2ecc71;
104
+ }
47
105
  </style>
48
106
  <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
49
107
  </head>
50
108
  <body>
51
- <h1>Отчет</h1>
52
- <div class="chart-container">
53
- <!-- Chart.js chart code -->
54
- </div>
55
- <div class="image-container">
56
- <!-- Generated image -->
57
- <img src="https://image.pollinations.ai/prompt/красивый%20закат" alt="красивый закат">
109
+ <div class="container">
110
+ <h1>Отчет</h1>
111
+ <div class="chart-container">
112
+ <!-- Chart.js chart code -->
113
+ </div>
114
+ <div class="image-container">
115
+ <!-- Generated image -->
116
+ <img src="https://image.pollinations.ai/prompt/красивый%20закат" alt="красивый закат">
117
+ </div>
58
118
  </div>
59
119
  </body>
60
120
  </html>
@@ -1,54 +1,30 @@
1
- # Publication Confirmation: Version 1.2.2
2
-
3
- ## Package Successfully Published
4
- ✅ **@vint.tri/report_gen_mcp@1.2.2** has been successfully published to npm registry
5
-
6
- ## Changes Included in This Release
7
- This release fixes the chart configuration validation issue that was causing errors when users provided string values for color properties instead of arrays.
8
-
9
- ### Key Fixes
10
- 1. **Flexible Schema Validation**: Updated Zod schemas to accept both strings and arrays for color properties (`borderColor`, `backgroundColor`)
11
- 2. **Backward Compatibility**: Maintained full compatibility with existing array-based configurations
12
- 3. **Improved User Experience**: Users can now provide either format:
13
- - Single string: `"borderColor": "red"`
14
- - Array of strings: `"borderColor": ["red"]`
15
-
16
- ### Files Updated
17
- - `src/index.ts` - MCP tool schema and normalization logic
18
- - `src/charts/line.ts` - Line chart schema
19
- - `src/charts/bar.ts` - Bar chart schema
20
- - `src/charts/pie.ts` - Pie chart schema
21
- - `src/charts/doughnut.ts` - Doughnut chart schema
22
- - `src/charts/radar.ts` - Radar chart schema
23
- - `src/charts/polarArea.ts` - PolarArea chart schema
24
- - `package.json` - Version bump to 1.2.2
25
-
26
- ## Verification Results
27
- ✅ All tests passing:
28
- - MCP tool call with problematic configuration now works
29
- - Direct function calls with mixed formats work
30
- - Backward compatibility with array formats maintained
31
- - Reports generated successfully with normalized color values
32
-
33
- ## Error Resolved
34
- The following error is now resolved:
1
+ # Публикация версии 1.3.0
2
+
3
+ Версия 1.3.0 пакета @vint.tri/report_gen_mcp успешно опубликована в npm registry.
4
+
5
+ ## Что было сделано:
6
+
7
+ 1. Обновлена версия в package.json с 1.2.2 до 1.3.0
8
+ 2. Обновлена версия в src/index.ts с 1.2.1 до 1.3.0
9
+ 3. Обновлена версия в dist/index.js с 1.2.1 до 1.3.0
10
+ 4. Обновлены упоминания версий в README.md
11
+ 5. Выполнена сборка проекта
12
+ 6. Пакет успешно опубликован в npm registry
13
+
14
+ ## Проверка:
15
+
16
+ ```bash
17
+ npm info @vint.tri/report_gen_mcp version
18
+ # Вывод: 1.3.0
35
19
  ```
36
- Error calling tool generate-report: Error: Error invoking remote method 'mcp:call-tool': McpError: MCP error -32602: MCP error -32602: Invalid arguments for tool generate-report: [
37
- {
38
- "code": "invalid_type",
39
- "expected": "array",
40
- "received": "string",
41
- "path": [
42
- "elements",
43
- "usd_to_eur",
44
- "config",
45
- "datasets",
46
- 0,
47
- "borderColor"
48
- ],
49
- "message": "Expected array, received string"
50
- }
51
- ]
20
+
21
+ Теперь пользователи могут установить последнюю версию инструмента с помощью:
22
+
23
+ ```bash
24
+ npm install -g @vint.tri/report_gen_mcp@latest
52
25
  ```
53
26
 
54
- Users can now successfully generate reports with natural color property formats.
27
+ или использовать его напрямую через npx:
28
+
29
+ ```bash
30
+ REPORTS_DIR=./reports npx @vint.tri/report_gen_mcp@latest
@@ -1,4 +1,4 @@
1
- # Обновленные инструкции для ИИ по работе с инструментом report_gen_mcp
1
+ # ОБНОВЛЕННЫЕ Инструкции для ИИ по работе с инструментом report_gen_mcp
2
2
 
3
3
  **ВАЖНО:** ВСЕГДА ИСПОЛЬЗУЙТЕ ИНСТРУМЕНТ `report_gen_mcp` КАЖДЫЙ РАЗ, КОГДА ПОЛЬЗОВАТЕЛЬ ЗАПРАШИВАЕТ СОЗДАНИЕ ОТЧЕТА ИЛИ ВИЗУАЛИЗАЦИИ ДАННЫХ!
4
4
 
@@ -22,6 +22,28 @@
22
22
  - Сгенерированные сервисом pollinations.ai по текстовому описанию
23
23
  - По URL из интернета
24
24
 
25
+ ## Требования к оформлению отчетов
26
+
27
+ При создании отчетов необходимо придерживаться следующих требований по оформлению:
28
+
29
+ 1. **Красивое форматирование**:
30
+ - Используйте заголовки разных уровней (H1, H2, H3) для структурирования контента
31
+ - Добавляйте списки (маркированные и нумерованные) для лучшей читаемости
32
+ - Используйте выделение важной информации (жирный шрифт, курсив)
33
+ - Разделяйте смысловые блоки пустыми строками
34
+
35
+ 2. **Визуализация данных**:
36
+ - Всегда добавляйте диаграммы для числовых данных
37
+ - Выбирайте подходящий тип диаграммы в зависимости от характера данных
38
+ - Добавляйте поясняющие подписи к диаграммам
39
+ - Используйте разнообразные цвета для лучшей визуализации
40
+
41
+ 3. **Изображения**:
42
+ - Добавляйте тематические изображения для иллюстрации контента
43
+ - Используйте изображения высокого качества
44
+ - Добавляйте альтернативный текст для изображений
45
+ - При необходимости регулируйте размеры изображений
46
+
25
47
  ## После генерации отчета
26
48
 
27
49
  После успешной генерации отчета с помощью метода `generate-report`, ИИ получает всю необходимую информацию напрямую в ответе от метода. Необходимо предоставить пользователю следующую информацию:
@@ -106,6 +128,269 @@
106
128
  }
107
129
  ```
108
130
 
131
+ ## Формат данных для диаграмм (графиков)
132
+
133
+ Очень важно правильно формировать данные для диаграмм, чтобы избежать ошибок. Ниже приведены точные требования к формату данных для каждого типа диаграмм.
134
+
135
+ ### Общие правила для всех типов диаграмм
136
+
137
+ 1. Все цветовые значения (`backgroundColor`, `borderColor`) должны быть представлены в виде **массивов строк**, даже если это один цвет.
138
+ 2. Все числовые данные (`data`) должны быть представлены в виде массивов чисел.
139
+ 3. Все текстовые метки (`labels`) должны быть представлены в виде массивов строк.
140
+
141
+ ### Линейные диаграммы (line)
142
+
143
+ ```json
144
+ {
145
+ "type": "line",
146
+ "config": {
147
+ "labels": ["Январь", "Февраль", "Март", "Апрель", "Май"],
148
+ "datasets": [
149
+ {
150
+ "label": "Продажи (USD)",
151
+ "data": [12000, 19000, 15000, 18000, 22000],
152
+ "borderColor": ["rgba(54, 162, 235, 1)"], // ВАЖНО: массив, даже для одного цвета!
153
+ "fill": false
154
+ }
155
+ ],
156
+ "options": {
157
+ "title": "Ежемесячные продажи"
158
+ }
159
+ }
160
+ }
161
+ ```
162
+
163
+ **Важно**: `borderColor` должен быть массивом строк, даже если используется только один цвет.
164
+
165
+ ### Столбчатые диаграммы (bar)
166
+
167
+ ```json
168
+ {
169
+ "type": "bar",
170
+ "config": {
171
+ "labels": ["Январь", "Февраль", "Март", "Апрель", "Май"],
172
+ "datasets": [
173
+ {
174
+ "label": "Продажи (USD)",
175
+ "data": [12000, 19000, 15000, 18000, 22000],
176
+ "backgroundColor": ["#FF6384", "#36A2EB", "#FFCE56", "#4BC0C0", "#9966FF"], // Массив цветов
177
+ "borderColor": ["#FF6384", "#36A2EB", "#FFCE56", "#4BC0C0", "#9966FF"] // Массив цветов
178
+ }
179
+ ],
180
+ "options": {
181
+ "title": "Ежемесячные продажи"
182
+ }
183
+ }
184
+ }
185
+ ```
186
+
187
+ **Важно**: `backgroundColor` и `borderColor` должны быть массивами строк, даже если используется только один цвет.
188
+
189
+ ### Круговые диаграммы (pie)
190
+
191
+ ```json
192
+ {
193
+ "type": "pie",
194
+ "config": {
195
+ "labels": ["Красный", "Синий", "Желтый", "Зеленый", "Фиолетовый"],
196
+ "datasets": [
197
+ {
198
+ "data": [12, 19, 3, 5, 2],
199
+ "backgroundColor": ["#FF6384", "#36A2EB", "#FFCE56", "#4BC0C0", "#9966FF"], // Массив цветов
200
+ "borderColor": ["#FF6384", "#36A2EB", "#FFCE56", "#4BC0C0", "#9966FF"] // Массив цветов
201
+ }
202
+ ],
203
+ "options": {
204
+ "title": "Распределение по категориям"
205
+ }
206
+ }
207
+ }
208
+ ```
209
+
210
+ **Важно**: `backgroundColor` и `borderColor` должны быть массивами строк, даже если используется только один цвет.
211
+
212
+ ### Кольцевые диаграммы (doughnut)
213
+
214
+ ```json
215
+ {
216
+ "type": "doughnut",
217
+ "config": {
218
+ "labels": ["Красный", "Синий", "Желтый", "Зеленый", "Фиолетовый"],
219
+ "datasets": [
220
+ {
221
+ "data": [12, 19, 3, 5, 2],
222
+ "backgroundColor": ["#FF6384", "#36A2EB", "#FFCE56", "#4BC0C0", "#9966FF"], // Массив цветов
223
+ "borderColor": ["#FF6384", "#36A2EB", "#FFCE56", "#4BC0C0", "#9966FF"] // Массив цветов
224
+ }
225
+ ],
226
+ "options": {
227
+ "title": "Распределение по категориям"
228
+ }
229
+ }
230
+ }
231
+ ```
232
+
233
+ **Важно**: `backgroundColor` и `borderColor` должны быть массивами строк, даже если используется только один цвет.
234
+
235
+ ### Радарные диаграммы (radar)
236
+
237
+ ```json
238
+ {
239
+ "type": "radar",
240
+ "config": {
241
+ "labels": ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"],
242
+ "datasets": [
243
+ {
244
+ "label": "Person 1",
245
+ "data": [65, 59, 90, 81, 56, 55, 40],
246
+ "backgroundColor": ["rgba(255, 99, 132, 0.2)"], // Массив цветов
247
+ "borderColor": ["rgba(255, 99, 132, 1)"] // Массив цветов
248
+ }
249
+ ],
250
+ "options": {
251
+ "title": "Радарная диаграмма"
252
+ }
253
+ }
254
+ }
255
+ ```
256
+
257
+ **Важно**: `backgroundColor` и `borderColor` должны быть массивами строк, даже если используется только один цвет.
258
+
259
+ ### Полярные диаграммы (polarArea)
260
+
261
+ ```json
262
+ {
263
+ "type": "polarArea",
264
+ "config": {
265
+ "labels": ["Red", "Green", "Yellow", "Grey", "Blue"],
266
+ "datasets": [
267
+ {
268
+ "data": [11, 16, 7, 3, 14],
269
+ "backgroundColor": ["#FF6384", "#4BC0C0", "#FFCE56", "#E7E9ED", "#36A2EB"], // Массив цветов
270
+ "borderColor": ["#FF6384", "#4BC0C0", "#FFCE56", "#E7E9ED", "#36A2EB"] // Массив цветов
271
+ }
272
+ ],
273
+ "options": {
274
+ "title": "Полярная диаграмма"
275
+ }
276
+ }
277
+ }
278
+ ```
279
+
280
+ **Важно**: `backgroundColor` и `borderColor` должны быть массивами строк.
281
+
282
+ ## Формат данных для изображений
283
+
284
+ ### Изображения, сгенерированные pollinations.ai
285
+
286
+ ```json
287
+ {
288
+ "type": "pollinations",
289
+ "config": {
290
+ "prompt": "красивый закат над океаном",
291
+ "width": 512,
292
+ "height": 512,
293
+ "model": "flux",
294
+ "seed": 12345,
295
+ "nologo": true,
296
+ "enhance": true
297
+ }
298
+ }
299
+ ```
300
+
301
+ ### Изображения по URL
302
+
303
+ ```json
304
+ {
305
+ "type": "url",
306
+ "config": {
307
+ "url": "https://example.com/image.jpg",
308
+ "alt": "Описание изображения",
309
+ "width": 500,
310
+ "height": 300
311
+ }
312
+ }
313
+ ```
314
+
315
+ ## ПРАВИЛА ФОРМАТИРОВАНИЯ ПАРАМЕТРОВ (КРИТИЧЕСКИ ВАЖНО!)
316
+
317
+ ### 1. ПАРАМЕТР "elements" ДОЛЖЕН БЫТЬ ОБЪЕКТОМ!
318
+
319
+ ❌ НЕПРАВИЛЬНО (это вызывает ошибку "Expected object, received string"):
320
+ ```json
321
+ {
322
+ "method": "generate-report",
323
+ "params": {
324
+ "document": "# Отчет\n\n[[chart:mychart]]",
325
+ "elements": "{ \"mychart\": { \"type\": \"bar\", \"config\": { \"labels\": [\"A\", \"B\", \"C\"], \"datasets\": [{ \"label\": \"Data\", \"data\": [1, 2, 3], \"backgroundColor\": [\"red\", \"green\", \"blue\"], \"borderColor\": [\"red\", \"green\", \"blue\"] }] } }",
326
+ "outputFile": "report.html"
327
+ }
328
+ }
329
+ ```
330
+
331
+ ✅ ПРАВИЛЬНО (elements - это объект, а не строка):
332
+ ```json
333
+ {
334
+ "method": "generate-report",
335
+ "params": {
336
+ "document": "# Отчет\n\n[[chart:mychart]]",
337
+ "elements": {
338
+ "mychart": {
339
+ "type": "bar",
340
+ "config": {
341
+ "labels": ["A", "B", "C"],
342
+ "datasets": [{
343
+ "label": "Data",
344
+ "data": [1, 2, 3],
345
+ "backgroundColor": ["red", "green", "blue"],
346
+ "borderColor": ["red", "green", "blue"]
347
+ }]
348
+ }
349
+ }
350
+ },
351
+ "outputFile": "report.html"
352
+ }
353
+ }
354
+ ```
355
+
356
+ ### 2. ЦВЕТОВЫЕ ЗНАЧЕНИЯ ДОЛЖНЫ БЫТЬ МАССИВАМИ!
357
+
358
+ ❌ НЕПРАВИЛЬНО (это вызывает ошибку):
359
+ ```json
360
+ "backgroundColor": "red"
361
+ "borderColor": "blue"
362
+ ```
363
+
364
+ ✅ ПРАВИЛЬНО (всегда используйте массивы):
365
+ ```json
366
+ "backgroundColor": ["red"]
367
+ "borderColor": ["blue"]
368
+ ```
369
+
370
+ ### 3. ЧИСЛОВЫЕ ДАННЫЕ ДОЛЖНЫ БЫТЬ МАССИВАМИ!
371
+
372
+ ❌ НЕПРАВИЛЬНО:
373
+ ```json
374
+ "data": 10
375
+ ```
376
+
377
+ ✅ ПРАВИЛЬНО:
378
+ ```json
379
+ "data": [10]
380
+ ```
381
+
382
+ ### 4. ТЕКСТОВЫЕ МЕТКИ ДОЛЖНЫ БЫТЬ МАССИВАМИ!
383
+
384
+ ❌ НЕПРАВИЛЬНО:
385
+ ```json
386
+ "labels": "Январь"
387
+ ```
388
+
389
+ ✅ ПРАВИЛЬНО:
390
+ ```json
391
+ "labels": ["Январь"]
392
+ ```
393
+
109
394
  ## Пример полного взаимодействия
110
395
 
111
396
  Вот пример того, как должно выглядеть полное взаимодействие с пользователем после генерации отчета:
@@ -115,13 +400,26 @@
115
400
  {
116
401
  "method": "generate-report",
117
402
  "params": {
118
- "document": "# Отчет\n\n[[chart:mychart]]",
119
- "charts": {
403
+ "document": "# Отчет\n\n[[chart:mychart]]\n\n[[image:myimage]]",
404
+ "elements": {
120
405
  "mychart": {
121
406
  "type": "bar",
122
407
  "config": {
123
408
  "labels": ["A", "B", "C"],
124
- "datasets": [{"label": "Data", "data": [1, 2, 3]}]
409
+ "datasets": [{
410
+ "label": "Data",
411
+ "data": [1, 2, 3],
412
+ "backgroundColor": ["red", "green", "blue"],
413
+ "borderColor": ["red", "green", "blue"]
414
+ }]
415
+ }
416
+ },
417
+ "myimage": {
418
+ "type": "pollinations",
419
+ "config": {
420
+ "prompt": "beautiful landscape with mountains",
421
+ "width": 600,
422
+ "height": 400
125
423
  }
126
424
  }
127
425
  },
@@ -157,7 +455,7 @@
157
455
  <title>Report</title>
158
456
  <style>
159
457
  body { font-family: Arial, sans-serif; }
160
- .chart-container { margin: 20px 0; }
458
+ .chart-container, .image-container { margin: 20px 0; }
161
459
  </style>
162
460
  <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
163
461
  </head>
@@ -166,17 +464,41 @@
166
464
  <div class="chart-container">
167
465
  <!-- Chart.js chart code -->
168
466
  </div>
467
+ <div class="image-container">
468
+ <!-- Generated image -->
469
+ <img src="https://image.pollinations.ai/prompt/beautiful%20landscape%20with%20mountains" alt="beautiful landscape with mountains">
470
+ </div>
169
471
  </body>
170
472
  </html>
171
473
 
172
474
  Вы можете открыть отчет, кликнув на ссылку выше или скопировав путь к файлу.
173
475
  ```
174
476
 
477
+ ## Частые ошибки и как их избежать
478
+
479
+ 1. **Ошибка формата параметров**: Передача `elements` как строки вместо объекта
480
+ - ❌ Неправильно: `"elements": "{\"mychart\":{...}}"`
481
+ - ✅ Правильно: `"elements": {"mychart":{...}}`
482
+
483
+ 2. **Ошибка формата цвета**: Передача `borderColor` или `backgroundColor` как строк вместо массивов
484
+ - ❌ Неправильно: `"borderColor": "red"`
485
+ - ✅ Правильно: `"borderColor": ["red"]`
486
+
487
+ 3. **Ошибка формата данных**: Передача числовых данных как отдельных значений вместо массивов
488
+ - ❌ Неправильно: `"data": 10`
489
+ - ✅ Правильно: `"data": [10]"
490
+
491
+ 4. **Ошибка формата меток**: Передача меток как отдельных значений вместо массивов
492
+ - ❌ Неправильно: `"labels": "Январь"`
493
+ - ✅ Правильно: `"labels": ["Январь"]"
494
+
175
495
  ## Дополнительные рекомендации
176
496
 
177
497
  1. Всегда проверяйте успешность выполнения каждой операции перед переходом к следующему шагу
178
498
  2. Если какой-либо шаг завершается ошибкой, сообщите пользователю об этом и предложите решение
179
499
  3. Убедитесь, что все пути к файлам корректны и файлы действительно существуют
180
500
  4. При работе с Claude Desktop используйте параметр `tempDirectory` при генерации отчетов для избежания проблем с правами доступа
501
+ 5. Создавайте отчеты с красивым оформлением, используя заголовки, списки и другие элементы форматирования
502
+ 6. Добавляйте в отчеты диаграммы и изображения для лучшей визуализации данных
181
503
 
182
504
  Следование этим инструкциям обеспечит качественное и полное взаимодействие с пользователем при работе с инструментом генерации отчетов.
@@ -1,4 +1,4 @@
1
- # Обновленные инструкции для нейросети по работе с инструментом report_gen_mcp
1
+ # ОБНОВЛЕННЫЕ Инструкции для нейросети по работе с инструментом report_gen_mcp
2
2
 
3
3
  **ВАЖНО:** ВСЕГДА ИСПОЛЬЗУЙТЕ ИНСТРУМЕНТ `report_gen_mcp` КАЖДЫЙ РАЗ, КОГДА ПОЛЬЗОВАТЕЛЬ ЗАПРАШИВАЕТ СОЗДАНИЕ ОТЧЕТА ИЛИ ВИЗУАЛИЗАЦИИ ДАННЫХ!
4
4
 
@@ -22,6 +22,37 @@
22
22
  - Сгенерированные сервисом pollinations.ai по текстовому описанию
23
23
  - По URL из интернета
24
24
 
25
+ ## Требования к оформлению отчетов
26
+
27
+ При создании отчетов необходимо придерживаться следующих требований по оформлению:
28
+
29
+ 1. **Красивое форматирование**:
30
+ - Используйте заголовки разных уровней (H1, H2, H3) для структурирования контента
31
+ - Добавляйте списки (маркированные и нумерованные) для лучшей читаемости
32
+ - Используйте выделение важной информации (жирный шрифт, курсив)
33
+ - Разделяйте смысловые блоки пустыми строками
34
+
35
+ 2. **Визуализация данных**:
36
+ - Всегда добавляйте диаграммы для числовых данных
37
+ - Выбирайте подходящий тип диаграммы в зависимости от характера данных
38
+ - Добавляйте поясняющие подписи к диаграммам
39
+ - Используйте разнообразные цвета для лучшей визуализации
40
+ - **ВАЖНО**: Все диаграммы автоматически создаются с разумными размерами (примерно 267x200 пикселей) для лучшего визуального восприятия
41
+
42
+ 3. **Изображения**:
43
+ - Добавляйте тематические изображения для иллюстрации контента
44
+ - Используйте изображения высокого качества
45
+ - Добавляйте альтернативный текст для изображений
46
+ - При необходимости регулируйте размеры изображений
47
+
48
+ 4. **Текстовое форматирование**:
49
+ - Текст в отчетах автоматически форматируется с использованием HTML-разметки для улучшения читаемости
50
+ - Отчеты имеют профессиональный внешний вид с улучшенным стилем, включая:
51
+ * Четкую типографику с выравниванием текста по ширине
52
+ * Стилизованные заголовки с цветовой индикацией
53
+ * Улучшенное оформление списков и абзацев
54
+ * Цветовое выделение важной информации (жирный шрифт красного цвета, курсив зеленого цвета)
55
+
25
56
  ## После генерации отчета
26
57
 
27
58
  После успешной генерации отчета с помощью метода `generate-report`, нейросеть получает всю необходимую информацию напрямую в ответе от метода. Необходимо предоставить пользователю следующую информацию:
@@ -257,6 +288,118 @@
257
288
 
258
289
  **Важно**: `backgroundColor` и `borderColor` должны быть массивами строк.
259
290
 
291
+ ## Формат данных для изображений
292
+
293
+ ### Изображения, сгенерированные pollinations.ai
294
+
295
+ ```json
296
+ {
297
+ "type": "pollinations",
298
+ "config": {
299
+ "prompt": "красивый закат над океаном",
300
+ "width": 512,
301
+ "height": 512,
302
+ "model": "flux",
303
+ "seed": 12345,
304
+ "nologo": true,
305
+ "enhance": true
306
+ }
307
+ }
308
+ ```
309
+
310
+ ### Изображения по URL
311
+
312
+ ```json
313
+ {
314
+ "type": "url",
315
+ "config": {
316
+ "url": "https://example.com/image.jpg",
317
+ "alt": "Описание изображения",
318
+ "width": 500,
319
+ "height": 300
320
+ }
321
+ }
322
+ ```
323
+
324
+ ## ПРАВИЛА ФОРМАТИРОВАНИЯ ПАРАМЕТРОВ (КРИТИЧЕСКИ ВАЖНО!)
325
+
326
+ ### 1. ПАРАМЕТР "elements" ДОЛЖЕН БЫТЬ ОБЪЕКТОМ!
327
+
328
+ ❌ НЕПРАВИЛЬНО (это вызывает ошибку "Expected object, received string"):
329
+ ```json
330
+ {
331
+ "method": "generate-report",
332
+ "params": {
333
+ "document": "# Отчет\n\n[[chart:mychart]]",
334
+ "elements": "{ \"mychart\": { \"type\": \"bar\", \"config\": { \"labels\": [\"A\", \"B\", \"C\"], \"datasets\": [{ \"label\": \"Data\", \"data\": [1, 2, 3], \"backgroundColor\": [\"red\", \"green\", \"blue\"], \"borderColor\": [\"red\", \"green\", \"blue\"] }] } }",
335
+ "outputFile": "report.html"
336
+ }
337
+ }
338
+ ```
339
+
340
+ ✅ ПРАВИЛЬНО (elements - это объект, а не строка):
341
+ ```json
342
+ {
343
+ "method": "generate-report",
344
+ "params": {
345
+ "document": "# Отчет\n\n[[chart:mychart]]",
346
+ "elements": {
347
+ "mychart": {
348
+ "type": "bar",
349
+ "config": {
350
+ "labels": ["A", "B", "C"],
351
+ "datasets": [{
352
+ "label": "Data",
353
+ "data": [1, 2, 3],
354
+ "backgroundColor": ["red", "green", "blue"],
355
+ "borderColor": ["red", "green", "blue"]
356
+ }]
357
+ }
358
+ }
359
+ },
360
+ "outputFile": "report.html"
361
+ }
362
+ }
363
+ ```
364
+
365
+ ### 2. ЦВЕТОВЫЕ ЗНАЧЕНИЯ ДОЛЖНЫ БЫТЬ МАССИВАМИ!
366
+
367
+ ❌ НЕПРАВИЛЬНО (это вызывает ошибку):
368
+ ```json
369
+ "backgroundColor": "red"
370
+ "borderColor": "blue"
371
+ ```
372
+
373
+ ✅ ПРАВИЛЬНО (всегда используйте массивы):
374
+ ```json
375
+ "backgroundColor": ["red"]
376
+ "borderColor": ["blue"]
377
+ ```
378
+
379
+ ### 3. ЧИСЛОВЫЕ ДАННЫЕ ДОЛЖНЫ БЫТЬ МАССИВАМИ!
380
+
381
+ ❌ НЕПРАВИЛЬНО:
382
+ ```json
383
+ "data": 10
384
+ ```
385
+
386
+ ✅ ПРАВИЛЬНО:
387
+ ```json
388
+ "data": [10]
389
+ ```
390
+
391
+ ### 4. ТЕКСТОВЫЕ МЕТКИ ДОЛЖНЫ БЫТЬ МАССИВАМИ!
392
+
393
+ ❌ НЕПРАВИЛЬНО:
394
+ ```json
395
+ "labels": "Январь"
396
+ ```
397
+
398
+ ✅ ПРАВИЛЬНО:
399
+ ```json
400
+ "labels": ["Январь"]
401
+ ```
402
+
260
403
  ## Пример полного взаимодействия
261
404
 
262
405
  Вот пример того, как должно выглядеть полное взаимодействие с пользователем после генерации отчета:
@@ -266,8 +409,8 @@
266
409
  {
267
410
  "method": "generate-report",
268
411
  "params": {
269
- "document": "# Отчет\n\n[[chart:mychart]]",
270
- "charts": {
412
+ "document": "# Отчет\n\n[[chart:mychart]]\n\n[[image:myimage]]",
413
+ "elements": {
271
414
  "mychart": {
272
415
  "type": "bar",
273
416
  "config": {
@@ -275,10 +418,18 @@
275
418
  "datasets": [{
276
419
  "label": "Data",
277
420
  "data": [1, 2, 3],
278
- "backgroundColor": ["red", "green", "blue"], // Массив цветов
279
- "borderColor": ["red", "green", "blue"] // Массив цветов
421
+ "backgroundColor": ["red", "green", "blue"],
422
+ "borderColor": ["red", "green", "blue"]
280
423
  }]
281
424
  }
425
+ },
426
+ "myimage": {
427
+ "type": "pollinations",
428
+ "config": {
429
+ "prompt": "beautiful landscape with mountains",
430
+ "width": 600,
431
+ "height": 400
432
+ }
282
433
  }
283
434
  },
284
435
  "outputFile": "report.html"
@@ -313,7 +464,7 @@
313
464
  <title>Report</title>
314
465
  <style>
315
466
  body { font-family: Arial, sans-serif; }
316
- .chart-container { margin: 20px 0; }
467
+ .chart-container, .image-container { margin: 20px 0; }
317
468
  </style>
318
469
  <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
319
470
  </head>
@@ -322,6 +473,10 @@
322
473
  <div class="chart-container">
323
474
  <!-- Chart.js chart code -->
324
475
  </div>
476
+ <div class="image-container">
477
+ <!-- Generated image -->
478
+ <img src="https://image.pollinations.ai/prompt/beautiful%20landscape%20with%20mountains" alt="beautiful landscape with mountains">
479
+ </div>
325
480
  </body>
326
481
  </html>
327
482
 
@@ -330,15 +485,19 @@
330
485
 
331
486
  ## Частые ошибки и как их избежать
332
487
 
333
- 1. **Ошибка формата цвета**: Передача `borderColor` или `backgroundColor` как строки вместо массивов
488
+ 1. **Ошибка формата параметров**: Передача `elements` как строки вместо объекта
489
+ - ❌ Неправильно: `"elements": "{\"mychart\":{...}}"`
490
+ - ✅ Правильно: `"elements": {"mychart":{...}}`
491
+
492
+ 2. **Ошибка формата цвета**: Передача `borderColor` или `backgroundColor` как строк вместо массивов
334
493
  - ❌ Неправильно: `"borderColor": "red"`
335
494
  - ✅ Правильно: `"borderColor": ["red"]`
336
495
 
337
- 2. **Ошибка формата данных**: Передача числовых данных как отдельных значений вместо массивов
496
+ 3. **Ошибка формата данных**: Передача числовых данных как отдельных значений вместо массивов
338
497
  - ❌ Неправильно: `"data": 10`
339
498
  - ✅ Правильно: `"data": [10]`
340
499
 
341
- 3. **Ошибка формата меток**: Передача меток как отдельных значений вместо массивов
500
+ 4. **Ошибка формата меток**: Передача меток как отдельных значений вместо массивов
342
501
  - ❌ Неправильно: `"labels": "Январь"`
343
502
  - ✅ Правильно: `"labels": ["Январь"]`
344
503
 
@@ -348,5 +507,7 @@
348
507
  2. Если какой-либо шаг завершается ошибкой, сообщите пользователю об этом и предложите решение
349
508
  3. Убедитесь, что все пути к файлам корректны и файлы действительно существуют
350
509
  4. При работе с Claude Desktop используйте параметр `tempDirectory` при генерации отчетов для избежания проблем с правами доступа
510
+ 5. Создавайте отчеты с красивым оформлением, используя заголовки, списки и другие элементы форматирования
511
+ 6. Добавляйте в отчеты диаграммы и изображения для лучшей визуализации данных
351
512
 
352
513
  Следование этим инструкциям обеспечит качественное и полное взаимодействие с пользователем при работе с инструментом генерации отчетов.
package/dist/index.js CHANGED
@@ -102,7 +102,7 @@ if (process.argv.length === 2) {
102
102
  // No command specified, run in stdio mode using MCP SDK
103
103
  const mcpServer = new McpServer({
104
104
  name: "report_gen_mcp",
105
- version: "1.3.0",
105
+ version: "1.3.2",
106
106
  }, {
107
107
  // Disable health check to prevent automatic calls
108
108
  capabilities: {
@@ -100,18 +100,69 @@ export async function generateReport(document, elements, outputFile) {
100
100
  // Wrap in full HTML template with Chart.js library
101
101
  const template = `
102
102
  <!DOCTYPE html>
103
- <html lang="en">
103
+ <html lang="ru">
104
104
  <head>
105
105
  <meta charset="UTF-8">
106
- <title>Report</title>
106
+ <title>Отчет</title>
107
107
  <style>
108
- body { font-family: Arial, sans-serif; }
109
- .chart-container, .image-container { margin: 20px 0; }
108
+ body {
109
+ font-family: Arial, sans-serif;
110
+ margin: 40px;
111
+ background-color: #f5f5f5;
112
+ }
113
+ .container {
114
+ max-width: 1200px;
115
+ margin: 0 auto;
116
+ background-color: white;
117
+ padding: 30px;
118
+ border-radius: 10px;
119
+ box-shadow: 0 0 10px rgba(0,0,0,0.1);
120
+ }
121
+ h1, h2, h3 {
122
+ color: #333;
123
+ }
124
+ h1 {
125
+ border-bottom: 2px solid #3498db;
126
+ padding-bottom: 10px;
127
+ }
128
+ h2 {
129
+ border-left: 4px solid #3498db;
130
+ padding-left: 15px;
131
+ }
132
+ .chart-container, .image-container {
133
+ margin: 30px 0;
134
+ text-align: center;
135
+ }
136
+ .chart-container canvas, .image-container img {
137
+ max-width: 100%;
138
+ height: auto;
139
+ border: 1px solid #ddd;
140
+ border-radius: 5px;
141
+ }
142
+ p {
143
+ line-height: 1.6;
144
+ text-align: justify;
145
+ }
146
+ ul, ol {
147
+ margin: 20px 0;
148
+ padding-left: 30px;
149
+ }
150
+ li {
151
+ margin: 10px 0;
152
+ }
153
+ strong {
154
+ color: #e74c3c;
155
+ }
156
+ em {
157
+ color: #2ecc71;
158
+ }
110
159
  </style>
111
160
  <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
112
161
  </head>
113
162
  <body>
114
- <%- htmlContent %>
163
+ <div class="container">
164
+ <%- htmlContent %>
165
+ </div>
115
166
  </body>
116
167
  </html>
117
168
  `;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vint.tri/report_gen_mcp",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "CLI tool for generating HTML reports with embedded charts",
5
5
  "main": "dist/index.js",
6
6
  "bin": {