Один протокол для любого клиента
Model Context Protocol и JSON-RPC 2.0 — сервер подключается к Claude, Cursor, DeepSeek Harness и собственным агентам без отдельной интеграции.
Каталог на 7 000 SKU, расчёт цены, заказы, замеры, монтаж, рекламации, лиды и SEO — доступные AI-агенту через единый протокол. 57 инструментов, 38 на чтение и 19 на запись.
curl -X POST https://mcp.dealshub.ru/mcp/dealshub \
-H "Authorization: Bearer $MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_products",
"arguments": { "factory": "Zadoor", "width_mm": 800 }
}
}'
{
"count": 2,
"products": [
{ "id": 101, "sku": "Z-100-W", "name": "Zadoor Z-100",
"factory": "Zadoor", "color": "Белый",
"price": 10000.0, "stock": 5, "in_stock": true }
]
}
Возможности
Сервер отдаёт бизнес-операции маркетплейса как типизированные инструменты — с валидацией, правами доступа и предсказуемыми ответами.
Model Context Protocol и JSON-RPC 2.0 — сервер подключается к Claude, Cursor, DeepSeek Harness и собственным агентам без отдельной интеграции.
Подбор полотна, расчёт цены, создание заказа, замер и монтаж, рекламация и SEO — весь маршрут закрывается инструментами сервера.
Пять правил ценообразования применяются последовательно, и каждая наценка возвращается отдельной строкой — видно, из чего сложилась итоговая сумма.
Personal Access Token с гранулярными abilities mcp:read и mcp:write, лимит запросов на токен и журнал вызовов без персональных данных.
HTTP-эндпоинт для удалённых агентов и STDIO-режим для локального запуска рядом с проектом — одна и та же кодовая база инструментов.
Ответы поиска кешируются, а выдача ограничена и постранично управляема — агент не выгружает каталог целиком.
Инструменты
Инструменты чтения помечены read
и требуют ability mcp:read.
Инструменты записи — write
и mcp:write.
Каталог дверных полотен: поиск по 7 000 SKU, полная карточка с опциями, изображениями и характеристиками, а также связанные товары, комплекты и история цен.
search_products
Фильтры: фабрика, стиль, материал, цвет, размер, система открывания. Кеш 300 с.
get_product_details
Опции со значениями, изображения, атрибуты, акции, описание.
get_product_configuration
Размеры с наценками, опции, фурнитура, погонаж и услуги для позиции заказа.
get_product_related
Связанные товары из oc_product_related.
get_product_complects
Комплекты, в которые входит товар, и их состав.
get_product_price_history
История изменения цен товара.
Расчёт итоговой цены с наценками за нестандарт, срочность, комплект, фабрику и регион.
calculate_price
Каждое правило возвращается отдельной строкой в markups[].
Полный жизненный цикл заказа: создание одной транзакцией, сводка, поиск, правка, дополнение позиций и платежей, журнал и история цен.
create_order
Пишет 8 таблиц: orders → orders_items → … → order_logs.
get_order_summary
Полная карточка заказа с вложенными сущностями.
search_orders
Поиск по клиенту, статусу, источнику, менеджеру, товару и периоду.
get_orders_stats
Суммы, средний чек и разбивки по статусам, источникам, менеджерам и месяцам.
update_order
Правка клиента, адреса, статуса, скидки, доставки и оплаты.
update_order_status
Смена статуса с записью в журнал.
add_order_item
Дозаказ товара каталога или произвольной строки.
update_order_item
Правка позиции с пересчётом итога.
add_order_payment
Платёж, оплаченная сумма и остаток.
add_order_note
Заметка в журнале заказа.
get_order_payments
Платежи и остаток к оплате.
get_order_logs
Журнал изменений постранично.
get_order_price_history
История изменения цен позиций.
recalculate_order_totals
Пересчёт итога: позиции − скидка + доставка.
Замеры и монтаж: заявка, фактический обмер, результаты, этапы работ, фотоотчёт и график монтажей.
get_order_measurements
Замеры заказа с позициями и результатами.
create_order_measurement
Заявка на замер с датой, замерщиком и позициями.
update_order_measurement
Статус, дата, сложности, фото и подтверждение замера.
save_measurement_result
Габариты, допуски, расчётные размеры и рекомендации.
get_order_installations
Монтажи заказа с этапами и позициями.
create_order_installation
Заявка на монтаж: бригада, сроки, состав работ.
update_installation_stage
Создание и правка этапа монтажа.
add_installation_photo
Фото монтажа с привязкой к этапу и координатами.
get_installation_schedule
График монтажей на период.
Гарантийные обращения: список с фильтрами и создание рекламации с позициями и дефектами.
get_order_claims
Фильтры по заказу, статусу и признаку закрытия.
create_order_claim
Позиции, тип и серьёзность дефекта, ожидания клиента.
get_claims_stats
Аналитика рекламаций: суммы, компенсации, разбивки.
Заявки с сайта: список и статистика, карточка лида с историей, смена статуса, назначение менеджера и конвертация в заказ.
get_leads
Корзина, источник, страница заявки, статус и менеджер.
get_leads_stats
Суммы по лидам, корзины, разбивки по статусам и менеджерам.
get_lead
Карточка лида: история изменений и связанные заказы.
update_lead_status
Смена статуса с записью в историю.
assign_lead
Назначение менеджера.
convert_lead_to_order
Лид → заказ с переносом корзины.
get_lead_statuses
Справочник статусов лида.
Сквозная аналитика: единый дашборд продаж, KPI менеджеров, воронка «лид → заказ» и профиль клиента.
get_sales_dashboard
Заказы, лиды, рекламации и каталог одним ответом.
get_manager_performance
Заказы, сумма, конверсия и рекламации по менеджерам.
get_conversion_funnel
Воронка лидов и выручка от конвертированных.
get_customer_profile
История клиента по телефону или e-mail.
Нормативно-справочная информация каталога: категории и коллекции, фабрики, системы открывания, размеры, комплекты погонажа, услуги и словарь значений для фильтров.
get_categories
Дерево категорий и коллекций с количеством товаров.
get_factories
Фабрики со страной, сайтом и числом товаров.
get_opening_systems
Системы открывания с ограничениями по весу и габаритам.
get_door_sizes
Размеры полотен и группы размеров с коэффициентами.
get_pogonazh_kits
Комплекты погонажа и фурнитуры, состав и рекомендуемые для двери.
get_services
Услуги монтажа, замера и демонтажа с ценами.
get_catalog_stats
Ассортимент и цены: разбивки по типу, фабрике и категории.
get_availability_report
Наличие и позиции «под заказ».
get_attribute_dictionary
Реальные значения стилей, материалов, цветов и типов для фильтров.
get_pogonazh_groups
Группы погонажа и фурнитуры.
Наполнение мета-тегов и описаний товаров и категорий по «описанию магазина» — с проверкой перед записью.
get_store_seo_profile
Описание магазина, шаблоны и текущие мета-поля.
list_seo_gaps
Что не заполнено, постранично через limit и offset.
save_seo_meta
Запись meta_title, meta_description и description; dry_run для проверки.
Сценарий
Типовая последовательность, которую агент проходит от подбора полотна до проверки созданного заказа.
search_products
Фильтры по фабрике, размеру, цвету и системе открывания.
get_product_details
Значения опций, изображения и характеристики позиции.
calculate_price
Наценки за нестандарт, срочность, комплект и регион.
create_order
Одна транзакция на восемь таблиц заказа.
get_order_summary
Позиции, замеры, монтаж, платежи и рекламации.
Профиль магазина → список пробелов → подготовка текста → запись с проверкой.
get_store_seo_profile
list_seo_gaps
save_seo_meta
Подключение
Токен выдаётся artisan-командой, эндпоинт — обычный JSON-RPC по HTTPS, локальный запуск — STDIO без сети.
Создаётся служебный пользователь и Personal Access Token с нужными abilities.
php artisan mcp:token \
--name=dsh-prod
Укажите URL эндпоинта и заголовок с токеном в конфигурации MCP-клиента.
{
"mcpServers": {
"dealshub": {
"type": "http",
"url": "https://mcp.dealshub.ru/mcp/dealshub",
"headers": {
"Authorization": "Bearer <token>"
}
}
}
}
STDIO-режим поднимает сервер в процессе рядом с проектом — без токена и сети.
php artisan mcp:start \
dealshub
POST https://mcp.dealshub.ru/mcp/dealshub
curl -X POST https://mcp.dealshub.ru/mcp/dealshub \
-H "Authorization: Bearer $MCP_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Ценообразование
Правила применяются последовательно как множители: ширина → срочность → комплект → фабрика → регион. Ответ содержит исходную цену, итог и расшифровку каждой наценки.
Пример расчёта
10 000 ₽ × 1,15 × 1,25 × 0,90 × 1,10 × 1,10
= 22 741,13 ₽
Полотно 1 000 мм, срочный заказ, комплект из 3 дверей, наценка фабрики +10 %, регион Москва.
config/ai.php| Правило | Условие | Эффект |
|---|---|---|
| Нестандартная ширина | > 900 мм | +15 % |
| Срочность | urgent = true | +25 % |
| Комплект | от 3 дверей | −10 % |
| Наценка фабрики | default_price_rule_id | +0…15 % |
| Регион | msk · spb · mo | ×1,10 / 1,08 / 1,05 |
Коэффициенты читаются из конфигурации; иной регион получает коэффициент
default.
Безопасность
Проверка ability выполняется до валидации полей и работает fail closed: без подтверждённого пользователя инструмент отказывает, а не пропускает вызов.
mcp:read
38 инструментов
mcp:write
19 инструмента
?token= удаляется из запроса до логирования.
200
Ответ JSON-RPC, в том числе result.isError при ошибке валидации
401
Токен отсутствует или недействителен
405
GET или DELETE на эндпоинт (разрешён только POST)
429
Превышен лимит запросов на токен
Вопросы
Командой php artisan mcp:token --name=dsh-prod. Создаётся служебный пользователь mcp@dealshub.local и Personal Access Token с abilities mcp:read и mcp:write. Значение токена показывается один раз. Флаги: --abilities=mcp:read для токена только на чтение, --revoke-all для отзыва прежних токенов.
HTTP (POST /mcp/dealshub) подходит удалённым агентам: запросы авторизуются токеном Sanctum, работают abilities и лимит запросов. STDIO (php artisan mcp:start dealshub) запускает сервер локально рядом с проектом; аутентификации нет, доступ ограничен самим фактом запуска процесса.
Токен можно передать query-параметром: POST /mcp/dealshub?token=<token>. Middleware mcp.token переносит его в заголовок Authorization и удаляет из запроса, чтобы значение не попало в логи.
Инструменты чтения не поднимают ошибку: get_product_details вернёт { found: false, product_id }, get_order_summary — { found: false, order_id }. Так агенту не нужно разбирать исключение, чтобы отличить «нет данных» от сбоя.
save_seo_meta поддерживает dry_run: вызов с dry_run=true возвращает подготовленные значения без записи в базу. Для заказов безопасная последовательность — search_products → calculate_price → create_order.
Журнал MCP-вызовов пишет метод, имя инструмента, ключи аргументов, пользователя, статус и длительность. Значения аргументов и токены в журнал не попадают.
Выдайте токен, укажите эндпоинт — и каталог, цены, заказы и рекламации станут доступны как обычные MCP-инструменты.