mcpls
An MCP to LSP bridge: the agent gets types, references, diagnostics and refactoring from rust-analyzer, pyright and gopls.
- 81 ★ on the repository
- Last commit
- Apache-2.0
Extended access
Why this level
- Language servers execute workspace code and are not sandboxed.
- Rename and code-action results go back to the client, which applies them to files.
Install
- Works in
Manual install
curl -fsSL https://raw.githubusercontent.com/bug-ops/mcpls/main/scripts/install.sh | shFor Linux and macOS. Windows has `install.ps1`, and there is also `cargo install mcpls`. Read the script before running it.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Language servers execute workspace code and are not sandboxed.
- Rename and code-action results go back to the client, which applies them to files.
This is third-party code. Review the repository files before installing.
What it does
mcpls starts your project language servers and turns their capabilities into 31 MCP tools. The agent asks for the type at a position, finds every reference and implementation across the workspace, gets compiler diagnostics and rename or code-action results that the client then applies itself. Call and type hierarchies, formatting, inlay hints and selection ranges are included. Code is addressed by position or by symbol name. In a polyglot project symbol search runs across all servers with each hit tagged by its source. Servers start concurrently, and if one fails the rest keep working.
Who it is for. Developers in Rust, Python, Go, TypeScript and other languages who want the agent to rely on types and compiler diagnostics instead of text search.
Good fit when
- The agent must find every place where `ApiError::Timeout` is handled, and grep confuses similar names.
- Before renaming a function you need exact references across the whole workspace.
- You want real compiler diagnostics before running the build.
- The project spans several languages and symbols must be searched everywhere at once.
Not a fit when
- The language has no language server and you are not ready to install one.
- The repository is untrusted and you did not enable the untrusted-workspace mode.
- You only need to read file text and the agent built-in search is enough.
Example request
Through mcpls find all references to ApiError::Timeout, show the type of process_request and print compiler diagnostics for this file.MCP
- Transport
- stdio, http
- Authentication
- not required
Limitations
A language server has to be installed separately, for example `rustup component add rust-analyzer`. Rust needs no configuration, while other languages need a config file. Servers execute workspace code and mcpls does not sandbox them: read SECURITY.md and the trust chapter before running on code you do not own. A separate mode exists for analysing untrusted code. stdio is the default and the HTTP transport comes with Host and Origin allowlists. Building from source requires Rust 1.99 or newer.
How to disable. Run `claude mcp remove mcpls` and delete the binary or the package with `cargo uninstall mcpls`. Language servers are removed separately and are not tied to mcpls.
FAQ
How do I connect mcpls to Claude Code?
Run `claude mcp add --scope user mcpls -- mcpls`. Rust projects work without configuration, while other languages need server configuration from the project book.
Which language servers work?
Any server that speaks LSP: rust-analyzer, pyright, gopls, clangd, ty, tsgo and others. The project benchmarks cover Go, Rust, C++, Python, TypeScript and Zig.
Is it safe to run mcpls on code I do not own?
Language servers run workspace code with no sandbox. For repositories you do not own enable the untrusted-workspace mode described in the security chapter.
Is there a skill for installation?
Yes, `skills/mcpls` holds a packaged Agent Skill that teaches the agent to install, configure and run mcpls.
Which transport does mcpls use?
stdio by default. HTTP is enabled separately, together with Host and Origin allowlists and resource subscriptions.
Discussion
No questions or reviews yet.
Related
MCP serversA bridge from an LSP language server to the agent: definitions, references, diagnostics, hover and symbol rename
cclsp connects LSP language servers to Claude Code over MCP: go to definition, find references, rename symbols and diagnostics with no editor needed
The agent-lsp MCP server orchestrates language servers into agent workflows: callers, safe edits, renames and diagnostics.
MCP bridge to BSL Language Server: navigation, diagnostics and refactoring of 1C and OneScript code for agents
An MCP bridge to VS Code that gives agents language-server diagnostics and symbol references instead of slow tsc runs.
Roslyn CodeLens MCP gives an agent a semantic map of a .NET solution: callers, type hierarchies, DI, diagnostics and safe renames
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| mcpls (this card) | no | not required | 81 | |
| cclsp | no | not required | 675 | connects LSP to Claude Code: definitions, references, rename, diagnostics; mcpls adds call hierarchies and symbol search across all servers |
| agent-lsp | no | not required | 178 | bundles language servers for an agent; mcpls exposes 31 tools as a single Rust binary, with HTTP and an untrusted-workspace mode |
README in short
A single Rust binary with no runtime dependencies and build-provenance attestations. Details and all tools are described in the project book.