LSP-MCP
lsp-mcp
Самый полный 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 |
|
|
Python |
|
|
Go |
|
|
Rust |
|
|
Java |
| |
C / C++ |
|
|
PHP |
|
|
Инструменты
Для всех инструментов сначала необходимо вызвать start_lsp.
Сессия
Инструмент | Описание |
| Запуск языкового сервера с корнем проекта |
| Перезапуск без перезагрузки MCP-сервера |
| Открытие файла для отслеживания (требуется перед запросами позиции) |
| Прекращение отслеживания файла |
Анализ
Инструмент | Описание |
| Ошибки и предупреждения — пропустите |
| Информация при наведении (сигнатуры типов, документация) в позиции |
| Предложения по автодополнению в позиции |
| Сигнатура функции и активный параметр в месте вызова |
| Быстрые исправления и рефакторинг для диапазона |
| Все символы в файле (функции, классы, переменные) |
| Поиск символов по имени во всем рабочем пространстве |
Навигация
Инструмент | Описание |
| Все ссылки на символ во всем рабочем пространстве |
| Переход к месту определения символа |
| Переход к определению типа символа |
| Переход ко всем реализациям интерфейса или абстрактного метода |
| Переход к объявлению символа (отличается от определения — например, заголовочные файлы C/C++) |
Рефакторинг
Инструмент | Описание |
| Получение |
| Проверка возможности переименования перед выполнением |
| Получение правок форматирования |
| Применение |
| Выполнение серверной команды (например, из действия кода) |
Утилиты
Инструмент | Описание |
| Изменение уровня детализации логов во время выполнения |
Рекомендуемый рабочий процесс агента:
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 3.17
lsp-mcp реализован непосредственно в соответствии со спецификацией LSP 3.17 и проверен с помощью интеграционного тестирования на реальных языковых серверах. Покрытие включает:
Полный жизненный цикл (
initialize→initialized→shutdown) с корректной обработкой 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
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