Как использовать LLM для работы с Yandex Managed Service for YDB через MCP-сервер: пример на IDE Cursor
Из этой статьи вы узнаете, как можно применять языковые модели (LLM) для работы с базой данных YDB. Это позволит работать с базой на человеческом языке: исправлять ошибки, оптимизировать, проводить анализ данных.
В качестве примера мы рассмотрим работу с облачной, или установленной локально версией YDB, к которой вы будете подключаться с помощью локально установленного MCP-cервера. Для взаимодействия с MCP-сервером мы используем IDE Cursor, а обработку естественного языка обеспечит подключенная LLM-модель. Таким образом, вы сможете легко писать и отправлять запросы на привычном вам языке, а модель в связке с MCP-сервером будет преобразовывать их в корректные SQL-запросы для YDB, помогать с исправлением ошибок и оптимизацией.
- Используемые термины
- Перед началом работы
- Подготовка окружения
- Работа с YDB-mcp
- Промпты для экспериментов
- Итоги
- Удаление ресурсов
Используемые термины
Cursor
LLM (Large Language Model) — большая языковая модель. Пример такой модели — YandexGPT. Она может генерировать текст, но сама по себе не может подключаться к внешним сервисам, например к базе данных. Для этого используется MCP-клиент (например, Cursor
), который подключается к MCP-серверу, а MCP-сервер взаимодействует с базой данных.
MCP (Model Context Protocol) — открытый протокол, по которому MCP-клиент подключается к MCP-серверу и обеспечивает доступ LLM к внешним сервисам. Подробнее можно почитать на отдельной странице документации, посвященной MCP.
MCP-клиент — программа, которая соединяет LLM с MCP-сервером и добавляет инструменты MCP-сервера к диалогу, чтобы LLM могла их использовать. В этой статье в роли MCP-клиента используется IDE Cursor
.
MCP-сервер — отдельное приложение, которое подключается к внешнему сервису (в нашем случае — к YDB) и дает доступ к набору инструментов. В самом MCP-сервере нет никакой "интеллектуальной" логики — он просто обеспечивает связь между языковой моделью (LLM) и внешним сервисом. Какие инструменты будут вызваны и как именно — решает LLM и тот запрос, который вы ей задаёте (промпт). Разные LLM могут по-разному подходить к решению задачи: одна сразу составит правильный YQL-запрос, другая будет пробовать разные варианты и исправлять ошибки в процессе.
ydb-mcp — это реализация MCP-сервера, разработанная командой YDB.
Для разных операций ydb-mcp предлагает разные инструменты, например: ydb_status проверяет подключение, ydb_query выполняет запросы. Эти инструменты похожи на API-функции: вы передаёте им параметры, а в ответ получаете результат.
Аналогично и с разработчиками: при одном и том же API код у каждого будет разный. В случае с LLM результат зависит не только от MCP-сервера, но и от возможностей модели.
Перед началом работы
Ресурсы, требующие оплаты
- Учетная запись в IDE Cursor
(можно использовать пробную версию). - Оплата за использование YDB — операции с базой и хранение данных (см. тарифы Yandex Managed Service for YDB).
Примечание
Все описанное можно применять и с другими IDE или моделями. Cursor выбран здесь как готовое решение, чтобы не отвлекаться на настройку.
Подготовка окружения
- Установите IDE Cursor
. - Установите Docker Desktop
или Docker Engine (CE) вместе с плагином Docker Compose — он потребуется для запуска проекта.
Склонируйте и откройте проект
- Склонируйте проект из репозитория ydb-mcp-demo-notes
. Если Git не установлен, скачайте и распакуйте архив: main.zip . - Откройте папку проекта в IDE Cursor: в меню File выберите Open Folder и укажите папку с проектом.
- Откройте терминал (меню View → Terminal или сочетание клавиш Ctrl/Cmd + Backtick`).
- Находясь в папке проекта, выполните команду в терминале
docker compose build
— она соберет контейнеры проекта.
Создайте базу данных Managed Service for YDB
Создайте базу данных в режиме Serverless. Это удобный вариант в облаке. Для локальных экспериментов можно запустить docker-контейнер
-
В консоли управления
выберите каталог для создания базы. -
Выберите сервис Managed Service for YDB.
-
Нажмите кнопку Создать базу данных.
-
Введите Имя базы. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
В блоке Тип базы данных выберите
Serverless
. -
Нажмите кнопку Создать базу данных.
-
Дождитесь запуска базы данных. В процессе создания база будет иметь статус
Provisioning
, а когда станет готова к использованию, статус изменится наRunning
. -
Выберите созданную базу данных.
-
В блоке Соединение найдите поля Эндпоинт и Путь к базе данных, сохраните их значения. Они потребуются для настройки подключения к базе.
Базу YDB можно создать с помощью вызова утилиты командной строки yc
.
yc ydb database create test --serverless
Создайте авторизованный ключ
При работе с локальным Docker-контейнером пропустите этот раздел.
Создайте сервисный аккаунт и назначьте ему роль ydb.editor
на ваш каталог. В нашем примере потребуется изменение базы со стороны LLM, когда этого не требуется — безопаснее давать роль ydb.viewer
.
-
В консоли управления
выберите каталог, которому принадлежит сервисный аккаунт. -
В списке сервисов выберите Identity and Access Management.
-
На панели слева выберите
Сервисные аккаунты. -
В открывшемся списке выберите созданный сервисный аккаунт.
-
Нажмите кнопку Создать новый ключ на верхней панели.
-
Выберите пункт Создать авторизованный ключ.
-
Выберите алгоритм шифрования.
-
Задайте описание авторизованного ключа, чтобы потом было проще найти его в консоли управления.
-
Сохраните ключ в файл
authorized_key.json
в папке проекта:{ "service_account_id": "<идентификатор_сервисного_аккаунта_sa-function>", "key_algorithm": "RSA_2048", "public_key": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----\n", "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n" }
Выполните команду в терминале, находясь в папке проекта:
yc iam key create --service-account-name sa-function -o authorized_key.json
Подробнее о команде yc iam key create
см. в справочнике CLI.
В случае успеха ключ будет сохранен в файле authorized_key.json
.
Важно
Файл authorized_key.json
содержит секретную часть ключа, по которому можно получить доступ к базам данных в вашем каталоге. Храните его в безопасности. В демонстрационном проекте он уже добавлен в .gitignore
.
Пропишите настройки подключения к базе в ydb.env
При работе с локальным Docker-контейнером пропустите этот раздел.
- Скопируйте файл
ydb-template.env
вydb.env
- Заполните параметры для подключения к созданной ранее базе данных
- YDB_AUTH_MODE=service-account, имя ключа
authorized_key.json
встроено в пример, и указывать его не нужно - YDB_ENDPOINT и YDB_DATABASE — возьмите значения из информации о созданной базе.
- YDB_AUTH_MODE=service-account, имя ключа
Проверьте работу приложения
В терминале IDE Cursor, находясь в папке проекта, выполните команды для проверки работы приложения. После каждого шага убедитесь, что команды выполняются без ошибок:
docker compose run --rm notes-app init
docker compose run --rm notes-app add "Тест" "Это моя первая заметка в YDB-notes"
docker compose run --rm notes-app list
Запустить MCP-сервер
Параметры запуска MCP-сервера уже заданы в демонстрационном проекте в файле .cursor/mcp.json
. Если же вам интересно разобраться и попробовать запустить сервер самостоятельно, подробности есть в документации ydb-mcp
- Откройте меню Cursor Settings (не путайте с VS Code Settings).
- Перейдите в раздел MCP & Settings.
- Включите переключатель рядом с ydb. Если он уже включен, выключите и включите снова — это перезапустит MCP-сервер с новыми настройками.
- После запуска рядом с MCP-сервером ydb появится список инструментов и значок активности.
- Проверьте работу подключения: откройте AI-панель справа (клавиши Ctrl/Cmd + L) и в чате введите: «Проверь подключение к YDB». Должен появиться результат, сообщающий о том, что подключение работает корректно.
Выберите модель
Если у вас пробный аккаунт, то пропустите этот раздел, так как модель выбрать не получится. В режиме Auto все приведенные примеры тоже работают, но модель может выполнять больше действий, а результат будет менее предсказуемым.
В окне чата под полем ввода найдите надпись Auto, нажмите на нее и в появившемся окне выключите автоподбор.
Откроется список доступных моделей — выберите модель из семейства claude-
, например claude-4-sonnet
или более новую.
Работа MCP-сервера не зависит от выбранной LLM. А вот путь и результат напрямую зависят от конкретной модели: именно она определяет, какие действия будут выполняться через MCP. Примеры в статье проверялись на claude-4-sonnet
и в режиме Auto
, но можно попробовать и другие модели.
Работа с YDB-MCP
Наполнение таблицы тестовыми данными через MCP-сервер
Иногда нужно заполнить пустую базу тестовыми данными. Это можно поручить LLM: она сгенерирует данные и через MCP-сервер добавит их в базу.
Пример команды для LLM:
Создай 15 тестовых заметок и запиши их в YDB, даты заметок должны быть в пределах `2001-01-01` — `2001-12-31`. Заметки сделай на русском и английском языках.
Разберем, как это работает:
- Cursor передает модели описание MCP-сервера и его инструментов.
- Через инструмент
ydb_status
LLM проверяет подключение к базе. - Через
ydb_query
LLM отправляет запросы на добавление строк. Здесь требуется корректный YQL-запрос: иногда он не проходит с первого раза. В этом случае модель переписывает запрос с учетом текста ошибки и пробует снова. Количество попыток зависит от конкретной модели и качества запроса. Процесс не требует вашего вмешательства: модель сама исправляет ошибки и в итоге добавляет нужное число заметок.
Чтобы убедиться в результате, выполните команду docker compose run --rm notes-app list
. Вы увидите заметки, созданные LLM. Таким же способом можно наполнять и более сложные базы.
Устранение ошибки с помощью MCP-сервера
LLM могут помогать не только в написании кода или заполнении базы, но и в исправлении ошибок. Это может касаться и данных, и схемы базы, и исходного кода приложения. Чтобы показать, как это работает, мы специально вызовем ошибку: переименуем таблицу в базе.
Без MCP у LLM есть только исходный код и текст ошибки. В этом случае она предложит заново выполнить команду инициализации или создать таблицу с помощью запроса. С MCP возможностей больше: модель может запросить схему базы и выполнить любые операции — например, переименовать таблицу обратно или скопировать ее.
Исправление схемы базы данных
Чтобы смоделировать ошибку, переименуйте таблицу:
- Зайдите в консоль управления
. - Перейдите к сервису Managed Service for YDB и откройте свою базу.
- Нажмите кнопку Навигация, а потом Новый SQL-запрос и выполните запрос для переименования таблицы
:
ALTER TABLE notes RENAME TO notes2
После этого выполните docker compose run --rm notes-app list
и убедитесь, что выводится ошибка.
Начните новый чат в Cursor и отправьте в него задачу:
После моих экспериментов приложение перестало выводить заметки. Проверь базу и почини так, чтобы снова работало. Код менять не надо. Ошибка: <сюда скопируйте текст ошибки>
Примечание
Cursor не показывает в чате текст, скопированный из собственного терминала — ошибка будет отображаться как ссылка в заголовке окна.
LLM через MCP проверит текущее состояние базы, увидит переименованную таблицу и попытается исправить ситуацию. Это может быть возврат старого имени, создание новой таблицы с переносом данных или миграция. При разных запусках модель может выбрать разные способы.
Адаптация исходного кода под изменения в схеме
Удалите временную таблицу notes2
, если она осталась после предыдущего шага, чтобы она не влияла на дальнейшие проверки:
DROP TABLE IF EXISTS notes2
Теперь снова переименуйте
ALTER TABLE notes RENAME TO notes_new
Откройте новый чат и дайте команду:
Имя таблицы в YDB изменилось. Поправь исходный код программы для использования нового имени и проверь, что все команды из инструкции продолжают работать.
Сбор аналитики по подключенной базе данных
LLM с ydb-mcp подходит не только для модификации данных, но и для аналитических запросов — например, чтобы быстро получить сводку или посчитать статистику прямо в базе.
- Посчитай распределение времени создания заметок по часам суток (количество заметок для каждого часа).
- Вычисли среднее и медиану длины заметок; расчеты выполни через YQL на стороне сервера.
Промпты для экспериментов
Сценарии применения MCP-сервера ydb-mcp шире, чем рассмотренные в этой статье. Доступ LLM к реальной схеме и данным в базе открывает новые возможности для совместной работы. Ниже я покажу примеры еще нескольких типов задач для экспериментов.
- Мой запрос
<...>
работает медленно, найди способы его ускорения - Создай функции-обертки для доступа к записям в таблице notes.
- Создай функции CRUD для таблиц моей базы.
- Добавь возможность хранить вложения к заметкам. Расскажи, как это можно реализовать с учетом текущей схемы базы.
Итоги
Сегодня LLM умеют решать широкий круг задач, но сами по себе они не могут взаимодействовать с внешним миром. MCP обеспечивает такую связку. При использовании YDB MCP-сервера у LLM появляется доступ к базе данных и возможность с ней взаимодействовать. Теперь можно использовать не только схему базы из исходного кода, но и ее фактическое состояние. Например, LLM может изменять схему и данные базы.
Важно
Используйте LLM с осторожностью и не подключайтесь к критически важным базам данных. Через MCP-сервер LLM получает те права, которые назначены сервисному аккаунту. Лучше сделать копию базы и исследовать копию. Например, в ходе работы модель может отправить запрос на удаление всех данных или выполнение очень тяжелого запроса, который будет мешать работе основной нагрузки.
Удаление ресурсов
Чтобы освободить ресурсы, удалите тестовую базу YDB по инструкции.