译:Claude Code 的 LSP 支持
原文: https://azukiazusa.dev/blog/claude-code-lsp-support
作者: azukiazusa1
译者: Gemini 3 Pro High
Claude Code 从版本 2.0.74 开始增加了 LSP(语言服务器协议)支持。通过 LSP 支持,Claude Code 可以对代码库执行符号定义查找、引用查找、获取悬停信息等操作。本文将介绍 Claude Code 的 LSP 支持概要及使用方法。
目录
编码代理通过掌握 LSP(语言服务器协议),可以更高效地执行任务。与通过字符串搜索整个代码库不同,通过 LSP 可以访问代码结构和符号信息,从而能够迅速获取和编辑准确信息,大幅节省 Token 和时间。对于尝试过为编码代理提供语义代码搜索和编辑工具 Serena 的人来说,这尤其容易理解。
Claude Code 从 v2.0.74 开始增加了 LSP 支持。LSP 支持作为 Claude Code 插件功能的一部分提供。启用 LSP 功能后,Claude Code 可以对代码库执行以下操作:
- goToDefinition: 查找符号定义的位置
- findReferences: 查找符号的所有引用
- hover: 获取符号的悬停信息(文档、类型信息)
- documentSymbol: 获取文档内的所有符号(函数、类、变量)
- workspaceSymbol: 在整个工作区搜索符号
- goToImplementation: 查找接口或抽象方法的实现
- prepareCallHierarchy: 获取指定位置的调用层次结构项(函数/方法)
- incomingCalls: 查找调用指定位置函数的所有函数/方法
- outgoingCalls: 查找指定位置函数调用的所有函数/方法
本文将介绍 Claude Code 的 LSP 支持概要及使用方法。
启用 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
使用 Space 键选择要使用的语言的 LSP 插件,然后按 i 键开始安装。

已安装的插件可以在“Installed”选项卡中确认。

此外,还需要安装对应 LSP 插件语言的 LSP 服务器。例如,如果想使用 TypeScript 的 LSP 功能,请安装 typescript-language-server。
npm install -g typescript-language-server typescript
实际上,我尝试启用了 TypeScript LSP 插件并在 TypeScript 代码库中进行了测试,但目前似乎无法正常工作。LSP 服务器插件似乎需要一个名为 .lsp.json 的配置文件,但目前似乎只提供了 README.md。让我们期待未来的更新。
使用自定义 LSP 服务器
如果想使用 Claude Code 官方市场不支持的语言的 LSP 服务器,可以创建自定义插件来提供 LSP 插件。要创建插件,请创建一个新目录,并创建一个 /.claude-plugin 子目录。
mkdir -p my-lsp-plugin/.claude-plugin
创建 .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 文件,并按如下方式编写。这是一个使用 TypeScript LSP 服务器的示例。
{
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"extensionToLanguage": {
".ts": "typescript",
".tsx": "typescript"
}
}
}
要测试创建的插件,请使用 --plugin-dir 选项启动 Claude Code。
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,并将环境变量 ENABLE_LSP_TOOL 设置为 true 启动。
ENABLE_LSP_TOOL=true npx @anthropic-ai/claude-code@2.0.67 --plugin-dir ./my-lsp-plugin
当 Claude Code 使用 LSP 功能时,会使用 LSP(…) 工具。这里为了重命名 <Button> 组件,使用 findReferences 命令来搜索定义 Button 符号的位置。

总结
- Claude Code 从 v2.0.74 开始增加了 LSP 支持
- 要启用 LSP 功能,请从官方市场安装对应语言的 LSP 插件
- 要使用自定义 LSP 服务器,请创建插件并添加
.lsp.json文件 - LSP 功能在 v2.0.74 中存在与插件冲突的问题,可以通过使用 v2.0.67 并将环境变量
ENABLE_LSP_TOOL设置为true启动来规避