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.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@autocad-mcp-prodraw a 10x12 room with a door and two windows"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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: cotas rotadas/alineadas/radiales
├── 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 |
|
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).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.
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.
Revit MCP: lets AI read and edit your open model. Windows, best supported on Revit 2021+, free beta.
Headless CAD engine & MCP server for 2D/3D drafting, solids, DXF/SVG export, and automation.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
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.3MIT
- AlicenseBqualityAmaintenanceProduction-grade AutoCAD automation server enabling real-time CAD control via COM and headless DXF operations through 87 tools, including drawing creation, entity modification, layer management, and batch processing, designed for AI agent integration via the Model Context Protocol.2421,184 PyPI160MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to control a running AutoCAD via Windows COM, supporting zoom, selection, highlighting, entity queries, and command or LISP execution without restarting AutoCAD.MIT