Automatización (API y MCP)
LinceCAD se puede manejar desde otros programas del mismo equipo: scripts de Python, otros programas y asistentes de IA (Claude, por ejemplo) a través de MCP (Model Context Protocol). Pueden abrir y guardar dibujos, consultar y crear entidades, cambiar capas, ejecutar comandos, evaluar AutoLISP, trazar a PDF y ver el dibujo como imagen. Todo va por canales locales: nada sale del equipo.
Activarla
La automatización está desactivada por defecto. Se activa en OPCIONES, pestaña Automatización:
| Ajuste | Qué hace |
|---|---|
| Permitir automatización (API/MCP) | Abre el canal local de la API. Sin esto, ningún programa puede conectar con la ventana |
| Solo lectura (pueden leer, no cambiar) | Los programas pueden leer el dibujo pero no cambiarlo, guardarlo ni ejecutar comandos |
| Confirmar los cambios de los asistentes de IA (paleta Acciones de la IA) | Lo que un asistente de IA quiera cambiar espera en la paleta ACCIONESIA hasta que lo acepte |
| Carpetas permitidas | Solo se abre, se guarda y se traza en esas carpetas (vacío: en cualquiera) |
| Servidor MCP por HTTP en 127.0.0.1, puerto | Servidor MCP por HTTP, solo en 127.0.0.1, para conectar un asistente con el LinceCAD abierto |
Los ajustes se guardan al momento en api.toml, en la carpeta de configuración del usuario (%APPDATA%\lince en Windows, ~/.config/lince en Linux), junto con la ficha: la contraseña que los programas presentan al conectar. Solo su usuario puede leerla. Generar una ficha nueva la cambia (los programas que tenían la anterior dejan de poder entrar).
Control de lo que hace la IA
- Un paso de deshacer por llamada: todo lo que cambia una llamada se deshace con un solo DESHACER.
- Acciones de la IA (ACCIONESIA): con la confirmación activada, cada cambio pedido por un asistente aparece con lo que quiere hacer; Aceptar lo ejecuta y Rechazar se lo niega. Aceptar todo en esta sesión deja de preguntar hasta cerrar LinceCAD. Debajo está el registro de todas las llamadas.
- Si el usuario está en mitad de un comando, los cambios esperan: la API contesta «ocupado».
- Un error interno durante una llamada se deshace entero y LinceCAD sigue funcionando.
Sin ventana
lince --servidoratiende la API sin ventana a la vista (para procesos por lotes y servidores).--canal NOMBREcambia el nombre del canal.lince --mcpes un servidor MCP por la entrada y la salida estándar, para los asistentes que lo arrancan ellos.
Los dos son el mismo LinceCAD con la ventana fuera de la pantalla: mismos comandos y misma vista (para las capturas). No abren diálogos ni preguntan nada; respetan el modo solo lectura y las carpetas permitidas de api.toml. En Linux necesitan una sesión gráfica (o xvfb-run).
Conectar un asistente de IA (MCP)
Claude Desktop: en %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"lince": { "command": "C:\\Program Files\\lince\\lince.exe", "args": ["--mcp"] }
}
}Claude Code (sin ventana, en un proyecto): claude mcp add --scope project lince -- "C:\Program Files\lince\lince.exe" --mcp
Claude Code con el LinceCAD abierto (active Servidor MCP por HTTP en 127.0.0.1, puerto; la ficha está en api.toml): claude mcp add --transport http lince http://127.0.0.1:7341/mcp --header "Authorization: Bearer <ficha>"
El asistente ve las herramientas (abrir, consultar, crear, acotar, insertar bloques, trazar a PDF, capturar la vista, deshacer…), los recursos (resumen, entidades, capas y bloques de cada dibujo abierto, y estas páginas de ayuda como documentación) y tres prompts: revisar el plano, acotar una planta y limpiar las capas.
Python
Hay dos paquetes de Python (requieren Python 3.9 o posterior):
lince(cliente): maneja LinceCAD por la API.pip install lince. Sin dependencias.
import lince
with lince.iniciar() as s: # arranca «lince --servidor» sin ventana
dib = s.nuevo()
dib.crear_capa("MUROS", color=1)
with dib.transaccion(): # un solo paso de deshacer
dib.linea([0, 0], [100, 0], layer="MUROS")
dib.circulo([50, 50], 20)
dib.trazar_pdf("plano.pdf")
dib.guardar_como("plano.dwg")Para una instancia abierta (con la automatización activada): s = lince.conectar(); dib = s.dibujo.
lince_nucleo(rueda PyO3): lee, modifica, guarda y consulta DWG/DXF sin abrir LinceCAD (lotes, servidores, Jupyter).pip install lince-nucleo.
import lince_nucleo as ln
dib = ln.abrir("plano.dwg")
for e in dib.consultar(tipo="CIRCLE"):
print(e["handle"], e["radius"])
dib.guardar("salida.dwg", "2018")Las entidades usan el mismo formato tipado de §5.1. Ejemplos en python/ejemplos del código fuente.
Programas propios (JSON-RPC)
Los programas conectan por la tubería \\.\pipe\lince-<usuario> (Windows) o el socket $XDG_RUNTIME_DIR/lince.sock (Linux) y mandan un mensaje JSON-RPC 2.0 por línea. El primero es session.hello con la ficha:
{"jsonrpc":"2.0","id":1,"method":"session.hello","params":{"token":"<ficha>"}}
{"jsonrpc":"2.0","id":2,"method":"entity.create","params":{"entity":{"type":"LINE","start":[0,0],"end":[100,0]}}}
{"jsonrpc":"2.0","id":3,"method":"document.saveAs","params":{"path":"C:\\planos\\prueba.dwg"}}Hay métodos para dibujos (document.*), comandos (command.run), AutoLISP (lisp.eval), entidades (entity.query/get/create/set/delete, como objetos o como listas DXF de entget), capas, bloques, estilos, variables, designación, deshacer, trazado, captura de la vista y eventos. La especificación completa está en docs/api.md del código fuente.
Véase también
OPCIONES · ACCIONESIA · AutoLISP · SCRIPT