使用说明

项目简介

LSP-MCP服务器是一个基于Model Context Protocol (MCP) 构建的应用后端,它利用Language Server Protocol (LSP) 的强大功能,为大型语言模型 (LLM) 和AI Agent 提供代码库的上下文信息。通过集成多种LSP服务器,LSP-MCP服务器能够支持多种编程语言的代码分析,使LLM能够理解和处理代码相关的请求,例如代码符号查找、定义跳转、代码补全、悬停提示等。

主要功能点

  • 多语言支持: 支持同时运行多个LSP服务器,可以处理多种编程语言的代码。
  • 动态方法: 根据LSP JSON Schema 动态生成可用的LSP方法,保持与LSP协议的同步。
  • 代码上下文: 通过LSP服务器为LLM提供代码的结构化上下文信息,例如符号、定义、引用等。
  • 工具集成: 将LSP的功能封装为MCP工具,方便LLM客户端调用,例如代码符号查询工具、定义跳转工具等。

安装步骤

本仓库提供两种主要的运行方式:Docker 和 npx。推荐使用 Docker 方式,因为它更加隔离和易于配置。

Docker 方式 (推荐)

  1. 确保您的系统已安装 Docker。
  2. 使用 Docker 命令拉取预构建的 LSP-MCP 镜像:
    docker pull docker.io/jonrad/lsp-mcp:0.3.1

npx 方式

  1. 确保您的系统已安装 Node.js 和 npm。
  2. 您可以使用 npx 直接从 GitHub 运行 LSP-MCP 服务器,无需本地安装。

服务器配置

MCP客户端(例如 Claude Desktop, Cursor 或 MCP CLI Client)需要配置 LSP-MCP 服务器的连接信息。以下是针对不同客户端的配置示例。

Claude Desktop 配置示例

在 Claude Desktop 的 MCP 服务器配置文件 ('claude_desktop_config.json') 中,添加以下配置。

Docker 配置 (推荐)

{
  "mcpServers": {
    "lsp": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "docker.io/jonrad/lsp-mcp:0.3.1"]
    }
  }
}

如果您需要让 Claude Desktop 访问本地文件,可以使用 Docker 的 '-v' 参数进行目录挂载。例如,将本地的 '/本地代码目录' 挂载到容器的 '/remote_dir' 目录:

{
  "mcpServers": {
    "lsp": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-v", "/本地代码目录:/remote_dir", "docker.io/jonrad/lsp-mcp:0.3.1"]
    }
  }
}

这样,您就可以在 Claude Desktop 中询问关于 '/remote_dir/<文件名>' 路径下代码文件的问题了。

npx 配置

{
  "mcpServers": {
    "lsp": {
      "command": "npx",
      "args": ["-y", "--silent", "git+https://github.com/jonrad/lsp-mcp", "--lsp", "npx -y --silent -p '[email protected]' -p '[email protected]' typescript-language-server --stdio"]
    }
  }
}

这个配置示例使用了 TypeScript Language Server。您可以修改 '--lsp' 参数来切换不同的 LSP 服务器。

Cursor 配置示例

在 Cursor 的 MCP 配置中,选择 'Type' 为 'command','Command' 填写 Docker 运行命令,例如:

docker run -i --rm -v <本地代码目录>:<容器内代码目录> docker.io/jonrad/lsp-mcp:<版本号>

MCP CLI Client 配置示例

配置方法与 Claude Desktop 类似,配置文件位于 '~/.llm/config.json'。

基本使用方法

  1. 启动 LSP-MCP 服务器: 根据您选择的方式 (Docker 或 npx) 启动服务器。
  2. 配置 MCP 客户端: 在您的 MCP 客户端 (Claude Desktop, Cursor 等) 中,根据上述示例配置 LSP-MCP 服务器的连接信息。
  3. 使用 LLM 提问: 在 MCP 客户端中,您可以指示 LLM 使用 LSP 相关的工具来分析代码。例如,您可以提问:
    • “请使用 LSP 分析以下 TypeScript 代码的符号定义: ...代码...”
    • “使用 LSP 查找这段 Python 代码中 'my_function' 的引用。”

LLM 将会调用 LSP-MCP 服务器提供的工具,利用 LSP 的能力来处理您的代码分析请求,并将结果返回给您。

信息

分类

开发者工具