Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Universal LSP MCP server
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"lsp": {
"command": "npx",
"args": [
"-y",
"@theupsider/lsp-mcp"
]
}
}
}Run this in your terminal
claude mcp add lsp -- npx -y @theupsider/lsp-mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"lsp": {
"command": "npx",
"args": [
"-y",
"@theupsider/lsp-mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"lsp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@theupsider/lsp-mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account theUpsider, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.1.6) reached the registry 6 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, VMware Storage
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
VMware vSphere storage with 16 MCP tools: datastores, iSCSI, vSAN, FC multipath.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
One MCP server to rule all Language Servers — automatic language detection, zero-config setup.
A Model Context Protocol (MCP) server that gives language models access to Language Server Protocol (LSP) functionality across all major programming languages. Unlike existing LSP-MCP servers, this project supports 13 languages out of the box with zero manual configuration — it automatically detects your codebase, selects the right language server, and exposes all LSP operations through a stable, language-independent tool interface.
| Language | Language Server | Auto-Detected Via |
|---|---|---|
| Python | pyright / pylsp | pyproject.toml, setup.py |
| TypeScript | typescript-language-server | tsconfig.json |
| JavaScript | typescript-language-server | package.json |
| C# | omnisharp | *.csproj, *.sln |
| Java | vscode-java / jdtls | pom.xml, build.gradle |
| Go | gopls | go.mod |
| Rust | rust-analyzer | Cargo.toml |
| C / C++ | clangd | *.c, *.cpp, *.h |
| Ruby | solargraph | Gemfile |
| PHP | intelephense | composer.json |
| Kotlin | kotlin-language-server | build.gradle.kts |
| Swift | sourcekit-lsp | Package.swift |
package.json, Cargo.toml, go.mod, etc.)lsp_init disappears from the tool list once all servers start cleanlylsp_init reappears if a previously-working server starts failing (e.g. language added, binary missing)text field + raw LSP data in raw fieldImportant: Install
lsp-mcpon the same machine where your code lives. The language servers it manages need direct filesystem access to your codebase — they cannot work over a remote connection or on a different machine than your source files.
# npm
npm install -g @theupsider/lsp-mcp@latest
bun install -g @theupsider/lsp-mcp@latest
Add to your workspace .vscode/mcp.json (recommended — ensures the server runs on the same machine as your code, including SSH remotes, WSL, and Dev Containers):
{
"servers": { "lsp-mcp": { "type": "stdio", "command": "npx", "args": ["-y", "@theupsider/lsp-mcp@latest"] } } }
Why workspace config? VS Code runs servers defined in
.vscode/mcp.jsonwherever the workspace lives. Servers defined in your user profile always run locally — which breaks LSP when your code is on a remote machine.
# Run the server (reads from stdin, writes to stdout)
lsp-mcp
The server starts with no active project. Most clients auto-initialize when they support the MCP Roots protocol (VS Code, Copilot, etc.), but lsp_init remains available as a manual override.
For clients without Roots support, the first action the model must take is calling lsp_init:
lsp_init({ root: "/path/to/your/project" })
lsp_init will:
Optional: pre-warm specific languages (skips detection, faster cold start):
lsp_init({ root: "/path/to/project", languages: ["python", "typescript"] })
Persistence: Once initialized, the workspace configuration (detected languages) is saved to your OS-standard config directory (~/.config/lsp-mcp/ on Linux, ~/Library/Application Support/lsp-mcp/ on macOS, %APPDATA%\lsp-mcp\ on Windows). On subsequent server startups, the MCP server will automatically reconnect using the last-known root, so you rarely need to call lsp_init again.
Re-emergence: If a language server that was previously healthy fails to start (e.g. you added a new language or removed a binary), lsp_init will reappear in the tool list, signaling the model should re-initialize.
| Tool | Description | Key Parameters | Visibility |
|---|---|---|---|
lsp_init | Initialize server for a project root | root (required), languages (optional string array) | Conditional — hidden after a successful explicit lsp_init call |
lsp_definition | Go to definition | file, line, character | Always |
lsp_references | Find all references | file, line, character | Always |
lsp_document_symbols | List symbols in a file | file | Always |
lsp_workspace_symbols | Search symbols across workspace | query (limit: 100–500 results) | Always |
lsp_diagnostics | Get errors & warnings | file (scope: file or workspace) | Always |
lsp_type_definition | Go to type definition | file, line, character | Always |
lsp_implementation | Find implementations | file, line, character | Always |
lsp_health | Check status of all LSP servers | _(none)_ | Always |
| Tool | Description | Key Parameters |
|---|---|---|
lsp_rename | Rename symbol | file, line, character, newName |
lsp_code_action | Apply / list code actions | file, line, character, apply |
lsp_formatting | Format document | file |
lsp_range_formatting | Format code range | file, range |
| Environment Variable | Description | Default |
|---|---|---|
LSP_MCP_LOG_LEVEL | Log level: error, info, debug | info |
Two helper scripts are included for setting up a development environment:
# 1. Install language runtimes
chmod +x setup-languages-ubuntu24.sh ./setup-languages-ubuntu24.sh
chmod +x setup-lsp.sh ./setup-lsp.sh
source ~/.bashrc
If a language server cannot be auto-installed, the server logs a structured error and continues running for other languages. Manually install the missing server:
# Python
pipx install python-lsp-server
dotnet tool install -g omnisharp-roslyn
npm install -g vscode-java
gem install solargraph
Ensure your project root contains a language marker file (e.g., package.json for TypeScript, Cargo.toml for Rust). The server scans the directory passed to lsp_init for these markers.
Each language server runs as a separate process. For large projects with many languages, consider limiting the workspace or using LSP_MCP_LOG_LEVEL=info to monitor server health.
┌─────────────────────────────────────────────┐
│ MCP Client (AI Model) │ └──────────────────┬──────────────────────────┘ │ MCP Protocol (stdio) ▼ ┌─────────────────────────────────────────────┐ │ LSP MCP Server (Node.js) │ │ ┌───────────┐ ┌──────────┐ ┌───────────┐ │ │ │ lsp_init │ │ lsp_... │ │ lsp_... │ │ │ └─────┬─────┘ └────┬─────┘ └─────┬─────┘ │ │ └─────────────┼─────────────┘ │ │ ▼ │ │ Language Router & Adapter │ │ (auto-detects language → selects LSP) │ └──────┬──────────┬──────────┬───────────┬─────┘ │ │ │ │ ▼ ▼ ▼ ▼ pyright typescript gopls clangd pylsp lsp rust- ... analyzer
Apache-2.0