使用说明
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的关键规则
- 读取文件前使用LSP -
hover()比读取整个文件更快 - 使用search()获取LSP位置 -结果可以直接与其他工具一起使用
- 编码前学习API -使用
hover()和signature_help()在使用不熟悉的方法之前 - 始终通过诊断进行验证 -快跑
diagnostics()任何代码更改后 - 使用重构工具进行跨文件更改 -
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 │
└──────────────┘ └──────────────┘
许可证
麻省理工学院
