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
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ía | Herramientas |
|---|---|
| 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:
| Cliente | Configuración |
|---|---|
| Claude Code | claude mcp add --transport http solidworks http://<sw-host>:8080/mcp |
| Codex CLI | config.toml: [mcp_servers.solidworks]url = "http://<sw-host>:8080/mcp" |
| Gemini CLI | gemini mcp add --transport http solidworks http://<sw-host>:8080/mcp |
| Cursor | mcp.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" } } } |
| Cline | cline_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 / Goose | consulta 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):
| Variable | Predeterminado | Descripción |
|---|---|---|
SW_MCP_HOST | 0.0.0.0 | Dirección a la que se vincula el servidor |
SW_MCP_PORT | 8080 | Puerto del servidor |
SW_MCP_SMB_PATH | C:\mcp-share | Carpeta 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_SIZE | A3 | Tamaño de papel predeterminado |
SW_MCP_MAX_BASE64 | 1048576 | Tamañ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_HOSTa una interfaz LAN específica en lugar de0.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
| Herramienta | Descripción |
|---|---|
open_document | Abrir un documento de SolidWorks (.sldprt / .sldasm / .slddrw) |
close_document | Cerrar el documento especificado |
list_open_documents | Listar todos los documentos actualmente abiertos en SolidWorks |
Vistas de dibujo
| Herramienta | Descripción |
|---|---|
create_drawing | Crear un nuevo documento de dibujo a partir de una plantilla |
insert_standard_views | Insertar vistas estándar independientes (sin alineación de proyección, escala personalizada) |
insert_standard_views_aligned | Crear vistas alineadas en primer ángulo: frontal / superior / derecha, con escala automática |
insert_section_view | Crear una vista de sección sobre una vista padre |
insert_detail_view | Crear una vista de detalle (ampliada) sobre una vista padre |
insert_custom_view | Insertar una vista con orientación nombrada o rotación XYZ arbitraria |
Anotación
| Herramienta | Descripción |
|---|---|
insert_model_dimensions | Importar cotas del modelo en las vistas de dibujo |
probe_drawing_edges | Inspeccionar aristas visibles (índice / tipo / coordenadas en mm) antes de acotar |
add_dimension | Añadir una cota lineal / diámetro / radio / ángulo entre aristas inspeccionadas |
auto_add_reference_dimensions | Añadir automáticamente cotas de referencia (caja delimitadora + círculos) para geometría no paramétrica |
insert_balloon | Insertar globos en una vista de dibujo de ensamblaje (opcionalmente filtrados por componente) |
insert_bom_table | Insertar una tabla BOM solo de nivel superior |
Exportación
| Herramienta | Descripción |
|---|---|
capture_drawing | Capturar el dibujo actual como JPEG (base64 en línea o ruta de carpeta compartida) |
capture_view | Capturar capturas de pantalla multiángulo del modelo 3D |
save_as_pdf | Exportar el dibujo actual a PDF |
save_drawing | Guardar el dibujo actual (.slddrw) |
Análisis de ensamblaje
| Herramienta | Descripción |
|---|---|
read_assembly_mates | Leer todas las relaciones de posición de un componente en un ensamblaje |
get_feature_tree | Leer 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.