mcp-language-server

MCP.Pizza Chef: isaacphi

Instead of guessing where a function lives, an assistant can look it up the way your editor does. It finds a symbol's real definition, lists every place that symbol is used, reads the documentation that normally appears on hover, renames something across a whole project, and reports the warnings and errors in a file. Go, Rust, Python, TypeScript, and C or C++ are documented, and most other standard language servers should work. Installing needs Go plus a few lines in your app's settings.

Coding

Use This MCP server To

Find where a function is actually defined List every place a variable gets used Rename a symbol across the whole project safely See the errors and warnings in one file Look up what a function's documentation says

README

MCP Language Server

Go Tests Go Report Card GoDoc Go Version

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.

Demo

Setup

  1. Install Go: Follow instructions at https://golang.org/doc/install
  2. Install or update this server: go install github.com/isaacphi/mcp-language-server@latest
  3. Install a language server: follow one of the guides below
  4. Configure your MCP client: follow one of the guides below
Go (gopls)

Install gopls: go install golang.org/x/tools/gopls@latest

Configure your MCP client: This will be different but similar for each client. For Claude Desktop, add the following to ~/Library/Application\ Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "language-server": {
      "command": "mcp-language-server",
      "args": ["--workspace", "/Users/you/dev/yourproject/", "--lsp", "gopls"],
      "env": {
        "PATH": "/opt/homebrew/bin:/Users/you/go/bin",
        "GOPATH": "/users/you/go",
        "GOCACHE": "/users/you/Library/Caches/go-build",
        "GOMODCACHE": "/Users/you/go/pkg/mod"
      }
    }
  }
}

Note: Not all clients will need these environment variables. For Claude Desktop you will need to update the environment variables above based on your machine and username:

  • PATH needs to contain the path to go and to gopls. Get this with echo $(which go):$(which gopls)
  • GOPATH, GOCACHE, and GOMODCACHE may be different on your machine. These are the defaults.
Rust (rust-analyzer)

Install rust-analyzer: rustup component add rust-analyzer

Configure your MCP client: This will be different but similar for each client. For Claude Desktop, add the following to ~/Library/Application\ Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "language-server": {
      "command": "mcp-language-server",
      "args": [
        "--workspace",
        "/Users/you/dev/yourproject/",
        "--lsp",
        "rust-analyzer"
      ]
    }
  }
}

mcp-language-server FAQ

Which programming languages does it support?
Go, Rust, Python, TypeScript, and C or C++ are documented, and most other standard language servers should work too.
Which apps does it work in?
Claude Desktop is documented in detail, and any MCP-capable app can use the same settings.
Do I need a paid key?
No. It runs entirely on your own machine.
Can I use this to rename something everywhere at once?
Yes — rename is one of its tools, and it updates every reference across the project.
How hard is the setup?
You need Go to install it, plus the language server for whichever language you use, then a short settings block.
Is this a language server for MCP?
The other way round. It runs an ordinary language server and shares what that server knows with your assistant.
Will it help on a large codebase?
That is the point. It looks things up precisely instead of the assistant reading file after file.