MCP Language Server

MCP Language Server

运行一个语言服务器,并提供与其通信的工具。语言服务器擅长大型语言模型(LLM)经常难以胜任的任务,例如精确理解类型、理解关系以及提供准确的符号引用。

Category
访问服务器

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 需要 GOPATHGOCACHE 才能正常工作。
  • 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

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选