使用说明
项目简介
mcp-language-server 是一个基于 Model Context Protocol (MCP) 构建的服务器,它巧妙地桥接了大型语言模型 (LLM) 和语言服务器协议 (LSP)。该服务器的核心思想是将 LSP 强大的代码理解和分析能力,以 MCP 标准化的方式提供给 LLM 客户端,从而使 LLM 能够更有效地处理和理解复杂的代码库。
主要功能点
- 代码定义查找: 通过 'read_definition' 工具,LLM 可以准确获取代码库中任何符号(如函数、类型、常量等)的完整源代码定义,深入理解代码实现细节。
- 代码引用查找: 利用 'find_references' 工具,LLM 可以快速定位代码库中某个符号的所有用法和引用位置,帮助理解代码的上下文关系和影响范围。
- 代码诊断信息: 借助 'get_diagnostics' 工具,LLM 可以获取指定文件的诊断信息,包括代码中的错误和警告,辅助代码理解和问题排查。
- 代码镜头 (Code Lens): 通过 'get_codelens' 和 'execute_codelens' 工具,LLM 可以获取和执行代码镜头提示,例如运行测试、显示引用次数等,增强代码交互能力。
- 代码编辑应用: 'apply_text_edit' 工具允许 LLM 通过编程方式对代码文件进行多项文本编辑,支持代码重构、添加导入、格式化代码等高级操作。
- 广泛的语言支持: 该 MCP 服务器兼容多种语言服务器,包括 pyright (Python)、tsserver (TypeScript)、gopls (Go)、rust-analyzer (Rust) 等,支持多种编程语言的代码库。
安装步骤
- 安装 Go: 请根据 Go 官方安装指南 安装 Go 语言环境。
- 获取 MCP 服务器: 使用 Go 命令获取或更新 'mcp-language-server' 服务器:
go install github.com/isaacphi/mcp-language-server@latest - 安装语言服务器: 根据您的代码库语言,安装相应的语言服务器。例如:
- 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'
- 其他语言请参考其语言服务器的安装说明。
服务器配置
以下 JSON 配置示例适用于 Claude Desktop 等 MCP 客户端。您需要根据实际情况修改以下参数:
{ "mcpServers": { "language-server": { "command": "go", "args": [ "run", "github.com/isaacphi/mcp-language-server@latest", "--workspace", "/Users/you/dev/yourpythoncodebase", // [**必填**] 请替换为您的项目代码库的绝对路径 "--lsp", "/opt/homebrew/bin/pyright", // [**必填**] 请替换为您安装的语言服务器可执行文件的路径 (例如 pyright, tsserver, gopls, rust-analyzer) "--", // 分隔符,之后为传递给语言服务器的参数 "--stdio" // [**可选**] 语言服务器参数,通常语言服务器需要 '--stdio' 参数来使用标准输入输出进行通信 ], "env": { "DEBUG": "1" // [**可选**] 调试模式,设置为 "1" 可开启详细日志输出 } } } }
基本使用方法
- 将上述 JSON 配置添加到您的 MCP 客户端(如 Claude Desktop)的设置中。
- 启动 MCP 客户端,客户端将自动连接到 'mcp-language-server' 服务器。
- 在 MCP 客户端中,您可以指示 LLM 使用 'read_definition'、'find_references'、'get_diagnostics' 等工具,结合自然语言指令,与您的代码库进行智能交互,例如:
- "使用 'read_definition' 工具查找函数 'calculate_average' 的定义。"
- "使用 'find_references' 工具查找变量 'user_name' 在代码库中的所有引用。"
- "使用 'get_diagnostics' 工具检查文件 'src/utils.py' 的代码错误。"
信息
分类
开发者工具