Guía de OpenCode LSP

OpenCode LSP: qué hace, cómo activarlo y cómo corregir servidores desactivados

La respuesta corta: OpenCode LSP conecta el agente de programación con servidores de lenguaje que entienden un proyecto. Así la sesión puede usar diagnósticos, definiciones, referencias y símbolos. LSP no es MCP y no sustituye al formateador ni a las pruebas. Empieza con el esquema oficial, relaciona el servidor con las extensiones correctas y valida con una tarea pequeña.

La respuesta corta: OpenCode LSP conecta el agente de programación con servidores de lenguaje que entienden un proyecto. Así la sesión puede usar diagnósticos, definiciones, referencias y símbolos. LSP no es MCP y no sustituye al formateador ni a las pruebas. Empieza con el esquema oficial, relaciona el servidor con las extensiones correctas y valida con una tarea pequeña.

La búsqueda qué es LSP en OpenCode suele esconder más preguntas: qué cambia en el flujo de un agente, por qué no aparecen diagnósticos, dónde va la configuración y cómo tratar un servidor desactivado. Esta guía reúne esas decisiones y mantiene separadas las páginas de instalación, providers y MCP.

La página oficial de OpenCode LSP consultada el 10 de agosto de 2026 se titula LSP Servers y explica que OpenCode se integra con servidores LSP. Documenta el objeto lsp, los campos de comando y extensiones, las opciones de inicialización, el apagado global, la desactivación por servidor y los servidores personalizados. Confirma los comandos concretos con la documentación de cada servidor.

OpenCode LSP conecta un espacio de código con servidores de lenguaje y diagnósticos
LSP incorpora diagnósticos del servidor de lenguaje y relaciones del código al flujo de OpenCode.

¿Qué es LSP en OpenCode? Una capa con contexto de lenguaje

LSP significa Language Server Protocol. Un servidor de lenguaje se ejecuta junto al proyecto y ofrece diagnósticos, símbolos, definiciones, referencias y detalles de una función. OpenCode puede usar esa información durante una sesión en vez de tratar cada archivo como texto aislado.

El beneficio real es el contexto. Si el servidor de TypeScript entiende una importación, el agente tiene más evidencia al explicar un fallo de tipos o un cambio de nombre. Aun así, LSP no garantiza una respuesta correcta: el servidor puede faltar, el proyecto puede no cargarse o el paquete puede exigir su propia configuración. LSP mejora la información, pero no sustituye las pruebas ni la revisión del diff.

Un modelo mental útil

Piensa en OpenCode como consumidor, en el servidor LSP como especialista del lenguaje y en el repositorio como fuente de verdad. Si falla algo, revisa esa capa antes de ampliar permisos o cambiar de modelo.

CapaAportaNo sustituye
LSPDiagnósticos, símbolos, definiciones y referenciasPruebas, formateador o revisión
MCPHerramientas y datos externosEl servidor de lenguaje
FormateadorEstilo y formatoDiagnósticos semánticos
Provider/modeloRazonamiento y generaciónLa toolchain del proyecto

Cómo encuentra OpenCode el servidor LSP correcto

Una entrada LSP necesita un comando ejecutable y una relación clara con las extensiones. El comando inicia el servidor y la lista de extensiones indica qué archivos deben usarlo. El ejecutable, los argumentos y el método de instalación dependen de la documentación del servidor; no adivines un paquete.

Empieza con un lenguaje y un repositorio pequeño. Abre un archivo con la extensión esperada, comprueba que el proceso puede iniciarse y después pide una consulta de solo lectura. Si la extensión no coincide, un servidor válido puede parecer roto porque OpenCode no lo vincula al archivo.

Flujo de configuración de OpenCode LSP desde opencode.json hasta un servidor de lenguaje y los diagnósticos
Relaciona la extensión, inicia el servidor y comprueba el resultado de lenguaje en ese orden.
PuntoEvidenciaPrimer chequeo
ComandoEl ejecutable inicia con sus argumentosPATH, runtime, paquete y stderr
ExtensiónEl archivo coincide con la entradaLas extensiones documentadas por el servidor
WorkspaceSe abre el proyecto correctoRaíz de Git y configuración
ResultadoLlegan diagnósticos o símbolosLogs del servidor y configuración

Añade una configuración lsp mínima

Usa la configuración del proyecto para decisiones que todo el repositorio debe revisar. Mantén los experimentos personales en la configuración global hasta conocer el comando, las extensiones y la raíz del proyecto. La guía de JSONC cubre alcance y Schema; esta página se centra en el servidor de lenguaje.

Una entrada pequeña se depura mejor que un catálogo grande. Usa un nombre descriptivo, un array de comandos explícito y solo las extensiones que el servidor admite. Añade opciones de inicialización después de que el proceso básico funcione. JSON válido no garantiza que el ejecutable o el workspace sean correctos.

Ejemplo opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "typescript": {
      "command": ["typescript-language-server", "--stdio"],
      "extensions": [".ts", ".tsx"]
    }
  }
}

Es un ejemplo con forma compatible con el Schema; verifica el ejecutable y las extensiones en la fuente oficial del servidor.

Activa, desactiva o personaliza un servidor LSP

La documentación oficial actual indica que omitir lsp desactiva todos los servidores. Para apagar todos los servidores después de otra configuración, usa lsp: false; para uno concreto, usa disabled: true. Es útil cuando el servidor es lento, produce ruido o no es compatible con un repositorio.

Los servidores personalizados cubren lenguajes o extensiones que no aparecen en la configuración habitual. Define primero comando y extensiones, añade inicialización solo cuando la documentación lo pida y cambia una sola cosa cada vez. Guarda la última configuración que funcionó para poder volver atrás.

Desactivar y 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" } }
    }
  }
}

El comando personalizado es un placeholder. Sustitúyelo por el valor del proveedor y nunca guardes credenciales en Git.

Verifica OpenCode LSP con una tarea de bajo riesgo

No empieces reescribiendo un módulo grande. Usa un repositorio limpio, abre un archivo conocido y formula una petición de solo lectura: identificar un símbolo, explicar un diagnóstico o localizar una definición. Compara el resultado con el editor, el compilador o el servidor que ya consideres fiable.

Cuando esa ruta funcione, haz un cambio pequeño y reversible y revisa el diff. Anota sistema, comando, extensiones, raíz y prompt de prueba. Esa nota convierte una prueba personal en un procedimiento reproducible.

  1. LimpiarParte de una rama y un árbol de trabajo conocidos.
  2. CoincidirAbre un archivo con una extensión configurada.
  3. LeerPide un símbolo, definición, referencia o diagnóstico.
  4. EditarHaz un cambio pequeño y reversible y mira el diff.
  5. AnotarGuarda comando, modelo, servidor y rollback.

Corrige opencode lsps are disabled y diagnósticos ausentes

Si OpenCode dice que los LSP están desactivados, revisa primero la precedencia. Otro archivo puede imponer lsp: false, el proyecto puede no declarar el servidor o una entrada puede tener disabled. Compara la carpeta real del proyecto con la ubicación de la configuración.

Si el servidor está activo pero no hay diagnósticos, revisa comando y extensión. Ejecútalo en el mismo shell cuando sea posible, confirma runtime y PATH, y comprueba si necesita lockfile, configuración del compilador o raíz del workspace. Un primer resultado lento puede deberse al indexado de un repositorio grande.

Mantén estrechos los permisos. LSP necesita un proceso y contexto de proyecto, no permiso shell ilimitado, más herramientas MCP o autoaprobación. Usa las guías de permisos y MCP cuando el fallo cambie de capa.

Cuatro puntos de comprobación de OpenCode LSP: comando, extensión, activado y diagnósticos
Revisa comando, extensión, estado activo y diagnósticos en ese orden.
SíntomaCapa probablePrimer arreglo
Todos están desactivadosPrecedencia o lsp: falseEncuentra la configuración ganadora
Un servidor está desactivadoFlag del servidorRevisa su nombre y disabled
No hay diagnósticosExtensión o procesoHaz coincidir la extensión y ejecuta el comando
Primer resultado lentoÍndice o workspacePrueba un repo pequeño y revisa logs
Funciona en el editorRaíz o configuración distintaCompara raíz del editor, Git y OpenCode

LSP, MCP, formateadores y VS Code son capas distintas

LSP aporta inteligencia de lenguaje al repositorio. MCP conecta herramientas o datos externos. El formateador cambia el estilo y las pruebas aportan evidencia ejecutable. VS Code puede mostrar diagnósticos con su propia integración; eso no demuestra que OpenCode use el mismo servidor o la misma raíz.

Enlaza la guía adecuada para cada síntoma: MCP trata servidores locales y remotos, VS Code trata contexto y terminal, y permisos trata aprobaciones. Separar estas intenciones mantiene enfocada la página LSP en OpenCode.

Preguntas frecuentes sobre OpenCode LSP

¿Qué es LSP en OpenCode?

Es la capa Language Server Protocol que permite usar diagnósticos, símbolos, definiciones y referencias de un servidor de lenguaje.

¿Cómo activo LSP en OpenCode?

Añade una entrada lsp con el comando y las extensiones compatibles, y valida el comando y la raíz con una petición de solo lectura.

¿Por qué están desactivados los LSP de OpenCode?

La documentación actual dice que omitir lsp desactiva todos. También puede existir lsp: false o disabled: true en el servidor concreto. Revisa la precedencia.

¿LSP sustituye a MCP?

No. LSP aporta inteligencia de lenguaje y MCP conecta herramientas y datos externos. Comparten sesión, pero no función ni límites.

¿Puedo añadir un servidor LSP personalizado?

Sí. Define comando y extensiones bajo lsp, añade inicialización según la documentación y prueba primero en un repositorio pequeño.

¿Por qué funciona LSP en VS Code pero no en OpenCode?

Pueden diferir la raíz, el comando, las extensiones, el runtime o el archivo de configuración. Compara esas entradas.

Fuentes oficiales consultadas

Referencias de OpenCode LSP

La página oficial de LSP se comprobó el 10 de agosto de 2026; los comandos, extensiones y campos pueden cambiar.