A collection of Language Server Protocol (LSP) plugins for Claude Code.
Note
LSP Integration: If you're on v2.0.69 through v2.0.x, LSP integration is broken due to a race condition (#14803, #13952). This has been fixed in v2.1.0+. Please upgrade to the latest version.
The Language Server Protocol provides IDE-like intelligence to Claude Code. On startup, Claude Code automatically starts LSP servers from installed plugins and exposes them to Claude in two ways:
LSP Tool - A builtin tool with 9 operations mapping directly to LSP commands:
| Operation | Description |
|---|---|
goToDefinition |
Find where a symbol is defined |
findReferences |
Find all references to a symbol |
hover |
Get hover info (docs, type info) for a symbol |
documentSymbol |
Get all symbols (functions, classes, variables) in a document |
workspaceSymbol |
Search for symbols across the entire workspace |
goToImplementation |
Find implementations of an interface/abstract method |
prepareCallHierarchy |
Get call hierarchy item at a position |
incomingCalls |
Find all functions/methods that call the function at a position |
outgoingCalls |
Find all functions/methods called by the function at a position |
Automatic Diagnostics - Real-time error and warning detection similar to the VS Code integration, but operating independently. These diagnostics tend to be faster and more comprehensive than the VS Code equivalent.
| Plugin | Language | Extensions | LSP |
|---|---|---|---|
| bash-language-server | Bash/Shell | .sh .bash .zsh .ksh |
bash-language-server |
| clangd | C/C++/Objective-C | .c .h .cpp .hpp .cc .cxx .hxx .m .mm |
clangd |
| clojure-lsp | Clojure | .clj .cljs .cljc .edn |
clojure-lsp |
| dart-analyzer | Dart/Flutter | .dart |
Dart SDK |
| elixir-ls | Elixir | .ex .exs |
elixir-ls |
| gleam | Gleam | .gleam |
gleam |
| gopls | Go | .go |
gopls |
| intelephense | PHP | .php .phtml |
Intelephense |
| jdtls | Java | .java |
jdtls |
| kotlin-lsp | Kotlin | .kt .kts |
kotlin-lsp |
| lua-language-server | Lua | .lua |
lua-language-server |
| nixd | Nix | .nix |
nixd |
| ocaml-lsp | OCaml | .ml .mli |
ocaml-lsp |
| omnisharp | C# | .cs .csx |
OmniSharp |
| pyright | Python | .py .pyi |
pyright |
| rust-analyzer | Rust | .rs |
rust-analyzer |
| solargraph | Ruby | .rb .rake .gemspec |
Solargraph |
| sourcekit-lsp | Swift | .swift |
sourcekit-lsp |
| terraform-ls | Terraform | .tf .tfvars |
terraform-ls |
| vtsls | TypeScript/JavaScript | .ts .tsx .js .jsx .mjs .cjs |
vtsls |
| yaml-language-server | YAML | .yaml .yml |
yaml-language-server |
| zls | Zig | .zig .zon |
zls |
claude
/plugin marketplace add boostvolt/claude-code-lspsInstall individual plugins:
/plugin install bash-language-server@claude-code-lsps
/plugin install clangd@claude-code-lsps
/plugin install clojure-lsp@claude-code-lsps
/plugin install dart-analyzer@claude-code-lsps
/plugin install elixir-ls@claude-code-lsps
/plugin install gleam@claude-code-lsps
/plugin install gopls@claude-code-lsps
/plugin install intelephense@claude-code-lsps
/plugin install jdtls@claude-code-lsps
/plugin install kotlin-lsp@claude-code-lsps
/plugin install lua-language-server@claude-code-lsps
/plugin install nixd@claude-code-lsps
/plugin install ocaml-lsp@claude-code-lsps
/plugin install omnisharp@claude-code-lsps
/plugin install pyright@claude-code-lsps
/plugin install rust-analyzer@claude-code-lsps
/plugin install solargraph@claude-code-lsps
/plugin install sourcekit-lsp@claude-code-lsps
/plugin install terraform-ls@claude-code-lsps
/plugin install vtsls@claude-code-lsps
/plugin install yaml-language-server@claude-code-lsps
/plugin install zls@claude-code-lspsOr browse and install interactively:
/pluginEach plugin will attempt to auto-install its LSP server on first use. If auto-install fails, use the manual instructions below.
Bash/Shell (bash-language-server)
brew install bash-language-serverOr via npm:
npm install -g bash-language-serverC/C++/Objective-C (clangd)
brew install llvmOr via Xcode Command Line Tools:
xcode-select --installSupports C, C++, Objective-C (.m), and Objective-C++ (.mm) files.
C# (omnisharp)
brew install omnisharp/omnisharp-roslyn/omnisharp-monoOr via dotnet:
dotnet tool install -g csharp-lsDart/Flutter (dart-analyzer)
Install Dart SDK:
brew tap dart-lang/dart
brew install dartOr install Flutter (includes Dart):
# See https://docs.flutter.dev/get-started/installEnsure dart is in your PATH.
Elixir (elixir-ls)
brew install elixir-lsRequires Elixir to be installed:
brew install elixirGo (gopls)
go install golang.org/x/tools/gopls@latestEnsure ~/go/bin is in your PATH.
Java (jdtls)
brew install jdtlsOr download manually from Eclipse JDT Language Server.
Requires Java 21+ runtime.
Kotlin (kotlin-lsp)
brew install JetBrains/utils/kotlin-lspOr download from GitHub releases.
Requires Java 17+.
OCaml (ocaml-lsp)
opam install ocaml-lsp-serverRequires opam to be installed:
brew install opam
opam initPHP (intelephense)
npm install -g intelephensePython (pyright)
pip install pyrightRuby (solargraph)
gem install solargraphRust (rust-analyzer)
brew install rust-analyzerOr via rustup:
rustup component add rust-analyzerSwift (sourcekit-lsp)
sourcekit-lsp is bundled with Xcode. Install Xcode from the App Store:
# Verify installation
xcrun --find sourcekit-lspOr install a Swift toolchain from swift.org/install.
TypeScript/JavaScript (vtsls)
npm install -g @vtsls/language-server typescriptYAML (yaml-language-server)
brew install yaml-language-serverOr via npm:
npm install -g yaml-language-serverPlugin Structure
my-lsp/
├── .claude-plugin/
│ └── plugin.json
├── .lsp.json
└── hooks/
├── hooks.json
└── check-my-lsp.sh
.lsp.json Schema
The .lsp.json file configures the language server:
{
"language-id": {
"command": "lsp-server-command",
"extensionToLanguage": {
".ext": "language-id"
}
}
}Required Fields
| Field | Type | Description |
|---|---|---|
command |
string | Command to start the LSP server |
extensionToLanguage |
object | Maps file extensions to language IDs |
Optional Fields
| Field | Type | Description |
|---|---|---|
args |
string[] | Arguments passed to the command |
transport |
string | Communication method: "stdio" (default) or "socket" |
env |
object | Environment variables to set when starting the server |
initializationOptions |
object | Options passed during LSP initialization |
settings |
object | Server-specific settings via workspace/didChangeConfiguration |
workspaceFolder |
string | Workspace folder path for the server |
startupTimeout |
number | Max time to wait for server startup (milliseconds) |
shutdownTimeout |
number | Max time to wait for graceful shutdown (milliseconds) |
restartOnCrash |
boolean | Whether to automatically restart the server if it crashes |
maxRestarts |
number | Max restart attempts before giving up (default: 3) |
Example: gopls
.lsp.json:
{
"go": {
"command": "gopls",
"extensionToLanguage": {
".go": "go"
}
}
}.claude-plugin/plugin.json:
{
"name": "gopls",
"description": "Go language server",
"version": "1.0.0",
"author": {
"name": "Your Name"
},
"license": "MIT",
"repository": "https://github.com/boostvolt/claude-code-lsps"
}hooks/hooks.json (optional auto-install):
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/check-gopls.sh",
"timeout": 30
}
]
}
]
}
}MIT
