microsoft/language-server-protocol

Defines a common protocol for language servers.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 5 minutes ago
Added to GitGenius on September 4th, 2026
Created on September 4th, 2015
Open Issues & Pull Requests: 299 (+0)
GitHub issues: Enabled
Number of forks: 996
Total Stargazers: 13,013 (+0)
Total Subscribers: 302 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 20.4 hours
Mean response time: 40.6 days
90th percentile: 176.3 days
Tracked items: 157

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 96% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "new request" is answered fastest, typically in about 6 hours, while "clarification" waits about 4 days. Only 3% of issues opened in the past year have been closed. Three people close 87% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 98
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 980 days
Stale 30+ days: 92
Stale 90+ days: 86

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • feature-request (67)
  • clarification (32)
  • new request (13)
  • info-needed (11)
  • help wanted (8)
  • document symbols (6)
  • *question (4)
  • bug (4)

Detailed Description

The Language Server Protocol is a specification that defines a standardized communication protocol between code editors and language servers.

The protocol solves the problem of duplicating language intelligence features across many editor and IDE combinations. Traditionally, implementing features like code completion, diagnostics, and refactoring required building separate integrations for each editor-language pair, creating an exponential maintenance burden. The protocol establishes a common interface that allows a single language server implementation to work with any editor that supports the protocol, and any editor to leverage language servers without custom integration work for each one. Communication happens over JSON-RPC, with the protocol defining the messages, methods, and data structures that editors and servers exchange.

Adoption makes sense for editor and IDE developers who want to support multiple programming languages without implementing language features themselves, and for language tool developers who want their intelligence available across many editors without building separate plugins. The protocol suits projects where decoupling the editor from language-specific logic is valuable. The specification is language-agnostic, so implementations exist across many programming languages and ecosystems. The protocol has become a de facto standard in the editor space, with support in Visual Studio Code, Vim, Emacs, Neovim, and other editors, alongside language servers for JavaScript, Python, Go, Rust, and numerous other languages.

The project maintains detailed specification documentation and reference implementations. Development activity shows sustained engagement with the specification itself, including refinements to the protocol definition and expansion of supported capabilities. The project accepts contributions that extend the protocol to cover additional language server scenarios. Community adoption has driven real-world validation of the specification, with feedback from implementers across different editors and languages informing protocol evolution. The specification remains actively maintained with attention to compatibility and backward compatibility concerns as new features are added.