Files
kompas3d-mcp/README.md
T
mikhail 28d2ae3868 feat(inspection): структурное «зрение» модели — осмотр без снимка
Новый слой «модель как данные» (приоритетный над model_snapshot):
- describe_model — структурный «паспорт» детали одним вызовом (габарит,
  МЦХ, тела, сводка топологии, дерево построения с параметрами, переменные)
- list_features / list_bodies / list_variables
- describe_face / describe_edge (drill-down по индексу)
- measure (расстояние/угол между гранями/рёбрами/вершинами)
- model_snapshot понижен до fallback для визуально-пространственных вопросов

Реализация: ModelInspectionService (COM) + чистый InspectionText (рендер,
группировка, детект «импорт без истории») + record-модели; InspectionTools.
Дерево читается через ksPart.GetFeature()->SubFeatureCollection; точный тип
и параметры операций берутся из GetObject()->GetDefinition() (ksFeature.type
отдаёт лишь coarse o3d_entity).

Снимок дерева также включает слои conversion (STEP), editing (move_face/solid)
и validation, развивавшиеся параллельно. Полный прогон: 61 тест зелёный,
43 MCP-инструмента. Документация (README, ARCHITECTURE, OPEN_QUESTIONS,
CLAUDE.md, presentation.html) синхронизирована.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 18:44:38 +03:00

6.7 KiB

kompas3d-mcp

MCP-сервер для управления CAD-системой КОМПАС-3D (АСКОН) языковой моделью.

Сервер — это COM-клиент КОМПАС-3D: он подключается к установленному КОМПАС и предоставляет LLM набор инструментов для создания документов, построения 3D-деталей (эскиз → выдавливание), импорта/экспорта STEP, работы со сборками, структурного осмотра модели (describe_model — дерево операций, тела, переменные, топология одним вызовом) и снимка модели (агент «видит» результат).

Принцип: MCP транслирует возможности SDK КОМПАС в общие инструменты (не под конкретную задачу). Поверх MCP — навык .claude/skills/kompas-3d/ с методикой работы (playbook'и, эвристики, обкатанные в usecases/).

Подробности: docs/ARCHITECTURE.md · план — docs/IMPLEMENTATION_PLAN.md · спорные вопросы — docs/OPEN_QUESTIONS.md · обзор — docs/presentation.html

Требования

  • Windows x64, установленный КОМПАС-3D (разрабатывалось на v24 Home).
  • .NET SDK 8+ (собирается и на SDK 10; целевой фреймворк net8.0-windows).

Сборка и запуск

dotnet build -c Release
# сервер (stdio):
dotnet run --project src/Kompas.Mcp.Host -c Release
# или собранный exe:
src/Kompas.Mcp.Host/bin/Release/net8.0-windows/kompas-mcp.exe

Подключение к MCP-клиенту (stdio)

{
  "mcpServers": {
    "kompas3d": { "command": "C:\\путь\\к\\kompas-mcp.exe", "args": [] }
  }
}

Инструменты (43 инструмента)

Группа Инструменты
System kompas_connect, kompas_status, kompas_set_visible
Documents document_create, document_open, document_save, document_save_as, document_close, document_active
Sketch sketch_create, sketch_create_on_face, sketch_create_on_face_index, sketch_add_line, sketch_add_circle, sketch_add_rectangle, sketch_add_axis, sketch_close
Features extrude_boss, extrude_cut, revolve_boss, revolve_cut, fillet_edge, chamfer_edge, fillet_edge_index, chamfer_edge_index, rebuild
Edit move_face (прямое редактирование: сдвинуть грань на N мм вдоль нормали)
Inspection describe_model, list_features, list_bodies, list_variables, describe_face, describe_edge, measure
Vision model_snapshot (PNG-снимок; fallback — сначала describe_model)
Query get_part_info, get_bounding_box, list_faces, list_edges, list_components
Conversion import_step, export_step
Validation validate_part

Типовой сценарий

kompas_connectdocument_create partsketch_create XOYsketch_add_circlesketch_closeextrude_bossdescribe_model → (повтор для следующих элементов).

describe_model предпочтителен перед model_snapshot: отдаёт структурный «паспорт» детали (дерево операций, тела, переменные, топологию, МЦХ) без расхода токенов на изображение.

⚠️ Вызовы зависимых инструментов выполняйте последовательно (дождавшись ответа): сессия построения хранит эскизы по id, а сервер обрабатывает запросы конкурентно.

Структура

src/Kompas.Mcp.Core/   COM-слой: STA-диспетчер, подключение, документы, эскизы/операции, конвертация, снимок, инспекция модели
src/Kompas.Mcp.Host/   MCP-сервер (stdio) + определения инструментов
tests/Kompas.Mcp.Tests/ 60 тестов: unit + integration (integration требуют КОМПАС)
libs/kompas-interop/   вендорские interop-сборки КОМПАС (из SDK Samples/Common)
docs/                  архитектура, план, презентация, навигатор по справке SDK
usecases/              полигон обкатки подходов (в .gitignore); приёмы поднимаются в навык kompas-3d
.claude/skills/        навыки: docs-delegate, kompas-sdk-research (+ kdoc.py), kompas-3d (методика)

Тесты

dotnet test                                   # все (integration требуют КОМПАС)
dotnet test --filter "Category=Unit"          # только unit (без COM)
dotnet test --filter "Category=Integration"   # только integration

Архитектура (кратко)

  • STA-поток (KompasDispatcher) владеет всеми COM-вызовами — КОМПАС однопоточный STA.
  • Подключение через API5 KompasObject (KOMPAS.Application.5) → API7 IApplication (ksGetApplication7).
  • 3D строится через API5 ksPart (эскизы, выдавливание, вращение, скругление/фаска); снимок — ksDocument3D.SaveAsToRasterFormat. Прямое редактирование импортированной B-rep (move_face) — через API7 IPart7.FindObjectsByPoint + FaceMover. Структурный осмотр (describe_model и др.) — через ModelInspectionService (дерево операций via ksPart.GetFeature(), тела via BodyCollection(), переменные via VariableCollection(), измерения via ksMeasurer).
  • STEP импорт/экспорт — IKompasDocument3D1.ConvertFromAdditionFormat/ConvertToAdditionFormat через встроенный конвертер.
  • MCP — официальный C# SDK ModelContextProtocol, транспорт stdio, логи в stderr.

Лицензирование

libs/kompas-interop/*.dll — interop-сборки АСКОН из состава SDK КОМПАС-3D; распространяются согласно условиям АСКОН. Для работы требуется установленный КОМПАС-3D.