Lokaler stdio-Transport
Neben dem HTTP-Endpoint gibt es einen zweiten Weg, einen Client anzubinden, nämlich den Konsolenbefehl ai-suite-mcp:server. Er stellt dieselben Tools bereit, spricht aber JSON-RPC über stdin und stdout statt über HTTP. Gedacht ist das für lokale, vertrauenswürdige CLI-Clients auf demselben Rechner, etwa Claude Desktop oder Claude Code, wenn du lieber einen Befehl startest als einen OAuth-Connector einzurichten.
Weder Token noch OAuth noch eine erreichbare URL sind dafür nötig. Der Client startet den Befehl selbst und redet über die Pipe mit ihm.
MCP-Server über stdio starten
vendor/bin/typo3 ai-suite-mcp:server --user=[uid-oder-benutzername]
Optionale Parameter
Optional sind zwei Parameter. --scopes="mcp:read mcp:write" begrenzt die Scopes, standardmäßig gelten alle, zu denen der Backend-Benutzer berechtigt ist. --workspace=[uid] setzt den Ziel-Workspace, standardmäßig wird er aus mcpWriteMode aufgelöst.
Client-Konfiguration
Ein Wrapper-Skript brauchst du nicht, command und args erledigen alles direkt. Zu beachten ist, dass Oberflächen-Clients wie Claude Desktop den Befehl aus ihrem eigenen Arbeitsverzeichnis und mit minimalem PATH starten. Verwende deshalb absolute Pfade.
Composer-Installation, TYPO3 direkt erreichbar.
{
"mcpServers": {
"typo3-ai-suite": {
"command": "/bin/bash",
"args": ["-c", "cd '[projekt-wurzel]' && exec ./vendor/bin/typo3 ai-suite-mcp:server --user=1"]
}
}
}Die Projektwurzel ist das Verzeichnis mit der composer.json. Das Bin-Verzeichnis liegt standardmäßig unter vendor/bin/ und kann per config.bin-dir abweichen.
DDEV-Installation. Die typo3-Binary liegt im Web-Container, also muss der Aufruf über ddev exec laufen. Zwei Dinge lassen einen einfachen Aufruf scheitern, beide löst die Zeile selbst. Zuerst in das Projektverzeichnis wechseln, weil DDEV sein Projekt aus dem Arbeitsverzeichnis ermittelt, und den absoluten Pfad zu ddev verwenden (per which ddev ermitteln, etwa /opt/homebrew/bin/ddev).
{
"mcpServers": {
"typo3-ai-suite": {
"command": "/bin/bash",
"args": ["-c", "cd '[projekt-wurzel]' && exec '[ddev-pfad]' exec .Build/bin/typo3 ai-suite-mcp:server --user=1"]
}
}
}Das exec ersetzt die Shell durch ddev, damit die Pipe unverändert durchgereicht wird. Docker Desktop oder OrbStack muss laufen und ddev start einmal ausgeführt sein. Auch eine Variante mit docker exec -i ddev-[projekt]-web funktioniert. Der Schalter -i ist dabei Pflicht, -t darf niemals dabei sein, denn ein TTY zerstört die Rahmung der JSON-RPC-Nachrichten.
Sicherheitsmodell
Über stdio laufen die Tools als der angegebene Backend-Benutzer, und die doppelte Prüfung aus Scope und Backend-Gruppenrecht greift genau wie über HTTP. Weil der Transport aber eine lokale Pipe ist, entfallen alle Schutzmechanismen der HTTP-Oberfläche, also OAuth, die HTTPS-Pflicht, das Rate-Limit pro Token und die Begrenzung der Anfragegröße.
Betreibe den Befehl deshalb ausschließlich als lokal gestarteten Prozess und hänge ihn niemals an einen Netzwerk-Socket. Wer den Befehl ausführen kann, handelt als der gewählte Benutzer. Zugriff auf diesen Befehl ist damit gleichwertig mit dessen Backend-Zugangsdaten. Für entfernten Zugriff oder mehrere Benutzer ist der OAuth-geschützte HTTP-Endpoint der richtige Weg.
Diagnoseausgaben gehen auf stderr, weil stdout dem JSON-RPC-Kanal gehört. Tool-Aufrufe landen wie gewohnt in var/log/aisuite_mcp.log.