Skip to main content
Glama
Christancho-co

solidworks-mcp

solidworks-mcp

MCP-сервер, который управляет локальной установкой SOLIDWORKS для создания и изменения параметрических твердотельных моделей.

Проверено на SOLIDWORKS 2026 SP0 (ревизия 34.0.0) в Windows 11.

Как это работает

MCP client  ──stdio──►  solidworks-mcp  ──COM──►  SLDWORKS.exe

SOLIDWORKS предоставляет классический COM-API для автоматизации. Сервер подключается к запущенному экземпляру (или запускает его), и каждый инструмент отображается на этот API.

Все длины указаны в миллиметрах, все углы — в градусах. Внутри API SOLIDWORKS использует метрическую систему СИ; преобразование происходит на границе инструментов.

Related MCP server: SolidworksMCP

Требования

  • Установленный и лицензированный SOLIDWORKS на той же машине.

  • Python 3.12+ (64-битный) — он должен соответствовать архитектуре SOLIDWORKS, иначе COM не свяжется.

  • uv для управления зависимостями.

Установка

uv sync

Регистрация в MCP-клиенте

Для Claude Code:

claude mcp add solidworks -- uv --directory E:\solid run solidworks-mcp

Для клиента, который читает JSON-конфигурацию:

{
  "mcpServers": {
    "solidworks": {
      "command": "uv",
      "args": ["--directory", "E:\\solid", "run", "solidworks-mcp"]
    }
  }
}

Инструменты

Сеанс и документы — solidworks_status, new_part, open_part, save_part, close_part

Эскизы — list_planes, start_sketch, start_sketch_on_face, sketch_line, sketch_centerline, sketch_circle, sketch_rectangle, sketch_arc, sketch_polygon, sketch_ellipse, add_sketch_dimension, add_sketch_relation, finish_sketch

Элементы — extrude, cut_extrude, revolve, fillet, select_entity, clear_selection

Параметрическое управление — list_features, list_dimensions, set_dimension, add_equation, list_equations, rebuild

Проверка — get_measurements, capture_view

Практический пример

Создание пластины 80 × 50 × 10 мм с отверстием, а затем параметрическое управление ею:

new_part
start_sketch(plane="front")
sketch_rectangle(0, 0, 80, 50)
add_sketch_dimension(entities=[[40, 0]], value=80)   -> "D1@Croquis1"
add_sketch_dimension(entities=[[0, 25]], value=50)   -> "D2@Croquis1"
finish_sketch
extrude(depth=10)

start_sketch(plane="front")
sketch_circle(40, 25, 8)
finish_sketch
cut_extrude(depth=10, end_condition="through_all", reverse=True)

fillet(radius=5, edges=[[0,0,5], [80,0,5], [80,50,5], [0,50,5]])

set_dimension("D1@Croquis1", 120)   -> the solid rebuilds to 120 mm wide
get_measurements                    -> bounding box 120 x 50 x 10 mm
capture_view("isometric")

Полезно знать

Эскизы, созданные через API, не имеют размеров. SOLIDWORKS добавляет управляющие размеры только по запросу, поэтому эскиз, нарисованный только инструментами sketch_*, не имеет чем управлять. Вызывайте add_sketch_dimension, пока эскиз ещё открыт, если планируете изменять геометрию позже.

Направление выреза следует нормали эскиза. Для эскиза на фронтальной плоскости, вырезающего тело, которое было выдавливанием создано от неё, требуется reverse=True, иначе вырез уходит в пустоту и завершается ошибкой.

Имена базовых плоскостей локализованы. В испанской установке элементы называются Croquis1 и Saliente-Extruir1. Инструменты принимают логические псевдонимы front/top/right и определяют их по позиции в дереве элементов, поэтому работают независимо от языка интерфейса. list_planes сообщает фактические имена.

SOLIDWORKS должен быть запущен. Поддерживаемого безголового режима нет. Сервер запускает приложение, если оно ещё не открыто.

Модальные диалоги блокируют COM. add_sketch_dimension временно отключает настройку «ввод значения размера», которая иначе открыла бы модальное окно и зависла бы при вызове, и восстанавливает её после.

Примечания по реализации

Две особенности pywin32 формируют код, и о них легко споткнуться:

  • COM-члены без аргументов вызываются автоматически при обращении к атрибуту. При позднем связывании doc.GetTitle возвращает строку заголовка; doc.GetTitle() вызывает TypeError: 'str' object is not callable. Члены с одним или несколькими аргументами вызываются обычным образом.

  • Типизированные null и входные/выходные параметры требуют явных VARIANT. Необязательные интерфейсные аргументы отклоняют голый None с ошибкой «Type mismatch» и требуют VARIANT(VT_DISPATCH, None); выходные параметры ошибок и предупреждений требуют VARIANT(VT_BYREF | VT_I4, 0), при этом результат считывается из .value.

COM-объекты живут в однопотоковом апартаменте, поэтому com_bridge.py пропускает каждый вызов через один выделенный поток. Значения перечислений в constants.py были прочитаны из swconst.tlb, а не переписаны из документации, потому что некоторые отличаются от часто цитируемых значений — swEndCondThroughAllBoth равно 9, а не 8.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to automate SolidWorks (open/save parts, modify dimensions, export STEP) via COM, and optionally generate geometry using build123d code-CAD with PNG previews.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables control of a live SOLIDWORKS session through the Windows COM API, providing native sketch, feature, body, reference-geometry, view, probe, and export operations, along with transactional CAD plans, parametric sketches, multibody tools, and deterministic raster-to-sketch vectorization pipelines.
    1
    -
  • A
    license
    B
    quality
    B
    maintenance
    Enables MCP clients like Claude to automate SOLIDWORKS 2025 and SOLIDWORKS CAM via COM, covering parts, assemblies, drawings, and CAM toolpaths. It generates real geometry, mass properties, and posted G-code files directly on disk.
    40
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to build, measure, verify, and correct parametric SolidWorks parts and assemblies locally via the COM API, supporting operations like sketching, extruding, modeling, dimensioning, material assignment, export, and assembly mating.
    MIT