Team-Server
Ein Rechner betreibt die Engine, das ganze Team nutzt sie. Der OpticScript-MCP-Server muss nicht auf jedem Arbeitsplatz laufen. Einmal gestartet, auf einem schnellen Rechner im Netz, bekommt der Agent jedes Arbeitsplatzes (Claude Code, Claude Desktop, ein eigener) dieselbe Engine, dieselbe Version und dieselben Schriften. Bilder laufen als ID, nicht als base64 durch das Modell.
Zwei Dienste auf dem Server
mlcos-mcp— der OpticScript-MCP-Server, diesmal über HTTP statt stdio. Er führt jedes Skript in einer Sandbox aus und verlangt ein Bearer-Token.- mlcartifact — ein kleiner Speicher für Dateien. Ein Client legt ein Bild hinein, bekommt eine ID zurück und gibt dem Modell nur diese ID. Ergebnisse landen ebenfalls dort.
Die Arbeitsplätze brauchen nur einen MCP-Client. Für Dateien, die auf
dem Arbeitsplatz liegen, gibt es artifact-cli: eine einzelne Datei,
die hoch- und herunterlädt.
Warum IDs und nicht base64
Ein Modell kann einem Werkzeug ein Bild als base64 übergeben. Bei einem Icon geht das. Bei einem Foto nicht: das Modell muss jedes Zeichen selbst in den Werkzeugaufruf schreiben, und das Ergebnis kommt auf demselben Weg zurück.
Mit dem Speicher dazwischen sieht das Modell mlcartifact://1c48-78174ca3
hinein und eine andere ID heraus. Die Pixel gehen nie durch den Kontext.
So sieht es aus
Ein echter Lauf von einem Windows-Arbeitsplatz (Claude Code in WSL). Aufgabe: ein lokales PNG mit 1,3 MB in ein WebP mit 640 px Breite umwandeln. Die Anweisung ist unten gekürzt, alles andere ist so abgelaufen:
Neun Runden, 21 Sekunden, und das Skript lief beim ersten Versuch: das
Modell hat es mit validate_script geprüft, bevor es run_script
aufrief. run_script nennt Breite und Höhe jeder Ausgabe — ein zweiter
Aufruf nur zum Nachmessen war nicht nötig.
Die Umwandlung selbst ist eine Zeile OpticScript. Hier mit dem Adler aus den Beispielbildern:
Daten von anderswo
Der Speicher ist nicht nur für Bilder da. Ein Datenbank-Werkzeug kann sein Abfrageergebnis als CSV ablegen, und ein Skript bekommt die ID als Parameter und macht ein Diagramm daraus:
//!PARAM: DATA:string=
//!OUTPUT: CHART
const rows = Engine.parseCSV("mlcartifact://" + DATA);
// … Diagramm zeichnen …
chart.save(CHART); // → mlcartifact://<neue id> im Ergebnis
Jeder Lader liest aus dem Speicher — Engine.loadImage, parseCSV,
parseJSON, readText, loadSVG. Engine.writeArtifact(name, bildOderText)
legt ein Ergebnis ab und liefert dessen ID.
Einrichten
Ein Team-Server braucht eine Enterprise-Lizenz — die 30-Tage-Testphase schaltet ihn ebenfalls frei. Auf dem Server, als das Benutzerkonto, unter dem die Dienste laufen:
mlcos-license activate <SCHLÜSSEL> --name "Vorname Nachname"
mlcos-license status # was freigeschaltet ist, bis wann
Ohne passende Lizenz startet mlcos-mcp im Netz nicht und nennt genau
dieses Kommando. Dann:
# der Speicher — Token Pflicht, auch vom selben Rechner
ARTIFACT_GRPC_TOKEN=<speicher-token> artifact-server \
-grpc-addr 0.0.0.0:9590 -addr 127.0.0.1:9591 -require-token-localhost
# die Engine
MLCOS_MCP_TOKEN=<geheim> MLCOS_ARTIFACT_TOKEN=<speicher-token> \
mlcos-mcp -addr 0.0.0.0:8765 \
-artifacts http://127.0.0.1:9590 -artifact-user team
Auf jedem Arbeitsplatz:
claude mcp add --scope user --transport http opticscript \
http://<server>:8765/mcp --header "Authorization: Bearer <geheim>"
Für artifact-cli setzen Sie ARTIFACT_GRPC_ADDR=<server>:9590,
ARTIFACT_GRPC_TOKEN=<speicher-token> und ARTIFACT_USER_ID=team.
Dann nennt artifact-cli create foto.png die ID, und
artifact-cli download <id> ergebnis.webp holt ein Ergebnis.
Unter macOS laufen beide gut als LaunchAgents, unter Linux als systemd-Units.
Sicher voreingestellt
Wer den Server erreicht, schickt Code. Deshalb:
- Ein Token ist Pflicht, sobald der Server nicht nur auf Loopback
lauscht; ohne startet er nicht.
-addr :8765ohne Host heißt127.0.0.1. - Skripte laufen in einer Sandbox: keine Dateipfade — weder vom
Aufrufer noch im Skript. Nur Ein-, Ausgaben und Artefakte.
Engine.env()liefert nichts,Engine.fetchbleibt aus, Werkzeug-Plugins nur mit-allow-tools. - Grenzen: 5 Minuten je Lauf, 64 MB je Anfrage.
- Der Speicher verlangt ein eigenes Token und weist Browser-Anfragen fremder Herkunft ab.
Grenzen
- Ein Bereich für alle. Alle Nutzer eines Servers teilen sich den
Artefakt-Bereich (
-artifact-user). Eine Trennung pro Person braucht eine Anmeldung (OAuth); die hat diese Version nicht. - claude.ai im Browser kann ihn noch nicht nutzen. Dessen Connectors erreichen Server aus dem Internet und erwarten OAuth; ein Server im LAN mit festem Token ist beides nicht.
- Große Dateien gehen über den Speicher. base64 taugt für Icons, nicht für Fotos.
Siehe auch
- MCP-Server — die zehn Werkzeuge und die Reihenfolge, die funktioniert.
- Das Artifact-Pattern — die Idee hinter dem Speicher, im MCP-Handbuch.
- mlcartifact auf GitHub —
Server,
artifact-cliund Clients für Go, TypeScript, Python, Rust. - Kommandozeilen-Werkzeuge — dieselbe Engine ohne Agent.



