使用说明

项目简介

'mcp-language-server' 是一个基于 Model Context Protocol (MCP) 构建的服务器,它通过桥接 Language Server Protocol (LSP) 和 LLM 客户端,使得 LLM 能够利用语言服务器强大的代码分析能力。该服务器允许 LLM 客户端通过标准化的 MCP 协议调用各种代码智能工具,例如查找定义、查找引用、获取代码诊断信息等,从而提升 LLM 在代码理解和生成方面的能力,尤其是在处理大型代码项目时。

主要功能点

  • 代码定义查询: 允许 LLM 获取代码库中符号(如函数、类、变量等)的完整源代码定义。
  • 代码引用查找: 帮助 LLM 查找整个代码库中某个符号的所有使用位置。
  • 代码诊断信息: 向 LLM 提供指定文件的错误、警告等诊断信息,帮助 LLM 理解代码质量和潜在问题。
  • 代码镜头 (Code Lens): 为 LLM 提供代码上下文相关的操作提示,例如运行测试、添加导入等(需要客户端支持 Code Lens 执行)。
  • 代码编辑: 支持 LLM 通过文本编辑指令修改代码文件。
  • 支持多种语言: 兼容多种语言服务器,如 Python (pyright), TypeScript (tsserver), Go (gopls), Rust (rust-analyzer) 等,理论上支持所有符合 LSP 协议的语言服务器。

安装步骤

  1. 安装 Go: 确保你的系统已安装 Go 语言环境 (版本 >= 1.18),请参考 Go 官网安装指南
  2. 安装 MCP 语言服务器: 使用 Go 命令获取并安装 'mcp-language-server':
    go install github.com/isaacphi/mcp-language-server@latest
  3. 安装语言服务器: 根据你的代码库语言,安装相应的语言服务器。例如:
    • Python (pyright): 'npm install -g pyright'
    • TypeScript (tsserver): 'npm install -g typescript typescript-language-server'
    • Go (gopls): 'go install golang.org/x/tools/gopls@latest'
    • Rust (rust-analyzer): 'rustup component add rust-analyzer'
    • 或者其他你需要的语言服务器。

服务器配置

要将 'mcp-language-server' 配置为 MCP 服务器,你需要在 MCP 客户端(例如 Claude Desktop)中添加服务器配置。以下是一个 JSON 格式的配置示例,你需要根据你的实际环境进行修改:

{
  "mcpServers": {
    "language-server": {
      "command": "go",
      "args": [
        "run",
        "github.com/isaacphi/mcp-language-server@latest",
        "--workspace",
        "你的代码库绝对路径",  //  请替换为你的代码库的绝对路径,例如:/Users/你的用户名/dev/yourpythoncodebase
        "--lsp",
        "你的语言服务器绝对路径", // 请替换为你安装的语言服务器的绝对路径,例如:/opt/homebrew/bin/pyright-langserver
        "--",
        "--stdio"
      ],
      "env": {
        // "DEBUG": "1"  // 可选:启用调试日志,用于问题排查
      }
    }
  }
}

配置参数说明:

  • server name: 'language-server' (服务器名称,可以自定义)
  • command: '"go"' (启动服务器的命令,这里使用 'go run')
  • args: 启动参数列表,包含以下几个关键参数:
    • '"run"': 运行 Go 程序的命令。
    • '"github.com/isaacphi/mcp-language-server@latest"': 指定要运行的 Go 程序,即 'mcp-language-server'。
    • '--workspace': '"你的代码库绝对路径"' (必填): 请替换为你的代码库在本地文件系统中的绝对路径。服务器将在此目录下工作。
    • '--lsp': '"你的语言服务器绝对路径"' (必填): 请替换为你安装的语言服务器可执行文件的绝对路径。可以使用 'which 语言服务器名称' 命令查找,例如 'which pyright-langserver'。
    • '--': 分隔符,后面的参数将传递给语言服务器。
    • '--stdio': 指示语言服务器使用标准输入输出进行通信 (通常是 LSP 服务器的标准配置)。
  • env: 环境变量 (可选):
    • '"DEBUG": "1"': 可选,启用调试模式,输出详细的 LSP 和应用日志,用于开发和问题排查。正式使用时可以移除。

重要提示:

  • 路径替换: 请务必将配置示例中的 '"你的代码库绝对路径"' 和 '"你的语言服务器绝对路径"' 替换为你的实际路径。
  • 语言服务器路径查找: 可以使用 'which 语言服务器名称' 命令(例如 'which pyright-langserver')来查找已安装的语言服务器的绝对路径。
  • 语言服务器参数: '--' 后的参数 ('--stdio') 会直接传递给你的语言服务器。某些语言服务器可能需要特定的启动参数,请参考你使用的语言服务器的文档进行配置。
  • 环境变量: 'env' 部分可以设置传递给语言服务器的环境变量。某些语言服务器可能需要特定的环境变量才能正常工作,例如 'gopls' 可能需要 'GOPATH' 和 'GOCACHE'。

基本使用方法

  1. 启动 MCP 客户端 (如 Claude Desktop),并加载上述配置。
  2. 客户端连接到 'language-server' 后,即可通过 MCP 协议调用注册的工具,例如:
    • 使用 'read_definition' 工具查询代码定义。
    • 使用 'find_references' 工具查找代码引用。
    • 使用 'get_diagnostics' 工具获取代码诊断信息。
    • 使用 'apply_text_edit' 工具进行代码编辑(需要小心操作,并确保理解工具的输出)。
    • 使用 'get_codelens' 和 'execute_codelens' 工具执行代码镜头提示的操作(如果客户端支持)。

具体工具的使用方法和参数,请参考仓库中 'tools.go' 文件的工具注册代码和参数定义。

注意: 此服务器尚处于 Pre-beta 质量,使用时请注意潜在的风险,并建议在非关键项目上进行测试。遇到问题时,可以开启 'DEBUG=1' 环境变量获取详细日志,并向仓库作者反馈。

信息

分类

开发者工具