Хоча ChatGPT з’явився менше ніж 3 роки тому - він вже відчутно змінив нашу поведінку в інтернеті. Точніше, не тільки він, а загалом LLM: звісно Gemini та Claude доклали теж чимало зусиль, щоб ми цю поведінку змінили. І я думаю, що вклад від Anthropic (розробники Claude) ринок насправді оцінив ще далеко не повністю. Оскільки саме вони придумали Model Context Protocol (MCP) про який ми з вами сьогодні поговоримо.
Важлива ремарка: Хоча MCP придуманий Anthropic - наразі це вже відкритий стандарт. Тому все про що я далі буду писати підтримується будь-якою з основних LLM-моделей.
Наш план на сьогодні:
Model Context Protocol (MCP) - якщо по простому, це відкритий протокол, який дозволяє будь-якій LLM спілкуватись з будь-якою вашою системою. Або іншими словами, як написано на офіційній сторінці проекту “USB-C port for AI applications”.
Тобто фактично це можливість відправити LLM шукати відповідь НЕ в її вже існуючих даних, і не в інтернеті загалом, а в конкретному місці, яке ви самі визначили. Наприклад, в Google Analytics.
Можливо, спочатку така ідея здасться вам трохи дивною: “Навіщо мені питати умовного ChatGPT щось про дані в Google Analytics, якщо я можу запитати це напряму через функціонал “Ask chat” в GA4?”. Той самий, який на скріні нижче:
Я міг би навести декілька аргументів по цьому питанню, але, як то кажуть, ліпше один раз побачити, ніж декілька почути. Тому давайте розберемо на практиці.
Для того, щоб зрозуміти, чому MCP краще, і чому за ним майбутнє давайте спробуємо виконати деякі практичні завдання і через нього, і через вбудований чат в GA4.
Почав дослідження я з простого питання, відповідь на яке може знайти кожен користувач GA4 дуже швидко: “Які 5 сторінок мають найбільше переглядів серед відвідувачів?”. Далі будуть відповіді:
Ну і, звісно, будуть мої коментарі та оцінки.
Хоча і функціонал “Ask chat” в GA4, і Github Copilot, який я використовую для роботи через MCP, вміють відповідати на питання, поставлені різноманітними мовами далі, для того, щоб надати їм найкращі умови, я буду ставити питання саме англійською.
Перш за все констатую, що відповідь дійсно стосується моєї задачі. Далі порівняємо з даними GA4 - бачимо, що все зійшлось. Ще й гарно подав візуально, що полегшує сприйняття. Тобто можу сказати, що функціонал “Ask chat” виконав задачу успішно. Суб'єктивно, мені б хотілось бачити дані не по Page Title, а по Page Path, але то вже деталі і їх можна було прямо вказати в запиті.
Під час тесту “Ask chat” чомусь видав мені інформацію не за останні 7 днів (це було б з 17 по 23 липня), а за свої 7 днів (з 16 по 22 липня). Але я не вважаю це якоюсь критичною помилкою. Звісно що в реальній роботі, я надіюсь, кожен користувач точно вказуватиме потрібний період для аналізу.
Тепер давайте скористаємось варіантом через MCP. Відповідь на скріні:
Тут бачимо, що візуально це просто таблиця, і чат вирішив видати дані за 30 днів. Але вони теж коректні. Ще й подані у вигляді Page Path.
Резюмуючи, обидві системи пройшли цей тест добре. Але й задача була проста. Давайте спробуємо щось цікавіше.
Питання, яке я задав звучало так: “Analyze which traffic source/medium have the best and worst conversion rates from add-to-cart to purchase.” Ця задача на порядок цікавіша, оскільки в GA4 немає готового показника, який би давав одразу відповідь.
Як бачимо зі скрінів Ask chat GA4 видав мені візуалізацію і гору тексту, в якій не було відповіді на питання.
А от GPT-4o (модель, якій я задавав питання через Copilot; на його місці могла б бути інша модель, головне тут саме використання MCP) прекрасно впорався.
Він витягнув дані щодо кількості подій додавання в кошик та покупок і власноруч порахував потрібний показник. Як бачите, з даними GA4 все збігається.
Не дивуйтесь джерелам трафіку - це тестовий ресурс.
Якщо ви подумали, що це виглядає як вау - то я з вами погоджуюсь. Але насправді у варіанті з MCP це була не зовсім чесна гра: і ні, я не про те, що я отримав цей результат з десятого разу чи щось інше, що могло б якось підтасувати результати. Справа в самій технології: при роботі з MCP ми можемо додавати контекст. Якщо придивитись, то на скріні видно, що в мене був відкритий файл з інструкцією в якій було чітко розписано, що потрібно зробити.
Ось повний текст інструкції:
task: |
Analyze which traffic source/medium have the best and worst conversion rates from add-to-cart to purchase over the last 30 days using GA4 event-level data.
steps:
- Use analytics-mcp to get data from GA4
- Query GA4 event-level data to get the number of `add_to_cart` events grouped by `session_source_medium` within the last 30 days.
- Query GA4 event-level data to get the number of `purchase` events grouped by `session_source_medium` within the same 30-day period.
- Join both results on `session_source_medium`.
- Calculate the conversion rate as:
`purchase_count / add_to_cart_count`
(handle division by zero gracefully).
- Return a table sorted in descending order of conversion rate, including:
- session_source_medium
- add_to_cart_count
- purchase_count
- conversion_rate
- Highlight the top 3 and bottom 3 performing sources based on conversion rate.
Саме цей контекст і допоміг моєму агенту виконати задачу успішно задавши чіткий план дій. А використання MCP дозволило виконати задачу звернувшись за даними до GA4 через API..
Якщо глянути на хід виконання завдання, то модель:
При цьому, як ви помітили прямих вказівок використовувати цю інструкцію в запиті не було.
Для справедливості я також надав таку ж інструкцію в промпті для Ask chat в GA4, але він не зміг впоратись з завданням.
Ви могли помітити, що в Ask chat в GA4 висить лейбл Beta. Можливо, справа в цьому? Давайте спробуємо іншу систему і інший MCP сервер.
Тут ми знову будемо порівнювати рідний чат, той який на скріні нижче і варіант використання MCP. І обіцяю, що тепер не буде ніяких відкритих чи доданих файлів інструкцій. Ну майже не буде. Читайте далі, щоб побачити трохи магії ;)
Задача на цей раз ще складніша - будемо писати SQL запит. Я буду використовувати декілька різних промптів (для рідного чату), щоб спробувати добитись результату, але основна моя задача отримати запит, який дасть мені інформацію по лендінг пейдж, які згенерували найбільше доходу за червень 2025 року.
Ви вже могли здогадатись, що як рідний чат, так і Copilot добре виконують прості задачі, тому я не розбираю їх тут. Ми одразу переходимо до цікавого.
Почнемо з рідного чату. Спочатку я просто озвучив задачу, як може бачити її бізнес. Уточнення щодо датасету додано тільки тому, що в цьому проекті є декілька тестових датасетів з даними GA4.
Як бачите я отримав SQL запит під свою задачу, але давайте глянемо детальніше:
-- Which landing pages generated the most revenue for us in June 2025?
-- Use data from the analytics_399190266 dataset.
SELECT
(
SELECT
ep.value.string_value
FROM
UNNEST(events.event_params) AS ep
WHERE
ep.key = 'page_location' ) AS landing_page,
SUM(events.ecommerce.purchase_revenue_in_usd) AS total_revenue_usd
FROM
`learning-platform-370121`.`analytics_399190266`.`events_20250624` AS events
WHERE
events.event_date BETWEEN '20250601'
AND '20250630'
AND events.ecommerce.purchase_revenue_in_usd IS NOT NULL
AND events.ecommerce.purchase_revenue_in_usd > 0
GROUP BY
landing_page
ORDER BY
total_revenue_usd DESC;
Якщо придивитись, то в запиті мені виводиться не лендінг пейдж, а просто сторінка на якій відбулась якась дія. Хоча й підписана ця колонка як landing_page
.
Окей, я спробував трішки детальніше пояснити задачу, і, як бачите, отримав запит, який одразу повертав помилку.
Останній шанс. Я додав в запит деякий приклад SQL запиту. Це запит на побудову повноцінної сесійної таблиці, тобто він міг би допомогти зробити частину задачі. Звісно, як видно на скріні, там багато зайвих параметрів і це лише частина запиту. Але навіщо мені було б використовувати AI, якби я вже мав готовий запит? Тому я вважав це доброю підказкою і думав, що тепер точно отримаю потрібний результат. Але, як видно на скріні, на мене знову чекала помилка.
На цьому етапі я завершив спроби добитись чогось від рідного чату і перейшов в Copilot. Він з першої спроби написав запит, який відповідав моїй задачі. Я б навіть сказав, що він написав його в моєму стилі. Але як так вийшло? Жодних інструкцій, як ви бачите, тепер немає. Давайте розберемо детальніше.
Хоча, як видно зі скрінів вище, в мене немає ніяких прямих додаткових інструкцій, у мене все ж є інструкції в іншому виді. Придивіться уважно до ходу виконання запиту:
Перед тим, як робити запит до BigQuery, Copilot спочатку пройшовся по моїй локальній базі знань завдяки іншому MCP і знайшов там той самий приклад запиту, яким я намагався навчити рідний чат. Далі він його проаналізував і використав для написання відповіді.
Важливе уточнення. Ви можете помітити, що він читає декілька файлів. Я спеціально додав зайві файли, щоб перевірити, наскільки він зможе в цьому розібратись, і перевірка пройшла успішно.
І саме в цьому і є основна перевага використання MCP: LLM може використати для виконання однієї задачі безліч MCP серверів. Обмеження немає. Головне - виконати задачу.
І перед цим забігти в локальну, або навіть хмарну базу знань не є проблемою. Просто вкажіть це в промпті.
Використання MCP — це не просто краще, ніж поспілкуватись з рідним чатом в певній системі, як ви могли побачити в цій статті. Це можливість будь-яку потрібну вам систему, чи навіть конкретний файл, “подружити” з LLM. Це можливість додати стільки контексту, скільки потрібно. Це можливість автоматизувати ще більше рутинних задач. І це можливість оркеструвати безліч систем з одного чату вашої улюбленої LLM.
Звісно, технологія нова, і видаляти файли я б їй дозволу не давав. Але саме для аналітичних задач, коли потрібно задати питання простою мовою і отримати відповідь на даних саме вашої компанії з доступом на читання — це прекрасне рішення.
Ну і не обмежуйтесь тільки тими MCP, які я вже показав. Ось тут по лінку не повний, але досить значний перелік систем, які вже пропонують свої MCP сервери. Ну а якщо цього мало - завжди можна написати свій, під свої задачі.
Вебаналітик, Маркетолог