Den MCP-Server für Craft CMS einrichten.
Diese Anleitung führt von einer leeren Craft-Installation zum verbundenen KI-Client. Sie erklärt auch jede Einstellung, die den Client begrenzt.
1. Installieren
Noch nicht installierbar. Der Eintrag im Craft Plugin Store wird vorbereitet; solange er nicht freigeschaltet ist, lässt sich das Paket nicht auflösen — die beiden Befehle unten finden es noch nicht. Sie stehen hier, damit Sie sehen, wie das Installieren aussehen wird.
composer require alphabridge/mcp php craft plugin/install alphabridge-mcp
Die Migration legt zwei Tabellen an, alphabridge_tokens und alphabridge_audit. Das Deinstallieren entfernt sie wieder und lässt nichts zurück:
php craft plugin/uninstall alphabridge-mcp
Voraussetzungen: Craft CMS 5.9+, PHP 8.2+, MySQL 8.0.17+ / MariaDB 10.4.6+ oder PostgreSQL 13+.
2. Token anlegen
Öffnen Sie im Control Panel AlphaBridge MCP in der Seitenleiste. Die Seite steht nur Administratoren offen. Wählen Sie den Craft-Benutzer, zu dem der Token gehört, einen Scope, eine Bezeichnung zum Wiedererkennen und wahlweise eine Gültigkeit in Tagen.
Der Klartext wird genau einmal gezeigt, direkt nach dem Anlegen. Gespeichert wird nur sein SHA-256-Hash, er lässt sich also nicht noch einmal anzeigen. Kopieren Sie ihn, bevor Sie die Seite verlassen; wer ihn verliert, widerruft ihn und legt einen neuen an.
Dasselbe geht über die Konsole, was für eingerichtete Abläufe praktisch ist:
php craft alphabridge-mcp/tokens/create --user=admin --scope=read --label="Claude Desktop" php craft alphabridge-mcp/tokens/list php craft alphabridge-mcp/tokens/revoke 1
--expires-in-days=30 begrenzt die Gültigkeit; 0, die Vorgabe, heisst unbegrenzt.
Was ein Scope bedeutet
Ein Token gehört zu genau einem Craft-Benutzer und arbeitet mit dessen Rechten. Der Scope verengt weiter; er weitet nie aus.
| Scope | Erlaubt |
|---|---|
read | Die lesenden Werkzeuge, ohne die Administrator-Werkzeuge. Verändert nichts. |
content | Die lesenden Werkzeuge, dazu das Schreiben von Einträgen, Entwürfen, Kategorien und Globals. Weiterhin ohne die Administrator-Werkzeuge. |
full | Alles, was der zugeordnete Benutzer darf, einschliesslich der Administrator-Werkzeuge: Schemafelder, Systemauskunft, Prüfprotokoll, Datenbank, Protokolle, Caches, Routen, Warteschlange, Plugins, Benutzergruppen. |
3. Client verbinden
Der Endpunkt ist POST https://your-site.example/alphabridge/mcp — JSON-RPC 2.0 über Streamable HTTP, Protokollversionen 2025-03-26 und 2025-06-18. Der Token reist im Header:
X-Api-Key: abmcp_… geht ebenso. Jeder MCP-Client, der Streamable HTTP spricht und einen eigenen Header senden kann, lässt sich verbinden.
Claude Code
Ein Befehl:
claude mcp add --transport http craft https://your-site.example/alphabridge/mcp \ --header "Authorization: Bearer abmcp_…"
Claude Desktop · Cursor
Tragen Sie das in die MCP-Konfiguration des Clients ein. Der Token steht in einer Umgebungsvariablen, damit er nicht in der Datei landet, die weitergegeben wird:
{ "mcpServers": { "craft": {
"command": "npx",
"args": ["mcp-remote", "https://your-site.example/alphabridge/mcp",
"--header", "Authorization:${AUTH}"],
"env": { "AUTH": "Bearer abmcp_YOUR_TOKEN" }
}}}
Clients, die den Token nur in der URL unterbringen
Manche Clients nehmen eine Connector-URL, aber keinen eigenen Header. Für sie gibt es einen zweiten Endpunkt, der den Token im Pfad trägt — von sich aus abgeschaltet. Schalten Sie zuerst Allow the token in the URL path in den Einstellungen ein — und machen Sie sich klar, worauf Sie sich einlassen: Ein Token im Pfad landet weit leichter in Server-Protokollen, Proxy-Protokollen und Referer-Headern als einer im Header.
4. Einstellungen
Im Control Panel unter Einstellungen → Plug-ins → AlphaBridge MCP. Die Seite des Plugins selbst ist englisch; die Beschriftungen unten stehen deshalb in Klammern im Original.
- Nur-Lesen-Modus (Read-only mode) — solange er an ist, läuft kein Werkzeug, das etwas verändert. Er steht über allen anderen Schaltern.
- Werkzeuge (Tools) — jedes Werkzeug steht auf Default (on), Default (off), On oder Off. Werkzeuge, die etwas verändern, sind standardmässig aus. Die Vorgabe ist ein eigener Zustand, kein Synonym für an oder aus: Eine spätere Fassung kann ein Werkzeug neu einstufen, und eine Site, die bei der Vorgabe bleibt, folgt dieser Einstufung, statt eine alte Entscheidung einzufrieren.
- Aufrufe je Minute und Token (Calls per minute and token) — eine Bremse gegen ein Modell in der Schleife. Kein Schutz gegen einen entschlossenen Aufrufer mit gültigem Token.
- Token in der URL erlauben (Allow the token in the URL path) — standardmässig aus, siehe oben.
- Zusätzlich erlaubte Origins (Additional allowed origins) — für Clients im Browser, siehe unten.
Dieselben Einstellungen lassen sich in config/alphabridge-mcp.php setzen. Ein Wert aus der Datei gewinnt gegen das Control Panel, und die Einstellungsseite kennzeichnet jedes betroffene Feld und sagt, woher sein Wert kommt.
return [
'readOnly' => false,
'rateLimit' => 120,
'connectorUrlAuthEnabled' => false,
'allowedOrigins' => ['https://client.example', '$MCP_ALLOWED_ORIGINS'],
'toolState' => ['craft_create_entry' => true],
];
Token sind bewusst nicht Teil der Einstellungen: Sie sind Geheimnisse, und Plugin-Einstellungen liegen in der Project Config, die in Git eingecheckt wird. Token haben stattdessen ihre eigene Seite.
Origins und DNS-Rebinding
Schickt ein Client einen Origin-Header, muss dieser auf der Positivliste stehen, sonst antwortet der Endpunkt mit HTTP 403. Die Liste besteht aus den konfigurierten allowedOrigins und der Site-URL — aber nur, soweit sich diese statisch bestimmen lassen: eine feste URL mit Schema und Host, allenfalls in einer Umgebungsvariablen, die genau so eine URL enthält. Genau eine Ebene wird aufgelöst.
Eine Site-URL aus einem Craft-Alias wie @web zählt nicht, auch nicht in einer Umgebungsvariablen. Craft baut @web aus dem Host-Header der eingehenden Anfrage — ein Angreifer würde also mit sich selbst verglichen. In solchen Installationen ist allowedOrigins die einzige Quelle; ist sie leer, wird jede Anfrage mit Origin abgewiesen. Server-zu-Server-Clients senden keinen Origin und sind nicht betroffen.
5. Lizenz und Ausprobieren
Das Plugin wird über den Craft Plugin Store unter der Craft License verkauft: eine Lizenz je Produktivumgebung. Der Store-Eintrag wird gerade vorbereitet; bis er freigeschaltet ist, lässt sich das Plugin dort nicht kaufen. Entwicklungs- und Staging-Umgebungen sind frei zum Ausprobieren — das gehört zur Craft License, es ist keine Testfrist, die wir gewähren.
6. Wenn etwas nicht geht
| Was Sie sehen | Was es heisst |
|---|---|
| 401 | Der Token fehlt, ist unbekannt, abgelaufen oder widerrufen. Prüfen Sie, ob der Header wirklich ankommt — manche Proxys entfernen Authorization. Legen Sie einen frischen Token an, um einen Tippfehler auszuschliessen; der Klartext wird nur einmal gezeigt, eine unvollständige Kopie ist eine häufige Ursache. |
| 403 | Es kam ein Origin-Header, der nicht auf der Positivliste steht. Siehe Origins. Server-zu-Server-Clients senden gar keinen Origin. |
| Unknown tool | Entweder gibt es den Namen nicht, oder der Scope des Tokens umfasst ihn nicht. Diese beiden werden absichtlich gleich beantwortet: Der Unterschied verriete, was es sonst noch gibt. |
| Eine Absage, die ihren Grund nennt | Der Nur-Lesen-Modus ist an, das Werkzeug ist in den Einstellungen abgeschaltet, oder es ist ein Administrator-Werkzeug und der zugeordnete Benutzer ist keiner. Hier sagt die Antwort, welcher Fall vorliegt, damit Sie den Fehler nicht bei sich suchen. Solche Werkzeuge fehlen ausserdem in der Werkzeugliste. |
| Aufrufgrenze | Mehr Aufrufe je Minute, als die Einstellung erlaubt, gezählt je Token. Grenze erhöhen oder den Client verlangsamen. |
| Leere Liste | Kein Fehler. Der zugeordnete Benutzer darf diese Section oder Kategoriegruppe nicht sehen — eine unbekannte oder gesperrte liefert eine leere Liste statt eines Fehlers, der ihre Existenz verraten würde. Ein Site-Handle, den es nicht gibt, wird dagegen als Fehler gemeldet. |
Das Prüfprotokoll hält jeden Aufruf mit seinem Ausgang fest. Lesen Sie es mit dem Werkzeug craft_audit_log (Administrator-Scope), um zu sehen, was ein Client wirklich getan hat.
Weiter: die vollständige Werkzeugreferenz, erzeugt aus der Registry des Plugins, und wie die Sicherheitskette arbeitet.