A Language Server Protocol (LSP) is an open, JSON-RPC-based protocol that standardizes communication between source-code editors or integrated development environments (IDEs) and language servers.
Its primary purpose is to enable development tools to provide language-specific features—such as code completion, go-to-definition, find all references, syntax highlighting, error checking, and refactoring—by connecting to a language server that understands the specific programming language.
This separation allows a single language server to be reused across multiple editors and IDEs, significantly reducing the effort required to implement these features in different tools.
The protocol defines a set of standardized messages, including requests, responses, and notifications, exchanged between the client (editor/IDE) and server (language server), with the server typically running as a separate process.
LSP capable editors are Helix, NeoVim, VSCode, Sublime, etc