local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Integrates with Python language server (pyright) to provide code intelligence, including definitions, references, diagnostics, and code lens for Python codebases
Integrates with Rust language server (rust-analyzer) to provide code intelligence, including definitions, references, diagnostics, and code lens for Rust codebases
Integrates with TypeScript language server (tsserver) to provide code intelligence, including definitions, references, diagnostics, and code lens for TypeScript codebases
MCP 语言服务器
运行语言服务器并提供与其通信工具的模型上下文协议 (MCP) 服务器。
动机
在处理小型项目时,Claude 桌面和文件系统服务器的使用体验就像魔法一样。但当你添加一些文件并导入一些文件后,它就开始变得难以使用了。我希望通过这个项目,在处理大型项目时也能拥有这样的体验。
语言服务器擅长处理 LLM 经常遇到的难题,例如精确理解类型、理解关系以及提供准确的符号引用。本项目旨在将这些工具引入 LLM。LSP 似乎也为 MCP 提供了明确的灵感来源,那么何不将它们结合起来呢?
地位
⚠️ Beta 版前的质量 ⚠️
我已经使用以下语言服务器测试了此服务器
- pyright(Python)
- tsserver(TypeScript)
- gopls(Go)
- 锈蚀分析仪(Rust)
但它应该与更多兼容。
工具
read_definition
:从代码库中检索任何符号(函数、类型、常量等)的完整源代码定义。find_references
:在整个代码库中定位符号的所有用法和引用。get_diagnostics
:提供特定文件的诊断信息,包括警告和错误。get_codelens
:检索代码镜头提示,以获取有关代码的附加上下文和操作。execute_codelens
:运行代码镜头动作。apply_text_edit
:允许以编程方式对文件进行多次文本编辑。
在后台,这个 MCP 服务器可以对来自语言服务器的workspace/applyEdit
请求采取行动,因此它可以应用重构请求、添加导入、格式化代码等。
每个工具都支持各种自定义输出的选项,例如添加行号或附加上下文。有关详细用法,请参阅工具文档。行号是apply_text_edit
进行精确编辑所必需的。
关于
此代码库利用gopls中编辑的代码来处理 LSP 通信。详情请参阅 ATTRIBUTION。
mcp-go用于 MCP 通信。
先决条件
安装 Go:按照https://golang.org/doc/install上的说明进行操作
获取或更新此服务器:
为您的代码库安装语言服务器:
- 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 Desktop 设置(或类似的支持 MCP 的客户端)中添加类似以下配置的内容:
代替:
/Users/you/dev/yourcodebase
为您的项目的绝对路径/opt/homebrew/bin/pyright-langserver
为您的语言服务器的路径(使用which
命令找到,例如which pyright-langserver
)--
之后的任何参数都将作为参数发送到您的语言服务器。- 所有环境变量都会传递给语言服务器。有些变量可能对你的语言服务器来说是必需的。例如,
gopls
需要GOPATH
和GOCACHE
才能正常工作。 LOG_LEVEL
是可选的。见下文。
发展
克隆存储库:
安装开发依赖项:
建造:
运行测试:
更新测试快照:
配置您的 Claude Desktop(或类似桌面)以使用本地二进制文件:
进行更改后重建。
反馈
包括
获取详细的 LSP 和应用程序日志。将LOG_LEVEL
设置为 DEBUG 可启用所有组件的详细日志记录。使用wire:DEBUG
添加LOG_COMPONENT_LEVELS
可显示原始 LSP JSON 消息。请在提交问题时尽可能多地提供相关信息。
我关注的功能如下:
- [x] 阅读定义
- [x] 获取参考
- [x] 应用编辑
- [x] 获取诊断
- [x] 代码镜头
- [ ] 悬停信息
- [ ] 代码操作
- [ ] 更好地处理上下文和取消
- [ ] 添加 LSP 服务器配置选项和常用语言的预设
- [ ] 为工具(分页等)提供更一致、更可扩展的 API
- [ ] 在更高抽象级别创建工具,在阅读定义或参考时结合诊断、代码镜头、悬停和代码操作。
This server cannot be installed
运行语言服务器并提供与其通信的工具。语言服务器擅长处理法学硕士 (LLM) 经常遇到的难题,例如精确理解类型、理解关系以及提供准确的符号引用。