Добавить в корзинуПозвонить
Найти в Дзене
DeSoft.ru

Serena MCP: ассистент для твоего агента разработки

Периодически просматриваю и тестирую разные MCP серверы, особенно те, которые доступны для локальной установки, с целью расширить или просто улучшить возможности используемых ИИ инструментов. Из последних поставил сервер Serena MCP, основное назначение которого - это построение структуры и связей проекта (семантический контекст), чтобы ваш агент разработки быстрее и точнее понимал, где и что нужно изменять во время работы над очередной задачей. В основе символьная навигация на базе LSP. Вместо того, чтобы перечитывать или переписывать десятки и сотни файлов полностью, сжигая токены, агент начинает подключать serena и, либо с помощью встроенных функций запускает команды, вносит правки, либо использует результаты serena, снижая объём затрат на промежуточные операции в разы. Эдакий полезный ассистент при разборе незнакомой кодовой базы, работе над большим проектом с множеством файлов, рефакторинге и точечных исправлениях. Устанавливаем еще один менеджер зависимостей uv (serena ставится че
Оглавление

Периодически просматриваю и тестирую разные MCP серверы, особенно те, которые доступны для локальной установки, с целью расширить или просто улучшить возможности используемых ИИ инструментов.

Из последних поставил сервер Serena MCP, основное назначение которого - это построение структуры и связей проекта (семантический контекст), чтобы ваш агент разработки быстрее и точнее понимал, где и что нужно изменять во время работы над очередной задачей.

В основе символьная навигация на базе LSP. Вместо того, чтобы перечитывать или переписывать десятки и сотни файлов полностью, сжигая токены, агент начинает подключать serena и, либо с помощью встроенных функций запускает команды, вносит правки, либо использует результаты serena, снижая объём затрат на промежуточные операции в разы. Эдакий полезный ассистент при разборе незнакомой кодовой базы, работе над большим проектом с множеством файлов, рефакторинге и точечных исправлениях.

Локальная установка

Устанавливаем еще один менеджер зависимостей uv (serena ставится через него)

# через curl / wget на macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# или через pip
pip install uv

Устанавливаем serena

# установка
uv tool install -p 3.13 serena-agent@latest --prerelease=allow
# обновление
uv tool upgrade serena-agent --prerelease=allow

Проверяем

serena --version

Подключение

В моём случае я сразу цепляю к Claude Desktop, т.к. это целевой инструмент, однако, способов подключения довольно много к разным клиентам и IDE - смотрим здесь.

Claude -> Settings -> Developer -> Local MCP servers -> Edit Config

{
"mcpServers": {
"serena": {
"command": "serena",
"args": [
"start-mcp-server",
"--context=desktop-app"
]
}
}
}

После перезапуска Claude Desktop автоматически открывается serena dashboard по адресу http://127.0.0.1:24283/dashboard со статистикой использования, веб просмотровщиком логов и разной служебной информацией.

Запуск в контейнере

Прописываем сразу в конфигурации вашего клиента MCP, указав путь до каталога со своими проектами. Опция экспериментальная, контейнер взлетел, но именно из Claude Desktop у меня подключиться и воспользоваться не получилось.

{
"mcpServers": {
"serena": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--network",
"host",
"-v",
"/path/to/your/projects:/workspaces/projects",
"ghcr.io/oraios/serena:latest",
"serena-mcp-server",
"--transport",
"stdio"
]
}
}
}

Сравнительная оценка

Для того, чтобы оценить эффективность нового инструмента, необходимо провести тестовые испытания на одних и тех же манипуляциях с кодом в рамках одного проекта.

Начал с того, что попросил claude изучить проект, воспользовавшись serena. Проанализировав структуру serena начала формировать описание проекта в своей виртуальной памяти для быстрого доступа в дальнейшем. В итоге получены: карта исходников, навигация, тех стек, архитектура, модели, ui описание, список предлагаемых для запуска команд.

Задание

Были определены проверочные операции, которые предлагалось выполнить claude с использованием serena и без:

1. Прочитать тело конкретного метода

2. Найти все места использования виджета

3. Понять структуру экранного файла

4. Найти определение enum

5. Найти все места, где срабатывает навигационное событие

Методология

- Измеряемое: символы в ответах инструментов (то, что попадает в контекст)

- Токены: символы ÷ 4 (стандартный расчёт для кода, 1 токен = 4 символа)

- Без serena: Bash grep / Read (целый файл)

- С serena: точечные символьные запросы

Итоговая таблица

-2

Выводы

Serena выигрывает принципиально в трёх сценариях (Оп 1, 3, 4):

- Тело метода (−86%): вместо всего файла — только нужный символ

- Структура файла (−96%): вместо 770 строк кода — компактный JSON-скелет

- Определение по имени (−90%): нет поиска файла, нет чтения файла — прямой запрос

Паритет или незначительный проигрыш (Оп 2, 5): на простых grep-задачах serena возвращает больше символов, но богаче информацию — к каждому вхождению добавлен контекст: имя метода, диапазон строк, сниппет кода вокруг ссылки. grep даёт только строку совпадения.

Главный итог: экономия 7 916 токенов на 5 операциях. Дело тут не в скорости выполнения, а прежде всего в размере занятого контекста, а значит и стоимости операций. При работе с крупными файлами (Oп 3: 24 968 символов) без serena один запрос «съедает» в 26 раз больше контекста.

🌏 Сайт | 💙 ВК | 💬 TG | 📲 МАКС