¿Alguna vez te has preguntado al escribir código:
¿Por qué en VS Code puedes saltar directamente a la definición de una función presionando Ctrl + clic? ¿Por qué al pasar el mouse sobre una función puedes ver la descripción completa de los parámetros? ¿Por qué tu editor puede decirte dónde está el error antes de ejecutar el código?
Usas estas funciones todos los días y te sientes genial.
Pero es posible que no sepas que todo esto está respaldado por algo llamado **LSP** (Language Server Protocol).
Más importante aún, Claude Code también es compatible con LSP a partir de la versión 2.0.74.
¿Qué significa esto?
**Significa que Claude Code finalmente se ha transformado de una "máquina de búsqueda de texto" a una IA que realmente comprende el código.**
## **¿Qué es LSP? En pocas palabras**
LSP es un protocolo creado por Microsoft, cuyo propósito es simple:
Hacer que las funciones inteligentes de código estén disponibles en cualquier editor.
Mira:
- El servidor de lenguaje de TypeScript se puede usar en VS Code, JetBrains y Cursor.
- Ahora, **también se puede usar en Claude Code**
LSP es lo que hace que tu editor sea inteligente:
- Autocompletar nombres y parámetros de funciones
- Saltar a la definición
- Buscar todas las referencias
- Mostrar documentación al pasar el mouse
- Informar errores y advertencias en tiempo real
Usas estas funciones innumerables veces todos los días cuando escribes código.
Pero nunca has pensado en cómo se implementa.
Ahora no tienes que pensar en ello, solo necesitas saber: **Claude Code ahora también tiene estas capacidades.**
## **¿Cómo funcionaba Claude Code antes?**
Antes de admitir LSP, ¿qué tenía que hacer Claude Code para encontrar dónde se definía una función?
**Confiar en la búsqueda grep.**
En pocas palabras, es una búsqueda de texto completo para encontrar dónde aparecen los caracteres "displayBooks".
¿Es útil? Sí, lo es.
El modelo de IA ha sido entrenado con una gran cantidad de código y, de hecho, puede inferir muchas cosas del texto.
¿Pero cuál es el problema?
**No comprende realmente la estructura del código.**
Es como pedirle a alguien que encuentre a "Juan Pérez", solo puede hojear la libreta de direcciones página por página para encontrar las palabras "Juan Pérez".
Pero si usas tu teléfono para buscar "Juan Pérez", accedes directamente a la base de datos y obtienes los resultados en segundos.
Esa es la diferencia.
El Claude Code anterior: leía los archivos uno por uno, confiando en la coincidencia de texto. El Claude Code actual: pregunta directamente al servidor de lenguaje, localizando con precisión.
La diferencia de eficiencia no es poca cosa.
## **¿Qué ha aportado LSP a Claude Code?**
5 capacidades centrales, cada una de las cuales es una herramienta de eficiencia:
### **1. goToDefinition - Saltar a la definición**
¿Qué puedes hacer con Ctrl+Click en VS Code? Saltar directamente a la definición de la función.
Ahora Claude Code también puede hacer esto.
Le preguntas: "¿Dónde se define la función processRequest? Usando LSP"
No buscará tontamente en todos los archivos.
Pregunta directamente al servidor de lenguaje y obtiene la respuesta en segundos: nombre del archivo, número de línea, ubicación precisa.
### **2. findReferences - Buscar todas las referencias**
Esta es una función asesina.
Quieres refactorizar una función, pero no te atreves a cambiarla, por temor a que se rompa en otros lugares.
¿Qué hacer?
Antes tenías que dejar que Claude Code leyera los archivos uno por uno, lo cual era terriblemente lento.
Ahora simplemente pregunta: "¿En qué lugares se llama la función displayError? Usando LSP"
El servidor de lenguaje enumera directamente todas las ubicaciones de referencia.
Rápido, preciso y despiadado.
### **3. hover - Obtener información de documentación y tipo**
Cuando pasas el mouse en VS Code, puedes ver la firma de la función, los tipos de parámetros y la documentación.
Claude Code ahora también puede ver esto.
Le preguntas: "¿Qué parámetros acepta la función displayBooks? Usando LSP"
No tiene que adivinar, lee directamente la firma devuelta por el servidor de lenguaje.
Especialmente para lenguajes dinámicos como Python, antes Claude solo podía inferir el tipo basándose en el contexto.
Ahora con LSP, la información de tipo es clara de un vistazo.
### **4. documentSymbol - Lista todos los símbolos del archivo**
¿Quieres saber rápidamente qué clases, funciones y variables hay en un archivo?
Pregúntale a Claude: "¿Qué símbolos hay en backend/index.js? Usa LSP"
Te devuelve una lista estructurada, clara y concisa.
### **5. workspaceSymbol - Búsqueda de símbolos en todo el proyecto**
Esto es aún más potente.
No busca texto, busca símbolos.
¿Quieres encontrar todos los métodos que contienen "innerHTML"?
El servidor de lenguaje te los encuentra directamente, no es una coincidencia de cadenas, es un verdadero símbolo de código.
## **En la práctica: ¿Qué problemas puede resolver LSP?**
Deja de lado lo teórico, veamos casos prácticos.
### **Caso 1: Rastrear llamadas a funciones**
Hay un proyecto llamado AseBook Finder, el frontend tiene una función displayBooks.
Quieres saber dónde se llama a esta función.
¿Qué hacías antes? Claude Code grep una vez, posiblemente omitiendo o dando falsos positivos.
Ahora pregunta directamente: "Encuentra todas las referencias a displayBooks usando LSP"
Resultado:
- Ubicación de la definición de la función
- Ubicación donde se llama después de que fetch sea exitoso
- Todas las demás ubicaciones de referencia
Preciso, rápido y sin omisiones.
### **Caso 2: Comprender los parámetros de la función**
Quieres que Claude genere un fragmento de código que llame a la función displayError.
Pero no estás seguro de qué parámetros acepta esta función.
Pregúntale: "¿Qué parámetros acepta displayError? Usa LSP"
El servidor de lenguaje devuelve directamente: acepta un parámetro message.
Claude lo sabe, el código generado no tendrá errores.
### **Caso 3: Encontrar llamadas a la API**
Quieres encontrar en qué parte del proyecto se llama a la interfaz /api/recommendations.
Pregúntale a Claude: "Encuentra todas las referencias a /api/recommendations usando LSP"
Encuentra la ubicación de la llamada fetch, precisa hasta la línea.
Depurar problemas de API, rastrear el flujo de datos, súper útil.
### **Caso 4: Detectar errores con anticipación**
Estás refactorizando el código y accidentalmente escribes mal un nombre de variable.
Normalmente, tienes que ejecutar el código para descubrirlo.
Pero con LSP, el servidor de lenguaje realiza una verificación en tiempo real y, si encuentra un problema, lo informa inmediatamente a Claude Code.
Claude te dice que hay un error aquí antes de que ejecutes el código.
## **¿Cómo configurarlo? 5 pasos para hacerlo**
No te preocupes, la configuración es sencilla.
### **Paso 1: Habilitar las herramientas LSP**
En tu archivo de configuración de shell (.bashrc o .zshrc) agrega una línea:
`exportENABLE_LSP_TOOLS=1` luego ejecuta `source ~/.zshrc` para que surta efecto.
### **Paso 2: Instalar el complemento del servidor de lenguaje**
Abre Claude Code, ingresa:
`/plugin` encuentra el complemento correspondiente al idioma que usas:
- Python: elige pyright-lsp
- TypeScript/JavaScript: elige vtsls o typescript-lsp
- Go: elige gopls
- Rust: elige rust-analyzer
Selecciona "Install for me only", instala.
### **Paso 3: Instalar el archivo binario del servidor de lenguaje**
El complemento es solo una interfaz, el trabajo real lo realiza el servidor de lenguaje en sí.
**Python:**
`pip install pyright`
**TypeScript/JavaScript:**
`npm install -g @vtsls/language-server typescript`
**Go:**
`go install golang.org/x/tools/gopls@latest`
**Rust:**
`rustup component add rust-analyzer`
### **Paso 4: Reiniciar Claude Code**Después de la instalación, reinicia Claude Code.
`claude`
### **Paso 5: Verificar si funciona**
Ingresa `/plugin` y revisa la pestaña "Installed" para confirmar que tu plugin esté presente.
Realiza una prueba:
`Usar LSP para encontrar todas las referencias de someFunction` Si Claude Code utiliza la herramienta `find_references` en lugar de grep, significa que la configuración fue exitosa.
## **¿Cuándo usar LSP? ¿Cuándo no?**
LSP no es una solución universal.
**Escenarios adecuados para LSP:**
- Proyectos grandes (cientos de archivos)
- Rastrear llamadas a funciones a través de múltiples archivos
- Necesidad de firmas de funciones precisas (especialmente en lenguajes dinámicos)
- Refactorización de código, para evitar introducir errores
**Escenarios no adecuados para LSP:**
- Proyectos pequeños, scripts rápidos
- Búsquedas de texto simples
- Simplemente encontrar una cadena de texto en un archivo
En resumen, usa grep cuando sea rápido y LSP cuando sea preciso.
Las herramientas están para servir a las personas, no para usarlas por el simple hecho de usarlas.
## **Algunos problemas, te los cuento de antemano**
### **Problema 1: El servidor de lenguaje debe estar en el PATH**
Si Claude Code dice "No LSP server available", lo más probable es que tu servidor de lenguaje no esté instalado correctamente o no esté en el PATH.
Ejecuta `which pyright` (o tu servidor de lenguaje) en la terminal para verificar si se puede encontrar.
### **Problema 2: Reiniciar después de instalar el plugin**
Después de instalar un nuevo plugin o actualizar el servidor de lenguaje, es imprescindible reiniciar Claude Code.
Los servidores de lenguaje se cargan al inicio.
### **Problema 3: A veces es necesario especificar "usar LSP"**
Si notas que Claude Code sigue usando grep en lugar de LSP, agrega la frase "usar LSP":
`Usar LSP para encontrar todas las referencias de authenticateUser` De esta manera, sabrá que debe usar el servidor de lenguaje.
### **Problema 4: No hay indicaciones visuales**
A diferencia de VS Code, Claude Code no te indica si el servidor LSP está en funcionamiento.
No hay iconos en la barra de estado, ni notificaciones.
La única forma de confirmarlo es mediante pruebas reales.
## **Unas últimas palabras**
El soporte de LSP en Claude Code no es una pequeña actualización, sino un cambio radical.
Antes era "búsqueda de texto + inferencia de IA".
Ahora es "servidor de lenguaje + comprensión de IA".
Es como pasar de buscar en una agenda telefónica a usar un motor de búsqueda.
La diferencia en eficiencia es abismal.
Si estás usando Claude Code para proyectos serios, dedica 5 minutos a configurar LSP.
Esos 5 minutos valen la pena.
**Lista de acciones:**
- Agregar `export ENABLE_LSP_TOOLS=1` a la configuración de tu shell
- Abrir Claude Code y ejecutar `/plugin` para instalar tu plugin de lenguaje
- Instalar los archivos binarios del servidor de lenguaje correspondiente
- Reiniciar Claude Code
- Probar con "Usar LSP para encontrar todas las referencias de XXX"
Después de la instalación, descubrirás que:
原来 Claude Code 还能这么快。