Language Server Protocol
Official page for Language Server Protocol

    
        
            

            Adding features like auto complete, go to definition, or documentation on hover for a programming language takes significant effort. Traditionally this work had to be repeated for each development tool, as each tool provides different APIs for implementing the same feature.
            A Language Server is meant to provide the language-specific smarts and communicate with development tools over a protocol that enables inter-process communication.
            The idea behind the Language Server Protocol (LSP) is to standardize the protocol for how such servers and development tools communicate. This way, a single Language Server can be re-used in multiple development tools, which in turn can support multiple languages with minimal effort.
            LSP is a win for both language providers and tooling vendors!
        
        
                    
                                CSS code complete in VS Code powered by the CSS LSP Server
                            
                    
                                CSS code complete in Atom powered by the CSS LSP Server
                            
                    
                                CSS code complete in Eclipse IDE powered by the CSS LSP Server
                            
                    
                                PowerShell Hover in VS Code powered by the PowerShell LSP Server
                            
                    
                                Rust code complete in Visual Studio powered by the Rust LSP Server
                            
                
    

    

    
        
            
            Overview
            
                The protocol defines the format of the messages sent using JSON-RPC between the development tool and the language server. LSIF defines a graph format to store information about programming artifacts.
            
        
        
            
            Specification
            
                The latest version of the LSP specification is version 3.17. There is now also a specification for the upcoming language server index format (LSIF).
            
        
        
            
            
            Implementations
            
                The LSP has been implemented for many languages and many development tools are integrating these language servers.
            
        
    
