语言服务器协议桥接工具

MCP服务器通过vscode-jsonrpc桥接Claude Code到语言服务器,解决Windows环境下内置LSP插件失败问题。

  • by FayDoom
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 FayDoom/mcp-lsp

使用说明

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 每个语言服务器。适用于单项目会议。
  • 崩溃恢复 --如果语言服务器死亡,下一个工具调用会自动重新启动它。