Token导航 LogoToken导航TokenDH.com
Lsp Bridge MCP logo
开发工具stdio官方级别未说明来源级核验

Lsp Bridge MCP

MCP Server

连接Claude Code与语言服务器协议(LSP)服务器,提供实时编译诊断、错误、警告等功能。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
代码分析PythonClaude开发工具Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

bhudgeons

提供方

bhudgeons

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -e .

详细介绍

LSP网桥MCP服务器

将Claude Code连接到语言服务器协议(LSP)服务器,以进行实时编译诊断、错误、警告等。

🎯 特性

  • 自动诊断:PostToolUse钩子在编辑后自动触发编译
  • 实时诊断:查看发生的编译错误和警告
  • 悬停信息:立即获取类型签名、文档和scaladoc
  • 转到定义:直接跳转到定义符号的位置(方法、类、特征)
  • 多语言支持:适用于任何LSP服务器(金属、锈迹分析仪、打字语言服务器等)
  • MCP资源:诊断作为可读资源公开
  • MCP工具:查询诊断、触发器编译、悬停信息、转到定义
  • 本地诊断文件:写信给 `

/.lsp-bridge/diagnostics.json` 便于阅读

🚀 快速开始

有关包括Claude.md配置在内的详细Claude代码设置,请参阅 CLAUDE_SETUP.md

先决条件

对于Scala项目,您需要 金属 已安装并位于PATH中:

# Install via Coursier (recommended)
coursier install metals

# Verify it's on your PATH
metals --version

如果 metals --version 如果不起作用,请将Coursier的bin目录添加到PATH中:

# Add to your ~/.bashrc, ~/.zshrc, or ~/.profile
export PATH="$PATH:$HOME/Library/Application Support/Coursier/bin"  # macOS
export PATH="$PATH:$HOME/.local/share/coursier/bin"                 # Linux

1.安装

选项A:全局安装(推荐)

全局安装,使其始终可用:

cd lsp-bridge-mcp
pip install -e .

选项B:虚拟环境安装

如果您更喜欢使用虚拟环境:

cd lsp-bridge-mcp
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e .

注意:如果使用venv,您需要在MCP配置中指定venv Python的完整路径(请参阅下面的步骤3)。

2.创建配置

创建 config.json 在您的项目或主目录中:

{
  "servers": [
    {
      "name": "metals",
      "workspace_root": "/path/to/your-scala-project",
      "command": ["metals"]
    }
  ]
}

3.配置克劳德代码

添加到 ~/.claude.json:

如果全局安装(选项A):

{
  "mcpServers": {
    "lsp-bridge": {
      "command": "python",
      "args": ["-m", "lsp_bridge"]
    }
  }
}

如果安装在venv中(选项B):

{
  "mcpServers": {
    "lsp-bridge": {
      "command": "/absolute/path/to/lsp-bridge-mcp/venv/bin/python",
      "args": ["-m", "lsp_bridge"]
    }
  }
}

替换 /absolute/path/to/lsp-bridge-mcp 使用您的实际安装路径。

或者对于特定项目,创建 .mcp.json 在您的项目目录中:

{
  "mcpServers": {
    "lsp-bridge": {
      "command": "python",
      "args": [
        "-m",
        "lsp_bridge",
        "${projectDir}/lsp-bridge-config.json"
      ]
    }
  }
}

⚠️ 重要提示:首次在新会议中使用

MCP工具在请求之间注册,而不是在请求期间注册。在新的克劳德会议上:

  1. 第一 list_workspaces 呼叫可能会失败,并显示“没有可用的此类工具”
  2. 向Claude发送任何消息(例如,“继续”)
  3. 立即重试-它会起作用的

CLAUDE_SETUP.md 有关配置Claude以自动处理此问题的说明。

4.在克劳德代码中使用

配置后,Claude可以:

查看资源

Claude can see resources like:
- lsp://metals/diagnostics/all
- lsp://metals/diagnostics/src/main/scala/YourFile.scala

使用工具

- get_diagnostics(workspace: "metals")
- get_diagnostics(workspace: "metals", file_path: "src/main/scala/File.scala")
- trigger_compilation(workspace: "metals")
- get_status(workspace: "metals")
- list_workspaces()

使用提示

Claude can use the "analyze_diagnostics" prompt to get AI-powered analysis of compilation errors

📖 使用示例

示例1:检查所有诊断

在克劳德代码中:

Read the resource lsp://metals/diagnostics/all

Claude将看到所有编译错误和警告。

示例2:分析特定文件

Use get_diagnostics tool with workspace="metals" and file_path="src/main/scala/MyFile.scala"

示例3:触发器编译

Use trigger_compilation tool with workspace="metals"

Claude将触发完整编译并报告结果。

示例4:自动分析

Use the analyze_diagnostics prompt for workspace="metals"

Claude将分析所有错误,提出修复建议,并对其进行优先级排序。

📚 文档

🔧 配置

金属(Scala)

{
  "servers": [
    {
      "name": "metals",
      "workspace_root": "/path/to/scala/project",
      "command": ["metals"]
    }
  ]
}

锈蚀分析仪(rust)

{
  "servers": [
    {
      "name": "rust",
      "workspace_root": "/path/to/rust/project",
      "command": ["rust-analyzer"]
    }
  ]
}

typescript语言服务器(typescript)

{
  "servers": [
    {
      "name": "typescript",
      "workspace_root": "/path/to/ts/project",
      "command": ["typescript-language-server", "--stdio"]
    }
  ]
}

多个工作区

{
  "servers": [
    {
      "name": "backend",
      "workspace_root": "/path/to/backend",
      "command": ["metals"]
    },
    {
      "name": "frontend",
      "workspace_root": "/path/to/frontend",
      "command": ["typescript-language-server", "--stdio"]
    }
  ]
}

🛠️ 可用工具

get_hover

获取特定位置符号的类型信息、文档和签名。

参数:

  • workspace (必填):工作区名称(例如“金属”)
  • file_path (必填):文件的绝对路径
  • line (必填):行号(1-索引,如编辑器所示)
  • character (必填):字符/列位置(0索引)

退货: 符号的类型签名、文档和scaladoc

例子:

get_hover(workspace="metals", file_path="/path/to/Main.scala", line=10, character=15)

使用案例:

  • 在不读取源文件的情况下查找方法签名
  • 获取案例类字段定义
  • 查看库函数的scaladoc/文档
  • 检查类型推断结果

get_definition

跳到符号的定义。返回定义符号的文件路径和行号。

参数:

  • workspace (必填):工作区名称(例如“金属”)
  • file_path (必需):包含符号引用的文件的绝对路径
  • line (必填):行号(1-索引,如编辑器所示)
  • character (必填):字符/列位置(0索引)

退货: 定义的文件路径和行号

例子:

get_definition(workspace="metals", file_path="/path/to/Main.scala", line=18, character=15)

使用案例:

  • 导航到方法实现
  • 查找类别/特征定义
  • 跳转到声明变量的位置
  • 探索库源代码(Metals从JAR中提取源代码)

get_diagnostics

获取编译错误和警告。

参数:

  • workspace (必填):工作区名称(例如“金属”)
  • file_path (可选):用于获取诊断的特定文件

退货: 带有错误、警告及其位置的JSON

trigger_compilation

在LSP服务器中触发编译(如果支持)。

参数:

  • workspace (必填):工作区名称

退货: 编译结果

get_status

获取LSP服务器的当前状态。

参数:

  • workspace (可选):要检查的特定工作区

退货: 状态,包括错误/警告计数

list_workspaces

列出所有连接的LSP服务器工作区。

退货: 工作空间名称数组

📊 诊断格式

诊断结果以以下格式返回:

{
  "summary": {
    "total_files": 5,
    "total_diagnostics": 12,
    "errors": 3,
    "warnings": 9,
    "info": 0
  },
  "by_file": {
    "/path/to/File.scala": [
      {
        "severity": "ERROR",
        "line": 42,
        "character": 10,
        "message": "type mismatch",
        "source": "metals",
        "code": "type-mismatch"
      }
    ]
  }
}

🪝 PostTool使用钩子设置

要在每次Scala文件编辑后启用自动诊断,请将此挂钩添加到 ~/.claude/settings.json:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/notify-metals.sh"
          }
        ]
      }
    ]
  }
}

在以下位置创建挂钩脚本 ~/.claude/hooks/notify-metals.sh:

#!/bin/bash
# Read JSON from stdin and notify lsp-bridge for Scala files
INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

if [[ -n "$FILE_PATH" && "$FILE_PATH" == *.scala ]]; then
    sleep 0.3
    echo "$FILE_PATH" > /tmp/lsp-bridge-notify.txt
fi

使其可执行: chmod +x ~/.claude/hooks/notify-metals.sh

设置后,每次编辑Scala文件后,诊断程序都会自动更新。请阅读以下内容:

cat 
/.lsp-bridge/diagnostics.json | jq .

🐛 调试

日志被写入 /tmp/lsp-bridge-mcp.log:

tail -f /tmp/lsp-bridge-mcp.log

🔍 运作原理

自动诊断流程

  1. 克劳德编辑 .scala 文件
  2. PostTool使用挂钩 将文件路径写入 /tmp/lsp-bridge-notify.txt
  3. MCP服务器监视器 检测到更改,发送 didChange 金属
  4. 金属编译 并发布诊断结果
  5. 已编写诊断 到 `

/.lsp-bridge/diagnostics.json`

  1. 克劳德读 诊断文件(无需权限提示)

核心架构

  1. LSP客户端:通过stdio连接到语言服务器
  2. 消息处理:订阅 textDocument/publishDiagnostics 通知
  3. 状态管理:维护所有文件的当前诊断
  4. MCP暴露:将诊断作为MCP资源和工具公开
  5. 文件监视器:监视器 /tmp/lsp-bridge-notify.txt 用于钩子通知
  6. 本地输出:将诊断写入项目本地 .lsp-bridge/ 目录

🎨 建筑

┌─────────────┐         ┌──────────────┐         ┌─────────────┐
│ Claude Code │ ◄─MCP──►│ LSP Bridge   │ ◄─LSP──►│   Metals    │
│             │         │ MCP Server   │         │   Server    │
└─────────────┘         └──────────────┘         └─────────────┘
       │                       │                        │
       │ PostToolUse           │ File Watcher           │
       │ Hook                  │ (/tmp/notify.txt)      │
       ▼                       ▼                        │
┌─────────────┐         ┌──────────────┐               │
│ Edit .scala │────────►│ didChange    │───────────────┘
│ file        │         │ notification │
└─────────────┘         └──────────────┘
                              │
                              ▼
                 ┌────────────────────────┐
                 │ .lsp-bridge/           │
                 │   diagnostics.json     │◄── Claude reads
                 └────────────────────────┘

🎬 演示工程

scalademo/ 该目录包含一个用于尝试lsp-bridge mcp的示例Scala项目。看 scalademo/README.md 用于显示功能的演示提示。

📝 许可证

麻省理工学院

🤝 贡献

欢迎投稿!这是一个社区项目。

🚀 路线图

  • \[x\] 通过PostToolUse钩子进行自动诊断
  • \[x\] 本地诊断文件(.lsp bridge/diagnostics.json)
  • \[x\] 悬停信息(类型签名、文档、scaladoc)
  • \[x\] 转到定义
  • \[\]代码操作支持
  • \[\]查找参考文献
  • \[\]重命名支持
  • \[\]保存时自动格式化
  • \[\]增量文档同步
  • \[\]支持多根工作区
  • \[\]LSP服务器自动发现
  • \[\]热重载配置

目录标签

目录标签

代码分析PythonClaude开发工具LSP桥接本地部署实时编译诊断多语言支持

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP