Управление через MCP
Обновлено
Подключение
На той же установке Webasyst должно быть приложение MCP. Плагин сам регистрирует инструменты через события MCP; отдельный MCP-плагин для этих пяти инструментов не требуется.
Подключите ИИ-клиент к приложению MCP и выдайте токену нужные права. Адрес подключения и создание токена настраиваются средствами приложения MCP: в настройках «Рекомендуемые товары PRO» отдельных полей подключения нет.
Права доступа
В группе «Товары в блоге для MCP» каждое право соответствует одному инструменту и имеет то же техническое имя.
| Инструмент | Право в интерфейсе | Назначение |
|---|---|---|
blog_ewblogproducts_get_settings |
Чтение → «Настройки вывода товаров» | Настройки, списки и правила вывода |
blog_ewblogproducts_list_posts |
Чтение → «Записи с товарами» | Поиск записей с привязками и без них |
blog_ewblogproducts_get_products |
Чтение → «Привязанные товары» | Состав одного списка одной записи |
blog_ewblogproducts_set_products |
Запись → «Задать товары записи» | Замена или дополнение привязок |
blog_ewblogproducts_set_products_bulk |
Запись → «Задать товары нескольким записям» | Пакетное изменение привязок |
Если токен действует от имени сотрудника (act_as), чтение требует доступа к блогу, а изменение — права чтения и записи в этом блоге. При токене без act_as дополнительная проверка прав сотрудника не выполняется; доступ ограничивается правами токена.
Настройки: blog_ewblogproducts_get_settings
Вызывается без параметров. Возвращает:
enabledиfooter_output— общие переключатели;default_list_id— список по умолчанию для чтения и изменения привязок: первый по ID сhook=true, иначе первый по ID; если списков нет —null;lists— ID, название, описание,hook,shown_under_post, запасная подборкаfallback_set_idи её имяfallback_set_name, число записей с опубликованными привязанными товарамиposts_with_products, готовыйshortcode;rules— правила вывода товаров.
shown_under_post учитывает переключатели, но не проверяет, выводит ли тема хук и есть ли у конкретной записи видимые товары. Счётчик posts_with_products не учитывает запасные подборки и теги с ids; он рассчитывается по привязкам во всей установке, без ограничения доступными сотруднику блогами.
Записи: blog_ewblogproducts_list_posts
| Параметр | Назначение | По умолчанию |
|---|---|---|
blog_id |
Ограничить выборку одним блогом | Все доступные блоги |
list_id |
Считать привязки только выбранного списка | Все списки |
status |
published, draft, scheduled или deadline |
Любой статус |
has_products |
true — есть опубликованные привязанные товары, false — нет |
Без фильтра |
offset |
Сдвиг выборки, от 0 | 0 |
limit |
Размер страницы, от 1 до 500 | 100 |
В ответе: total, offset, limit, posts. У записи возвращаются post_id, blog_id, title, url, status, datetime, products_count, published_count, lists со счётчиками и has_shortcode. Порядок — от новых записей к старым.
При list_id общие счётчики и фильтр относятся к выбранному списку, но вложенный массив lists содержит разбивку по всем привязанным спискам записи.
has_products не проверяет фактическую страницу: он не учитывает запасную подборку, прямую вставку ids, настройки размещения или шаблон темы. has_shortcode отмечает наличие фрагмента [ewblogproducts в тексте, без проверки корректности тега. Сам текст записи инструмент не возвращает.
Состав записи: blog_ewblogproducts_get_products
Обязателен post_id; необязателен list_id. При пропуске list_id используется список по умолчанию.
Ответ содержит post_id, list_id, list_title, products, published_count, missing_product_ids. В каждом товаре: product_id, name, url, price, published. Снятые с публикации товары возвращаются с published=false. Товары, которых уже нет в магазине, перечисляются в missing_product_ids.
Здесь возвращаются именно привязки, без подстановки запасной подборки. url товара — значение поля каталога, а не готовый полный адрес страницы; price — цена из таблицы товаров, без форматирования витрины и без поля валюты.
Изменение: blog_ewblogproducts_set_products
| Параметр | Назначение | Обязательность / по умолчанию |
|---|---|---|
post_id |
ID записи | Обязателен |
product_ids |
Массив целочисленных ID товаров, порядок определяет показ | Обязателен |
list_id |
ID списка плагина | Список по умолчанию |
mode |
replace — заменить весь состав; append — дописать в конец |
replace |
В replace пустой product_ids очищает привязки выбранного списка записи. При этом на сайте может включиться запасная подборка, если она задана. В append старые товары остаются на местах; повторы ID удаляются.
Ответ содержит saved — весь сохранённый состав по порядку, skipped — переданные несуществующие ID, unpublished — неопубликованные товары итогового состава. Неопубликованные товары сохраняются, но стандартным выводом не показываются.
Пример аргументов; все ID нужно заменить своими:
{
"post_id": 12,
"list_id": 1,
"product_ids": [73, 67, 71],
"mode": "append"
}Пакет: blog_ewblogproducts_set_products_bulk
Передайте items — от 1 до 100 элементов. В каждом обязательны post_id и product_ids; необязательны list_id и mode. Параметры list_id и mode верхнего уровня действуют для элементов, в которых они не заданы.
{
"list_id": 1,
"mode": "replace",
"items": [
{"post_id": 12, "product_ids": [73, 67]},
{"post_id": 15, "product_ids": [71], "mode": "append"}
]
}Элементы обрабатываются независимо. Ошибка одного не отменяет сохранение других. Ответ содержит processed, failed, results. Проверяйте каждый элемент results, включая его ok, skipped и unpublished: общий ok=true не означает, что все записи изменены успешно.
Ошибки
Успешный ответ содержит ok=true. Ошибка содержит ok=false, error_code, error_message.
| Код | Что проверить |
|---|---|
not_found |
Существует ли запись |
no_lists |
Есть ли хотя бы один список в настройках плагина |
list_not_found |
Верен ли ID списка |
blog_not_found |
Существует ли указанный блог и доступен ли он |
access_denied |
Права сотрудника, от имени которого действует токен |
too_many_items |
Не превышает ли пакет 100 элементов |
db_error, app_error, internal_error |
Текст ошибки, состояние приложений и журнал плагина |
Примеры просьб агенту
- «Покажи списки рекомендуемых товаров и объясни, какие включены для вывода под записью».
- «Найди опубликованные записи без опубликованных привязанных товаров в списке 1. Учти все страницы выборки».
- «Покажи состав списка 1 записи 12, отдельно отметь неопубликованные и отсутствующие товары».
- «Добавь товары 73 и 67 в конец списка 1 записи 12, сохрани текущий порядок и проверь результат».
- «Замени товары списка 1 у записей 12 и 15 указанными наборами. После обработки покажи ошибки и пропущенные ID».
Для подбора по смыслу агенту дополнительно понадобятся инструменты чтения текста Блога и поиска каталога Магазина. Эти пять инструментов сами не читают полный текст и не ищут товары по названию.
Если обрабатываете выборку has_products=false, сначала соберите ID всех нужных записей, затем меняйте привязки: после сохранения товары меняют состав отфильтрованной выборки, и увеличение offset во время изменений может пропустить записи.
Какие данные получает ИИ-клиент
Через MCP клиент получает названия и параметры списков, сведения о записях, состав привязок, названия, цены и URL товаров, а также результаты изменений. Эти сведения передаются подключённому MCP-клиенту. Использование их внешним ИИ-сервисом зависит от выбранного клиента.
У плагина нет собственных полей API-ключей внешнего сервиса, webhook или заданий cron/CLI для такой работы.