MCP Language Server
A bridge from an LSP language server to the agent: definitions, references, diagnostics, hover and symbol rename
Install
go install github.com/isaacphi/mcp-language-server@latestThen install a language server, for example go install golang.org/x/tools/gopls@latest.
This is third-party code. Review the repository files before installing.
What it does
The server launches a chosen language server such as gopls, rust-analyzer, pyright or clangd and exposes its features over MCP. The agent gets a symbol's full definition, all its usages, file diagnostics and hover info with types. Rename works project-wide through LSP rather than text search. There is also a line-number based file editing tool.
Who it is for. For developers who want the agent to navigate a large codebase semantically instead of by grep.
Good fit when
- You need every call site of a function in a large project
- You need to rename a type or method safely
- The agent needs compiler diagnostics for a file without a full build
Not a fit when
- The agent already runs inside an IDE with LSP access
- Your language has no stdio language server
Example request
Find every usage of ParseConfig and rename it to LoadConfigLimitations
Requires Go to install and a separately installed language server. One instance serves one workspace and one LSP. The author calls it beta and tested it only with gopls, rust-analyzer, pyright, typescript-language-server and clangd. Claude Desktop may need PATH and Go variables set explicitly.
How to disable. Remove the language-server block from the MCP config. The binary lives in $GOPATH/bin.
MCP
- Transport
- stdio
- Authentication
- not required
| Environment variables | |
|---|---|
| LOG_LEVEL | DEBUG enables verbose logs to stderr. |
Security check
- Runs a language server and reads project files
- Can edit files and rename symbols across the project
README in short
The README covers installation with go install and gives ready Claude Desktop configs for gopls, rust-analyzer, pyright, typescript-language-server and clangd. It lists six tools: definition, references, diagnostics, hover, rename_symbol and edit_file. LSP protocol code is partly adapted from gopls, and mcp-go handles MCP. Snapshot tests run against real language servers. BSD-3-Clause licensed.
FAQ
Which languages are supported?
Any with a stdio language server. Go, Rust, Python, TypeScript and C/C++ are tested.
How do I pass arguments to the language server?
Everything after -- in args goes to the language server, for example --stdio for pyright.
Related
A skills library that gives coding agents a development process: brainstorming, planning, TDD, subagents and code review
Skills for real engineers by Matt Pocock
Skills For Real Engineers
Small composable skills for engineering with agents: plan grilling, TDD, bug diagnosis, code review and architecture
GitHub toolkit for spec-driven development: the specify CLI adds agent commands and skills to a project, from principles to implementation
Reference MCP servers
Model Context Protocol servers
Official reference MCP servers: Filesystem, Fetch, Git, Memory, Sequential Thinking, Time and Everything