Llevo meses usando Claude Code a diario y hay una configuración que ha cambiado por completo cómo trabaja con mi código. No es un plugin nuevo, ni un modelo más potente, ni un prompt mágico. Es algo que existe desde 2016 y que la mayoría de desarrolladores usamos sin saberlo cada vez que abrimos VS Code: el Language Server Protocol (LSP).
Karan Bansal publicó un artículo excelente explicando en detalle cómo activar LSP en Claude Code y por qué importa. Después de probarlo, puedo confirmar que la diferencia es real y significativa.
El problema: Claude Code trata tu código como texto plano
Por defecto, cuando Claude Code necesita encontrar una función, una clase o entender cómo se conectan los componentes de tu proyecto, usa grep, glob y read. Son herramientas de búsqueda de texto. Funcionan, pero tienen un problema fundamental: tratan el código como si fuera un archivo de texto cualquiera.
Si le pides que encuentre dónde se define User, va a encontrar la clase User, pero también el comentario que dice “// Create a new User”, la cadena de texto "User not found", el import, el type alias, y docenas de coincidencias más en ficheros que no tienen nada que ver. Filtrar eso lleva tiempo. Según las mediciones de Karan, entre 30 y 60 segundos por consulta.
Con LSP, la misma consulta tarda unos 50 milisegundos. Y es 100% precisa. No hay falsos positivos. No hay que filtrar. El language server sabe exactamente dónde está la definición porque entiende la estructura del código, no solo el texto.
Qué es LSP y por qué debería importarte
Antes de 2016, cada editor de código necesitaba su propia implementación de soporte para cada lenguaje. Si querías autocompletado de Python en Sublime Text, alguien tenía que escribir un plugin de Python para Sublime Text. Si querías lo mismo en Atom, otro plugin. Era un problema M por N: M editores por N lenguajes.
Microsoft creó LSP para resolver esto. Es un protocolo que separa la inteligencia del lenguaje de la interfaz del editor. Un servidor de lenguaje (como Pyright para Python o gopls para Go) entiende el código. Cualquier editor que hable LSP puede usarlo. El problema M por N se convierte en M + N.
Lo que hace interesante esto para Claude Code es que las mismas capacidades que dan potencia a tu IDE, la navegación a definiciones, la búsqueda de referencias, la detección de errores de tipo, se pueden poner al servicio de un agente de IA.
Lo que cambia en la práctica
Con LSP activado, Claude Code gana dos tipos de capacidades:
Capacidades pasivas (automáticas)
El language server envía diagnósticos en tiempo real. Si Claude Code edita un fichero y rompe un tipo, lo detecta inmediatamente sin necesidad de compilar ni ejecutar tests. Importaciones que faltan, variables indefinidas, errores de tipo: todo se detecta antes de que tú lo veas.
En mi experiencia, esto es lo que más impacto tiene. Cuando Claude Code escribe código con errores de tipo, normalmente necesita otro ciclo de edición para corregirlos. Con LSP, los corrige en el mismo turno porque recibe el feedback al instante.
Capacidades activas (bajo demanda)
Cuando preguntas algo sobre tu código, Claude Code puede usar operaciones semánticas en lugar de búsquedas de texto:
- goToDefinition: Ir directamente a donde se define una función o clase
- findReferences: Encontrar todos los lugares donde se usa un símbolo
- hover: Ver la firma de tipo y documentación
- workspaceSymbol: Buscar símbolos en todo el proyecto
- goToImplementation: Encontrar implementaciones concretas de interfaces
- incomingCalls/outgoingCalls: Trazar las cadenas de llamadas
Lo importante es que no necesitas usar comandos especiales. Preguntas en lenguaje natural y Claude Code elige la operación LSP adecuada. Si dices “dónde se define authenticate”, usa goToDefinition. Si dices “quién usa UserService”, usa findReferences.
Cómo activarlo
La configuración es sencilla. Karan lo describe como “dos minutos”, y tiene razón.
1. Activar el flag
Añade a ~/.claude/settings.json:
{
"env": {
"ENABLE_LSP_TOOL": "1"
}
}
Este flag no está documentado oficialmente todavía. Fue descubierto a través del Issue #15619 en GitHub.
2. Instalar los language servers
Necesitas instalar el server correspondiente a tus lenguajes:
| Lenguaje | Comando |
|---|---|
| Python | npm i -g pyright |
| TypeScript/JS | npm i -g typescript-language-server typescript |
| Go | go install golang.org/x/tools/gopls@latest |
| Rust | rustup component add rust-analyzer |
| Java | brew install jdtls |
| C/C++ | brew install llvm |
3. Instalar y habilitar los plugins
claude plugin marketplace update claude-plugins-official
claude plugin install pyright-lsp
claude plugin enable pyright-lsp
4. Reiniciar Claude Code
Al arrancar, verás en los logs de debug que los language servers se inicializan. Python, Go y TypeScript arrancan en menos de un segundo. Java tarda unos 8 segundos por el JVM.
Mi experiencia real
Trabajo principalmente con TypeScript y Go. Después de activar LSP, el cambio más notable es en refactorizaciones. Cuando le pido a Claude Code que renombre una función o mueva un módulo, ahora encuentra todos los call sites de forma fiable. Antes, con grep, siempre quedaba alguna referencia suelta que aparecía después como un error en CI.
El otro cambio significativo es en la exploración de código que no conozco. Cuando trabajo en un repositorio nuevo, Claude Code con LSP puede trazar las cadenas de llamadas y entender la arquitectura mucho más rápido que haciendo grep recursivos. En lugar de “busca User en todos los ficheros .ts”, hace findReferences y obtiene exactamente los ficheros relevantes, con contexto de tipo incluido.
Un consejo práctico
Karan sugiere añadir instrucciones en tu CLAUDE.md para que Claude Code priorice LSP sobre grep. Es un buen consejo. Algo como:
Usar operaciones LSP (goToDefinition, findReferences) para navegación de código.
Solo usar grep para búsquedas de patrones de texto o strings.
Esto asegura que Claude Code use el camino rápido por defecto en lugar de caer en búsquedas de texto por inercia.
Una mejora de 900x que se nota
La diferencia entre 30-60 segundos y 50 milisegundos no es una mejora incremental. Es un cambio de categoría. Es la diferencia entre que Claude Code funcione como un asistente que busca en ficheros y que funcione como un desarrollador que entiende tu código.
Son dos minutos de configuración. Y una vez que lo pruebas, no vuelves atrás.












Comentarios