MCP-Unterstützung
Die Desktop-Version von Cinderella bietet Zugriff über einen sogenannten MCP-Server, mit dem KI-Assistenten die Funktionen von Cinderella programmgesteuert nutzen können. Insbesondere kannst du auf die aktuellen Konstruktionen zugreifen, sie verändern und CindyScript-Funktionen auswerten. Außerdem lassen sich Benutzereingaben simulieren (siehe Modi und Actions weiter unten).
Vorläufig
Die derzeitige experimentelle MCP-Implementierung ist in der Beta-Version von Cinderella verfügbar und kann sich in künftigen Versionen von Cinderella ohne Ankündigung ändern.
MCP, das Model Context Protocol, ist ein offener Standard, über den KI-Assistenten externe Programme als Werkzeuge benutzen können. Ein Assistent, der mit Cinderella verbunden ist, kann zum Beispiel eine von dir beschriebene Konstruktion zeichnen, sich das Ergebnis ansehen, die Skripte einer Konstruktion schreiben und eigene Fehler korrigieren, weil Cinderella ihm Fehler zurückmeldet.
Hinweise zur Einrichtung¶
Zwei Dinge sind nötig: Der MCP-Server von Cinderella muss eingeschaltet sein, und der KI-Assistent muss erfahren, wo er ihn findet.
Den MCP-Server einschalten¶
Öffne den Inspektor, wähle den Bereich Grundeigenschaften und setze unter Spezielle Optionen den Haken bei MCP-Server aktivieren. Cinderella merkt sich diese Einstellung, der Server wird also beim nächsten Start automatisch gestartet. Entferne den Haken, um ihn wieder anzuhalten.
Solange der Server läuft, ist er unter dieser Adresse erreichbar:
Er spricht den MCP-Transport Streamable HTTP. Ist der Port 3001 bereits von einem anderen Programm belegt, wird der Server nicht gestartet. Starte Cinderella mit der Java-Systemeigenschaft cinderella.mcp.port, um einen anderen Port zu wählen, zum Beispiel -Dcinderella.mcp.port=3005. Die Eigenschaft -Dcinderella.mcp=true schaltet den Server unabhängig von der Einstellung im Inspektor ein.
Claude Code¶
Claude Code verbindet sich direkt mit dem Server. Melde ihn einmalig mit diesem Befehl an:
Claude Desktop¶
Claude Desktop startet lokale MCP-Server als Programme und spricht über deren Standardein- und -ausgabe mit ihnen. Ein kleines Brückenprogramm übersetzt zwischen diesem Weg und der Adresse von Cinderella. Eine solche Brücke ist mcp-remote; dafür muss Node.js installiert sein. Füge den folgenden Eintrag in die Datei claude_desktop_config.json ein, die du aus den Einstellungen von Claude Desktop öffnen kannst (Developer → Edit Config), und starte Claude Desktop neu:
{
"mcpServers": {
"cinderella": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3001/mcp"]
}
}
}
Cinderella muss mit eingeschaltetem MCP-Server laufen, bevor Claude Desktop gestartet wird.
ChatGPT und andere Assistenten¶
Jeder Assistent, der auf deinem eigenen Rechner läuft und MCP unterstützt, lässt sich auf einem der beiden gezeigten Wege verbinden: mit der Adresse des Servers, wenn er den Transport Streamable HTTP unterstützt, sonst über eine Brücke wie mcp-remote.
Assistenten, die im Webbrowser oder auf den Servern ihres Anbieters laufen, wie ChatGPT, sprechen MCP-Server über das Internet an. Ein Programm auf deinem Rechner können sie nicht erreichen, und Cinderella lehnt solche Anfragen absichtlich ab (siehe unten). Ein solcher Assistent lässt sich deshalb nicht direkt mit Cinderella verbinden. Dazu braucht es ein Proxy-Programm auf deinem Rechner, das die Anfragen an Cinderella weiterreicht; das ist hier nicht beschrieben.
Sicherheit¶
Ein Assistent, der mit Cinderella verbunden ist, kann alles tun, was du in Cinderella tun kannst, einschließlich des Ausführens von Skripten und von Actions wie dem Speichern oder Schließen einer Konstruktion. Beachte deshalb:
- Der Server nimmt nur Anfragen von deinem eigenen Rechner an. Anfragen von anderen Rechnern und von Webseiten, die in deinem Browser geöffnet sind, werden abgelehnt.
- Jedes Programm auf deinem Rechner kann den Server benutzen, solange er eingeschaltet ist. Schalte ihn im Inspektor aus, wenn du ihn nicht brauchst.
- Eine Webanwendung, die auf deinem Rechner läuft und Cinderella aus dem Browser steuern soll, muss ausdrücklich mit der Java-Systemeigenschaft
cinderella.mcp.allowedOriginszugelassen werden, zum Beispiel-Dcinderella.mcp.allowedOrigins=https://example.org.
Ausprobieren¶
Beginne ein neues Gespräch mit dem Assistenten und bitte ihn zum Beispiel: „Konstruiere in Cinderella ein Dreieck mit seinem Umkreis.“ Der Assistent sollte die geöffnete Konstruktion finden, Dreieck und Kreis zeichnen und dir ein Bild des Ergebnisses zeigen.
Was der Assistent tun kann¶
Der MCP-Server stellt dem Assistenten die folgenden Werkzeuge bereit. Du rufst sie nicht selbst auf; der Assistent wählt sie nach Bedarf.
| Werkzeug | Zweck |
|---|---|
get_open_constructions, get_version |
die geöffneten Konstruktionen auflisten; die Version von Cinderella melden |
get_viewports, get_viewport_image |
die Ansichten einer Konstruktion mit ihrem sichtbaren Bereich auflisten; ein Bild einer Ansicht liefern |
list_modes, list_actions, get_mode_help |
Modi und Actions auflisten und nachschlagen, was dieses Handbuch über sie sagt |
set_mode, do_action |
einen Modus wählen; eine Action ausführen |
simulate_mouse |
in einer Ansicht klicken, ziehen oder die Maus bewegen, an Positionen in den Koordinaten der Konstruktion |
run_cindyscript |
CindyScript-Code ausführen und Ergebnis, Konsolenausgabe und Fehler zurückgeben |
get_scripts, add_script, set_script, remove_script |
die Skripte im CindyScript-Editor lesen und ändern |
get_cindyscript_help |
eine Funktion in der CindyScript-Referenz nachschlagen |
Namen von Modi und Actions, Hinweise und Handbuchtexte erhält der Assistent auf Englisch, sofern er nicht die Sprache der Benutzeroberfläche anfordert.
Modi und Actions¶
Vorläufig
Der programmgesteuerte Zugriff auf Modi und Actions ist vorläufig und kann in künftigen Versionen von Cinderella entfallen oder sich ändern.
Alles, was ein Benutzer in Cinderella tut, indem er ein Werkzeug aus der Werkzeugleiste oder einen Eintrag aus einem Menü wählt, ist entweder ein Modus oder eine Action. Ein Modus ist ein Werkzeug, das auf die Maus in einer Ansicht reagiert, etwa Bewegen, Punkt hinzufügen oder Gerade hinzufügen (siehe Interaktive Modi). Er bleibt gewählt, bis ein anderer Modus gewählt wird. Eine Action ist ein Befehl, der sofort ausgeführt wird, etwa Rückgängig oder Alles auswählen. Die folgenden beiden Operatoren machen Modi und Actions für Skripte verfügbar.
Modi und Actions werden durch Zeichenketten benannt, die wie Konstruktoraufrufe aussehen. Der Name besteht aus der Klasse des Modus oder der Action (ohne das führende de.cinderella.) und, in Klammern, einem Argument, das manche Modi benötigen:
| Name | Bedeutung |
|---|---|
"modes.Move()" |
der Bewegen-Modus |
"modes.SingleAdd()" |
einen einzelnen Punkt hinzufügen |
"modes.MultiAdd(algorithms.Join)" |
eine Gerade durch zwei Punkte hinzufügen |
"modes.MultiAdd(algorithms.CircleMP)" |
einen Kreis durch Mittelpunkt und Punkt hinzufügen |
"actions.Undo()" |
die letzte Operation rückgängig machen |
"actions.SelectAll()" |
alle Elemente auswählen |
"actions.Fetch()" |
die Ansicht so zoomen, dass alle Punkte sichtbar sind |
Das sind dieselben Namen, mit denen in der Konfigurationsdatei cinderella2.properties Menüs und Werkzeugleisten zusammengestellt werden; dort sind alle aufgeführt.
Einen Modus wählen: changemode(<string>)¶
Beschreibung: Dieser Operator wählt den Modus mit dem Namen <string>, als hätte der Benutzer ihn in der Werkzeugleiste gewählt. Der Modus wird dann für die folgenden Mausaktionen des Benutzers verwendet. Der Operator gibt den Namen des Modus zurück, der danach gewählt ist. Gibt es keinen Modus mit dem angegebenen Namen, wird der Bewegen-Modus gewählt.
Beispiel: Die folgende Zeile, etwa im Skript einer Schaltfläche, lässt den Benutzer als Nächstes eine Gerade zeichnen:
Eine Action ausführen: doaction(<string>)¶
Beschreibung: Dieser Operator führt die Action mit dem Namen <string> aus, als hätte der Benutzer sie in einem Menü gewählt. Der gewählte Modus ändert sich dabei nicht. Actions, die einen Dialog öffnen, etwa das Laden oder Speichern einer Konstruktion, warten, bis der Benutzer den Dialog geschlossen hat.
Beispiel: Der folgende Code wählt alle Punkte aus und löscht sie:
Siehe auch: Interaktion mit Geometrie für Operatoren, die Elemente direkt erzeugen, bewegen und entfernen.
Diese Seite wurde automatisch mit KI (Claude) übersetzt und wartet noch auf Überprüfung.
→ Alle KI-übersetzten Seiten