
Model Context Protocol (MCP) — це відкритий стандарт, який надає моделям штучного інтелекту універсальний спосіб підключення до зовнішніх інструментів, джерел даних та сервісів. Замість того щоб писати власний код інтеграції для кожної комбінації «модель-інструмент», ви створюєте один MCP-сервер, і будь-яка сумісна модель може його використовувати. Anthropic створила MCP наприкінці 2024 року, зараз ним керує Linux Foundation, а OpenAI, Google та решта екосистеми агентного ШІ вже прийняли цей стандарт. Ось усе, що вам потрібно знати, щоб зрозуміти, створити та розгорнути MCP.
MCP у двох словах
Якщо ви хочете отримати коротку версію перед тим, як зануритися в 6000 слів деталей, ось вона.
| Атрибут | Деталі |
|---|---|
| Повна назва | Model Context Protocol (MCP) |
| Створено | Anthropic (листопад 2024), зараз керується Linux Foundation / AAIF (грудень 2025) |
| Що робить | Універсальний стандарт для підключення моделей ШІ до інструментів, даних та сервісів |
| Яку проблему вирішує | Усуває необхідність у M x N власних інтеграціях, ніби USB-C для ШІ |
| Базові примітиви | Інструменти (Tools), Ресурси (Resources), Промпти (Prompts) та Семплінг (Sampling) |
| Транспорт | stdio (локальна розробка), Streamable HTTP (продакшн) |
| Аутентифікація | OAuth 2.1 (обов’язково для HTTP-транспорту) |
| SDK | Python (FastMCP), TypeScript, Java, Kotlin, C# |
| Розмір екосистеми | Понад 10 000 активних серверів (за даними Linux Foundation, грудень 2025) |
| Основні користувачі | Claude, ChatGPT, Gemini, Cursor, VS Code Copilot, Windsurf |
| Статус специфікації | Відкритий стандарт, активно розвивається (дорожня карта 2026 року в процесі) |
| Найкраще підходить для | Агентів ШІ, яким потрібно взаємодіяти з реальними інструментами та даними |
Тепер давайте розберемо кожен із цих пунктів, починаючи з того, що таке MCP насправді, та проблеми, яка зробила його необхідним.
Що таке Model Context Protocol?
Model Context Protocol — це відкритий протокол на основі JSON-RPC, який стандартизує те, як моделі ШІ виявляють та взаємодіють із зовнішніми інструментами та даними. Уявіть собі HTTP для інтеграцій ШІ: спільну мову, якою можуть говорити будь-яка модель і будь-який інструмент.
Ви, ймовірно, чули аналогію з USB-C, і вона корисна до певної межі: до появи USB-C кожному пристрою потрібен був власний кабель. MCP робить те саме для ШІ, але ця аналогія недооцінює його можливості. USB-C передає лише дані та живлення. MCP передає визначення інструментів, шаблони доступу до даних, багаторазові шаблони промптів і навіть дозволяє серверам запитувати завершення від моделі. Це набагато багатший протокол, ніж може здатися з метафори кабелю.
Проблема M x N, яку вирішує MCP
Без MCP підключення M моделей до N інструментів вимагає M x N власних інтеграцій. Скажімо, ви підтримуєте 5 великих мовних моделей (Claude, GPT-4, Gemini, Llama, Mistral) і потребуєте доступу до 10 інструментів (GitHub, Postgres, Slack, Jira тощо). Це 50 унікальних шарів інтеграції, кожен зі своєю аутентифікацією, обробкою помилок та форматуванням даних.
З MCP кожна модель реалізує клієнтський протокол MCP один раз, а кожен інструмент реалізує MCP-сервер один раз. Тепер це 5 + 10 = 15 реалізацій замість 50. Додаєте нову модель? Вона одразу працює з усіма 10 інструментами. Додаєте новий інструмент? Усі 5 моделей можуть його використовувати.
Коротка історія MCP
Anthropic відкрила код MCP у листопаді 2024 року разом із SDK для Python і TypeScript та конекторами для Claude Desktop. Успіх прийшов швидко. OpenAI додала підтримку MCP до ChatGPT у березні 2025 року. Google послідував прикладу для Gemini у квітні 2025 року. До грудня 2025 року Anthropic передала MCP новому Agentic AI Foundation (AAIF) під егідою Linux Foundation, співзаснованому разом із Block та OpenAI, зробивши MCP постачальнико-незалежним стандартом із міжгалузевим управлінням.
Чим MCP НЕ є:
- Не є моделлю чи фреймворком ШІ (це протокол, як HTTP)
- Не замінює LangChain або LlamaIndex (це оркестраційні шари; MCP знаходиться нижче за них)
- Не обмежується Anthropic або Claude (за дизайном він не залежить від конкретної моделі)
- Не те саме, що виклик функцій (function calling) (про це детальніше в розділі порівняння)
Як працює MCP: Глибоке занурення в архітектуру
У MCP є три ролі, і їх плутанина — найпоширеніша помилка початківців. Давайте чітко розмежуємо їх.
<!-- IMAGE: MCP architecture diagram showing host, client, server roles with real examples like Claude Desktop, GitHub MCP Server, Postgres MCP Server -->Host, Client і Server: яка різниця?
| Компонент | Роль | Приклади | Що робить |
|---|---|---|---|
| Host | Додаток, з яким взаємодіє користувач | Claude Desktop, Cursor, VS Code | Надає інтерфейс, керує екземплярами клієнта |
| Client | Обробник протоколу всередині хоста | Вбудований у хост-додаток | Підтримує з'єднання 1:1 з одним MCP-сервером |
| Server | Надає інструменти та дані через MCP | Сервер GitHub, сервер Postgres, сервер Slack | Огортає зовнішні API/дані в MCP-сумісні ендпоінти |
Ось конкретний приклад: ви просите Claude Desktop перевірити ваші відкриті pull-запити на GitHub. Claude Desktop виступає хостом. Його вбудований MCP-клієнт відкриває з'єднання з MCP-сервером GitHub. Сервер викликає API GitHub, отримує ваші PR і повертає результати клієнту, який передає їх моделі.
Один хост може запускати кілька клієнтів, кожен із яких підключений до різного сервера. Саме так Claude Desktop може одночасно отримувати доступ до GitHub, вашої бази даних Postgres і Slack — три окремі MCP-сервери, три окремі клієнтські з'єднання, один хост.
Як проходять повідомлення (JSON-RPC 2.0)
Уся комунікація MCP використовує JSON-RPC 2.0, легкий протокол запит/відповідь. Ось як виглядає обмін tools/list «на дроті»:
// Client request: "What tools do you have?"
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}
// Server response: one tool available
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "get_weather",
"description": "Get current weather for a city",
"inputSchema": {
"type": "object",
"properties": {
"city": { "type": "string" }
},
"required": ["city"]
}
}
]
}
}Модель читає ці визначення інструментів, вирішує, коли їх викликати на основі запиту користувача, а клієнт надсилає назад серверу запит tools/call з відповідними аргументами.
Життєвий цикл з'єднання
Кожна сесія MCP дотримується одного життєвого циклу:
- Ініціалізація: клієнт надсилає свої можливості, сервер відповідає своїми
- Узгодження можливостей: обидві сторони погоджують підтримувані функції (інструменти, ресурси, промпти, семплінг)
- Готовність: з'єднання активне; запити течуть в обох напрямках
- Запити/відповіді:
tools/call,resources/readтощо - Завершення: чисте відключення
Це рукостискання забезпечує пряму сумісність. Якщо сервер додає новий примітив, старіші клієнти просто ігнорують його, а не падають.
Примітиви MCP: Інструменти, Ресурси, Промпти та Семплінг
MCP визначає чотири примітиви, і розуміння того, хто контролює кожен із них, є ключем до проектування хороших MCP-серверів.
| Примітив | Хто контролює | Напрямок | Приклад | Варіант використання |
|---|---|---|---|---|
| Інструменти (Tools) | Модель вирішує, коли викликати | Клієнт -> Сервер | create_github_issue | Дії, які ШІ виконує автономно |
| Ресурси (Resources) | Додаток/користувач обирає | Клієнт -> Сервер | file://project/README.md | Дані, долучені до контексту |
| Промпти (Prompts) | Користувач запускає | Клієнт -> Сервер | Шаблон code_review | Багаторазові шаблони взаємодії |
| Семплінг (Sampling) | Сервер запитує завершення | Сервер -> Клієнт | Сервер просить модель підсумувати | Агентні цикли, де сервер використовує LLM |
Інструменти (під контролем моделі)
Інструменти — це функції, які може викликати модель. Сервер оголошує їх із назвою, описом та визначенням вхідних даних у форматі JSON Schema. Модель читає ці визначення, і коли запит користувача цього вимагає, модель вирішує викликати інструмент.
// Client sends tools/call request
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_weather",
"arguments": { "city": "Berlin" }
}
}Якщо ви використовували виклик функцій від OpenAI, інструменти здадуться знайомими, але вони стандартизовані для кожної MCP-сумісної моделі.
Ресурси (під контролем додатка)
Ресурси — це ендпоінти даних тільки для читання. На відміну від інструментів, модель не вирішує самостійно отримати ресурс; хост-додаток або користувач явно додають ресурси до контексту розмови. Уявіть їх як GET-ендпоінти: postgres://mydb/users/schema, file://docs/api-reference.md.
Ресурси підтримують підписки через resources/subscribe, тому клієнт може отримувати сповіщення про зміни даних.
Промпти (під контролем користувача)
Промпти — це багаторазові шаблони, які надає MCP-сервер. Промпт code_review може приймати шлях до файлу та генерувати структурований запит на перевірку коду. Користувач (або інтерфейс хоста) явно запускає промпти; модель не викликає їх автоматично.
Семплінг (ініційований сервером), просунутий рівень
Ось примітив, який пропускає більшість посібників. Семплінг дозволяє серверу просити клієнта згенерувати завершення за допомогою LLM. Це перевертає звичайний потік: замість того щоб модель викликала інструмент, інструмент викликає модель.
Навіщо? Для агентних циклів. Уявіть MCP-сервер, який обробляє тікети підтримки. Він читає тікет (ресурс), використовує sampling/createMessage, щоб попросити модель зробити підсумок, а потім використовує цей підсумок для маршрутизації тікета через інструмент. Сервер оркеструє багатокроковий робочий процес, використовуючи інтелект моделі.
Семплінг контролюється хост-додатком: користувач повинен його схвалити, а хост контролює, що саме сервер може запитувати. Це запобігає нескінченним циклам і зберігає людський контроль.
Створіть свій перший MCP-сервер: Python і TypeScript поруч
Досить теорії. Давайте створимо робочий MCP-сервер, який надає інструмент get_weather. Я покажу варіанти і для Python, і для TypeScript, щоб ви могли порівняти досвід розробника та обрати стек, який підходить вашему проєкту.
Python з FastMCP
FastMCP — це офіційний високоуровневий SDK для Python. Він бере на себе всю технічну частину протоколу, щоб ви могли зосередитися на логіці свого інструменту.
# Install FastMCP
pip install fastmcp# weather_server.py
from fastmcp import FastMCP
mcp = FastMCP("Weather Server")
@mcp.tool()
def get_weather(city: str) -> str:
"""Get the current weather for a city."""
# In production, call a real weather API here
weather_data = {
"Berlin": "Cloudy, 12°C",
"Tokyo": "Sunny, 22°C",
"New York": "Rainy, 8°C",
}
return weather_data.get(city, f"No data for {city}")
if __name__ == "__main__":
mcp.run()Ось і все — 15 рядків. FastMCP виводить схему вхідних даних інструменту з анотацій типів Python та рядка документації (docstring). Жодного шаблонного коду JSON Schema.
TypeScript з офіційним SDK
TypeScript SDK (@modelcontextprotocol/sdk) дещо більш явний, але дає повний контроль над визначеннями схем.
# Install the SDK and Zod for schema validation
npm install @modelcontextprotocol/sdk zod// weather-server.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "Weather Server",
version: "1.0.0",
});
server.tool(
"get_weather",
"Get the current weather for a city",
{ city: z.string() },
async ({ city }) => {
const weatherData: Record<string, string> = {
Berlin: "Cloudy, 12°C",
Tokyo: "Sunny, 22°C",
"New York": "Rainy, 8°C",
};
return {
content: [
{ type: "text", text: weatherData[city] ?? `No data for ${city}` },
],
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);Версія TypeScript використовує схеми Zod замість анотацій типів і повертає структуровані блоки контенту. Більш багатослівна, але типізація чудова.
Підключення до Claude Desktop
Щоб підключити будь-який із цих серверів до Claude Desktop, додайте його до вашого claude_desktop_config.json:
{
"mcpServers": {
"weather-python": {
"command": "python",
"args": ["weather_server.py"],
"cwd": "/path/to/your/project"
},
"weather-typescript": {
"command": "npx",
"args": ["tsx", "weather-server.ts"],
"cwd": "/path/to/your/project"
}
}
}Перезапустіть Claude Desktop, і обидва weather-сервери з'являться у списку інструментів. Запитайте «Яка погода в Берліні?», і модель автоматично викличе ваш інструмент get_weather.
Тестування з MCP Inspector
Перед тим як підключати сервер до хоста, протестуйте його ізольовано за допомогою MCP Inspector:
npx @modelcontextprotocol/inspector python weather_server.pyInspector відкриває браузерний інтерфейс, де ви можете бачити виявлені інструменти, викликати їх вручну та перевіряти повідомлення JSON-RPC, що ходять туди-сюди. Це найкращий інструмент налагодження в екосистемі MCP, використовуйте його рано і часто.
Транспорти MCP: stdio для розробки, Streamable HTTP для продакшену
Повідомленням MCP потрібен спосіб переміщення між клієнтом і сервером. Це транспортний рівень, і правильний вибір має значення.
| Транспорт | Варіант використання | Плюси | Мінуси | Статус |
|---|---|---|---|---|
| stdio | Локальна розробка, особисті інструменти | Нульова конфігурація, простота, швидкість | Тільки на одній машині | Активний |
| Streamable HTTP | Продакшн, віддалені сервери, багато користувачів | Працює через мережу, підтримує потокове передавання через SSE, дружній до stateless | Потребує HTTP-сервера, потрібна аутентифікація | Активний (специфікація 2025) |
| HTTP+SSE (старий) | Застарілий віддалений транспорт | Був початковим варіантом для віддаленого доступу | Замінено на Streamable HTTP | Застарілий |
stdio працює шляхом запуску MCP-сервера як підпроцесу та комунікації через stdin/stdout. Саме це ви використовували у наведеному вище туторіалі: жодних портів, жодного TLS, жодної аутентифікації. Ідеально для розробки та локальних інструментів для одного користувача.
Streamable HTTP — це транспорт для продакшену, доданий у оновленні специфікації 2025 року. Клієнти надсилають стандартні HTTP POST-запити на сервер. Сервер може відповідати синхронно або відкривати SSE-потік для довших операцій. Він дружній до stateless-архітектури, працює за балансировщиками навантаження та підтримує стандартну HTTP-аутентифікацію.
Якщо ви бачите старі туторіали, де згадується «HTTP+SSE» як два окремі транспорти (один для надсилання, інший для отримання), це застарілий підхід. Streamable HTTP об'єднує обидва в єдиний, чистіший механізм.
Рішення очевидне: використовуйте stdio під час локальної розробки, перемикайтеся на streamable-http при розгортанні для інших.
// Switching from stdio to Streamable HTTP in TypeScript
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
const transport = new StreamableHTTPServerTransport({ port: 3001 });
await server.connect(transport);MCP проти Function Calling проти REST API: коли що використовувати
Це питання виникає в кожній дискусії про MCP, тому давайте вирішимо його прямим порівнянням.
| Функція | MCP | Function Calling | REST API |
|---|---|---|---|
| Стандартизація | Відкритий протокол, незалежний від моделі | Залежить від постачальника (OpenAI, Anthropic мають свої власні) | Універсальна |
| Виявлення інструментів | Вбудоване (tools/list) | Відсутнє, ви надсилаєте схеми з кожним запитом | Відсутнє, потрібна документація або специфікація OpenAPI |
| Доступ до даних | Примітив Resources | Не підтримується | Стандартні ендпоінти |
| Шаблони промптів | Примітив Prompts | Не підтримується | Не застосовується |
| Аутентифікація | OAuth 2.1 (на рівні специфікації) | API-ключ постачальника | Різне (API-ключі, OAuth тощо) |
| Потокове передавання | SSE через Streamable HTTP | Залежить від постачальника | Різне |
| Багатомодельність | Працює з будь-якою MCP-сумісною моделлю | Прив'язано до API одного постачальника | Незалежно від моделі (з допоміжним кодом) |
| Екосистема серверів | Понад 10 000 готових серверів | Н/Д | Мільйони API |
| Складність налаштування | Запуск MCP-сервера | Надсилання JSON у API-виклику | HTTP-клієнт |
| Найкраще для | Середовища агентів з кількома моделями та інструментами | Прості додатки з однією моделлю та кількома інструментами | Комунікація між сервісами |
Коли достатньо Function Calling
Якщо у вас менше 5 інструментів і ви використовуєте одну модель, function calling простіший. Ви визначаєте схеми інструментів inline з кожним API-викликом, модель повертає назву функції та аргументи, і ви виконуєте їх у коді свого додатка. Жодного сервера для запуску, жодного протоколу для вивчення. Для чат-бота, який перевіряє статус замовлення та шукає відповіді в FAQ, function calling цілком підходить.
Коли MCP стає виправданим
MCP окупає свою складність, коли:
- Ви підтримуєте кілька LLM і не хочете переписувати визначення інструментів для кожного постачальника
- Вам потрібне виявлення інструментів, щоб модель могла запитувати, що доступно, замість того щоб ви жорстко кодували схеми
- Ви хочете мати ресурси та промпти, а не лише виклики інструментів
- Ви створюєте агентів ШІ, які координуються автономно і потребуєте стандартизованого шару інтеграції
- Ваша команда зростає, і різні інженери створюють різні інструменти; MCP дозволяє їм працювати незалежно
Вердикт: MCP виграє, коли вам потрібен стандартизований доступ до інструментів для кількох моделей. Function calling виграє для простих випадків використання з однією моделлю. REST API залишаються правильним вибором для традиційної комунікації між сервісами, яка не залучає LLM.
Екосистема MCP у 2026 році: хто підтримує і що доступно
MCP перетворився з побічного проєкту Anthropic на галузевий стандарт менш ніж за 18 місяців. Ось поточний стан справ.
Які LLM підтримують MCP?
| LLM | Підтримка MCP | З коли | Примітки |
|---|---|---|---|
| Claude | Нативна, повна підтримка | Листопад 2024 | Створила MCP; найглибша інтеграція |
| ChatGPT | Офіційна підтримка | Березень 2025 | Через інтеграцію MCP від OpenAI |
| Gemini | Офіційна підтримка | Квітень 2025 | Сервери Google Cloud MCP для сервісів Google |
| Llama / Open-Source | Через адаптери | 2025 | LangChain, LlamaIndex та власні адаптери |
| Copilot (VS Code) | Нативно в режимі агента | 2025 | Microsoft постачає підтримку MCP у VS Code |
Популярні MCP-сервери, які варто знати
| Категорія | Сервер | Що робить |
|---|---|---|
| Код | GitHub | PR, issues, репозиторії, пошук коду |
| Код | GitLab | Merge requests, пайплайни, управління проєктами |
| База даних | PostgreSQL | Перевірка схеми, виконання запитів |
| База даних | MySQL | Доступ до запитів та схеми |
| SaaS | Slack | Повідомлення каналів, пошук, сповіщення |
| SaaS | Google Drive | Доступ до файлів, пошук, читання документів |
| SaaS | Notion | Читання сторінок, запити до баз даних |
| Пошук | Brave Search | Результати веб-пошуку |
| DevOps | Docker | Управління контейнерами |
| Інфраструктура | AWS | Управління хмарними ресурсами |
Оголошення AAIF від Linux Foundation цитувало понад 10 000 активних серверів і 97 мільйонів щомісячних завантажень SDK на момент передачі MCP у грудні 2025 року. Екосистема більше не експериментальна, вона готова до продакшену.
MCP Apps — це новий примітив, представлений у січні 2026 року. Він дозволяє серверам надавати інтерактивні UI-компоненти, які відображаються всередині хост-додатка. Ще рано, але це сигналізує про еволюцію MCP від протоколу даних до повноцінного фреймворку для агентних додатків. За цим варто стежити.
Управління: від Anthropic до Linux Foundation
MCP керується Agentic AI Foundation (AAIF) під егідою Linux Foundation, співзаснованою Anthropic, Block та OpenAI. Це важливо для корпоративного впровадження: MCP не прив'язаний до дорожньої карти одного постачальника. Пріоритети дорожньої карти 2026 року включають еволюцію транспорту, комунікацію між агентами (новий примітив «Tasks»), дозрівання управління та готовність для підприємств.
Для команд, які будують продакшн-системи ШІ, фреймворки на кшталт автономного фреймворку агентів ШІ OpenClaw вже інтегруються з MCP-серверами, щоб надати агентам можливості реального світу.
Безпека MCP: OAuth 2.1, загрози та практичний чек-лист
Безпека — це область, де екосистема MCP має найбільше роботи. І цифри малюють чітку картину.
Проблема 88%: чому більшість MCP-серверів небезпечні
Astrix Security проаналізувала понад 5200 реалізацій MCP-серверів з відкритим кодом і виявила, що 88% потребують якихось облікових даних, але 53% покладаються на небезпечні довготривалі статичні секрети, такі як API-ключі та персональні токени доступу, жорстко закодовані у конфігураційних файлах. Лише 8,5% реалізують OAuth.
Це означає, що переважна більшість MCP-серверів у дикій природі використовує аутентифікацію, еквівалентну приклеюванню ключа від дому скотчем до вхідних дверей.
OAuth 2.1 для MCP-серверів
Специфікація MCP вимагає OAuth 2.1 для всіх серверів на основі HTTP станом на оновлення червня 2025 року. Потік працює так: MCP-клієнт ініціює потік авторизації OAuth 2.1 із сервером, отримує токен доступу з обмеженою областю дій (scoped access token) і включає його в кожен наступний запит. PKCE (Proof Key for Code Exchange) є обов'язковим для всіх клієнтів, без винятків.
Якщо ви будуєте MCP-сервер, який працює через Streamable HTTP, OAuth 2.1 не є опціональним. Це вимога специфікації.
Модель загроз: що може піти не так
Чотири загрози заслуговують на увагу в будь-якому розгортанні MCP:
- Ін'єкція промптів через інструменти: шкідливе або компрометоване джерело даних повертає контент, призначений для маніпулювання моделлю. Якщо інструмент завантажує веб-сторінку, і ця сторінка містить приховані інструкції, модель може їх виконати.
- Атака «плутанини заступника» (Confused deputy): модель викликає інструмент із ширшими правами доступу, ніж передбачав користувач. Якщо MCP-сервер має адміністративний доступ до бази даних, модель теоретично може видалити таблицю.
- Ризик концентрації токенів: MCP-сервер, який зберігає API-ключі для GitHub, Slack та вашої продакшн-бази даних, є єдиною ціллю з високою цінністю. Компрометація одного сервера означає компрометацію всього, до чого він підключений.
- Небезпечний транспорт: Запуск HTTP MCP-сервера без TLS залишає кожен запит, включаючи токени OAuth та чутливі дані, відкритим у plaintext.
Чек-лист безпеки для продакшн MCP
- Реалізуйте OAuth 2.1 для будь-якого сервера, доступного через HTTP. Жодних статичних API-ключів у конфігураційних файлах.
- Застосовуйте принцип найменших привілеїв. Якщо ваш інструмент лише читає дані, облікові дані сервера мають бути лише для читання. Не надавайте інструменту звітності права на запис.
- Ізолюйте облікові дані. Кожен MCP-сервер повинен мати власні токени з обмеженою областю дій. Не діліть єдиний «god token» між серверами.
- Вимагайте TLS скрізь. Streamable HTTP без HTTPS — це автоматичне «ні» для продакшену.
- Валідуйте та санітизуйте вивід інструментів. Ставтеся до даних, повернутих інструментами, так само, як до введення користувача, не довіряйте їм сліпо.
- Обмежуйте частоту викликів інструментів. Агентний цикл, що вийшов з-під контролю і викликає інструмент тисячі разів, може вичерпати квоти API або спричинити небажані побічні ефекти.
- Аудитуйте та логуйте кожен виклик інструменту. Включайте ID запитів, часові мітки, модель, що викликає, та аргументи інструменту. Це знадобиться для налагодження та реагування на інциденти безпеки.
Налашгодження MCP: Inspector, логування та поширені помилки
Ви зіткнетеся з помилками. Кожен розробник стикається. Ось як виправити їх швидко.
MCP Inspector — це офіційний інструмент налагодження та ваша перша лінія оборони. Він підключається до будь-якого MCP-сервера, виявляє його інструменти/ресурси/промпти та дозволяє викликати їх вручну, показуючи сирий трафік JSON-RPC.
# Launch Inspector against your Python server
npx @modelcontextprotocol/inspector python weather_server.py
# Or against a TypeScript server
npx @modelcontextprotocol/inspector npx tsx weather-server.tsInspector відкриває браузерний інтерфейс із вкладками для Tools, Resources, Prompts та панеллю сповіщень. Ви можете викликати будь-який інструмент із власними аргументами та бачити точно, який JSON йде «по дроту». Використовуйте його перед підключенням до хост-додатка, налагоджувати сервер ізольовано набагато простіше.
Поширені помилки та виправлення
- «Server not found» у Claude Desktop: майже завжди проблема зі шляхом у
claude_desktop_config.json. Перевірте, чиcommandвказує на реальний бінарний файл, аcwd— на правильний каталог. На macOS використовуйте абсолютні шляхи. - Помилки валідації схеми інструменту: якщо модель надсилає аргументи, які не відповідають
inputSchemaінструменту, сервер відхиляє виклик. Переконайтеся, що типи вашої схеми відповідають очікуванням моделі. Zod (TypeScript) та анотації типів (Python) ловлять більшість із них ще на етапі визначення. - Обриви транспортного з'єднання: для
stdioце зазвичай означає, що процес сервера впав. Перевірте вивід stderr. Для Streamable HTTP перевірте налаштування тайм-аутів; інструменти, що виконуються довго, можуть перевищувати стандартні HTTP-тайм-аути. - «Permission denied» або помилки 401: занадто вузька область дій OAuth. Сервер відхиляє токен, оскільки він не має необхідних дозволів. Розширте область дій, але лише настільки, наскільки це дійсно потрібно інструменту.
Найкращі практики логування
Структуруйте свої логи з ID запитів, щоб можна було простежити один запит користувача через MCP-клієнт, сервер та будь-які downstream API. Логуйте кожен виклик tools/call із назвою інструменту, аргументами, часом відповіді та статусом результату. У продакшені відправляйте ці логи на платформу спостережуваності; коли щось піде не так о 3 годині ночі, ви будете вдячні собі за це.
Як Techsy будує з MCP
Ми інтегруємо MCP у клієнтські проєкти з початку 2025 року, і шаблон, який ми бачимо найчастіше, такий: команда має функцію ШІ, яка працює з однією моделлю та кількома інструментами, але планує масштабуватися — більше моделей, більше джерел даних, більше можливостей агентів. Це точка перегину, де MCP починає окупатися.
Наш підхід складається з трьох кроків:
- Оцінка придатності. Не кожному проєкту потрібен MCP. Якщо ви викликаєте два інструменти з однієї моделі, function calling простіший, і ми скажемо вам про це. MCP має сенс, коли ви підключаєте 3+ джерела даних, підтримуєте кілька моделей або будуєте агентні робочі процеси, де інструменти мають бути виявлюваними.
- Створення та тестування серверів ізольовано. Ми розробляємо власні MCP-сервери для кожного джерела даних (внутрішні бази даних, SaaS API, власні сервіси) та перевіряємо їх за допомогою MCP Inspector перед підключенням до будь-якого хоста.
- Розгортання з Streamable HTTP та OAuth 2.1. Для продакшену ми запускаємо MCP-сервери як контейнеризовані сервіси за TLS, зі скоупленими OAuth-токенами та структурованим логуванням з першого дня. Жодних статичних секретів.
Найпоширеніші інтеграції, які ми будуємо: підключення асистентів ШІ до внутрішніх баз даних Postgres, створення власних MCP-серверів для SaaS-платформ клієнтів та міграція команд із розрізнених налаштувань function calling на стандартизовану архітектуру MCP.
Будуєте інструменти на основі ШІ, яким потрібно підключатися до вашої інфраструктури? Ми допомагаємо командам проектувати та впроваджувати інтеграції MCP. Отримайте безкоштовну консультацію
Часті запитання про MCP
Що таке Model Context Protocol (MCP)?
MCP — це відкритий стандарт, спочатку створений Anthropic, а зараз керований Linux Foundation, який визначає, як моделі ШІ підключаються до зовнішніх інструментів, джерел даних та сервісів. Він стандартизує шар інтеграції, щоб один MCP-сервер працював із будь-якою сумісною моделлю, ніби універсальна розетка для ШІ.
Як працює MCP?
MCP використовує трикомпонентну архітектуру: хост-додаток (наприклад, Claude Desktop або Cursor), MCP-клієнт всередині хоста, який керує з'єднаннями, та MCP-сервери, які надають інструменти та дані. Уся комунікація використовує повідомлення JSON-RPC 2.0 через stdio (локально) або Streamable HTTP (віддалено).
Для чого використовується MCP?
Поширені варіанти використання включають підключення асистентів ШІ до баз даних (Postgres, MySQL), інтеграцію з платформами коду (GitHub, GitLab), доступ до SaaS-інструментів (Slack, Notion, Google Drive) та створення автономних агентів ШІ, яким потрібно взаємодіяти з реальними сервісами.
Чи є MCP тим самим, що й function calling?
Ні. Function calling залежить від конкретної моделі (формат OpenAI відрізняється від формату Anthropic) і відбувається за запитом — ви надсилаєте схеми інструментів із кожним API-викликом. MCP — це стандартизований протокол, який працює між моделями, підтримує виявлення інструментів та включає ресурси й промпти, окрім простого виконання функцій.
Що таке MCP-сервери?
MCP-сервери — це програми, які надають інструменти, ресурси та промпти моделям ШІ через протокол MCP. Вони огортають зовнішні API та джерела даних у стандартизований інтерфейс. Приклади включають сервер GitHub MCP (для управління PR та issue) та сервер Postgres MCP (для запитів до бази даних).
Як створити MCP-сервер?
Використовуйте Python з FastMCP (pip install fastmcp) або TypeScript з офіційним SDK (npm install @modelcontextprotocol/sdk). Визначте свої інструменти як декоровані функції (Python) або зареєстровані обробники (TypeScript), а потім запустіть сервер. Дивіться розділ туторіалу вище для повного робочого коду або слідуйте нашому покроковому посібнику зі створення MCP-сервера з нуля для детального walkthrough.
Чи безпечний MCP?
Сам протокол підтримує OAuth 2.1 для аутентифікації та скоуплені дозволи. Однак дослідження Astrix Security виявило, що 88% існуючих реалізацій MCP-серверів покладаються на статичні секрети, а не на OAuth. Протокол безпечний за дизайном, але більшість реальних розгортань ще не встигли за ним.
Які LLM підтримують MCP?
Claude має нативну підтримку MCP з моменту його створення в листопаді 2024 року. ChatGPT додав підтримку в березні 2025 року, а Gemini — у квітні 2025 року. Моделі з відкритим кодом можуть використовувати MCP через адаптери в LangChain та LlamaIndex.
Яка різниця між MCP та REST API?
REST API призначені для загальної комунікації між сервісами. MCP спеціально розроблений для взаємодії з моделями ШІ; він включає виявлення інструментів, узгодження схем, доступ до ресурсів та шаблони промптів, яких немає в REST. Ви не замінюватимете свої REST API на MCP; вони служать різним шарам.
Хто зараз підтримує MCP?
Agentic AI Foundation (AAIF) Linux Foundation, створена в грудні 2025 року, керує MCP. Її співзасновниками є Anthropic, Block та OpenAI. Це постачальнико-незалежне управління є ключовою причиною впровадження MCP підприємствами.
Що таке Streamable HTTP у MCP?
Streamable HTTP — це транспортний механізм для продакшену, доданий у оновленні специфікації MCP 2025 року. Він замінює старий транспорт HTTP+SSE чистішим дизайном: клієнти надсилають HTTP POST-запити, а сервери можуть відповідати синхронно або через потокове передавання SSE. Він працює за балансировщиками навантаження та підтримує стандартну HTTP-аутентифікацію.
Скільки існує MCP-серверів?
Linux Foundation цитувала понад 10 000 активних серверів і 97 мільйонів щомісячних завантажень SDK, коли MCP було передано AAIF у грудні 2025 року. Екосистема охоплює бази даних, інструменти для коду, SaaS-інтеграції, пошукові системи та постачальників хмарної інфраструктури.
Висновок
MCP пройшов шлях від експерименту з відкритим кодом від Anthropic до галузевого стандартного протоколу для підключення моделей ШІ до інструментів трохи більше ніж за рік. Ось що важливо:
- MCP вирішує проблему M x N: один сервер працює з кожною сумісною моделлю, один клієнт працює з кожним сервером
- Ви можете створити робочий MCP-сервер менш ніж за 50 рядків коду на Python (FastMCP) або TypeScript
- Використовуйте stdio для розробки, Streamable HTTP для продакшену: вибір транспорту очевидний
- Захищайте свої сервери за допомогою OAuth 2.1: 88% поточних реалізацій цього не роблять, і це реальний ризик
- Екосистема готова до продакшену: понад 10 000 серверів, усі основні LLM, постачальнико-незалежне управління під егідою Linux Foundation
Глянувши вперед, дорожня карта 2026 року зосереджена на комунікації між агентами через новий примітив Tasks, посиленій корпоративній безпеці та MCP Apps для інтерактивного UI, керованого сервером. MCP більше не просто протокол для доступу до інструментів, він стає інфраструктурним шаром для агентного ШІ.
Почніть із коду туторіалу вище, протестуйте його в MCP Inspector і підключіть до Claude Desktop. Ви отримаєте робочу інтеграцію MCP менш ніж за годину.
Джерела
- Специфікація MCP (2025-11-25)
- Специфікація авторизації MCP
- Специфікація транспортів MCP
- Документація MCP Inspector
- Представлення Model Context Protocol, Anthropic
- Передача MCP Linux Foundation, Anthropic
- Оголошення Linux Foundation про AAIF
- Підтримка MCP Google Cloud
- Python SDK FastMCP
- TypeScript SDK MCP
- Astrix Security: Стан безпеки MCP-серверів 2025
- Дорожня карта MCP 2026