schemeog-mcp 2.5.0 → 2.5.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.
Files changed (2) hide show
  1. package/index.js +35 -90
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * SchemeOG MCP Server v2.4
4
+ * SchemeOG MCP Server v2.5
5
5
  *
6
6
  * MCP сервер для работы со схемами, проектами и тегами в SchemeOG Cloud.
7
7
  *
@@ -482,8 +482,7 @@ const TOOLS = [
482
482
  Возвращает:
483
483
  - name: название схемы
484
484
  - description: описание
485
- - elements: массив элементов (card или condition)
486
- - connections: массив связей между элементами
485
+ - elements: массив элементов (card или condition) со связями внутри
487
486
  - tagsDictionary: справочник тегов
488
487
 
489
488
  Формат элемента:
@@ -492,12 +491,15 @@ const TOOLS = [
492
491
  "type": "card", // card или condition
493
492
  "title": "Название", // заголовок
494
493
  "color": "light_blue", // ТОЛЬКО: white, light_blue, light_green, light_yellow, light_orange, light_red, light_purple, light_gray, light_pink, light_teal
494
+ "borderColor": "blue", // default, blue, green, orange, purple, red, teal, yellow, gray, black
495
495
  "description": "Текст", // описание
496
- "tags": ["тег1"] // массив тегов
496
+ "tags": ["тег1"], // массив тегов
497
+ "connections": [{"to": "target_id", "label": "подпись"}] // исходящие связи
497
498
  }
498
499
 
499
500
  ВАЖНО: НЕ используй x, y, width, height — они рассчитываются автоматически!
500
- ВАЖНО: Цвета ТОЛЬКО именованные (light_blue), НЕ HEX (#FFFFFF)!`,
501
+ ВАЖНО: Цвета ТОЛЬКО именованные (light_blue), НЕ HEX (#FFFFFF)!
502
+ ВАЖНО: Связи указываются ВНУТРИ элементов в поле "connections"!`,
501
503
  inputSchema: {
502
504
  type: "object",
503
505
  properties: {
@@ -513,14 +515,13 @@ const TOOLS = [
513
515
  name: "create_schema",
514
516
  description: `Создать новую схему с элементами и связями.
515
517
 
516
- ВАЖНО: Генерируй сразу полную схему с elements, connections и tagsDictionary!
518
+ ВАЖНО: Генерируй схему с elements и tagsDictionary. Связи указывай ВНУТРИ элементов!
517
519
 
518
520
  Параметры:
519
521
  - name: название схемы (обязательно)
520
522
  - description: описание
521
523
  - project_id: ID проекта (опционально)
522
- - elements: массив элементов
523
- - connections: массив связей
524
+ - elements: массив элементов (со связями внутри)
524
525
  - tagsDictionary: справочник тегов (опционально)
525
526
 
526
527
  Формат элемента:
@@ -531,42 +532,13 @@ const TOOLS = [
531
532
  "color": "light_blue", // цвет фона: white, light_blue, light_green, light_yellow, light_orange, light_red, light_purple, light_gray, light_pink, light_teal
532
533
  "borderColor": "blue", // цвет обводки: default, blue, green, orange, purple, red, teal, yellow, gray, black
533
534
  "tags": ["тег1"], // массив названий тегов (опционально)
534
- "description": "Описание процесса", // подробное описание (опционально)
535
- "x": 100, // координата X (опционально, сохраняется если указана)
536
- "y": 200, // координата Y (опционально, сохраняется если указана)
537
- "connections": [{"to": "id2"}] // АЛЬТЕРНАТИВА: связи внутри элемента (локальный формат)
535
+ "description": "Описание", // подробное описание (опционально)
536
+ "connections": [{"to": "target_id", "label": "подпись"}] // ИСХОДЯЩИЕ СВЯЗИ (опционально)
538
537
  }
539
538
 
540
- КООРДИНАТЫ x/y: Можно указывать для сохранения позиции. Если не указаны рассчитываются автоматически.
541
-
542
- ДВА ФОРМАТА СВЯЗЕЙ (оба поддерживаются):
543
-
544
- 1. Облачный формат — connections отдельным массивом:
545
- {
546
- "elements": [...],
547
- "connections": [{"from": "id1", "to": "id2"}]
548
- }
549
-
550
- 2. Локальный формат — connections внутри каждого элемента:
539
+ СВЯЗИ (inline форматвнутри элемента):
551
540
  {
552
- "elements": [
553
- {"id": "id1", "title": "Card", "connections": [{"to": "id2"}]}
554
- ]
555
- }
556
-
557
- MCP автоматически извлекает связи из элементов и объединяет с массивом connections!
558
-
559
- Формат связи (облачный):
560
- {
561
- "from": "source_id", // ID элемента-источника
562
541
  "to": "target_id", // ID элемента-назначения
563
- "label": "подпись", // текст на связи (опционально)
564
- "style": "solid" // solid, dashed, dotted (опционально)
565
- }
566
-
567
- Формат связи (внутри элемента):
568
- {
569
- "to": "target_id", // ID элемента-назначения (from берётся из родительского элемента)
570
542
  "label": "подпись" // текст на связи (опционально)
571
543
  }
572
544
 
@@ -581,18 +553,12 @@ MCP автоматически извлекает связи из элемент
581
553
  {
582
554
  "name": "User Registration",
583
555
  "elements": [
584
- {"id": "start", "type": "card", "title": "Форма регистрации", "color": "light_green", "tags": ["пользователь"]},
585
- {"id": "validate", "type": "condition", "title": "Валидация", "color": "light_yellow", "tags": ["система"]},
586
- {"id": "save", "type": "card", "title": "Сохранение в БД", "color": "light_blue", "tags": ["система"]},
556
+ {"id": "start", "type": "card", "title": "Форма регистрации", "color": "light_green", "tags": ["пользователь"], "connections": [{"to": "validate"}]},
557
+ {"id": "validate", "type": "condition", "title": "Валидация", "color": "light_yellow", "tags": ["система"], "connections": [{"to": "save", "label": "OK"}, {"to": "error", "label": "ошибка"}]},
558
+ {"id": "save", "type": "card", "title": "Сохранение в БД", "color": "light_blue", "tags": ["система"], "connections": [{"to": "success"}]},
587
559
  {"id": "error", "type": "card", "title": "Ошибка", "color": "light_red", "tags": ["система"]},
588
560
  {"id": "success", "type": "card", "title": "Успех", "color": "light_green", "tags": ["пользователь"]}
589
561
  ],
590
- "connections": [
591
- {"from": "start", "to": "validate"},
592
- {"from": "validate", "to": "save", "label": "OK"},
593
- {"from": "validate", "to": "error", "label": "ошибка"},
594
- {"from": "save", "to": "success"}
595
- ],
596
562
  "tagsDictionary": [
597
563
  {"id": "tag-user", "name": "пользователь", "color": "#4CAF50"},
598
564
  {"id": "tag-system", "name": "система", "color": "#2196F3"}
@@ -629,20 +595,6 @@ MCP автоматически извлекает связи из элемент
629
595
  },
630
596
  },
631
597
  },
632
- connections: {
633
- type: "array",
634
- description: "Массив связей между элементами",
635
- items: {
636
- type: "object",
637
- properties: {
638
- from: { type: "string" },
639
- to: { type: "string" },
640
- label: { type: "string" },
641
- style: { type: "string", enum: ["solid", "dashed", "dotted"] },
642
- },
643
- required: ["from", "to"],
644
- },
645
- },
646
598
  tagsDictionary: {
647
599
  type: "array",
648
600
  description: "Справочник тегов схемы",
@@ -676,10 +628,21 @@ MCP автоматически извлекает связи из элемент
676
628
  - schema_id: ID схемы (обязательно)
677
629
  - name: новое название (опционально)
678
630
  - description: новое описание (опционально)
679
- - elements: новый массив элементов (опционально)
680
- - connections: новый массив связей (опционально)
631
+ - elements: новый массив элементов со связями внутри (опционально)
681
632
 
682
- Если elements или connections не указаны - они останутся прежними.`,
633
+ Формат элемента (такой же как в create_schema):
634
+ {
635
+ "id": "unique_id",
636
+ "type": "card", // card или condition
637
+ "title": "Название",
638
+ "color": "light_blue", // white, light_blue, light_green, light_yellow, light_orange, light_red, light_purple, light_gray, light_pink, light_teal
639
+ "borderColor": "blue", // default, blue, green, orange, purple, red, teal, yellow, gray, black
640
+ "tags": ["тег1"],
641
+ "description": "Описание",
642
+ "connections": [{"to": "target_id", "label": "подпись"}] // ИСХОДЯЩИЕ СВЯЗИ внутри элемента
643
+ }
644
+
645
+ Если elements не указаны - они останутся прежними.`,
683
646
  inputSchema: {
684
647
  type: "object",
685
648
  properties: {
@@ -697,12 +660,7 @@ MCP автоматически извлекает связи из элемент
697
660
  },
698
661
  elements: {
699
662
  type: "array",
700
- description: "Новый массив элементов (заменяет все существующие)",
701
- items: { type: "object" },
702
- },
703
- connections: {
704
- type: "array",
705
- description: "Новый массив связей (заменяет все существующие)",
663
+ description: "Новый массив элементов со связями внутри (заменяет все существующие)",
706
664
  items: { type: "object" },
707
665
  },
708
666
  },
@@ -1149,7 +1107,7 @@ URL: ${API_BASE_URL}/canvas?id=${result.schema.id}
1149
1107
  }
1150
1108
 
1151
1109
  case "replace_schema": {
1152
- const { schema_id, name, description, elements, connections } = args;
1110
+ const { schema_id, name, description, elements } = args;
1153
1111
 
1154
1112
  // Получаем текущую схему
1155
1113
  const currentResult = await apiRequest(`/schemas/${schema_id}`);
@@ -1165,26 +1123,13 @@ URL: ${API_BASE_URL}/canvas?id=${result.schema.id}
1165
1123
 
1166
1124
  // Обновляем данные только если переданы
1167
1125
  const newData = { ...currentData };
1168
- let extractedConnections = [];
1169
1126
  if (elements !== undefined) {
1170
1127
  const normalized = prepareElements(elements);
1171
1128
  newData.elements = normalized.elements;
1172
- extractedConnections = normalized.extractedConnections;
1129
+ // Связи извлекаются из элементов (inline формат)
1130
+ newData.connections = normalized.extractedConnections;
1173
1131
  warnings = normalized.warnings;
1174
1132
  }
1175
- if (connections !== undefined) {
1176
- // Объединяем переданные connections + извлечённые из элементов
1177
- newData.connections = [
1178
- ...prepareConnections(connections),
1179
- ...extractedConnections,
1180
- ];
1181
- } else if (extractedConnections.length > 0) {
1182
- // Если connections не переданы, но есть извлечённые — добавляем их к существующим
1183
- newData.connections = [
1184
- ...(currentData.connections || []),
1185
- ...extractedConnections,
1186
- ];
1187
- }
1188
1133
  updateBody.data = newData;
1189
1134
 
1190
1135
  const result = await apiRequest(`/schemas/${schema_id}`, {
@@ -1515,7 +1460,7 @@ async function main() {
1515
1460
  const server = new Server(
1516
1461
  {
1517
1462
  name: "schemeog-mcp",
1518
- version: "2.3.0",
1463
+ version: "2.5.0",
1519
1464
  },
1520
1465
  {
1521
1466
  capabilities: {
@@ -1545,7 +1490,7 @@ async function main() {
1545
1490
  const transport = new StdioServerTransport();
1546
1491
  await server.connect(transport);
1547
1492
 
1548
- console.error("SchemeOG MCP Server v2.4 запущен");
1493
+ console.error("SchemeOG MCP Server v2.5 запущен");
1549
1494
  }
1550
1495
 
1551
1496
  main().catch(console.error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "schemeog-mcp",
3
- "version": "2.5.0",
3
+ "version": "2.5.2",
4
4
  "description": "MCP Server for SchemeOG Cloud - Create and manage visual diagrams and flowcharts with AI assistance",
5
5
  "type": "module",
6
6
  "main": "index.js",