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
MCP server

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.
All reasons and checks

bug-ops/mcpls

Install

Manual install

curl -fsSL https://raw.githubusercontent.com/bug-ops/mcpls/main/scripts/install.sh | sh

For 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 review

Extended 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.

A bridge from an LSP language server to the agent: definitions, references, diagnostics, hover and symbol rename

MCP serverExtended access1.6KRepository stars

cclsp connects LSP language servers to Claude Code over MCP: go to definition, find references, rename symbols and diagnostics with no editor needed

MCP serverExtended access675Repository stars

The agent-lsp MCP server orchestrates language servers into agent workflows: callers, safe edits, renames and diagnostics.

MCP serverBroad access178Repository stars
Russian stack

MCP bridge to BSL Language Server: navigation, diagnostics and refactoring of 1C and OneScript code for agents

MCP serverExtended access71Repository stars

An MCP bridge to VS Code that gives agents language-server diagnostics and symbol references instead of slow tsc runs.

MCP serverBroad access105Repository stars

Roslyn CodeLens MCP gives an agent a semantic map of a .NET solution: callers, type hierarchies, DI, diagnostics and safe renames

MCP serverExtended access74Repository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialAuthenticationRepository starsMain difference
mcpls (this card)nonot required81
cclspnonot required675connects LSP to Claude Code: definitions, references, rename, diagnostics; mcpls adds call hierarchies and symbol search across all servers
agent-lspnonot required178bundles 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.

README badge

Report a problem