> ## 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 — extensión de funciones del IDE mediante Language Server Protocol

> Implementación oficial del Language Server Protocol de Laravel. Ofrece al editor autocompletado y funcionalidad hover con conocimiento del framework.

<Info>
  Este artículo se basa en la v0.0.27, información de julio de 2026. Ya está publicada en Packagist y puede instalarse con `composer global require laravel/lsp`.
</Info>

## Qué es Laravel LSP

**Laravel LSP** (Language Server Protocol) es la herramienta oficial que ofrece al editor funcionalidades de IDE conscientes del framework Laravel. El [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) es un protocolo estándar de comunicación entre un cliente LSP (el editor) y un servidor LSP (Laravel LSP); esto permite lograr una experiencia de desarrollo uniforme en varios editores.

Funciones que ofrece Laravel LSP:

* **Autocompletado** — autocompletado de rutas, vistas, claves de configuración, claves de traducción, componentes de Livewire, etc.
* **Información en hover** — al pasar el cursor muestra descripciones, documentación e información contextual.
* **Diagnósticos** — detección en tiempo real de problemas en el código.
* **Enlaces de documento** — enlaces entre archivos y recursos.
* **Correcciones rápidas** — sugerencias de corrección automática para problemas comunes.
* **Ir a definición** — navegación a la ubicación donde se define el símbolo.

## Por qué es necesario

El autocompletado de PHP estándar del editor no comprende las capas de abstracción del framework Laravel. Por ejemplo:

* Al escribir el primer argumento de `Route::get()` con un patrón de URI, no hay autocompletado.
* Al escribir el nombre de vista de `view('users.index')`, el editor no autocompleta con nombres reales de archivos de vista.
* Las claves de los archivos de configuración (`config('app.name')`) o las claves de traducción (`trans('messages.welcome')`) quedan fuera del alcance del autocompletado.
* El autocompletado y la validación dentro de las plantillas Blade tampoco están cubiertos por el editor estándar.

Laravel LSP comprende ese «contexto específico del framework» y ofrece autocompletado y diagnósticos precisos.

## Instalación

### Instalación global

Instálalo globalmente con Composer:

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

Verifica que el directorio de binarios globales de Composer está en el `PATH` y podrás arrancarlo con:

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

### Instalación desde el código fuente

Si quieres usar la versión de desarrollo, clona el repositorio y ejecútalo:

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

Configura un alias de shell para poder usar el comando `laravel-lsp`:

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

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

## Guía de configuración por editor

Laravel LSP utiliza el protocolo LSP estándar, así que funciona en cualquier editor que soporte LSP. A continuación se presentan los métodos de configuración de los editores principales.

### Sublime Text

Instala y configura la [extensión oficial de Laravel para Sublime Text](https://github.com/laravel/sublime-extension).

### Zed

Instala y configura la [extensión oficial de Laravel para Zed](https://github.com/laravel/zed-extension).

### VS Code

Instala y configura la [extensión oficial de Laravel para VS Code](https://github.com/laravel/vs-code-extension).

### Cursor

Cursor es compatible con las extensiones de VS Code, así que la [extensión oficial de Laravel para VS Code](https://github.com/laravel/vs-code-extension) también funciona tal cual.

### Neovim

En Neovim 0.11 o superior puedes añadir directamente una configuración LSP personalizada:

```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")
```

Con `nvim-lspconfig`, regístralo de la siguiente forma:

```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({})
```

### OpenCode

Activa el soporte LSP en `opencode.json` y configura Laravel LSP como servidor personalizado:

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

## Configuración en GitHub Copilot CLI

Si utilizas GitHub Copilot CLI, puedes configurarlo globalmente en `~/.copilot/lsp-config.json`. No hace falta ninguna configuración adicional del editor:

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

La configuración de servidor LSP de Copilot CLI también soporta `initializationOptions`, así que puedes utilizar todas las opciones de configuración detalladas que se describen a continuación.

## Opciones de configuración

El cliente LSP puede pasar opciones detalladas a Laravel LSP a través de `initializationOptions`.

### Detección del entorno PHP

Con la opción `phpEnvironment` controlas el comando PHP que se usa para indexar los datos del proyecto. Por defecto es `auto`, que hace detección automática:

| Valor   | Comportamiento del comando PHP                                     |
| ------- | ------------------------------------------------------------------ |
| `auto`  | Detecta en el orden Herd → Valet → Sail → Lando → DDEV → PHP local |
| `herd`  | Usa `herd which-php`                                               |
| `valet` | Usa `valet which-php`                                              |
| `sail`  | Usa `./vendor/bin/sail php` mientras Sail esté en ejecución        |
| `lando` | Usa `lando php`                                                    |
| `ddev`  | Usa `ddev php`                                                     |
| `local` | Utiliza directamente el binario de PHP local                       |

Si la detección falla o se pasa un valor inválido, hace fallback a `php`.

### Ejemplo de configuración básica

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

### Docblocks de helpers de Pest

Opción añadida en la v0.0.27. Cuando cambian los tests de Pest o el archivo de autoload de Composer, genera y actualiza automáticamente el docblock para los helpers de Pest:

| Opción                  | Tipo      | Valor por defecto                       | Descripción                                                         |
| ----------------------- | --------- | --------------------------------------- | ------------------------------------------------------------------- |
| `pestGenerateDocBlocks` | `boolean` | `true`                                  | Si genera y mantiene actualizado el docblock de los helpers de Pest |
| `pestHelperFilePath`    | `string`  | `"storage/framework/testing/_pest.php"` | Ruta de salida del helper de Pest (relativa a la raíz del proyecto) |

```json theme={null}
{
    "pestGenerateDocBlocks": true,
    "pestHelperFilePath": "storage/framework/testing/_pest.php"
}
```

### Configuración por funcionalidad

Cada funcionalidad puede activarse o desactivarse individualmente. Los sufijos son `Completion`, `Diagnostics`, `Hover`, `Link`, etc.:

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

## Lista de funcionalidades ofrecidas

| Área                 | Completion | Hover | Diagnostics | Link | Quick fix |
| -------------------- | ---------- | ----- | ----------- | ---- | --------- |
| Rutas                | ✓          | ✓     | ✓           | ✓    | -         |
| Vistas y Blade       | ✓          | ✓     | ✓           | ✓    | ✓         |
| Traducciones         | ✓          | ✓     | -           | -    | -         |
| Configuración        | ✓          | ✓     | ✓           | ✓    | -         |
| Variables de entorno | ✓          | ✓     | ✓           | ✓    | ✓         |
| Assets y Mix         | ✓          | ✓     | ✓           | ✓    | -         |
| Middleware           | ✓          | ✓     | ✓           | ✓    | -         |
| Inertia              | ✓          | -     | ✓           | ✓    | -         |
| Livewire             | ✓          | ✓     | -           | ✓    | -         |
| Auth y Policies      | ✓          | ✓     | ✓           | ✓    | -         |
| Container Bindings   | ✓          | ✓     | ✓           | ✓    | -         |
| Validation           | ✓          | -     | -           | -    | -         |
| Controller Actions   | ✓          | -     | ✓           | ✓    | -         |
| Eloquent             | ✓          | -     | -           | -    | -         |

## Inicio rápido

1. **Instalar** — `composer global require laravel/lsp`.
2. **Configurar el editor** — consulta la guía por editor arriba.
3. **Abrir el proyecto Laravel** — el servidor indexará desde la raíz los datos del proyecto: rutas, vistas, traducciones, configuración, etc.
4. **Usar el autocompletado** — dentro de archivos PHP y plantillas Blade, el autocompletado con conocimiento del framework funcionará automáticamente.

## Resumen

Laravel LSP es una herramienta que mejora enormemente la experiencia de desarrollo. Comprende el contexto específico del framework, que las funciones estándar del editor no pueden cubrir, y ofrece autocompletado y diagnósticos más precisos y útiles.

**Requisitos:**

* PHP 8.2 o superior
* Composer
* Editor compatible con LSP (Sublime Text, Neovim, Cursor, VS Code, etc.)

**Referencias:**

* [Repositorio de Laravel LSP en GitHub](https://github.com/laravel/lsp)
* [Sitio oficial de Language Server Protocol](https://microsoft.github.io/language-server-protocol/)
* [Guía de configuración de servidores LSP para GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/copilot-cli/set-up-copilot-cli/add-lsp-servers)


## Related topics

- [Funciones auxiliares](/es/helpers.md)
- [Laravel MCP](/es/mcp.md)
- [laravel/agent-skills — Colección oficial de skills para agentes de IA de Laravel](/es/blog/agent-skills-introduction.md)
- [Laravel Fortify y los starter kits](/es/advanced/fortify.md)
- [Core — operaciones core de AT Protocol](/es/packages/laravel-bluesky/core.md)
