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.
- package/index.js +35 -90
- 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
|
+
* 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
|
-
ВАЖНО: Генерируй
|
|
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
|
-
"
|
|
536
|
-
"y": 200, // координата Y (опционально, сохраняется если указана)
|
|
537
|
-
"connections": [{"to": "id2"}] // АЛЬТЕРНАТИВА: связи внутри элемента (локальный формат)
|
|
535
|
+
"description": "Описание", // подробное описание (опционально)
|
|
536
|
+
"connections": [{"to": "target_id", "label": "подпись"}] // ИСХОДЯЩИЕ СВЯЗИ (опционально)
|
|
538
537
|
}
|
|
539
538
|
|
|
540
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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.
|
|
1493
|
+
console.error("SchemeOG MCP Server v2.5 запущен");
|
|
1549
1494
|
}
|
|
1550
1495
|
|
|
1551
1496
|
main().catch(console.error);
|