Laravel · MCP · Debug · Seeder

So verwenden Sie cipi/agent in Laravel – Projekt MCP für Debug und Seeder

Von · Letzte Aktualisierung: · Kostenlose Lektüre, keine Paywall

SSHing in die Produktion für a migrate:status, ein fehlgeschlagener Job-Peek oder ein Staging-Seeder sind langsam, nicht teilbar und für einen KI-Assistenten nutzlos. Das offizielle Laravel-Paket cipi/agent stellt Webhooks, Health-Checks und – was am nützlichsten ist – a Projekt MCP innerhalb der App, sodass Cursor Protokolle lesen, Artisan ausführen und die Datenbank über HTTPS abfragen kann.

In diesem Ratgeber
  1. Warum ein Agent in der App?
  2. Installieren Sie cipi/agent
  3. Was das Paket eigentlich macht
  4. Schalten Sie das Projekt MCP ein
  5. Verbinden Sie Cursor, VS Code oder Claude
  6. Debuggen ohne SSH
  7. Seeder, Migration und Cache über artisan
  8. Eine tägliche Schleife, die Sie kopieren können
  9. Projekt MCP vs. Panel API MCP
  10. Token, Blöcke und geringste Privilegien
  11. FAQ

Warum ein Agent in der App?

Cipi besitzt bereits den Server: Nginx, PHP, Datenbanken, SSL, Bereitstellungen ohne Ausfallzeiten. Das ist Infrastruktur. Eine Laravel-App hat immer noch ihre eigene Welt – Eloquent-Modelle, Seeder, Horizon-Warteschlangen, tägliche Protokollrotation, der aktuelle Migrationssatz. Eine KI, die nur die Repo-Vermutungen sieht. Eine KI, die Werkzeuge auf dem aufrufen kannlaufen App hört auf zu raten.

Dafür gibt es das Projekt MCP. Es lebt bei POST /cipi/mcp auf der App-Domäne, spricht MCP 2024-11-05 über HTTPS und stellt sechs Tools vor, auf die es sich bezieht das Anwendung. Kein Root-SSH. Kein gemeinsamer Bereitstellungsschlüssel in der IDE. Der Assistent fragt nach Gesundheit, Schwänzen laravel.log, läuft db:seed --class=RoleSeeder beim Staging und überprüft die Zeilenanzahl mit db_query.

Health-Check und MCP funktionieren auf jedem Laravel 12+ Host. Webhook Bereitstellungen und der vollständige Protokollsatz (nginx, php, worker, deploy) erwarten a Cipi-verwaltet Umfeld. Die Referenz lebt in der Cipi Agentendokumente.

Installieren Sie cipi/agent

Anforderungen: PHP 8.3+ und Laravel 12 oder 13. Der Dienstanbieter erkennt automatisch – verlassen config/app.php allein.

$ composer require cipi/agent $ php artisan cipi:status # config + live DB connectivity

Auf einem Cipi VPS, cipi app create spritzt schon CIPI_APP_USER, CIPI_WEBHOOK_TOKEN und die Bereitstellungspfade. Sie aktivieren nur die optionalen Dienste, die Sie möchten. Off Cipi, veröffentlichen Sie die Konfiguration, wenn Sie andere Standardeinstellungen benötigen:

$ php artisan vendor:publish --tag=cipi-config

Commit und Push. Beim nächsten Deployment wird das Paket abgeholt. Auf der Schalttafelseite muss nichts weiter verkabelt werden.

Was das Paket eigentlich macht

FunktionEndpunktWenn Sie es verwenden
Webhook bereitstellenPOST /cipi/webhookGitHub / GitLab Push-Schreibvorgänge .deploy-trigger; Der Deployer wird innerhalb einer Minute als App-Benutzer ausgeführt
Health-CheckGET /cipi/healthUptimeRobot/Grafana: App, Datenbank, Cache, Warteschlangenrückstand, letzter Commit
Projekt MCPPOST /cipi/mcpCursor / VS Code / Claude: Gesundheit, Protokolle, SQL, Artisan, Bereitstellung – dieses Handbuch
DB-AnonymisiererPOST /cipi/dbDSGVO-sichere Dumps für lokale/Qualitätssicherung, Faker-Transformationen, signierter 15-minütiger Download

Jede Funktion verfügt über ein eigenes Bearer-Token und kann unabhängig voneinander ausgeschaltet werden. Ein deaktivierter Endpunkt kehrt zurück 404 — Es existiert nicht, soweit es einen Scanner betrifft.

Schalten Sie das Projekt MCP ein

Der MCP-Server ist standardmäßig deaktiviert. Aktivieren Sie es, erstellen Sie ein dediziertes Token und drucken Sie dann die Client-Snippets aus:

$ php artisan cipi:service mcp --enable $ php artisan cipi:generate-token mcp $ php artisan cipi:mcp

cipi:mcp druckt die sechs Tools und ein einfügefertiges JSON für Cursor (nativ HTTP), VS Code/Copilot und Claude Desktop (via mcp-remote). Der Token landet in .env als CIPI_MCP_TOKEN. Verwenden Sie das webhook-Geheimnis nicht erneut.

Verbinden Sie Cursor, VS Code oder Claude

Geben Sie dies für Cursor ein ~/.cursor/mcp.json (oder Einstellungen → MCP). Ersetzen Sie die Domain und das Token von Ihrem .env:

{ "mcpServers": { "cipi-myapp": { "type": "http", "url": "https://yourdomain.com/cipi/mcp", "headers": { "Authorization": "Bearer YOUR_CIPI_MCP_TOKEN" } } } }

VS Code 1.102+ verwendet den gleichen HTTP-Transport in .vscode/mcp.json unter a servers Schlüssel. Claude Desktop braucht das mcp-remote stdio-Brücke – php artisan cipi:mcp druckt diesen Block auch.

Benennen Sie den Server nach dem App-Benutzer (cipi-myapp, cipi-staging). Eine Laravel-App, eine MCP. Wenn Sie Staging und Produktion betreiben, registrieren Sie zwei Server und sagen Sie, welchen Sie meinen.

Debuggen ohne SSH

Dies ist der Teil, der den Tagesrhythmus verändert. Sie bleiben in der IDE. Der Assistent spricht mit der Live-App.

Gesundheit – geht es überhaupt?

Gleiche Nutzlast wie GET /cipi/health: Laravel-Version, APP_DEBUG, Datenbankname, Cache, Warteschlangentreiber, ausstehende Jobs, letzter Bereitstellungs-Commit. Fragen Sie: „Ist die Produktion gesund? Gibt es einen Rückstand in der Warteschlange?“ Wenn checks.app.debug ist true Auf einem öffentlichen Host haben Sie gerade ein Problem gefunden, ohne es zu öffnen .env.

Protokolle – letzte Fehler, nicht die gesamte Datei

Die logs Das Tool liest die letzten N Zeilen (Standard 50, max. 500) und hält die Stack-Traces intakt. Filter:

Täglicher Wechsel (laravel-YYYY-MM-DD.log) wird automatisch erkannt. Eine nützliche erste Eingabeaufforderung nach einem 500: „Zeige die letzten 100 Laravel Fehler und dann die passenden nginx Zeilen.“

db_query – Schauen Sie, machen Sie nicht kaputt

Lesen Sie: SELECT, SHOW, DESCRIBE, EXPLAIN. Schreiben Sie: INSERT, UPDATE, DELETE. Gesperrt: DROP, TRUNCATE, GRANT, REVOKE, Datei-E/A. Die Ergebnisse werden als ASCII-Tabelle zurückgegeben, die auf 100 Zeilen begrenzt ist – genug, um einen Seeder zu bestätigen, nicht genug, um die Benutzertabelle zu löschen.

# after a RoleSeeder on staging SELECT id, name, created_at FROM roles ORDER BY id; # did today’s signups land? SELECT COUNT(*) FROM users WHERE created_at >= CURRENT_DATE;

Seeder, Migration und Cache über artisan

Die artisan Das Tool ist der Grund, warum dieses Paket einen Platz in einem Repo für Laravel verdient. Es führt alle Artisan-Befehle aus, mit Ausnahme der lang andauernden/interaktiven Befehle (serve, tinker, queue:work, queue:listen, schedule:work, horizon, octane:start, reverb:start). Alles andere – einschließlich Sämaschinen – ist Freiwild.

Eingabeaufforderungen, die tatsächlich einen Sprung zu SSH ersparen:

Nicht Richten Sie dies auf die Produktion und sagen Sie „Run the DatabaseSeeder“. migrate:fresh --seed ist nicht in der Sperrliste – das Paket führt es aus. Verwenden Sie beim Staging benannte Seeder und bestätigen Sie mit db_query. Produktionsdaten sind kein Spielplatz, nur weil der Transport MCP statt SSH erfolgt.

Ein sicheres Staging-Muster: eine Seeder-Klasse pro Gerät, idempotent, wo Sie können, mit Namen aufgerufen. Der Assistent leitet die Klasse, liest die Tabelle und erst dann befördern Sie denselben Seeder über CI. Das ist das Gegenteil von „Produktion wegwerfen und beten“.

Kombinieren Sie es mit dem Anonymisierer Wenn lokal Volumen ohne PII benötigt wird: Anonymisieren Sie einen produktionsförmigen Dump, laden Sie ihn lokal, behalten Sie MCP Seeder für die kleinen Referenztabellen (Rollen, Pläne, Feature-Flags), die sich bei jedem Sprint ändern.

Eine tägliche Schleife, die Sie kopieren können

Sie: Staging healthy? Any pending jobs? Agent: health → healthy, queue 0, debug false, commit a1b2c3d Sie: Last Laravel errors, search "InvoiceJob" Agent: logs type=laravel level=error search=InvoiceJob → 1 error, missing column invoices.paid_at Sie: migrate:status. Is 2026_08_22_add_paid_at pending? Agent: artisan migrate:status → yes, pending Sie: After I deploy, seed InvoiceStatusSeeder only. Agent: deploy → queued artisan db:seed --class=InvoiceStatusSeeder db_query SELECT id, name FROM invoice_statuses → 4 rows

Keine SSH-Sitzung. Kein Kopieren und Einfügen von storage/logs. Die gleiche Konversation funktioniert für einen Teamkollegen, der den MCP-Token hat und niemals Root auf der Box haben sollte – was der größte Teil des Teams ist.

Projekt MCP vs. Panel API MCP

Cipi Schiffe zwei MCP Server. Sie zu verwechseln ist der übliche erste Fehler.

Projekt MCP (cipi/agent)Panel API MCP (cipi/api)
WoPOST /cipi/mcp auf der App DomänePOST /mcp auf dem API vhost
UmfangEine Laravel-App: ihre Datenbank, Protokolle, Artisan, BereitstellungsflagDer gesamte Server: Apps, SSL, Datenbanken, PHP, Worker
Werkzeuge6 – Gesundheit, app_info, Bereitstellung, Protokolle, db_query, artisan50+ – Apps erstellen, Zertifikate ausstellen, bearbeiten .env, als App-Benutzer ausführen
Benutze es fürDebuggen, Seeder, migrate:status, WarteschlangeneinblickBereitstellung, SSL, Auflistung aller Datenbanken, Server-Cockpit

Wenn Sie möchten, behalten Sie beide im Cursor. Fragen Sie das Projekt MCP danach dies App; frag den Blende API MCP um den nächsten Staging-Klon zu erstellen. Die spezifikationsgesteuerter KI-Leitfaden deckt den größeren Kreis ab – diese Seite ist die In-App-Hälfte.

Token, Blöcke und geringste Privilegien

Installieren Sie das Paket und dann den Server

cipi/agent ist der Laravel Begleiter. Cipi ist das kostenlose, open-source Deploy CLI, das die Umgebung injiziert und Deployer ausführt, wenn webhook oder MCP deploy Werkzeugbrände.

composer require cipi/agent

Häufig gestellte Fragen

Benötige ich SSH, um das Projekt MCP zu nutzen?

Nein. Sobald das Paket bereitgestellt wurde und CIPI_MCP ist eingeschaltet, die IDE spricht mit https://yourdomain.com/cipi/mcp mit dem Bearer-Token. Das ist der Punkt für Teamkollegen, die sich niemals als Root anmelden sollten.

Was ist der Unterschied zwischen dem Agenten MCP und dem Cipi API MCP?

Der Agent MCP befindet sich in einer Laravel-App (sechs Tools: Integrität, Protokolle, SQL, Artisan, Bereitstellung). Das Panel API MCP verwaltet das gesamte VPS – Apps erstellen, SSL, Datenbanken, PHP. Verwenden Sie den Agenten für Debug und Seeder. Verwende die API zur Versorgung.

Kann ich db:seed bis MCP in der Produktion ausführen?

Technisch gesehen ja – db:seed ist nicht blockiert. Betreiben Sie praktisch nur eine benannte, überprüfte Sämaschine und niemals migrate:fresh --seed auf Live-Daten. Bevorzugen Sie die Bereitstellung und bestätigen Sie dann mit db_query.

Welche Artisan Befehle sind gesperrt?

serve, tinker, queue:work, queue:listen, schedule:work, horizon, octane:start, reverb:start. Lang laufende und interaktive Prozesse gehören nicht zu einem HTTP-Tool-Aufruf.

Funktioniert cipi/agent ohne Cipi-Server?

Health-Check und MCP ja, auf jedem Laravel 12+ Host. Durch Webhook ausgelöste Deployer-Bereitstellungen und die zusätzlichen Protokolltypen erwarten das Cipi-Layout unten /home/<app>/.

Wie rotiere ich einen durchgesickerten MCP-Token?

php artisan cipi:generate-token mcp, App neu starten (oder PHP-FPM / Octane neu laden), aktualisieren ~/.cursor/mcp.json. Der alte Token stirbt mit dem .env umschreiben.

Lesen Sie weiter