MCPLS - MCP 到 LSP 桥接服务器

使用说明

  • 项目简介 MCPLS 是一个基于 MCP(Model Context Protocol)的后端服务器实现。它将多语言的 LSP 能力通过 MCP 工具暴露给 AI 客户端,允许通过 JSON-RPC 调用获取代码上下文信息、执行外部功能,以及渲染和管理提示模板等。核心目标是为 AI 开发助手提供结构化、可推理的代码上下文服务。

  • 主要功能点

    • 将 LSP 能力暴露为 MCP 工具:包括 hover、定义、引用、诊断、重命名、完成、文档符号、.workspaceSymbol 等核心工具,以及文档格式化等辅助能力。
    • 资源与会话管理:通过文档追踪、语言映射与工作区根目录管理,按需创建和维护资源上下文。
    • 多服务器协同与容错:支持对多语言 LSP 服务器的并发启动、按需初始化,出现部分失败时仍然可用,提供“全部失败/部分成功/全部成功”等状态信息。
    • 安全与扩展性:采用异步架构,提供插件化的工具路由与拦截,便于扩展新的语言服务和工具。
    • JSON-RPC 通信:服务器通过 MCP 规格的 JSON-RPC 2.0 与客户端进行请求-响应交互。
  • 安装步骤

    1. 安装编译工具链(Rust/Cargo 已安装)
    2. 构建并安装 MCPLS 的命令行界面(CLI)组件:使用 cargo 安装路径 crates/mcpls-cli
    3. 启动 mcpls 二进制程序,命令将根据配置启动并暴露 MCP 服务
    4. MCP 客户端按照以下配置(JSON 格式)连接 MCP 服务
  • 服务器配置(给 MCP 客户端使用的配置示例) 该配置用于 MCP 客户端建立与 MCPLS 的连接,包含服务器名称、启动命令及参数等信息: { "serverName": "mcpls", "command": "mcpls", "args": [] }

    • serverName 代表 MCP 客户端将识别的服务器名
    • command 是启动 MCPLS 的可执行名称
    • args 是启动参数(如需要传入的配置文件路径等,示例中为空数组)
  • 基本使用方法

    • 启动后,MCP 客户端向 MCPLS 发送 initialize 请求,握手并获得能力描述
    • MCP 客户端可通过工具列表读取 mcpls 提供的工具集合(如 hover、definition、references、diagnostics、rename、completions、documentSymbols、formatDocument 等)
    • 使用工具时,传入所需的参数(如文件路径、行、字符等),MCPLS 将协调相应的 LSP 调用并返回结果
    • MCPLS 会管理会话、服务器能力及必要的错误处理,遇到部分服务器失败时仍然可以提供可用能力
  • 重要注意

    • MCP 客户端仅需了解 serverName、command、args 等信息以建立连接,无需关心底层实现细节
    • 实际使用时需确保本地环境中有相应的 LSP 服务器可用或通过配置实现自动化加载

服务器信息