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

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.
Путаница почти всегда начинается с того, что эти две части считают одной. Языковой сервер — это отдельная программа (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 не нужен.
-
Установите языковой сервер своего языка командой из таблицы в следующем разделе. Затем убедитесь, что он виден в той оболочке, из которой вы запускаете
claude:which typescript-language-serverв macOS и Linux илиGet-Command typescript-language-serverв PowerShell. -
Запустите
claudeи введите в сессии команду установки плагина, подставив имя для своего языка:/plugin install typescript-lsp@claude-plugins-officialВ расширении VS Code и настольном приложении вместо этой команды используется их собственный экран плагинов. Если установка завершилась ошибкой про маркетплейс
claude-plugins-official, сначала добавьте маркетплейс (раздел об этой ошибке ниже). -
В сессии
/plugin installоткрывает карточку плагина, где нужно выбрать область установки: для себя во всех проектах, для всех участников репозитория или только для себя в этом репозитории. Сообщение после установки говорит, активен ли плагин сразу или нужен/reload-plugins. Надёжнее всего начать новую сессию: обычный/reload-plugins, который добавил бы инструментLSP, ничего не перезагружает, а только предупреждает и просит/reload-plugins --force. -
Попросите Claude внести в файл этого языка ошибку типов, а потом исправить её. Сервер запускается не позже первой правки файла с подходящим расширением, поэтому до правки проверять нечего.
-
Найдите в диалоге строку
Found N new diagnostic issues in M files (ctrl+o to expand). Есть строка — сервер работает, Ctrl+O раскрывает сами ошибки. Нет строки — откройте/plugin, вкладку Errors, и переходите к таблице неполадок ниже.
Окно /plugin install, вкладки установленных плагинов и области установки подробнее разобраны в статье Лучшие скиллы для Claude Code: что выбрать первым и как установить.
Какой плагин и языковой сервер нужен для вашего языка
В официальном маркетплейсе 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 года пишет, что убрал флаг и 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: официальный маркетплейс регистрируется при первом запуске интерактивной сессии в терминале. Его ещё нет, если вы пользовались только расширением 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»): диагностика доставляется асинхронно, поэтому ищите её на шаг ниже.

Что видит модель, удалось перехватить дословно. Результат инструмента 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, так что сам факт его появления ничего не доказывает.

| Симптом | Где видно | Причина | Решение |
|---|---|---|---|
| Строки диагностики нет никогда | Вкладка 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 внезапно дорогой, а чем облачная сессия отличается от локальной — в материале Есть ли у Claude Code веб-версия: чем отличаются облачный Web, Remote Control и локальная работа. Для поиска сломанной конфигурации пригодится и безопасный режим --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 (10 октября 2026 года, Claude Code 2.1.296, проект на SvelteKit) получил неверный первый ответ в 18 сессиях из 19 и объясняет причину: Claude Code спрашивает раньше, чем проект загрузился, а typescript-language-server отвечает из облегчённого синтаксического сервера. По его словам, то же «сначала одна ссылка, потом все» встречается и с серверами Python. Обход — выключить синтаксический сервер в конфигурации TypeScript:
{
"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, где указаны команда сервера и расширения файлов. Порядок такой:
- Установите языковой сервер и проверьте, что он в
PATH. - Создайте папку плагина с манифестом
.claude-plugin/plugin.json(обязательно только полеname;versionиdescriptionможно добавить по желанию) и файлом.lsp.jsonв корне плагина. - Запустите Claude Code с
--plugin-dir путь/к/плагинуи проверьте вclaude --debug, что сервер загрузился, или опубликуйте плагин в своём маркетплейсе.
Пример для YAML, на котором 2 ноября 2026 года проверялась загрузка конфигурации:
{
"yaml": {
"command": "yaml-language-server",
"args": ["--stdio"],
"extensionToLanguage": { ".yaml": "yaml", ".yml": "yaml" }
}
}Обязательных полей два: command (без пробелов; аргументы идут в args) и extensionToLanguage, где каждый ключ начинается с точки. Необязательные описаны в справочнике плагинов Claude Code, раздел 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: установка, проверка доступа и первый мод.
Сколько памяти занимает языковой сервер и когда выключить плагин
Языковой сервер — отдельный процесс, и на больших проектах он заметно расходует память: по документации 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 и слэш-команды. LSP и MCP при этом не конкуренты: LSP-плагин подключает языковой сервер, а MCP-серверы дают Claude внешние инструменты и данные; с чего начать со вторыми, есть в подборке Лучшие MCP для Claude Code, которые стоит подключать первыми в 2026 году.
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.
Источники5
Внешние страницы, на которые ссылается это руководство, в порядке упоминания. Последнее обновление: 2 нояб. 2026 г..
Источники5
Внешние страницы, на которые ссылается это руководство, в порядке упоминания. Последнее обновление: 2 нояб. 2026 г..
- 1.Code intelligence plugins в документации Claude Codecode.claude.com/docs/ru/plugins/code-intelligence
- 2.Revisiting LSP in Claude Code от 10 октября 2026 годаscottspence.com/posts/revisiting-lsp-in-claude-code
- 3.разделе устранения неполадок плагинов Claude Codecode.claude.com/docs/en/plugins/troubleshooting
- 4.справочнике плагинов Claude Code, раздел lspServerscode.claude.com/docs/en/plugins-reference
- 5.Install and manage plugins в документации Claude Codecode.claude.com/docs/en/plugins/install





