Teil 2 unserer Serie über KI-Integrationen mit Liferay. Teil 1 hat erklärt, was MCP ist und warum es wichtig ist. Heute wird es konkret.
Im ersten Teil haben wir das Fundament gelegt: Was MCP ist, wie der Liferay-MCP-Server prinzipiell funktioniert, und warum das mehr ist als ein Demo-Feature. Wer das noch nicht gelesen hat, sollte das kurz nachholen — der folgende Artikel setzt dieses Grundverständnis voraus.
Jetzt wird es praktisch. Dieses Tutorial zeigt Schritt für Schritt, wie man Cursor mit dem Liferay-MCP-Server verbindet und einen neuen Web Content direkt aus dem Chat heraus anlegt. Kein API-Wälzen, kein Token-Zusammenbauen — nur eine natürlichsprachige Anfrage und ein Eintrag, der in Liferay erscheint.
Was du brauchst
Bevor es losgeht, drei Voraussetzungen:
- Liferay DXP (laufende Instanz, erreichbar unter
localhost:8080oder einer anderen URL) - Feature-Flag LPD-63311 aktiviert (dazu gleich mehr)
- Cursor installiert — kostenlos unter cursor.com
Für das Tutorial verwenden wir localhost:8080 als Liferay-URL. Wer eine andere Umgebung nutzt, passt die URL in den Konfigurationsschritten entsprechend an.
Schritt 1: Feature-Flag in Liferay aktivieren
Der Liferay-MCP-Server befindet sich aktuell in der Beta-Phase und muss explizit freigeschaltet werden.
Im Liferay-Adminbereich:
- Öffne Control Panel → Instance Settings → Feature Flags
- Wechsle in den Tab Beta
- Suche nach
LPD-63311— der Eintrag heißt „MCP Server" - Schalte den Toggle auf aktiv
- Speichern
Ab diesem Moment ist der MCP-Endpunkt unter /o/mcp erreichbar. Kein Neustart notwendig.
Schnell-Test im Browser: Öffne http://localhost:8080/o/mcp im Browser. Du bekommst eine Fehlermeldung wegen fehlender Authentifizierung — das ist korrekt und zeigt, dass der Endpoint aktiv ist.
Schritt 2: Authorization Header erzeugen
Der Liferay-MCP-Server verwendet HTTP Basic Auth. Dazu muss der Benutzername und das Passwort base64-kodiert werden.
Im Terminal:
echo -n "admin@liferay.com:deinPasswort" | base64
Das Ergebnis sieht ungefähr so aus:
YWRtaW5AbGlmZXJheS5jb206ZGVpblBhc3N3b3Jk
Diesen Wert brauchst du gleich für die Cursor-Konfiguration. Ersetze admin@liferay.com und deinPasswort mit deinen tatsächlichen Zugangsdaten.
Windows-Nutzer können alternativ PowerShell verwenden:
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("admin@liferay.com:deinPasswort"))
Schritt 3: Cursor konfigurieren
Cursor liest seine MCP-Server-Konfiguration aus einer JSON-Datei. Öffne diese Datei in einem Texteditor:
- macOS / Linux:
~/.cursor/mcp.json - Windows:
C:\Users\DeinName\.cursor\mcp.json
Falls die Datei noch nicht existiert, einfach neu anlegen.
Inhalt der Datei:
{
"mcpServers": {
"liferay": {
"type": "http",
"url": "http://localhost:8080/o/mcp",
"headers": {
"Authorization": "Basic YWRtaW5AbGlmZXJheS5jb206ZGVpblBhc3N3b3Jk",
"Content-Type": "application/json"
}
}
}
}
Ersetze den Base64-String nach Basic mit dem Wert aus Schritt 2. Anschließend Cursor neu starten — die MCP-Konfiguration wird beim Start gelesen.
Schritt 4: Verbindung prüfen
Nach dem Neustart zeigt Cursor an, welche MCP-Server verbunden sind und welche Tools zur Verfügung stehen.
So prüfst du es:
- Öffne in Cursor den Chat (
Cmd+Lauf macOS,Ctrl+Lauf Windows) - Klicke auf das Werkzeug-Symbol im Chat-Bereich — dort siehst du alle verfügbaren MCP-Server
- Liferay sollte mit einem grünen Punkt als „verbunden" erscheinen
- Ein Klick auf den Eintrag zeigt die verfügbaren Tools — darunter Tools zum Lesen und Schreiben von Web Content
Falls der Status „Fehler" zeigt, sind die häufigsten Ursachen: falscher Base64-String, falsche URL oder der Feature-Flag wurde noch nicht gespeichert.
Schritt 5: Web Content anlegen — die erste Anfrage
Öffne den Cursor-Chat und tippe:
„Erstelle auf der Liferay-Website 'Guest' einen neuen Basic Web Content. Titel: 'Willkommen auf unserer Plattform'. Inhalt: 'Wir freuen uns, Sie auf unserer neuen Website begrüßen zu dürfen. Hier finden Sie alle wichtigen Informationen rund um unsere Produkte und Dienstleistungen.'"
Was im Hintergrund passiert:
- Resource-Call: Sites abfragen. Das Modell ermittelt die Site-ID der „Guest"-Website.
- Resource-Call: Content-Strukturen abfragen. Das Modell holt die Felder und den Aufbau von „Basic Web Content".
- Tool-Call: Web Content erstellen. Mit Site-ID, Structure-ID und deinen Inhalten wird der API-Call zusammengebaut und ausgeführt.
- Bestätigung. Cursor zeigt Titel und ID des neu angelegten Contents.
Das Ergebnis in Liferay prüfen: Öffne Site Administration → Content & Data → Web Content. Der neue Eintrag „Willkommen auf unserer Plattform" erscheint in der Liste.
Schritt 6: Was du noch direkt im Chat machen kannst
Ein Überblick über weitere Aktionen, die direkt funktionieren:
Bestehende Web Contents lesen:
„Zeig mir alle Web Contents auf der Guest-Website."
Einen Eintrag aktualisieren:
„Ändere den Inhalt des Web Contents 'Willkommen auf unserer Plattform' — ersetze den zweiten Satz durch: 'Unser Support-Team steht Ihnen werktags von 9 bis 17 Uhr zur Verfügung.'"
Nach Content suchen:
„Gibt es auf der Guest-Website Web Content-Einträge, die das Wort 'Kontakt' im Titel enthalten?"
Das Modell übernimmt jeweils die Übersetzung zwischen deiner Absicht und dem API-Call. Du musst keine IDs kennen, keine Endpunkte nachschlagen.
Sicherheitshinweis für den Produktiveinsatz
Was für das Tutorial mit einem Admin-Account funktioniert, sollte im Produktiveinsatz anders aufgestellt sein. Der MCP-Server erbt die Berechtigungen des authentifizierten Nutzers — dedizierte Service-Accounts mit minimalen Rechten sind der richtige Weg. Jeder MCP-Tool-Aufruf erscheint im Liferay-Audit-Log und ist damit vollständig nachvollziehbar.
Fazit
Feature-Flag aktivieren, eine JSON-Datei anlegen, Cursor neu starten — das sind die drei Schritte bis zur ersten funktionierenden Verbindung. Was danach kommt, ist der eigentlich interessante Teil: eine Plattform, deren gesamte Headless-API-Schicht per natürlicher Sprache ansprechbar wird. Web Content ist der einfachste Einstieg — die gleiche Verbindung gibt Zugriff auf Objekte, Strukturen, Assets und mehr.
Wer eine laufende Liferay-Instanz hat: Der Test lohnt sich, und er dauert keine Stunde.
