Команда 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, запустите 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
Если вы хотите использовать 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-маркетплейс.
Чтобы обойти эту проблему и протестировать LSP, понизьте версию Claude Code до v2.0.67 и запустите его с установленной в true переменной окружения ENABLE_LSP_TOOL.
ENABLE_LSP_TOOL=true npx @anthropic-ai/[email protected] --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 for Devs» — канала, где мы рассказываем про AI-ассистентов, плагины для IDE, делимся практическими кейсами и свежими новостями из мира ИИ. Подписывайтесь, чтобы быть в курсе и ничего не упустить!
Источник


