Зафиксирован фундамент проекта MCP-сервера КОМПАС-3D: - docs/: ARCHITECTURE.md, IMPLEMENTATION_PLAN.md, presentation.html - tools/kdoc.py: навигатор по справке SDK - libs/kompas-interop/: вендорские interop-сборки КОМПАС из SDK - src/Kompas.Mcp.ConnectSpike: net8.0-windows консоль, доказывает работу COM-интеропа и attach/launch подключения к КОМПАС (IApplication, версия 24.0) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
6.7 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project goal
Build an MCP (Model Context Protocol) server that lets an LLM drive the CAD system КОМПАС-3D (ASCON). The server exposes КОМПАС operations (create/open documents, build 2D geometry, 3D parts and assemblies, read/write parameters, run macros) as MCP tools.
Authoritative references:
- Offline SDK docs mirror in this repo:
docs/KOMPAS_SDK_ru-RU/— navigate it withtools/kdoc.py(see below). Prefer this over the web. - Online SDK docs: https://help.ascon.ru/KOMPAS_SDK/22/ru-RU/index.html
- Local SDK install:
C:\Program Files\ASCON\KOMPAS-3D v24 Home\SDK
Navigating the SDK docs (tools/kdoc.py)
docs/KOMPAS_SDK_ru-RU/ is a 26 000-page Help&Manual WebHelp export — raw HTML buried under header/footer/JS noise, with cryptic filenames. Do not browse it by hand. Use the helper:
python tools/kdoc.py search "<russian or interface keywords>" # find pages: prints "file.html\tTitle"
python tools/kdoc.py read <file.html> # print clean topic text (no markup)
python tools/kdoc.py build-index # regenerate the index (only if docs change)
search does AND-matching over titles + excerpts; read extracts just the topic body (breadcrumb path, data type, Automation/COM syntax, parameters, return value, notes). Example: search Visible IApplication → iapplication_visible.html, then read iapplication_visible.html.
The index lives at docs/kompas_sdk_index.tsv (filename<TAB>title<TAB>excerpt) and can also be searched with the Grep tool directly — handy for fanning out over many interface names at once.
The docs contain two parallel mirrors of the same interfaces:
- «API интерфейсов. Версия 7» — filenames without prefix (
iapplication_*,idocuments_*). This is the COM API7/API5 reference — the one this project uses. - «API интерфейсов. KsAPI» —
ksapi_*-prefixed filenames: the cross-platform Qt/C++ KsAPI flavour. Same concepts, different (non-COM) binding — ignore unless explicitly working with KsAPI.
Current state
The repository is empty / greenfield — no source, no git, no build system yet. The implementation language and MCP transport have not been chosen. Before writing code, decide and record (here) the stack. The natural fit is .NET / C# because the КОМПАС API ships as COM type libraries with first-class C# Interop samples (see SDK Samples/CSharp.zip), but a Python MCP server using pywin32/comtypes is also viable.
КОМПАС-3D API architecture (the critical context)
КОМПАС-3D is automated via a COM Automation API, Windows-only. КОМПАС-3D must be installed and running/launchable on the same machine — the MCP server is a COM client, not a standalone CAD engine. There are two coexisting API generations:
| Entry point | Namespace (C#) | Style | Use when | |
|---|---|---|---|---|
| API5 (legacy) | KompasObject |
Kompas6API5 |
procedural, flat | older features, 2D primitives, bootstrapping |
| API7 (modern, preferred) | IApplication / _Application |
KompasAPI7 |
OOP, interface-based | everything new — documents, 3D, parameters |
Constants live in separate libraries: Kompas6Constants, Kompas6Constants3D (C#), or ksConstants.h / ksConstants3D.h (C++).
Connection pattern (verified from Samples/CSharp.zip)
- Get the КОМПАС root object by COM ProgID. Verified on this machine (v24 Home):
KOMPAS.Application.7andKOMPAS.Application.5are registered;KOMPASLT.*is absent — the Home edition uses the regular (non-LT) ProgIDs. Resolution order:KOMPAS.Application.7— direct API7IApplication(preferred)KOMPAS.Application.5— API5KompasObject, thenksGetApplication7()KOMPASLT.Application.5— fallback for other installations- New instance:
Activator.CreateInstance(Type.GetTypeFromProgID(progId)) - Attach to a running instance:
Marshal.GetActiveObject(progId)
- If you entered via API5, obtain the modern application:
IApplication appl = (IApplication)kompas.ksGetApplication7();(viaKOMPAS.Application.7you already holdIApplication). - Set
appl.Visible = trueto show the КОМПАС window; drive documents via API7 interfaces (IKompasDocument2D,IKompasDocument3D, …).
The SDK C# samples are mostly КОМПАС plugin libraries (DLLs loaded into КОМПАС as ActiveX, entry methods like
ExternalRunCommand/ExternalMenuItem, registered via[ComRegisterFunction]). For an MCP server we want the opposite direction: a standalone external automation client that connects out-of-process via the ProgID pattern above. Read the samples for API usage, not for the plugin packaging/registration boilerplate.
SDK layout (read-only reference, not part of this repo)
Under C:\Program Files\ASCON\KOMPAS-3D v24 Home\SDK:
lib\*.tlb— COM type libraries to reference / generate interop from:kAPI5.tlb,kAPI7.tlb,ksConstants.tlb,ksConstants3D.tlb,kAPI2D5COM.tlb,kAPI3D5COM.tlb.lib64\— 64-bit import libs (kAPI7.lib,kAPI5.lib, …) and.afor C++/Builder.Include\— C++/Pascal headers (Ks_TLB.h,kAPI2D5COM.h,LDefin2D.pas, …).KsAPI\— the KsAPI (Qt/C++ cross-platform flavour):Include\KsAPI.h,ksConstants*.h,Lib64\ksAPI.lib, plusHelp\С чего начать.pdfand a Linux/Debian 12 build guide.Samples\— zipped examples per language:CSharp.zip,C++.zip,Pascal.zip,Basic.zip. InsideCSharp.zip, theStep1…Step12andStep2_API7_2D/Step2_API7_3Dprojects are the progressive tutorial;Gayka,SlideWrk,EventsAutoare larger feature demos.Help\KOMPAS_SDK_ru-RU.zipandKsAPI\Help\KsAPI_Help.zip— offline copy of the docs.
To inspect a sample without unpacking the whole archive: unzip -p "<path>\Samples\CSharp.zip" "Automation/Step2_API7_3D/Step2_API7_3D.cs". Note the .cs sample sources are Windows-1251 encoded (Cyrillic comments appear garbled in UTF-8 tools).
Conventions / gotchas
- Windows-only & 64-bit: target x64 to match the installed КОМПАС; mixing bitness breaks COM activation. КОМПАС v24 Home is the installed edition — some full-edition API features may be unavailable.
- Encoding: SDK source samples are CP1251. New project files should be UTF-8.
- COM lifetime: release COM objects (
Marshal.ReleaseComObject) / scope them; a leaked reference keeps the КОМПАС process alive. - API choice: prefer API7 for new tool implementations; drop to API5 only for things API7 doesn't expose.