MCP Language Server
Runs a language server and provides tools for communicating with it. Language servers excel at tasks that LLMs often struggle with, such as precisely understanding types, understanding relationships, and providing accurate symbol references.
isaacphi
README
MCP Language Server
A Model Context Protocol (MCP) server that runs a language server and provides tools for communicating with it.
Motivation
Claude desktop with the filesystem server feels like magic when working on small projects. This starts to fall apart after you add a few files and imports. With this project, I want to create that experience when working with large projects.
Language servers excel at tasks that LLMs often struggle with, such as precisely understanding types, understanding relationships, and providing accurate symbol references. This project aims to makes bring those tools to LLMs. LSP also seems like a clear inspiration for MCP so why not jam them together?
Status
⚠️ Pre-beta Quality ⚠️
I have tested this server with the following language servers
- pyright (Python)
- tsserver (TypeScript)
- gopls (Go)
- rust-analyzer (Rust)
But it should be compatible with many more.
Tools
read_definition
: Retrieves the complete source code definition of any symbol (function, type, constant, etc.) from your codebase.find_references
: Locates all usages and references of a symbol throughout the codebase.get_diagnostics
: Provides diagnostic information for a specific file, including warnings and errors.get_codelens
: Retrieves code lens hints for additional context and actions on your code.execute_codelens
: Runs a code lens action.apply_text_edit
: Allows making multiple text edits to a file programmatically.
Behind the scenes, this MCP server can act on workspace/applyEdit
requests from the language server, so it can apply things like refactor requests, adding imports, formatting code, etc.
Each tool supports various options for customizing output, such as including line numbers or additional context. See the tool documentation for detailed usage. Line numbers are necessary for apply_text_edit
to be able to make accurate edits.
About
This codebase makes use of edited code from gopls to handle LSP communication. See ATTRIBUTION for details.
mcp-golang is used for MCP communication.
Prerequisites
Install Go: Follow instructions at https://golang.org/doc/install
Fetch or update this server:
go install github.com/isaacphi/mcp-language-server@latest
Install a language server for your codebase:
- Python (pyright):
npm install -g pyright
- TypeScript (tsserver):
npm install -g typescript typescript-language-server
- Go (gopls):
go install golang.org/x/tools/gopls@latest
- Rust (rust-analyzer):
rustup component add rust-analyzer
- Or use any language server
Setup
Add something like the following configuration to your Claude Desktop settings (or similar MCP-enabled client):
{
"mcpServers": {
"language-server": {
"command": "go",
"args": [
"run",
"github.com/isaacphi/mcp-language-server@latest",
"--workspace",
"/Users/you/dev/yourcodebase",
"--lsp",
"/opt/homebrew/bin/pyright-langserver",
"--",
"--stdio"
],
"env": {
"DEBUG": "1"
}
}
}
}
Replace:
/Users/you/dev/yourcodebase
with the absolute path to your project/opt/homebrew/bin/pyright-langserver
with the path to your language server (found usingwhich
command e.g.which pyright-langserver
)- Any aruments after
--
are sent as arguments to your language server. - Any env variables are passed on to the language server. Some may be necessary for you language server. For example,
gopls
requiredGOPATH
andGOCACHE
in order for me to get it working properly. DEBUG=1
is optional. See below.
Development
Clone the repository:
git clone https://github.com/isaacphi/mcp-language-server.git
cd mcp-language-server
Install dev dependencies:
go mod download
Build:
go build
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",
"/path/to/language/server"
],
"env": {
"DEBUG": "1"
}
}
}
}
Rebuild after making changes.
Feedback
Include
env: {
"DEBUG": 1
}
To get detailed LSP and application logs. Please include as much information as possible when opening issues.
The following features are on my radar:
- [x] Read definition
- [x] Get references
- [x] Apply edit
- [x] Get diagnostics
- [x] Code lens
- [ ] Hover info
- [ ] Code actions
- [ ] Better handling of context and cancellation
- [ ] Add LSP server configuration options and presets for common languages
- [ ] Make a more consistent and scalable API for tools (pagination, etc.)
- [ ] Create tools at a higher level of abstraction, combining diagnostics, code lens, hover, and code actions when reading definitions or references.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
MCP Package Docs Server
Facilitates LLMs to efficiently access and fetch structured documentation for packages in Go, Python, and NPM, enhancing software development with multi-language support and performance optimization.
Claude Code MCP
An implementation of Claude Code as a Model Context Protocol server that enables using Claude's software engineering capabilities (code generation, editing, reviewing, and file operations) through the standardized MCP interface.
@kazuph/mcp-taskmanager
Model Context Protocol server for Task Management. This allows Claude Desktop (or any MCP client) to manage and execute tasks in a queue-based system.
Linear MCP Server
Enables interaction with Linear's API for managing issues, teams, and projects programmatically through the Model Context Protocol.
mermaid-mcp-server
A Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images.
Jira-Context-MCP
MCP server to provide Jira Tickets information to AI coding agents like Cursor

Linear MCP Server
A Model Context Protocol server that integrates with Linear's issue tracking system, allowing LLMs to create, update, search, and comment on Linear issues through natural language interactions.

Sequential Thinking MCP Server
This server facilitates structured problem-solving by breaking down complex issues into sequential steps, supporting revisions, and enabling multiple solution paths through full MCP integration.