使用说明
LSP-MCP服务器——LLM的通用智能感知
自动连接右侧的MCP服务器 语言服务器 (cland、pyright、tsserver、gopls、生锈分析器……)并为Claude Code提供完整的智能感知 任何语言,包括 流处理器:错误诊断、补全、类型信息和代码导航。
支持的语言
| 语言 | LSP服务器 | 扩展 |
|---|---|---|
| C/C++/Qt/CUDA | clangd | .C.h.cpp.cxx.cc.hpp.hxx.hh.ipp.cu.cuh |
| Python | 版权/pylsp | .py.pyi |
| TypeScript/JavaScript | TypeScript语言服务器 | .ts.tsx.js.jsx.mjs.cjs |
| 加油 | gopls | .加油 |
| 锈蚀 | 锈蚀分析仪 | .rs |
| Java | jdtls | .Java |
| Kotlin | Kotlin语言服务器 | .kt.kts |
| 齐格 | 齐格 | |
| Lua | Lua语言服务器 | .Lua |
| Bash/Shell | Bash语言服务器 | .sh.Bash.zsh |
| CSS/SCSS/LESS | vscode-CSS语言服务器 | .CSS.SCSS.LESS |
| HTML | vscode HTML语言服务器 | .HTML.htm |
| JSON | vscode-JSON语言服务器 | .JSON。JSON |
| CMake | CMake语言服务器 | .CMake |
服务器 自动选择 按文件扩展名选择正确的LSP。打开A .cpp file--cland开始。打开A .py 文件——版权开始。一切都是透明的。
运作原理
Claude Code ──(MCP/stdio)──► lsp-mcp-server ──(LSP/JSON-RPC)──► clangd
│ pyright
│ tsserver
└── ServerPool ──────────────► gopls
(lazy start, rust-analyzer
one per language) ...
语言服务器启动 懒洋洋地 --仅当请求该类型的第一个文件时。客户端被缓存并在会话中的所有工具调用中重用。
LLM可以:
- 写前 --通过以下方式查询函数签名
get_completions和get_hover - 写后 --奔跑
diagnose_file或diagnose_workspace查看错误 - 重构期间 --通过查找所有用法
find_references
安装
选项A:自动设置(推荐)
git clone https://github.com/goodwinka/lsp-mcp-server
cd lsp-mcp-server
bash install.sh
该脚本构建服务器,检查安装了哪些语言服务器,并生成 .mcp.json 对于当前的项目。
选项B:手动设置
1.构建服务器
cd lsp-mcp-server
npm install
npm run build # compile TypeScript → dist/
# or for development without a build step:
npm run dev # run directly via tsx
2.安装所需的语言服务器
仅安装与您的项目相关的:
# C++ / Qt
sudo apt install clangd # or: brew install llvm
# Python
npm install -g pyright # or: pip install pyright
# TypeScript / JavaScript
npm install -g typescript-language-server typescript
# Go
go install golang.org/x/tools/gopls@latest
# Rust
rustup component add rust-analyzer
# Bash
npm install -g bash-language-server
# CSS / HTML / JSON
npm install -g vscode-langservers-extracted
# CMake
pip install cmake-language-server
# Note: works with .cmake files only, not CMakeLists.txt directly
# Lua
brew install lua-language-server # macOS
# Linux: download from https://github.com/LuaLS/lua-language-server/releases
# Java (Eclipse JDT LS)
# Download and install: https://github.com/eclipse-jdtls/eclipse.jdt.ls/releases
# Make sure the `jdtls` command is available in PATH
# Kotlin
# Download from https://github.com/fwcd/kotlin-language-server/releases
# Make sure `kotlin-language-server` is available in PATH
# Zig
# Download from https://github.com/zigtools/zls/releases
# Make sure `zls` is available in PATH
使用 list_servers 工具查看您的系统上安装了什么。
3.连接到克劳德代码
选项A:项目配置 (.mcp.json 在项目根中)
{
"mcpServers": {
"intellisense": {
"command": "node",
"args": ["/absolute/path/to/lsp-mcp-server/dist/index.js", "--project", "."]
}
}
}
选项B:全局配置 (~/.claude/claude_desktop_config.json)
{
"mcpServers": {
"intellisense": {
"command": "node",
"args": [
"/absolute/path/to/lsp-mcp-server/dist/index.js",
"--project", "/path/to/your/project"
]
}
}
}
选项C:环境变量
{
"mcpServers": {
"intellisense": {
"command": "node",
"args": ["/absolute/path/to/lsp-mcp-server/dist/index.js"],
"env": {
"LSP_PROJECT_ROOT": "/path/to/your/project",
"LSP_MCP_DEBUG": "1"
}
}
}
}
可用工具
| 工具 | 说明 |
|---|---|
diagnose_file |
磁盘上文件的编译器错误/警告 |
diagnose_workspace |
所有语言服务器上当前会话中打开的所有文件的错误/警告 |
get_completions |
在给定位置完成(从0开始的行/字符) |
get_hover |
符号的类型和文件 |
get_definitions |
跳转到符号定义 |
find_references |
查找项目中符号的所有用法 |
get_symbols |
文件的符号树(类、函数、变量……) |
list_servers |
显示所有语言、服务器状态(正在运行/已安装/缺失) |
诊断工作空间
在一次调用中返回工作区范围的诊断摘要,不需要文件内容。报告错误和警告总数、受影响的文件数量以及每个文件的详细信息。
清洁时的输出示例:
✅ Workspace clean — 3 file(s) checked, no errors or warnings
有问题的输出示例:
Found 2 error(s), 1 warning(s) across 1/3 file(s):
Found 2 diagnostic(s) in src/main.cpp:
ERROR src/main.cpp:12:5 [clang]: no member named 'nonExistent' in 'QWidget'
WARN src/main.cpp:8:3 [clang]: unused variable 'x'
使用示例
> Check src/mainwindow.cpp for errors
→ [clangd] diagnose_file("src/mainwindow.cpp")
> Check all open files for errors
→ diagnose_workspace()
> Check app/models.py
→ [pyright] diagnose_file("app/models.py")
> What methods does QTableView have?
→ get_completions on a .cpp file with QTableView*
> Show the signature of pandas.read_csv
→ get_hover on a .py file
> What servers are available?
→ list_servers
C++/Qt使用技巧
cland与a配合得最好 compile_commands.json 在项目根目录中:
# CMake
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
# qmake via Bear
bear -- make
# Or manually — create a .clangd file in the project root:
cat > .clangd << 'EOF'
CompileFlags:
Add:
- -std=c++17
- -I/usr/include/qt6
- -I/usr/include/qt6/QtCore
- -I/usr/include/qt6/QtWidgets
- -I/usr/include/qt6/QtGui
- -fPIC
EOF
混合C/C++项目:the -std=c++17 标记在 .clangd 与plain不兼容 .c 文件夹。对于混合项目 .c 和 .cpp,使用 compile_commands.json 相反。
CUDA提示
CUDA C++(.cu,.cuh)
cland原生支持CUDA(它基于clang)。您需要安装CUDA工具包:
# Verify installation
nvcc --version
为了获得最佳的IntelliSense结果,请生成 compile_commands.json:
# CMake with CUDA
cmake -DCMAKE_CUDA_COMPILER=nvcc -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
或者创建一个 .clangd 项目根目录中的文件:
CompileFlags:
Add:
- --cuda-gpu-arch=sm_75
- --cuda-path=/usr/local/cuda
- -I/usr/local/cuda/include
- -std=c++17
没有CUDA工具包,cland将报告 Cannot find CUDA installation。安装工具包以修复它。
CUDA Python(CuPy、Numba、PyCUDA)
Python CUDA库通过标准版权工作,不需要特殊设置。 为了改进类型检查,请安装存根:
# CuPy — stubs are bundled in the package
pip install cupy-cuda12x # or cupy-cuda11x
# Numba
pip install numba
# PyCUDA
pip install pycuda
Pyright将自动从已安装的软件包中提取类型。
Python技巧
Pyright自动读取 pyrightconfig.json 和 pyproject.toml对于虚拟环境,要么激活 venv 在开始之前,或在配置中指定解释器路径:
{
"venvPath": ".",
"venv": ".venv"
}
如果两者都有 pyright 和 pylsp 已安装, 火葬场 已使用(它在注册表中列在首位)。要改用pylsp,请删除或重命名 pyright-langserver.
Types/JavaScript技巧
typescript-language-server 使用项目中的TypeScript编译器 node_modules 如果可用,或回退到全局安装 typescript.
npm install -g typescript-language-server typescript
对于monorepos或项目 tsconfig.json 在根目录之外,配置 tsconfig.json 路径适当——tsserver会自动拾取它。
命令行界面
--project, -p <path> Path to the project root (required)
--help, -h Show help and exit
环境变量
| 变量 | 描述 |
|---|---|
LSP_PROJECT_ROOT |
项目路径(如果 --project 未设置) |
LSP_MCP_DEBUG=1 |
将语言服务器stderr打印到stdout |
故障排除
为我的文件选择了哪个服务器?
使用 list_servers 工具——它显示所有服务器、它们的状态和支持的扩展。服务器由文件扩展名自动选择。
pyright和pylsp都已安装
火葬场 在注册表中排名第一,将用于 .py 文件夹。要改用pylsp,请删除或重命名 pyright-langserver.
CMakeLists.txt未被诊断
cmake-language-server 仅附于 .cmake 文件夹。 CMakeLists.txt 不支持——这是当前基于扩展的语言检测的局限性。
服务器已启动,但未显示诊断信息
启用调试输出(LSP_MCP_DEBUG=1)并检查语言服务器的stderr。对于C++项目,请确保 compile_commands.json 或一个 .clangd 文件存在。
错误“路径在项目根目录之外”
所有文件路径必须 相对于项目根 在...中指定 --project。不接受绝对路径。
许可证
麻省理工学院
