Skip to main content
Glama
Said-AER

SolidWorks MCP Bridge

by Said-AER
README.md
# SolidWorks MCP Bridge 🌉 ⚙️

Servidor y puente de integración basado en **Model Context Protocol (MCP)** para comunicar modelos de lenguaje locales (vía **Ollama**) con la API COM de **SolidWorks**.

Permite que LLMs como `qwen3:8b` y `qwen3:30b-a3b` inspeccionen el estado del diseño, analicen el árbol de operaciones, lean cotas, consulten ecuaciones, extraigan propiedades físicas de masa y exporten archivos técnicos de forma automatizada y estructurada.

---

## 🎯 Alcance del Proyecto

- **Nivel 1 (Fase Actual - Lectura)**: Inspección no destructiva de piezas, ensamblajes, cotas, ecuaciones, masa y estudios FEA.
- **Nivel 2 (Fase Futura - Edición)**: Modificación paramétrica de cotas, variables globales y reconstrucción controlada.
- **Nivel 3 (Fase Futura - Generación)**: Creación de bocetos 2D/3D, operaciones y macros automatizadas.

---

## 📂 Estructura del Proyecto

```
LOCAL LLM/
├── requirements.txt         # Dependencias Python (mcp, pywin32, pydantic, ollama, etc.)
├── pyproject.toml           # Configuración del paquete y testing
├── .env.example             # Plantilla de variables de entorno
├── .env                     # Configuración activa local
├── src/
│   └── sw_bridge/
│       ├── config.py         # Carga de configuración (pydantic-settings)
│       ├── logging_config.py # Logging estructurado JSON por sesión
│       ├── server.py         # Servidor MCP (fastmcp / stdio / sse)
│       ├── sw_connection/    # Conexión COM a SolidWorks
│       │   ├── connector.py  # Singleton y reconexión automática
│       │   ├── exceptions.py # Excepciones tipadas
│       │   └── models.py     # Modelos de datos Pydantic
│       └── tools/            # Herramientas de Nivel 1
│           ├── document_tools.py
│           ├── feature_tree_tools.py
│           ├── dimension_tools.py
│           ├── mass_props_tools.py
│           ├── export_tools.py
│           └── fea_tools.py
├── tests/                    # Pruebas automatizadas (pytest)
├── scripts/
│   ├── test_tool_calling.py  # Validación de llamadas a funciones con Ollama
│   └── smoke_test.py         # Smoke test contra SolidWorks
└── docs/                     # Especificaciones y resolución de problemas
    ├── alcance.md
    ├── tool_schemas.md
    └── troubleshooting.md
```

---

## 🚀 Instalación y Puesta en Marcha

### 1. Activar el entorno virtual
```powershell
.\sw-mcp-env\Scripts\activate
```

### 2. Verificar modelos en Ollama
Asegúrese de tener disponible el modelo con soporte de herramientas:
```powershell
ollama list
ollama show qwen3:8b
```

### 3. Probar Tool Calling con el LLM local
```powershell
.\sw-mcp-env\Scripts\python scripts/test_tool_calling.py
```

### 4. Ejecutar Suite de Pruebas
```powershell
.\sw-mcp-env\Scripts\pytest tests/ -v
```

### 5. Iniciar el Servidor MCP (Modo stdio)
```powershell
.\sw-mcp-env\Scripts\python -m sw_bridge.server --transport stdio
```

---

## 🛠️ Herramientas Disponibles (Nivel 1)

| Herramienta | Descripción |
| :--- | :--- |
| `check_solidworks_status` | Verifica si SolidWorks está respondiendo vía COM. |
| `get_active_document_info` | Obtiene tipo, ruta, configuraciones y estado de guardado. |
| `list_open_documents` | Lista todos los documentos cargados en la sesión. |
| `get_feature_tree` | Extrae el árbol completo de operaciones (FeatureManager). |
| `get_feature_details` | Inspecciona definición y parámetros de una operación. |
| `list_dimensions` | Lista cotas numéricas del modelo o de una operación. |
| `get_equations` | Lee las ecuaciones y variables globales del gestor de ecuaciones. |
| `get_mass_properties` | Calcula masa (kg), volumen, centro de gravedad e inercia. |
| `export_step` | Exporta el modelo activo a formato neutral STEP. |
| `export_pdf` | Exporta el plano 2D o vista activa a PDF. |
| `export_screenshot` | Guarda una captura en alta resolución en formato PNG. |
| `list_simulation_studies` | Lista estudios de análisis por elementos finitos (FEA). |
| `get_simulation_study_results` | Consulta tensiones de von Mises y factores de seguridad. |

---

## ⚙️ Configuración como Servidor MCP en Antigravity / Claude Desktop

Agregue la siguiente configuración a su cliente MCP:

```json
{
  "mcpServers": {
    "solidworks-bridge": {
      "command": "C:\\Users\\said\\Desktop\\LOCAL LLM\\sw-mcp-env\\Scripts\\python.exe",
      "args": ["-m", "sw_bridge.server", "--transport", "stdio"],
      "cwd": "C:\\Users\\said\\Desktop\\LOCAL LLM"
    }
  }
}
```