mcp-lsp网桥
这就像克劳德代码的“重命名/转到引用”。
一个MCP服务器,将AI编码助手连接到TypeScript的语言服务器(tsserver),实现语义代码导航、引用查找和重构。
与基于文本的搜索(ripgrep)不同,此服务器提供 语义感知 结果——注释或字符串没有误报,正确的导入解析和准确的类型感知符号跟踪。
基准
在一个真正的TypeScript单仓库(423个文件,4个包)上进行了测试。任务:重命名在118个文件中引用的类型属性,出现次数超过1000次。
| 度量 | 克劳德 | MCP-LSP桥 | 改进 |
|---|---|---|---|
| 时间 | 160秒 | 22秒 | 快7倍 |
| 工具调用 | 41 | 4 | 减少10倍 |
| 代币 | ~6300 | ~12 | 500倍以下 |
| 成本 | 约2.20美元 | 约0.15美元 | 节省93% |
一个MCP工具调用替换了整个grep/read/edit步骤链——更快、更便宜、更准确。
运作原理
这个项目是 桥,而不是语言服务器本身。它封装了TypeScript自己的语言服务器(tsserver)并展示了其作为MCP工具的能力。大桥管理 tsserver 自动处理——您不需要自己启动或配置任何东西。
┌─────────────────────────────────────────────────────┐
│ VS Code │
│ ┌───────────────┐ ┌────────────────────────────┐│
│ │ Editor │ │ Claude Code (terminal) ││
│ │ │ │ ││
│ │ Built-in │ │ Uses MCP tools instead of ││
│ │ IntelliSense │ │ grep/read for navigation ││
│ └──────┬────────┘ └────────────┬───────────────┘│
│ │ │ │
│ ▼ ▼ │
│ VS Code's mcp-lsp-bridge │
│ tsserver (this project) │
│ (built-in) │ │
│ ▼ │
│ Its own tsserver │
│ (spawned on demand) │
└─────────────────────────────────────────────────────┘VS代码已经给出 你 通过其内置的智能感知 tsserver该项目提供 克劳德 通过自身的语义理解 tsserver 实例,因此它可以像IDE一样精确地导航您的代码。
示例:VS代码+克劳德代码
- 您正在VS Code中编辑TypeScript单仓库
- 打开集成终端并运行Claude Code
- 您要求Claude重命名在118个文件中使用的类型属性
- 没有mcp-lsp网桥: 克劳德使用
grep要查找符号,请读取每个文件,逐一编辑它们——41次工具调用,约160秒,2.20美元 - 使用mcp-lsp网桥: 克劳德打电话来
rename_symbol一次,立即更新每个引用——4次工具调用,约22秒,0.15美元
工具
| 工具 | 描述 | 修改文件 |
|---|---|---|
find_references | 查找对符号的所有引用 | 否 |
go_to_definition | 导航到符号定义 | 否 |
rename_symbol | 跨项目重命名符号 | 是 |
get_diagnostics | 获取编译错误/警告 | 否 |
安装
npm install -g mcp-lsp-bridge或直接与 npx:
npx mcp-lsp-bridge配置
克劳德代码
添加到您的Claude Code MCP设置中:
{
"mcpServers": {
"mcp-lsp-bridge": {
"command": "npx",
"args": ["mcp-lsp-bridge"]
}
}
}克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"mcp-lsp-bridge": {
"command": "npx",
"args": ["mcp-lsp-bridge"]
}
}
}用法
所有工具都接受 workspaceRoot (项目的绝对路径)和文件位置使用 1-基 行号和列号。
查找引用
查找项目中符号的所有用法。
{
"workspaceRoot": "/path/to/project",
"filePath": "src/utils.ts",
"line": 5,
"column": 17
}返回包含文件路径、位置、代码段的引用,以及每个引用是声明还是用法。
go_to_定义
跳转到定义符号的位置。
{
"workspaceRoot": "/path/to/project",
"filePath": "src/app.ts",
"line": 10,
"column": 3
}返回定义位置,包括中的外部定义 node_modules 或 .d.ts 文件夹。
重命名_符号
重命名符号并更新整个项目中的所有引用。
{
"workspaceRoot": "/path/to/project",
"filePath": "src/models.ts",
"line": 8,
"column": 14,
"newName": "updatedName"
}修改磁盘上的文件并返回所有更改的报告。
get_诊断学
获取TypeScript编译错误和警告。
{
"workspaceRoot": "/path/to/project",
"filePath": "src/index.ts"
}省略 filePath 用于项目范围的诊断。返回严重性、诊断代码和代码片段。
支持的项目
- TypeScript项目(
tsconfig.json) - JavaScript项目(
jsconfig.json) - 带有多个tsconfig文件的Monorerepo(Nx、Turborepo)
- 混合Types/JavaScript代码库
- 所有标准文件扩展名:
.ts,.tsx,.js,.jsx,.mts,.cts,.mjs,.cjs,.d.ts
发展
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Development mode (watch)
npm run dev建筑
AI Client MCP Server tsserver (stdin/stdout)
(this project) (TypeScript language server)服务器管理每个工作区的tsserver实例,为后续请求缓存它们。
许可证
麻省理工学院
