Laravel MCP 1.0 wurde am 15. September 2026 veröffentlicht. Es ist die erste stabile Version des Laravel-Pakets zum Erstellen von Model-Context-Protocol-Servern. Solche Server stellen Tools und Daten einer Laravel-Anwendung für KI-Anwendungen bereit.

WeatherServer.php
<?php
use App\Mcp\Tools\CurrentWeatherTool;
use App\Mcp\Tools\HistoricalWeatherTool;
use App\Mcp\Tools\WeatherAlertsTool;
use Laravel\Mcp\Server;
use Laravel\Mcp\Server\Tools\ToolSearch;

class WeatherServer extends Server
{
    protected array $tools = [
        CurrentWeatherTool::class,
        ToolSearch::class => [
            HistoricalWeatherTool::class,
            WeatherAlertsTool::class,
        ],
    ];
}

Die Version unterstützt MCP 2026-07-28. Die Erkennung läuft über server/discover. Hinzu kommen durchsuchbare Tool-Kataloge, Cache-Hinweise, zustandslose Verarbeitung, Änderungen an OAuth und MCP Apps in der Capability extensions. Clients mit dem bisherigen initialize-Ablauf bleiben kompatibel. Der Server antwortet je nach angeforderter Version mit 2025-11-25 oder 2025-06-18.

ToolSearch hält ausgewählte Tools aus dem Standardkatalog heraus. search_tools nimmt eine Suchanfrage und ein Ergebnislimit entgegen. Die Antwort enthält passende Tool-Namen, Beschreibungen und erwartete Eingaben. execute_tools führt ein oder mehrere Tools anhand ihres Namens aus. Ein Agent kann Tools damit suchen und aufrufen, ohne den gesamten Katalog zu laden. Die Funktion ist in Pull Request #324 dokumentiert.

Das Attribut Cacheable legt Standardwerte für Cache-Hinweise fest. cacheHints() kann diese Werte für einzelne Methoden überschreiben. Die Beispiele verwenden ttlMs mit 60_000 und 30_000 sowie den öffentlichen Bereich CacheScope::Public. Der Laravel-MCP-Client berücksichtigt die Hinweise, wenn Caching über withCache() aktiviert wird. Antworten ohne ttlMs oder mit dem Wert null beziehungsweise 0 werden nicht gecacht. Tool-Aufrufe sind nicht cachebar. Die zugehörigen Pull Requests sind #301 und #326.

Server arbeiten mit dem neuen Protokoll zustandslos. Jede HTTP-Anfrage und jede Nachricht über Standard-Ein- und -Ausgabe übermittelt Protokollversion und unterstützte Funktionen in params._meta. MCP-Session-Id, Request::sessionId(), Request::setSessionId() und das Ereignis SessionInitialized wurden entfernt. Anwendungen müssen eine eigene Kennung in den Request-Argumenten oder in _meta übertragen, wenn sie zusammengehörige Aufrufe verfolgen wollen. Pull Request #285 behandelt diese Änderung.

OAuth-Autorisierung erfordert nun PKCE. OAuthClient::redirect() wirft eine OAuthException, wenn der Autorisierungsserver code_challenge_methods_supported nicht in seinen Metadaten nennt. Zuvor wurde ein Server nur abgelehnt, wenn das Feld vorhanden war und S256 fehlte. Laravel MCP unterstützt außerdem Client ID Metadata Documents. Dabei ist client_id eine HTTPS-URL zu einem JSON-Dokument über den Client. Mcp::oAuthRoutesFor() stellt dieses Dokument unter GET /mcp/oauth/{client}/client-metadata.json bereit.

Ohne vorgegebene Client-ID verwendet Laravel das Metadaten-Dokument, sofern der Autorisierungsserver diese Funktion unterstützt. Dynamic Client Registration bleibt der Fallback, wird von MCP 2026-07-28 jedoch als veraltet eingestuft. Bei einem Metadaten-Dokument ist $token->clientSecret null. Die entsprechende Datenbankspalte muss deshalb Nullwerte akzeptieren. Die Änderung verhindert außerdem eine neue Client-Registrierung bei jedem Aufruf von redirect(). Die Pull Requests #323 und #342 enthalten diese Anpassungen.

Beim Upgrade von 0.9 müssen Client-Verbindungen und Requests geprüft werden. ValidateMcpHeaders läuft jetzt auf jeder Route, die über Mcp::web() registriert wird. POST-Anfragen mit dem neuen Protokoll brauchen MCP-Protocol-Version und Mcp-Method. Beide Header müssen zum Body passen. tools/call, prompts/get und resources/read benötigen zusätzlich Mcp-Name. Dieser Wert muss dem Tool-Namen, Prompt-Namen oder der Ressourcen-URI entsprechen.

Tests mit postJson() benötigen dieselben Header und die Felder in params._meta. Ein Widerspruch führt zu HTTP 400 und dem JSON-RPC-Fehlercode -32020. Ältere initialize-Clients ohne Protokollmetadaten in _meta sind von der Prüfung ausgenommen. Der Upgrade-Leitfaden führt außerdem Änderungen an Fehlercodes, die entfernte Konstante Server::CAPABILITY_UI und den Vertrag für eigene Transports auf. Release Notes und ein vollständiges Changelog begleiten die Version.