MetaModels MCP-Administration
Mit der MCP-Administration kann ein KI-Agent (z. B. Claude oder Codex) über den MCP-Server von Contao MetaModels auslesen und einrichten: Er erfährt, welche Bausteine es gibt, prüft, welche Pakete für eine Aufgabe nötig sind, und legt auf Wunsch ein MetaModel mit Attributen, Eingabemasken, Render-Einstellungen und Filtern an.
MCP (Model Context Protocol) ist ein offener Standard, über den KI-Programme mit Anwendungen sprechen. Contao 6
bringt dafür einen eigenen MCP-Server mit (/contao/mcp), die MCP-Administration erweitert ihn um das Wissen über
MetaModels. Die Datensätze der MetaModels sind über die Contao-API erreichbar,
die ebenfalls über diesen Server angeboten wird.
Bemerkung
Die Erweiterung ist Teil des Standardpakets im „Early-Adopter-Programm“ (EAP) - mehr dazu unter Fundraising auf der MM Webseite.
Bemerkung
Die Erweiterung ist ein früher Stand (early). Die zugrunde liegenden Bundles von Contao (API, MCP,
OAuth-Server) sind noch nicht stabil - es gibt nur den Entwicklungszweig dev-main.
Warnung
Der Agent handelt mit den Rechten des Backend-Benutzers, der ihn verbunden hat. Das Schreiben der Konfiguration ist deshalb standardmäßig ausgeschaltet und für Entwicklungssysteme gedacht - nicht für Live-Seiten.
Voraussetzungen
MetaModels core ab 2.6
Contao 6.x und PHP 8.4
contao/mcp-bundleundcontao/oauth-server-bundlevon Contao (zusammen mit demcontao/api-bundle)für den Zugriff auf Datensätze zusätzlich metamodels/contao-api
Ein Administrator-Konto im Backend - alle Werkzeuge erfordern die Rolle
ROLE_ADMIN
Installation per Composer
Solange die Bundles von Contao nicht auf Packagist veröffentlicht sind, müssen die Repositories in der
composer.json des Projektes eingetragen werden:
composer config repositories.contao-api-bundle vcs https://github.com/contao/api-bundle.git
composer config repositories.contao-mcp-bundle vcs https://github.com/contao/mcp-bundle.git
composer config repositories.contao-oauth-server-bundle vcs https://github.com/contao/oauth-server-bundle.git
composer require contao/api-bundle:dev-main contao/mcp-bundle:dev-main contao/oauth-server-bundle:dev-main
composer require metamodels/contao-api metamodels/mcp-admin
Danach die Datenbank aktualisieren (Contao-Manager, contao-setup oder
php vendor/bin/contao-console contao:migrate) - der OAuth-Server legt dabei die Tabelle oauth_server_token an.
Bemerkung
Die Adressen unter /.well-known/ müssen vom Webserver an Contao weitergegeben werden. Manche
Konfigurationen sperren alle Dateien, die mit einem Punkt beginnen - dann ist die Anmeldung des Agenten nicht
möglich (der Server antwortet mit 403).
Einen Agenten verbinden
Der MCP-Server hat die Adresse https://<Domain>/contao/mcp. Die Anmeldung läuft über OAuth: Der Agent öffnet das
Backend, nach der Anmeldung fragt Contao „Connect … with Contao?“ und weist darauf hin, dass der Agent alles tun darf,
was der Benutzer im Backend darf. Mit der Zustimmung erhält der Agent ein Token, das er selbst erneuert.
Bei Codex sieht das so aus:
codex mcp add contao --url https://example.org/contao/mcp
codex mcp login contao
Bei Claude Code wird der Server als HTTP-Server eingetragen. Die Anmeldung startet man im Programm mit /mcp: Server
auswählen, Authenticate, im Browser anmelden und zustimmen.
claude mcp add --transport http contao https://example.org/contao/mcp
Bemerkung
Claude: besser in der Konsole als in der Desktop-App. Im Test lief die Verbindung in der Konsole (claude
im Projektordner) stabil, auch die Erneuerung des Tokens nach etwa einer Stunde. In der Desktop-App brach sie mehrfach
ab: über Nacht, nach einem Neustart der Datenbank und einmal mitten in der Sitzung, jeweils ohne Fehler im Server. Dort
gibt es kein /mcp, und die Seite Konnektoren verlangt eine öffentliche https-Adresse - ein System auf
127.0.0.1 lässt sich dort nicht eintragen. Wer die App nutzen will, trägt den Server mit claude mcp add ein (oder
legt im Projektordner eine .mcp.json an), meldet ihn einmal in der Konsole mit /mcp an und startet danach eine
neue Sitzung in der App.
Vor dem ersten Prompt prüft man in der Konsole mit /mcp, ob der Server connected und authenticated meldet.
Eine laufende Sitzung lädt den Server nicht nach: Wurde er beim Start der Sitzung nicht erreicht (Datenbank neu
gestartet, Anmeldung abgelaufen), hilft auch ein Reconnect nicht, erst eine neue Sitzung.
Contao erlaubt nur Clients, die sich mit einem öffentlichen Dokument (Client ID Metadata Document) ausweisen und
deren Domain freigegeben ist. Vorbelegt sind chatgpt.com (Codex), claude.ai und vscode.dev. Weitere Clients
werden freigegeben mit:
# config/config.yaml
contao_oauth_server:
cimd_trusted_domains: ['example.org']
Der Server holt das Dokument des Clients selbst aus dem Internet - das System braucht dafür eine ausgehende Verbindung. Getestet sind die Anmeldung und der Ablauf mit Codex und mit Claude Code (lesen, schreiben, planen, anwenden und zurücknehmen).
Bemerkung
Für den Aufruf von contao_api_execute (Daten lesen und schreiben) verlangt Codex je Aufruf eine
Bestätigung, weil das Werkzeug nicht als schreibgeschützt gekennzeichnet ist.
Was der Agent kann
Die MCP-Administration ergänzt den Server von Contao um folgende Elemente:
Name |
Art |
Aufgabe |
|---|---|---|
|
Ressource |
Anleitung: die Bausteine eines MetaModels, die Reihenfolge beim Anlegen und wie man die nötigen Pakete findet. |
|
Ressource |
Alle bekannten Attribut- und Filtertypen mit Paket, Kurzbeschreibung, Verfügbarkeit und ob sie hier installiert sind. |
|
Ressource |
Seiten des Handbuchs zu Themen (z. B. Relationen, Mehrsprachigkeit) und Rezepte des Kochbuchs. |
|
Ressource |
Die Einstellungen, die ein Typ kennt: Eingabe, Regeln, Vorgaben, Auswahlwerte und Beschriftungen. |
|
Werkzeug |
Findet Typen, Erweiterungen und Handbuchseiten zu einer Aufgabe, aus wenigen Worten. Die Sprache der Worte wird im Parameter |
|
Werkzeug |
Alle MetaModels mit Tabelle, Sprachen und der Anzahl der Attribute, Eingabemasken, Render-Einstellungen und Filter. |
|
Werkzeug |
Die Konfiguration eines MetaModels: Attribute, Eingabemasken mit Feldern und Ansichtsbedingungen, Render-Einstellungen, Filter. |
|
Werkzeug |
Prüft die Typen, die eine Aufgabe braucht: Fehlende werden mit dem |
|
Werkzeug |
Prüft eine Beschreibung eines MetaModels und zeigt die Datenbankzeilen und -befehle. Schreibt nichts. |
|
Werkzeug |
Schreibt die geplanten Zeilen in einer Transaktion. Braucht den Schalter |
|
Werkzeug |
Legt Tabellen und Spalten des MetaModels an. Braucht den Schalter |
|
Werkzeug |
Zeigt, was |
|
Werkzeug |
Nimmt einen Schreibvorgang zurück. Braucht den Schalter |
Eine Installation von Paketen bleibt immer beim Menschen: Der Agent erfährt, was fehlt, und nennt den Befehl - Composer wird über MCP nicht ausgeführt.
Beispiele für Aufträge an den Agenten:
„Welche MetaModels gibt es und was für Attribute hat das MetaModel Mitarbeiter?“
„Ich brauche ein MetaModel für Veranstaltungen mit Titel, Datum, Ort und einem Preis. Welche Pakete brauche ich?“
„Lege das MetaModel an und zeige mir vorher den Plan.“
„Zeige mir alle Mitarbeiter der Abteilung Vertrieb.“ (über die Contao-API)
Ein ausführliches Beispiel steht im Kochbuch: Eventverwaltung mit einem KI-Agenten.
Pakete prüfen und Zugang
Nicht jedes Paket steht frei zur Verfügung - viele Erweiterungen sind noch im Fundraising. Der Agent bekommt diese
Angaben aus den Metadaten (siehe unten): Bei einem Paket im Early-Adopter-Programm empfiehlt er kein
composer require, sondern nennt die Seite, auf der man den Zugang erhält.
Konfiguration schreiben
Das Schreiben ist für Entwicklungssysteme gedacht und standardmäßig ausgeschaltet:
# config/config.yaml
meta_models_mcp_admin:
write: true
Der Ablauf besteht aus drei Schritten:
metamodels_plannimmt die Beschreibung (MetaModel, Attribute, Eingabemasken, Render-Einstellungen, Filter und die Zuordnung zum Backend) entgegen und prüft sie wie das Backend: installierte Typen, Tabellen- und Spaltennamen, Einstellungen des Typs. Die Antwort enthält die Probleme oder die geplanten Zeilen mit einerplan_id.metamodels_applyschreibt die Zeilen in einer Transaktion - nur für dieplan_iddes aktuellen Plans.metamodels_migrate_schemaführt die Datenbankbefehle von Contao für die Tabellen dieses MetaModels aus (mm_<name>undmm_<name>_*). Befehle, die etwas löschen, umbenennen oder leeren, werden nie ausgeführt.
Ein MetaModel braucht eine Eingabemaske und Render-Einstellungen, die den Backend-Benutzern zugeordnet sind, damit es im Backend geöffnet werden kann. Beides wird für das erste MetaModel automatisch angelegt.
Soll das MetaModel im Backend in einer eigenen Navigationsgruppe erscheinen, setzt der Agent an der Eingabemaske den
Backend-Bereich. Die Gruppe selbst ist Konfiguration (meta_models_core.be_sections in der config/config.yaml,
siehe Eigene Sektion in der Backend-Navigation) und kann der Agent nicht
schreiben. Er nennt, was einzutragen ist. Danach den Cache leeren. Ohne die Gruppe erscheint das MetaModel nicht in der
Navigation.
Für Checkboxen setzt der Agent zwei Dinge selbst:
Das Feld einer neuen Checkbox in der Eingabemaske bekommt die CSS-Klassen
w50 cbx m12, damit es mit den Feldern daneben fluchtet. Einetl_class, die in den Einstellungen des Feldes steht, ersetzt sie.Nutzt ein Filter die Checkbox als „veröffentlicht“ (Regel
checkbox_publishedbzw.translatedcheckbox_published), schaltet der Agent am Attribut die Option Wechselicon (check_publish) ein. Die Liste im Backend zeigt dann das übliche Auge zum Umschalten. Mit"check_publish": falsein den Einstellungen des Attributs bleibt sie aus. Das gilt auch für ein vorhandenes Attribut, an dem die Option noch fehlt.
Ein neues Alias-Attribut (alias und translatedalias) startet wie im Backend mit den Optionen Eindeutig
(isunique) und Immer aktualisieren (force_alias, beim übersetzten Alias force_talias). In einem MetaModel
mit Varianten setzt der Agent sie nicht, dort sind eindeutige Werte nicht möglich. Mit false in den Einstellungen des
Attributs bleibt eine Option aus. Andere Attributtypen bekommen diese Vorgaben nicht.
Ein Feld der Eingabemaske kann an eine Ansichtsbedingung geknüpft werden,
z. B. das Enddatum eines Events nur dann, wenn die Checkbox „Mehrtägig“ gesetzt ist. Der Agent legt sie beim Feld an
(conditions). Dabei gilt:
Die Bedingungen einer Ebene sind mit UND verknüpft, ein Wrapper
conditionandist nicht nötig.Das Feld des Attributs, auf das sich die Bedingung bezieht (hier „Mehrtägig“), braucht die Option „Absenden bei Änderungen“. Ohne sie zeigt das Backend die Wirkung erst nach dem Speichern. Der Planer weist darauf hin.
Die Typen kommen aus dem Core: Eigenschaftswert ist, Eigenschaft enthält einen von, Eigenschaft ist sichtbar sowie die Container UND, ODER und NICHT.
Nach dem Anlegen kennt die Contao-API das MetaModel sofort. Damit es im Frontend erscheint, legt der Agent Seite,
Artikel und ein Inhaltselement vom Typ MetaModel-Liste (metamodel_content) an.
Die Beschreibung ist der gewünschte Zustand, auch für Vorhandenes: Der Plan zeigt jede Zeile als anlegen, ändern (mit den neuen und den bisherigen Werten) oder vorhanden. Nur was die Beschreibung nennt, wird geändert; alles andere bleibt unberührt.
Nicht unterstützt (wird als Problem gemeldet): ein anderer Typ oder eine andere Spalte für ein vorhandenes Attribut, ein anderer Typ oder ein anderes Attribut für eine vorhandene Filterregel oder Ansichtsbedingung, Sprachen hinzufügen, Varianten umschalten und die Reihenfolge ändern. Gelöscht wird nichts - außer beim Zurücknehmen eines Schreibvorgangs.
Zurücknehmen
Die meisten Konfigurationstabellen kennen im Backend keine Versionen. Deshalb schreibt jedes metamodels_apply ein
Journal (eine JSON-Datei in var/mm_mcp_admin/journal) mit den angelegten und geänderten Zeilen - in derselben
Transaktion: Kann das Journal nicht geschrieben werden, bleibt vom Schreiben nichts stehen.
metamodels_undo löscht die angelegten Zeilen und stellt die Werte geänderter Zeilen wieder her. Ohne confirm
zeigt es nur, was passieren würde. Es verweigert das Zurücknehmen und ändert nichts, wenn
eine Zeile seit dem Schreiben verändert wurde,
darunter etwas hinzugefügt wurde (ein Attribut, ein Feld, eine Filterregel) oder
ein MetaModel gelöscht werden soll, dessen Tabelle Datensätze enthält.
Tabellen und Spalten bleiben bestehen, die Datenbankaktualisierung löscht nichts. Ein Journal kann einmal zurückgenommen werden. Alle Schreibvorgänge stehen im System-Log von Contao.
Was das Journal nicht kennt. Es enthält nur, was metamodels_apply geschrieben hat. Datensätze, Seiten, Artikel,
Inhaltselemente, Bildgrößen und Template-Dateien entstehen über die Contao-API oder von Hand und stehen nicht darin.
Soll ein Test vollständig zurückgenommen werden, geht man in dieser Reihenfolge vor und lässt den Agenten jeden
Schritt zeigen, bevor er ihn ausführt:
Inhaltselemente, Artikel und Seiten entfernen, die der Agent angelegt hat, ebenso eine angelegte Bildgröße und eine Template-Datei. Vorhandenes, das der Agent nur mitbenutzt hat, bleibt.
Die Datensätze der MetaModels löschen (bei übersetzten MetaModels je Sprache, mit
lang). Erst dann lässtmetamodels_undodie MetaModels zu.metamodels_undomit dem neuesten Eintrag des Journals beginnen und rückwärts gehen. Zuerst ohneconfirm, das zeigt, was passiert.Die leeren Tabellen (
DROP TABLE) löscht man von Hand, wenn sie stören.metamodels_migrate_schemalöscht nie, und ein späterescontao:migratekann sie als überzählig anzeigen.
Der Agent soll vorher sagen, was er löschen will. Ein Auftrag „nimm alles zurück“ kann er so verstehen, dass auch die Beispieldaten und Seiten gehören, die er selbst angelegt hat.
Templates
Templates schreibt nicht die MCP-Administration, sondern der MCP-Server von Contao mit seinen Template-Werkzeugen
(contao_template_*): Templates finden und lesen, den Code prüfen, die Nutzer eines Templates ermitteln, einen
Override anlegen und speichern sowie Wiederherstellungspunkte anlegen, vergleichen und zurückspielen. Damit kann der
Agent auch die Templates von MetaModels überschreiben, zum Beispiel einen Block der Seitennavigation
(mm_pagination) oder des Filters (mm_filter_default). Die Twig-Blöcke
dieser Templates bleiben im Override erreichbar.
Wichtig dabei:
Der Agent legt vor jeder Änderung einen Wiederherstellungspunkt an. Er gilt für das ganze Verzeichnis
templates/und liegt im Cache der Anwendung - er ist kein dauerhaftes Backup.Die Prüfung des Codes zeigt nur, dass das Template übersetzt werden kann. Ob die Ausgabe stimmt, zeigt erst die Seite im Frontend.
Die Analyse der Nutzer findet die Templates von MetaModels nicht: MetaModels lädt sie aus PHP, nicht über Twig. Der Agent meldet dann nur nicht auflösbare Verweise. Welche Listen ein Template nutzen, muss man im Frontend prüfen.
contao_template_create_overridekennt keinen Trockenlauf. Schickt der Agent trotzdemdry_run: truemit, wird der Parameter ohne Meldung ignoriert und die Datei entsteht. Im Test war das ein leeres Override fürcheckbox.html.twig, das alle Checkboxen der Seite betroffen hätte. Der Agent hat es bemerkt und gelöscht. Man weist ihn an, vor jedem Anlegen zu sagen, welche Datei entsteht, und danachgit statusoder den Ordnertemplates/zu prüfen.Für das Template eines einzelnen Attributs (z. B. ein Badge nur bei gesetzter Checkbox) bieten die Werkzeuge keine Variante an. Der Agent schreibt die Datei dann selbst und trägt den Namen in der Render-Einstellung des Attributs ein (Journal: eine Änderung, die Datei steht nicht darin). Im Test funktionierte beides: ein Twig-Template unter
templates/metamodels/attribute/und ein klassisches.html5direkt intemplates/(Namemm_attr_<typ>_…). Die Datei liegt außerhalb des Journals und bleibt beim Zurücknehmen stehen.
Wissensbasis (Metadaten)
Ein nicht installiertes Paket kann nicht mitteilen, welche Typen es mitbringen würde. Die Angaben zu den Paketen und ihren Attribut- und Filtertypen kommen deshalb aus einer Metadaten-Datei des Repositories MetaModels/mcp-metadata:
je Paket: ob es frei verfügbar ist oder im Early-Adopter-Programm, wo man den Zugang erhält, eine Kurzbeschreibung, Stichworte (je Sprache) und die Seite im Handbuch,
je Typ: das Paket, eine Kurzbeschreibung, Stichworte je Sprache und die Handbuchseite,
je Artikel: eine Seite des Handbuchs zu einem Thema oder ein Rezept des Kochbuchs mit Titel, Pfad und Stichworten - nur ein Verweis, der Text bleibt im Handbuch.
Die Stichworte stehen je Sprache in einer eigenen Liste, en ist Pflicht, jede Liste hat höchstens 12 Einträge:
"keywords": {"en": ["date", "time"], "de": ["datum", "uhrzeit", "termin"]}
Die Listen werden bewusst nicht gemischt, denn ein Wort kann je nach Sprache etwas anderes bedeuten. Bei der Suche zählen die Stichworte der angegebenen Sprache voll, die englischen als Rückfall mit halbem Gewicht; Stichworte anderer Sprachen werden nicht durchsucht. Das frühere flache Array wird nicht mehr gelesen.
Auch die Texte (summary, title) und die Links zum Zugang (access) gibt es je Sprache, en ist Pflicht. Das
Werkzeug metamodels_search_catalog liefert sie in der Sprache aus dem Parameter language und fällt auf Englisch
zurück, wenn es keine Fassung in dieser Sprache gibt. Die übrigen Werkzeuge und Ressourcen liefern Englisch.
Der Zugang eines Pakets ist entweder eine Seite des Handbuchs oder eine externe Adresse:
"access": {"page": "manual/extended/notelist.html"}
"access": {"url": {"en": "https://example.org/en/support", "de": "https://example.org/de/unterstuetzer"}}
Bei page steht nur der Pfad, ohne Domain. Er ist in jeder Sprache derselbe, die Adresse entsteht aus der Basisadresse
der Sprache im Handbuch-Teil der Datei (handbook.urls). Eine Seite wird so nur einmal gepflegt und ist in jeder
Sprache erreichbar. Für Seiten außerhalb des Handbuchs, etwa die Fundraising-Seite, gilt url mit einer Adresse je
Sprache. Ein Paket hat entweder page oder url.
Die Datei wird unter https://metamodels.github.io/mcp-metadata/metadata.json veröffentlicht. Die Erweiterung holt sie
von dort (nur über https), behält sie einen Tag und merkt sich die letzte valide Fassung. Ist der Server nicht erreichbar,
wird die Datei verwendet, die mit der Erweiterung ausgeliefert wird.
Ein System ohne Internetzugang oder eines, das solche Anfragen nicht senden darf, schaltet das Abrufen aus:
meta_models_mcp_admin:
metadata:
url: null # Standard: 'https://metamodels.github.io/mcp-metadata/metadata.json'
ttl: 86400 # Sekunden, wie lange die Datei behalten wird
Bemerkung
Die Metadaten sind Daten, keine Anweisungen: Texte mit Markup oder mit mehr als 240 Zeichen und Links, die
nicht mit https beginnen, werden beim Lesen verworfen.
Konfiguration
# config/config.yaml
meta_models_mcp_admin:
write: false # Schreiben der Konfiguration erlauben (Standard: false)
journal_dir: '%kernel.project_dir%/var/mm_mcp_admin/journal'
metadata:
url: 'https://metamodels.github.io/mcp-metadata/metadata.json'
ttl: 86400
journal_dir legt fest, wo die Journale der Schreibvorgänge liegen. Mit write wird das Schreiben freigegeben.
Tipps und häufige Fragen
Ein vollständiges Beispiel Schritt für Schritt steht im Kochbuch unter Eventverwaltung mit einem KI-Agenten.
Wie geht man am besten vor?
In kleinen Schritten, nach jedem Schritt das Ergebnis prüfen (Backend, Frontend).
Zuerst planen lassen („Plane …, schreibe noch nichts“), den Plan lesen und korrigieren, erst dann anwenden.
Sagen, was nicht geschehen soll („Seiten und Datensätze kommen erst im nächsten Schritt“).
Den Agenten nach jedem Schreibvorgang die
journal_idnennen lassen.Bei Unklarheiten fragen lassen: „Wo etwas nicht mit den Werkzeugen geht, sag es mir.“
Der Agent findet die Werkzeuge nicht.
Manche Agenten laden die Werkzeuge erst nach einigen Sekunden. Im Prompt nennt man den Server beim Namen (z. B. „nutze
den MCP-Server contao“) und die Adresse des Servers. Bei einer abgelaufenen Anmeldung hilft eine erneute Anmeldung
(bei Codex codex mcp login contao).
Die Werkzeuge sind mitten im Gespräch weg.
Der Server ist erreichbar, aber die Sitzung hat die Werkzeuge verloren (am häufigsten in der Desktop-App, siehe oben).
Man prüft in der Konsole mit /mcp den Status, meldet bei Bedarf neu an und startet eine neue Sitzung. Dort gibt man
den Auftrag noch einmal vollständig mit, denn die neue Sitzung kennt weder den Wunsch noch den bisherigen Plan.
Geschrieben ist bis dahin nur, was im Journal steht (metamodels_journal).
Der Plan ist plötzlich veraltet. Schreibt der Agent mehrere Pläne nacheinander oder parallel, kann ein früher erstellter Plan ungültig werden (die Reihenfolge der Zeilen hat sich geändert). Der Agent erkennt das und plant neu, man muss nichts tun. Man lässt ihn die MetaModels deshalb nacheinander anwenden: erst Kategorien und Schlagworte, dann die Events.
Der Agent bietet eine Dummy-Spalte an (``fe_memberAttribut``). Der Planer verlangt in der Eingabemaske ein Feld, das nur für Mitgliederrechte im Frontend gebraucht wird. Der Agent füllt es mit einer beliebigen Spalte, das hat keine Wirkung, solange die Mitgliederrechte aus sind.
Ein Test soll wiederholt werden.
Das Journal reicht dafür nicht (siehe Zurücknehmen). Auf einem Testsystem sichert man vorher
Datenbank, files/ und das Verzeichnis var/mm_mcp_admin/journal und spielt sie zurück - nicht, während eine
Sitzung des Agenten läuft.
Der Agent meldet, ein Typ sei nicht installiert.
Dann fehlt ein Paket, zum Beispiel für Mehrsprachigkeit (attribute_translated*). Der Agent nennt das Paket und
den Zugang. Man installiert es selbst und lässt die Typen mit metamodels_check_types erneut prüfen. Der Agent soll
nicht auf eine Variante ausweichen, die die Aufgabe verfehlt (etwa einsprachig statt mehrsprachig).
Soll man „mehrsprachig“ sagen? Ja, mit den Sprachen und der Standardsprache („DE, EN, FR - DE ist Standard“). Dazu gehört, welche Felder übersetzt werden sollen und welche für alle Sprachen gelten (z. B. Kontaktfelder).
Was kann der Agent nicht?
Templates anpassen kann er nur mit den Template-Werkzeugen von Contao (siehe oben), nicht mit der MCP-Administration (z. B. ein Badge „Abgesagt“ in der Ausgabe),
die Reihenfolge von Attributen und Feldern ändern, etwas löschen und Spalten umbenennen,
Sprachen hinzufügen und Varianten umschalten,
Pakete installieren.
Er soll das sagen und einen Weg im Backend nennen. Tut er es nicht, fragt man danach.
Die Daten stehen im Backend, aber die Detail-Links fehlen. Den Alias erzeugt MetaModels beim Speichern im Backend. Wer Datensätze über die Contao-API anlegt, muss den Alias-Wert mitgeben. Die Attribute, aus denen der Alias entsteht (z. B. Titel und Datum), sollten Pflichtfelder sein, sonst ist der Alias unvollständig und ändert sich später (siehe Liste mit Detailseite).
Die Liste zeigt auch unveröffentlichte Einträge.
Der Filter braucht die Regel Checkbox-Status (Paket attribute_checkbox) auf das Attribut „veröffentlicht“. Die Regel
„Ja / Nein“ (filter_checkbox) ist ein Widget für die Besucher und filtert nur, wenn jemand sie bedient.
Was ist, wenn sich die Antwort des Agenten nach einem Update ändert?
Die Hilfe (metamodels://guide/overview) und die Hinweise des Planers werden beim Start des Gesprächs geladen.
Man bittet den Agenten, sie neu zu laden, wenn das System oder die Erweiterung aktualisiert wurde.
Ist das für Live-Seiten geeignet? Nein, das Schreiben ist für Entwicklungssysteme gedacht. Der Agent handelt mit den Rechten des Backend-Benutzers.