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% функций

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

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

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

-
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