Diagnóstico real,
não achismo.
Servidores de linguagem dão ao agente o mesmo feedback que o seu editor tem: erros de tipo, símbolos, referências. O MVCode embarca dezenas de LSPs e aceita os seus.
01Ligando
LSP nasce desligado. Habilite tudo com um booleano, ou use um objeto para manter os embutidos e configurar overrides:
{
"lsp": true
}Com LSP ativo, o servidor certo sobe quando um arquivo com a extensão correspondente é aberto — e os diagnósticos voltam para o loop do agente após cada edição.
02Quando vale a pena
Language servers podem dessincronizar, consumir memória e atrasar o loop. Em muitos projetos, é melhor o agente rodar lint e typecheck direto pela CLI — documente esses comandos no AGENTS.md. Ligue o LSP quando o feedback contínuo compensar.
03Embarcados
Uma amostra dos servidores prontos — cada um sobe quando detecta as extensões e os requisitos:
| Servidor | Extensões | Requisito |
|---|---|---|
| typescript | .ts .tsx .js .jsx … | dependência typescript no projeto |
| pyright | .py .pyi | pyright instalado |
| gopls | .go | go disponível |
| rust-analyzer | .rs | rust-analyzer disponível |
| eslint · oxlint | .ts .js .vue … | dependência no projeto |
| jdtls | .java | Java SDK 21+ |
| clangd | .c .cpp .h … | auto-instala em projetos C/C++ |
| …e mais 25+ | astro, bash, c#, dart, elixir, kotlin, lua, php, prisma, ruby, svelte, swift, terraform, vue, yaml, zig… | auto-instalação quando possível |
Downloads automáticos podem ser desligados com MVCODE_DISABLE_LSP_DOWNLOAD=true — obrigatório em ambientes restritos, onde o bundle offline já endurece isso.
04Configurando servidores
| Propriedade | Tipo | Faz o quê |
|---|---|---|
| disabled | boolean | Desliga um servidor específico. |
| command | string[] | Comando que inicia o servidor. |
| extensions | string[] | Extensões atendidas. |
| env | objeto | Variáveis de ambiente na inicialização. |
| initialization | objeto | Opções do request LSP initialize. |
{
"lsp": {
"typescript": { "disabled": true },
"rust": {
"command": ["rust-analyzer"],
"env": { "RUST_LOG": "debug" }
},
"meu-lsp": {
"command": ["meu-lsp-server", "--stdio"],
"extensions": [".custom"],
"initialization": { "preferences": { "importModuleSpecifierPreference": "relative" } }
}
}
}"lsp": false desliga tudo — inclusive sobrepondo uma config anterior que habilitou.
05A ferramenta lsp Experimental
Além dos diagnósticos passivos, a flag MVCODE_EXPERIMENTAL_LSP_TOOL expõe o LSP como ferramenta ativa: goToDefinition, findReferences, hover, símbolos e call hierarchy sob demanda do agente.
Para os recursos pagos do PHP Intelephense, coloque apenas a chave de licença em ~/intelephense/license.txt (%USERPROFILE% no Windows).
