mcp语言服务器
运行语言服务器并提供与其通信的工具。语言服务器在一些大型语言模型(LLM)常常难以应对的任务上表现出色,例如精确理解类型、理解关系和提供准确的符号引用。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"language-server": {
"args": [
"run",
"github.com/isaacphi/mcp-language-server@latest",
"--workspace",
"/Users/you/dev/yourcodebase",
"--lsp",
"/opt/homebrew/bin/pyright-langserver",
"--",
"--stdio"
],
"command": "go",
"env": {
"DEBUG": "1"
}
}
}
}
该服务需要配置环境变量:DEBUG、GOCACHE、GOPATH
服务介绍
MCP 语言服务器
一个运行语言服务器并提供与其通信工具的 Model Context Protocol (MCP) 服务器。
动机
当处理小型项目时,带有 文件系统 服务器的 Claude 桌面感觉就像魔法一样。但当你添加几个文件和导入后,这种体验开始变得不那么顺畅了。通过这个项目,我希望在处理大型项目时也能创造类似的体验。
语言服务器擅长于 LLM(大型语言模型)通常难以处理的任务,例如精确理解类型、理解关系以及提供准确的符号引用。本项目旨在将这些工具带给 LLM。LSP(语言服务器协议)似乎也是 MCP 的明显灵感来源,为什么不把它们结合起来呢?
状态
⚠️ 预测试版质量 ⚠️
我已经使用以下语言服务器对此服务器进行了测试:
- pyright (Python)
- tsserver (TypeScript)
- gopls (Go)
- rust-analyzer (Rust)
但它应该与更多语言服务器兼容。
工具
read_definition:从代码库中检索任何符号(函数、类型、常量等)的完整源代码定义。find_references:在整个代码库中定位符号的所有用法和引用。get_diagnostics:为特定文件提供诊断信息,包括警告和错误。get_codelens:检索代码镜头提示,以获取代码的额外上下文和操作。execute_codelens:执行代码镜头操作。apply_text_edit:允许程序化地对文件进行多次文本编辑。
在幕后,此 MCP 服务器可以处理来自语言服务器的 workspace/applyEdit 请求,因此它可以应用诸如重构请求、添加导入、格式化代码等操作。
每个工具都支持各种选项来定制输出,例如包含行号或额外上下文。请参阅工具文档以获取详细的使用说明。对于 apply_text_edit 来说,行号是必要的,以便能够进行准确的编辑。
关于
此代码库使用了来自 gopls 的修改过的代码来处理 LSP 通信。详情请见 ATTRIBUTION 文件。
mcp-golang 用于 MCP 通信。
前提条件
安装 Go:按照 https://golang.org/doc/install 上的说明进行操作。
获取或更新此服务器:
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 - 或者使用任何其他语言服务器
设置
在您的 Claude 桌面设置(或类似的 MCP 启用客户端)中添加类似以下配置:
{
"mcpServers": {
"language-server": {
"command": "go",
"args": [
"run",
"github.com/isaacphi/mcp-language-server@latest",
"--workspace",
"/Users/you/dev/yourcodebase",
"--lsp",
"/opt/homebrew/bin/pyright-langserver",
"--",
"--stdio"
],
"env": {
"DEBUG": "1"
}
}
}
}
替换:
- 将
/Users/you/dev/yourcodebase替换为你的项目的绝对路径 - 将
/opt/homebrew/bin/pyright-langserver替换为你语言服务器的路径(使用which命令找到,例如which pyright-langserver) --之后的任何参数都会作为参数传递给你的语言服务器。- 任何环境变量都会传递给语言服务器。有些环境变量对于你的语言服务器可能是必需的。例如,
gopls需要GOPATH和GOCACHE才能正常工作。 DEBUG=1是可选的。请参见下方说明。
开发
克隆仓库:
git clone https://github.com/isaacphi/mcp-language-server.git
cd mcp-language-server
安装开发依赖项:
go mod download
构建:
go build
配置你的 Claude Desktop(或类似软件)以使用本地二进制文件:
{
"mcpServers": {
"language-server": {
"command": "/full/path/to/your/clone/mcp-language-server/mcp-language-server",
"args": [
"--workspace",
"/path/to/workspace",
"--lsp",
"/path/to/language/server"
],
"env": {
"DEBUG": "1"
}
}
}
}
在进行更改后重新构建。
反馈
包含
env: {
"DEBUG": 1
}
以获取详细的 LSP 和应用程序日志。请在提交问题时尽可能提供更多信息。
以下功能在我的计划中:
- 查看定义
- 获取引用
- 应用编辑
- 获取诊断信息
- 代码镜头
- 悬停信息
- 代码操作
- 更好地处理上下文和取消
- 添加 LSP 服务器配置选项和常见语言的预设
- 为工具创建一个更一致且可扩展的 API(分页等)
- 在更高层次的抽象上创建工具,在查看定义或引用时结合诊断、代码镜头、悬停和代码操作。