# microsoft/language-server-protocol

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/microsoft-language-server-protocol).**

12,594 stars · 929 forks · HTML · cc-by-4.0

## Links

- GitHub: https://github.com/microsoft/language-server-protocol
- Homepage: https://microsoft.github.io/language-server-protocol/
- awesome-repositories: https://awesome-repositories.com/repository/microsoft-language-server-protocol.md

## Description

The Language Server Protocol is a vendor-neutral communication framework that provides a standardized interface for code intelligence. It decouples language-specific analysis from the editor interface, allowing development tools to exchange structured data with external language servers to power features such as autocomplete, diagnostics, and symbol navigation.

By utilizing a universal protocol schema, the framework enables cross-editor plugin development and ensures interoperability across different programming environments. It employs a capability negotiation handshake to establish a shared feature set between the client and server, ensuring consistent functionality regardless of the specific editor or language being used.

The protocol supports complex development workflows by maintaining stateful document synchronization and symbol-based indexing. These capabilities allow for efficient navigation and analysis of large codebases, including remote exploration within web-based interfaces. The specification is documented through a formal, language-agnostic interface definition that governs the exchange of messages between development tools and analysis processes.

## Tags

### Development Tools & Productivity

- [Language Server Protocols](https://awesome-repositories.com/f/development-tools-productivity/platforms-runtimes-language-services/language-server-protocols.md) — Defines the standardized JSON-RPC interface used to provide rich code intelligence features between development tools and language servers.
- [Code Intelligence](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/static-analysis-engines/static-analysis-tools/code-intelligence.md) — Acts as the industry-standard protocol for exchanging structured code intelligence data across different editors and languages.
- [Developer Experience Tools](https://awesome-repositories.com/f/development-tools-productivity/developer-experience-tools.md) — Provides a vendor-neutral communication framework that decouples language analysis from editor interfaces to improve developer experience.
- [Language Server Integrations](https://awesome-repositories.com/f/development-tools-productivity/language-server-integrations.md) — Enables editors to request and receive accurate code insights from external language servers via a uniform interface. ([source](https://microsoft.github.io/language-server-protocol/))
- [Code Navigation Tools](https://awesome-repositories.com/f/development-tools-productivity/code-navigation-tools.md) — Supports rich symbol lookups and project exploration within web interfaces by standardizing remote code navigation. ([source](https://microsoft.github.io/language-server-protocol/))
- [Codebase Indexing](https://awesome-repositories.com/f/development-tools-productivity/codebase-indexing.md) — Standardizes how code intelligence is indexed and queried to enable rich navigation within remote web-based interfaces.
- [Code Symbol Outlining](https://awesome-repositories.com/f/development-tools-productivity/code-editors-ides/extension-ecosystems-management/editor-extensions/editor-features/code-symbol-outlining.md) — Maps code symbols into structured graphs to enable rapid navigation and lookup across complex software projects.
- [Editor Plugins](https://awesome-repositories.com/f/development-tools-productivity/editor-plugins.md) — Facilitates the development of language support extensions that function consistently across multiple development environments.
- [Responsive Interface Patterns](https://awesome-repositories.com/f/development-tools-productivity/responsive-interface-patterns.md) — Maintains editor responsiveness by offloading heavy language analysis to external processes via asynchronous message exchanges.

### Software Engineering & Architecture

- [Language Server Protocols](https://awesome-repositories.com/f/software-engineering-architecture/language-server-protocols.md) — Provides a universal, language-agnostic protocol schema that decouples language intelligence from specific editor implementations.
- [Software Development Tooling](https://awesome-repositories.com/f/software-engineering-architecture/software-development-tooling.md) — Creates a consistent interface for development tools to exchange data with language servers, ensuring reliable interoperability.
- [State Synchronization Patterns](https://awesome-repositories.com/f/software-engineering-architecture/state-synchronization-patterns.md) — Synchronizes editor buffers with server-side representations through incremental updates to ensure consistent state during code editing.

### Networking & Communication

- [JSON-RPC Message Buses](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/message-broker-infrastructure/json-rpc-message-buses.md) — Uses JSON-RPC over standard input and output streams to facilitate structured communication between editors and language servers.

### Education & Learning Resources

- [Capability Negotiation Protocols](https://awesome-repositories.com/f/education-learning-resources/educational-resources/systems-applied-computing/infrastructure-architecture/computer-networks/networking-protocols/negotiation-extension-frameworks/capability-negotiation-protocols.md) — Implements a handshake mechanism to negotiate and align feature sets between development tools and language servers.

### Data & Databases

- [Knowledge Graph Indexers](https://awesome-repositories.com/f/data-databases/knowledge-graph-indexers.md) — Indexes code symbols and references into structured formats to facilitate efficient analysis and navigation. ([source](https://microsoft.github.io/language-server-protocol/))
