Ein CAD, das eine KI bedienen kann: was MCP ist und wie Sie es mit LinceCAD nutzen
Die Programmoberfläche und die Hilfe sind auf Englisch und Spanisch verfügbar. Befehle und Optionen stehen hier so, wie sie in der englischen Version des Programms heißen.
KI-Assistenten beantworten nicht mehr nur Fragen: Sie können auch Programme bedienen, wenn das Programm ihnen einen Weg dafür bietet. Dieser Weg ist immer häufiger MCP. LinceCAD bringt einen MCP-Server mit, sodass ein Assistent eine DWG öffnen, abfragen, zeichnen, bemaßen und speichern kann, während Sie entscheiden, welche Änderungen er vornehmen darf. Dieser Artikel erklärt, was MCP ist, was der Server von LinceCAD genau erlaubt und wie eine echte Sitzung aussieht.
Was MCP ist
Das Model Context Protocol ist ein offenes Protokoll, im November 2024 von Anthropic veröffentlicht, um KI-Anwendungen mit Programmen und Daten zu verbinden. Es hat zwei Seiten:
- Der Client ist die KI-Anwendung: Claude Desktop, Claude Code oder eine andere, die MCP unterstützt.
- Der Server ist das Programm, das sich steuern lässt. Er stellt Tools (Aktionen mit Parametern), Ressourcen (lesbare Daten) und Prompts (vorbereitete Anweisungen für häufige Aufgaben) bereit.
Die Nachrichten sind JSON-RPC 2.0 und laufen über Standardein- und -ausgabe (der Client startet den Server) oder über HTTP. Das KI-Modell wählt, welches Tool mit welchen Daten aufgerufen wird; der Client führt den Aufruf aus und gibt ihm das Ergebnis zurück. Der Server muss nicht wissen, welches Modell auf der anderen Seite sitzt.
Was der MCP-Server von LinceCAD erlaubt
Der Server startet mit lince --mcp und spricht über Standardein- und -ausgabe. Bei geöffnetem
LinceCAD lässt sich zusätzlich ein MCP-Server über HTTP aktivieren, nur auf 127.0.0.1. Er unterstützt
die Protokollversionen 2025-06-18, 2025-03-26 und 2024-11-05 und bietet 23 Tools:
| Zweck | Tools |
|---|---|
| Zeichnungen | list_drawings, open_drawing, new_drawing, save_drawing, drawing_summary |
| Abfragen | query_entities, get_entity, list_layers, list_blocks, list_block_library, get_variable, capture_view |
| Ändern | create_entities, modify_entity, delete_entities, manage_layer, set_variable, add_dimension, insert_block |
| Befehle und AutoLISP | run_command, eval_lisp |
| Ausgabe und Kontrolle | plot_pdf, undo |
Einige Details, die in der Praxis zählen:
capture_viewliefert ein PNG-Bild der Ansicht, sodass der Assistent die Zeichnung sehen und prüfen kann, was er gezeichnet hat.run_commandführt jeden Befehl mit seinen Antworten aus, unter dem englischen Namen mit vorangestelltem Unterstrich (_LINE,_DIMLINEAR), was in jeder Sprache funktioniert.- Jedes Tool ist als nur lesend oder destruktiv gekennzeichnet, damit der Client weiß, wofür er nachfragen soll.
- Die Ressourcen liefern Zusammenfassung, Objekte, Layer, Blöcke und Variablen jeder geöffneten
Zeichnung (
lince://drawing/{id}/summary…) sowie die Hilfeseiten von LinceCAD auf Englisch und Spanisch (lince://help/{lang}/{id}) als Dokumentation für den Assistenten. - Es gibt drei Prompts:
review_drawing(Zeichnung prüfen, ohne sie zu ändern),dimension_floor_plan(einen Grundriss bemaßen) undclean_layers(eine Layerbereinigung vorschlagen und auf Bestätigung warten).
So binden Sie ihn an
Claude Desktop, in %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"lince": { "command": "C:\\Program Files\\lince\\lince.exe", "args": ["--mcp"] }
}
}
Claude Code, ohne Fenster und in einem Projekt:
claude mcp add --scope project lince -- "C:\Program Files\lince\lince.exe" --mcp
Bei geöffnetem LinceCAD: unter OPTIONS, Registerkarte Automation,
die Automatisierung erlauben und den MCP-Server über HTTP aktivieren. Das Token (das Passwort, das Clients
vorlegen) steht in api.toml, unter %APPDATA%\lince in Windows oder
~/.config/lince in Linux:
claude mcp add --transport http lince http://127.0.0.1:7341/mcp --header "Authorization: Bearer <Token>"
Jeder andere MCP-Client, der einen Server über Standardein- und -ausgabe startet, wird genauso eingerichtet: Der
Befehl ist lince.exe, das Argument --mcp.
Ein echtes Beispiel
Um zu sehen, was darunter passiert, haben wir den Client mit einem Python-Skript gespielt, ohne KI dazwischen: Es
startet lince.exe --mcp, meldet sich an, fragt die Liste der Tools ab und macht die Aufrufe, die ein
Assistent bei einer Anweisung wie „lege den Layer MUROS (Wände) in Rot an, zeichne ein Rechteck von 8 × 5 m, bemaße
die Unterkante und speichere es als planta.dwg“ machen würde. Die Koordinaten sind in Millimetern, der Layer der
Bemaßung heißt COTAS.
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()
Das ist die echte Ausgabe mit LinceCAD 0.9.8-rc3 (wir haben nur den Pfad der gespeicherten Datei durch den des Beispiels ersetzt; der Standardname der Zeichnung ist spanisch, weil das Programm auf Spanisch lief):
{'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"}
Die Zusammenfassung bestätigt, was verlangt wurde: eine Polylinie auf dem Layer MUROS, eine Bemaßung auf COTAS und
insgesamt drei Layer (0 und die beiden neuen). add_dimension erzeugt die Bemaßung über
DIMLINEAR, denselben Befehl, den Sie von Hand verwenden würden. In den Entwicklungstests diente Claude
Code als echter Client: Es erstellte einen Kreis und eine Linie und las die Zusammenfassung der Zeichnung.
Was der Benutzer kontrolliert
- Freigabe von Änderungen. Bei geöffnetem LinceCAD und aktivierter Bestätigung wartet jede vom
Assistenten angeforderte Änderung in der Palette
AIACTIONS, bis Sie auf Accept oder Reject klicken. Accept all in this session fragt bis zum Schließen des Programms nicht mehr. Lesezugriffe werden nicht abgefragt. - Ein Rückgängig-Schritt pro Aufruf. Alles, was ein Aufruf ändert, wird mit einem einzigen
UNDOzurückgenommen, und der Assistent hat sein eigenes Toolundo. - Nur Lesen und erlaubte Ordner. In
OPTIONSkönnen Sie jede Änderung sperren oder die Ordner begrenzen, in denen geöffnet, gespeichert und geplottet wird. Ohne Fenster (--mcp) wird nichts gefragt, diese beiden Grenzen gelten aber. - Protokoll. Die Palette speichert die letzten 500 Aufrufe mit Uhrzeit und gegebenenfalls dem Fehler.
- Alles lokal. LinceCAD sendet nichts aus dem Rechner hinaus. Bedenken Sie aber, dass das, was der Assistent liest (Zusammenfassungen, Objekte, Bildschirmbilder), bei dem KI-Dienst ankommt, den Ihr Client nutzt, nach dessen Bedingungen.
Grenzen
- Objekte werden im Modellbereich erstellt und abgefragt. Echtfarben werden gelesen, aber nicht geschrieben.
eval_lispschlägt fehl, wenn die Routine den Benutzer nach Daten fragt (getpoint,entsel…).- Der HTTP-Server hält die MCP-Sitzung nicht zwischen Anfragen. Unter Linux braucht
lince --mcpeine grafische Sitzung (oderxvfb-run). - Der Assistent kann sich irren: Prüfen Sie Änderungen, bevor Sie sie annehmen, und arbeiten Sie mit Kopien, solange LinceCAD in der Beta ist.
Häufige Fragen
Muss ich programmieren können? Für MCP nicht: Sie richten den Client einmal ein und geben die Anweisungen in normaler Sprache.
Wo ist die vollständige Referenz? Im Thema Automation (API and MCP) des Handbuchs (auf Englisch).
Ist es eine Alternative zu AutoCAD LT? Das hängt von Ihrer Arbeit ab; wir gehen es in LinceCAD oder AutoCAD LT durch.
MCP-Server, lokale API und AutoLISP sind in LinceCAD enthalten, mit Dauerlizenz. Download · Preise ansehen · Automatisierung und alle weiteren Funktionen.