Language Server
MCP Language Server gives MCP enabled clients access to semantic tools like get definition, references, rename, and diagnostics.
MCP Language Server
This is an MCP server that runs and exposes a language server to LLMs. Not a language server for MCP, whatever that would be.
Demo
mcp-language-server helps MCP enabled clients navigate codebases more easily by giving them access semantic tools like get definition, references, rename, and diagnostics.

Setup
- Install Go: Follow instructions at https://golang.org/doc/install
- Install or update this server:
go install github.com/isaacphi/mcp-language-server@latest - Install a language server: follow one of the guides below
- Configure your MCP client: follow one of the guides below
<p><strong>Note</strong>:</p>
<ul>
<li>Replace <code>/path/to/your/clangd_binary</code> with the actual path to your clangd executable.</li>
<li><code>--compile-commands-dir</code> should point to the directory containing your <code>compile_commands.json</code> file (e.g., <code>./build</code>, <code>./cmake-build-debug</code>).</li>
<li>Ensure <code>compile_commands.json</code> is generated for your project for clangd to work effectively.</li>
</ul>
Tools
definition: Retrieves the complete source code definition of any symbol (function, type, constant, etc.) from your codebase.references: Locates all usages and references of a symbol throughout the codebase.diagnostics: Provides diagnostic information for a specific file, including warnings and errors.hover: Display documentation, type hints, or other hover information for a given location.rename_symbol: Rename a symbol across a project.edit_file: Allows making multiple text edits to a file based on line numbers. Provides a more reliable and context-economical way to edit files compared to search and replace based edit tools.
About
This codebase makes use of edited code from gopls to handle LSP communication. See ATTRIBUTION for details. Everything here is covered by a permissive BSD style license.
mcp-go is used for MCP communication. Thank you for your service.
This is beta software. Please let me know by creating an issue if you run into any problems or have suggestions of any kind.
Contributing
Please keep PRs small and open Issues first for anything substantial. AI slop O.K. as long as it is tested, passes checks, and doesn't smell too bad.
Setup
Clone the repo:
git clone https://github.com/isaacphi/mcp-language-server.git
cd mcp-language-server
A justfile is included for convenience:
just -l
Available recipes:
build # Build
check # Run code audit checks
fmt # Format code
generate # Generate LSP types and methods
help # Help
install # Install locally
snapshot # Update snapshot tests
test # Run tests
Configure your Claude Desktop (or similar) to use the local binary:
{
"mcpServers": {
"language-server": {
"command": "/full/path/to/your/clone/mcp-language-server/mcp-language-server",
"args": [
"--workspace",
"/path/to/workspace",
"--lsp",
"language-server-executable"
],
"env": {
"LOG_LEVEL": "DEBUG"
}
}
}
}
Rebuild after making changes.
Logging
Setting the LOG_LEVEL environment variable to DEBUG enables verbose logging to stderr for all components including messages to and from the language server and the language server's logs.
LSP interaction
internal/lsp/methods.gocontains generated code to make calls to the connected language server.internal/protocol/tsprotocol.gocontains generated code for LSP types. I borrowed this fromgopls's source code. Thank you for your service.- LSP allows language servers to return different types for the same methods. Go doesn't like this so there are some ugly workarounds in
internal/protocol/interfaces.go.
Local Development and Snapshot Tests
There is a snapshot test suite that makes it a lot easier to try out changes to tools. These run actual language servers on mock workspaces and capture output and logs.
You will need the language servers installed locally to run them. There are tests for go, rust, python, and typescript.
integrationtests/
├── tests/ # Tests are in this folder
├── snapshots/ # Snapshots of tool outputs
├── test-output/ # Gitignored folder showing the final state of each workspace and logs after each test run
└── workspaces/ # Mock workspaces that the tools run on
To update snapshots, run UPDATE_SNAPSHOTS=true go test ./integrationtests/...
Related Servers
Scout Monitoring MCP
sponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Remote MCP Server (Authless)
A remote MCP server deployable on Cloudflare Workers without authentication.
Claude Code Guardian
AI-Safe Code Analysis with 113+ MCP tools for guard validation, memory, workflow, and testing.
Starwind UI
A server providing tools for developers working with Starwind UI components.
Hoverfly MCP Server
An MCP server exposing Hoverfly as a programmable API simulation tool for AI assistants.
ComfyUI
An MCP server for ComfyUI integration.
MATLAB MCP Server
Integrates MATLAB with AI to execute code, generate scripts from natural language, and access documentation.
Dev Manager
A development management tool for project planning, task management, and development workflows.
mcp4gql
An MCP server that acts as a bridge, allowing MCP clients to interact with a target GraphQL API.
MCP Stdio Server
An MCP server using stdio transport, offering file system access, a calculator, and a code review tool. Requires Node.js.
MCP WordPress Server
A server for integrating with the WordPress REST API.