Skip to main content
Glama

lsp-mcp

Blackwell Systems CI LSP 3.17 Languages License

Самый полный MCP-сервер для анализа кода. 22 инструмента, охватывающих навигацию, диагностику, рефакторинг и форматирование. Проверено CI для 7 языков. Создан в строгом соответствии со спецификацией LSP 3.17.

В отличие от типичных мостов MCP-LSP, lsp-mcp поддерживает постоянную сессию языкового сервера — агенты работают с полностью проиндексированным рабочим пространством с диагностикой в реальном времени и пониманием связей между файлами, а не с «холодным» заглушечным процессом, который забывает контекст между вызовами.

Почему lsp-mcp

lsp-mcp

типичные альтернативы

Языки (проверено CI)

7

1–2

Инструменты

22

3–5

Соответствие спецификации LSP

3.17, по спецификации

ad hoc

Модель подключения

постоянная

на каждый запрос

Ссылки между файлами

редко

Подписки на диагностику в реальном времени

Покрытие тестами

76% операторов, 86% функций

редко тестируется

Related MCP server: LSP MCP

Быстрый старт

{
  "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"] }

Поддержка нескольких языков

Каждый из перечисленных ниже языков проходит интеграционное тестирование при каждом запуске CI — start_lsp, open_document, get_diagnostics и get_info_on_location проверяются на реальном бинарном файле языкового сервера:

Язык

Сервер

Установка

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

снимки eclipse.jdt.ls

C / C++

clangd

apt install clangd / brew install llvm

PHP

intelephense

npm i -g intelephense

Инструменты

Для всех инструментов сначала необходимо вызвать start_lsp.

Сессия

Инструмент

Описание

start_lsp

Запуск языкового сервера с корнем проекта

restart_lsp_server

Перезапуск без перезагрузки MCP-сервера

open_document

Открытие файла для отслеживания (требуется перед запросами позиции)

close_document

Прекращение отслеживания файла

Анализ

Инструмент

Описание

get_diagnostics

Ошибки и предупреждения — пропустите file_path для всего проекта

get_info_on_location

Информация при наведении (сигнатуры типов, документация) в позиции

get_completions

Предложения по автодополнению в позиции

get_signature_help

Сигнатура функции и активный параметр в месте вызова

get_code_actions

Быстрые исправления и рефакторинг для диапазона

get_document_symbols

Все символы в файле (функции, классы, переменные)

get_workspace_symbols

Поиск символов по имени во всем рабочем пространстве

Навигация

Инструмент

Описание

get_references

Все ссылки на символ во всем рабочем пространстве

go_to_definition

Переход к месту определения символа

go_to_type_definition

Переход к определению типа символа

go_to_implementation

Переход ко всем реализациям интерфейса или абстрактного метода

go_to_declaration

Переход к объявлению символа (отличается от определения — например, заголовочные файлы C/C++)

Рефакторинг

Инструмент

Описание

rename_symbol

Получение WorkspaceEdit для переименования символа во всем рабочем пространстве

prepare_rename

Проверка возможности переименования перед выполнением

format_document

Получение правок форматирования TextEdit[] для файла

apply_edit

Применение WorkspaceEdit к диску (используйте с rename_symbol или format_document)

execute_command

Выполнение серверной команды (например, из действия кода)

Утилиты

Инструмент

Описание

set_log_level

Изменение уровня детализации логов во время выполнения

Рекомендуемый рабочий процесс агента:

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(...)

Идентификаторы языков: typescript, typescriptreact, javascript, javascriptreact, python, go, rust, java, c, cpp, php

Ресурсы

Ресурсы диагностики поддерживают подписки в реальном времени — сервер отправляет notifications/resources/updated при изменении диагностики.

Схема

Описание

lsp-diagnostics://

Все открытые файлы

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

Конкретный файл (можно подписаться)

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

Наведение в позиции

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

Автодополнение в позиции

Соответствие LSP 3.17

lsp-mcp реализован непосредственно в соответствии со спецификацией LSP 3.17 и проверен с помощью интеграционного тестирования на реальных языковых серверах. Покрытие включает:

  • Полный жизненный цикл (initializeinitializedshutdown) с корректной обработкой SIGINT/SIGTERM

  • Протокол прогресса — определение готовности рабочего пространства ожидает завершения всех токенов $/progress перед отправкой ссылок

  • Запросы, инициированные сервером (workspace/configuration, window/workDoneProgress/create, динамическая регистрация) — все корректно обрабатываются, разблокируя серверы, которые ожидают загрузки рабочего пространства на основе этих ответов

  • Корректное формирование JSON-RPC, обработка кодов ошибок и нормализация формы ответа для наведения, автодополнения, действий кода и диагностики

См. docs/lsp-conformance.md для получения полной матрицы покрытия методов и ссылок на разделы спецификации.

Расширения

Языковые расширения добавляют инструменты, подсказки и обработчики ресурсов, которые автоматически загружаются по идентификатору языка при запуске.

Чтобы добавить расширение, создайте src/extensions/<language-id>.ts, реализующий любое подмножество getToolHandlers, getToolDefinitions, getResourceHandlers, getSubscriptionHandlers, getPromptDefinitions и getPromptHandlers. Все функции имеют пространство имен по идентификатору языка.

Разработка

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)

Покрытие: ~76% операторов, ~86% функций. Для проверки трафика MCP: claude --mcp-debug.

Лицензия

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