En bref : OpenCode LSP relie l’agent de programmation à des serveurs de langage qui comprennent le projet. La session peut alors exploiter les diagnostics, définitions, références et symboles. LSP n’est pas MCP et ne remplace ni le formateur ni les tests. Commencez par le schéma officiel, associez les extensions au bon serveur et testez avec une tâche sans risque.
La recherche qu'est-ce que LSP dans OpenCode cache généralement plusieurs besoins : comprendre le gain dans un flux agentique, expliquer l’absence de diagnostics, trouver la configuration et corriger un serveur désactivé. Ce manuel réunit ces décisions et laisse l’installation, les providers et MCP à leurs pages dédiées.
La page officielle OpenCode LSP vérifiée le 10 août 2026 s’intitule LSP Servers et indique qu’OpenCode s’intègre aux serveurs LSP. Elle documente l’objet lsp, les champs de commande et d’extensions, l’initialisation, la désactivation globale, la désactivation d’un serveur et les serveurs personnalisés. Les commandes exactes doivent rester alignées sur la documentation du serveur concerné.

Qu’est-ce que LSP dans OpenCode ? Une couche de contexte langage
LSP signifie Language Server Protocol. Un serveur de langage fonctionne à côté du projet et fournit diagnostics, symboles, définitions, références et informations de survol. OpenCode peut utiliser ces données pendant une session au lieu de considérer chaque fichier comme du texte isolé.
L’intérêt concret est le contexte. Si le serveur TypeScript comprend une importation, l’agent dispose de meilleures preuves pour expliquer une erreur de type ou un renommage. Cela ne garantit pas une réponse juste : le serveur peut manquer, le projet peut mal se charger ou le paquet peut demander sa propre configuration. LSP enrichit le contexte, mais ne remplace ni les tests ni la revue du diff.
Le bon modèle mental
Voyez OpenCode comme le consommateur, le serveur LSP comme le spécialiste du langage et le dépôt comme la source de vérité. Inspectez la couche défaillante avant d’élargir les permissions ou de changer de modèle.
| Couche | Apporte | Ne remplace pas |
|---|---|---|
| LSP | Diagnostics, symboles, définitions et références | Tests, formateur ou revue |
| MCP | Outils et données externes | Le serveur de langage |
| Formateur | Style et mise en forme | Diagnostics sémantiques |
| Provider/modèle | Raisonnement et génération | La toolchain du projet |
Comment OpenCode choisit le serveur LSP
Une entrée LSP demande une commande exécutable et un lien clair avec les extensions. La commande démarre le serveur et la liste d’extensions indique les fichiers concernés. L’exécutable, les arguments et l’installation dépendent de la documentation du serveur ; ne devinez pas un paquet.
Commencez avec un langage dans un petit dépôt. Ouvrez un fichier correspondant, vérifiez que le processus démarre, puis demandez une lecture seule. Une extension mal associée peut faire paraître un serveur valide défaillant, car OpenCode ne l’attache pas au fichier.

| Point | Preuve | Premier contrôle |
|---|---|---|
| Commande | L’exécutable démarre avec ses arguments | PATH, runtime, paquet et stderr |
| Extension | Le fichier correspond à l’entrée | Les extensions documentées |
| Workspace | Le bon projet est ouvert | Racine Git et configuration |
| Résultat | Diagnostics ou symboles reçus | Logs et configuration |
Ajoutez une configuration lsp minimale
Placez les décisions communes dans une configuration de projet relue. Gardez les essais personnels dans la configuration globale jusqu’à ce que la commande, les extensions et la racine soient claires. La documentation JSONC traite la portée et le Schema ; cette page reste centrée sur le serveur de langage.
Une petite entrée est plus facile à diagnostiquer qu’un grand catalogue. Utilisez un nom descriptif, un tableau de commandes explicite et les seules extensions supportées. Ajoutez les options d’initialisation après le démarrage de base. Un JSON valide ne prouve pas que l’exécutable ou le workspace est correct.
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"command": ["typescript-language-server", "--stdio"],
"extensions": [".ts", ".tsx"]
}
}
}Exemple de forme compatible avec le Schema ; vérifiez l’exécutable et les extensions dans la source officielle.
Activer, désactiver ou personnaliser un serveur LSP
La documentation officielle actuelle indique que l’absence de lsp désactive tous les serveurs. Pour tout couper après une autre configuration, utilisez lsp: false; pour un serveur précis, disabled: true. C’est utile si le serveur est lent, bruyant ou incompatible avec un dépôt.
Les serveurs personnalisés couvrent les langages ou extensions absents de la configuration courante. Définissez d’abord commande et extensions, ajoutez l’initialisation selon la documentation, puis modifiez une seule chose à la fois. Conservez la dernière configuration fonctionnelle pour revenir en arrière.
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"],
"initialization": { "preferences": { "mode": "strict" } }
}
}
}La commande personnalisée est un exemple. Remplacez-la par la valeur officielle et ne commitez jamais de secret.
Vérifier OpenCode LSP avec un test sans risque
Ne commencez pas par réécrire un module entier. Utilisez un dépôt propre, ouvrez un fichier connu et demandez une lecture seule : symbole, définition ou diagnostic. Comparez le résultat avec l’éditeur, le compilateur ou le serveur déjà fiable.
Après cette vérification, faites une petite modification réversible et inspectez le diff. Notez le système, la commande, les extensions, la racine et le prompt. Cette note rend l’installation reproductible et facilite le prochain diagnostic.
- NettoyerPartir d’une branche et d’un arbre de travail connus.
- AssocierOuvrir une extension déclarée par le serveur.
- LireDemander symbole, définition, référence ou diagnostic.
- ModifierFaire un petit changement réversible et voir le diff.
- NoterConserver commande, modèle, serveur et rollback.
Dépanner opencode lsps are disabled et les diagnostics absents
Si OpenCode dit que les LSP sont désactivés, vérifiez la priorité des configurations avant de réinstaller. Un autre fichier peut imposer lsp: false, le projet peut oublier le serveur ou une entrée peut contenir disabled. Comparez le dossier réel du projet à l’emplacement du fichier gagnant.
Si le serveur est actif mais ne donne aucun diagnostic, vérifiez ensuite commande et extension. Lancez-le dans le même shell si possible, contrôlez runtime et PATH, et voyez si le projet exige lockfile, configuration de compilateur ou racine de workspace. Un premier résultat lent peut simplement correspondre à l’indexation.
Gardez les permissions étroites. LSP demande un processus et un contexte de projet, pas un shell illimité, davantage de MCP ou l’auto-approbation. Utilisez les pages sur les permissions et MCP si le problème change de couche.

| Symptôme | Couche probable | Premier correctif |
|---|---|---|
| Tous les LSP désactivés | Priorité ou lsp: false | Trouver la configuration gagnante |
| Un serveur désactivé | Drapeau du serveur | Vérifier nom et disabled |
| Aucun diagnostic | Extension ou processus | Associer l’extension et lancer la commande |
| Premier résultat lent | Index ou workspace | Tester un petit dépôt et voir les logs |
| Fonctionne dans l’éditeur | Racine ou config différente | Comparer racine éditeur, Git et OpenCode |
LSP, MCP, formateurs et VS Code sont des couches différentes
LSP apporte l’intelligence de langage au dépôt. MCP connecte outils et données externes. Le formateur modifie le style et les tests apportent une preuve exécutable. VS Code peut afficher ses propres diagnostics ; cela ne prouve pas qu’OpenCode utilise le même serveur ou la même racine.
Utilisez la page adaptée : MCP traite les serveurs locaux et distants, VS Code le contexte de l’éditeur et du terminal, et permissions les validations. Cette séparation garde la page LSP dans OpenCode ciblée.
configuration opencode.jsonc:Définir portée et Schema.
OpenCode dans VS Code:Comparer contexte et chemin terminal.
permissions OpenCode:Garder les droits étroits.
OpenCode MCP:Séparer outils externes et LSP.
Questions fréquentes OpenCode LSP
Qu’est-ce que LSP dans OpenCode ?
C’est la couche Language Server Protocol qui fournit diagnostics, symboles, définitions et références depuis un serveur de langage.
Comment activer LSP dans OpenCode ?
Ajoutez une entrée lsp avec la commande et les extensions compatibles, puis vérifiez commande et racine avec une demande en lecture seule.
Pourquoi les LSP OpenCode sont-ils désactivés ?
La documentation actuelle indique que l’absence de lsp les désactive tous. Il peut aussi y avoir lsp: false ou disabled: true. Vérifiez la priorité.
LSP remplace-t-il MCP ?
Non. LSP fournit l’intelligence de langage et MCP relie outils et données externes. Les frontières de configuration et de permission diffèrent.
Puis-je ajouter un serveur LSP personnalisé ?
Oui. Définissez commande et extensions sous lsp, ajoutez l’initialisation documentée et testez dans un petit dépôt.
Pourquoi LSP fonctionne dans VS Code mais pas dans OpenCode ?
Racine, commande, extensions, runtime ou fichier de configuration peuvent différer. Comparez ces entrées.
Sources officielles consultées
Références OpenCode LSP
La page officielle LSP a été vérifiée le 10 août 2026 ; commandes, extensions et champs peuvent évoluer.