В просторі ШІ вже кілька років спостерігається, як великі мовні моделі намагаються вдавати з себе всемогутніх. Вони генерують тексти, код, стратегії. Але варто попросити їх заглянути в твій GitHub, перевірити актуальний статус задачі в Jira чи просто прочитати файл на диску — і все. Модель або починає фантазувати, або мовчки чекає, поки ти сам скопіюєш їй купу тексту. Така от класична штука.
У листопаді 2024-го Anthropic виклала у відкритий доступ те, що назвали Model Context Protocol. Або просто MCP. І, чесно кажучи, я спочатку поставився до цього з характерним скепсисом. Ще один протокол. Ще одна спроба «стандартизувати» те, що і так уже намагалися стандартизувати через function calling, плагіни та купу самописних інтеграцій. Але потім подивився уважніше. І зрозумів: цього разу вийшло не просто чергове «рішення проблеми», а щось, що реально змінює правила цієї гри.
Проблема, яку всі терпіли, але ніхто не хотів визнавати
Уяви собі: ти будуєш AI-агента. Він має вміти читати код з репозиторію, писати в Slack, дивитися дані в Postgres і іноді навіть запускати тести. Раніше для кожного такого підключення доводилося писати окремий шматок логіки. Окремий адаптер під Claude. Окремий під GPT. Окремий під локальну модель. А ще окремий під кожну нову версію API.
Виходило класичне M×N. M моделей і додатків помножити на N інструментів і джерел даних. Кількість інтеграцій зростала експоненціально. Розробники матюкалися. Компанії витрачали місяці на те, що мало б працювати з коробки. А користувачі просто копіювали-вставляли. Знову і знову.
MCP бере цю математику і ламає її. Тепер інструменти пишуть один раз MCP-сервер. А додатки — один раз MCP-клієнт. І все. Підключив — працює. Незалежно від того, Claude у тебе, Cursor, чи якась домашня збірка на базі відкритої моделі.
Звучить красиво. Але чи працює?
Як це влаштовано насправді
Архітектура навмисно проста. Є три ролі.
Host — це те, з чим ти безпосередньо спілкуєшся. Claude Desktop, Cursor, Windsurf, якийсь кастомний агент. Він вирішує, коли і до чого підключатися.
Client — частина всередині host’а. Для кожного сервера host створює окремого клієнта. Один до одного. Ніяких складних шин і черг на старті.
Server — легка програма, яка відкриває доступ до чогось конкретного. До файлової системи. До GitHub. До бази даних. До внутрішньої CRM. Сервер каже: «Ось мої інструменти, ось ресурси, ось готові промпти».
Спілкуються вони через JSON-RPC 2.0. Старий добрий протокол, який уже давно перевірений. Транспорт може бути різним: через stdio (коли сервер запускається як підпроцес), через HTTP, через SSE. Для локальних інструментів зручно stdio. Для віддалених — HTTP.
Що саме може давати сервер?
Інструменти (tools). Це дії. «Створи issue», «запусти запит», «прочитай файл», «відправ повідомлення». Модель сама вирішує, коли їх викликати. Саме вона контролює.
Ресурси (resources). Це дані. Вміст файлів, записи з бази, документація. Хост або користувач можуть підсовувати їх у контекст. Модель їх просто бачить.
Промпти. Готові шаблони взаємодії. Щоб не вигадувати щоразу одне й те саме.
І все це з оголошенням можливостей. Сервер каже, що він вміє. Клієнт каже, що він підтримує. Вони домовляються. Без магії.
Чому це не просто «ще один function calling»
Function calling у OpenAI чи Anthropic — це добре. Але це прив’язка до конкретної моделі і конкретного API. Хочеш перейти на іншу модель — переписуй. Хочеш дати доступ одразу кільком інструментам — пиши оркестратор.
MCP робить інтеграцію ортогональною до моделі. Сервер не знає і не хоче знати, яка саме LLM його використовує. Він просто відповідає на стандартизовані запити. А host вже сам вирішує, як передати результати моделі. Це як USB-C. Пам’ятаєш, який був зоопарк роз’ємів до нього? Lightning, microUSB, proprietary штекери від кожного виробника. Тепер майже все сідає в один порт. MCP намагається зробити те саме для AI.
І, як не дивно, працює. За рік з невеликим з’явилися тисячі серверів. GitHub, Slack, Notion, Postgres, файлові системи, браузери через Puppeteer, навіть внутрішні корпоративні системи. Компанії на кшталт Block і Apollo вже інтегрували. IDE підхопили. OpenAI і Google DeepMind теж не залишилися осторонь.
Десь тут починаються приколи
Звісно, не все так гладко. Протокол молодий. Специфікація еволюціонує. Бувають нестиковки між версіями. Безпека — окрема пісня.
Коли даєш моделі доступ до інструментів, які можуть щось змінювати, то відкриваєш двері. І не завжди контролюєш, хто саме за ними стоїть. Уже були розмови про вразливості, пов’язані з тим, як сервери запускаються через stdio. Дослідники знаходили проблеми. Anthropic на деякі речі відповідала в стилі «так і задумано». Класика відкритих стандартів.
Плюс — хтось має ці сервери підтримувати. Хтось має перевіряти, що вони не тягнуть зайвого. Хтось має думати про автентифікацію і права доступу. MCP дає механізм. Але відповідальність за безпеку нікуди не дівається. Вона просто зміщується.
Ще один момент. Протокол не робить модель розумнішою сам по собі. Він лише дає їй очі і руки. Якщо модель погано планує послідовність дій або галюцинує з параметрами — сервер це не виправить. Він просто виконає те, що попросили. Навіть якщо попросили дурницю.
Що це означає на практиці
Для звичайного користувача — Claude Desktop або Cursor, які реально можуть працювати з твоїми файлами і репозиторіями без постійного копіювання. Для розробника — можливість один раз написати сервер і отримати доступ відразу з кількох клієнтів. Для компанії — шанс підключити внутрішні системи до AI без того, щоб будувати окремий зоопарк інтеграцій під кожну модель.
Я бачив, як люди за вечір піднімали сервер, який дає моделі доступ до локальної бази знань і Git. І це вже не «wow, AI щось зробив». Це просто робочий інструмент. Як термінал. Як редактор.
Але є і зворотний бік. Коли все стає надто легким, з’являється спокуса підключати все підряд. «А давай ще доступ до продакшн-бази». «А давай ще до платіжної системи». І тут уже не протокол винний. Винна людська звичка не думати на два кроки вперед.
Куди це все йде
MCP уже не належить виключно Anthropic. Специфікація відкрита. Є SDK для Python, TypeScript, Java, Go, Rust і ще купи мов. Є інспектори, референсні сервери, маркетплейси. Протокол живе своїм життям. Чи стане він таким же універсальним, як HTTP чи USB-C? Поки рано казати. Але динаміка вражає. За порівняно короткий час він перетворився з «ще однієї ідеї Anthropic» на те, що багато хто вже вважає де-факто стандартом для агентних систем.
Я дивлюся на це з обережним інтересом. Не з ейфорією. Не з ненавистю. Просто спостерігаю, як ще одна абстракція намагається навести лад у хаосі, який ми самі ж і створили. Можливо, через рік-два ми будемо згадувати часи, коли моделі сиділи в ізоляції, як щось дивне. Або, навпаки, згадаємо MCP як ще одну спробу, яка розбилася об реальну складність безпеки і відповідальності.
Поки що він працює. І працює краще, ніж багато хто очікував. А це вже немало.
