名称: setup-lsp 描述: 为当前项目设置LSP服务器 - 自动检测语言,研究推荐,配置.lsp.json 允许工具: Read, Glob, Grep, Bash, Write, Edit, Skill, AskUserQuestion, mcp__perplexity__搜索, mcp__context7__查询文档 参数提示: “[语言|–auto|–check|–research <语言>]”
设置LSP命令
为Claude Code项目交互式设置LSP服务器。
初始化
- 加载
lsp-management技能以获取服务器推荐和配置模式。 - 检查项目根目录中是否存在现有的
.lsp.json文件。 - 解析命令参数以确定模式。
参数解析
| 参数 | 模式 | 描述 |
|---|---|---|
| (无) | 交互式 | 扫描项目,询问用户要配置什么 |
--auto |
自动 | 自动检测并配置,无需提示 |
--check |
检查 | 报告已安装的LSP和可用更新 |
--research <语言> |
研究 | 查询MCP以获取某个语言的最新推荐 |
<语言> |
单语言 | 仅配置特定语言的LSP |
模式:交互式(默认)
当未提供参数时:
步骤1:扫描项目
扫描文件扩展名以检测使用的语言:
# 查找所有独特的文件扩展名
find . -type f -name "*.*" | sed 's/.*\.//' | sort -u
或使用Glob查找特定语言文件:
**/*.py- Python**/*.ts,**/*.tsx,**/*.js,**/*.jsx- TypeScript/JavaScript**/*.go- Go**/*.rs- Rust**/*.cs- C#**/*.c,**/*.cpp,**/*.h- C/C++
步骤2:呈现发现
使用AskUserQuestion让用户选择:
"我检测到您的项目中使用以下语言:Python, TypeScript, C#。您想做什么?"
选项:
1. "配置所有检测到的语言(推荐)" - 为所有语言设置LSP
2. "选择特定语言进行配置" - 选择哪些语言
3. "先研究最新推荐" - 在配置前查询MCP
4. "检查现有配置" - 查看当前的.lsp.json
步骤3:配置选定语言
对于每种要配置的语言:
- 从
lsp-management技能加载服务器推荐 - 检查服务器是否已安装(运行
<命令> --version) - 如果未安装,显示技能中的安装命令
- 生成
.lsp.json条目
步骤4:生成配置
创建或更新 .lsp.json 并添加生成的条目。
如果 .lsp.json 已存在,使用AskUserQuestion:
".lsp.json 已存在。我应该如何处理?"
选项:
1. "与现有配置合并(推荐)" - 添加新条目,保留现有
2. "替换现有配置" - 完全覆盖
3. "显示将更改的内容" - 差异预览
步骤5:验证
配置后:
- 显示最终的
.lsp.json内容 - 建议运行
/audit-lsp进行验证 - 注意可能需要重启Claude Code以获取更改
模式:自动(–auto)
当提供 --auto 标志时:
- 扫描项目中的语言(同交互式步骤1)
- 对于每种检测到的语言:
- 使用技能推荐的服务器
- 检查是否已安装
- 如果未安装,警告但继续
- 生成/合并
.lsp.json - 报告结果
在此模式下不使用AskUserQuestion提示。
模式:检查(–check)
当提供 --check 标志时:
- 读取现有的
.lsp.json - 对于每个配置的服务器:
- 检查命令是否可用
- 获取当前版本
- 查询最新版本(如果可行)
- 报告状态表:
| 服务器 | 已安装 | 版本 | 状态 |
| --- | --- | --- | --- |
| pyright | ✓ | 1.1.350 | 最新 |
| typescript-language-server | ✓ | 4.3.0 | 有更新可用 (4.4.0) |
| csharp-ls | ✗ | - | 未安装 |
模式:研究(–research <语言>)
当提供 --research <语言> 时:
-
查询MCP服务器以获取最新推荐:
mcp__perplexity__搜索: "最佳 <语言> 语言服务器 2026 LSP" mcp__context7__查询文档: "<语言> LSP 服务器" -
与技能推荐进行比较
-
向用户呈现发现
-
询问是否要继续配置
模式:单语言
当提供语言名称时(例如,/setup-lsp python):
- 在技能的服务器数据库中查找语言
- 检查服务器是否已安装
- 如果未安装,提供安装命令
- 仅为该语言生成/更新
.lsp.json条目
服务器安装检测
检查服务器是否已安装:
# 尝试使用版本标志运行
<命令> --version 2>/dev/null && echo "已安装" || echo "未安装"
常见命令:
| 服务器 | 检查命令 |
|---|---|
| pyright | pyright-langserver --version |
| typescript-language-server | typescript-language-server --version |
| gopls | gopls version |
| rust-analyzer | rust-analyzer --version |
| csharp-ls | csharp-ls --version |
| clangd | clangd --version |
示例输出
交互式会话
用户: /setup-lsp
Claude: 正在扫描项目语言...
发现: Python (.py), TypeScript (.ts, .tsx), JSON (.json)
我检测到Python、TypeScript和JSON文件。您想做什么?
[用户选择“配置所有检测到的语言”]
检查服务器安装...
✓ pyright-langserver 已安装 (1.1.350)
✓ typescript-language-server 已安装 (4.3.0)
✓ vscode-json-language-server 已安装 (1.3.4)
生成的 .lsp.json:
{
"pyright": { ... },
"typescript": { ... },
"json": { ... }
}
配置完成!运行 /audit-lsp 进行验证。
自动模式
用户: /setup-lsp --auto
Claude: 自动检测语言并配置LSP...
检测到: Python, TypeScript
已配置: pyright, typescript-language-server
创建: .lsp.json
完成。重启Claude Code以激活LSP服务器。
研究模式
用户: /setup-lsp --research rust
Claude: 正在研究Rust LSP服务器...
[查询MCP服务器]
当前推荐: rust-analyzer
- 官方Rust项目
- 全面功能
- 活跃开发
替代方案: 无 (rust-analyzer是事实标准)
您想让我为您的项目配置rust-analyzer吗?
错误处理
未检测到语言
“我无法在此项目中检测到任何编程语言。
您想手动指定要配置的语言吗?”
服务器未安装
“pyright-langserver 未安装。使用以下命令安装:
npm install -g pyright
您想让我继续配置吗?
(LSP在服务器安装前将无法工作)”
无效的 .lsp.json
“现有的 .lsp.json 有语法错误。
您想让我:
1. 修复语法并继续
2. 备份并创建新配置
3. 显示错误”
项目配置检测
关键: .lsp.json 告诉Claude Code如何启动LSP服务器,但项目配置文件告诉LSP服务器如何分析代码。
检测语言后,检查所需项目级配置:
| 语言 | 所需项目配置 | 检查方法 |
|---|---|---|
| Python | pyrightconfig.json 或 [tool.pyright] 在 pyproject.toml 中 |
Glob查找文件,解析TOML部分 |
| TypeScript/JavaScript | tsconfig.json |
Glob查找文件 |
| C# | *.sln 或 *.csproj |
Glob查找解决方案/项目文件 |
| Go | go.mod |
Glob查找文件 |
| Rust | Cargo.toml |
Glob查找文件 |
步骤:项目配置验证
语言检测后、生成 .lsp.json 前:
- 对于每种检测到的语言,检查项目配置是否存在
- 如果缺失,报告:“检测到Python但未找到
pyrightconfig.json” - 询问用户:“您想让我生成项目配置以获得完整的LSP支持吗?”
步骤:项目配置生成
当项目配置缺失时:
-
查询MCP以获取最新最佳实践:
mcp__perplexity__搜索: "pyrightconfig.json 最佳实践 2026 typeCheckingMode" mcp__perplexity__搜索: "tsconfig.json 2026 NodeNext strict ES2024" mcp__context7__查询文档: 查询 /microsoft/pyright 或 /websites/typescriptlang -
基于项目结构和MCP研究生成配置
-
向用户呈现并解释关键设置
-
在写入文件前请求确认
-
将文件写入项目根目录
MCP验证的项目配置模板
在生成前查询MCP服务器以获取当前最佳实践。以下是基线模板:
Python (pyrightconfig.json)
{
"include": ["src", "plugins"],
"exclude": ["**/node_modules", "**/__pycache__", "**/.venv"],
"venvPath": ".",
"venv": ".venv",
"typeCheckingMode": "standard",
"pythonVersion": "3.13",
"pythonPlatform": "All"
}
查询MCP的关键设置:
typeCheckingMode: “off” | “basic” | “standard” | “strict” | “all”pythonVersion: 检查当前稳定版本 (3.13/3.14)
TypeScript (tsconfig.json)
{
"$schema": "https://json.schemastore.org/tsconfig",
"compilerOptions": {
"target": "ES2022",
"lib": ["ES2024"],
"module": "NodeNext",
"moduleResolution": "NodeNext",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules"]
}
查询MCP的关键设置:
module/moduleResolution: 现代选项如 “NodeNext”target/lib: 当前ES版本
C# (.sln 用于根检测)
C# LSP服务器 (csharp-ls) 需要 .sln 或 .csproj 文件进行根检测。如果不存在:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
查询MCP的要求:
- .NET SDK 版本 (当前10.0 LTS)
- csharp-ls 版本要求
语义功能故障排除
如果诊断工作但悬停/转到定义/文档符号不工作:
- 检查项目配置是否存在 - LSP服务器需要项目配置以实现语义功能
- 验证 ENABLE_LSP_TOOL=1 - Claude Code LSP所需的环境变量
- 重启Claude Code - 配置更改后LSP服务器可能需要重新索引
- 检查服务器日志 - 查找初始化错误
重要注意事项
- 此命令在项目根目录创建/修改
.lsp.json - 项目配置 (pyrightconfig.json, tsconfig.json 等) 启用完整的语义功能
- 必须重启Claude Code以获取新的LSP配置
- 设置后使用
/audit-lsp验证配置 lsp-management技能提供所有服务器推荐- 设置
ENABLE_LSP_TOOL=1环境变量以访问LSP工具