pyright
Python language server
Summary
Pyright is a fast Python language server that provides IDE-like intelligence within Claude Code, including type checking, code navigation, and symbol search.
- It helps developers catch type errors early, understand codebases faster, and navigate Python projects more efficiently.
Overview
A collection of Language Server Protocol (LSP) plugins for Claude Code.
What is LSP Integration?
[!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.
Available Plugins
| 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 |
Getting Started
1. Add the Marketplace
claude
/plugin marketplace add boostvolt/claude-code-lsps2. Install Plugins
Install 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:
/pluginManual LSP Installation
Each plugin will attempt to auto-install its LSP server on first use. If auto-install fails, use the manual instructions below.
<details> <summary><strong>Bash/Shell (bash-language-server)</strong></summary>
brew install bash-language-serverOr via npm:
npm install -g bash-language-server</details>
<details> <summary><strong>C/C++/Objective-C (clangd)</strong></summary>
brew install llvmOr via Xcode Command Line Tools:
xcode-select --installSupports C, C++, Objective-C (.m), and Objective-C++ (.mm) files.
</details>
<details> <summary><strong>C# (omnisharp)</strong></summary>
brew install omnisharp/omnisharp-roslyn/omnisharp-monoOr via dotnet:
dotnet tool install -g csharp-ls</details>
<details> <summary><strong>Clojure (clojure-lsp)</strong></summary>
brew install clojure-lspOr download from GitHub releases.
</details>
<details> <summary><strong>Dart/Flutter (dart-analyzer)</strong></summary>
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.
</details>
<details> <summary><strong>Elixir (elixir-ls)</strong></summary>
brew install elixir-lsRequires Elixir to be installed:
brew install elixir</details>
<details> <summary><strong>Gleam (gleam)</strong></summary>
brew install gleamOr download from GitHub releases.
</details>
<details> <summary><strong>Go (gopls)</strong></summary>
go install golang.org/x/tools/gopls@latestEnsure ~/go/bin is in your PATH.
</details>
<details> <summary><strong>Java (jdtls)</strong></summary>
brew install jdtlsOr download manually from Eclipse JDT Language Server.
Requires Java 21+ runtime.
</details>
<details> <summary><strong>Kotlin (kotlin-lsp)</strong></summary>
brew install JetBrains/utils/kotlin-lspOr download from GitHub releases.
Requires Java 17+.
</details>
<details> <summary><strong>Lua (lua-language-server)</strong></summary>
brew install lua-language-serverOr download from GitHub releases.
</details>
<details> <summary><strong>Nix (nixd)</strong></summary>
nix profile install nixpkgs#nixdRequires Nix to be installed. See nixos.org.
</details>
<details> <summary><strong>OCaml (ocaml-lsp)</strong></summary>
opam install ocaml-lsp-serverRequires opam to be installed:
brew install opam
opam init</details>
<details> <summary><strong>PHP (intelephense)</strong></summary>
npm install -g intelephense</details>
<details> <summary><strong>Python (pyright)</strong></summary>
pip install pyright</details>
<details> <summary><strong>Ruby (solargraph)</strong></summary>
gem install solargraph</details>
<details> <summary><strong>Rust (rust-analyzer)</strong></summary>
brew install rust-analyzerOr via rustup:
rustup component add rust-analyzer</details>
<details> <summary><strong>Swift (sourcekit-lsp)</strong></summary>
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.
</details>
<details> <summary><strong>Terraform (terraform-ls)</strong></summary>
brew install terraform-lsOr download from GitHub releases.
</details>
<details> <summary><strong>TypeScript/JavaScript (vtsls)</strong></summary>
npm install -g @vtsls/language-server typescript</details>
<details> <summary><strong>YAML (yaml-language-server)</strong></summary>
brew install yaml-language-serverOr via npm:
npm install -g yaml-language-server</details>
<details> <summary><strong>Zig (zls)</strong></summary>
brew install zlsRequires Zig to be installed. Download from ziglang.org.
</details>
Creating Your Own Plugin
<details> <summary><strong>Plugin Structure</strong></summary>
my-lsp/
├── .claude-plugin/
│ └── plugin.json
├── .lsp.json
└── hooks/
├── hooks.json
└── check-my-lsp.sh</details>
<details> <summary><strong>.lsp.json Schema</strong></summary>
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) |
</details>
<details> <summary><strong>Example: gopls</strong></summary>
.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
}
]
}
]
}
}</details>
License
MIT
Install & Usage
/plugin marketplace add <org/repo>Add the configuration to /plugin install pyright@<marketplace>
/pluginUse Cases
Usage Examples
/pyright goToDefinition main.py:42
/pyright findReferences calculate_total
/pyright hover app/utils.py:15
Security Audits
Frequently Asked Questions
What is pyright?
Pyright is a fast Python language server that provides IDE-like intelligence within Claude Code, including type checking, code navigation, and symbol search. It helps developers catch type errors early, understand codebases faster, and navigate Python projects more efficiently.
How to install pyright?
To install pyright: add a marketplace (/plugin marketplace add <org/repo>), then add the config to /plugin install pyright@<marketplace>. Finally, /plugin in Claude Code.
What is pyright best for?
pyright is a plugin categorized under Development. It is designed for: python, lsp. Created by Jan Kott.
What can I use pyright for?
pyright is useful for: Navigate to the definition of a function or class in a large Python codebase without leaving the terminal.; Find all references to a variable or function across the entire workspace to understand its usage.; Get hover information with type signatures and documentation for any symbol in your Python code.; List all symbols (functions, classes, variables) in a Python file to quickly understand its structure.; Search for symbols by name across the workspace when you can't remember exactly where something is defined.; Find all implementations of an interface or abstract method in a codebase using object-oriented patterns..