Token导航 LogoToken导航TokenDH.com
MCP Lsp Proxy logo
AI代理stdio官方级别未说明来源级核验

MCP Lsp Proxy

MCP Server

一个代理多个语言服务器协议(LSP)服务器的模型上下文协议(MCP)服务器,使AI助手能够访问代码智能功能。

工具数

7

提示词数

0

GitHub Stars

0

资源数

0
开发工具PythonClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

mazdak

提供方

mazdak

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install mcp-lsp-proxy

详细介绍

MCP-LSP代理

一种模型上下文协议(MCP)服务器,代理多个语言服务器协议(LSP)服务器,使AI助手可以访问代码智能功能。

需求:Python 3.11+

特性

  • 多LSP支持:通过Microsoft的MultiLSP库同时连接到多个LSP服务器
  • 自动语言检测:根据文件扩展名将请求路由到适当的LSP
  • 增强的LSP功能:

- 转到定义 - 查找引用 - 悬停信息 - 文件符号 - 代码完成 - 工作空间符号搜索

  • 智能工作空间检测:根据特定语言的标记自动查找项目根
  • TOML配置:简单的配置格式
  • 异步架构:本机异步/等待支持高效的并发操作
  • 强大的Go支持:使用自动工作区配置正确处理gopl

安装

先决条件

  1. Python 3.11+ -代理服务器需要
  2. (可选)-如果你想使用Go语言功能
  3. Node.js (可选)-如果你想使用Types/JavaScript功能

安装代理

使用紫外线(推荐):

# Install in development mode
uv sync --extra dev

# Or install globally
uv tool install mcp-lsp-proxy

使用pip:

pip install mcp-lsp-proxy

快速开始

  1. 创建配置文件:
mcp-lsp-proxy --init
  1. 测试服务器:
mcp-lsp-proxy

配置

创建一个 mcp-lsp-config.toml 文件:

# Global proxy settings
[proxy]
log_level = "INFO"
timeout = 30.0
auto_restart = true
max_restart_attempts = 3

# Python LSP
[lsp.python]
name = "Python LSP"
languages = ["python", "py"]

# TypeScript/JavaScript LSP
[lsp.typescript]
name = "TypeScript LSP"
languages = ["typescript", "javascript", "ts", "js", "tsx", "jsx"]

# Go LSP
[lsp.go]
name = "Go LSP"
languages = ["go"]

# Rust LSP
[lsp.rust]
name = "Rust LSP"
languages = ["rust", "rs"]

# Add more LSP servers as needed

高级配置

借助MultiLSP后端,配置得以简化:

  • name:语言的显示名称
  • languages:语言标识符或文件扩展名列表

MultiLSP自动处理:

  • 语言服务器安装和管理
  • 工作空间检测和配置
  • 特定于服务器的初始化选项
  • 环境设置

代理将根据特定语言的标记自动检测工作区根:

  • 去: go.mod
  • python pyproject.toml, setup.py, requirements.txt
  • Types/JavaScript: package.json, tsconfig.json
  • 锈蚀: Cargo.toml
  • Java pom.xml, build.gradle

要创建默认配置,请执行以下操作:

mcp-lsp-proxy --init

集成指南

克劳德桌面

  1. 查找您的配置文件:

- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 窗户: %APPDATA%\Claude\claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json

  1. 添加LSP代理配置:
{
  "mcpServers": {
    "lsp-proxy": {
      "command": "mcp-lsp-proxy",
      "args": ["--config", "/path/to/mcp-lsp-config.toml"],
      "env": {
        "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}
  1. 重新启动克劳德桌面 加载新配置。
  1. 验证它是否正常工作 让Claude分析你项目中的代码。

克劳德代码(CLI)

Claude Code是Anthropic的官方CLI工具。您可以通过多种方式配置MCP服务器:

  1. 使用CLI向导:
   claude mcp add
  1. 通过命令直接添加:
   claude mcp add-json lsp-proxy '{"command":"mcp-lsp-proxy","args":["--config","/path/to/mcp-lsp-config.toml"]}'
  1. 项目配置(.mcp.json 在项目根目录中):
   {
     "mcpServers": {
       "lsp-proxy": {
         "command": "mcp-lsp-proxy",
         "args": ["--config", "./mcp-lsp-config.toml"],
         "env": {
           "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"
         }
       }
     }
   }
  1. 使用克劳德代码:
   claude --mcp-config /path/to/mcp-config.json

其他MCP客户端

对于任何兼容MCP的客户端,请使用以下设置:

  • 命令: mcp-lsp-proxy
  • 参数: ["--config", "/path/to/config.toml"]
  • 协议:stdio(标准输入/输出)

故障排除集成

  1. 检查服务器是否正在运行:
   mcp-lsp-proxy --config your-config.toml

您应该看到: MCP-LSP Proxy (MultiLSP) started

  1. 验证语言服务器:

- 对于Go: which go 应该返回一条路径 - 对于Python:MultiLSP会自动处理此问题 - 对于TypeScript: which node 应该返回一条路径

  1. 检查日志:

log_level = "DEBUG" 在配置文件中查看详细的日志记录。

使用示例

集成后,您可以将这些命令与您的AI助手一起使用:

导航代码

"Go to the definition of the calculate function in main.py"
"Find all references to the User class"
"Show me what the process_data function does" (uses hover)

探索代码库

"What symbols are defined in this file?"
"Search for all functions that contain 'parse' in their name"
"Show me all the methods of the Calculator class"

编码时获得帮助

"What completions are available after 'math.'?"
"What parameters does this function take?"
"Find where this variable is defined"

可用工具

goto_definition

导航到符号的定义。

参数:

  • uri:文件URI(例如。, file:///path/to/file.py)
  • line:行号(0索引)
  • character:字符位置(0索引)

输出示例:

Definition(s) found:
  → utils.py:25:5

find_references

查找对符号的所有引用。

参数:

  • uri:文件URI
  • line:行号(0索引)
  • character:字符位置(0索引)
  • include_declaration:在结果中包含声明(默认值:true)

输出示例:

Found 5 reference(s) in 3 file(s):

main.py:
  Line 15, Col 8
  Line 42, Col 12

utils.py:
  Line 25, Col 5

tests/test_main.py:
  Line 10, Col 16
  Line 35, Col 20

get_hover

在某个位置获取悬停信息(类型信息、文档)。

参数:

  • uri:文件URI
  • line:行号(0索引)
  • character:字符位置(0索引)

输出示例:

def process_data(items: List[Dict[str, Any]]) -> DataFrame

Process a list of items and return a pandas DataFrame.

Parameters:
- items: List of dictionaries containing item data

Returns:
- DataFrame with processed results
设计说明:虽然hover主要是为交互式IDE体验而设计的,但它提供了有价值的类型签名和文档,帮助AI助手更好地理解代码上下文,而不仅仅是阅读源代码。

get_diagnostics

获取文件或工作区的诊断信息(错误、警告)。

参数:

  • uri:文件URI(可选,对所有文件省略)

输出示例:

Errors (2):
  main.py:15:10 - Undefined variable 'x' [pylsp]
  utils.py:8:1 - Missing return statement [pylsp]

Warnings (1):
  config.py:20:5 - Unused import 'os' [pylsp]

get_document_symbols

获取文档中的符号(函数、类等)。

参数:

  • uri:文件URI

输出示例:

Document symbols:
• MyClass (Class)
  • __init__ (Method)
  • process (Method)
  • validate (Method)
• helper_function (Function)
• CONSTANTS (Variable)

get_completions

在某个位置获取代码补全。

参数:

  • uri:文件URI
  • line:行号(0索引)
  • character:字符位置(0索引)

输出示例:

Available completions:
• Add (Method) - func (c Calculator) Add(a, b int) int
• Multiply (Method) - func (c Calculator) Multiply(a, b int) int
• String (Method) - func (c Calculator) String() string
... and 5 more

search_workspace_symbols

在整个工作空间中搜索符号。

参数:

  • query:搜索查询字符串
  • workspace:工作区路径(可选,如果未提供,则自动检测)

输出示例:

Found 3 symbol(s) matching 'Add':

/path/to/project/calculator.go:
  • Add (Function) - Line 15, Col 1
  • AddNumbers (Function) - Line 42, Col 1

/path/to/project/math/utils.go:
  • AddFloat (Function) - Line 8, Col 1

语言服务器设置

在使用代理之前,您需要安装要使用的语言服务器:

Python(pylsp)

pip install python-lsp-server[all]

Types/JavaScript

npm install -g typescript typescript-language-server

锈蚀(锈蚀分析仪)

rustup component add rust-analyzer

Go(gopls)

go install golang.org/x/tools/gopls@latest

Java

从下载Java语言服务器 Eclipse JDT。LS

发展

设置

# Clone the repository
git clone https://github.com/yourusername/mcp-lsp-proxy
cd mcp-lsp-proxy

# Install with dev dependencies
uv sync --extra dev

运行测试

# Run all tests
uv run pytest

# Run with coverage
uv run pytest --cov=mcp_lsp_proxy

# Run specific test file
uv run pytest tests/test_server.py

代码质量

# Format code
uv run ruff format .

# Lint
uv run ruff check --fix .

# Type checking
uv run mypy .

建筑

MCP-LSP代理充当使用模型上下文协议(MCP)的AI助手和实现语言服务器协议(LSP)的语言服务器之间的桥梁。它使用微软的MultiLSP库来处理复杂的LSP协议实现。

┌─────────────────┐         ┌──────────────────┐         ┌──────────────┐
│   AI Assistant  │◄────────┤  MCP-LSP Proxy   ├────────►│ LSP Servers  │
│  (MCP Client)   │  MCP    │   (MultiLSP)     │  LSP    │              │
└─────────────────┘         └──────────────────┘         └──────────────┘

为什么选择MultiLSP?

此项目使用 微软的MultiLSP 库而不是从头开始实现LSP,因为:

  1. 自动语言服务器管理 -MultiLSP自动下载和管理语言服务器
  2. 统一API -所有语言(Python、Go、TypeScript、Rust等)的接口相同
  3. 战斗测试 -微软用于AI编码场景
  4. 简化配置 -无需指定LSP服务器命令或安装路径
  5. 更好的错误处理 -缺少依赖项时清除错误消息

核心组件

  1. MCPMultiLSP服务器 (server.py)-使用微软MultiLSP的主服务器

- 通过list_tools/call_tool模式注册和处理MCP工具 - 自动工作空间检测和管理 - 由MultiLSP处理的语言服务器生命周期

  1. 工作区管理器 -智能工作空间检测

- 根据语言标记(go.mod、package.json等)查找项目根 - 缓存工作区路径以提高性能 - 处理URI到路径的转换

  1. 多LSP集成 -利用微软的库

- 处理所有LSP协议通信 - 管理语言服务器子流程 - 提供统一的异步API

  1. 配置 (config.py)-简化的TOML配置

性能优化

  • 预计算语言映射:O(1)查找LSP服务器的文件扩展名
  • 连接复用:跨请求的持久LSP连接
  • 异步I/O:高效处理多个并发请求

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 确保所有测试通过
  5. 提交拉取请求

已知限制

多LSP集成

  • 语言支持:仅限于MultiLSP支持的语言(Python、Go、TypeScript、JavaScript、Rust、Java、C#、Ruby、Dart、Kotlin)
  • Python版本:MultiLSP需要Python 3.8-3.10才能完全兼容,尽管在大多数情况下它与3.11+兼容

功能限制

  • 缺少LSP功能:一些高级LSP功能尚未公开:

- 代码操作(重构、修复) - 跨文件重命名符号 - 文件格式化 - 诊断(错误/警告)

  • 文档生命周期:MultiLSP在内部处理文档同步,但不向MCP层公开实时编辑
  • 以工作空间为中心:每个语言服务器实例都绑定到特定的工作区根。代理自动检测和管理多个工作区。

性能注意事项

虽然该架构包括用于缓存和连接池的TODO,但这些可能不是必需的:

  • LSP服务器已在内部缓存
  • 每种语言一个连接通常就足够了
  • 大多数操作都足够快,无需额外的缓存

故障排除

LSP服务器未启动

  • 检查LSP命令是否在您的PATH中
  • 验证手动运行时该命令是否有效: pylsp --stdio
  • 检查日志 log_level = "DEBUG" 在配置中

未返回任何结果

  • 确保文件存在并且可访问
  • 某些LSP要求将文件保存到磁盘
  • 检查文件扩展名是否与配置的语言匹配

超时错误

  • 增加配置中的超时时间:
  [proxy]
  timeout = 60.0  # seconds

提示和最佳实践

  1. 文件URI:始终使用适当的文件URI(例如。, file:///absolute/path/to/file.py)
  2. 0索引位置:行和字符位置为0索引,符合LSP规范
  3. 多个LSP:您可以为同一语言配置多个LSP服务器;代理将使用最后一个定义的代理
  4. 工作区文件夹:在TOML中为项目感知功能配置工作区文件夹
  5. 演出:代理保持与LSP服务器的持久连接,以获得更好的性能

支持的语言服务器

使用MultiLSP后端,开箱即用支持以下语言:

  • python:通过绝地语言服务器(自动管理)
  • :通过gopls(完全配合适当的工作空间检测)
  • Types/JavaScript:通过TypeScript语言服务器
  • :通过锈蚀分析仪
  • Java:通过Eclipse JDT。LS
  • C:通过OmniSharp
  • 红宝石:通过Solargraph
  • 达特:通过Dart语言服务器
  • 科特林:通过Kotlin语言服务器

MultiLSP自动处理这些语言服务器的下载和配置。

许可证

MIT许可证-有关详细信息,请参阅许可证文件

目录标签

目录标签

开发工具PythonClaude代码智能本地部署语言服务器AI助手多语言支持

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

7

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP