nzrsky/lsp-mcp-server
LSP-MCP Server written in Zig
A high-performance bridge server written in Zig that connects Language Server Protocol (LSP) servers to Model Context Protocol (MCP) clients. This enables AI coding assistants like Claude Code, Claude Desktop, Gemini CLI, and GitHub Copilot to interact with any LSP-compatible language server.
brew install nzrsky/tap/lsp-mcp-server
# Nix profile
nix profile install github:nzrsky/lsp-mcp-server
# NixOS configuration.nix
services.lsp-mcp-server.enable = true;
# Add repository
curl -fsSL https://github.com/nzrsky/lsp-mcp-server/releases/latest/download/pubkey.gpg | sudo apt-key add -
echo "deb https://github.com/nzrsky/lsp-mcp-server/releases/latest/download/ stable main" | sudo tee /etc/apt/sources.list.d/lsp-mcp-server.list
# Install
sudo apt update && sudo apt install lsp-mcp-server
# Fedora
sudo dnf install lsp-mcp-server
# RHEL/CentOS (with EPEL)
sudo dnf install epel-release
sudo dnf install lsp-mcp-server
# Using yay
yay -S lsp-mcp-server
# Using paru
paru -S lsp-mcp-server
sudo zypper install lsp-mcp-server
sudo apk add lsp-mcp-server
pkg install lsp-mcp-server
pkg_add lsp-mcp-server
emerge lsp-mcp-server
xbps-install lsp-mcp-server
sudo snap install lsp-mcp-server
flatpak install flathub org.lsp_mcp_server.LspMcpServer
# Download and run
wget https://github.com/nzrsky/lsp-mcp-server/releases/latest/download/lsp-mcp-server-x86_64.AppImage
chmod +x lsp-mcp-server-x86_64.AppImage
./lsp-mcp-server-x86_64.AppImage
smithery install lsp-mcp-server
# Official image
docker pull ghcr.io/nzrsky/lsp-mcp-server:latest
# Docker Hub
docker pull nzrsky/lsp-mcp-server:latest
podman pull ghcr.io/nzrsky/lsp-mcp-server:latest
cargo install lsp-mcp-server
npm install -g lsp-mcp-server
go install github.com/nzrsky/lsp-mcp-server@latest
Download from GitHub Releases:
lsp-mcp-server-linux-x86_64.tar.gz
lsp-mcp-server-macos-x86_64.tar.gz
/ lsp-mcp-server-macos-arm64.tar.gz
lsp-mcp-server-windows-x86_64.zip
lsp-mcp-server-freebsd-x86_64.tar.gz
git clone https://github.com/nzrsky/lsp-mcp-server.git
cd lsp-mcp-server
make build
sudo make install
- name: Setup LSP-MCP Server
uses: nzrsky/setup-lsp-mcp-server@v1
with:
version: 'latest'
image: ghcr.io/nzrsky/lsp-mcp-server:latest
kubectl apply -f https://github.com/nzrsky/lsp-mcp-server/releases/latest/download/kubernetes.yaml
# Run with Docker (fastest)
docker run --rm -v "$(pwd):/workspace" ghcr.io/nzrsky/lsp-mcp-server:latest --server zls
# Install with package manager
brew install nzrsky/tap/lsp-mcp-server # macOS/Linux
nix profile install github:nzrsky/lsp-mcp-server # Nix
sudo apt install lsp-mcp-server # Ubuntu/Debian
sudo dnf install lsp-mcp-server # Fedora/RHEL
# Use immediately
lsp-mcp-server --server zls
# Use with ZLS (Zig Language Server)
lsp-mcp-server --server zls
# Use with Rust Analyzer
lsp-mcp-server --server rust-analyzer
# Use with Go Language Server
lsp-mcp-server --server gopls
# Use custom configuration
lsp-mcp-server --config /path/to/config.json
Add to your Claude Code configuration:
{
"mcpServers": {
"lsp-bridge": {
"command": "lsp-mcp-server",
"args": ["--server", "zls"]
}
}
}
Add to claude_desktop_config.json
:
{
"mcpServers": {
"lsp-bridge": {
"command": "/usr/local/bin/lsp-mcp-server",
"args": ["--server", "rust-analyzer"]
}
}
}
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ AI Assistant โ โ lsp-mcp-server โ โ Language Server โ
โ (Claude Code) โโโโโบโ (Zig Bridge) โโโโโบโ (ZLS/etc.) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
MCP Bridge LSP
The server acts as a protocol bridge:
Language | Server | Installation |
---|---|---|
Zig | ZLS | brew install zls |
Rust | rust-analyzer | cargo install rust-analyzer |
Go | gopls | go install golang.org/x/tools/gopls@latest |
TypeScript | typescript-language-server | npm install -g typescript-language-server |
Python | python-lsp-server | pip install python-lsp-server |
C/C++ | clangd | brew install llvm |
Java | jdtls | Eclipse JDT Language Server |
C# | omnisharp | OmniSharp Language Server |
Create a configuration file at ~/.config/lsp-mcp-server/config.json
:
{
"servers": {
"zls": {
"command": "zls",
"args": [],
"languages": ["zig"],
"initialization_options": {}
},
"rust-analyzer": {
"command": "rust-analyzer",
"args": [],
"languages": ["rust"],
"initialization_options": {
"cargo": {"buildScripts": {"enable": true}}
}
}
},
"mcp": {
"timeout_ms": 5000,
"tools": {
"hover": {"enabled": true},
"definition": {"enabled": true},
"completion": {"enabled": true}
}
}
}
See config/lsp-mcp-server.json.example for a complete example.
The project includes a comprehensive test suite with mock LSP servers to eliminate timeouts:
# Quick development testing (30 seconds)
make test-mock
# Full development workflow
make quick
# Run unit tests only
make test
# Run BDD integration tests with mock servers
make test-bdd-mock
# Run all tests (comprehensive)
make test-comprehensive
# Simulate full CI pipeline locally
make ci-local
# Clone and start development container
git clone https://github.com/nzrsky/lsp-mcp-server.git
cd lsp-mcp-server
make docker-dev
FROM ghcr.io/nzrsky/lsp-mcp-server:latest
# Add your language servers
RUN npm install -g typescript-language-server
# Copy configuration
COPY config.json /etc/lsp-mcp-server/config.json
ENTRYPOINT ["lsp-mcp-server"]
CMD ["--server", "typescript-language-server"]
Platform | Command |
---|---|
Homebrew | brew install nzrsky/tap/lsp-mcp-server |
Nix | nix profile install github:nzrsky/lsp-mcp-server |
APT | sudo apt install lsp-mcp-server |
YUM/DNF | sudo dnf install lsp-mcp-server |
Smithery | smithery install lsp-mcp-server |
Docker | docker pull ghcr.io/nzrsky/lsp-mcp-server |
See INSTALL.md for detailed installation instructions.
We welcome contributions! Please see our contributing guidelines.
# Clone the repository
git clone https://github.com/nzrsky/lsp-mcp-server.git
cd lsp-mcp-server
# Install dependencies (Nix)
make dev
# Or install Zig manually
curl -L https://ziglang.org/download/0.14.1/zig-linux-x86_64-0.14.1.tar.xz | tar -xJ
# Quick development cycle
make quick
# Run comprehensive tests
make test-comprehensive
# Simulate CI locally before pushing
make ci-local
โโโ src/
โ โโโ main.zig # Entry point and CLI
โ โโโ mcp.zig # MCP protocol implementation
โ โโโ lsp_client.zig # Generic LSP client
โ โโโ config.zig # Configuration management
โโโ tests/
โ โโโ bdd_framework.zig # BDD testing framework
โ โโโ test_runner.zig # BDD test scenarios
โโโ config/ # Configuration examples
โโโ debian/ # Debian packaging
โโโ Formula/ # Homebrew formula
โโโ packaging/ # RPM packaging
โโโ Dockerfile # Container configuration
โโโ flake.nix # Nix flake
โโโ docker-compose.yml # Development environment
# Enable debug logging
LSP_MCP_LOG_LEVEL=debug lsp-mcp-server --server zls
# Test connectivity
lsp-mcp-server --server zls --test
# Run local development tests
make test-mock
# Check formatting and build
make quick
This project is licensed under the MIT License - see the LICENSE file for details.
WebSocket Support: Alternative to stdio for web integration
Language Server Discovery: Automatic detection of installed servers
Plugin System: Custom protocol extensions
Metrics: Prometheus/OpenTelemetry integration
GUI Configuration: Web-based configuration interface
Multi-Server: Support multiple language servers simultaneously
Built with โค๏ธ in Zig | Powered by LSP and MCP
GitHub โข Documentation โข Issues โข Discussions