CAD-MCP

Controla software CAD con instrucciones en lenguaje natural para realizar operaciones de dibujo.

Documentación

Servidor CAD-MCP (Servidor de Protocolo de Contexto de Modelo CAD)

English | 中文

Introducción al Proyecto

CAD-MCP es un servicio innovador de control CAD que permite controlar software CAD para operaciones de dibujo mediante instrucciones en lenguaje natural. Este proyecto combina el procesamiento de lenguaje natural y la tecnología de automatización CAD, permitiendo a los usuarios crear y modificar dibujos CAD mediante comandos de texto simples, sin necesidad de operar manualmente la interfaz CAD.

La versión 2.0 está completamente actualizada según la especificación MCP más reciente (FastMCP, salida estructurada, anotaciones de herramientas, notificaciones de progreso, HTTP Streamable), y añade 35 herramientas en total que cubren consultas, edición, capas, gestión de dibujos, bloques y paso directo de comandos, formando un bucle de retroalimentación completo de "dibujar → inspeccionar → corregir".

Características

Funciones de Control CAD

  • Soporte para Múltiples Software CAD: Soporta software CAD principal como AutoCAD, GstarCAD (GCAD) y ZWCAD
  • Funciones Básicas de Dibujo:
    • Dibujo de líneas
    • Dibujo de círculos
    • Dibujo de arcos
    • Dibujo de elipses
    • Dibujo de rectángulos
    • Dibujo de polilíneas
    • Adición de texto
    • Relleno de patrones
    • Anotación de dimensiones
  • Funciones de Consulta (la IA puede ver el contenido real del dibujo):
    • Listar todas las capas
    • Listar entidades en el espacio modelo (devuelve identificadores de entidades editables)
    • Consultar propiedades detalladas de entidades por identificador (coordenadas/radio/contenido de texto, etc.)
    • Captura de pantalla de la ventana CAD para vista previa
  • Funciones de Edición: borrar, mover, rotar, escalar, copiar, reflejar, desplazar, matriz (lineal/polar), deshacer/rehacer
  • Gestión de Capas: Crear y cambiar capas, consultar estados de capas
  • Gestión de Dibujos: Nuevo / abrir / cerrar / guardar dibujos (DWG/DXF)
  • Operaciones con Bloques: Crear, insertar y listar bloques
  • Paso Directo de Comandos: Ejecutar cualquier comando CAD mediante send_command (una vía de escape para todo lo demás)

Características del Protocolo MCP

  • Salida Estructurada: Todas las herramientas devuelven structuredContent con un outputSchema que los clientes pueden analizar directamente
  • Anotaciones de Herramientas: Las herramientas de consulta están marcadas como readOnlyHint; las operaciones destructivas están marcadas como destructiveHint para políticas de confirmación del cliente
  • Notificaciones de Progreso: Las operaciones de larga duración (inicio de CAD, guardado) envían notificaciones de mensaje al cliente
  • Modos de Transporte Duales: stdio (local, cliente único) y streamable-http (remoto / múltiples clientes compartiendo una instancia de CAD)
  • Semántica de Errores: Los errores de validación de entrada se devuelven como errores de herramienta, permitiendo la autocorrección del modelo

Funciones de Procesamiento de Lenguaje Natural (interfaz heredada)

  • Análisis de Comandos: Analizar instrucciones en lenguaje natural en parámetros de operación CAD
  • Reconocimiento de Colores: Extraer información de color del texto y aplicarla a los objetos de dibujo
  • Mapeo de Palabras Clave de Formas: Soporte para el reconocimiento de diversas palabras descriptivas de formas
  • Mapeo de Palabras Clave de Acciones: Reconocer diversas acciones de dibujo y edición

Demostración

A continuación se muestra el video de demostración.

Demo

Requisitos de Instalación

Dependencias

pywin32>=306       # Windows COM interface support
mcp>=1.12,<2       # MCP Python SDK (FastMCP, structured output, Streamable HTTP)
pydantic>=2.0.0    # Data validation
Pillow>=10.0.0     # PNG encoding for screenshot previews

Requisitos del Sistema

  • Sistema operativo Windows
  • Software CAD instalado (AutoCAD, GstarCAD o ZWCAD)
  • Python 3.10+

Configuración

El archivo de configuración se encuentra en src/config.json y contiene los siguientes ajustes principales:

{
    "server": {
        "name": "CAD MCP 服务器",
        "version": "2.0.0",
        "transport": "stdio",
        "host": "127.0.0.1",
        "port": 8000
    },
    "cad": {
        "type": "AUTOCAD",  
        "startup_wait_time": 20,
        "command_delay": 0.5
    },
    "output": {
        "directory": "./output",
        "default_filename": "cad_drawing.dwg"
    }
}
  • server: Nombre del servidor, versión y ajustes de transporte
    • transport: Modo de transporte, stdio (predeterminado, cliente único local) o streamable-http (remoto / multi-cliente)
    • host / port: Dirección de escucha y puerto para el modo HTTP Streamable (también se puede sobrescribir mediante los argumentos de línea de comandos --host / --port)
  • cad:
    • type: Tipo de software CAD (AutoCAD, GCAD, GstarCAD o ZWCAD)
    • startup_wait_time: Tiempo de espera de inicio de CAD (segundos)
    • command_delay: Retardo de ejecución de comandos (segundos)
  • output: Ajustes del archivo de salida

Uso

Iniciar el Servicio

# Option 1: Run directly (fully compatible with existing Claude/Cursor configs)
python src/server.py

# Option 2: Install as a CLI tool
pip install -e .
cad-mcp

# Option 3: Run with Streamable HTTP transport (remote / multi-client sharing one CAD instance)
python src/server.py --transport streamable-http --port 8000
# Clients connect to http://127.0.0.1:8000/mcp

Conexión desde un Cliente MCP

El servidor utiliza el transporte stdio por defecto, por lo que la misma configuración JSON funciona para cualquier cliente MCP (Claude Desktop, Cursor, Windsurf, TRAE, etc.). Añádelo al archivo de configuración del servidor MCP de tu cliente (por ejemplo, claude_desktop_config.json, el mcp.json de Cursor), reemplazando la ruta con la tuya propia:

{
    "mcpServers": {
        "CAD": {
            "command": "python",
            "args": [
                # Your actual path, such as:"C:\\cad-mcp\\src\\server.py"
            ]
        }
    }
}

Para el modo HTTP Streamable, apunta el cliente a http://127.0.0.1:8000/mcp en su lugar.

Inspector MCP

# Note: use your path  
npx -y @modelcontextprotocol/inspector python C:\\cad-mcp\\src\\server.py

API del Servicio

El servidor proporciona las siguientes herramientas (35 en total):

Dibujo básico:

  • draw_line: Dibujar una línea
  • draw_circle: Dibujar un círculo
  • draw_arc: Dibujar un arco
  • draw_ellipse: Dibujar una elipse
  • draw_polyline: Dibujar una polilínea
  • draw_rectangle: Dibujar un rectángulo
  • draw_text: Añadir texto
  • draw_hatch: Dibujar un patrón de sombreado
  • add_dimension: Añadir dimensión lineal

Consulta:

  • list_layers: Listar todas las capas
  • list_entities: Listar entidades en el espacio modelo (devuelve identificadores editables)
  • get_entity_properties: Consultar propiedades detalladas de entidades por identificador
  • screenshot: Capturar la ventana CAD para confirmar los resultados del dibujo

Edición:

  • erase_entity / move_entity / rotate_entity / scale_entity: Borrar / mover / rotar / escalar entidades
  • copy_entity / mirror_entity / offset_entity: Copiar / reflejar / desplazar entidades
  • array_linear_entity / array_polar_entity: Matrices lineales / polares
  • undo / redo: Deshacer / rehacer

Gestión de capas y dibujos:

  • create_layer / set_current_layer: Gestión de capas
  • new_drawing / open_drawing / close_drawing / save_drawing: Gestión de dibujos
  • create_block / insert_block / list_blocks: Operaciones con bloques
  • send_command: Ejecutar cualquier comando CAD mediante la línea de comandos

Heredado:

  • process_command: Procesar comandos en lenguaje natural

Estructura del Proyecto

CAD-MCP/
├── imgs/                # Images and video resources
│   └── CAD-mcp.mp4     # Demo video
├── pyproject.toml       # Packaging config (pip install -e .)
├── requirements.txt     # Project dependencies
└── src/                 # Source code
    ├── __init__.py     # Package initialization
    ├── cad_controller.py # CAD controller (COM layer: drawing/query/editing/drawings/blocks)
    ├── config.py        # Config singleton loader
    ├── config.json     # Configuration file
    ├── models.py        # Structured output models (outputSchema)
    ├── nlp_processor.py # Natural language processor
    └── server.py       # Server implementation (FastMCP)

Licencia

Licencia MIT