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

Related MCP server: LSP MCP

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI agents with language-aware code analysis through the Language Server Protocol, enabling tasks like getting code insights and diagnostics.
    6 npm
    191
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes Language Server Protocol (LSP) functionality as Model Context Protocol (MCP) tools, enabling AI clients to programmatically analyze and edit code in any language supported by VS Code.
    5 npm
    33
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Provides C++ code intelligence tools for AI agents via the Model Context Protocol, enabling symbol navigation, type information, and diagnostics.
    9
    48
    Mozilla Public 2.0