MCP (Model Context Protocol)(Відкритий протокол контексту моделі)
Відкритий стандарт від Anthropic на базі JSON-RPC 2.0 для уніфікованого двостороннього підключення AI-асистентів до зовнішніх інструментів, баз даних і системного оточення.
1. Огляд концепції та системна проблема
До появи протоколу MCP екосистема агентських інструментів страждала від класичної проблеми несумісності $N \times M$:
- Фрагментація адаптерів: Якщо у вас є 5 AI-клієнтів (Cursor, Claude Desktop, Continue, внутрішній CLI-агент, веб-інтерфейс) і 10 джерел даних (PostgreSQL, GitHub, Slack, Sentry, локальна файлова система), інженерам доводилося створювати та підтримувати 50 окремих інтеграційних конекторів.
- Витік чутливих ключів: Клієнтські додатки вимагали передачі прямих API-токенів у свій контекст, збільшуючи поверхню атаки.
- Відсутність єдиної типізації ресурсів: Не існувало стандарту, як модель повинна отримувати пасивні дані (документи для читання) окремо від активних дій з побічними ефектами (мутації в базі даних).
Model Context Protocol (MCP) вирішує цю проблему за аналогією з Language Server Protocol (LSP) у світі IDE: це «USB-C для штучного інтелекту», що уніфікує взаємодію між AI-клієнтами та бекенд-інструментами через відкритий протокол JSON-RPC 2.0.
2. Архітектурна таксономія та ментальна модель
Протокол MCP базується на чіткому клієнт-серверному розподілі та оперує трьома основними примітивами:
- 1. Tools (Активні інструменти з побічними ефектами): Виконувані функції, які модель може викликати для зміни стану зовнішнього світу (виконання SQL-запиту, запуск білду, відправка коментаря на GitHub). Описуються через сувору схему JSON Schema.
- 2. Resources (Пасивні джерела даних для читання): URI-адресовані дані без побічних ефектів, що передаються в контекст моделі як документи (вміст файлів, логи сервера, схема таблиць, документація).
- 3. Prompts (Шаблони взаємодії): Заздалегідь параметризовані промпти та контекстні ланцюжки, які сервер пропонує клієнту (наприклад, готова інструкція для аудиту вразливостей або генерації міграції).
- 4. Транспортний шар (Transport Layer):
stdio: запуск сервера як дочірнього процесу на тій самій машині. Не потребує мережевих портів, має нульовий latency оверхед.SSE (Server-Sent Events): робота через HTTP/HTTPS, що дозволяє підключати віддалені корпоративні мікросервіси та хмарні агенти.
3. Технічний пайплайн та внутрішня механіка
Життєвий цикл сесії за протоколом MCP проходить 4 стадії:
- Handshake & Capabilities Negotiation (Рукостискання):
Клієнт надсилає запит
initialize, декларуючи свої можливості (наприклад, підтримку сповіщень чи кореневих папок). Сервер відповідає переліком своїх можливостей (Tools, Resources, Prompts) та протокольною версією. - Dynamic Discovery (Виявлення сервісів):
Клієнт запитує маніфести через
tools/listабоresources/list. Отримані описи функцій та параметрів автоматично транслюються у формат Function Calling для цільової LLM. - Execution & Context Invocation (Виклик дії):
Коли модель генерує виклик функції, клієнт транслює його в запит
tools/callдо відповідного MCP-сервера з валідованими JSON-параметрами. - Result Streaming & State Notification (Повернення результату): Сервер виконує дію локально, використовуючи власні безпечні конфігурації (без передачі паролів клієнту), і повертає результат у форматі тексту, зображень чи вбудованих ресурсів.
4. Практичні інженерні сценарії в продакшені
01. Безпечний доступ до продакшн-БД
MCP-сервер для PostgreSQL запускається всередині закритого VPC контуру. Він відкриває для Cursor чи Claude Code лише інструмент execute_read_only_query. Агент може аналізувати схему та оптимізувати повільні запити, не маючи прямого доступу до пароля від бази та без прав на видалення даних.
02. Єдиний локальний інструментарій розробника
Один раз написаний MCP-сервер для взаємодії з корпоративним GitLab, внутрішньою Jira та сервісом метрик Datadog підключається водночас до CLI-термінала (Claude Code), графічного редактора (Cursor) та автоматизованих GitHub Actions.
03. Браузерна автоматизація з Puppeteer/Playwright
MCP-сервер керує headless-браузером, надаючи клієнту інструменти navigate_to, click_element, take_screenshot. Агент самостійно тестує інтерфейси та валідує дизайн без потреби підключати сторонні важкі плагіни.
5. Підводні камені, типові помилки та безпека
- Засмічення контекстного вікна (Context Bloat): Підключення 15 MCP-серверів із сотнею детальних JSON-схем може з'їсти 30 000+ токенів ще до введення першого слова користувача. Використовуйте динамічну фільтрацію або ледаче завантаження інструментів (Dynamic Tool Selection).
- Небезпека сторонніх серверів (Arbitrary Code Execution): Локальний MCP-сервер виконується з повними правами вашого облікового запису ОС. Запуск неперевірених серверів через
npx -yбез перевірки вихідного коду може призвести до крадіжки локальних SSH-ключів. - Порушення контракту протоколу через логування: Використання стандартного
console.log()абоprint()всередині коду сервера корумпує каналstdoutу транспортіstdio. Пишіть діагностику виключно уstderr.
FAQ: MCP (Model Context Protocol)
Пов'язані терміни
MCP Server
Програмний сервіс або фоновий процес, що реалізує специфікацію MCP і надає зовнішнім AI-клієнтам стандартизований доступ до виконання функцій, читання ресурсів і шаблонів промптів.
MCP Client
Програмне середовище (Claude Code, Cursor, Cline, SDK-агенти), що керує життєвим циклом підключення до MCP-серверів, агрегує маніфести інструментів та контролює права доступу моделі.
Tool Calling (Function Calling)
Низькорівневий механізм мовних моделей, що дозволяє їм надійно генерувати валідовані параметри у форматі JSON для виконання функцій у зовнішньому програмному середовищі.
Claude Code
Офіційний термінальний агент розробки від Anthropic, що працює безпосередньо в командному рядку через Claude 3.7 Sonnet з нативною підтримкою Bash, Git, файлової системи та протоколу MCP.