AutoCAD MCP Server
README.md
# AutoCAD MCP Server
> **Estado / Status:** En proceso de mejora de rendimiento — work in progress.
> Las funcionalidades principales funcionan, pero se siguen optimizando la velocidad y estabilidad.
Servidor **MCP (Model Context Protocol)** que conecta **Claude** (u otro cliente compatible con MCP) directamente con **AutoCAD**, permitiendo generar planos arquitectónicos, dibujar geometría y exportar archivos DXF con solo describir lo que necesitas en lenguaje natural.
An **MCP server** that bridges **Claude** (or any MCP-compatible AI) with **AutoCAD**, enabling you to generate architectural floor plans, draw geometry, and export DXF files just by describing what you need in natural language.
---
## ¿Qué hace? / What does it do?
```
Claude / AI → "Diseña una vivienda de 120 m² para 4 personas"
│
▼
MCP AutoCAD Server
│
┌───────────┴────────────┐
▼ ▼
Exporta DXF Dibuja en AutoCAD
(sin AutoCAD abierto) (COM — Windows, opcional)
~/Documents/AutocadMCP/output/
```
- Interpreta un brief arquitectónico en lenguaje natural
- Aplica reglas de construcción (mínimos RNE Perú / normativa general)
- Genera geometría (muros, puertas, ventanas, mobiliario)
- Exporta a **DXF** (compatible con AutoCAD, Revit, FreeCAD, cualquier visor CAD)
- Controla **AutoCAD** directamente via COM (Windows, AutoCAD completo requerido)
---
## Requisitos / Requirements
| Componente | Versión mínima |
|-----------|----------------|
| Windows | 10 / 11 |
| Python | 3.10+ |
| AutoCAD | 2018+ (completo, **no LT**) — *solo para integración COM directa* |
| ngrok / Cloudflare Tunnel | cualquier versión — *solo para Claude.ai web* |
> La exportación a DXF funciona **sin AutoCAD** instalado.
> AutoCAD solo es necesario para dibujar directamente en él (herramientas `draw_*`, `batch_execute`, etc.).
---
## Instalación / Installation
```powershell
# 1. Clona el repositorio
git clone https://github.com/dtocjao/MCP---Autocad.git
cd MCP---Autocad
# 2. Crea el entorno virtual
python -m venv .venv
.\.venv\Scripts\Activate.ps1
# 3. Instala dependencias
pip install -e .
```
**Dependencias instaladas automáticamente:**
- `mcp[cli]` — protocolo MCP (FastMCP)
- `pywin32` — integración COM con AutoCAD (Windows)
- `ezdxf` — generación de archivos DXF
---
## Cómo ejecutar / How to run
### Opción A — Claude Desktop (modo local, stdio)
Edita el archivo de configuración de Claude Desktop:
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"autocad": {
"command": "C:\\RUTA\\AL\\PROYECTO\\MCP---Autocad\\.venv\\Scripts\\python.exe",
"args": ["-m", "autocad_mcp.server"]
}
}
}
```
Reemplaza `C:\\RUTA\\AL\\PROYECTO\\` con la ruta real donde clonaste el repo.
Reinicia Claude Desktop. El servidor `autocad` aparecerá en la lista de herramientas.
> Ver [`claude_desktop_config.example.json`](claude_desktop_config.example.json) como referencia.
---
### Opción B — Claude.ai web (modo HTTP remoto con ngrok)
Claude en la web requiere una URL HTTPS pública. Sigue estos pasos:
**1. Abre AutoCAD** (si vas a usar la integración directa con AutoCAD).
**2. Inicia el servidor HTTP:**
```cmd
scripts\start_for_claude.bat
```
O con PowerShell:
```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\start_for_claude.ps1
```
Esto levanta el servidor en el puerto `8765`.
**3. Expón el puerto con ngrok** (en otra terminal):
```powershell
ngrok http 8765
```
Descarga ngrok en [ngrok.com/download](https://ngrok.com/download) si no lo tienes.
**4. Copia la URL HTTPS** que muestra ngrok, por ejemplo:
```
https://a1b2c3d4.ngrok-free.app
```
**5. En Claude.ai → Añadir conector personalizado:**
| Campo | Valor |
|-------|-------|
| Nombre | `Autocad` |
| URL del servidor MCP remoto | `https://a1b2c3d4.ngrok-free.app/mcp` |
| OAuth Client ID | *(dejar vacío)* |
| Secreto OAuth | *(dejar vacío)* |
**6.** Prueba con: *"Usa draw_bedroom_plan para crear un dormitorio de 20 m²"*
> La URL de ngrok cambia cada vez que lo reinicias (plan gratuito). Elimina y vuelve a añadir el conector si cambia.
#### Alternativa: Cloudflare Tunnel
```powershell
cloudflared tunnel --url http://localhost:8765
```
Usa la URL pública con el sufijo `/mcp`.
---
## Herramientas disponibles / Available tools
### Arquitectónicas (generan DXF + pueden dibujar en AutoCAD)
| Herramienta | Descripción |
|-------------|-------------|
| `get_project_schema_template` | Devuelve plantilla JSON completa (Niveles 1–8) |
| `create_architectural_project` | **Herramienta principal** — JSON → geometría → DXF → (AutoCAD) |
| `analyze_client_requirements` | Brief en texto → JSON estructurado + distribución sugerida |
| `create_floor_plan` | Vivienda completa → DXF (por área, habitaciones, baños) |
| `create_bedroom_suite` | Suite con cama, vestidor, baño, terraza → DXF |
| `validate_building_code` | Valida geometría contra mínimos de construcción |
| `export_dxf` | Geometría JSON → archivo DXF |
| `push_floor_plan_to_autocad` | Geometría JSON → dibuja en AutoCAD |
| `get_architecture_rules_reference` | Dimensiones mínimas por tipo de estancia |
### CAD directas (AutoCAD COM, requiere AutoCAD abierto)
| Herramienta | Descripción |
|-------------|-------------|
| `draw_bedroom_plan` | Dormitorio completo en 1 llamada (paredes, puerta, ventana, muebles) |
| `batch_execute` | Ejecuta muchas operaciones en 1 llamada |
| `execute_command` | Comando de línea de AutoCAD |
| `execute_lisp` / `execute_lisp_safe` | Expresión AutoLISP |
| `draw_line` | Línea entre dos puntos |
| `draw_circle` | Círculo |
| `draw_rectangle` | Rectángulo |
| `draw_polyline` | Polilínea |
| `draw_arc` | Arco |
| `draw_text` | Texto |
| `create_layer` / `set_current_layer` | Gestión de capas |
| `get_status` / `ensure_autocad_ready` | Estado de conexión |
| `new_drawing` | Nuevo dibujo vacío |
| `get_drawing_info` | Capas, unidades, entidades del dibujo activo |
| `save_drawing` | Guardar DWG |
| `list_entities` | Lista entidades del model space |
| `delete_entity_by_handle` | Borrar entidad por handle |
| `get_system_variable` / `set_system_variable` | Variables de sistema AutoCAD |
| `zoom_extents` | Zoom a extensión |
---
## Esquema de proyecto arquitectónico (Niveles 1–8)
Claude puede enviar JSON desde lo más simple hasta un plano profesional completo:
| Nivel | Contenido | Campos JSON |
|-------|-----------|-------------|
| **1** | Geometría básica | `rooms[]` (name, width, length, area) |
| **2** | Arquitectura real | `walls[]`, `doors[]`, `windows[]` |
| **3** | Normativa | `projectType`, `code` (PE/RNE), `zoning` |
| **4** | Sistema CAD | `layers`, `lineweights` |
| **5** | Presentación | `scale`, `sheet`, `titleBlock` |
| **6** | BIM básico | `spaces`, `materials`, `levels` |
| **7** | Profesional | `grids`, `dimensionRules`, `symbols` |
| **8** | Intención | `architecturalIntent` |
**Ejemplo mínimo (Nivel 1):**
```json
{
"title": "Dormitorio",
"rooms": [{"name": "Dormitorio", "width": 3.4, "length": 4.0, "area": 13.6}]
}
```
**Ejemplo con normativa peruana RNE (Nivel 3+):**
```json
{
"projectType": "vivienda_multifamiliar",
"code": {"country": "PE", "municipality": "Lima", "rne": true},
"layers": {"walls": "ARQ_MUROS", "doors": "ARQ_PUERTAS"},
"architecturalIntent": {"includeTitleBlock": true, "includeGrid": true}
}
```
---
## Ejemplos de uso con Claude / Usage examples
```
"Conecta con AutoCAD y dime qué dibujo tengo abierto"
"Diseña una vivienda de 120 m² para una familia de 4 personas"
"Crea un dormitorio suite de 5x4 metros con cama king y baño"
"Dibuja un rectángulo de 0,0 a 100,50 en la capa Paredes"
"Valida este plano contra las normas mínimas de construcción"
"Exporta el plano a DXF y guárdalo"
```
---
## Estructura del proyecto / Project structure
```
autocad_mcp/
├── server.py # Punto de entrada MCP (stdio y HTTP)
├── autocad_client.py # Cliente COM de AutoCAD (pywin32)
├── floor_plan.py # Generador de planos (legacy)
└── architecture/
├── pipeline.py # Orquestación end-to-end
├── project_builder.py # JSON → geometría + validación
├── project_schema.py # Modelo ArchitecturalProject (Niveles 1–8)
├── dxf_export.py # Exportador DXF (capas, cotas, ejes, cartela)
├── rules.py # Reglas mínimas, RNE Perú
├── layout.py # Distribución automática de estancias
├── wall_engine.py # Motor de muros
├── cad_model.py # Modelo de datos CAD
└── ...
scripts/
├── start_for_claude.bat # Inicia servidor HTTP (Windows CMD)
└── start_for_claude.ps1 # Inicia servidor HTTP (PowerShell)
```
---
## Solución de problemas / Troubleshooting
| Problema | Solución |
|----------|----------|
| No conecta a AutoCAD | Abre AutoCAD antes de usar las herramientas CAD directas |
| Error `pywin32` | `pip install pywin32` y reinicia el terminal |
| Claude no ve el MCP | Revisa rutas absolutas en el JSON de configuración |
| AutoCAD LT | Algunas versiones LT no exponen COM — usa AutoCAD completo |
| URL ngrok no funciona | La URL cambia al reiniciar ngrok — actualiza el conector en Claude.ai |
---
## Estado del proyecto / Project status
> Este proyecto está **en proceso de mejora activa**. Las funcionalidades principales (exportación DXF, integración COM, herramientas arquitectónicas) ya funcionan. Se está trabajando en:
> - Mejorar la velocidad de la integración COM con AutoCAD
> - Optimizar la generación de geometría compleja
> - Ampliar soporte de normativas internacionales
> - Mejorar compatibilidad con Cursor y otros clientes MCP
Contribuciones y reportes de bugs son bienvenidos.
---
## Licencia / License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues