m

mcp语言服务器

@isaacphi/mcp-language-server
0 Stars 62 次浏览 isaacphi 更新于 2026-08-23

运行语言服务器并提供与其通信的工具。语言服务器在一些大型语言模型(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 需要 GOPATHGOCACHE 才能正常工作。
  • 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(分页等)
  • 在更高层次的抽象上创建工具,在查看定义或引用时结合诊断、代码镜头、悬停和代码操作。

相关 MCP 服务