Em resumo: o OpenCode LSP conecta o agente de programação a servidores de linguagem que entendem o projeto. A sessão pode usar diagnósticos, definições, referências e símbolos. LSP não é MCP e não substitui formatadores ou testes. Comece pelo esquema oficial, associe extensões ao servidor certo e valide com uma tarefa pequena.
A busca o que é LSP no OpenCode normalmente inclui outras dúvidas: o que muda no fluxo do agente, por que não há diagnósticos, onde fica a configuração e como corrigir um servidor desativado. Este guia reúne essas decisões e mantém instalação, providers e MCP em páginas próprias.
A página oficial de LSP do OpenCode consultada em 10 de agosto de 2026 se chama LSP Servers e explica a integração com servidores LSP. Ela documenta o objeto lsp, comando e extensões, inicialização, desativação global, desativação individual e servidores personalizados. Os comandos reais devem ser confirmados na documentação de cada servidor.

O que é LSP no OpenCode? Uma camada de contexto da linguagem
LSP significa Language Server Protocol. Um servidor de linguagem roda ao lado do projeto e oferece diagnósticos, símbolos, definições, referências e informações de hover. O OpenCode pode usar esses dados na sessão em vez de tratar cada arquivo como texto isolado.
O benefício prático é o contexto. Se o servidor TypeScript entende uma importação, o agente tem mais evidências ao explicar um erro de tipos ou um renome. Mesmo assim, LSP não garante respostas corretas: o servidor pode faltar, o projeto pode não carregar ou o pacote pode exigir configuração própria. LSP melhora o contexto, mas não substitui testes nem revisão do diff.
Um modelo mental útil
Pense no OpenCode como consumidor, no servidor LSP como especialista da linguagem e no repositório como fonte de verdade. Verifique a camada que falhou antes de ampliar permissões ou trocar de modelo.
| Camada | Entrega | Não substitui |
|---|---|---|
| LSP | Diagnósticos, símbolos, definições e referências | Testes, formatador ou revisão |
| MCP | Ferramentas e dados externos | O servidor de linguagem |
| Formatador | Estilo e formatação | Diagnósticos semânticos |
| Provider/modelo | Raciocínio e geração | A toolchain do projeto |
Como o OpenCode encontra o servidor LSP certo
Uma entrada LSP precisa de um comando executável e de uma relação clara com as extensões. O comando inicia o servidor e a lista de extensões indica quais arquivos devem usá-lo. Executável, argumentos e instalação dependem da documentação do servidor; não adivinhe um pacote.
Comece com uma linguagem em um repositório pequeno. Abra um arquivo com a extensão esperada, confirme que o processo inicia e faça uma consulta somente de leitura. Se a extensão não corresponder, um servidor válido pode parecer quebrado porque o OpenCode não o associa ao arquivo.

| Ponto | Evidência | Primeira verificação |
|---|---|---|
| Comando | O executável inicia com os argumentos | PATH, runtime, pacote e stderr |
| Extensão | O arquivo corresponde à entrada | Extensões documentadas |
| Workspace | O projeto correto é aberto | Raiz Git e configuração |
| Resultado | Chegam diagnósticos ou símbolos | Logs e configuração |
Adicione uma configuração lsp mínima
Coloque decisões compartilhadas em uma configuração de projeto revisada. Deixe experimentos pessoais na configuração global até entender comando, extensões e raiz do projeto. O guia JSONC explica escopo e Schema; esta página fica concentrada no servidor de linguagem.
Uma entrada pequena é mais fácil de depurar que um catálogo grande. Use um nome claro, um array de comandos explícito e apenas as extensões suportadas. Acrescente inicialização depois de o processo básico funcionar. JSON válido não garante executável ou workspace corretos.
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"command": ["typescript-language-server", "--stdio"],
"extensions": [".ts", ".tsx"]
}
}
}É um exemplo com formato compatível com o Schema; confirme executável e extensões na fonte oficial do servidor.
Ative, desative ou personalize um servidor LSP
A documentação oficial atual informa que omitir lsp desativa todos os servidores. Para desativar todos depois de outra configuração, use lsp: false; para um servidor, disabled: true. Isso ajuda quando o servidor é lento, barulhento ou incompatível com o repositório.
Servidores personalizados cobrem linguagens ou extensões que não estão na configuração comum. Defina comando e extensões primeiro, acrescente inicialização conforme a documentação e altere uma coisa por vez. Guarde a última configuração que funcionou para fazer rollback.
{
"$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" } }
}
}
}O comando personalizado é um placeholder. Troque pelo valor oficial e não grave segredos no Git.
Verifique o OpenCode LSP com um teste de baixo risco
Não comece reescrevendo um módulo grande. Use um repositório limpo, abra um arquivo conhecido e faça uma solicitação somente de leitura: símbolo, definição ou diagnóstico. Compare o resultado com editor, compilador ou servidor confiável.
Depois, faça uma alteração pequena e reversível e veja o diff. Registre sistema, comando, extensões, raiz e prompt. Essa anotação transforma um teste pessoal em um procedimento reproduzível.
- LimparComece com branch e árvore de trabalho conhecidos.
- AssociarAbra um arquivo com a extensão configurada.
- LerPeça símbolo, definição, referência ou diagnóstico.
- EditarFaça uma alteração pequena e reversível e veja o diff.
- RegistrarGuarde comando, modelo, servidor e rollback.
Resolva opencode lsps are disabled e diagnósticos ausentes
Se o OpenCode disser que os LSP estão desativados, confira a precedência antes de reinstalar. Outro arquivo pode impor lsp: false, o projeto pode não declarar o servidor ou uma entrada pode conter disabled. Compare a pasta do projeto com o arquivo de configuração vencedor.
Se o servidor está ativo, mas não há diagnóstico, verifique comando e extensão. Execute-o no mesmo shell, confirme runtime e PATH e veja se o projeto exige lockfile, configuração do compilador ou raiz do workspace. Um primeiro resultado lento pode ser apenas indexação.
Mantenha as permissões estreitas. LSP precisa de processo e contexto do projeto, não de shell amplo, mais ferramentas MCP ou aprovação automática. Use as páginas de permissões e MCP quando o problema mudar de camada.

| Sintoma | Camada provável | Primeiro reparo |
|---|---|---|
| Todos desativados | Precedência ou lsp: false | Encontre a configuração vencedora |
| Um servidor desativado | Flag do servidor | Confira nome e disabled |
| Sem diagnósticos | Extensão ou processo | Associe a extensão e execute o comando |
| Primeiro resultado lento | Índice ou workspace | Teste um repositório menor e veja logs |
| Funciona no editor | Raiz ou configuração diferente | Compare raízes do editor, Git e OpenCode |
LSP, MCP, formatadores e VS Code são camadas diferentes
LSP fornece inteligência de linguagem no repositório. MCP conecta ferramentas e dados externos. O formatador altera estilo e os testes fornecem evidência executável. O VS Code pode mostrar seus próprios diagnósticos; isso não prova que o OpenCode usa o mesmo servidor ou raiz.
Use a página correta para cada sintoma: MCP trata servidores locais e remotos, VS Code trata contexto do editor e terminal, e permissões trata aprovações. Assim a página LSP no OpenCode permanece focada.
configuração opencode.jsonc:Defina escopo e Schema.
OpenCode no VS Code:Compare contexto e caminho do terminal.
permissões do OpenCode:Mantenha direitos estreitos.
OpenCode MCP:Separe ferramentas externas de LSP.
Perguntas frequentes do OpenCode LSP
O que é LSP no OpenCode?
É a camada Language Server Protocol que fornece diagnósticos, símbolos, definições e referências de um servidor de linguagem.
Como ativo o LSP no OpenCode?
Adicione lsp com comando e extensões compatíveis e valide comando e raiz com uma solicitação somente de leitura.
Por que os LSPs do OpenCode estão desativados?
A documentação atual diz que omitir lsp desativa todos. Também pode haver lsp: false ou disabled: true. Confira a precedência.
LSP substitui MCP?
Não. LSP fornece inteligência de linguagem e MCP conecta ferramentas e dados externos. Os limites são diferentes.
Posso adicionar um servidor LSP personalizado?
Sim. Defina comando e extensões em lsp, acrescente inicialização documentada e teste em um repositório pequeno.
Por que o LSP funciona no VS Code, mas não no OpenCode?
Raiz, comando, extensões, runtime ou arquivo de configuração podem ser diferentes. Compare essas entradas.
Fontes oficiais consultadas
Referências do OpenCode LSP
A página oficial de LSP foi verificada em 10 de agosto de 2026; comandos, extensões e campos podem mudar.