Skip to main content
Glama

lsp-mcp

Blackwell Systems CI LSP 3.17 Languages License

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

typescript-language-server

npm i -g typescript-language-server typescript

Python

pyright-langserver

npm i -g pyright

Go

gopls

go install golang.org/x/tools/gopls@latest

Rust

rust-analyzer

rustup component add rust-analyzer

Java

jdtls

instantáneas de eclipse.jdt.ls

C / C++

clangd

apt install clangd / brew install llvm

PHP

intelephense

npm i -g intelephense

Herramientas

Todas las herramientas requieren que se llame primero a start_lsp.

Sesión

Herramienta

Descripción

start_lsp

Iniciar el servidor de lenguaje con una raíz de proyecto

restart_lsp_server

Reiniciar sin reiniciar el servidor MCP

open_document

Abrir un archivo para seguimiento (requerido antes de consultas de posición)

close_document

Dejar de rastrear un archivo

Análisis

Herramienta

Descripción

get_diagnostics

Errores y advertencias: omita file_path para todo el proyecto

get_info_on_location

Información al pasar el ratón (firmas de tipo, docs) en una posición

get_completions

Sugerencias de autocompletado en una posición

get_signature_help

Firma de función y parámetro activo en un sitio de llamada

get_code_actions

Correcciones rápidas y refactorizaciones para un rango

get_document_symbols

Todos los símbolos en un archivo (funciones, clases, variables)

get_workspace_symbols

Buscar símbolos por nombre en todo el espacio de trabajo

Navegación

Herramienta

Descripción

get_references

Todas las referencias a un símbolo en todo el espacio de trabajo

go_to_definition

Saltar a donde se define un símbolo

go_to_type_definition

Saltar a la definición de tipo de un símbolo

go_to_implementation

Saltar a todas las implementaciones de una interfaz o método abstracto

go_to_declaration

Saltar a la declaración de un símbolo (distinto de la definición, p. ej., cabeceras C/C++)

Refactorización

Herramienta

Descripción

rename_symbol

Obtener un WorkspaceEdit para renombrar un símbolo en todo el espacio de trabajo

prepare_rename

Validar que un cambio de nombre sea posible antes de confirmar

format_document

Obtener ediciones de formato TextEdit[] para un archivo

apply_edit

Aplicar un WorkspaceEdit al disco (usar con rename_symbol o format_document)

execute_command

Ejecutar un comando del lado del servidor (p. ej., desde una acción de código)

Utilidades

Herramienta

Descripción

set_log_level

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

lsp-diagnostics://

Todos los archivos abiertos

lsp-diagnostics:///path/to/file

Archivo específico (suscribible)

lsp-hover:///path/to/file?line=N&column=N&language_id=X

Pasar el ratón en posición

lsp-completions:///path/to/file?line=N&column=N&language_id=X

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 (initializeinitializedshutdown) con manejo elegante de SIGINT/SIGTERM

  • Protocolo de progreso: la detección de espacio de trabajo listo espera a que todos los tokens $/progress se completen antes de enviar referencias

  • Solicitudes 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 respuestas

  • Encuadre 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

-
security - not tested
A
license - permissive license
-
quality - not tested

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