Solidworks MCP

Servidor MCP para SolidWorks 2021: crea planos de ingeniería desde cualquier cliente MCP (Claude Code, Codex, Gemini CLI, Cursor...) mediante COM.

Documentación

solidworks-mcp banner

solidworks-mcp

CI License: MIT Python 3.10+

English | 繁體中文

Un servidor MCP que permite a Claude — o a cualquier cliente MCP que hable Streamable HTTP — controlar SolidWorks 2021 para crear planos de ingeniería a través de tu LAN, mediante la API COM de pywin32.

Abre una pieza, genera vistas estándar en primer ángulo, añade cotas y globos, inserta una tabla de lista de materiales (BOM) y exporta a PDF — todo desde una conversación con Claude.

Características

21 herramientas en 5 categorías:

CategoríaHerramientas
Operaciones de archivo (3)abrir / cerrar / listar documentos
Vistas de dibujo (6)crear dibujo desde plantilla, vistas estándar, vista de 3 proyecciones en primer ángulo, vista de sección, vista de detalle, vista con orientación personalizada
Anotación (6)importar cotas del modelo, inspeccionar aristas, añadir cotas (lineal / diámetro / radio / ángulo), cotas de referencia automáticas, globos, tabla BOM
Exportación (4)capturar dibujo (JPEG), capturar vistas del modelo, guardar como PDF, guardar dibujo
Análisis de ensamblaje (2)leer relaciones de posición, leer árbol de operaciones

Consulta la referencia de herramientas completa a continuación.

Arquitectura

Claude Code ◄── Streamable HTTP ──► src/server.py (FastMCP)
                                         │
                                    async tool handlers
                                         │
                                    sw.execute(func)  ← asyncio + Future
                                         │
                                    COM Worker Thread (STA, singleton)
                                         │
                                    pywin32 COM → SolidWorks 2021

La COM de SolidWorks debe controlarse desde un único subproceso STA. Todos los manejadores de herramientas son asíncronos y envían sus llamadas COM a un subproceso de trabajo dedicado, conectado de vuelta con concurrent.futures.Future.

Requisitos

  • Host con Windows 10/11 y SolidWorks 2021 instalado
  • Python 3.10+
  • Un cliente MCP que admita Streamable HTTP (p. ej. Claude Code, Codex CLI, Gemini CLI, Cursor — consulta Clientes MCP compatibles) en la misma LAN de confianza
  • Opcional: una plantilla de dibujo (.drwdot) y una carpeta compartida SMB para capturas de pantalla / PDF grandes

Solo se ha probado SolidWorks 2021. Otras versiones pueden funcionar ya que la API COM es en gran medida estable, pero no hay garantías.

Inicio rápido

1. Instalación (en el host de SolidWorks)

git clone https://github.com/haunchen/solidworks-mcp.git
cd solidworks-mcp
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
Instalación sin conexión (host sin acceso a internet)

En una máquina con acceso a internet:

pip download -d ./wheels -r requirements.txt

Copia el repositorio (incluyendo wheels/) al host de SolidWorks, luego:

.venv\Scripts\pip install --no-index --find-links wheels -r requirements.txt

2. Configuración

Copy-Item .env.example .env
# edit .env — see Configuration below

3. Ejecución

.venv\Scripts\python src\server.py

4. Conexión desde Claude Code (máquina cliente)

claude mcp add --transport http solidworks http://<sw-host>:8080/mcp

Luego solo pídele a Claude: "Abre bracket.sldprt y crea un dibujo de 3 vistas en primer ángulo con cotas, y expórtalo como PDF."

Clientes MCP compatibles

Cualquier cliente MCP que admita Streamable HTTP y se ejecute en tu máquina (o dentro de la LAN) puede conectarse. Ejemplos verificados:

ClienteConfiguración
Claude Codeclaude mcp add --transport http solidworks http://<sw-host>:8080/mcp
Codex CLIconfig.toml: [mcp_servers.solidworks]
url = "http://<sw-host>:8080/mcp"
Gemini CLIgemini mcp add --transport http solidworks http://<sw-host>:8080/mcp
Cursormcp.json: { "mcpServers": { "solidworks": { "url": "http://<sw-host>:8080/mcp" } } }
VS Code Copilot.vscode/mcp.json: { "servers": { "solidworks": { "type": "http", "url": "http://<sw-host>:8080/mcp" } } }
Clinecline_mcp_settings.json: { "mcpServers": { "solidworks": { "type": "streamableHttp", "url": "http://<sw-host>:8080/mcp" } } }
Windsurf~/.codeium/windsurf/mcp_config.json: { "mcpServers": { "solidworks": { "serverUrl": "http://<sw-host>:8080/mcp" } } }
Continue / Zed / JetBrains AI Assistant / opencode / Gooseconsulta su documentación MCP (campo url / uri)

Los frameworks de agentes también funcionan: OpenAI Agents SDK (MCPServerStreamableHttp), LangChain (langchain-mcp-adapters).

Los conectores intermediados por la nube no pueden alcanzar un servidor solo-LAN: los conectores personalizados de Claude Desktop / claude.ai y el conector MCP de la API de Mensajes de Anthropic se conectan desde la nube del proveedor, que es exactamente lo que el modelo de seguridad de LAN de confianza bloquea.

Configuración

Todos los ajustes se cargan desde .env (consulta .env.example):

VariablePredeterminadoDescripción
SW_MCP_HOST0.0.0.0Dirección a la que se vincula el servidor
SW_MCP_PORT8080Puerto del servidor
SW_MCP_SMB_PATHC:\mcp-shareCarpeta del lado del servidor para capturas de pantalla / PDF que superen el límite de base64
SW_MCP_SMB_CLIENT_PATH(vacío)La misma carpeta vista desde el cliente (p. ej. U:\mcp-share); se usa para reescribir las rutas devueltas
SW_MCP_TEMPLATE(vacío)Plantilla de dibujo (.drwdot) utilizada por create_drawing
SW_MCP_PAPER_SIZEA3Tamaño de papel predeterminado
SW_MCP_MAX_BASE641048576Tamaño máximo de captura (bytes) devuelto en línea como base64; las imágenes más grandes se guardan en la carpeta compartida

Seguridad

Este servidor no tiene autenticación. Cualquiera que pueda alcanzar el puerto puede controlar tu instancia de SolidWorks y leer/escribir archivos a través de él.

  • Despliega solo en una LAN de confianza — nunca expongas el puerto a internet
  • Prefiere vincular SW_MCP_HOST a una interfaz LAN específica en lugar de 0.0.0.0
  • Considera reglas de firewall a nivel de sistema operativo que restrinjan el acceso a IPs de clientes conocidas

Referencia de herramientas

Operaciones de archivo

HerramientaDescripción
open_documentAbrir un documento de SolidWorks (.sldprt / .sldasm / .slddrw)
close_documentCerrar el documento especificado
list_open_documentsListar todos los documentos actualmente abiertos en SolidWorks

Vistas de dibujo

HerramientaDescripción
create_drawingCrear un nuevo documento de dibujo a partir de una plantilla
insert_standard_viewsInsertar vistas estándar independientes (sin alineación de proyección, escala personalizada)
insert_standard_views_alignedCrear vistas alineadas en primer ángulo: frontal / superior / derecha, con escala automática
insert_section_viewCrear una vista de sección sobre una vista padre
insert_detail_viewCrear una vista de detalle (ampliada) sobre una vista padre
insert_custom_viewInsertar una vista con orientación nombrada o rotación XYZ arbitraria

Anotación

HerramientaDescripción
insert_model_dimensionsImportar cotas del modelo en las vistas de dibujo
probe_drawing_edgesInspeccionar aristas visibles (índice / tipo / coordenadas en mm) antes de acotar
add_dimensionAñadir una cota lineal / diámetro / radio / ángulo entre aristas inspeccionadas
auto_add_reference_dimensionsAñadir automáticamente cotas de referencia (caja delimitadora + círculos) para geometría no paramétrica
insert_balloonInsertar globos en una vista de dibujo de ensamblaje (opcionalmente filtrados por componente)
insert_bom_tableInsertar una tabla BOM solo de nivel superior

Exportación

HerramientaDescripción
capture_drawingCapturar el dibujo actual como JPEG (base64 en línea o ruta de carpeta compartida)
capture_viewCapturar capturas de pantalla multiángulo del modelo 3D
save_as_pdfExportar el dibujo actual a PDF
save_drawingGuardar el dibujo actual (.slddrw)

Análisis de ensamblaje

HerramientaDescripción
read_assembly_matesLeer todas las relaciones de posición de un componente en un ensamblaje
get_feature_treeLeer el árbol de operaciones de un documento

Desarrollo

# run all tests (no SolidWorks needed — the COM layer is fully mocked)
.venv\Scripts\pytest tests/ -v

Los contratos de comportamiento viven en docs/specs/ — las especificaciones con status: active describen el comportamiento esperado de las funciones publicadas. El historial de diseño está en docs/plans/.

Consulta CONTRIBUTING.md para la configuración de desarrollo y las pautas de PR.

Licencia

MIT