kompas-mcp

mcp
Security Audit
Warn
Health Warn
  • No license — Repository has no license file
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 3 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

MCP-сервер автоматизации КОМПАС-3D v22: Чистый C# без зависимостей.

README.md

kompas-mcp — MCP-сервер автоматизации КОМПАС-3D

MCP-сервер (stdio, построчный JSON-RPC) с семантическими инструментами поверх
проверенных идиом API-5/API-7 КОМПАС-3D v22. Без внешних зависимостей: чистый C#
(сборка через csc.exe из .NET Framework 4). Позволяет любому MCP-клиенту
(Claude Code, Claude Desktop и др.) строить параметрические детали и чертежи
по ЕСКД одной фразой.

Возможности (51 инструмент)

  • Инфраструктура: ping, kompas_status, kompas_start, kompas_show,
    kompas_stop, list_open_documents, kill_kompas
  • 2D-чертежи: форматы A0–A4, виды, линии/дуги/окружности, размеры
    (линейные/диаметральные/радиальные/угловые), штриховка, шероховатость,
    основная надпись (штамп), техтребования, экспорт в PNG,
    композит circle_array (отверстия по окружности с осевыми крестами)
  • 3D-детали: эскизы на плоскостях (в т.ч. смещённых), выдавливание/вырезы,
    вращения, отверстия, фаски/скругления, массивы, массовые характеристики,
    рендер в PNG (работает даже в невидимом режиме)
  • Расчёты: библиотека материалов, допуски и посадки ЕСДП (ГОСТ 25346/25347),
    моменты инерции сечений
  • Стандартные изделия (std_part, генераторы по таблицам ГОСТ): болты
    ГОСТ 7805, гайки ГОСТ 5915, шайбы ГОСТ 11371, шариковые подшипники ГОСТ 8338
  • Зубчатые передачи: эвольвентная геометрия ГОСТ 16532 (gear_calc,
    gear_wheel — 3D-колесо с эвольвентным профилем зуба; масса сходится с
    shoelace-прогнозом в пределах 0.08%); чертёж колеса по ГОСТ 2.402
    (gear_drawing); сборка пары в зацеплении (gear_pair)
  • Конические и червячные передачи: геометрия конического колеса по
    ГОСТ 19624 (bevel_gear_drawing — осевой разрез + торцевой вид + таблица
    параметров), червяк и червячное колесо по ГОСТ 19672/19036
    (worm_drawing, worm_wheel_drawing)
  • Пружины: расчёт по ГОСТ 13765 (spring_calc), 2D-чертёж по
    ГОСТ 2.401 (spring_drawing), 3D-модель через спираль +
    кинематическое выдавливание (spring_create)

Быстрый старт

  1. Соберите сервер (Сборка) и подключите к клиенту
    (Подключение к MCP-клиенту).
  2. Запросите у Claude то, что нужно построить, обычным языком:
    • «Нарисуй чертёж фланца Ø100 с центральной ступицей Ø45 и 6 отверстиями
      Ø8 на окружности Ø70»;
    • «Сделай втулку Ø60×40 из стали 45 и скажи массу»;
    • «Построй зубчатое колесо m=2, z=40, шириной 20, отверстием Ø20»;
    • «Рассчитай посадку H7/p6 для Ø30»;
    • «Сделай пружину: проволока Ø2, виток Ø14, 10 витков».
  3. Артефакты появляются в mcp-out\ рядом с exe (детали .m3d, чертежи
    .cdw, рендер .png).

Сборка

Требуется установленный КОМПАС-3D v22 (SDK не обязателен — нужны только
interop-DLL) и .NET Framework 4 (csc.exe входит в Windows).

  1. Скопируйте interop-DLL из поставки КОМПАС (Kompas6API5.dll, KompasAPI7.dll,
    Kompas6Constants.dll, Kompas6Constants3D.dll, KAPITypes.dll) в папку
    lib\ рядом с build.ps1 (либо рядом с build.ps1 в корне репозитория —
    скрипт ищет оба места; DLL должны лежать рядом с exe после сборки, скрипт
    копирует их сам).
  2. Сборка:
    powershell -ExecutionPolicy Bypass -File build.ps1    # → KompasMcp.exe
    
  3. Проверка без клиента:
    powershell -ExecutionPolicy Bypass -File tests\protocol_test.ps1
    

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

Claude Code

claude mcp add kompas -- C:/путь/KompasMcp.exe

⚠️ claude mcp add с -- съедает обратные слэши — используйте прямые
(/). Проверка: claude mcp list должно показать ✔ Connected.

Claude Desktop

claude_desktop_config.json:

{
  "mcpServers": {
    "kompas": {
      "command": "C:\\путь\\KompasMcp.exe"
    }
  }
}

Другие MCP-клиенты

Сервер говорит по stdio: построчный JSON-RPC (не LSP-фрейминг). Достаточно
запустить KompasMcp.exe как дочерний процесс и общаться строками JSON.
Пример прямой проверки:

KompasMcp.exe < tests\smoke_3d.jsonl

Smoke-сценарии

В tests\ лежат готовые построчные JSON-RPC сценарии (аргументы вызовов —
готовый «рецепт» последовательности тулов):

Сценарий Что строит
smoke_flange.jsonl чертёж фланца со штампом, размерами, штриховкой (36 вызовов)
smoke_3d.jsonl 3D-детали: втулка, крышка фланцевая
smoke_std.jsonl крепёж: болт, гайка, шайба, подшипник
smoke_gear.jsonl зубчатые колёса m=2, z=20/40
smoke_gear_pair.jsonl 3D-сборка пары колёс в зацеплении
smoke_spring.jsonl пружина d2/D14/n10 (2D + 3D)
smoke_spec.jsonl спецификация форма 1 ГОСТ 2.106
smoke_gears.jsonl коническое колесо, червяк, червячное колесо (2D-чертежи)
smoke_std2.jsonl крепёж М27-М48, шпилька, штифты

tests\area_samples.ps1 — shoelace-прогноз массы эвольвентного профиля
(samples=1/3/6) для сверки с массой КОМПАСа; tooth_thickness_check.ps1 —
проверка толщины зуба по окружности произвольного радиуса.

Жизненный цикл КОМПАСа

  • MCP держит СВОЙ экземпляр (KOMPAS.Application.5); каждый
    Activator.CreateInstance поднимает новый процесс KOMPAS.Exe, поэтому PID
    фиксируется дифференциальным снапшотом процессов.
  • kompas_start (visible=false по умолчанию) → инструменты → kompas_stop.
  • Чужие запущенные экземпляры КОМПАСа не затрагиваются.
  • COM-классы регистрируются при первом запуске KOMPAS.Exe: если после
    переустановки КОМПАСа сервер пишет «0x80040154», один раз запустите
    КОМПАС вручную.

Копилот «Давинчи»

Библиотека КОМПАСа davinci\DavinciNative.rtw — управляемая сборка с
native-экспортами (LIBRARYID/LIBRARYENTRY/LIBRARYNAMEW/LibInterfaceNotifyEntry,
IL-экспорты добавляет inject_exports.py, сборка — davinci\build-native.ps1,
компилятор C++ не нужен) и меню в Win32-ресурсах (lib.rc).

Подключение к запущенному КОМПАСу — davinci\attach_davinci.exe
(API-5 ksAttachKompasLibrary) или через UI КОМПАСа. Прямое «Открыть…»
managed-.rtw в КОМПАСе не работает — нужны native-экспорты.

После подключения библиотека регистрирует приложение КОМПАСа в ROT под
KOMPAS_DAVINCHI_<PID> (LibInterfaceNotifyEntry) и добавляет меню «Давинчи»:

  • «Панель» — запускает KompasMcp.exe --panel --attach --rot-name KOMPAS_DAVINCHI_<PID> (путь из davinci.json рядом с библиотекой;
    CreateNoWindow — без пустой консоли).
    Панель — чат с копилотом: сообщения гоняются headless-клиенту claude -p
    с подключённым этим MCP-сервером в attach-режиме; отправка — Enter
    (Shift+Enter — перенос строки), есть переключатель тёмной темы, окно
    сворачивается штатной кнопкой. Панель можно скрыть и снова открыть из меню
    (single-instance — повторный запуск только выводит окно на передний план).
    Вложения чата копируются в <workspace>\attach.
  • «Диагностика» — ROT-моникер, путь к логу.

Аутентификация claude: панельный процесс наследует окружение КОМПАСа, где
переменные прокси/ключей (ANTHROPIC_*) могут отсутствовать — claude тогда
отвечает «Not logged in». ClaudeRunner перед спавном доливает актуальное
окружение пользователя из реестра (HKCU\Environment + HKLM), так что
отдельного логина в Давинчи не нужно — достаточно, чтобы claude -p работал
в обычном терминале пользователя.

Панельный процесс живёт, пока открыта панель, и при закрытии останавливает
выполняющийся запрос копилота. Если КОМПАС закрыли, пока панель была открыта,
сервер отвязывается от мёртвого COM-объекта: статус панели показывает
«закрыт», тулы возвращают понятную ошибку, а после перезапуска КОМПАСа
подключение восстанавливается автоматически. Список библиотек у КОМПАС
персистентен — подключать повторно обычно не нужно.

Пересборка DavinciNative.rtw при подключённом КОМПАСе невозможна (файл
заблокирован процессом КОМПАСа) — перезапустите КОМПАС или дождитесь
выгрузки библиотеки.

Грабли, учтённые в реализации:

  • .rtw загружен КОМПАСом нативно, поэтому CLR ищет зависимые interop-сборки
    от каталога KOMPAS.Exe, где их нет — первый же клик по меню падал с
    FileNotFoundException (весь процесс КОМПАСа). DavinciNative ставит
    AssemblyResolve на свою папку и предзагружает interop из ранних
    экспортов (attach). Проверка без КОМПАСа: davinci\testhost\entry_test.exe <путь.rtw> — имитирует LoadLibrary+GetProcAddress из папки без interop.
  • lib.rc в UTF-8 без #pragma code_page(65001) даёт мусор в меню
    (rc.exe читает исходник в системной кодировке).

Журнал и артефакты

kompas-mcp.log рядом с exe — все вызовы и ошибки (stdout занят протоколом).
Артефакты по умолчанию пишутся в mcp-out\ рядом с exe. Относительные пути в
save_part/open_part разрешаются от текущей директории сервера —
предпочтительно передавать абсолютный путь.

Планы

Проект развивается по фазам; каждый пункт оформляется как обычный инструмент
MCP с зашитыми идиомами API.

Готово (2026-09-30): чертёж зубчатого колеса ГОСТ 2.402 (gear_drawing),
сборка «пара колёс в зацеплении» (gear_pair), чертёж пружины ГОСТ 2.401
(spring_drawing), расширение крепежа (М27-М48, шпильки, штифты),
композиты dim_group/cut_line, экспорт DXF (export_dxf).

Ближайшие шаги (2D-документация):

  • пружины растяжения с витками под зацеп; корректная масса в момент создания
    (GetMass для кинематических тел отдаёт 0 до переоткрытия файла);
  • подшипники других серий (211-215 / 309-314); сборочный чертёж с
    деталями-представителями;
  • 3D-модели конического колеса, червяка и червячного колеса
    (2D-чертежи готовы).

Дальше:

  • спецификации по ЕСКД (готово: spec_drawing — форма 1 ГОСТ 2.106
    как 2D-таблица; нативные объекты СПС headless не создаются, проверено);
  • детали-представители и упрощения для сборочных чертежей;
  • конические и червячные передачи (2D-чертежи готовы: bevel_gear_drawing,
    worm_drawing, worm_wheel_drawing; 3D-модели и расчёт прочности — дальше);
  • прикладные проверки по ГОСТ (передаточные отношения, прочность зуба,
    жёсткость пружин) с выдачей отчёта в техтребования чертежа;
  • 3D-модели конических/червячных колёс и червяка.

Reviews (0)

No results found