Warum CAD per KI?
Ich bin bei „KI macht jetzt CAD" erstmal skeptisch – CAD lebt von präzisen Maßen, nicht von Wortwolken. Aber das Robust MCP Bridge-Setup verbindet FreeCAD über das Model Context Protocol direkt mit Claude Code. Damit kann die KI nicht nur über Geometrie reden, sondern sie tatsächlich bauen: Bodies anlegen, Sketches zeichnen, Booleans schneiden, exportieren. Ich habe es installiert und an einem konkreten Auftrag getestet – inklusive einer druckbaren Schraube mit passender Mutter.
Die Architektur: zwei Komponenten
Das Setup besteht aus zwei Teilen, die man nicht verwechseln darf:
- MCP-Server (
freecad-robust-mcpvon PyPI) – die Brücke zwischen Claude und FreeCAD. Läuft als eigener Prozess. - Workbench/Addon („Robust MCP Bridge") – läuft innerhalb von FreeCAD und stellt die Verbindung per XML-RPC auf Port
9875bereit.
Claude redet also mit dem MCP-Server, der MCP-Server redet per XML-RPC mit der Workbench, die Workbench fasst FreeCAD an. Klingt nach viel Kette – ist aber genau die Trennung, die das Ding stabil macht.
Installation unter Linux
Den MCP-Server habe ich per pipx unter Python 3.11 installiert. Die Version ist nicht optional: FreeCADs ABI verlangt sie, mit 3.12+ knallt es. Danach beim Claude-CLI registrieren – User-Scope, XML-RPC-Modus:
# MCP-Server via pipx unter Python 3.11 (ABI-Kompatibilität mit FreeCAD)
pipx install --python python3.11 freecad-robust-mcp
# Beim Claude-CLI registrieren (User-Scope, XML-RPC-Modus)
claude mcp add freecad --scope user --env FREECAD_MODE=xmlrpcWichtig: MCP-Server werden nur beim Start von Claude Code geladen. Nach der Registrierung war ein Neustart nötig, sonst taucht das freecad-Tool nicht auf.
Drei Stolpersteine – und die Fixes
Bis die Verbindung stand, lagen drei typische Fallen im Weg – allesamt nicht der KI-Teil, sondern FreeCAD-Eigenheiten:
- „Failed to connect": Server 0.6.1 baut beim Start sofort eine Verbindung zu FreeCAD auf – die lief aber noch nicht. Lösung: Reihenfolge umdrehen, erst die Bridge in FreeCAD starten, dann Claude/den Server.
- Addon nicht im Addon-Manager: Im offiziellen Katalog (noch) nicht gelistet. Lösung: Repo manuell per
git clonein den Mod-Ordner. - Workbench taucht trotzdem nicht auf: FreeCAD 1.1 nutzt ein versioniertes Datenverzeichnis –
…/data/FreeCAD/v1-1/Mod/statt des alten…/data/FreeCAD/Mod/. Lösung: Addon in den korrekten, versionierten Ordner verschieben.
Die Fehlersuche lief komplett headless: FreeCAD per QT_QPA_PLATFORM=offscreen gestartet und über ein Diagnose-Skript FreeCADGui.listWorkbenches() abgefragt, bis die FreecadRobustMCPBridgeWorkbench in der Liste erschien.
# Diagnose: FreeCAD headless starten und Workbenches auflisten
QT_QPA_PLATFORM=offscreen freecadcmd -c \
"import FreeCADGui; print(list(FreeCADGui.listWorkbenches()))"
# Addon manuell holen und ins VERSIONIERTE Mod-Verzeichnis von FreeCAD 1.1 legen
git clone https://github.com/spkane/freecad-addon-robust-mcp-server
# -> nach …/data/FreeCAD/v1-1/Mod/ verschieben (nicht …/data/FreeCAD/Mod/)Verbindung steht: 150+ Tools
Danach meldete der Server connected: true, Modus xmlrpc, FreeCAD 1.1.1 – und Claude hatte Zugriff auf über 150 Tools: Primitive, PartDesign, Boolean-Operationen, Sketcher, Export und sogar direkte Python-Ausführung in FreeCAD. Ab hier wird es interessant.
Was Claude tatsächlich gebaut hat
Kein Spielzeug-Würfel – drei echte Teile, jedes mit anderem Anspruch:
1. Parametrische Click-Box
Ein kleiner Behälter mit Schnappdeckel. Der Clou: Alle Maße hängen an einer Spreadsheet-Tabelle Param – also echte FreeCAD-Parametrik. Die Snap-Mechanik ist eine umlaufende Rastnut in der Innenwand plus Rastwulst an einer federnden Deckelschürze (0,2 mm Spiel, 0,7 mm Eingriff), aufgebaut aus Primitiven und Boolean-Operationen (Box / Cut / Fuse).
Wie gut die Parametrik wirklich trägt, habe ich direkt ausprobiert: ursprünglich als 20×20×40 mm gebaut, dann in der Param-Tabelle auf 40×40×40 mm geändert – ein Wert angepasst, Recompute, und Box samt Deckel ziehen sauber mit. Genau dafür baut man parametrisch.
2. Schraube + Mutter mit echtem Gewinde
Hier wird es ernst: ein echtes Gewinde über Part.makeHelix plus Profil-Sweep (makePipeShell entlang der Helix) – der einzig saubere Weg für Gewindeflanken, mit reinen Primitiven nicht machbar. Trapezgewinde, Ø20 mm, Steigung 5 mm, 6 Gänge; Sechskantkopf und -mutter per Boolean-Cut. Und das Wichtigste für den 3D-Druck: schraubbar dank Spiel – das Mutterngewinde wurde gegenüber dem Schraubengewinde um 0,4 mm radial vergrößert, damit es FDM-tauglich bleibt.
3. Verfeinerungen auf Zuruf
Nachschärfen ging im Dialog: 45°-Anlauffase am Schraubenende plus beidseitige Senkung, dazu 0,5 mm Fase an allen Sechskant-Kanten (oben, unten, Ecken). Genau das Klein-Klein, das ein gedrucktes Teil erst benutzbar macht.
Methodik: zwei CAD-Paradigmen
Spannend war, dass Claude bewusst zwei Modellier-Wege gemischt hat: Primitive + Boolean (robust für rechtwinklige Teile wie die Box) und Helix + Sweep/Extrusion (nötig für Gewinde). Der dritte klassische Weg – Skizze + Extrusion über PartDesign – stand als Option im Raum, wurde hier aber nicht gebraucht. Die KI wählt also das Paradigma passend zur Geometrie, statt alles in ein Schema zu pressen.
Bei mir läuft der ganze Stack übrigens headless auf einem kleinen, sparsamen Linux-Mini-PC im Homelab – FreeCAD im Offscreen-Modus, Claude Code daneben. Für genau solche Dauerläufer nutze ich einen Beelink:
Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.
Workflow & Verifikation
Jeder Schritt lief verifiziert statt blind: nach dem Bauen Shape.isValid() und ein Solid-Check, dann ein Screenshot per saveImage() zur visuellen Kontrolle. Das eingebaute Screenshot-Tool des Addons hatte einen Bug – umgangen über den direkten FreeCAD-Aufruf. Am Ende als druckfertige .stl exportiert und in ~/3D_Printing/ abgelegt:
ClickBox.FCStd
ClickBox_Body.stl
ClickBox_Lid.stl
ScrewNut.FCStd
Screw_M20coarse.stl
Nut_M20coarse.stlDie FreeCAD-Quelldateien zum Reinschauen, Anpassen und Selberdrucken – die Param-Tabelle der Box lässt sich direkt verändern:
ClickBox.FCStd
FreeCAD-Quelldatei der parametrischen Click-Box (inkl. Param-Tabelle).
ScrewNut.FCStd
FreeCAD-Quelldatei von Schraube + Mutter (Trapezgewinde via Helix-Sweep).
Drucktest: Passt die Mutter?
Und der Moment der Wahrheit: Die Mutter lässt sich sehr gut auf die Schraube aufschrauben – super Sitz, nicht zu fest und nicht zu locker. Die 0,4 mm radiales Spiel am Gewinde waren für FDM goldrichtig.
Ein ehrlicher Schönheitsfehler: Der Sechskant der Mutter (Schlüsselweite 32 mm) ist etwas breiter als der der Schraube (30 mm). Der Grund ist lehrreich – ich hatte für die Schlüsselweiten keine Maße vorgegeben, also hat die KI zwei leicht unterschiedliche gewählt. Genau das ist die Lektion: Die KI baut präzise, aber nur das, was man spezifiziert. Wäre mir das vor dem Druck aufgefallen, hätte ein einziger weiterer Prompt die beiden Schlüsselweiten im Handumdrehen angeglichen.
Lessons Learned & Fazit
Ehrlich überrascht: Es hat erstaunlich gut geklappt. Bemerkenswert ist, wo die Reibung lag – nämlich nicht beim KI-Teil, sondern bei FreeCAD-Eigenheiten (Verbindungsreihenfolge, versioniertes Mod-Verzeichnis, Screenshot-Bug). Hat man die einmal verstanden, modelliert die KI erstaunlich zielsicher, inklusive sauberer Gewinde und druckgerechter Toleranzen.
Ein paar Caveats bleiben: Der embedded-Modus crasht auf macOS/Windows (Library-Linking), XML-RPC ist der stabile Weg; Screenshots gibt es nur im GUI-Modus. Für Linux-Nutzer ist das aber kein Beinbruch.
Unterm Strich: ein erstaunlich brauchbarer Workflow. Die KI übernimmt das stumpfe Geometrie-Klicken, der Mensch gibt Maße, Toleranzen und das letzte Wort – so wie beim Sechskant oben. Für schnelle, parametrische Teile direkt aus dem Dialog heraus ist das ab sofort fester Teil meiner Werkstatt.
Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.