> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel LSP – IDE-Erweiterung per Language Server Protocol

> Die offizielle Language-Server-Protocol-Implementierung von Laravel. Bietet Editoren Framework-bewusste Autovervollständigung und Hover-Funktionen.

<Info>
  Dieser Artikel ist eine erste Analyse zur Version v0.0.19, Stand Juni 2026. Vor der Registrierung bei Packagist ist eine Installation über Composer noch nicht möglich.
</Info>

## Was ist Laravel LSP?

**Laravel LSP** (Language Server Protocol) ist das offizielle Tool, das IDE-Funktionen mit Bewusstsein für das Laravel-Framework in Editoren bereitstellt. Das [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) ist der Standardprotokoll für die Kommunikation zwischen LSP-Clients (Editoren) und LSP-Servern (Laravel LSP). Dadurch wird ein einheitliches Entwicklungserlebnis über mehrere Editoren hinweg möglich.

Von Laravel LSP bereitgestellte Funktionen:

* **Autovervollständigung** – automatische Vervollständigung für Routen, Views, Config-Keys, Übersetzungs-Keys, Livewire-Komponenten usw.
* **Hover-Informationen** – beim Überfahren mit dem Cursor werden Erklärungen, Dokumentation und Kontextinfos angezeigt
* **Diagnosen** – Erkennung von Codeproblemen in Echtzeit
* **Dokumentlinks** – Verlinkungen zwischen Dateien und Ressourcen
* **Quick Fixes** – automatische Behebungsvorschläge für gängige Probleme
* **Springen zur Definition** – Sprung an die Definition eines Symbols

## Warum das nötig ist

Die Standard-PHP-Autovervollständigung eines Editors versteht die Abstraktionsschichten des Laravel-Frameworks nicht. Beispielsweise:

* keine Autovervollständigung für das erste Argument von `Route::get()` (URI-Pattern)
* keine Vervollständigung realer View-Dateinamen für den View-Namen in `view('users.index')`
* Config-Keys wie `config('app.name')` und Übersetzungs-Keys wie `trans('messages.welcome')` sind kein Vervollständigungsziel
* Innerhalb von Blade-Templates gibt es standardmäßig keine Vervollständigung oder Validierung

Laravel LSP versteht diesen „Framework-spezifischen Kontext" und liefert präzise Vervollständigung und Diagnosen.

## Installation

### Globale Installation

Installation global über Composer:

```bash theme={null}
composer global require laravel/lsp
```

Stellen Sie sicher, dass das globale Bin-Verzeichnis von Composer in `PATH` liegt; danach lässt sich der Server so starten:

```bash theme={null}
laravel-lsp
```

### Installation aus dem Quellcode

Möchten Sie die Entwicklerversion nutzen, klonen Sie das Repository und führen es aus:

```bash theme={null}
gh repo clone laravel/lsp
cd lsp
composer install
php server
```

Richten Sie einen Shell-Alias ein, um das Kommando `laravel-lsp` verwenden zu können:

```bash theme={null}
# Für Zsh
echo 'alias laravel-lsp="php /path/to/lsp/server"' >> ~/.zshrc
source ~/.zshrc

# Für Bash
echo 'alias laravel-lsp="php /path/to/lsp/server"' >> ~/.bashrc
source ~/.bashrc
```

## Editor-spezifische Konfiguration

Da Laravel LSP das Standard-LSP-Protokoll verwendet, funktioniert es in jedem Editor, der LSP unterstützt. Nachfolgend die Konfiguration für gängige Editoren.

### Sublime Text

Installieren Sie das [LSP-Paket](https://packagecontrol.io/packages/LSP) und fügen Sie unter `Preferences: LSP Settings` die Client-Konfiguration hinzu:

```json theme={null}
{
    "clients": {
        "laravel-lsp": {
            "enabled": true,
            "command": ["laravel-lsp"],
            "selector": "embedding.php | text.html.blade"
        }
    }
}
```

### Neovim

Ab Neovim 0.11 lassen sich benutzerdefinierte LSP-Konfigurationen direkt hinzufügen:

```lua theme={null}
vim.lsp.config("laravel_lsp", {
    cmd = { "laravel-lsp" },
    filetypes = { "php", "blade" },
    root_markers = { "artisan", "composer.json", ".git" },
})

vim.lsp.enable("laravel_lsp")
```

Wenn Sie `nvim-lspconfig` verwenden, registrieren Sie es wie folgt:

```lua theme={null}
local lspconfig = require("lspconfig")
local configs = require("lspconfig.configs")

if not configs.laravel_lsp then
    configs.laravel_lsp = {
        default_config = {
            cmd = { "laravel-lsp" },
            filetypes = { "php", "blade" },
            root_dir = lspconfig.util.root_pattern("artisan", "composer.json", ".git"),
        },
    }
end

lspconfig.laravel_lsp.setup({})
```

### Cursor

Cursor unterstützt VS-Code-Erweiterungen; ist die Laravel-Erweiterung installiert, funktioniert es automatisch. Für die lokale Entwicklung nutzen Sie einen VS-Code-kompatiblen LSP-Client und geben das Kommando an:

```sh theme={null}
laravel-lsp
```

### VS Code

Auch VS Code besitzt LSP-Client-Funktionalität und lässt sich über Erweiterungen konfigurieren.

### OpenCode

Aktivieren Sie in `opencode.json` die LSP-Unterstützung und richten Sie Laravel LSP als benutzerdefinierten Server ein:

```json theme={null}
{
    "$schema": "https://opencode.ai/config.json",
    "lsp": {
        "laravel-lsp": {
            "command": ["laravel-lsp"],
            "extensions": [".php", ".blade.php"]
        }
    }
}
```

## Konfiguration in der GitHub Copilot CLI

Wenn Sie die GitHub Copilot CLI verwenden, konfigurieren Sie Laravel LSP global in `~/.copilot/lsp-config.json`. Eine separate Editor-Konfiguration ist nicht erforderlich:

```json theme={null}
{
  "lspServers": {
    "laravel-lsp": {
      "command": "laravel-lsp",
      "fileExtensions": {
        ".php": "php",
        ".blade.php": "blade"
      }
    }
  }
}
```

Da die LSP-Server-Konfiguration der Copilot CLI auch `initializationOptions` unterstützt, sind alle unten beschriebenen Detaileinstellungen möglich.

## Konfigurationsoptionen

LSP-Clients können Detaileinstellungen über `initializationOptions` an Laravel LSP übergeben.

### Erkennung der PHP-Umgebung

Mit der Option `phpEnvironment` steuern Sie das PHP-Kommando, das zur Indexierung der Projektdaten verwendet wird. Standard ist `auto` (automatische Erkennung):

| Wert    | Verhalten des PHP-Kommandos                                                   |
| ------- | ----------------------------------------------------------------------------- |
| `auto`  | Erkennung in der Reihenfolge Herd → Valet → Sail → Lando → DDEV → lokales PHP |
| `herd`  | verwendet `herd which-php`                                                    |
| `valet` | verwendet `valet which-php`                                                   |
| `sail`  | verwendet `./vendor/bin/sail php`, während Sail läuft                         |
| `lando` | verwendet `lando php`                                                         |
| `ddev`  | verwendet `ddev php`                                                          |
| `local` | verwendet direkt die lokale PHP-Binary                                        |

Wenn die Erkennung fehlschlägt oder ein ungültiger Wert übergeben wird, greift `php` als Fallback.

### Beispiel für die Basiskonfiguration

```json theme={null}
{
    "phpEnvironment": "auto",
    "phpCommand": ["php"],
    "definitionProvider": false
}
```

### Konfiguration pro Funktion

Jede Funktion lässt sich einzeln ein- und ausschalten. Übliche Suffixe sind `Completion`, `Diagnostics`, `Hover`, `Link` usw.:

```json theme={null}
{
    "routeCompletion": true,
    "routeDiagnostics": true,
    "viewDiagnostics": false,
    "translationHover": true,
    "configLink": true,
    "envCompletion": true,
    "bladeComponentLink": true
}
```

## Übersicht der bereitgestellten Funktionen

| Funktionsbereich   | Vervollständigung | Hover | Diagnose | Link | Quick Fix |
| ------------------ | ----------------- | ----- | -------- | ---- | --------- |
| Routen             | ✓                 | ✓     | ✓        | ✓    | -         |
| Views und Blade    | ✓                 | ✓     | ✓        | ✓    | ✓         |
| Übersetzungen      | ✓                 | ✓     | -        | -    | -         |
| Konfiguration      | ✓                 | ✓     | ✓        | ✓    | -         |
| Umgebungsvariablen | ✓                 | ✓     | ✓        | ✓    | ✓         |
| Assets und Mix     | ✓                 | ✓     | ✓        | ✓    | -         |
| Middleware         | ✓                 | ✓     | ✓        | ✓    | -         |
| Inertia            | ✓                 | -     | ✓        | ✓    | -         |
| Livewire           | ✓                 | ✓     | -        | ✓    | -         |
| Auth und Policies  | ✓                 | ✓     | ✓        | ✓    | -         |
| Container-Bindings | ✓                 | ✓     | ✓        | ✓    | -         |
| Validation         | ✓                 | -     | -        | -    | -         |
| Controller-Actions | ✓                 | -     | ✓        | ✓    | -         |
| Eloquent           | ✓                 | -     | -        | -    | -         |

## Schnellstart

1. **Installieren** – `composer global require laravel/lsp`
2. **Editor konfigurieren** – siehe die editor-spezifischen Anleitungen oben
3. **Laravel-Projekt öffnen** – der Server indiziert vom Root aus Projektdaten wie Routes, Views, Translations und Config
4. **Autovervollständigung nutzen** – in PHP-Dateien und Blade-Templates arbeitet die Framework-bewusste Vervollständigung automatisch

## Fazit

Laravel LSP steigert das Entwicklererlebnis erheblich. Es versteht Framework-spezifischen Kontext, den der Editor-Standard nicht abbildet, und liefert präzisere und nützlichere Vervollständigungen und Diagnosen.

**Voraussetzungen:**

* PHP 8.2 oder höher
* Composer
* LSP-fähiger Editor (Sublime Text, Neovim, Cursor, VS Code usw.)

**Weiterführende Ressourcen:**

* [GitHub-Repository von Laravel LSP](https://github.com/laravel/lsp)
* [Offizielle Seite zum Language Server Protocol](https://microsoft.github.io/language-server-protocol/)
* [Anleitung zur LSP-Server-Konfiguration in der GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/copilot-cli/set-up-copilot-cli/add-lsp-servers)


## Related topics

- [Core – Kernoperationen des AT Protocols](/de/packages/laravel-bluesky/core.md)
- [Laravel Octane](/de/octane.md)
- [MongoDB](/de/mongodb.md)
- [Identity](/de/packages/laravel-bluesky/identity.md)
- [PHP, Composer und Node.js mit WSL installieren (Windows)](/de/blog/windows-setup.md)
