NCA Social Media
Aktualisiert:
Autor:
Roland Golla
Grüner Jetpack Sulu MCP Bundle trägt BugHunter neben roter Rakete

Was ist das Sulu MCP Bundle?

Das Sulu MCP Bundle macht eine Sulu Installation zum MCP Server. KI Assistenten wie Claude, ChatGPT oder Codex legen damit Seiten an, ändern einzelne Blöcke und pflegen Medien direkt im CMS.
Das Copy and Paste aus dem Chat fällt weg. Der Assistent kennt eure Webspaces, Templates und Felder und arbeitet mit den Rechten des Sulu Users, der ihn verbunden hat. Was er anlegt oder ändert, bleibt zunächst ein Draft.
Das Bundle ist die offizielle Lösung aus dem Sulu Projekt, steht unter MIT Lizenz und baut auf dem Symfony MCP Bundle auf. Ihr braucht dafür kein Sulu.ai und keinen bestimmten KI Anbieter.
Inhalt
NCA KI Workshop für Developer

Agentic Coding im Team, nicht nur im Glossar

Ein Tag inhouse mit Benjamin Klein für Developer, Tester und Admins. Context Engineering, Harness, ADRs und zwei Hands on Blöcke mit KI Agenten in eurem Setup.

  1. 1
    Kostenloses Vorgespräch
    Stand, Rollen und Ziele klären
  2. 2
    Workshoptag bei euch
    Praxis am Vormittag, Hands on danach
  3. 3
    Praxistag optional
    Agenten im eigenen Projekt
Benjamin Klein
Benjamin Klein
Senior Consultant
Zum Workshop für Developer arrow_forward

NCA hilft euch schnell beim Sulu MCP Bundle

Unser Sulu CMS läuft auf Symfony, und wir sprechen täglich über einen eigenen MCP Server mit ihm. Das offizielle Bundle ordnen wir für euch daneben ein. Wir kennen die Stellen, an denen so ein Aufbau im Alltag hakt.
Rund um das Bundle greifen mehrere Leistungen ineinander. Den Aufbau mit Rollen und Rechten zeigt die NCA MCP Middleware, die Leitplanken liefern die NCA PHP AI Coding Guidelines. Änderungen am Projekt laufen durch eine CI CD Pipeline mit Docker und Staging. Alte Projekte bringen wir per PHP Refactoring in Form, und mit dem NCA Symfony AI Team Mate kommen auch Daten aus anderen Systemen dazu.

Was das Sulu MCP Bundle im Redaktionsalltag ändert

Bisher sieht der Weg oft so aus: Text im Chat schreiben, in Sulu einfügen, Format reparieren, Kategorie suchen, Bild von Hand hochladen. Mit dem Bundle passiert das alles an einem Ort.
Typische Aufträge an den Assistenten:
  • Finde alle Seiten, die noch den alten Produktnamen nennen.
  • Übersetze die Pressemitteilung und behalte die Blockstruktur.
  • Ordne diese fünf Artikel einer Kategorie zu.
  • Zeige mir Bilder ohne Alt Text in der Presse Collection.
Wichtig sind dabei die Blöcke. Der Assistent ändert genau den einen Block, der sich ändern soll, und schreibt nicht die ganze Seite neu. Ein eigenes Tool liefert ihm vorher die Webspaces, Templates und Felder eurer Installation. So passt das Ergebnis zum Template.

Diese 42 Tools bringt das Sulu MCP Bundle mit

Bereich Anzahl Beispiele
Seiten 7 sulu_page_create, sulu_page_update, sulu_page_tree
Blöcke 5 sulu_block_add, sulu_block_update, sulu_block_reorder
Artikel 4 sulu_article_create, sulu_article_list
Snippets 4 sulu_snippet_create, sulu_snippet_get
Inhalte übergreifend 3 sulu_content_publish, sulu_content_delete
Medien 5 sulu_media_list, sulu_media_upload
Tags und Kategorien 6 sulu_tag_*, sulu_category_*
Vorschau 2 sulu_preview_link_generate
Navigation, Kontakte, Admin Links 3 sulu_navigation_get, sulu_contact_list, sulu_admin_link_generate (ab Sulu 3.1)
Sonstiges 3 sulu_content_search, sulu_get_context, sulu_ping

Eure Sulu Rechte gelten auch für den Assistenten

Das Bundle bringt kein eigenes Rechtesystem mit. Jede Anfrage läuft als angemeldeter Sulu User. Was im Admin verboten ist, ist auch über MCP verboten.
Die Anmeldung läuft über OAuth 2.1. Ihr loggt euch normal in Sulu ein und bestätigt den Client auf einer Consent Seite. Einen API Key mit vollem Zugriff gibt es nicht.
Tools, für die einer Rolle die Rechte fehlen, tauchen in der Tool Liste gar nicht erst auf. Ein Aufruf trotzdem endet mit einer Absage. Entzieht ihr jemandem im Admin den Zugriff, verliert auch sein Assistent ihn.

Vier Schalter geben heikle Tools frei

Diese Dangerous Tools sind ab Werk aus. Solange ein Schalter aus ist, sind seine Tools für Clients nicht vorhanden. Nach jeder Änderung leert ihr den Cache.
Schalter Tools Das erlaubt ihr damit
delete sulu_content_delete, sulu_tag_delete, sulu_category_delete Inhalte, Tags und Kategorien löschen
publish sulu_content_publish, sulu_content_unpublish, sulu_preview_link_revoke, sulu_page_move, sulu_page_reorder Veröffentlichen, offline nehmen, Vorschau Links widerrufen, Seitenbaum umbauen
block_remove sulu_block_remove Blöcke entfernen
media_upload sulu_media_upload Bilder von einer URL laden, der Server ruft dafür eine vom Modell gewählte Adresse auf

So installiert ihr das Sulu MCP Bundle

Ihr braucht PHP 8.2, Symfony 7.3 oder 8 und Sulu 3.0.9 oder neuer. Die Flex Recipe liegt in den Contrib Recipes, deshalb schaltet ihr diese zuerst frei.
Code:
          

composer config extra.symfony.allow-contrib true
composer require sulu/mcp-bundle

Die Recipe registriert die Bundles, schreibt Routen und Konfiguration und ergänzt die Server URL. Das Schlüsselpaar für OAuth erzeugt ihr selbst. Beide Dateien gehören nicht ins Repository.
Code:
          

mkdir -p config/jwt
openssl genrsa -aes128 -out config/jwt/private.pem 4096
openssl rsa -in config/jwt/private.pem -pubout -out config/jwt/public.pem

Danach setzt ihr die Werte in der Umgebung und legt die Tabellen an.
Code:
          

SULU_MCP_SERVER_URL=https://your-sulu-host.example.com
OAUTH_PRIVATE_KEY=%kernel.project_dir%/config/jwt/private.pem
OAUTH_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
OAUTH_PASSPHRASE=<passphrase>
OAUTH_ENCRYPTION_KEY=<random-string>

bin/console doctrine:migrations:diff
bin/console doctrine:migrations:migrate

Firewall und Hosts bleiben eure Handarbeit

Der Endpoint liegt unter /admin/mcp. Die MCP Firewall muss deshalb in der security.yaml vor der Admin Firewall stehen, weil Symfony die erste passende Firewall nimmt.
Code:
          

security:
    firewalls:
        mcp:
            pattern: ^/admin/mcp/?$
            provider: sulu
            stateless: true
            entry_point: sulu_mcp.authentication_entry_point
            oauth2: true
        admin:
            pattern: ^/admin(\/|$)

    access_control:
        - { path: ^/\.well-known/oauth-, roles: PUBLIC_ACCESS }
        - { path: ^/admin/mcp/register$, roles: PUBLIC_ACCESS }
        - { path: ^/admin/mcp/token$, roles: PUBLIC_ACCESS }
        - { path: ^/admin/mcp/?$, roles: IS_AUTHENTICATED_FULLY }

Das Muster ist bewusst eng. /admin/mcp/authorize und die Consent Seite brauchen den eingeloggten User und müssen deshalb bei der Admin Firewall landen.
Der zweite Stolperstein sind die erlaubten Hosts. Ab Werk akzeptiert der Transport nur localhost. Mit eigener Domain endet jede Anfrage mit Forbidden: Invalid Host header., obwohl OAuth vorher geklappt hat. Im Symfony Log steht dazu nichts, und der Client meldet abgelehnte Zugangsdaten. Die Recipe trägt den Host ein, ohne Flex macht ihr das selbst.
Code:
          

mcp:
    servers:
        sulu:
            http:
                allowed_hosts:
                    - '%env(key:host:url:SULU_MCP_SERVER_URL)%'
                    - localhost
                    - 127.0.0.1
                    - '[::1]'

So verbindet ihr KI Clients mit Sulu

Das Repository hat eigene Anleitungen für Claude.ai, Claude Code, Claude Cowork, ChatGPT, Codex und Mistral Le Chat. Die meisten Clients melden sich selbst an, ihr tragt also nur die URL ein. Bei Claude Code sieht das so aus.
Code:
          

claude mcp add --transport http sulu https://your-sulu-host.example.com/admin/mcp

Beim ersten Aufruf öffnet sich der Login im Browser. Ihr meldet euch bei Sulu an, bestätigt die Scopes, und der Client speichert das Token. Einen Client von Hand anlegen müsst ihr nur, wenn er sich nicht selbst registrieren kann, etwa bei Claude Cowork.
Code:
          

bin/console sulu:mcp:create-client "Claude Cowork" --client=claude-cowork \
    --redirect-uri="<callback-uri-aus-dem-connector-setup>"

Das Repository liefert auch einen empfohlenen System Prompt in der Datei CONTENT_ASSISTANT_PROMPT.md. Er erklärt dem Assistenten das Sulu Inhaltsmodell. Ob alle gewünschten Tools aktiv sind, seht ihr so:
Code:
          

bin/console cache:clear
bin/console debug:container --tag=mcp.tool

Das ist neu in Version 1.0 des Sulu MCP Bundles

Vom ersten Release Candidate bis zur stabilen Version wuchs das Bundle von 37 auf 42 Tools. Das sind die Änderungen, die ihr im Betrieb merkt:
  • Bilder per URL: sulu_media_upload importiert Bilder und prüft sie mit den Sulu File Inspectors.
  • Seitenbaum: sulu_page_move und sulu_page_reorder verschieben und sortieren Seiten.
  • Client Anmeldung: Clients können sich über ein Client ID Metadata Document ausweisen, die öffentliche Registrierung lässt sich abschalten.
  • Stateless: Clients mit der Protokoll Revision 2026-07-28 brauchen keine Session mehr, jeder Server hinter einem Load Balancer kann antworten.
  • Admin Links: sulu_admin_link_generate führt ab Sulu 3.1 direkt in den Admin.
  • Eigene Felder: Projekteigene Excerpt und SEO Felder werden unterstützt.
Kommt ihr von RC3 oder älter, braucht ihr die neue Tabelle sulu_mcp_cimd_client. Die Abhängigkeiten stehen jetzt bei symfony/mcp-bundle 0.13 und mcp/sdk 0.8. Gleicht bei einem Upgrade auch config/bundles.php und die Routen mit der aktuellen Anleitung ab, denn die OAuth Routen liegen jetzt in zwei Dateien.

So unterscheidet sich das Bundle von den anderen Wegen

Weg Was er leistet Passt, wenn
Sulu MCP Bundle Externe KI Clients arbeiten mit euren Rechten an Sulu Inhalten Euer Team seinen Assistenten mit dem CMS verbinden will
Sulu.ai KI Funktionen im Admin, zum Beispiel für Alt Texte, Metadaten und Übersetzungen Redakteure KI direkt in der Sulu Oberfläche nutzen sollen
Symfony MCP Bundle Grundlage für einen eigenen MCP Server mit eigenen Tools Ihr eigene Abläufe oder Daten neben Sulu anbinden wollt
Sulu Mate Extension Sulu bezogene MCP Tools über Symfony AI Mate Ihr Symfony AI Mate schon im Projekt nutzt

By default, everything an assistant creates or changes stays a draft.

Daniel Mathis, Core Developer bei Sulu – Sulu Blog

NCA Erfahrung mit MCP im Sulu Alltag

Auch diese Seite ist über MCP entstanden. Unser Sulu CMS spricht über einen eigenen MCP Server mit dem Agent. Das offizielle Bundle ist ein anderer Baustein, und die Fragen im Betrieb ähneln sich: Wer darf was, und was bleibt ein Draft?
Was sich bei uns bewährt hat: Antworten knapp halten, weil jedes Feld Tokens kostet. Wie viel das bringt, zeigt unser Artikel zu optimierten MCP Responses. Veröffentlichen bleibt bei uns ein eigener, bewusster Schritt, und für Weiterleitungen gibt es das Sulu Redirect Bundle.
Wir helfen Teams bei Installation, Firewall und Rechten und ordnen ein, welche Schalter zu eurer Redaktion passen. Für API Projekte gibt es das Sulu Headless Bundle, für KI Funktionen im Admin unsere Seite zu Sulu.ai. Die Werkzeuge im Umfeld findet ihr im Glossar für KI Tools 2026 und in der Übersicht der Vibe Coding Tools.
CYPRESS.IO Ambassador und IT Consultant für QA Engenieering und Qualität in PHP Projekten.
Erreichen Sie unsere PHP Consultant Spezialisten

Wir sind Experten für PHP und helfen Ihnen, Ihre digitalen Herausforderungen zu meistern. Unser erfahrenes Team unterstützt Sie bei PHP Updates, PHP Refactoring und berät Sie remote zu allen Fragen rund um PHP. Mit unseren vollautomatischen CI/CD Deployments und einer robusten Docker-Infrastruktur bringen wir Ihre PHP-Projekte auf das nächste Level. Vertrauen Sie auf unsere Expertise für zuverlässige und skalierbare PHP-Lösungen.

Häufige Fragen zum Sulu MCP Bundle

Die wichtigsten Antworten zu Installation, Rechten und Betrieb.
Was kann das Sulu MCP Bundle 2026?

Das Sulu MCP Bundle macht Sulu zum MCP Server. KI Assistenten lesen und ändern damit Seiten, Artikel, Snippets, Blöcke und Medien über 42 Tools. Dabei arbeiten sie mit den Rechten des verbundenen Users. Veröffentlichen, Löschen, Blöcke entfernen und Medien Upload schaltet ihr einzeln frei.

Welche Voraussetzungen hat das Sulu MCP Bundle 2026?

Ihr braucht PHP 8.2 oder neuer, Symfony 7.3 oder 8 und Sulu ab Version 3.0.9. Dazu kommt ein öffentlich erreichbarer Host, damit sich externe Clients anmelden können. Das Bundle läuft als normales Symfony Bundle in eurem Projekt und benötigt Datenbanktabellen für die OAuth Daten.

Welche KI Clients funktionieren 2026 mit dem Sulu MCP Bundle?

Das Repository enthält Anleitungen für Claude.ai, Claude Code, Claude Cowork, ChatGPT, Codex und Mistral Le Chat. Die meisten dieser Clients melden sich selbst an, ihr gebt also nur die URL ein. Für einen Client ohne Selbstregistrierung legt ihr den Zugang per Konsolenbefehl an.

Ist das Sulu MCP Bundle 2026 kostenlos?

Ja, das Bundle ist Open Source und steht unter MIT Lizenz. Sulu.ai ist dafür keine Voraussetzung. Kosten entstehen höchstens beim KI Anbieter oder Client, den ihr verbindet, und beim Betrieb eurer eigenen Installation. Die Höhe hängt also ganz von eurem Setup ab.

Darf ein KI Assistent 2026 über das Bundle ohne Freigabe veröffentlichen?

Ab Werk nicht. Das Publish Tool ist aus, Inhalte bleiben Drafts. Erst wenn ihr dangerous_tools.publish einschaltet, steht es bereit, und auch dann nur für User mit den passenden Sulu Rechten. Solange der Schalter aus bleibt, drückt also immer ein Mensch auf Veröffentlichen.

Wie sicher ist die Anmeldung über OAuth?

Clients melden sich über OAuth 2.1 an. Ihr loggt euch mit eurem Sulu Konto ein und bestätigt den Client auf einer Consent Seite. Erst danach wird ein Token ausgestellt. Einen separaten API Key mit vollem Zugriff gibt es nicht, und Client Namen ohne vertrauten Host werden als nicht verifiziert markiert.

Warum meldet mein Client abgelehnte Zugangsdaten?

Oft liegt es am Host und gar nicht am Token. Fehlt eure Domain in allowed_hosts, antwortet der Transport nach erfolgreichem OAuth mit Forbidden: Invalid Host header. Im Symfony Log steht dazu nichts. Tragt den Host unter mcp.servers.sulu.http.allowed_hosts ein, dann läuft die Verbindung.

Warum fehlen Tools im Client?

Dafür gibt es zwei häufige Gründe. Der passende Schalter unter dangerous_tools ist aus, dann existiert das Tool für Clients nicht. Oder der Rolle fehlen die Sulu Rechte, dann wird es ausgeblendet. Nach einer Änderung leert ihr den Cache und prüft die Liste mit debug:container --tag=mcp.tool.

Worin unterscheiden sich das Sulu MCP Bundle und Sulu.ai?

Das Bundle verbindet externe KI Clients mit eurem CMS. Sulu.ai bringt KI Funktionen direkt in den Admin. Beide lassen sich getrennt nutzen, das Bundle funktioniert also ohne Sulu.ai. Laut Sulu baut Sulu.ai auf derselben Grundlage auf und ergänzt sie um weitere Tools und Integrationen.

Kann das Bundle auch eigene Inhaltstypen bearbeiten?

Ja, ein anderes Bundle kann eigene Typen über das ContentTypeExtensionInterface ergänzen. Danach greifen die übergreifenden Inhalts Tools, Block Tools, Vorschau Tools und sulu_content_search darauf zu. Eigene heikle Tools lassen sich mit dem Attribut DangerousTool in einer eigenen Kategorie absichern.

Läuft das Bundle hinter einem Load Balancer?

Ja. Clients mit der Protokoll Revision 2026-07-28 arbeiten stateless, jeder Server kann also jede Anfrage beantworten. Ältere Clients nutzen Sessions. Bei mehreren Servern stellt ihr dafür den Session Store auf cache oder leitet jeden Client immer zum selben Server.

Wie unterstützt NCA beim Sulu MCP Bundle?

NCA hilft bei Installation, Firewall, OAuth und der Auswahl passender Schalter. Dazu kommen Tests und die Einbindung in eure Pipeline. Der Start ist ein kostenloses Kennenlernen, danach schätzen wir den Aufwand und rechnen transparent minutengenau ab.