Skip to content

Code intelligence plugins

Give Claude live type errors and symbol navigation by installing a language server plugin, and handle the LSP recommendation dialog.

Without a language server, Claude finds out it broke an import when your build fails. With one, it finds out the moment it saves the file. Code intelligence plugins connect Claude Code to a language server over the Language Server Protocol (LSP), so Claude gets the same diagnostics and go-to-definition your editor has.

Two things change once a server is running:

  • Diagnostics after every edit. When Claude edits or writes a file the server handles, the server's errors and warnings come straight back to Claude. Type mismatches, missing imports and syntax errors are caught without a compile step.
  • Symbol-aware navigation. Claude gets an LSP tool that looks up definitions and references through the server rather than grepping text. The tool is read-only; see /docs/tools-reference for exactly what it can query and how permissions apply.

Note: These plugins work in terminal sessions. In cloud sessions Claude Code does not start plugin language servers, so there are no diagnostics or LSP lookups there.

Install one

The plugin only tells Claude Code which command launches the server and which file extensions it covers. It does not ship the server itself. So the order is: binary, plugin, check.

1. Install the language server binary

LanguagePluginBinary it expects
C / C++clangd-lspclangd
C#csharp-lspcsharp-ls
Gogopls-lspgopls
Javajdtls-lspjdtls
Kotlinkotlin-lspkotlin-lsp
Liquidliquid-lspshopify (from the Shopify CLI)
Lualua-lsplua-language-server
PHPphp-lspintelephense
Pythonpyright-lsppyright-langserver
Rubyruby-lspruby-lsp
Rustrust-analyzer-lsprust-analyzer
Swiftswift-lspsourcekit-lsp
TypeScript / JavaScripttypescript-lsptypescript-language-server

All of these are in the official marketplace. Anthropic maintains every one except liquid-lsp, which Shopify maintains. Each plugin's README in the anthropics/claude-plugins-official repository has the install command for its binary.

For a typical Next.js project like this site, that is:

npm install -g typescript-language-server typescript
which typescript-language-server   # must print a path

On Windows PowerShell use Get-Command typescript-language-server. The binary must be on the PATH of the shell you launch claude from, which catches people out with version managers that only set PATH in interactive shells.

2. Install the plugin

In a terminal session:

/plugin install typescript-lsp@claude-plugins-official

Substitute the plugin for your language. The confirmation tells you whether it is active now or needs /reload-plugins. In VS Code or the desktop app, use their plugin screens as described in /docs/plugins/install. If you see Marketplace "claude-plugins-official" not found, see /docs/plugins/troubleshooting.

3. Prove the server starts

The server launches the first time Claude edits a file with a matching extension. The quickest test is to ask Claude to deliberately break something:

In src/lib/price.ts, change formatPrice to return a number instead of a string,
then fix whatever breaks.

Under the edit you should see a line like Found 3 new diagnostic issues in 2 files (ctrl+o to expand). That means the server is up and Claude is reading its output.

No line? Run /plugin and open the Errors tab. A row reading Executable not found in $PATH: "<binary>" tells you which binary is missing. Install it and Claude Code retries on the next matching edit. If you installed it somewhere your launching shell cannot see, start a fresh session from a shell where it is on PATH.

Reading the diagnostics yourself

The conversation only shows the summary count. Press Ctrl+O to expand and read the actual errors Claude received.

The LSP recommendation dialog

If a language server binary is already on your PATH but its plugin is not installed, Claude Code may offer to install it in a dialog titled LSP plugin recommendation.

When it shows up

  • A marketplace you have (including the auto-registered official one) lists a code intelligence plugin for the extension of a file Claude just edited, and that plugin's binary is installed.
  • If several marketplaces offer one, the official marketplace's plugin wins.
  • At most once per session, for the first matching file.
  • Never when your terminal is attached to a cloud session, for example one started with claude --cloud.

Your choices

ChoiceWhat happens
Yes, installInstalls at user scope and prints <plugin> installed · restart to apply. Start a new session to load the server
No, not now (or Esc)Closes; a later session may offer it again
Never for this pluginStops offering this plugin, others still offered
Disable all LSP recommendationsStops offering any plugin

If you ignore the dialog it closes itself after 30 seconds and counts as ignored. That count persists across sessions, and after five ignores Claude Code stops recommending entirely, as if you had chosen Disable all LSP recommendations.

Turning recommendations back on

The state lives in ~/.claude.json, Claude Code's own config file (not your settings.json):

  • To undo a global disable or the five-ignore cut-off, delete the lspRecommendationDisabled and lspRecommendationIgnoredCount keys.
  • To have a specific plugin offered again, remove its name@marketplace id from the lspRecommendationNeverPlugins array.

When things go wrong

/docs/plugins/troubleshooting has a section on language servers covering three common symptoms:

  • Server never starts: Executable not found in $PATH on the Errors tab, or Claude never reports diagnostics.
  • Memory climbs: memory use rises while the server indexes the project.
  • False positives in a monorepo: imports reported as unresolved when they actually resolve.

Languages without an official plugin

You can still connect any LSP server:

  1. Write a small plugin containing an .lsp.json that names the server command and the file extensions it handles.
  2. Load it with --plugin-dir while testing, or publish it to a marketplace.

The field reference and a worked example are in /docs/plugins/components.