首页/编程智能体/mcp-language-server

mcp-language-server

查看源码
2025-5-11
Words 1249Read Time 4 min
Score:85

MCP语言服务器,集成了语言服务器功能,为大语言模型提供代码理解和编辑工具。

Go

MCP 语言服务器

这是一个基于 Model Context Protocol (MCP) 的服务器,运行语言服务器并提供与之通信的工具。

动机

在使用 文件系统服务器 的 Claude 桌面版中,处理小型项目时感觉就像魔法一样。然而,当项目规模增大,添加了多个文件和导入后,这种体验就开始瓦解。通过本项目,我希望在大型项目中也能实现类似的体验。
语言服务器擅长处理大语言模型(LLM)通常难以胜任的任务,例如精确理解类型、理解关系以及提供准确的符号引用。本项目旨在将这些工具引入 LLM。LSP(Language Server Protocol)显然是 MCP 的灵感来源,因此为什么不将它们结合在一起呢?

状态

⚠️ 预测试版本 ⚠️
我已使用以下语言服务器测试过该服务器:
  • gopls (Go)
  • pyright (Python)
  • typescript-language-server (TypeScript)
  • rust-analyzer (Rust)
但它应该与更多语言服务器兼容。

工具

  • read_definition:从代码库中检索任何符号(函数、类型、常量等)的完整源代码定义。
  • find_references:查找代码库中某个符号的所有使用和引用。
  • get_diagnostics:提供特定文件的诊断信息,包括警告和错误。
  • get_codelens:检索代码镜头提示,为代码提供额外的上下文和操作。
  • execute_codelens:执行代码镜头操作。
  • apply_text_edit:允许以编程方式对文件进行多次文本编辑。
  • hover:显示给定位置的文档、类型提示或其他悬停信息。
  • rename_symbol:在整个项目中重命名符号。
在幕后,该 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 (typescript-language-server): 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 客户端)中:
替换以下内容:
  • /Users/you/dev/yourcodebase 为您的项目绝对路径
  • /opt/homebrew/bin/pyright-langserver 为您的语言服务器路径(使用 which 命令查找,例如 which pyright-langserver
  • -- 之后的任何参数都将作为参数传递给您的语言服务器。
  • 任何环境变量都将传递给语言服务器。某些语言服务器可能需要特定的环境变量。例如,gopls 需要 GOPATHGOCACHE 才能正常工作。
  • LOG_LEVEL 是可选的。请参阅下文。

开发

克隆仓库:
安装开发依赖:
构建:
运行测试:
更新测试快照:
配置您的 Claude 桌面版(或类似客户端)以使用本地二进制文件:
在更改后重新构建。

反馈

包含以下内容:
以获取详细的 LSP 和应用程序日志。将 LOG_LEVEL 设置为 DEBUG 会启用所有组件的详细日志记录。添加 LOG_COMPONENT_LEVELS 并设置为 wire:DEBUG 可以显示原始的 LSP JSON 消息。请在提交问题时尽可能提供详细信息。
以下功能正在规划中:
读取定义
获取引用
应用编辑
获取诊断信息
代码镜头
悬停信息
重命名符号
代码操作
更好地处理上下文和取消
添加 LSP 服务器配置选项和常见语言的预设
在更高层次的抽象上创建工具,结合诊断、代码镜头、悬停信息和代码操作,以在读取定义或引用时提供更全面的支持。
上一篇
mcp
下一篇
ast-mcp-server