MCP Language Server
运行一个语言服务器,并提供与其通信的工具。语言服务器擅长大型语言模型(LLM)经常难以胜任的任务,例如精确理解类型、理解关系以及提供准确的符号引用。
README
MCP 语言服务器
一个模型上下文协议 (MCP) 服务器,它运行一个语言服务器并提供与它通信的工具。
动机
当处理小型项目时,带有 文件系统 服务器的 Claude 桌面感觉就像魔法一样。 但是,在添加一些文件和导入后,这种感觉就开始消失。 通过这个项目,我想在处理大型项目时创建那种体验。
语言服务器擅长 LLM 经常难以完成的任务,例如精确理解类型、理解关系以及提供准确的符号引用。 这个项目旨在将这些工具带给 LLM。 LSP 似乎也是 MCP 的一个明确的灵感来源,所以为什么不把它们结合在一起呢?
状态
⚠️ 预 Beta 质量 ⚠️
我已经在以下语言服务器上测试过此服务器
- 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)--之后的任何参数都作为参数发送到您的语言服务器。- 任何 env 变量都传递给语言服务器。 某些变量对于您的语言服务器可能是必需的。 例如,
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 桌面(或类似工具)以使用本地二进制文件:
{
"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 和应用程序日志。 打开问题时,请尽可能多地包含信息。
以下功能在我的计划中:
- [x] 读取定义
- [x] 获取引用
- [x] 应用编辑
- [x] 获取诊断
- [x] 代码透镜
- [ ] 悬停信息
- [ ] 代码操作
- [ ] 更好地处理上下文和取消
- [ ] 添加 LSP 服务器配置选项和常见语言的预设
- [ ] 为工具创建一个更一致和可扩展的 API(分页等)
- [ ] 在更高的抽象级别上创建工具,在读取定义或引用时结合诊断、代码透镜、悬停和代码操作。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。