Команда AI for Devs подготовила перевод статьи о поддержке LSP в Claude Code. Начиная с версии 2.0.74 агент получил доступ к семантике кода: переходы к определениям, поиск ссылок и иерархия вызовов. Это заметно ускоряет работу с большими кодовыми базами, но на практике функциональность пока сыровата и требует обходных решений. Разбираемся, как включить LSP, какие языки поддерживаются и с какими ограничениями придётся столкнуться.


Начиная с версии 2.0.74 в Claude Code была добавлена поддержка LSP (Language Server Protocol). Благодаря LSP Claude Code получает возможность выполнять над кодовой базой такие операции, как переход к определению символа, поиск ссылок, получение информации при наведении и другие. В этой статье представлен обзор поддержки LSP в Claude Code и описаны способы её использования.

Когда агент для кодинга начинает работать с LSP (Language Server Protocol), он может выполнять задачи значительно эффективнее. Вместо поиска по всей кодовой базе с помощью строковых запросов агент получает доступ к структуре кода и информации о символах через LSP, что позволяет быстрее и точнее находить и редактировать нужные места, существенно экономя токены и время. Это особенно легко понять тем, кто уже пробовал Serena — инструмент, предоставляющий агентам семантические возможности поиска и редактирования кода.

Начиная с версии v2.0.74 в Claude Code была добавлена поддержка LSP. Эта функциональность предоставляется как часть экосистемы плагинов Claude Code. После включения LSP Claude Code может выполнять над кодовой базой следующие операции:

  • goToDefinition: поиск места, где определён символ

  • findReferences: поиск всех ссылок на символ

  • hover: получение информации при наведении на символ (документация, типы)

  • documentSymbol: получение всех символов в документе (функции, классы, переменные)

  • workspaceSymbol: поиск символов по всему рабочему пространству

  • goToImplementation: поиск реализаций интерфейсов или абстрактных методов

  • prepareCallHierarchy: получение элемента иерархии вызовов (функции/метода) в указанной позиции

  • incomingCalls: поиск всех функций/методов, которые вызывают функцию в указанной позиции

  • outgoingCalls: поиск всех функций/методов, которые вызываются из функции в указанной позиции

Включение функций LSP

Чтобы включить функции LSP, запустите Claude Code и выполните команду /plugin, после чего в интерактивном режиме активируйте плагин. Для установки плагина необходимо добавить маркетплейс, в котором он распространяется. LSP-плагины доступны в официальном маркетплейсе Claude Code (claude-plugins-official). Официальный маркетплейс должен быть доступен по умолчанию без дополнительной настройки. Убедитесь, что он включён на вкладке «Marketplaces».

Далее перейдите на вкладку «Discover» — там будет показан список доступных плагинов. Введите в строке поиска «LSP», и отобразится список LSP-плагинов, сгруппированных по языкам. В настоящий момент доступны следующие языки:

  • C/C++

  • C#

  • Go

  • Java

  • Lua

  • PHP

  • Python

  • Rust

  • Swift

Выберите LSP-плагин для нужного языка клавишей Space и нажмите клавишу i, чтобы начать установку.

Установленные плагины можно посмотреть на вкладке «Installed».

Кроме того, необходимо установить LSP-сервер, соответствующий языку плагина. Например, чтобы использовать LSP для TypeScript, нужно установить typescript-language-server.

npm install -g typescript-language-server typescript

Я попробовал включить TypeScript LSP-плагин и использовать его на кодовой базе TypeScript, однако на текущий момент он, похоже, работает некорректно. Судя по всему, плагину LSP-сервера требуется файл конфигурации .lsp.json, но сейчас предоставляется только README.md. Остаётся надеяться на будущие обновления.

Использование собственного LSP-сервера

Если вы хотите использовать LSP-сервер для языка, который не поддерживается официальным маркетплейсом Claude Code, можно создать собственный плагин и предоставить через него LSP-функциональность. Для этого создайте новый каталог и в нём подкаталог /.claude-plugin.

mkdir -p my-lsp-plugin/.claude-plugin

Создайте файл .claude-plugin/plugin.json и заполните его следующим образом:

.claude-plugin/plugin.json
{
  "name": "my-typescript-lsp-plugin",
  "description": "TypeScript/JavaScript language server for Claude Code, providing code intelligence features like go-to-definition, find references, and error checking.",
  "version": "1.0.0",
  "author": {
    "name": "Your Name"
  }
}

Чтобы добавить поддержку LSP в плагин, создайте в корне каталога плагина файл .lsp.json и опишите его, например, так — для использования LSP-сервера TypeScript:

.lsp.json
{
  "typescript": {
    "command": "typescript-language-server",
    "args": ["--stdio"],
    "extensionToLanguage": {
      ".ts": "typescript",
      ".tsx": "typescript"
    }
  }
}

Для тестирования созданного плагина запустите Claude Code с опцией --plugin-dir.

claude --plugin-dir ./my-lsp-plugin

Выполните команду /plugin и убедитесь, что плагин корректно распознаётся. Плагины, указанные через --plugin-dir, распознаются как inline-маркетплейс.

В версии v2.0.74 существует проблема конфликта между плагинами и LSP-сервером, из-за чего функциональность может работать некорректно.
https://github.com/anthropics/claude-code/issues/13952

Чтобы обойти эту проблему и протестировать LSP, понизьте версию Claude Code до v2.0.67 и запустите его с установленной в true переменной окружения ENABLE_LSP_TOOL.

ENABLE_LSP_TOOL=true npx @anthropic-ai/claude-code@2.0.67 --plugin-dir ./my-lsp-plugin

Когда Claude Code использует LSP, применяется инструмент LSP(...). В приведённом примере для переименования компонента <Button> используется команда findReferences, чтобы найти место, где определён символ Button.

Итоги

  • Начиная с версии v2.0.74 в Claude Code добавлена поддержка LSP

  • Для включения LSP необходимо установить LSP-плагин нужного языка из официального маркетплейса

  • Для использования собственного LSP-сервера нужно создать плагин и добавить файл .lsp.json

  • В версии v2.0.74 есть проблема конфликта плагинов с LSP, поэтому для обхода рекомендуется использовать v2.0.67 и запускать Claude Code с переменной окружения ENABLE_LSP_TOOL, установленной в true

Русскоязычное сообщество про AI в разработке

Друзья! Эту статью подготовила команда ТГК «AI for Devs» — канала, где мы рассказываем про AI-ассистентов, плагины для IDE, делимся практическими кейсами и свежими новостями из мира ИИ. Подписывайтесь, чтобы быть в курсе и ничего не упустить!