代码智能模型上下文协议服务

为Python和TypeScript提供代码智能分析的模型上下文协议服务,支持LLM代理进行跨文件引用、定义跳转、类型信息获取等功能。

  • by Treedy2020
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Treedy2020/lsp-mcp

使用说明

LSP-MCP

MCP(模型上下文协议)服务器 Python和TypeScript 代码智能。设计用于 LLM代理 比如Claude Code、Codex和其他AI编码助手。

为什么选择MCP进行代码智能?

LLM代理需要了解代码结构才能有效地提供帮助。这些MCP服务器提供:

  • 跨文件引用 -在代码库中查找符号的所有用法
  • 定义跳跃 -导航到定义函数/类的位置
  • 类型信息 -获取准确的类型提示和文档
  • 符号提取 -一目了然地理解代码结构
  • 安全重构 -跨文件重命名、移动、更改签名

与毫秒延迟很重要的IDE插件不同,MCP服务器针对 正确性高于速度在1秒内做出反应是完全可以的——重要的是为LLM提供准确的信息以防止幻觉。

快速入门(推荐)

使用 统一lsp-mcp服务器 它同时支持Python和TypeScript:

{
  "mcpServers": {
    "lsp-mcp": {
      "command": "npx",
      "args": ["@treedy/lsp-mcp@latest"]
    }
  }
}

此单一服务器提供:

  • 命名空间工具: python_hover, typescript_definition等等。
  • 自动语言检测:根据文件扩展名推断语言
  • 自动更新:启动时后端更新到最新版本
  • 延迟加载:后端仅在首次使用时启动

特性

特性 Python TypeScript 描述
悬停 ✓ ✓ 获取类型信息和文档
定义 ✓ ✓ 跳转到符号定义
参考文献✓ ✓ 查找对某个符号的所有引用
完工 ✓ ✓ 获取代码完成建议
诊断 ✓ ✓ 获取类型错误和警告
符号 ✓ ✓ 从文件中提取符号
重命名 ✓ ✓ 跨文件重命名符号
搜索 ✓ ✓ 代码库中的正则表达式搜索
签名_帮助 ✓ ✓ 获取函数签名信息
移动 ✓ ✓ 将函数/类移动到另一个文件
函数_签名 ✓ ✓ 获取当前函数签名
可用因素 - ✓ 在相应位置列出可用的重构
应用程序重构 - ✓ 应用特定的重构
change_签名 ✓ - 修改功能参数

项目结构

.
├── lsp-mcp/                          # 🚀 Unified MCP server (recommended entry point)
│   ├── src/
│   │   ├── index.ts                  # Main server entry point
│   │   ├── config.ts                 # Configuration and env vars
│   │   ├── backend-manager.ts        # Manages backend subprocesses
│   │   ├── tool-router.ts            # Routes tools to backends
│   │   ├── prompts.ts                # Skills exposed as MCP prompts
│   │   ├── backends/                 # Backend configurations
│   │   └── tools/                    # Meta tools (status, check_versions)
│   ├── package.json
│   └── README.md
│
├── backends/
│   ├── python_
│   │   ├── python-lsp-mcp/           # 🐍 Python backend (Rope + Pyright)
│   │   │   ├── src/rope_mcp/
│   │   │   │   ├── server.py         # MCP server
│   │   │   │   ├── config.py         # Backend configuration
│   │   │   │   ├── rope_client.py    # Rope integration
│   │   │   │   ├── pyright_client.py # Pyright integration
│   │   │   │   ├── lsp/              # LSP client utilities
│   │   │   │   └── tools/            # Tool implementations
│   │   │   ├── tests/
│   │   │   └── pyproject.toml
│   │   │
│   │   ├── pyright-mcp/              # 🐍 Python backend (Pyright only, TypeScript impl)
│   │   │   ├── src/
│   │   │   │   ├── index.ts          # MCP server
│   │   │   │   ├── lsp-client.ts     # Pyright LSP client
│   │   │   │   ├── lsp/              # LSP utilities
│   │   │   │   └── tools/            # Tool implementations
│   │   │   └── package.json
│   │   │
│   │   └── fixtures/                 # Python test files
│   │
│   └── typescript_
│       ├── typescript-lsp-mcp/       # 📘 TypeScript backend
│       │   ├── src/
│       │   │   ├── index.ts          # MCP server
│       │   │   └── ts-service.ts     # TypeScript language service
│       │   └── package.json
│       │
│       └── fixtures/                 # TypeScript test files
│
├── skills/                           # 📚 Agent skills and rules
│   ├── code-navigation.md            # hover, definition, references
│   ├── code-analysis.md              # symbols, diagnostics, search
│   ├── refactoring.md                # rename, move, change_signature
│   ├── rules.md                      # Best practices
│   └── claude-code.md                # Claude Code integration
│
├── docs/                             # 📖 Documentation
│   ├── FEATURES.md                   # Feature comparison
│   ├── BENCHMARKS.md                 # Performance benchmarks
│   └── ROPE_REFACTORING.md           # Rope refactoring guide
│
└── README.md                         # This file

个人后端

如果您更喜欢单独使用后端:

Python(Python-lsp-mcp)

{
  "mcpServers": {
    "python-lsp-mcp": {
      "command": "uvx",
      "args": ["python-lsp-mcp"]
    }
  }
}

支持两个分析后端:

  • 绳索 (默认)-快速,Python原生,支持重构
  • 正确 -完整的类型检查,更好的跨文件分析

Python(版权所有mcp)

{
  "mcpServers": {
    "pyright-mcp": {
      "command": "npx",
      "args": ["@treedy/pyright-mcp@latest"]
    }
  }
}

直接使用Pyright LSP实现TypeScript。

TypeScript(类型脚本lsp-mcp)

{
  "mcpServers": {
    "typescript-lsp-mcp": {
      "command": "npx",
      "args": ["@treedy/typescript-lsp-mcp@latest"]
    }
  }
}

代理技能和规则

这 技能/ 文件夹包含AI代理指南:

文档 描述
代码导航.md 使用鼠标悬停、定义和引用导航代码
重构.md 安全的跨文件重构
代码分析.md 分析代码结构并查找错误
rules.md 使用LSP工具的最佳实践

LLM的关键规则

  1. 读取文件前使用LSP - hover() 比读取整个文件更快
  2. 使用search()获取LSP位置 -结果可以直接与其他工具一起使用
  3. 编码前学习API -使用 hover() 和 signature_help() 在使用不熟悉的方法之前
  4. 始终通过诊断进行验证 -快跑 diagnostics() 任何代码更改后
  5. 使用重构工具进行跨文件更改 - rename() beats手动搜索替换

配置

环境变量(lsp-mcp)

变量 默认值 描述
LSP_MCP_PYTHON_ENABLED true 启用Python后端
LSP_MCP_PYTHON_PROVIDER python-lsp-mcp Python提供者(python-lsp-mcp 或 pyright-mcp)
LSP_MCP_TYPESCRIPT_ENABLED true 启用TypeScript后端
LSP_MCP_AUTO_UPDATE true 启动时自动更新后端

建筑

┌─────────────────────────────────────────────────────────────────┐
│                      Claude Code / AI Client                     │
└─────────────────────────────────────────────────────────────────┘
                              │ MCP (stdio)
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                          lsp-mcp                                 │
│                    (Unified MCP Server)                          │
│                                                                  │
│  ┌────────────────────────────────────────────────────────────┐ │
│  │                    Tool Router                              │ │
│  │  python_hover → Python backend                             │ │
│  │  typescript_definition → TypeScript backend                │ │
│  └────────────────────────────────────────────────────────────┘ │
│         │                                      │                 │
│         ▼                                      ▼                 │
│  ┌────────────┐                        ┌────────────┐           │
│  │  Python    │                        │ TypeScript │           │
│  │  Backend   │                        │  Backend   │           │
│  └────────────┘                        └────────────┘           │
└─────────────────────────────────────────────────────────────────┘
        │ MCP (stdio)                          │ MCP (stdio)
        ▼                                      ▼
┌──────────────┐                        ┌──────────────┐
│python-lsp-mcp│                        │typescript-   │
│ (subprocess) │                        │ lsp-mcp      │
└──────────────┘                        └──────────────┘

许可证

麻省理工学院