Saltar al contenido

← Blog

Un CAD que maneja una IA: qué es MCP y cómo usarlo con LinceCAD

· Guías

Los asistentes de IA ya no solo responden preguntas: también pueden usar programas, si el programa les ofrece una forma de hacerlo. Esa forma es, cada vez más, MCP. LinceCAD trae un servidor MCP, de modo que un asistente puede abrir un DWG, consultarlo, dibujar, acotar y guardar mientras tú decides qué cambios acepta. En este artículo explicamos qué es MCP, qué permite exactamente el servidor de LinceCAD y cómo es una sesión real.

Qué es MCP

El Model Context Protocol es un protocolo abierto, publicado por Anthropic en noviembre de 2024, para conectar aplicaciones de IA con programas y datos. Tiene dos partes:

Los mensajes son JSON-RPC 2.0 y viajan por la entrada y la salida estándar (el cliente arranca el servidor) o por HTTP. El modelo de IA elige qué herramienta llamar y con qué datos; el cliente hace la llamada y le devuelve el resultado. El servidor no necesita saber qué modelo hay al otro lado.

Qué permite el servidor MCP de LinceCAD

El servidor se arranca con lince --mcp y habla por la entrada y la salida estándar. Con LinceCAD abierto se puede activar además un servidor MCP por HTTP, solo en 127.0.0.1. Admite las versiones del protocolo 2025-06-18, 2025-03-26 y 2024-11-05, y ofrece 23 herramientas:

ParaHerramientas
Dibujoslist_drawings, open_drawing, new_drawing, save_drawing, drawing_summary
Consultarquery_entities, get_entity, list_layers, list_blocks, list_block_library, get_variable, capture_view
Cambiarcreate_entities, modify_entity, delete_entities, manage_layer, set_variable, add_dimension, insert_block
Comandos y AutoLISPrun_command, eval_lisp
Salida y controlplot_pdf, undo

Algunos detalles que importan en la práctica:

Cómo conectarlo

Claude Desktop, en %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "lince": { "command": "C:\\Program Files\\lince\\lince.exe", "args": ["--mcp"] }
  }
}

Claude Code, sin ventana y en un proyecto:

claude mcp add --scope project lince -- "C:\Program Files\lince\lince.exe" --mcp

Con LinceCAD abierto: en OPCIONES, pestaña Automatización, activa la automatización y el servidor MCP por HTTP. La ficha (la contraseña que presentan los clientes) está en api.toml, en %APPDATA%\lince en Windows o ~/.config/lince en Linux:

claude mcp add --transport http lince http://127.0.0.1:7341/mcp --header "Authorization: Bearer <ficha>"

Cualquier otro cliente MCP que arranque un servidor por la entrada y la salida estándar se configura igual: la orden es lince.exe y el argumento, --mcp.

Un ejemplo real

Para ver qué pasa por debajo, hemos hecho de cliente con un script de Python, sin IA de por medio: arranca lince.exe --mcp, se presenta, pide la lista de herramientas y hace las llamadas que haría un asistente ante una orden como «crea la capa MUROS en rojo, dibuja un rectángulo de 8 × 5 m, acota el lado de abajo y guárdalo como planta.dwg». Las coordenadas van en milímetros.

import json, subprocess

lince = subprocess.Popen([r"C:\Program Files\lince\lince.exe", "--mcp"],
                         stdin=subprocess.PIPE, stdout=subprocess.PIPE)
n = 0

def send(method, params=None, notify=False):
    global n
    msg = {"jsonrpc": "2.0", "method": method, "params": params or {}}
    if not notify:
        n += 1
        msg["id"] = n
    lince.stdin.write((json.dumps(msg) + "\n").encode())
    lince.stdin.flush()
    return None if notify else json.loads(lince.stdout.readline())["result"]

def tool(tool_name, /, **args):
    r = send("tools/call", {"name": tool_name, "arguments": args})
    return r["content"][0]["text"]

info = send("initialize", {"protocolVersion": "2025-06-18", "capabilities": {},
                           "clientInfo": {"name": "blog", "version": "1"}})
send("notifications/initialized", notify=True)
print(info["serverInfo"])
print(len(send("tools/list")["tools"]), "tools")

tool("manage_layer", action="create", name="MUROS", color=1)
print(tool("create_entities", entities=[{"type": "LWPOLYLINE", "layer": "MUROS", "closed": True,
           "vertices": [[0, 0], [8000, 0], [8000, 5000], [0, 5000]]}]))
tool("add_dimension", kind="linear", points=[[0, 0], [8000, 0]],
     textPosition=[4000, -800], layer="COTAS")
print(tool("drawing_summary"))
print(tool("save_drawing", path=r"C:\planos\planta.dwg"))
lince.stdin.close()
lince.wait()

Esta es la salida real con LinceCAD 0.9.8-rc3 (solo hemos cambiado la ruta del archivo guardado por la del ejemplo):

{'name': 'lince', 'title': 'LinceCAD', 'version': '0.9.8-rc3'}
23 tools
{"handles":["51"]}
{"document":{"id":1,"name":"Dibujo1.dwg","path":null,"modified":true,"active":true,"version":"AC1032","entities":2},"extents":[[0.0,-801.25],[8000.0,5000.0]],"units":0,"byType":{"DIMENSION":1,"LWPOLYLINE":1},"byLayer":{"COTAS":1,"MUROS":1},"layers":3,"blocks":0,"currentLayer":"COTAS"}
{"path":"C:\\planos\\planta.dwg","version":"AC1032"}

El resumen confirma lo que se pidió: una polilínea en la capa MUROS, una cota en COTAS y tres capas en total (la 0 y las dos nuevas). La cota la crea add_dimension ejecutando ACOLINEAL, el mismo comando que usarías a mano. En las pruebas de desarrollo, Claude Code hizo de cliente real: creó un círculo y una línea y leyó el resumen del dibujo.

Qué controla el usuario

Límites

Preguntas frecuentes

¿Necesito saber programar? No para MCP: configuras el cliente una vez y das las órdenes en lenguaje normal. Si prefieres scripts, lee automatizar dibujos DWG con Python.

¿Dónde está la referencia completa? En el tema Automatización (API y MCP) del manual.

¿Sirve como alternativa a AutoCAD LT? Depende de tu trabajo; lo repasamos en LinceCAD frente a AutoCAD LT.

El servidor MCP, la API local y AutoLISP vienen en LinceCAD, con licencia perpetua. Descargas · Ver precios · Automatización y el resto de funciones.