Quando scrivi codice, ti sei mai posto una domanda:
Perché in VS Code, premendo Ctrl + clic, puoi saltare direttamente alla definizione della funzione? Perché quando passi il mouse su una funzione, puoi vedere la descrizione completa dei parametri? Perché il tuo codice non è ancora in esecuzione e l'editor può dirti dove è sbagliato?
Queste funzionalità le usi ogni giorno, godendoti al massimo.
Ma forse non sai che dietro tutto questo c'è una cosa chiamata **LSP** (Language Server Protocol) a supportarlo.
Ancora più importante, Claude Code dalla versione 2.0.74 supporta anche LSP.
Cosa significa questo?
**Significa che Claude Code è finalmente passato da "macchina di ricerca testuale" a un'AI che comprende veramente il codice.**
## **Cos'è LSP? In parole povere**
LSP è un protocollo creato da Microsoft, lo scopo è molto semplice:
Consentire l'utilizzo di funzionalità intelligenti del codice in qualsiasi editor.
Guarda:
- Il server di linguaggio di TypeScript, può essere utilizzato in VS Code, in JetBrains, in Cursor
- Ora, **può essere utilizzato anche in Claude Code**
LSP è ciò che rende intelligente il tuo editor:
- Completamento automatico dei nomi delle funzioni e dei parametri
- Salto alla definizione
- Ricerca di tutti i riferimenti
- Visualizzazione della documentazione al passaggio del mouse
- Segnalazione di errori e avvisi in tempo reale
Ogni giorno scrivi codice e usi queste funzionalità innumerevoli volte.
Ma non ti sei mai chiesto come vengono implementate.
Ora non devi più pensarci, devi solo sapere che: **Claude Code ora ha anche queste capacità.**
## **Come lavorava Claude Code prima?**
Prima di supportare LSP, cosa doveva fare Claude Code per trovare dove è definita una funzione?
**Affidarsi alla ricerca grep.**
In parole povere, si tratta di una ricerca full-text, per trovare dove compaiono i caratteri "displayBooks".
È utile? Sì, è utile.
Il modello AI ha addestrato una quantità enorme di codice e può effettivamente dedurre molte cose dal testo.
Ma qual è il problema?
**Non comprende veramente la struttura del codice.**
È come chiedere a qualcuno di trovare "张三" (Zhang San), può solo sfogliare la rubrica una pagina alla volta per trovare i due caratteri "张三".
E tu usi il telefono per cercare "张三", accedi direttamente al database e ottieni i risultati in un secondo.
Questa è la differenza.
Prima Claude Code: leggeva i file uno per uno, affidandosi alla corrispondenza del testo. Ora Claude Code: chiede direttamente al server di linguaggio, localizzazione precisa.
L'efficienza è tutt'altro che la stessa.
## **Cosa ha portato LSP a Claude Code?**
5 capacità fondamentali, ognuna delle quali è un potente strumento di efficienza:
### **1. goToDefinition - Salta alla definizione**
Cosa puoi fare con Ctrl+Click in VS Code? Salta direttamente al punto in cui è definita la funzione.
Ora anche Claude Code può farlo.
Gli chiedi: "Dove è definita la funzione processRequest? Usa LSP"
Non cercherà stupidamente in tutti i file.
Chiede direttamente al server di linguaggio e ottiene la risposta in un secondo: nome del file, numero di riga, posizione precisa.
### **2. findReferences - Trova tutti i riferimenti**
Questa è una funzionalità killer.
Vuoi rifattorizzare una funzione, ma non osi modificarla, per paura che si blocchi in altri punti.
Cosa fare?
Prima dovevi far leggere a Claude Code un file alla volta, lentissimo.
Ora chiedi direttamente: "Dove è stata chiamata la funzione displayError? Usa LSP"
Il server di linguaggio elenca direttamente tutte le posizioni dei riferimenti.
Veloce, preciso e spietato.
### **3. hover - Ottieni informazioni sulla documentazione e sul tipo**
Quando passi il mouse in VS Code, puoi vedere la firma della funzione, il tipo di parametro, la descrizione della documentazione.
Anche Claude Code ora può vederlo.
Gli chiedi: "Quali parametri accetta la funzione displayBooks? Usa LSP"
Non deve indovinare, legge direttamente la firma restituita dal server di linguaggio.
Soprattutto per linguaggi dinamici come Python, prima Claude poteva solo dedurre il tipo dal contesto.Ora con LSP, le informazioni sui tipi sono chiare a colpo d'occhio.
### **4. documentSymbol - Elenca tutti i simboli del file**
Vuoi capire rapidamente quali classi, funzioni e variabili ci sono in un file?
Chiedi a Claude: "Quali simboli ci sono in backend/index.js? Usa LSP"
Ti restituisce un elenco strutturato, chiaro e preciso.
### **5. workspaceSymbol - Ricerca di simboli nell'intero progetto**
Questo è ancora più potente.
Non cerca nel testo, ma nei simboli.
Vuoi trovare tutti i metodi che contengono "innerHTML"?
Il server di linguaggio te li trova direttamente, non è una corrispondenza di stringhe, ma un vero simbolo di codice.
## **Esempio pratico: Quali problemi può risolvere LSP?**
Lasciamo perdere le chiacchiere teoriche, vediamo un caso pratico.
### **Caso 1: Tracciare le chiamate di funzione**
C'è un progetto chiamato AseBook Finder, il frontend ha una funzione displayBooks.
Vuoi sapere dove viene chiamata questa funzione.
Cosa facevi prima? Claude Code grep dappertutto, possibile che manchi qualcosa, possibile che ci siano falsi positivi.
Ora chiedi direttamente: "Trova tutti i riferimenti a displayBooks usando LSP"
Risultato:
- Posizione della definizione della funzione
- Posizione della chiamata dopo il fetch di successo
- Tutti gli altri riferimenti
Preciso, veloce, senza omissioni.
### **Caso 2: Comprendere i parametri di una funzione**
Vuoi che Claude generi un pezzo di codice, chiamando la funzione displayError.
Ma non sei sicuro di quali parametri accetta questa funzione.
Chiedigli: "Quali parametri accetta displayError? Usa LSP"
Il server di linguaggio restituisce direttamente: accetta un parametro message.
Claude lo sa, il codice generato non avrà errori.
### **Caso 3: Trovare chiamate API**
Vuoi trovare in quale punto del progetto viene chiamata l'API /api/recommendations.
Chiedi a Claude: "Trova tutti i riferimenti a /api/recommendations usando LSP"
Trova la posizione della chiamata fetch, precisa alla riga.
Utile per il debug di problemi API, il tracciamento del flusso di dati.
### **Caso 4: Scoprire gli errori in anticipo**
Stai rifattorizzando il codice, per sbaglio hai scritto male il nome di una variabile.
Normalmente, devi eseguire il codice per scoprirlo.
Ma con LSP, il server di linguaggio controlla in tempo reale e segnala immediatamente il problema a Claude Code.
Claude ti dice che c'è un errore prima ancora di eseguire il codice.
## **Come configurare? 5 passaggi**
Non preoccuparti, la configurazione è semplice.
### **Passaggio 1: Abilita gli strumenti LSP**
Nel file di configurazione della tua shell (.bashrc o .zshrc) aggiungi una riga:
`exportENABLE_LSP_TOOLS=1` quindi esegui `source ~/.zshrc` per rendere effettive le modifiche.
### **Passaggio 2: Installa il plugin del server di linguaggio**
Apri Claude Code, inserisci:
`/plugin` trova il plugin corrispondente al linguaggio che usi:
- Python: scegli pyright-lsp
- TypeScript/JavaScript: scegli vtsls o typescript-lsp
- Go: scegli gopls
- Rust: scegli rust-analyzer
Scegli "Install for me only", installa.
### **Passaggio 3: Installa il file binario del server di linguaggio**
Il plugin è solo un'interfaccia, il vero lavoro è svolto dal server di linguaggio stesso.
**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`
### **Passaggio 4: Riavvia Claude Code**`claude`
### **Passo 5: Verifica del funzionamento**
Digita `/plugin` e controlla la scheda "Installed" per assicurarti che il tuo plugin sia presente.
Esegui un test:
`Trova tutti i riferimenti a someFunction usando LSP` Se Claude Code utilizza lo strumento find_references invece di grep, significa che ha funzionato.
## **Quando usare LSP? Quando non usarlo?**
LSP non è una panacea.
**Scenari adatti all'uso di LSP:**
- Progetti di grandi dimensioni (centinaia di file)
- Tracciamento di chiamate di funzioni tra file
- Richiesta di firme di funzioni precise (soprattutto linguaggi dinamici)
- Refactoring del codice, per evitare bug
**Scenari non adatti all'uso di LSP:**
- Progetti piccoli, script rapidi
- Ricerche di testo semplici
- Solo trovare una stringa in un punto specifico
In poche parole, usa grep quando è veloce e LSP quando è preciso.
Gli strumenti sono al servizio delle persone, non usati per il gusto di usarli.
## **Alcune insidie, per avvisarti in anticipo**
### **Insidia 1: Il server di linguaggio deve essere in PATH**
Se Claude Code dice "No LSP server available", molto probabilmente il tuo server di linguaggio non è installato correttamente o non è in PATH.
Esegui `which pyright` (o il tuo server di linguaggio) nel terminale per vedere se riesci a trovarlo.
### **Insidia 2: Dopo l'installazione è necessario riavviare**
Dopo aver installato un nuovo plugin o aggiornato il server di linguaggio, è necessario riavviare Claude Code.
I server di linguaggio vengono caricati all'avvio.
### **Insidia 3: A volte è necessario dire esplicitamente "usa LSP"**
Se scopri che Claude Code sta ancora usando grep invece di LSP, aggiungi la frase "usa LSP":
`Trova tutti i riferimenti a authenticateUser usando LSP` In questo modo saprà di dover usare il server di linguaggio.
### **Insidia 4: Nessuna indicazione visiva**
A differenza di VS Code, Claude Code non ti dirà se il server LSP è in esecuzione.
Nessuna icona nella barra di stato, nessuna notifica.
L'unico modo per confermare: testare effettivamente.
## **Ultime parole**
Il supporto di Claude Code per LSP non è un piccolo aggiornamento, è un cambiamento radicale.
Prima era "ricerca di testo + inferenza AI".
Ora è "server di linguaggio + comprensione AI".
È come passare dal cercare in una rubrica all'usare un motore di ricerca.
La differenza di efficienza è abissale.
Se stai usando Claude Code per un progetto serio, dedica 5 minuti a configurare LSP.
Questi 5 minuti valgono la pena.
**Lista di azioni:**
- Aggiungi `export ENABLE_LSP_TOOLS=1` alla configurazione della shell
- Apri Claude Code, esegui `/plugin` per installare il tuo plugin di linguaggio
- Installa i file binari del server di linguaggio corrispondente
- Riavvia Claude Code
- Prova "Trova tutti i riferimenti a XXX usando LSP"
Dopo l'installazione, scoprirai che:
Ecco quanto velocemente può essere Claude Code.