使用说明
lsp-mcp服务器
轻量级的 主控程序 该服务器通过语言服务器向AI代理公开类型感知代码导航和快速文件搜索。它按需管理语言服务器进程,路由来自MCP工具调用的LSP请求,并返回结构化结果——让代理跳到定义、查找引用、列出符号和定位文件,而无需读取整个代码库。
安装
选项1:克劳德代码插件(推荐)
克隆、安装和注册为Claude Code插件的一个命令:
git clone https://github.com/garretpremo/lsp-mcp-server.git ~/.local/share/lsp-mcp-server \
&& cd ~/.local/share/lsp-mcp-server && bun install \
&& bash scripts/install-plugin.sh
重新启动Claude代码(或运行 /reload-plugins)激活。该插件添加了一项技能,指导Claude何时使用每个工具,并且MCP服务器会自动为每个项目运行。
选项2:每次会话(不安装)
git clone https://github.com/garretpremo/lsp-mcp-server.git ~/tools/lsp-mcp-server \
&& cd ~/tools/lsp-mcp-server && bun install
然后用以下代码启动Claude Code:
claude --plugin-dir ~/tools/lsp-mcp-server/plugin
选项3:手动MCP配置
添加到您的项目 .mcp.json 或 ~/.claude/settings.json:
{
"mcpServers": {
"lsp-mcp-server": {
"command": "bun",
"args": ["run", "/path/to/lsp-mcp-server/src/index.ts", "--project", "."]
}
}
}
选项4:独立(任何MCP客户端)
bun run src/index.ts --project /path/to/your/project
通过stdio JSON-RPC进行通信——可与任何兼容MCP的客户端配合使用。
可用工具
| 工具 | 说明 |
|---|---|
find_file |
基于项目文件索引的模糊文件名搜索 |
reindex |
重建文件索引(完整项目或子目录) |
go_to_definition |
跳转到给定文件位置的符号定义 |
find_references |
查找给定文件位置处对符号的所有引用 |
document_symbols |
列出文件中的所有符号(类、函数等) |
workspace_symbol |
在整个项目中按名称搜索符号 |
所有LSP导航工具都接受可选的丰富标志: includeKind, includeContainer,以及 includeDocstring.
配置
地点a config.json 在项目根目录中覆盖语言服务器命令或请求超时:
{
"requestTimeout": 15000,
"languageServers": {
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"]
},
"java": {
"command": "jdtls",
"args": []
}
}
}
如果不 config.json 如果找到,则使用默认值。 requestTimeout 以毫秒为单位(默认值: 10000).
基准测试:lsp-mcp服务器与JetBrains mcp
针对4381文件的Angular/TypeScript项目(Nx monorepo)进行了测试。
文件搜索-“文档查看器”
| lsp-mcp服务器 | JetBrains mcp | |
|---|---|---|
| 响应大小 | ~1500个字符 | 9792个字符 |
| 结果 | 10个文件,按相关性排序 | 40个项目(文件+目录),未排序,按工作树重复 |
| 格式 | 绝对路径+相对路径 | 包含工作树重复项的平面路径列表 |
文件符号-- reports.service.ts
| lsp-mcp服务器 | JetBrains mcp | |
|---|---|---|
| 响应大小 | ~5200个字符 | 4486个字符 |
| 结果类型 | 31个结构化符号(名称、种类、容器、代码段) | 原始文件文本(没有可用的符号工具) |
| 结构化的 | 是--类、方法、具有层次结构的属性 | 否--LLM必须从原始文本中解析符号 |
转到定义-- HttpClient 导入
| lsp-mcp服务器 | JetBrains mcp | |
|---|---|---|
| 响应大小 | 约550个字符 | 34868个字符 |
| 结果类型 | 1个精确的定义位置 | 50个文本匹配(grep风格,非语义) |
| 语义 | 是--LSP供电,支持类型识别 | 否--文本搜索 search_in_files_by_text |
代理令牌使用情况(相同任务,Sonnet模型)
| lsp-mcp服务器 | JetBrains mcp | |
|---|---|---|
| 代币总数 | 18,910 | 25,994 |
| 工具调用 | 3 | 10 |
总结
- 小6.5倍 文件搜索响应
- 63倍更小 定义查找响应
- 代币减少27% 被代理人消耗
- 结构化符号数据与原始文本
- 真正的LSP语义与基于文本的grep
先决条件
您的计算机上必须安装并提供以下语言服务器 PATH:
- Types/JavaScript:
typescript-language-servernpm install -g typescript-language-server typescript - Java:
jdtls(Eclipse JDT语言服务器)
语言服务器是延迟启动的——只有在首次访问匹配类型的文件时。
许可证
麻省理工学院