LSP-MCP
Minimal MCP server bridging a Roslyn C# language server to AI agents, exposing tools for diagnostics, call hierarchy, and type hierarchy.
README
LSP-MCP
Minimal MCP server that bridges any Language Server Protocol (LSP) server to AI agents (e.g. GitHub Copilot CLI). Exposes diagnostics (errors, warnings, info) as lightweight tool calls.
Tools
Tools are generated per server entry, prefixed by the config key:
| Tool pattern | Description |
|---|---|
{prefix}_get_errors |
Compilation errors for a file (or all open files) |
{prefix}_get_warnings |
Warnings for a file |
{prefix}_get_info |
Info/hint diagnostics (style rules, analyzers) |
lsp_status |
All LSP servers' state for debugging |
Example with "cs" prefix: cs_get_errors, cs_get_warnings, cs_get_info
Setup
pip install -e .
Configuration
Create .github/lsp.json in your workspace root. Each key is the tool prefix — keep it short:
{
"lspServers": {
"cs": {
"command": "path/to/Microsoft.CodeAnalysis.LanguageServer.exe",
"args": ["--stdio", "--autoLoadProjects"],
"fileExtensions": {".cs": "csharp"}
}
}
}
Multiple servers generate prefixed tools automatically:
{
"lspServers": {
"cs": { "command": "...", "args": [...], "fileExtensions": {".cs": "csharp"} },
"py": { "command": "pyright-langserver", "args": ["--stdio"], "fileExtensions": {".py": "python"} }
}
}
This exposes: cs_get_errors, cs_get_warnings, py_get_errors, py_get_warnings, etc.
The fileExtensions map tells the server which languageId to send in textDocument/didOpen. Common extensions (.py, .ts, .go, .rs, etc.) are detected automatically if omitted.
Usage with Copilot CLI
Add to ~/.copilot/mcp-config.json:
{
"mcpServers": {
"lsp": {
"type": "stdio",
"command": "python",
"args": ["-m", "lsp_mcp", "--workspace", "/path/to/your/project"]
}
}
}
CLI Options
lsp-mcp [--workspace PATH]
--workspace,-w: Workspace root containing.github/lsp.json(defaults to cwd)
How It Works
- Reads
.github/lsp.jsonto find the LSP server command - Spawns the language server with
--stdioand performs the LSP initialize handshake - On tool call: opens the file, pulls diagnostics via
textDocument/diagnostic, filters by severity - Falls back to push diagnostics (
publishDiagnostics) if pull returns empty - Returns concise JSON with line, column, severity, message, and diagnostic code
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.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.