mcpls
     
停止将代码视为文本。给你的AI代理一个编译器的理解。
mcpls是人工智能编码助手和语言服务器之间的通用桥梁。它通过模型上下文协议展示了LSP的全部功能——类型推理、交叉引用分析、语义导航,使AI代理能够像IDE一样对代码进行推理。
为什么是mcpls?
人工智能编码助手非常有能力,但他们是盲目工作的。他们将代码视为文本,而不是实际的结构化、类型化、互联的系统。
mcpls改变了这一点。 通过桥接MCP和LSP,它使AI代理能够访问:
- 类型信息 --确切地知道变量是什么,而不是它可能是什么
- 交叉引用 --在整个代码库中查找符号的每个用法
- 语义导航 --跳转到定义、实现、类型声明
- 真实诊断 --查看实际的编译器错误,而不是幻觉错误
- 安全重构 --在工作区范围内自信地重命名符号
\[!提示\] Rust项目的零配置。只需安装mcpls和锈蚀分析仪即可。
安装
cargo install mcplsPre-built binaries & other methods
下载自 :
| 平台 | 架构 | 下载 |
|---|---|---|
| Linux | x86_64 | mcpls-linux-x86_64.tar.gz |
| Linux | x86_64(静态) | mcpls-linux-x86_64-musl.tar.gz |
| macOS | 英特尔 | mcpls-macos-x86_64.tar.gz |
| macOS | 苹果硅 | mcpls-macos-aarch64.tar.gz |
| Windows | x86_64 | mcpls-windows-x86_64.zip |
来源:
git clone https://github.com/bug-ops/mcpls
cd mcpls
cargo install --path crates/mcpls-cliPrerequisites (language servers)
mcpls使用优雅降级——如果一个语言服务器发生故障,它会继续使用可用的服务器。
锈蚀(锈蚀分析仪):
rustup component add rust-analyzer
# Or: brew install rust-analyzer (macOS)Python(版权):
npm install -g pyrightTypeScript:
npm install -g typescript-language-server typescriptGo(gopls):
go install golang.org/x/tools/gopls@latest\[!重要\] 必须至少有一个语言服务器可用。
快速开始
1.配置克劳德代码 (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"mcpls": {
"command": "mcpls",
"args": []
}
}
}2.体验差异:
You: What's the return type of process_request on line 47?
Claude: [get_hover] It returns Result where:
- Response is defined in src/types.rs:23
- ApiError is an enum with variants: Network, Parse, Timeout
You: Find everywhere ApiError::Timeout is handled
Claude: [get_references] Found 4 matches:
- src/handlers/api.rs:89 — retry logic
- src/handlers/api.rs:156 — logging
- src/middleware/timeout.rs:34 — wrapper
- tests/api_tests.rs:201 — test caseMCP工具
Code Intelligence
| 工具 | 它做什么 |
|---|---|
get_hover | 任何位置的类型签名、文档、推断类型 |
get_definition | 跳转到定义符号的位置——跨文件、跨板条箱 |
get_references | 工作区中符号的每次使用 |
get_completions | 尊重类型和范围的上下文感知建议 |
get_document_symbols | 结构化大纲——函数、类型、常量、导入 |
workspace_symbol_search | 在整个工作空间中按名称查找符号 |
Diagnostics & Analysis
| 工具 | 它做什么 |
|---|---|
get_diagnostics | 真正的编译器错误和警告,而不是猜测 |
get_cached_diagnostics | 从LSP服务器快速访问基于推送的诊断 |
get_code_actions | 快速修复、重构和源代码操作 |
Refactoring & Call Hierarchy
| 工具 | 它做什么 |
|---|---|
rename_symbol | 带完整引用跟踪的工作区范围重命名 |
format_document | 应用特定语言的格式规则 |
prepare_call_hierarchy | 在调用层次结构的某个位置获取可调用项 |
get_incoming_calls | 查找函数的所有调用者(谁调用此函数?) |
get_outgoing_calls | 查找函数的所有被调用者(这调用什么?) |
Server Monitoring
| 工具 | 它做什么 |
|---|---|
get_server_logs | 使用内部日志消息调试LSP问题 |
get_server_messages | 来自语言服务器的面向用户的消息 |
配置
Server Heuristics
mcpls使用智能启发式方法只生成相关的语言服务器。每台服务器在启动前都会检查项目标记。
| 语言 | 服务器 | 项目标记 |
|---|---|---|
| 锈蚀 | 锈蚀分析仪 | Cargo.toml, rust-toolchain.toml |
| Python | 版权 | pyproject.toml, setup.py, requirements.txt |
| TypeScript | TypeScript语言服务器 | package.json, tsconfig.json |
| Go | gopls | go.mod, go.sum |
| C/C++ | CMakeLists.txt, compile_commands.json, Makefile | |
| Zig | zls | build.zig, build.zig.zon |
\[!提示\] 启发式使用OR逻辑——如果存在任何标记,服务器就会生成。
自定义启发式:
[[lsp_servers]]
language_id = "rust"
command = "rust-analyzer"
[lsp_servers.heuristics]
project_markers = ["Cargo.toml", "rust-toolchain.toml", ".rust-version"]Environment Variables
| 变量 | 描述 | 默认值 |
|---|---|---|
MCPLS_CONFIG | 配置文件路径 | 自动检测到 |
MCPLS_LOG | 日志级别(跟踪、调试、信息、警告、错误) | info |
MCPLS_LOG_JSON | 以JSON格式输出日志 | false |
配置文件位置:
| 平台 | 默认位置 |
|---|---|
| Linux | ~/.config/mcpls/mcpls.toml |
| macOS | ~/.config/mcpls/mcpls.toml 或 ~/Library/Application Support/mcpls/ |
| 窗户 | %APPDATA%\mcpls\mcpls.toml |
Full Configuration Example
[workspace]
roots = ["/path/to/project"]
heuristics_max_depth = 10
[[lsp_servers]]
language_id = "rust"
command = "rust-analyzer"
args = []
file_patterns = ["**/*.rs"]
timeout_seconds = 30
[lsp_servers.heuristics]
project_markers = ["Cargo.toml", "rust-toolchain.toml"]
[lsp_servers.initialization_options]
cargo.features = "all"
checkOnSave.command = "clippy"
[[language_extensions]]
extensions = ["nu"]
language_id = "nushell"看 配置参考 对于所有选项。
支持的语言服务器
mcpls适用于任何符合LSP 3.17标准的服务器。战斗测试:
View supported servers
| 语言 | 服务器 | 备注 |
|---|---|---|
| Rust | 锈蚀分析仪 | 零配置,内置支持 |
| Python | 版权 | 全类型推理 |
| TypeScript/JS | TypeScript语言服务器 | JSX/TSX支持 |
| Go | gopls | 模块和工作区 |
| C/C++ | clangd | compile_commands.json |
| Java | jdtls | Maven/Gradle项目 |
| Zig | zls | build.zip支持 |
| 24+其他 | 任何LSP 3.17服务器 | 请参阅 文档 |
建筑
View architecture diagram
flowchart TB
subgraph AI["AI Agent (Claude)"]
end
subgraph mcpls["mcpls Server"]
MCP["MCP Server
(rmcp)"]
Trans["Translation Layer"]
LSP["LSP Clients
Manager"]
MCP --> Trans --> LSP
end
subgraph Servers["Language Servers"]
RA["rust-analyzer"]
PY["pyright"]
TS["tsserver"]
Other["..."]
end
AI |"MCP Protocol
(JSON-RPC 2.0)"| mcpls
mcpls |"LSP Protocol
(JSON-RPC 2.0)"| Servers关键设计决策:
- 单个二进制 --没有Node.js、Python或其他运行时依赖项
- 异步优先 --基于东京,同时处理多个LSP服务器
- 内存安全 --纯锈,零
unsafe块 - 资源有限 --文档和文件大小的可配置限制
文档
发展
cargo build # Build
cargo nextest run # Test
cargo run -- --log-level debug # Run locally要求: Rust 1.85+(2024年版)
贡献
欢迎捐款。看 贡献.md 作为指导方针。
许可证
双重许可 Apache 2.0 或 麻省理工学院 由您选择。
______________________________________________________________________
mcpls --因为AI应该理解代码,而不仅仅是阅读它。
