Install and configure LSP (Language Server Protocol) for Claude Code to enable go-to-definition, find-references, and real-time diagnostics
Installs and configures Language Server Protocol integration for code intelligence features.
/plugin marketplace add jpoutrin/product-forge/plugin install claude-code-dev@product-forge-marketplace[native|cclsp] [--language <lang>]Enable Language Server Protocol integration to give Claude Code IDE-like code intelligence: go-to-definition, find-references, rename-symbol, and real-time diagnostics.
LSP provides semantic code understanding instead of text-based grep searches:
Claude Code has built-in LSP support that requires activation.
Enable permanently (add to ~/.zshrc or ~/.bashrc):
export ENABLE_LSP_TOOL=1
Install language plugins from the community marketplace:
# Add the LSP plugin marketplace
/plugin marketplace add boostvolt/claude-code-lsps
# Install language-specific plugins
/plugin install pyright@claude-code-lsps # Python
/plugin install vtsls@claude-code-lsps # TypeScript/JavaScript
/plugin install gopls@claude-code-lsps # Go
/plugin install rust-analyzer@claude-code-lsps # Rust
/plugin install clangd@claude-code-lsps # C/C++
/plugin install jdtls@claude-code-lsps # Java
/plugin install omnisharp@claude-code-lsps # C#
/plugin install intelephense@claude-code-lsps # PHP
/plugin install kotlin-language-server@claude-code-lsps # Kotlin
/plugin install solargraph@claude-code-lsps # Ruby
/plugin install vscode-html-css@claude-code-lsps # HTML/CSS
Community MCP server with interactive setup wizard.
Automated setup:
npx cclsp@latest setup # Project-level config
npx cclsp@latest setup --user # User-wide config
The wizard:
| Language | Binary | Installation |
|---|---|---|
| Python | pyright | pip install pyright or npm i -g pyright |
| TypeScript/JS | vtsls | npm i -g @vtsls/language-server typescript |
| Go | gopls | go install golang.org/x/tools/gopls@latest |
| Rust | rust-analyzer | rustup component add rust-analyzer |
| C/C++ | clangd | brew install llvm or xcode-select --install |
| Java | jdtls | brew install jdtls (requires Java 21+) |
| C# | omnisharp | brew install omnisharp/omnisharp-roslyn/omnisharp-mono |
| PHP | intelephense | npm i -g intelephense |
| Kotlin | kotlin-language-server | brew install kotlin-language-server |
| Ruby | solargraph | gem install solargraph |
| HTML/CSS | vscode-langservers | npm i -g vscode-langservers-extracted |
Location: .claude/cclsp.json (project) or ~/.config/claude/cclsp.json (global)
{
"servers": [
{
"extensions": ["py", "pyi"],
"command": ["pyright-langserver", "--stdio"],
"rootDir": ".",
"restartInterval": 30
},
{
"extensions": ["ts", "tsx", "js", "jsx"],
"command": ["typescript-language-server", "--stdio"],
"rootDir": "."
}
]
}
After setup, Claude Code gains these capabilities:
| Tool | Description |
|---|---|
find_definition | Navigate to symbol definition |
find_references | Find all usages of a symbol |
rename_symbol | Rename symbol across all files |
get_diagnostics | Get type errors and warnings |
restart_server | Restart the language server |
# Verify plugin is installed
/plugin
# Reinstall if needed
/plugin uninstall pyright@claude-code-lsps
/plugin install pyright@claude-code-lsps
# Check binary exists
which pyright
which gopls
# For Go, ensure GOPATH/bin is in PATH
export PATH=$PATH:$(go env GOPATH)/bin
# Clear cache and reinstall
rm -rf ~/.claude/plugins/cache
/plugin install pyright@claude-code-lsps
Use cmd /c wrapper for cclsp:
{
"servers": [{
"extensions": ["py"],
"command": ["cmd", "/c", "pyright-langserver", "--stdio"]
}]
}
After setup, test by asking Claude Code to:
functionName"ClassName"A working setup provides exact file:line locations instead of grep-based text search results.
Combine LSP with traditional search:
LSP provides precision; Grep provides coverage.
When the user runs this command:
Determine approach from arguments:
native - Use built-in LSP tool with pluginscclsp - Use cclsp MCP serverFor native approach:
ENABLE_LSP_TOOL is already set/plugin commandFor cclsp approach:
npx cclsp@latest setup interactively/mcpInform user to restart Claude Code after installation