# Claude Code LSP: установка плагина и почему ничего не изменилось

> LSP в Claude Code включает не флаг, а плагин code intelligence и отдельно установленный языковой сервер. Команды для 13 языков и что делать без диагностики.

- URL: https://blog.laozhang.ai/ru/posts/claude-code-lsp
- Published: 2026-11-02
- Updated: 2026-11-02
- Author: LaoZhang AI Team (https://blog.laozhang.ai/ru/about)
- Topic: Инструменты разработчика
- Tags: Claude Code, LSP, Плагины Claude Code, TypeScript, Языковой сервер

---
LSP в Claude Code сейчас подключается двумя частями: языковым сервером, который вы ставите сами, и официальным плагином code intelligence, который говорит Claude Code, какой сервер запускать для каких файлов. Никакого флага включать не нужно. Для TypeScript это выглядит так: в терминале `npm install -g typescript-language-server typescript`, затем в сессии Claude Code `/plugin install typescript-lsp@claude-plugins-official`, новая сессия и просьба к Claude внести и исправить ошибку типов. Если в диалоге появилась строка `Found 1 new diagnostic issue in 1 file (ctrl+o to expand)`, сервер работает. Для Python, Go, Rust, Java, C# и других языков меняются только имя плагина и команда установки сервера, таблица ниже.

Плагин даёт Claude две разные вещи. Диагностика (ошибки типов, неразрешённые импорты) приходит сама после каждой правки файла, а инструмент `LSP` для перехода к определению и поиска ссылок Claude может вызвать, а может и не вызвать, предпочтя обычный поиск по тексту. Поэтому «ничего не изменилось» чаще всего значит одно из трёх: сервер не запустился (нет бинарника в `PATH`, нет зависимости в проекте), установка споткнулась о незарегистрированный официальный маркетплейс, или сервер работает, но Claude просто не пользуется навигацией.

Команды и выводы ниже взяты из запусков 2 ноября 2026 года на Claude Code 2.1.316 под macOS: чистая папка конфигурации, локальный mock-эндпоинт вместо модели, TypeScript-проект из трёх файлов. На чистой конфигурации установка из оболочки упала с ошибкой `Plugin "typescript-lsp" not found in marketplace "claude-plugins-official"`, и помогло только добавление официального маркетплейса: `claude plugin marketplace add anthropics/claude-plugins-official` (в сессии то же самое делает `/plugin marketplace add`). Исключения два: в облачных сессиях Claude Code языковые серверы не запускает вообще, а в VS Code ошибки из панели Problems Claude читает другим механизмом.

## Что даёт LSP в Claude Code: диагностика после правок и инструмент навигации

Плагин code intelligence подключает Claude Code к языковому серверу одного языка по Language Server Protocol, и с ним Claude получает два канала. Первый — диагностика: после каждой записи или правки файла, который обслуживает сервер, Claude видит ошибки и предупреждения, которые сам же внёс, без запуска компилятора. Второй — инструмент `LSP` только для чтения: переход к определению, поиск ссылок, подсказка типа, символы файла и проекта, цепочки вызовов. Так описано на официальной странице [Code intelligence plugins в документации Claude Code](https://code.claude.com/docs/ru/plugins/code-intelligence).

Путаница почти всегда начинается с того, что эти две части считают одной. Языковой сервер — это отдельная программа (`typescript-language-server`, `pyright-langserver`, `gopls`), которая реально разбирает код. Плагин — это только конфигурация: команда запуска сервера и список расширений файлов. Внутри официального плагина нет ни сервера, ни даже файла настроек: в маркетплейсе `claude-plugins-official` (состояние на 30 октября 2026 года) папка плагина содержит README и LICENSE, а сама команда запуска записана в общем файле маркетплейса. Поставили плагин без сервера — сервер не запустится, а модель об этом даже не узнает; поставили сервер без плагина — Claude Code его не увидит.

Инструмент `LSP` не требует подтверждения прав, но на него действуют те же правила путей `Read(...)`, что и на чтение файлов. Появился он в Claude Code 2.0.74 от 19 декабря 2025 года, отсюда и новости про «нативную поддержку LSP» в конце 2025-го.

## Как установить LSP в Claude Code: сервер, затем плагин, затем проверка

Порядок из официальной документации важен: сначала бинарник языкового сервера, потом плагин, потом проверка, что сервер стартует. Сам Claude Code должен быть уже установлен; если нет, начните с инструкции [Как установить Claude Code на Windows, Mac и Linux: Git не нужен](https://blog.laozhang.ai/ru/posts/claude-code-install).

1. Установите языковой сервер своего языка командой из таблицы в следующем разделе. Затем убедитесь, что он виден в той оболочке, из которой вы запускаете `claude`: `which typescript-language-server` в macOS и Linux или `Get-Command typescript-language-server` в PowerShell.
2. Запустите `claude` и введите в сессии команду установки плагина, подставив имя для своего языка:

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

   В расширении VS Code и настольном приложении вместо этой команды используется их собственный экран плагинов. Если установка завершилась ошибкой про маркетплейс `claude-plugins-official`, сначала добавьте маркетплейс (раздел об этой ошибке ниже).
3. В сессии `/plugin install` открывает карточку плагина, где нужно выбрать область установки: для себя во всех проектах, для всех участников репозитория или только для себя в этом репозитории. Сообщение после установки говорит, активен ли плагин сразу или нужен `/reload-plugins`. Надёжнее всего начать новую сессию: обычный `/reload-plugins`, который добавил бы инструмент `LSP`, ничего не перезагружает, а только предупреждает и просит `/reload-plugins --force`.
4. Попросите Claude внести в файл этого языка ошибку типов, а потом исправить её. Сервер запускается не позже первой правки файла с подходящим расширением, поэтому до правки проверять нечего.
5. Найдите в диалоге строку `Found N new diagnostic issues in M files (ctrl+o to expand)`. Есть строка — сервер работает, Ctrl+O раскрывает сами ошибки. Нет строки — откройте `/plugin`, вкладку **Errors**, и переходите к таблице неполадок ниже.

Окно `/plugin install`, вкладки установленных плагинов и области установки подробнее разобраны в статье [Лучшие скиллы для Claude Code: что выбрать первым и как установить](https://blog.laozhang.ai/ru/posts/claude-code-best-skills).

## Какой плагин и языковой сервер нужен для вашего языка

В официальном маркетплейсе 13 плагинов code intelligence. Все их поддерживает Anthropic, кроме `liquid-lsp`, который поддерживает Shopify. Команды установки серверов ниже взяты из README каждого плагина (состояние маркетплейса на 30 октября 2026 года); в столбце «Сервер» — имя бинарника, который должен оказаться в `PATH`.

| Язык | Плагин | Сервер | Как установить сервер |
| --- | --- | --- | --- |
| TypeScript, JavaScript | `typescript-lsp` | `typescript-language-server` | `npm install -g typescript-language-server typescript` |
| Python | `pyright-lsp` | `pyright-langserver` | `npm install -g pyright`, `pip install pyright` или `pipx install pyright` |
| Go | `gopls-lsp` | `gopls` | `go install golang.org/x/tools/gopls@latest` |
| Rust | `rust-analyzer-lsp` | `rust-analyzer` | `rustup component add rust-analyzer` (или brew, apt, pacman) |
| Java | `jdtls-lsp` | `jdtls` | `brew install jdtls`, нужен JDK 17+; в Linux обычно вручную, с обёрткой `jdtls` в `PATH` |
| Kotlin | `kotlin-lsp` | `kotlin-lsp` | `brew install JetBrains/utils/kotlin-lsp` |
| C# | `csharp-lsp` | `csharp-ls` | `dotnet tool install --global csharp-ls`, нужен .NET SDK 6.0+ |
| C, C++ | `clangd-lsp` | `clangd` | `brew install llvm`, `sudo apt install clangd` или `winget install LLVM.LLVM` |
| PHP | `php-lsp` | `intelephense` | `npm install -g intelephense` |
| Ruby | `ruby-lsp` | `ruby-lsp` | `gem install ruby-lsp` |
| Lua | `lua-lsp` | `lua-language-server` | `brew install lua-language-server` (или snap, pacman, dnf) |
| Swift | `swift-lsp` | `sourcekit-lsp` | Входит в набор Swift: Xcode или `brew install swift`, в Linux с swift.org |
| Liquid | `liquid-lsp` | `shopify` | Shopify CLI |

Имя для команды установки всегда собирается как `имя-плагина@claude-plugins-official`, например `/plugin install pyright-lsp@claude-plugins-official`. Сервер для TypeScript устанавливается вместе с пакетом `typescript` не случайно: без него сервер не стартует (подробности в таблице неполадок). Если вашего языка в таблице нет, сервер всё равно можно подключить своим плагином, об этом ближе к концу.

## Нужен ли ENABLE_LSP_TOOL: на Claude Code 2.1.316 флаг ни на что не влияет

Нет, переменная `ENABLE_LSP_TOOL` больше не нужна, и прописывать её в `settings.json` бессмысленно. В проверке 2 ноября 2026 года на Claude Code 2.1.316 флаг не изменил поведение ни в одну сторону: с установленным плагином и `ENABLE_LSP_TOOL=0` инструмент `LSP` по-прежнему предлагался модели и диагностика приходила, а с отключённым плагином и `ENABLE_LSP_TOOL=1` инструмента не было, и в журнале значилось `Total LSP servers loaded: 0`. Включает LSP только плагин.

Совет с флагом остался от недокументированного обходного пути начала 2026 года: в справочнике переменных окружения Claude Code его нет. Скотт Спенс, который в марте 2026 года сам советовал этот флаг, в продолжении [Revisiting LSP in Claude Code от 10 октября 2026 года](https://scottspence.com/posts/revisiting-lsp-in-claude-code) пишет, что убрал флаг и LSP продолжил работать на 2.1.296. Если ваша инструкция начинается с `"env": {"ENABLE_LSP_TOOL": "1"}`, пропустите этот шаг и сразу ставьте сервер и плагин.

## Ошибка «not found in marketplace»: добавьте официальный маркетплейс

Если установка плагина падает с ошибкой про маркетплейс `claude-plugins-official`, значит, официальный маркетплейс в вашей конфигурации ещё не зарегистрирован, и исправляется это одной командой:

```
/plugin marketplace add anthropics/claude-plugins-official
```

Из оболочки то же самое делает `claude plugin marketplace add anthropics/claude-plugins-official`. В ответ должно прийти `Successfully added marketplace: claude-plugins-official`, после чего установка плагина проходит.

Ошибка выглядит по-разному. Документация называет текст `Marketplace "claude-plugins-official" not found`, а на чистой конфигурации Claude Code 2.1.316 2 ноября 2026 года команда `claude plugin install typescript-lsp@claude-plugins-official` вывела другое: `Plugin "typescript-lsp" not found in marketplace "claude-plugins-official". Your local copy may be out of date — try claude plugin marketplace update claude-plugins-official`. Предложенный в ней `marketplace update` тоже упал, с ответом `Marketplace 'claude-plugins-official' not found. Available marketplaces: anthropic-plugin-directory`: обновлять было нечего, потому что маркетплейса не было вовсе. Сработал только `marketplace add`.

Причина описана в официальном [разделе устранения неполадок плагинов Claude Code](https://code.claude.com/docs/en/plugins/troubleshooting): официальный маркетплейс регистрируется при первом запуске интерактивной сессии в терминале. Его ещё нет, если вы пользовались только расширением VS Code; его не будет, если источник запрещён политикой организации или задана `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`, или если прошлая попытка не удалась и Claude Code ждёт повтора. Команды `claude plugin` из оболочки сами его не регистрируют никогда, поэтому ошибка особенно часто встречается в скриптах и CI.

## Как понять, что LSP работает: что именно получает Claude

Надёжный признак один: строка `Found N new diagnostic issues in M files (ctrl+o to expand)` после правки, в которой Claude внёс ошибку. В проверке 2 ноября 2026 года она появилась не под строкой записи файла, как пишет документация, а под следующей строкой инструмента («Ran 1 shell command»): диагностика доставляется асинхронно, поэтому ищите её на шаг ниже.

![Путь диагностики LSP в Claude Code: правка файла, проверка языковым сервером, блок new-diagnostics для модели на следующем ходу и строка Found 1 new diagnostic issue под следующей строкой инструмента](https://blog.laozhang.ai/posts/ru/claude-code-lsp/img/lsp-diagnostics-flow.webp)

Что видит модель, удалось перехватить дословно. Результат инструмента Write ошибок не содержал. Сервер ответил на инициализацию за 69 мс и прислал диагностику примерно через 0,6 секунды после открытия файла, а модель получила её на следующем ходу отдельным системным блоком:

```
<new-diagnostics>The following new diagnostic issues were detected:

checkout.ts:
  ✘ [Line 3:43] Argument of type 'string' is not assignable to parameter of type 'number'. [2345] (typescript)</new-diagnostics>
```

После исправления сервер вернул ноль ошибок, и Claude Code ничего не передал: отдельного сообщения «исправлено» не бывает. Но и отсутствие диагностики сразу после правки ещё не значит, что файл чист: Скотт Спенс описывает, что свежий сервер, который ещё загружает проект, может пропустить ошибку, а о правках через оболочку диагностика не приходит вовсе (подробнее в разделе про grep ниже). Инструмент `LSP` при этом загружается отложенно: после первой записи или первого чтения `.ts`-файла модель получает уведомление, что инструмент доступен через поиск инструментов, а его описание приходит, только когда модель сама его запросит. Отсюда практическое следствие: диагностика работает без участия модели, а навигацию модель должна выбрать сама.

Когда она её выбирает, ответы выглядят так (тот же проект, после прогрева сервера): переход к определению — `Defined in src/price.ts:1:17`, поиск ссылок — `Found 5 references across 3 files`, подсказка — `(alias) priceWithTax(amount: number, rate: number): number`. Для файла, который не обслуживает ни один сервер, приходит `No LSP server available for file type: .md`.

## Установили LSP, но ничего не изменилось: симптом, причина, решение

Сначала посмотрите на вкладку **Errors** в `/plugin`, а если там пусто, запустите `claude --debug`: часть сбоев видна только в журнале, а модель в этих случаях не получает ни диагностики, ни текста ошибки. В проверке 2 ноября 2026 года и при отсутствии бинарника, и при отсутствии `typescript` в проекте модели по-прежнему предлагался инструмент `LSP`, так что сам факт его появления ничего не доказывает.

![Где искать причину, если LSP в Claude Code ничего не изменил: вкладка Errors, журнал claude --debug, ответ установки и статус плагина, с текстом ошибки и решением для каждого случая](https://blog.laozhang.ai/posts/ru/claude-code-lsp/img/lsp-no-change-troubleshooting.webp)

| Симптом | Где видно | Причина | Решение |
| --- | --- | --- | --- |
| Строки диагностики нет никогда | Вкладка **Errors**: `Executable not found in $PATH: "typescript-language-server"`; в журнале `failed to start` | Бинарника нет в `PATH` оболочки, из которой запущен `claude` | Установите сервер, проверьте `which`; если каталог не в `PATH`, начните новую сессию из оболочки, где он есть |
| TypeScript: диагностики нет, хотя сервер установлен | Журнал `claude --debug`: `Could not find a valid TypeScript installation` | В проекте нет пакета `typescript`, сервер выходит при инициализации | `npm install -D typescript` в проекте или глобальная команда из README, которая ставит оба пакета |
| Плагин не ставится | Ответ на `/plugin install` или `claude plugin install` | Официальный маркетплейс не зарегистрирован | `/plugin marketplace add anthropics/claude-plugins-official` (раздел выше) |
| Навигация отвечает ошибкой | Результат вызова: `server is starting` (в запуске 2 ноября 2026 года, где mock отвечал за миллисекунды, быстрее реальной модели) | Вызов пришёл до того, как сервер закончил запуск | Повторить вызов через несколько секунд; на больших проектах окно дольше |
| Первый поиск ссылок находит только определение | `Found 1 reference` при реальных пяти | Сервер TypeScript отвечает по недогруженному проекту | Обход `useSyntaxServer` (следующий раздел) |
| Нет ни диагностики, ни навигации в облаке | Сессия Claude Code в вебе или `claude --cloud` | В облачных сессиях серверы плагинов не запускаются | Работать локально в терминале |
| Плагин стоит, но нет ни инструмента `LSP`, ни диагностики | Вкладка **Installed** в `/plugin` или `claude plugin list`: статус disabled | Отключённый плагин не загружает сервер, и окно рекомендации для него тоже не появится | `/plugin enable typescript-lsp@claude-plugins-official` (из оболочки `claude plugin enable typescript-lsp@claude-plugins-official`), затем новая сессия |
| Ошибки на импорты, которые на самом деле в порядке | Строки диагностики в монорепозитории | Языковой сервер не настроен на этот workspace | На стороне Claude Code чинить нечего; правке такие ошибки не мешают |

Второй случай в проверке воспроизводился именно так: `typescript-language-server` 6.0.2 был в `PATH`, но пакета `typescript` в папке проекта не было, сервер завершился с сообщением `Could not find a valid TypeScript installation`, а при следующей правке Claude Code повторил попытку и снова получил отказ. Для других языков похожая ловушка — сервер, которому нужен JDK, .NET SDK или настроенный проект, поэтому проверяйте требования в README плагина.

Если `/reload-plugins` отвечает `This reload adds the LSP tool` или `This reload removes the LSP tool`, перезагрузка не выполнена: добавление или удаление инструмента сбросило бы кеш промпта, и следующее сообщение перечитало бы весь диалог, поэтому Claude Code ждёт явного `/reload-plugins --force`. Без лишних затрат то же даёт новая сессия. Почему это стоит денег и времени, разобрано в статье [Claude Code cache miss и стоимость токенов: почему один turn внезапно дорогой](https://blog.laozhang.ai/ru/posts/claude-code-cache-miss-token-costs), а чем облачная сессия отличается от локальной — в материале [Есть ли у Claude Code веб-версия: чем отличаются облачный Web, Remote Control и локальная работа](https://blog.laozhang.ai/ru/posts/claude-code-web-interface). Для поиска сломанной конфигурации пригодится и безопасный режим `--safe-mode` (или `CLAUDE_CODE_SAFE_MODE=1`), в котором языковые серверы не загружаются вместе с плагинами; флаг `--bare` для скриптовых запусков с `-p` их тоже пропускает.

## Первый findReferences возвращает одну ссылку: обход useSyntaxServer

Первый поиск ссылок в новой сессии с официальным `typescript-lsp` часто возвращает только само определение, и лечится это одной опцией сервера TypeScript. В проверке 2 ноября 2026 года сессия начиналась с чтения `src/price.ts`, затем модель трижды подряд вызывала поиск ссылок на `priceWithTax`. Во всех трёх сессиях первый ответ был `Found 1 reference: src/price.ts:1:17` при правильных пяти ссылках в трёх файлах; последовательности получились 1, 5, 5, затем 1, 1, 1 и 1, 1, 5.

Скотт Спенс в [Revisiting LSP in Claude Code](https://scottspence.com/posts/revisiting-lsp-in-claude-code) (10 октября 2026 года, Claude Code 2.1.296, проект на SvelteKit) получил неверный первый ответ в 18 сессиях из 19 и объясняет причину: Claude Code спрашивает раньше, чем проект загрузился, а `typescript-language-server` отвечает из облегчённого синтаксического сервера. По его словам, то же «сначала одна ссылка, потом все» встречается и с серверами Python. Обход — выключить синтаксический сервер в конфигурации TypeScript:

```json
{
  "typescript": {
    "command": "typescript-language-server",
    "args": ["--stdio"],
    "extensionToLanguage": { ".ts": "typescript", ".tsx": "typescriptreact", ".js": "javascript", ".jsx": "javascriptreact", ".mts": "typescript", ".cts": "typescript", ".mjs": "javascript", ".cjs": "javascript" },
    "initializationOptions": { "tsserver": { "useSyntaxServer": "never" } }
  }
}
```

С этой опцией у Скотта первый вызов был верным в 12 сессиях из 12, первый ответ стал медленнее (около 2 секунд вместо 0,5 на его проекте), а память после загрузки снизилась примерно с 935 МБ в 4 процессах до 725 МБ в 3. Вписать опцию можно двумя путями. Первый — добавить блок `initializationOptions` к записи `typescript` в разделе `lspServers` файла `~/.claude/plugins/marketplaces/claude-plugins-official/.claude-plugin/marketplace.json`; это быстро, но обновление маркетплейса может перезаписать файл. Второй — сделать собственный плагин с конфигурацией выше в файле `.lsp.json`, а официальный `typescript-lsp` отключить, иначе два плагина будут обслуживать одни и те же файлы. Второй путь запускался 2 ноября 2026 года: локальный плагин с этим `.lsp.json`, загруженный через `--plugin-dir` при отключённом официальном, в двух сессиях из двух вернул 5, 5, 5 ссылок. Проект был из трёх файлов, так что сколько займёт первое ожидание на большом репозитории, эта проверка не показывает.

## Окно «LSP plugin recommendation»: что выбрать

Окно с заголовком **LSP plugin recommendation** предлагает поставить плагин, когда бинарник языкового сервера уже есть в `PATH`, а плагина для него нет, и если вы и так собирались подключить LSP, выбирайте **Yes, install**. Окно появляется после того, как Claude отредактирует файл с подходящим расширением, не чаще одного раза за сессию, с приоритетом официального маркетплейса и никогда в облачной сессии. 2 ноября 2026 года окно воспроизвелось в терминале при удалённом `typescript-lsp` и установленном `typescript-language-server` сразу после записи `.ts`-файла; при установленном, но отключённом плагине оно не появилось.

| Вариант | Что происходит |
| --- | --- |
| **Yes, install** | Плагин ставится для вашей учётной записи, выводится `typescript-lsp installed · restart to apply`; сервер заработает в новой сессии |
| **No, not now** (или Esc) | Окно закрывается, в одной из следующих сессий его предложат снова |
| **Never for this plugin** | Этот плагин больше не предлагается, рекомендации для других языков остаются |
| **Disable all LSP recommendations** | Рекомендации отключаются для всех языков |

Если ничего не выбрать, окно закроется само через 30 секунд и это засчитается как пропуск; счёт идёт между сессиями, и после пяти пропусков рекомендации отключаются так же, как при последнем варианте. Чтобы вернуть их, удалите из `~/.claude.json` ключи `lspRecommendationDisabled` и `lspRecommendationIgnoredCount`, а чтобы снова предложить один плагин, уберите его `name@marketplace` из списка `lspRecommendationNeverPlugins`.

## Язык без официального плагина: свой .lsp.json

Для языка, которого нет в таблице, языковой сервер подключается собственным плагином с файлом `.lsp.json`, где указаны команда сервера и расширения файлов. Порядок такой:

1. Установите языковой сервер и проверьте, что он в `PATH`.
2. Создайте папку плагина с манифестом `.claude-plugin/plugin.json` (обязательно только поле `name`; `version` и `description` можно добавить по желанию) и файлом `.lsp.json` в корне плагина.
3. Запустите Claude Code с `--plugin-dir путь/к/плагину` и проверьте в `claude --debug`, что сервер загрузился, или опубликуйте плагин в своём маркетплейсе.

Пример для YAML, на котором 2 ноября 2026 года проверялась загрузка конфигурации:

```json
{
  "yaml": {
    "command": "yaml-language-server",
    "args": ["--stdio"],
    "extensionToLanguage": { ".yaml": "yaml", ".yml": "yaml" }
  }
}
```

Обязательных полей два: `command` (без пробелов; аргументы идут в `args`) и `extensionToLanguage`, где каждый ключ начинается с точки. Необязательные описаны в [справочнике плагинов Claude Code, раздел lspServers](https://code.claude.com/docs/en/plugins-reference#lspservers): `env`, `initializationOptions`, `settings`, `workspaceFolder`, `startupTimeout`, `requestTimeout` (по умолчанию 60 000 мс, с версии 2.1.288), `restartOnCrash`, `maxRestarts`, `diagnostics` и другие. Объект строгий: любой лишний ключ делает конфигурацию недействительной.

Ловушка в том, что `claude plugin validate` содержимое `.lsp.json` не проверяет. В проверке он ответил «Validation passed with warnings» и для правильного файла, и для трёх сломанных: с лишним ключом `extensions`, с пробелом в `command` и с расширением без точки. Ошибка проявилась только при загрузке через `--plugin-dir`, и только в журнале: `LSP config validation failed for .lsp.json in plugin yaml-lsp-local` с кодом `unrecognized_keys`, после чего сервер просто не загрузился. Правильный файл дал `Loaded 1 LSP server(s) from plugin: yaml-lsp-local`. Сам `yaml-language-server` при этом не ставился, так что проверялась только загрузка конфигурации. Готовые LSP-плагины есть и в сторонних маркетплейсах; что смотреть перед установкой чужого плагина, разобрано в статье [Моды в Claude Code: установка, проверка доступа и первый мод](https://blog.laozhang.ai/ru/posts/claude-code-mods).

## Сколько памяти занимает языковой сервер и когда выключить плагин

Языковой сервер — отдельный процесс, и на больших проектах он заметно расходует память: по документации Claude Code, `rust-analyzer` и `pyright` индексируют весь проект, и память растёт, пока индексация идёт. Если машина начинает тормозить, выключите плагин командой `/plugin disable rust-analyzer-lsp` (или с именем своего плагина): Claude вернётся к встроенному поиску по тексту, а диагностику вы будете получать от сборки и тестов, как раньше.

Для ориентира по TypeScript: у Скотта Спенса сервер на небольшом проекте занимал около 935 МБ в 4 процессах, а с выключенным синтаксическим сервером — около 725 МБ в 3. В Linux и WSL с заданным `CLAUDE_CODE_TOOL_MEMORY_LIMIT` Claude Code может учитывать языковые серверы в общем лимите памяти инструментов; исключить их можно переменной `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE=lsp` (Claude Code 2.1.246 и новее).

## Claude Code в VS Code: нужен ли плагин LSP

Если вы работаете в расширении VS Code, Claude уже может читать ошибки из панели Problems, но это другой механизм, и плагин его не заменяет и не дублирует. В панели чата Claude читает Problems через встроенный сервер `claude-vscode` (инструмент `mcp__claude-vscode__getDiagnostics`, с версии 2.1.285), а CLI, подключённый к VS Code, — через `mcp__ide__getDiagnostics`. Это ошибки языкового сервера самого редактора, и Claude читает их, только когда сам решит спросить.

Плагин даёт то, чего нет в этой схеме: диагностику, которая приходит после каждой правки без запроса, и инструмент навигации `LSP`. Если вам нужны именно они, плагин придётся поставить и при работе в VS Code, через экран плагинов расширения; если вы правите код в основном из терминала, плагин и есть основной способ.

## Будет ли Claude всё равно искать через grep

Да, часто будет: установленный плагин делает навигацию доступной, но не обязательной, и модель нередко выбирает привычный поиск по тексту. Скотт Спенс посчитал это по своей истории: примерно за 650 сессий с конца февраля по апрель 2026 года Claude Code сделал 32 вызова LSP в 15 сессиях. В его тесте от 10 октября 2026 года с явным правилом в `CLAUDE.md` Claude брал LSP во всех 12 запросах про символы, без правила — примерно в половине и ни разу при рефакторинге. Но в сравнении из 54 сессий (только grep, LSP вместе с grep, только LSP) поиск через grep ни разу не ошибся, а для поиска мест использования оказался самым быстрым и дешёвым из трёх вариантов; три одноимённые функции `get_post_tags` ему не помешали. Поиск ссылок через LSP возвращает только файл, строку и столбец, поэтому модели приходилось дочитывать по 3–6 файлов на ссылку. Сильной стороной LSP у Скотта оказалась подсказка типов (hover).

Поэтому Скотт отказался от своего мартовского правила «LSP вместо grep» и переписал `CLAUDE.md`: определения и места использования искать через grep, hover из LSP брать, когда важен точный тип, и не считать результат поиска ссылок полным списком. Его проект небольшой, и на огромной кодовой базе с тысячами совпадений картина может быть другой, но заставлять Claude пользоваться навигацией ради неё самой его данные не советуют. Незаменимой остаётся диагностика после правок: её grep не даёт. И у неё есть свои пределы, которые Скотт тоже описал: ошибки приходят на следующем ходу (если правка была последним действием, ошибка может так и остаться незамеченной), а о правках, сделанных через оболочку, диагностика не приходит; в открытом issue Claude Code то же описано для `git checkout` и форматтеров. Отсюда последнее правило из его `CLAUDE.md` — перед тем как сообщить о готовности, запускать проверку типов. Где такие правила лучше держать — в `CLAUDE.md`, хуке или скилле, — разобрано в статье [Claude Code: чем отличаются hooks, skills и слэш-команды](https://blog.laozhang.ai/ru/posts/claude-code-hooks-slash-commands-skills). LSP и MCP при этом не конкуренты: LSP-плагин подключает языковой сервер, а MCP-серверы дают Claude внешние инструменты и данные; с чего начать со вторыми, есть в подборке [Лучшие MCP для Claude Code, которые стоит подключать первыми в 2026 году](https://blog.laozhang.ai/ru/posts/claude-code-best-mcp-servers).

## Claude Code LSP: другие вопросы

**Работает ли LSP в Claude Code на Windows?** Да. Версия 2.1.74 от 12 марта 2026 года исправила ошибку, из-за которой языковые серверы на Windows не работали из-за неверно сформированных адресов файлов. Проверять, виден ли бинарник, в PowerShell нужно командой `Get-Command`, а для C и C++ в README плагина `clangd-lsp` указан `winget install LLVM.LLVM`.

**Сколько ждёт Claude Code ответа языкового сервера?** С версии 2.1.288 (2 октября 2026 года) запрос к серверу прерывается через 60 секунд; значение меняется полем `requestTimeout` в конфигурации. Для медленно стартующих серверов есть `startupTimeout`: в официальных плагинах для Java и Kotlin он выставлен на 120 000 мс.

**Можно ли поставить плагин LSP только для одного проекта?** Да, при установке через `/plugin install` выберите область «Install for you, in this repo only» (запись попадёт в `.claude/settings.local.json`) или «Install for all collaborators on this repository» (запись в `.claude/settings.json`, который коммитится; каждому участнику всё равно нужно один раз выполнить `claude plugin install typescript-lsp@claude-plugins-official --scope project` и поставить сам языковой сервер). Окно рекомендации таких вариантов не даёт и ставит плагин для учётной записи, то есть во все проекты. Подробности — на официальной странице [Install and manage plugins в документации Claude Code](https://code.claude.com/docs/en/plugins/install).

## Источники

Внешние страницы, на которые ссылается это руководство, в порядке упоминания. Последнее обновление: 2026-11-02.

- [Code intelligence plugins в документации Claude Code](https://code.claude.com/docs/ru/plugins/code-intelligence) (code.claude.com)
- [Revisiting LSP in Claude Code от 10 октября 2026 года](https://scottspence.com/posts/revisiting-lsp-in-claude-code) (scottspence.com)
- [разделе устранения неполадок плагинов Claude Code](https://code.claude.com/docs/en/plugins/troubleshooting) (code.claude.com)
- [справочнике плагинов Claude Code, раздел lspServers](https://code.claude.com/docs/en/plugins-reference) (code.claude.com)
- [Install and manage plugins в документации Claude Code](https://code.claude.com/docs/en/plugins/install) (code.claude.com)
