Claude Code con LSP: de buscar texto a entender codigo
5 min de lectura

Claude Code con LSP: de buscar texto a entender codigo

1048 palabras

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:

LenguajeComando
Pythonnpm i -g pyright
TypeScript/JSnpm i -g typescript-language-server typescript
Gogo install golang.org/x/tools/gopls@latest
Rustrustup component add rust-analyzer
Javabrew 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.

Referencias

Comentarios

Últimas Entradas

6 min

1238 palabras

Después de mi anterior artículo sobre programación agéntica, he estado investigando más sobre técnicas avanzadas para usar Claude Code de forma realmente productiva. Como programador con 30 años de experiencia, he visto muchas herramientas prometedoras que al final no cumplían sus promesas. Pero Claude Code, cuando se usa correctamente, está siendo un game-changer real.

Más allá de lo básico: La diferencia entre jugar y trabajar en serio

Una cosa es usar Claude Code para experimentos o proyectos personales, y otra muy distinta es integrarlo en un flujo de trabajo profesional. Para proyectos serios, necesitas un enfoque diferente:

5 min

955 palabras

A lo largo de mi carrera he visto cambiar muchas cosas. He pasado de Borland a Visual Studio, de vi a Sublime Text, de Sublime a VS Code… Y créeme, cada cambio fue una decisión meditada que me costó semanas de adaptación. Pero lo que está pasando ahora con las herramientas de IA es algo completamente diferente.

Me he encontrado usando Copilot por la mañana, probando Cursor por la tarde, y echando un vistazo a Claude Code antes de irme a dormir. Y no soy el único. Los desarrolladores hemos pasado de ser fieles como perros a nuestras herramientas a ser… bueno, promiscuos.

5 min

1020 palabras

I have been using Claude Code daily for months, and there is one configuration that has completely changed how it works with my code. It is not a new plugin, a more powerful model, or a magic prompt. It is something that has existed since 2016 and that most developers use without knowing it every time they open VS Code: the Language Server Protocol (LSP).

Karan Bansal published an excellent article explaining in detail how to enable LSP in Claude Code and why it matters. After trying it, I can confirm the difference is real and significant.

6 min

1079 palabras

Una reflexión necesaria sobre el “AI-Native Engineer”

He leído el artículo de Addyo sobre el “AI-Native Software Engineer” y, como Principal Backend Engineer que lleva años viendo promesas tecnológicas ir y venir, tengo opiniones bastante sinceras al respecto. No todas son cómodas de escuchar.

He visto suficientes “revoluciones” como para separar el grano de la paja. Y aquí hay mucho de ambos.

Lo que está funcionando (de verdad)

1. IA como copiloto, no como piloto

La metáfora del artículo sobre tratar la IA como un “programador junior disponible 24/7” es acertada. En mi experiencia trabajando con equipos, he visto developers usar GitHub Copilot y Claude de manera efectiva para:

9 min

1840 palabras

Si estás usando herramientas como Claude Code, GitHub Copilot Workspace o similares, habrás notado que hay una jerga técnica que va más allá de simplemente “chatear con la IA”. Hablo de términos como rules, commands, skills, MCP y hooks.

Estos conceptos son la arquitectura que hace que los agentes de IA sean realmente útiles para desarrollo de software. No son solo palabras bonitas de marketing — cada uno cumple una función específica en cómo el agente trabaja.

Vamos a desglosarlos uno por uno de forma clara.

5 min

857 palabras

Hace unos días me topé con un stream muy interesante donde alguien mostraba su setup para programación agéntica usando Claude Code. Después de años desarrollando “a la vieja usanza”, tengo que admitir que esto me ha resultado revelador.

¿Qué es la programación agéntica?

Para los que no estéis familiarizados con el término, la programación agéntica es básicamente dejar que un agente de IA (en este caso Claude) escriba código por ti. Pero no hablo de pedirle que te genere un snippet, sino de darle acceso completo a tu sistema para que pueda leer, escribir, ejecutar y debuggear código de forma autónoma.