使用说明
项目简介
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 方式 (推荐)
- 确保您的系统已安装 Docker。
- 使用 Docker 命令拉取预构建的 LSP-MCP 镜像:
docker pull docker.io/jonrad/lsp-mcp:0.3.1
npx 方式
- 确保您的系统已安装 Node.js 和 npm。
- 您可以使用 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'。
基本使用方法
- 启动 LSP-MCP 服务器: 根据您选择的方式 (Docker 或 npx) 启动服务器。
- 配置 MCP 客户端: 在您的 MCP 客户端 (Claude Desktop, Cursor 等) 中,根据上述示例配置 LSP-MCP 服务器的连接信息。
- 使用 LLM 提问: 在 MCP 客户端中,您可以指示 LLM 使用 LSP 相关的工具来分析代码。例如,您可以提问:
- “请使用 LSP 分析以下 TypeScript 代码的符号定义: ...代码...”
- “使用 LSP 查找这段 Python 代码中 'my_function' 的引用。”
LLM 将会调用 LSP-MCP 服务器提供的工具,利用 LSP 的能力来处理您的代码分析请求,并将结果返回给您。
信息
分类
开发者工具