Guia do OpenCode LSP

OpenCode LSP: o que faz, como ativar e como corrigir servidores desativados

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.

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.

OpenCode LSP conecta um espaço de código a servidores de linguagem e diagnósticos
O LSP leva diagnósticos do servidor de linguagem e relações do código ao fluxo do OpenCode.

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.

CamadaEntregaNão substitui
LSPDiagnósticos, símbolos, definições e referênciasTestes, formatador ou revisão
MCPFerramentas e dados externosO servidor de linguagem
FormatadorEstilo e formataçãoDiagnósticos semânticos
Provider/modeloRaciocínio e geraçãoA 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.

Fluxo da configuração OpenCode LSP de opencode.json para servidor de linguagem e diagnósticos
Associe a extensão, inicie o servidor e verifique o resultado de linguagem nessa ordem.
PontoEvidênciaPrimeira verificação
ComandoO executável inicia com os argumentosPATH, runtime, pacote e stderr
ExtensãoO arquivo corresponde à entradaExtensões documentadas
WorkspaceO projeto correto é abertoRaiz Git e configuração
ResultadoChegam diagnósticos ou símbolosLogs 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.

Exemplo opencode.json
{
  "$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.

Desativar e personalizar
{
  "$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.

  1. LimparComece com branch e árvore de trabalho conhecidos.
  2. AssociarAbra um arquivo com a extensão configurada.
  3. LerPeça símbolo, definição, referência ou diagnóstico.
  4. EditarFaça uma alteração pequena e reversível e veja o diff.
  5. 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.

Quatro pontos de verificação do OpenCode LSP: comando, extensão, ativado e diagnósticos
Confira comando, extensão, estado ativado e diagnósticos nesta ordem.
SintomaCamada provávelPrimeiro reparo
Todos desativadosPrecedência ou lsp: falseEncontre a configuração vencedora
Um servidor desativadoFlag do servidorConfira nome e disabled
Sem diagnósticosExtensão ou processoAssocie a extensão e execute o comando
Primeiro resultado lentoÍndice ou workspaceTeste um repositório menor e veja logs
Funciona no editorRaiz ou configuração diferenteCompare 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.

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.