autocad-mcp-pro
Provides tools for controlling Autodesk AutoCAD via COM automation, enabling AI-assisted drawing of geometry, creation of architectural structures, layer management, entity cleanup, and drawing/document inspection.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
autocad-mcp-pro
Servidor MCP (Model Context Protocol) que da control conversacional sobre Autodesk AutoCAD vía automatización COM. Permite que un asistente de IA (Claude, Cursor, VS Code, opencode…) dibuje geometría, cree estructuras arquitectónicas, gestione capas y limpie el dibujo en tiempo real.
Derivado del proyecto original
autocad-mcp-serverde MC. Peter Alejandro Pérez Chel (licencia MIT, verLICENSE). Esta versión reorganiza el código en un paquete mantenible y corrige comportamientos (ver Mejoras).
Plataforma: Windows (COM). Python: 3.11+. AutoCAD debe estar abierto con un dibujo cargado.
Instalación
python -m venv venv
venv\Scripts\activate
pip install -e . # runtime
pip install -e ".[dev]" # desarrollo (ruff, mypy, pytest)Related MCP server: AutoCAD MCP Server
Ejecución
python -m autocad_mcp
# o, tras instalar el entrypoint:
autocad-mcp-proRegistra el servidor en tu cliente MCP indicando python + la ruta al paquete o el entrypoint.
El transporte es stdio, así que sirve para cualquier cliente MCP.
Arquitectura
src/autocad_mcp/
├── server.py # servidor MCP delgado (list_tools / call_tool, stdio)
├── tools.py # contrato MCP: esquemas de tools + dispatch
├── service.py # fachada que compone conexión, caché y features
├── connection.py # conexión COM: reintentos (tenacity) + circuit breaker
├── config.py # configuración por entorno (pydantic-settings)
├── cache.py # caché TTL con invalidación por clave/prefijo
├── colors.py # mapeo de colores a índices ACI
├── layers.py # definiciones de capas + operaciones de capas
├── obs.py # logging estructurado + métricas (prometheus opcional)
├── com.py # helpers VARIANT de pywin32 (único punto junto a connection)
├── standards.py # estándar de dibujo: capas A-, espesores, estilo de cotas, unidades
└── features/ # operaciones CAD por dominio
├── geometry.py # línea, círculo, rectángulo, polilínea, texto, arco, muro (contorno)
├── structures.py # muros, puertas, ventanas, habitaciones, etiquetas
├── info.py # get_drawing_info, get_entities
├── analysis.py # analyze_drawing: resumen, extents, cotas y anotaciones
├── standards.py # apply_standard: capas A-, unidades, estilo de cotas
├── grid.py # create_construction_grid: ejes con burbujas y rótulos
├── dimensions.py # create_dimension + set_dimension_precision (cotas)
├── blocks.py # list_blocks, create_block, insert_block, explode_entities
├── layouts.py # list/create/set_active layout, create_viewport, plot style table
├── documents.py # list_documents, set_active_document (multi-dibujo)
├── delete.py # borrado por handle/tipo/capa/color (+ purge en delete_all)
└── ops.py # undo, recolor, zoom, salud, métricas, batchRegla: solo connection.py y com.py tocan pywin32/COM. El resto usa la conexión.
Multi-documento
Por defecto el servidor se engancha al dibujo activo en el momento de conectar y opera sobre él, aunque cambies de pestaña en AutoCAD (no sigue el foco). Si cierras ese dibujo, se reengancha de forma silenciosa al que quede activo.
Con varios DWGs abiertos usa:
list_documents→ dibujos abiertos conname,pathyactive.set_active_document(name)→ fija en cuál opera el servidor a partir de ahí.
Si no quieres sorpresas, enfoca el dibujo correcto antes de conectar, o cierra los demás.
Herramientas MCP
Grupo | Herramientas |
Info |
|
Documentos |
|
Estándar |
|
Ejes |
|
Cotas |
|
Bloques |
|
Estructuras |
|
Muros |
|
Tablas |
|
Layouts |
|
Geometría |
|
Capas |
|
Borrado |
|
Edición |
|
Ops |
|
Estándar de dibujo (apply_standard)
Aplica el estándar arquitectónico del estudio: unidades en metros (INSUNITS=6, métrico) y las
capas A- con color, espesor jerárquico y tipo de línea, más el estilo de cotas MCP-ARQ
(texto 0.20 m, flecha 0.12 m — a escala real, no del zoom):
Capa | Color | Espesor | Tipo de línea |
| azul (5) | 0.50 mm | Continua |
| blanco (7) | 0.30 mm | Continua |
| cian (4) | 0.25 mm | Continua |
| gris (8) | 0.13 mm | Continua |
| rojo (1) | 0.13 mm | Continua |
| gris (9) | 0.13 mm | CENTER |
| rojo (1) | 0.13 mm | HIDDEN |
| amarillo (2) | 0.13 mm | Continua |
Todo se dibuja 1:1 en Model con medidas reales; las entidades nuevas quedan ByLayer.
Elementos que no son arquitectónicos (MEP, terreno) usan prefijos por disciplina:
I-ELECTR / I-SANIT / I-CLIM (instalaciones) y A-SITIO (terreno). create_structure y
create_or_get_layer resuelven la capa automáticamente (wall→A-MUROS-CARGA,
partition→A-MUROS-TABIQ, door/window→A-PUER-VENT, furniture→A-MOBILIARIO,
text/dimension→A-TEXTOS, etc.).
Layouts y trazado
El dibujo se hace 1:1 en Model; la presentación va en Layouts (espacio papel):
create_layout(name, media, plot_style_table)→ nueva pestaña;mediaes el nombre canónico del papel (p. ej.ISO_A4_(210.00_x_297.00_MM)).create_viewport(layout_name, center, width, height, scale, view_center)→ ventana al modelo;scalees el factor (1:50 →0.02, 1:100 →0.01).set_active_layout(name)/list_layouts()→ cambiar y listar pestañas.set_plot_style_table(layout_name, table)→ asigna un.ctb/.stbexistente (acad.ctb,monochrome.ctb…).
Nota: el archivo
.CTB/.STBes binario y AutoCAD no lo expone por COM. Este servidor asigna el estilo de trazado y fija los espesores de línea por capa (que es lo que el.CTBusa por defecto conUseObjectLineweight), pero crear/editar el.CTBse hace en AutoCAD (Page Setup Manager → Plot Style Table Editor).
Mejoras frente a la base original
Código separado en módulos (antes: todo en
server.py).successveraz:create_line,create_textycreate_arcya no devuelvensuccess: truecuando la operación falló.Caché invalidada en las mutaciones: crear/borrar/recolorear refresca
get_entitiesyget_drawing_info(antes devolvía datos obsoletos hasta expirar el TTL).Menos errores silenciosos: los fallos COM se registran en logs estructurados.
prometheus_clientrealmente usado (exporta métricas si está instalado).create_rectanglees ahora una polilínea cerrada (un solo objetoAcDbPolyline, no 4 líneas sueltas).Nueva tool
create_polyline(polilíneas 2D con cierre y ancho opcionales).Nuevas tools
list_documents/set_active_documentpara elegir entre varios dibujos abiertos.Nueva tool
analyze_drawing: informe del dibujo (resumen por tipo/capa, extents, cotas con su medida y anotaciones) para verificar que lo dibujado es correcto.Layouts/espacio papel:
list_layouts,create_layout,set_active_layout,create_viewport(con escala) yset_plot_style_table.Nuevas tools de bloque
create_block(definir bloques desde entidades por handle, conDocument.CopyObjects) ycreate_wall(muro como polilínea de contorno con espesor real).Nueva tool
create_table(tabla nativaAcDbTable): cuadro de áreas, leyendas y rótulos editables en AutoCAD y exportables a Excel, en lugar de dibujarlos con líneas sueltas.create_structurealineado al estándarA-(antes usabaWALLS/DOORS/…); añade capasI-para instalaciones yA-SITIOpara terreno.Estándar de dibujo profesional:
apply_standard(capasA-con espesores jerárquicos, unidades en metros y estilo de cotas a escala),create_construction_grid(ejes de construcción),create_dimension(cotas) ylist_blocks/insert_block/explode_entities(bloques). Ver Estándar de dibujo arriba.delete_all_entitiespurga el dibujo (bloques/capas/estilos huérfanos) tras borrar.Compatible con el SDK
mcpv2 (handlerson_list_tools/on_call_toolen el constructor;input_schemaen snake_case). Requieremcp>=2,<3.Logs a
stderr: por stdio,stdoutes exclusivo del protocolo JSON-RPC; escribir logs ahí corrompía los mensajes. Ahora structlog emite porstderr.Color COM en minúscula (
entity.color): el typelib de AutoCAD 2025 expone esa propiedad en minúscula (DISPID 1280); el late binding es case-insensitive, así quecolorfunciona en todos los casos.
Verificación
Sin AutoCAD (CI):
ruff check,mypy,pytest.Con AutoCAD abierto (manual):
python tests/smoke_test.pycrea entidades, las lee de vuelta conget_entitiesy reportaPASS/FAILpor caso.
ruff check .
ruff format --check .
mypy src
pytest
python tests/smoke_test.py # requiere AutoCADLicencia
MIT — ver LICENSE. Este software usa automatización local permitida por Autodesk, pero no está
respaldado por Autodesk, Inc. Requiere una licencia legítima de AutoCAD.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.
AI for Revit: 450+ tools, 1 undo step. Windows, Revit 2024–2027 (2021–2023 included). Free account.
CAD in ChatGPT and Claude: editable parts, STEP/STL/drawings, in-chat 3D, automatic checks.
Headless CAD engine & MCP server for 2D/3D drafting, solids, DXF/SVG export, and automation.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with AutoCAD through Python automation to draw geometric shapes like lines, circles, and polylines in real-time. It facilitates direct control of a running AutoCAD instance on Windows for basic geometric element creation.6MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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.6MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants to control CAD applications such as AutoCAD, ZWCAD, GstarCAD, and BricsCAD through natural language or direct tool calls. Supports drawing shapes, managing layers, entities and blocks, extracting or exporting data, and saving drawings via 56 unified CAD commands.-
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants like Claude for Desktop or Cursor to drive Windows CAD applications (AutoCAD, ZWCAD, GstarCAD, and BricsCAD) via COM, executing 56 drawing, layer, block, entity, file, and export commands through natural-language or direct tool calls. Supports batch operations, multi-drawing session management, and data extraction to JSON or Excel.-