LSP-MCP
lsp-mcp
El servidor MCP más completo para inteligencia de lenguaje. 22 herramientas que cubren navegación, diagnósticos, refactorización y formato. Verificado mediante CI en 7 lenguajes. Construido directamente sobre la especificación LSP 3.17.
A diferencia de los puentes MCP-LSP típicos, lsp-mcp mantiene una sesión de servidor de lenguaje persistente: los agentes operan en un espacio de trabajo totalmente indexado con diagnósticos en tiempo real y conocimiento entre archivos, no un stub de inicio en frío que olvida el contexto entre llamadas.
Por qué lsp-mcp
lsp-mcp | alternativas típicas | |
Lenguajes (verificados por CI) | 7 | 1–2 |
Herramientas | 22 | 3–5 |
Cumplimiento de especificación LSP | 3.17, construido según especificación | ad hoc |
Modelo de conexión | persistente | por solicitud |
Referencias entre archivos | ✓ | raramente |
Suscripciones a diagnósticos en tiempo real | ✓ | ✗ |
Cobertura de pruebas | 76% sentencias, 86% funciones | raramente probado |
Inicio rápido
{
"mcpServers": {
"lsp": {
"type": "stdio",
"command": "npx",
"args": ["blackwell-systems/LSP-MCP", "<language-id>", "<path-to-lsp-binary>", "<lsp-args>"]
}
}
}TypeScript:
{ "args": ["blackwell-systems/LSP-MCP", "typescript", "typescript-language-server", "--stdio"] }Go:
{ "args": ["blackwell-systems/LSP-MCP", "go", "gopls"] }Rust:
{ "args": ["blackwell-systems/LSP-MCP", "rust", "rust-analyzer"] }Soporte multilingüe
Cada lenguaje a continuación se prueba mediante integración en cada ejecución de CI: start_lsp, open_document, get_diagnostics y get_info_on_location están verificados contra el binario real del servidor de lenguaje:
Lenguaje | Servidor | Instalación |
TypeScript / JavaScript |
|
|
Python |
|
|
Go |
|
|
Rust |
|
|
Java |
| |
C / C++ |
|
|
PHP |
|
|
Herramientas
Todas las herramientas requieren que se llame primero a start_lsp.
Sesión
Herramienta | Descripción |
| Iniciar el servidor de lenguaje con una raíz de proyecto |
| Reiniciar sin reiniciar el servidor MCP |
| Abrir un archivo para seguimiento (requerido antes de consultas de posición) |
| Dejar de rastrear un archivo |
Análisis
Herramienta | Descripción |
| Errores y advertencias: omita |
| Información al pasar el ratón (firmas de tipo, docs) en una posición |
| Sugerencias de autocompletado en una posición |
| Firma de función y parámetro activo en un sitio de llamada |
| Correcciones rápidas y refactorizaciones para un rango |
| Todos los símbolos en un archivo (funciones, clases, variables) |
| Buscar símbolos por nombre en todo el espacio de trabajo |
Navegación
Herramienta | Descripción |
| Todas las referencias a un símbolo en todo el espacio de trabajo |
| Saltar a donde se define un símbolo |
| Saltar a la definición de tipo de un símbolo |
| Saltar a todas las implementaciones de una interfaz o método abstracto |
| Saltar a la declaración de un símbolo (distinto de la definición, p. ej., cabeceras C/C++) |
Refactorización
Herramienta | Descripción |
| Obtener un |
| Validar que un cambio de nombre sea posible antes de confirmar |
| Obtener ediciones de formato |
| Aplicar un |
| Ejecutar un comando del lado del servidor (p. ej., desde una acción de código) |
Utilidades
Herramienta | Descripción |
| Cambiar la verbosidad del registro en tiempo de ejecución |
Flujo de trabajo recomendado para el agente:
start_lsp(root_dir="/your/project")
open_document(file_path=..., language_id=...)
get_diagnostics() # whole project, no file_path
get_info_on_location(...) / get_references(...)
close_document(...)IDs de lenguaje: typescript, typescriptreact, javascript, javascriptreact, python, go, rust, java, c, cpp, php
Recursos
Los recursos de diagnóstico admiten suscripciones en tiempo real: el servidor envía notifications/resources/updated cuando cambian los diagnósticos.
Esquema | Descripción |
| Todos los archivos abiertos |
| Archivo específico (suscribible) |
| Pasar el ratón en posición |
| Autocompletados en posición |
Conformidad con LSP 3.17
lsp-mcp se implementa directamente sobre la especificación LSP 3.17 y se valida mediante pruebas de integración contra servidores de lenguaje reales. La cobertura incluye:
Ciclo de vida completo (
initialize→initialized→shutdown) con manejo elegante de SIGINT/SIGTERMProtocolo de progreso: la detección de espacio de trabajo listo espera a que todos los tokens
$/progressse completen antes de enviar referenciasSolicitudes iniciadas por el servidor (
workspace/configuration,window/workDoneProgress/create, registro dinámico): todas respondidas correctamente, desbloqueando servidores que limitan la carga del espacio de trabajo a estas respuestasEncuadre JSON-RPC correcto, manejo de códigos de error y normalización de la forma de respuesta en hover, autocompletado, acciones de código y diagnósticos
Consulte docs/lsp-conformance.md para ver la matriz completa de cobertura de métodos y referencias de secciones de la especificación.
Extensiones
Las extensiones específicas del lenguaje añaden herramientas, prompts y manejadores de recursos, cargados automáticamente por ID de lenguaje al inicio.
Para añadir una extensión, cree src/extensions/<language-id>.ts implementando cualquier subconjunto de getToolHandlers, getToolDefinitions, getResourceHandlers, getSubscriptionHandlers, getPromptDefinitions y getPromptHandlers. Todas las funciones están bajo el espacio de nombres del ID de lenguaje.
Desarrollo
git clone https://github.com/blackwell-systems/LSP-MCP.git
cd LSP-MCP && npm install && npm run build
npm test # all unit test suites
npm run test:multi-lang # 7-language integration test (requires language servers)Cobertura: ~76% sentencias, ~86% funciones. Para inspeccionar el tráfico MCP: claude --mcp-debug.
Licencia
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/blackwell-systems/LSP-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server