Dokumentation

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.

ScopeErlaubt
readDie lesenden Werkzeuge, ohne die Administrator-Werkzeuge. Verändert nichts.
contentDie lesenden Werkzeuge, dazu das Schreiben von Einträgen, Entwürfen, Kategorien und Globals. Weiterhin ohne die Administrator-Werkzeuge.
fullAlles, 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:

Authorization: Bearer abmcp_…

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.

https://your-site.example/alphabridge/mcp/abmcp_YOUR_TOKEN

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 sehenWas es heisst
401Der 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.
403Es kam ein Origin-Header, der nicht auf der Positivliste steht. Siehe Origins. Server-zu-Server-Clients senden gar keinen Origin.
Unknown toolEntweder 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 nenntDer 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.
AufrufgrenzeMehr Aufrufe je Minute, als die Einstellung erlaubt, gezählt je Token. Grenze erhöhen oder den Client verlangsamen.
Leere ListeKein 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.