cclsp MCP
cclsp подключает языковые серверы LSP к Claude Code через MCP: переход к определению, поиск ссылок, переименование символов и диагностика без редактора
- 676 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Запускает языковые серверы командами из конфигурации и читает файлы проекта
- Переименование без `dry_run` сразу переписывает файлы по всему проекту и создает копии `.bak`
Установка
- Работает в
Ручная установка
npx cclsp@latest setupИнтерактивный мастер: находит языки проекта, предлагает языковые серверы, создает `.claude/cclsp.json` и по желанию добавляет сервер в Claude Code. Флаг `--user` создает общий файл в `~/.config/claude/cclsp.json`.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Запускает языковые серверы командами из конфигурации и читает файлы проекта
- Переименование без `dry_run` сразу переписывает файлы по всему проекту и создает копии `.bak`
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
cclsp — MCP-сервер на TypeScript, который запускает языковые серверы по протоколу LSP и отдает их возможности кодовому агенту. Агенты плохо называют номера строк и столбцов, поэтому прямое обращение к LSP часто ломается. cclsp принимает имя символа и необязательно его вид, сам перебирает несколько вариантов позиции и находит нужный символ. Для этого есть пять рабочих инструментов: `find_definition` ищет место определения, `find_references` — все использования по проекту, `rename_symbol` переименовывает символ, `rename_symbol_strict` делает то же по точной позиции, `get_diagnostics` возвращает ошибки, предупреждения и подсказки по файлу. Шестой, `restart_server`, перезапускает зависшие языковые серверы. Переименование по умолчанию сразу применяется ко всем затронутым файлам и создает резервные копии с расширением `.bak`. Флаг `dry_run` показывает план без записи. Если под имя подходит несколько символов, `rename_symbol` возвращает список позиций и предлагает строгий вариант. Какие языковые серверы запускать, задает файл `cclsp.json`: для каждого указаны расширения файлов, команда запуска, каталог проекта и необязательные `restartInterval` и `initializationOptions`. Мастер `npx cclsp@latest setup` определяет языки в проекте, показывает нужные серверы и по желанию устанавливает их, пишет конфигурацию и добавляет cclsp в Claude Code. Сами языковые серверы (typescript-language-server, pylsp, gopls, rust-analyzer, clangd и другие) ставятся отдельно.
Для кого. Для разработчиков, которые работают в Claude Code без IDE и хотят, чтобы агент находил определения, ссылки и безопасно переименовывал символы на уровне языкового сервера.
Подходит, если
- Нужно переименовать функцию или класс по всему проекту, сначала посмотрев план через `dry_run`
- Агент должен найти все места использования константы или метода перед рефакторингом через `find_references`
- В проекте несколько языков (TypeScript, Python, Go, Rust), и для каждого нужен свой языковой сервер в одном `cclsp.json`
- Агенту нужно получить ошибки и предупреждения по файлу из языкового сервера через `get_diagnostics`, не запуская сборку
- Языковой сервер Python со временем замедляется, и его удобно перезапускать по таймеру через `restartInterval`
Не подходит, если
- На машине нет Node.js 18 или Bun: cclsp не запускается без одного из них
- Не установлен языковой сервер для вашего языка: cclsp сам их не содержит, их ставят отдельно
- Нужен язык, для которого нет сервера LSP, или проект без конфигурации сервера: символы такого языка найти не получится
- Вы работаете в IDE с готовой интеграцией LSP, и агент уже получает от нее определения и ссылки
Пример запроса к агенту
Найди через cclsp, где определена функция processRequest и все ее вызовы, а потом переименуй ее в handleRequest, сначала показав план без записиMCP
- Транспорт
- stdio
- Авторизация
- не нужна
Переменные окружения
CCLSP_CONFIG_PATH- Путь к файлу `cclsp.json` со списком языковых серверов
Ограничения
- Лицензия MIT. В `package.json` версия 0.7.0, но `SECURITY.md` и `ROADMAP.md` ссылаются на ветку 1.x, а адрес для сообщений об уязвимостях в `SECURITY.md` остался шаблонным.
- Нужен Node.js 18 или Bun, а языковые серверы для выбранных языков ставятся отдельно.
- `rename_symbol` и `rename_symbol_strict` без флага `dry_run` сразу меняют файлы и пишут резервные копии с расширением `.bak`. Копии остаются в проекте, и при повторных переименованиях их придется чистить.
- Языковой сервер Python (pylsp) при многочасовой работе замедляется. Автор советует `restartInterval` и вручную `restart_server`. Адаптеры для серверов Vue и Pyright увеличивают тайм-ауты до 45–60 секунд.
- Путь к `cclsp.json` задает переменная `CCLSP_CONFIG_PATH`. Если файл не найден, работает только конфигурация для TypeScript по умолчанию.
Как отключить. Выполните `claude mcp remove cclsp`, чтобы убрать сервер из Claude Code. Файл конфигурации `.claude/cclsp.json` в проекте или `~/.config/claude/cclsp.json` удаляют вручную. Если ставили пакет глобально командой `npm install -g cclsp`, удалите его менеджером пакетов. Резервные копии `.bak` после переименований остаются в проекте и удаляются отдельно.
Частые вопросы
Зачем нужен cclsp, если у Claude Code есть поиск по тексту?
Языковой сервер знает структуру кода: определение, ссылки и область видимости символа. Поэтому переименование затрагивает один символ, а совпадающие строки с другим смыслом остаются как есть. Поиск по тексту таких различий не видит.
Как cclsp справляется с неточными номерами строк от модели?
Инструменты принимают имя символа и необязательно его вид (функция, класс, переменная). Сервер находит символы с таким именем в файле через языковой сервер и перебирает несколько комбинаций строки и столбца, чтобы попасть в нужный.
Что делать, если под имя подходит несколько символов?
`rename_symbol` не переименовывает наугад: он возвращает кандидатов с позициями, например переменную, параметр и свойство с одним именем. Затем вызывают `rename_symbol_strict` со строкой и столбцом (нумерация с единицы) выбранного кандидата.
Какие языки поддерживаются?
Любые, для которых есть языковой сервер LSP и запись в `cclsp.json`. В README приведены примеры для TypeScript и JavaScript, Python (`pylsp`), Go (`gopls`), Rust (`rust-analyzer`), C и C++ (`clangd`), Java (`jdtls`), Ruby (`solargraph`) и PHP (`intelephense`).
Как проверить, что установка прошла успешно?
После мастера `npx cclsp@latest setup` в списке инструментов Claude Code должны появиться `find_definition`, `find_references` и остальные. Мастер сам показывает шаг проверки. Если сервер не стартует, обычно не установлен языковой сервер или неверен путь `CCLSP_CONFIG_PATH`.
Можно ли запустить cclsp в контейнере?
В репозитории есть `compose.yml`, `scripts/docker-entrypoint.sh` и конфигурация `.claude/cclsp.docker.json` для разработки в Docker. Основной способ для пользователя — `npx` или глобальная установка через npm.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
MCP-серверыМост между языковым сервером LSP и агентом: определения, ссылки, диагностика, подсказки и переименование символов
Маркетплейс плагинов Claude Code, которые подключают языковые серверы LSP для TypeScript, Rust, Go, Python, 1С и других языков
MCP-сервер, который дает Claude Desktop и другим клиентам файловые инструменты, shell и подагентов в духе Claude Code
Установщик BSL Language Server
BSL Language Server installer
Скрипт ставит BSL Language Server как systemd-сервис на Linux и по флагу открывает MCP-эндпоинт для AI-агентов
BSL Language Server для Claude Code
BSL Language Server Claude Code Plugin
Плагин Claude Code, который подключает BSL Language Server к файлам 1С и OneScript: диагностика, переходы к определениям, ссылки, форматирование
MCP-обертка над BSL Language Server
BSL MCP Server
Небольшой MCP-сервер, который запускает BSL Language Server как JAR-файл и отдает агенту анализ и форматирование BSL-кода в JSON
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| cclsp (эта запись) | нет | не нужна | 676 | |
| MCP Language Server | нет | не нужна | 1 612 | мост к одному языковому серверу на запуск, например gopls или rust-analyzer |
| Serena | нет | не нужна | 30 849 | дает агенту возможности IDE через LSP или платный плагин JetBrains, включая правку кода на уровне символов |
| Claude Code LSPs | нет | 522 | маркетплейс плагинов Claude Code |
Коротко о README
Главная страница объясняет, чем cclsp отличается от прямой работы с LSP, и перечисляет возможности. Дальше идут требования, автоматическая и ручная настройка, список установочных команд для популярных языковых серверов, примеры конфигурации `cclsp.json` и подробный справочник шести инструментов с параметрами. Завершают раздел примеров использования и устранение неполадок. В репозитории есть журнал изменений, дорожная карта, схемы архитектуры в формате Mermaid, конфигурации для Docker и тесты.