Всем привет! На связи команда Explyt Spring. Недавно у нас вышел очередной релиз, который включает поддержку MCP Server plugin. Мы добавили “тулы”, облегчающие работу со Spring проектами для LLM. Ранее у нас уже была статья, в которой мы рассказывали об интеграции с Explyt AI плагином. Это были простые промпты для генерации: DTO, Entity, SQL скриптов и прочего. Несмотря на свою простоту, они добавляли в промпт необходимую информацию для выполнения конкретного действия: необходимый файл, тип БД - который подключен к проекту, библиотека для работы с Entity - javax или jakarta и прочее. Теперь пришло время добавить полноценные агентские Spring "тулы" для LLM, чтобы более точно понимать контекст Spring приложения.
MCP Server Plugin
Начиная с версии 2025.2, IDEA имеет встроенный bundled плагин MCP Server, который есть также в Community Edition и OpenIDE в аналогичной версии и имеет открытый исходный код. А это значит, что вся основная работа уже сделана и уже есть вся необходимая инфраструктура: готовый сервис – доступный по URL и базовый набор “тулов” от JetBrains. Данные "тулы" реализованы с учетом код-модели IDEA и используют ее базовые функции для рефакторинга, поиска элементов в коде и прочее. Благодаря этому “рефакторинги” которые вызывает LLM, через JetBrains тулы, выполняются максимально точно, так как будто вы вызвали этот функционал руками из IDEA.
И нам нужно всего лишь реализовать определенную точку расширения плагина MCP Server, чтобы добавить туда свой “тул”. Далее подключаем данный MCP Server к любому AI плагину для IDEA, который поддерживает данный функционал – работу с LLM в агентском режиме. Так мы сможем использовать все тулы, которые там реализованы.
Создаем свой тул
Для того чтобы создать свой инструмент, нужно реализовать точку расширения McpToolset и добавить ее реализацию в plugin.xml.
Вот так будет выглядеть простейший набор тулов:
class TestToolset : McpToolset { @McpTool("my_best_tool1") @McpDescription(description = "My first tool") fun myBestTool1( @McpDescription("Path to the project root") projectPath: String ): String { return "I am best tool from $projectPath" } @McpTool("my_best_tool2") @McpDescription(description = "My second tool") fun myBestTool2( @McpDescription("Arg1") arg1: String, @McpDescription("Arg2") arg2: Int, ): String { return "I am tool with params $arg1 & $arg2" } }
Мы создали класс, в котором описываем тулы.
Аннотация McpTool задает имя тула. Если не указывать значение, то по дефолту будет имя метода.
Аннотация McpDescription задает описание тула и его параметров. Это самая важная часть, от которой зависит, когда LLM будет вызывать тул и с какими параметрами. Надо написать их так, чтобы она смогла понять, что вы от нее хотите.
Результат можно вернуть в виде строки, примитивного типа или объекта, который можно сериализовать в JSON. По умолчанию, MCP Server плагин использует Kotlin Serialization.
Explyt Spring Tools
У себя в плагине мы реализовали следующий тулы для Spring Boot приложений:
explyt_get_spring_boot_applications – возвращает все рутовые точки для всех Spring Boot проектов в текущей рабочей области пользователя. Также добавляет в ответ версию Spring Boot и список подключенных Spring Boot Starters, тип билд системы и пр.
explyt_get_project_beans_by_spring_boot_application для конкретного Spring Boot приложения возвращает список всех “бинов” проекта. Для того что экономить токены, мы отдаем не все “бины” сразу, а есть второй аргумент - тип “бина” который мы хотим получить: Repository, Controller, Aspect и прочее.
Давайте посмотрим и проверим как это работает. Мы будем использовать Explyt плагин для работы с LLM, он поддерживает агентский режим, подключение внешних MCP серверов и предоставляет все необходимые возможности для работы с кодом:
Вот так подключаем bundled MCP Server к Explyt плагину – все готово. Далее идем проверять, что получилось. Спросим у модели про наличие Spring Boot проектов и контроллеров в нем:
Видно, что были использованы только наши тулы, которые мы только что создали. Теперь давайте выключим их (Explyt плагин предоставляет такую возможность) и попробуем снова такие же запросы, но с дефолтными “тулами” без Spring:
Видно что был использован гораздо больший набор тулов, а значит модель “съела” больше токенов и выполнила гораздо больше действий, чтобы просканировать и проанализировать файлы в проекте, что также увеличивает вероятность ошибки. Поиск “бинов” и поддержка Dependency Injection – это сильная сторона Explyt Spring плагина, что позволяет нам в подобных случаях обеспечивать большую точность при меньших затратах: как по времени, так и по токенам. Данные тулы могут помочь при разработке Spring Boot приложения, чтобы LLM лучше понимала контекст приложения, с меньшими затратами ресурсов - когда потребуется доработать проект под различные запросы пользователя.
Заключение
Мы верим, что AI-ассистенты — это не замена разработчику, а мощный инструмент, который берет на себя самую скучную и повторяющуюся работу, освобождая наше время для архитектуры, оптимизации и решения сложных задач. Надеемся, что наши MCP “тулы” для Spring помогут вам в ежедневной работе. Функциональность доступна начиная с версии IDEA 2025.2 и только для Spring Boot проектов.
А с какими еще рутинными задачами в Spring вы сталкиваетесь ежедневно? Что вы бы хотели автоматизировать в первую очередь? Будем рады обсудить в комментариях!
Приглашаем вас попробовать наш плагин, а также делиться своими отзывами и предложениями. Ваша обратная связь поможет нам сделать инструмент более полезным и удобным. Для багрепортов и фичриквестов — GitHub Issues и Telegram-чат с командой Explyt Spring плагина. Также напоминаем, что Spring плагин имеет открытый исходный код, который доступен на GitHub.
Источник

