Skip to main content
Glama
tmkaio

solidworks-mcp

by tmkaio

solidworks-mcp

CI License: MIT Python 3.10+

MCP-сервер, который подключает Claude Desktop к SolidWorks через COM API и обеспечивает автоматический анализ деталей из листового металла для инструментальной и штамповочной промышленности.

Что он делает

Инженер-технолог может открыть Claude Desktop и сказать:

«Открой bracket.step, укажи толщину, все диаметры отверстий, количество гибов и экспортируй плоскую развёртку в DXF.»

Claude вызывает инструменты MCP, чтобы:

  1. Открыть STEP-файл в SolidWorks

  2. Распознать листовой металл, считать толщину и K-фактор

  3. Перечислить и сгруппировать все отверстия по диаметру

  4. Подсчитать и охарактеризовать каждый гиб (угол, радиус, длина)

  5. Развернуть деталь и экспортировать плоскую развёртку в DXF

  6. Вернуть структурированный отчёт об анализе

Экономия времени: 60–90 минут ручной проверки → ~60 секунд.

Related MCP server: Civil3D MCP Server

Попробуйте без SolidWorks

Большая часть этого проекта требует лицензионной установки SolidWorks, но analyze_step_standalone работает везде, где работает CadQuery. На тестовом образце из этого репозитория:

pip install -e .
conda install -c cadquery cadquery   # see docs/INSTALL.md for the pip route
python -c "
from mcp.server.fastmcp import FastMCP
from solidworks_mcp.solidworks_bridge import SolidWorksBridge
from solidworks_mcp.tools.analysis import register
import json
mcp = FastMCP('demo'); register(mcp, SolidWorksBridge())
fn = mcp._tool_manager._tools['analyze_step_standalone'].fn
print(json.dumps(fn(file_path='tests/fixtures/sample_part.step'), indent=2))
"

Фактический вывод для sample_part.step — пластины размером 100 x 60 x 2 мм с четырьмя сквозными отверстиями Ø6 мм (сокращено; полный результат также содержит file_path, отдельные границы ограничивающего параллелепипеда и примечание о единицах измерения):

{
  "file_size_kb": 33.48,
  "volume_mm3": 11773.81,
  "surface_area_mm2": 12564.6,
  "bounding_box": {
    "dimensions_mm": [100.0, 60.0, 2.0]
  },
  "center_of_mass_mm": { "x": 0.0, "y": 0.0, "z": 1.0 },
  "face_count": 10,
  "face_types": { "PLANE": 6, "CYLINDER": 4 },
  "estimated_thickness_mm": 2.0,
  "is_likely_sheet_metal": true
}

Четыре отверстия отображаются как четыре цилиндрические грани, а толщина выводится из наименьшего размера ограничивающего параллелепипеда.

Требования

Требование

Версия

Windows

10 или 11 (64-разрядная)

Python

3.10, 3.11 или 3.12

SolidWorks

Standard 2022 или новее (должна быть установлена и лицензирована)

Claude Desktop

последняя версия

SolidWorks должна быть установлена и активирована на том же компьютере, что и этот сервер. COM API требует полной версии приложения — SolidWorks PDM или Viewer недостаточно.

Быстрая установка

REM 1. Clone the repository
git clone https://github.com/tmkaio/solidworks-mcp.git
cd solidworks-mcp

REM 2. Create a virtual environment
python -m venv .venv
.venv\Scripts\activate

REM 3. Install the package
pip install -e .

REM 4. (Optional) Install CadQuery for standalone STEP analysis
conda install -c cadquery cadquery

Настройка Claude Desktop

Скопируйте claude_desktop_config.example.json и добавьте его содержимое в конфигурацию Claude:

Расположение: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "solidworks": {
      "command": "C:\\path\\to\\solidworks-mcp\\.venv\\Scripts\\python.exe",
      "args": ["-m", "solidworks_mcp.server"],
      "env": {
        "PYTHONPATH": "C:\\path\\to\\solidworks-mcp\\src",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

Перезапустите Claude Desktop. В панели чата должен появиться значок молотка (🔨).

Пошаговое руководство см. в docs/INSTALL.md.

Пример диалога

You: Open C:\parts\door_hinge.step and give me a full analysis.

Claude: [calls open_file, get_part_info, analyze_holes, analyze_bends]

        The door hinge is a sheet metal part:
        - Thickness: 2.00 mm (K-factor: 0.44)
        - Bounding box: 120 x 80 x 45 mm
        - Mass: 312 g
        - 12 holes: Ø6mm x 4, Ø8mm x 4, Ø12mm x 4
        - 3 bends: 90° x R2mm (two) and 45° x R3mm (one)
        - Complexity: medium

You: Export the flat pattern as DXF to C:\output\hinge_flat.dxf

Claude: [calls flatten_part, export_dxf, unflatten_part]
        Flat pattern exported: C:\output\hinge_flat.dxf (18.4 KB)
        Flat dimensions: 310 x 80 mm

Доступные инструменты

Подключение

Инструмент

Описание

solidworks_connect

Подключиться к SolidWorks (запустить, если не запущена)

solidworks_status

Проверить состояние подключения и активный документ

solidworks_disconnect

Освободить COM-ссылки

Файлы

Инструмент

Описание

open_file

Открыть STEP, SLDPRT, IGES и т.д.

close_file

Закрыть активный документ

save_file

Сохранить / Сохранить как

list_open_documents

Список всех открытых файлов

Анализ

Инструмент

Описание

get_part_info

Масса, объём, материал, признак листового металла

get_bounding_box

Д x Ш x В + диагональ

count_features_by_type

Гистограмма элементов

analyze_holes

Все отверстия, сгруппированные по диаметру

analyze_bends

Все гибы с углом/радиусом/длиной

get_geometry_stats

Краткое резюме + оценка сложности

generate_part_report

Полный отчёт в JSON + Markdown

analyze_step_standalone

SolidWorks не требуется — использует CadQuery

get_moments_of_inertia

Ixx/Iyy/Izz + произведения инерции

analyze_faces

Разбивка по типам граней (плоские/цилиндрические и т.д.)

Листовой металл

Инструмент

Описание

is_sheet_metal

Проверка True/False

get_sheet_metal_properties

Толщина, K-фактор, радиус гиба

convert_to_sheet_metal

Преобразовать импортированное тело в листовой металл

flatten_part

Активировать плоскую развёртку

unflatten_part

Вернуться в сложенное состояние

Экспорт

Инструмент

Описание

export_dxf

Плоская развёртка -> DXF (для лазера / ЧПУ)

export_step

Деталь -> STEP AP214

export_stl

Деталь -> STL

export_pdf

Документ -> PDF

take_screenshot

Видовой экран -> PNG

Пользовательские свойства и материалы

Инструмент

Описание

get_custom_properties

Читать все пользовательские свойства из активного документа

get_custom_property

Читать одно свойство по имени

set_custom_property

Создать или обновить пользовательское свойство

delete_custom_property

Удалить пользовательское свойство

set_material

Назначить материал из библиотеки SolidWorks

get_material_databases

Список доступных баз материалов .sldmat

Конфигурации

Инструмент

Описание

list_configurations

Список всех конфигураций с флагом активности

get_active_configuration

Сведения о текущей активной конфигурации

switch_configuration

Активировать другую конфигурацию

add_configuration

Создать новую конфигурацию (копию существующей)

delete_configuration

Удалить конфигурацию

get_configuration_properties

Пользовательские свойства, специфичные для конфигурации

Измерения

Инструмент

Описание

measure_distance

Расстояние между двумя именованными объектами

measure_entity

Длина/площадь/координаты одного объекта

get_face_properties

Площадь, нормаль, центроид грани по индексу

measure_minimum_distance

Минимальный зазор между двумя объектами

get_section_properties

Сечение: Ixx/Iyy/площадь/центроид

Управление элементами

Инструмент

Описание

list_features

Список дерева FeatureManager (с фильтром по типу)

get_feature_info

Тип, состояние подавления, ошибка для элемента

suppress_feature

Подавить элемент в конфигурации

unsuppress_feature

Восстановить подавленный элемент

get_feature_dimensions

Параметрические размеры элемента

rebuild_model

Принудительная перестройка (стандартная или полная)

get_feature_error

Описать ошибку перестройки элемента

Чертежи

Инструмент

Описание

create_drawing_from_part

Создать новый чертёж из активной детали/сборки

add_drawing_view

Добавить стандартный/изометрический вид на чертёж

list_drawing_views

Список всех видов на чертеже

get_drawing_info

Количество листов, масштаб, формат бумаги

set_drawing_scale

Изменить масштаб листа чертежа

Сборки

Инструмент

Описание

get_assembly_components

Список всех компонентов (верхнего уровня или рекурсивно)

get_component_count

Быстрый подсчёт компонентов

get_assembly_bom

Спецификация (BOM) с количеством

list_assembly_mates

Список всех сопряжений

get_component_info

Масса, путь, габариты для именованного компонента

get_assembly_mass

Общая масса сборки и центр масс

Ограничения (v0.1)

  • Поддержка сборок доступна только для чтения. Компоненты, спецификации, сопряжения и массу можно читать; создание сопряжений и вставка компонентов не поддерживаются.

  • Нет параметрического редактирования. Элементы можно перечислять, подавлять и восстанавливать, но размерами нельзя управлять.

  • STEP-файлы импортируются как «немые» тела. Перед анализом гибов необходимо запустить convert_to_sheet_metal, иначе он не вернёт ничего.

  • Нет раскроя ленты / проектирования последовательного штампа.

  • Только Windows, и требует лицензионной локальной установки SolidWorks — COM API нужна полная версия приложения. Единственное исключение — analyze_step_standalone, который работает везде через CadQuery.

Дорожная карта

Версия

Возможность

v0.2

Инструменты раскроя ленты — настройка станций

v0.3

Расчёт усилий (вырубка, гибка, вытяжка)

Кроме того: анализ формуемости и обнаружение поднутрений, нанесение допусков GD&T на создаваемых чертежах и интеграция раскроя — всё это возможные направления, но ничто не гарантируется.

Разработка

Тестовый набор имитирует COM-уровень, поэтому для его запуска не требуется лицензии SolidWorks:

pip install -e ".[dev]"
ruff check src tests
pytest -v

В Windows на этом всё: все 54 теста проходят. CI выполняет те же две команды в Linux, устанавливая зависимости на чистом Python напрямую, а не через pip install -e ., поскольку для pywin32 нет Linux-wheel.

Две группы пропускаются, а не завершаются ошибкой, когда отсутствует зависимость:

  • тесты connect() / disconnect() подменяют pythoncom и win32com.client по имени, поэтому им требуется pywin32, и они выполняются только в Windows;

  • для analyze_step_standalone нужен CadQuery.

Всё остальное — контракт COM-вызовов, извлечение отверстий и гибов, преобразование единиц, обход элементов — работает везде.

Логи

Журналы сервера: %USERPROFILE%\.solidworks-mcp\logs\server.log

Журналы Claude Desktop: %APPDATA%\Claude\logs\

Лицензия

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

UpdatingMaintainers
UpdatingResponse time
Release cycle
0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables users to control AutoCAD, GstarCAD, or ZWCAD through natural language via Claude Desktop. It provides tools for drawing geometric shapes, adding text and dimensions, and managing CAD files using the Windows COM interface.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects Claude to a running Autodesk Civil 3D instance via COM automation to perform drawing, surface, alignment, COGO point, line, and corridor operations.
    7
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to create and manipulate SolidWorks CAD models through natural language commands, automating part creation, sketching, and extrusion.
    9
  • A
    license
    B
    quality
    C
    maintenance
    Enables connecting MCP clients to local SolidWorks for automated 3D part creation, template generation, file export, and basic review via natural language.
    10
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Connect Claude to Fathom meeting recordings, transcripts, and summaries

  • Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.

  • Live SEO workflow tools for Claude Code, Codex, and AI agents.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tmkaio/solidworks-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server