MCP Language Server

by isaacphi
Verified
BSD 3-Clause
172
  • Apple
  • Linux

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上的说明进行操作

获取或更新此服务器:

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 Desktop 设置(或类似的支持 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": { "LOG_LEVEL": "INFO" } } } }

代替:

  • /Users/you/dev/yourcodebase为您的项目的绝对路径
  • /opt/homebrew/bin/pyright-langserver为您的语言服务器的路径(使用which命令找到,例如which pyright-langserver
  • --之后的任何参数都将作为参数发送到您的语言服务器。
  • 所有环境变量都会传递给语言服务器。有些变量可能对你的语言服务器来说是必需的。例如, gopls需要GOPATHGOCACHE才能正常工作。
  • LOG_LEVEL是可选的。见下文。

发展

克隆存储库:

git clone https://github.com/isaacphi/mcp-language-server.git cd mcp-language-server

安装开发依赖项:

go mod download

建造:

go build

运行测试:

go test ./...

更新测试快照:

UPDATE_SNAPSHOTS=true go test ./integrationtests/...

配置您的 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": { "LOG_LEVEL": "DEBUG" } } } }

进行更改后重建。

反馈

包括

env: { "LOG_LEVEL": "DEBUG", }

获取详细的 LSP 和应用程序日志。将LOG_LEVEL设置为 DEBUG 可启用所有组件的详细日志记录。使用wire:DEBUG添加LOG_COMPONENT_LEVELS可显示原始 LSP JSON 消息。请在提交问题时尽可能多地提供相关信息。

我关注的功能如下:

  • [x] 阅读定义
  • [x] 获取参考
  • [x] 应用编辑
  • [x] 获取诊断
  • [x] 代码镜头
  • [ ] 悬停信息
  • [ ] 代码操作
  • [ ] 更好地处理上下文和取消
  • [ ] 添加 LSP 服务器配置选项和常用语言的预设
  • [ ] 为工具(分页等)提供更一致、更可扩展的 API
  • [ ] 在更高抽象级别创建工具,在阅读定义或参考时结合诊断、代码镜头、悬停和代码操作。
-
security - not tested
A
license - permissive license
-
quality - not tested

运行语言服务器并提供与其通信的工具。语言服务器擅长处理法学硕士 (LLM) 经常遇到的难题,例如精确理解类型、理解关系以及提供准确的符号引用。

  1. Motivation
    1. Status
      1. Tools
        1. About
          1. Prerequisites
            1. Setup
              1. Development
                1. Feedback
                  ID: 217llrqnne