使用说明
mcp-lsp
MCP服务器通过以下方式将Claude代码桥接到语言服务器 vscode-jsonrpc.专为Claude Code内置LSP插件失败的Windows而构建(spawn() 没有 shell: true → 足够了 .cmd 垫片)。
工具
| 工具 | 描述 | 输入 |
|---|---|---|
lsp_diagnostics |
错误、警告、提示 | path (字符串或数组) |
lsp_hover |
类型信息和文件 | path, line, character |
lsp_definition |
转到定义 | path, line, character |
lsp_references |
查找所有参考文献 | path, line, character, includeDeclaration? |
lsp_code_actions |
快速修复、重构 | path, startLine, endLine, diagnosticsOnly? |
所有职位均为 1-基 (与编辑器行号一致)。
支持的语言
| 语言 | 服务器 | 包 |
|---|---|---|
| Types/JavaScript | typescript-language-server |
npm i -g typescript-language-server typescript |
python pyright-langserver |
npm i -g pyright |
设置
先决条件
语言服务器必须全局安装:
npm i -g typescript-language-server typescript
npm i -g pyright
安装
git clone https://github.com/FayDoom/mcp-lsp.git
cd mcp-lsp
npm install
使用克劳德代码注册
node add-mcp.js
或手动:
claude mcp add --scope user mcp-lsp -- node /path/to/mcp-lsp/index.js
权限
增添 ~/.claude/settings.json 在...之下 permissions.allow:
"mcp__mcp-lsp__lsp_diagnostics",
"mcp__mcp-lsp__lsp_hover",
"mcp__mcp-lsp__lsp_definition",
"mcp__mcp-lsp__lsp_references",
"mcp__mcp-lsp__lsp_code_actions"
建筑学
index.js ← MCP server, tool registration, stdio transport
core/
constants.js ← language configs, timeouts
LspClient.js ← vscode-jsonrpc wrapper, LSP lifecycle
LspClientManager.js ← one LspClient per language
tools/
DiagnosticsTool.js ← textDocument/publishDiagnostics (push model)
HoverTool.js ← textDocument/hover
DefinitionTool.js ← textDocument/definition
ReferencesTool.js ← textDocument/references
CodeActionsTool.js ← textDocument/codeAction
renderers/
DiagnosticsRenderer.js ← format errors/warnings
LocationRenderer.js ← format locations
HoverRenderer.js ← format hover content
CodeActionsRenderer.js ← format code actions
utils/
Logger.js ← file-based logging (logs/)
设计说明
shell: true上spawn()解决.cmd窗户上的垫片- 诊断是基于推送的 --LSP服务器通过通知而不是请求响应发送它们。1秒的去抖动在解决之前解决了快速更新。
- URI规范化 --LSP服务器返回URI,如下所示
file:///c%3A/...而节点pathToFileURL生产file:///C:/...所有内部查找都使用规范化的URI;原始URI被发送到LSP。 - 每种语言一个客户端 --单身
rootUri每个语言服务器。适用于单项目会议。 - 崩溃恢复 --如果语言服务器死亡,下一个工具调用会自动重新启动它。