Помаранчевий кошик із свіжими продуктами «Сільпо»

Для Гостей, не лише для розробників

«Сільпо» у вашому ChatGPT

Попросіть знайти продукти, зібрати кошик або перевірити ваші балабонуси. Звичайними словами — як у розмові.

Без окремої реєстрації в MCP. Потрібен вхід у ваш акаунт «Сільпо».

Почнімо з підключення

Як підключити «Сільпо» до ChatGPT

Після підключення ви зможете шукати товари, збирати кошик і перевіряти балабонуси звичайними повідомленнями в ChatGPT. Для налаштування знадобляться комп’ютер, акаунт ChatGPT і доступ до вашого акаунта «Сільпо».

  1. 1

    Відкрийте розділ «Плагіни»

    Відкрийте ChatGPT у браузері та увійдіть у свій акаунт. У меню ліворуч натисніть «Плагіни / Plugins».

  2. 2

    Відкрийте форму підключення

    На сторінці плагінів натисніть «+ / Add» → виберіть Add custom MCP server. Відкриється форма для додавання нового підключення.

  3. 3

    Заповніть форму

    Name (назва): Сільпо. Connection (з’єднання): посилання нижче — скопіюйте його повністю. Authentication (спосіб входу): OAuth. Поле Description, якщо воно є, можна залишити порожнім.

  4. 4

    Створіть підключення

    Прочитайте попередження ChatGPT про підключення зовнішнього сервісу. Поставте позначку I understand and want to continue → натисніть Create as a plugin. Дочекайтеся завершення перевірки.

  5. 5

    Увійдіть в акаунт «Сільпо»

    Коли відкриється сторінка входу «Сільпо», увійдіть за номером телефону, яким користуєтеся в «Сільпо», та підтвердьте запит на доступ. Коли надійде SMS із кодом, уведіть його на сторінці входу «Сільпо». Після авторизації поверніться до ChatGPT. Запит на вхід може з’явитися під час створення або встановлення плагіна — виконайте цей крок, щойно він з’явиться.

  6. 6

    Установіть «Сільпо»

    У розділі «Плагіни» знайдіть створене вами «Сільпо» серед власних плагінів. Відкрийте його картку → натисніть «Try in chat». У полі повідомлення введіть @ → у списку виберіть «Сільпо».

  7. 7

    Перевірте підключення

    Надішліть повідомлення: «Покажи мій баланс балабонусів». Якщо ChatGPT отримав баланс вашої картки із «Сільпо», підключення працює. Надалі достатньо відкрити новий чат, вибрати «Сільпо» через @ і написати свій запит. Повторно створювати підключення не потрібно.

Посилання для підключення

https://mcp.silpo.ua/mcp

Що написати у першому чаті?

  • «Знайди продукти для пасти на двох і додай їх у кошик.»
  • «Покажи акції «Сільпо», доступні для моєї адреси доставки.»
  • «Скільки в мене балабонусів і які купони доступні?»

Перед підтвердженням замовлення перевірте товари, кількість, суму та умови доставки.

Потрібна допомога? Ми в Discord

Оновлення, запитання та повідомлення про баги.

Приєднатися

Хочете зазирнути під капот

Технічна частина — спокійно і по поличках

Один URL, вхід звичним акаунтом «Сільпо» — і будь-який MCP-сумісний клієнт (Claude, Cursor, Kiro) бачить каталог, кошик, замовлення, бонуси та доставку. 40інструментів, жодних кастомних інтеграцій.

Деталі, які потрібні не всім, сховано в розгортуваних блоках — читайте лише те, що знадобиться саме вам.

Підключення
один URL
Вхід
акаунт «Сільпо»
Інструменти
40 штук

Про що це

MCP (Model Context Protocol) — відкритий стандарт від Anthropic для підключення AI-моделей до зовнішніх систем. Один сервер описує свої можливості (tools), і будь-який MCP-сумісний клієнт одразу може ними користуватись — без окремих інтеграцій під кожну модель.

Офіційний MCP «Сільпо» допомагає AI-асистенту працювати з «Сільпо» напряму: знайти товари, зібрати кошик, підказати доставку, показати ваші замовлення, бонуси та сертифікати. Окремо реєструватися не треба — просто додайте URL у свій AI-клієнт і увійдіть акаунтом «Сільпо».

Приклади запитів, які «просто працюють»:
  • «Додай у кошик 2 літри молока, буханець хліба і десяток яєць»
  • «Покажи мої останні 5 замовлень»
  • «Які акції доступні на мою адресу доставки?»
  • «Застосуй мої балабонуси до поточного кошика»
  • «Знайди заміну товару, якого немає в наявності»

З чого почати

Додайте сервер у конфіг свого клієнта. На першому підключенні відкриється браузер — увійдіть в акаунт «Сільпо», і все працюватиме.

{
  "mcpServers": {
    "silpo": {
      "url": "https://mcp.silpo.ua/mcp"
    }
  }
}

Де підключити

КлієнтЯк підключити
Claude DesktopДодай URL https://mcp.silpo.ua/mcp у секцію mcpServers конфіга.
Claude Codeclaude mcp add --transport http silpo https://mcp.silpo.ua/mcp
CursorДодай https://mcp.silpo.ua/mcp у налаштування MCP-серверів.
Kiro CLIДодай URL у конфігурацію mcpServers.
TypeScript SDKприклад коду
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport }
  from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://mcp.silpo.ua/mcp"),
  { authProvider: mySilpoAuthProvider },
);

const client = new Client(
  { name: "hackathon-agent", version: "0.1.0" },
  { capabilities: {} },
);

await client.connect(transport);
const { tools } = await client.listTools();
Vercel AI SDKприклад коду
import { createMCPClient } from "@ai-sdk/mcp";

const mcp = await createMCPClient({
  transport: {
    type: "http",
    url: "https://mcp.silpo.ua/mcp",
    authProvider: mySilpoAuthProvider,
  },
});

const tools = await mcp.tools();

const result = await streamText({
  model: openai("gpt-4o"),
  tools,
  prompt: "Знайди варіанти вечері з молочних продуктів до 300 грн",
});
Python SDKприклад коду
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async with streamablehttp_client(
    "https://mcp.silpo.ua/mcp",
    auth=my_oauth_provider,
) as (read, write, _):
    async with ClientSession(read, write) as session:
        await session.initialize()
        tools = await session.list_tools()

Як відбувається вхід

Усе, що потрібно від вас: один раз увійти в акаунт «Сільпо» у браузері. Далі клієнт сам усе настроїть і сам поновлюватиме доступ — за стандарту OAuth 2.1 із PKCE.

Що відбувається під капотомпʼять кроків, які клієнт робить сам
  1. Клієнт отримує 401 і читає метадані OAuth-сервера з /.well-known/oauth-authorization-server.
  2. Реєструється через Dynamic Client Registration ( POST /register).
  3. Генерує PKCE-пару та відкриває /authorize у браузері.
  4. Гість логіниться на auth.silpo.ua (телефон + OTP або пароль).
  5. Після успішної авторизації клієнт отримує MCP-токен і використовує його в усіх запитах: Authorization: Bearer <mcp_token>.

Безпека: AI-клієнт ніколи не бачить Silpo JWT гостя — він залишається всередині інфраструктури «Сільпо».

Що вміє сервер — 40 інструментів

Спершу потрібен вхід в акаунт «Сільпо». Позначка 🔒 cart означає, що потрібен контекст кошика (branchId, deliveryType, timeslot) — отримай його через silpo_get_my_shopping_cart → silpo_get_shopping_cart_by_id. Позначка ✎ write — tool змінює стан.

Локація та доставка6 інструментів
  • silpo_find_address

    Знайти координати (lat/lng) за текстом адреси. Перший крок при зміні адреси доставки.

  • silpo_get_available_delivery_types

    Доступні типи доставки для координат: DeliveryHome, WideAssortDelivery, SelfPickup, NovaPoshta, B2B.

  • silpo_list_branches

    Список магазинів «Сільпо». Фільтри: hasPickup, hasNovaPoshta.

  • silpo_get_time_slots

    Доступні слоти доставки для магазину. ОБОВ'ЯЗКОВО викликати після отримання кошика — валідувати слот.

  • silpo_find_nova_poshta_settlements

    Пошук населеного пункту Нової Пошти за назвою.

  • silpo_find_nova_poshta_offices

    Відділення / поштомати НП у населеному пункті.

Пошук товарів7 інструментів
  • silpo_find_products_batch🔒 cart

    Пошук до 30 товарів паралельно. Основний tool для заповнення кошика зі списку покупок.

  • silpo_get_products🔒 cart

    Товари з фільтрами: категорія, акція, пошуковий запит, пагінація.

  • silpo_get_product_details🔒 cart

    Повна картка товару: склад, харчова цінність, атрибути, зображення.

  • silpo_get_similar_products🔒 cart

    Схожі / альтернативні товари за slug.

  • silpo_get_replacements🔒 cart

    Заміни для товарів, яких немає в наявності.

  • silpo_get_my_favorites

    Список збережених «улюблених» товарів гостя.

  • silpo_add_or_update_favorite_products✎ write

    Додати / прибрати товари з улюблених.

Каталог6 інструментів
  • silpo_get_promotions🔒 cart

    Активні акції та знижки в конкретному магазині.

  • silpo_get_popular_categories🔒 cart

    Популярні категорії в магазині.

  • silpo_get_category🔒 cart

    Деталі окремої категорії: підкатегорії, кількість товарів.

  • silpo_get_categories

    Плоский список усіх категорій магазину.

  • silpo_get_categories_tree🔒 cart

    Повне дерево категорій та підкатегорій.

  • silpo_get_product_sets

    Кураторські добірки товарів (тематичні, сезонні).

Кошик8 інструментів

Кошик — центральний об'єкт. Рекомендований старт сесії: silpo_get_my_shopping_cart → silpo_get_shopping_cart_by_id → silpo_get_time_slots.

  • silpo_get_my_shopping_cart

    Отримати ID активного кошика. Завжди перший крок.

  • silpo_create_shopping_cart✎ write

    Створити кошик, якщо silpo_get_my_shopping_cart повернув exists: false. Ідемпотентний: при наявному кошику поверне існуючий shoppingCartId. Деталі — у розділі нижче.

  • silpo_get_shopping_cart_by_id

    Повний кошик: товари, доставка, тайм-слот, суми, валідації, бонуси, посилання на checkout.

  • silpo_add_or_update_cart_products✎ write

    Додати товари або оновити кількість. Потрібні productId + companyId + branchId з пошуку.

  • silpo_remove_cart_products✎ write

    Видалити конкретні товари з кошика.

  • silpo_clear_shopping_cart✎ write

    Очистити весь кошик.

  • silpo_update_shopping_cart✎ write

    Оновити доставку, слот, адресу, промокод, спосіб оплати, застосувати бонуси.

  • silpo_add_or_update_certificates✎ write

    Додати або зняти подарункові сертифікати з кошика.

Замовлення2 інструментів
  • silpo_get_my_online_orders

    Історія онлайн-замовлень (silpo.ua / застосунок). Дає змогу повторити замовлення одним викликом cart.add.

  • silpo_get_my_offline_orders

    Історія покупок у фізичних магазинах: чеки, товари, знижки, зароблені бонуси.

Профіль4 інструментів
  • silpo_get_my_profile

    Дані профілю: ім'я, телефон, email, дата народження.

  • silpo_get_my_delivery_addresses

    Збережені адреси доставки гостя.

  • silpo_get_my_family

    Члени родини у профілі: діти (з віком) і тварини.

  • silpo_get_my_food_restrictions

    Дієтичні обмеження та харчові уподобання.

Лояльність та акції7 інструментів
  • silpo_get_loyalty_info

    Картка «Власний Рахунок»: номер, статус, поточний та нарахований баланс балабонусів.

  • silpo_get_my_coupons

    Доступні купони знижок гостя.

  • silpo_get_coupon_details

    Повна інформація про купон: умови, товари, штрих-код.

  • silpo_get_my_promos

    Персональні промо-пропозиції.

  • silpo_get_promo_codes

    Активні промокоди гостя.

  • silpo_get_my_certificates

    Активні подарункові сертифікати: код, штрих-код, номінал.

  • silpo_get_my_premium_subscription

    Статус Silpo Premium: активність, дата завершення, переваги.

Актуальний список — з tools/list

Точні назви, аргументи та JSON Schema завжди повертає сам сервер після авторизації. Читай tools/list на старті агента — це стандартна MCP-практика.

Детально: silpo_create_shopping_cartнавіщо, порядок дій, параметри, відповідь

Створює кошик для авторизованого гостя. Викликай його лише якщо silpo_get_my_shopping_cart повернув exists: false. Tool ідемпотентний: якщо кошик уже існує, сервер поверне той самий shoppingCartId без дубліката — тому зайвий виклик безпечний, але непотрібний.

Обов'язковий порядок перед викликом:

1. silpo_find_address            → latitude/longitude/city/street/houseNumber/district
   (houseNumber з відповіді → параметр "house" тут)
2. silpo_get_available_delivery_types(lat, lng)
   → deliveryType + branchId
   Якщо branchId = null (SelfPickup / NovaPoshta):
   → silpo_list_branches(hasPickup=true або hasNovaPoshta=true)
3. silpo_get_time_slots(branchId, deliveryType) → доступний timeslot

Після створення — одразу перевір результат через silpo_get_shopping_cart_by_id.

ПараметрТипОбов'язковийДжерело значення
addressTypeenum: house, flat, office, point, self-pickup, nova-poshtaтакспосіб доставки гостя
latitude / longitudenumberтакsilpo_find_address → addresses[].latitude / .longitude
city, street, house, districtstringніsilpo_find_address (houseNumber → house)
deliveryTypeenum: SelfPickup, DeliveryHome, LongDelivery, DeliveryExpressByPromise, WideAssortDelivery, B2B, PreOrder, NovaPoshtaтакsilpo_get_available_delivery_types
timeslot.start / timeslot.endISO datetimeтакsilpo_get_time_slots
branchIdstringтакsilpo_get_available_delivery_types або silpo_list_branches

companyId не передається — він зашитий у сервері як константа SILPO_DEFAULT_COMPANY_ID. Зауваж: latitude/longitude tool сам конвертує в рядки — API очікує string, хоча silpo_find_address повертає числа.

Відповідь:

{
  "success": true,
  "summary": "Shopping cart created",
  "shoppingCartId": "e7fbff9c-499c-40d1-ab0a-8130932cb94b"
}

Готові сценарії

Наповнити кошик зі списку покупок
1. silpo_get_my_shopping_cart          → cartId
2. silpo_get_shopping_cart_by_id       → branchId, deliveryType, timeslot
3. silpo_get_time_slots                ← обов'язково: валідація слота
4. silpo_find_products_batch(items[])  → productId + companyId + branchId
5. silpo_add_or_update_cart_products   → додати все
6. silpo_get_shopping_cart_by_id       ← перевірити результат
   • перевірити validations[]
   • якщо loyalty.bonusAvailable > 0 — запропонувати балабонуси
   • якщо express доступний — підсвітити варіант і ціну
   • показати checkoutWebLink + checkoutMobileLink
Змінити адресу доставки
1. silpo_find_address(text)                     → lat, lng
2. silpo_get_available_delivery_types(lat, lng) → варіанти доставки

   ├─ DeliveryHome / WideAssortDelivery: branchId в відповіді → крок 3
   ├─ SelfPickup:     silpo_list_branches(hasPickup=true) → гість обирає
   └─ NovaPoshta:     silpo_find_nova_poshta_settlements(city)
                      silpo_find_nova_poshta_offices(settlementId)
                      silpo_list_branches(hasNovaPoshta=true)

3. silpo_get_time_slots(branchId, deliveryType) → гість обирає слот
4. silpo_update_shopping_cart(...)              → застосувати
5. silpo_get_shopping_cart_by_id                ← перевірити
Застосувати балабонуси
Після silpo_get_shopping_cart_by_id:
  якщо loyalty.bonusAvailable > 0
     і loyalty.bonusRequested == null
     і loyalty.isEnabled:
       → запитати: «У вас є {bonusAvailable} балабонусів. Застосувати?»
       → якщо так: silpo_update_shopping_cart(bonusRequested = bonusAvailable)

Якщо щось не виходить

Найчастіше причина проста: токен застарів або запити надто часті. Ось що означають основні відповіді сервера.

  • 401 invalid_token — токен відсутній або протух. Клієнт має використати refresh_token або пройти OAuth-потік заново.
  • 403 — токен валідний, але немає доступу до конкретного tool.
  • 429 — rate-limit. Використай експоненційний backoff. Ліміти застосовуються per-user через Cookie: mcp-user={userId}.
  • -32601 Method not found — метод JSON-RPC не підтримується поточною версією.
Безпека. AI-клієнт ніколи не бачить Silpo JWT. MCP-токен зберігай на бекенді або у secure storage — не у публічному фронтенді.

Кілька простих домовленостей

MCP «Сільпо» відкритий для всіх — без реєстрації. Просимо лише про три речі:

  • підключатись саме до https://mcp.silpo.ua/mcp, а не до сторонніх або неофіційних API;
  • діяти лише від імені гостя, який сам авторизувався;
  • зберігати токени серверно, а не в клієнтському коді.
Заборонено: використовувати MCP «Сільпо» для порівняння цін між різними магазинами чи торговими мережами, а також для масового збору цін і асортименту.

Спільнота: оновлення та баги

Приєднуйтесь до Discord-спільноти «Сільпо» AI Factory. Там публікуються всі оновлення MCP — нові tools, зміни в API та релізи, — і там само можна написати про баг чи запропонувати покращення.

Discord-спільнота «Сільпо» AI Factory

Оновлення MCP, питання, повідомлення про баги: https://discord.gg/v5vZr8c6DT

Приєднатися до Discord

Готовий підключатись?

Додай URL у свій AI-клієнт — реєстрація не потрібна.