MCP скрізь. Кожен анонс AI-інструмента на початку 2026 його згадує. Кожна стаття про 'сучасний AI-стек' включає в список. Але коли питаєш людей, що таке MCP насправді, отримуєш або PhD-дисертацію, або маркетинговий пітч.
Ось пояснення в одне речення: MCP — це USB-порт для AI-агентів.
Це все пояснення. Ну гаразд, ось решта. 😼
Світ до стандарту
Уявіть свій сетап десь наприкінці 2024-го. Ви будуєте AI-агента — програму, яка використовує велику мовну модель (LLM — мозок за ChatGPT, Claude, Gemini) для прийняття рішень і самостійних дій. Вашому агенту потрібно робити запити до PostgreSQL, шукати в інтернеті, керувати GitHub issues і читати локальні файли.
Для кожного інструмента ви пишете кастомний код інтеграції:
# Кожен інструмент потребує свого клею
from custom_postgres import query_db
from custom_github import create_issue
from custom_search import web_search
from custom_files import read_file
# Кожна інтеграція має різні:
# - Методи автентифікації
# - Формати відповідей
# - Обробку помилок
# - Управління з'єднаннями
Кожен AI-вендор будував свою систему інтеграцій. Claude мав "tool use". OpenAI — "function calling". LangChain — "tools". Усі робили одне й те саме несумісними способами. Зробив інтеграцію для одного — перероблюй для іншого.
Це ера COM-портів, LPT-портів і пропрієтарних зарядок в AI-тулінгу. Пам'ятаєте часи, коли до кожного телефону йшов свій кабель? Nokia — тонкий штирьок, Samsung — широка лопата, Sony Ericsson — щось третє. Чистий хаос. 😹
Прогалина, яку треба було заповнити
Проблема була не в тому, що інтеграції складні. Проблема — вони складні кожного разу заново. З'являється новий інструмент — пишеш ще 200 рядків кастомної інтеграції. Помнож це на кожен AI-клієнт на ринку. Математика жорстока.
Комусь треба було визначити універсальний роз'єм.
Зустрічайте MCP
Anthropiс представила MCP (Model Context Protocol) наприкінці 2024 як відкритий стандарт — універсальний роз'єм для AI-інструментів, як USB, але для даних. До березня 2026 він став стандартним способом підключення AI-агентів до зовнішнього світу.
Ось як виглядає підключення чотирьох інструментів через MCP:
{
"mcpServers": {
"postgres": { "command": "npx", "args": ["-y", "@mcp/server-postgres", "..."] },
"github": { "command": "npx", "args": ["-y", "@mcp/server-github"] },
"search": { "command": "npx", "args": ["-y", "@mcp/server-brave-search"] },
"files": { "command": "npx", "args": ["-y", "@mcp/server-filesystem", "/home"] }
}
}
Чотири інструменти. Чотири рядки конфігу. Жодного кастомного коду. Кожен сервер говорить одним протоколом — набором правил комунікації між програмами — і кожен клієнт його розуміє.
Архітектура: три актори, нуль магії
MCP має рівно три рухомі частини:
┌──────────────────┐
│ HOST │ (Claude Code, Cursor, ваш додаток)
│ │
│ ┌────────────┐ │
│ │ CLIENT │──── MCP Protocol ──── SERVER (Postgres, GitHub)
│ └────────────┘ │
│ │
│ ┌────────────┐ │
│ │ CLIENT │──── MCP Protocol ──── SERVER (Search, Files)
│ └────────────┘ │
└──────────────────┘
Host — AI-додаток, з яким ви взаємодієте. Claude Code, Claude Desktop, Cursor, Windsurf або ваш власний додаток.
Client — живе всередині хоста. Керує з'єднанням з одним сервером. Хост може запускати багато клієнтів, підключених до багатьох серверів одночасно.
Server — надає інструменти та дані. Працює як окремий процес — самостійна програма — або на вашій машині, або на віддаленому сервері.
Жодного оркестраційного шару. Жодної черги повідомлень. Жодного service mesh. Просто клієнт спілкується з сервером через стандартний протокол. Це все. 😸
Що тече через трубу
MCP-сервери можуть надавати три типи речей:
1. Tools — дії, які AI може виконувати
Tools — це функції, самодостатні операції, які AI може викликати. Наприклад, "виконати SQL-запит" або "створити GitHub issue".
{
"name": "query",
"description": "Run a read-only SQL query against the database",
"inputSchema": {
"type": "object",
"properties": {
"sql": { "type": "string", "description": "The SQL query to execute" }
},
"required": ["sql"]
}
}
При запуску сервер повідомляє клієнту: "Ось мої інструменти, ось що кожен робить, ось параметри". AI-модель читає ці описи і сама вирішує, коли їх використовувати — так само, як ви вирішуєте, який додаток відкрити на телефоні.
2. Resources — дані, які AI може читати
Resources — це шматки даних, які сервер експонує. Вміст файлу, схема бази даних (структура ваших таблиць), конфігурація.
Різниця важлива: tools роблять речі, resources надають контекст. AI читає resources, щоб зрозуміти середовище перед тим, як діяти. Уявіть, що це меню ресторану — спочатку читаєте, потім замовляєте.
3. Prompts — стартові шаблони
Заготовлені шаблони, які сервер пропонує, на кшталт "проаналізуй цю таблицю" або "зроби рев'ю цього pull request". Це зручні шорткати, які знають, як ефективно використовувати інструменти сервера.
Більшість людей ігнорують prompts і просто спілкуються з AI як зазвичай. І це нормально. Вони опціональні.
Відстежуємо реальний запит
Прослідкуймо, що відбувається, коли ви набираєте "Покажи всіх юзерів, які зареєструвалися сьогодні" в Claude Code з підключеним Postgres MCP-сервером:
1. ВИ пишете: "Покажи всіх юзерів, які зареєструвалися сьогодні"
2. CLAUDE бачить, що Postgres MCP-інструменти доступні
(query, list_tables, describe_table)
3. CLAUDE спочатку викликає 'describe_table', щоб
зрозуміти структуру таблиці users
4. CLIENT відправляє на SERVER:
{ "method": "tools/call",
"params": { "name": "describe_table",
"arguments": { "table": "users" } } }
5. SERVER робить запит до PostgreSQL, повертає схему
6. CLAUDE пише SQL-запит на основі схеми:
SELECT * FROM users WHERE created_at >= CURRENT_DATE
7. CLIENT відправляє запит на SERVER, SERVER виконує його
8. CLAUDE форматує результати і показує вам
Усе це займає 1-2 секунди. Ви запитали людською мовою, AI розібрався з SQL, MCP-сервер виконав запит, ви отримали результат. Без ручного написання запитів. Це той самий "ага"-момент для більшості людей. 😻
Транспортний рівень — як біти подорожують
MCP працює через два методи транспорту:
STDIO (локальні сервери) — сервер запускається як дочірній процес на вашій машині. Комунікація відбувається через stdin/stdout — ті самі текстові потоки, що використовує ваш термінал. Це найпоширеніший варіант:
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["server.js"],
"env": { "DB_URL": "..." }
}
}
}
Просто, швидко, без мережі.
Streamable HTTP (віддалені сервери) — для серверів на інших машинах. Хмарні, розшарені на команду або сторонні сервіси:
{
"mcpServers": {
"remote-server": {
"url": "https://mcp.example.com/sse",
"headers": { "Authorization": "Bearer your-token" }
}
}
}
Запити йдуть як звичайний HTTP POST. Відповіді стрімляться в реальному часі. Так працюють ентерпрайз-деплої — централізовані сервери, до яких підключаються кілька розробників.
Зберіть свій за 20 рядків
Ось найпростіший робочий MCP-сервер, який можна написати, використовуючи офіційний TypeScript SDK:
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new McpServer({
name: "my-tool",
version: "1.0.0"
});
server.tool(
"hello",
"Says hello to someone",
{ name: { type: "string", description: "Person to greet" } },
async ({ name }) => ({
content: [{ type: "text", text: `Hello, ${name}!` }]
})
);
const transport = new StdioServerTransport();
await server.connect(transport);
Ставите SDK (npm install @modelcontextprotocol/sdk), описуєте свої інструменти, підключаєте транспорт. SDK бере на себе protocol negotiation — хендшейк, де клієнт і сервер домовляються, що обидва підтримують — парсинг повідомлень та обробку помилок.
Практичний приклад — API погоди
server.tool(
"get_weather",
"Get current weather for a city",
{
city: { type: "string", description: "City name" },
units: { type: "string", description: "celsius or fahrenheit", default: "celsius" }
},
async ({ city, units }) => {
const response = await fetch(
`https://wttr.in/${encodeURIComponent(city)}?format=j1`
);
const data = await response.json();
const current = data.current_condition[0];
const temp = units === "fahrenheit"
? current.temp_F + "°F"
: current.temp_C + "°C";
return {
content: [{ type: "text", text: `${city}: ${temp}, ${current.weatherDesc[0].value}` }]
};
}
);
Тепер ваш AI-агент може перевіряти погоду. Але головне — бачите патерн: беремо дані з будь-якого API (application programming interface — спосіб, яким програми спілкуються між собою), загортаємо в MCP-інструмент — і кожен MCP-сумісний клієнт на планеті може його використовувати.
Хендшейк можливостей
Коли клієнт вперше підключається до сервера, вони домовляються:
Клієнт: "Я підтримую tools, resources і prompts. Що маєш?"
Сервер: "Надаю 3 tools і 2 resources. Ось вони."
Клієнт: "Зрозумів. Готовий."
Це означає, що клієнтам не потрібно заздалегідь знати, що надає сервер. Сервери можуть додавати або видаляти фічі, нічого не зламавши. Різні клієнти можуть використовувати один сервер по-різному. Це елегантна еволюція, а не крихке зчеплення.
Що не ідеально
Не будемо вдавати, що все бездоганно. Станом на березень 2026:
Безпека — це ваша проблема. MCP-сервер може робити все, на що ви дали йому дозвіл. Зловмисний сервер може зливати дані через виклики інструментів. Вбудованого sandboxing'у немає — жодної автоматичної ізоляції від решти вашої системи. Ви довіряєте кожному серверу так само, як довіряєте будь-якому npm-пакету, який встановлюєте. Подумайте про це на секунду.
Пошук — це бардак. Знайти правильний MCP-сервер для свого випадку означає гортати реєстри типу mcpservers.org або glama.ai/mcp/servers. Централізованого верифікованого маркетплейсу поки немає. Якість — від "вау" до "що це взагалі".
Дебаг — біль. Коли виклик інструменту падає, повідомлення про помилку проходить через кілька шарів — клієнт, протокол, сервер, базовий API — і на виході перетворюється на кашу. Стає краще, але все ще боляче.
Overhead продуктивності є. Кожен виклик інструменту — це JSON-RPC round trip, запит-відповідь у форматі JSON. Для локальних STDIO-серверів це мізер. Для віддалених серверів через HTTP затримки накопичуються, коли AI ланцюгує кілька викликів.
Що це означає для вас
Якщо ви користуєтесь AI-інструментами для кодингу, як-от Claude Code або Cursor: MCP означає, що ваш AI отримує нові можливості без оновлень софту. З'явився новий MCP-сервер для Jira? Встановлюєте — і ваш AI керує тікетами. Новий сервер для AWS? AI керує інфраструктурою. Не треба чекати, поки вендор зробить інтеграцію — спільнота будує їх сама.
Якщо ви будуєте інструменти або API: MCP означає, що ви пишете одну інтеграцію — і вона працює з Claude, Cursor, Windsurf, Cline та кожним майбутнім MCP-сумісним клієнтом. Один сервер — десятки клієнтів. Ось вам математика USB.
Якщо ви фаундер: MCP-сервер для вашого продукту стає обов'язковою програмою, як REST API десять років тому. Якщо у вашого дев-тула немає MCP-сервера, користувачі запитають — чому.
Екосистема станом на березень 2026
- Офіційні сервери від Anthropic: PostgreSQL, GitHub, Filesystem, Brave Search, Puppeteer, Google Maps, Slack та інші — див. репозиторій MCP-серверів
- Ентерпрайз-сервери від AWS, Cloudflare, Sentry
- Комʼюніті-сервери для Docker, Kubernetes, Notion, Linear, Figma, Stripe — сотні, і рахунок іде
- Роадмап 2026 фокусується на agent-to-agent комунікації, горизонтальному масштабуванні та механізмі
.well-knowndiscovery, щоб сервери могли рекламувати себе автоматично
USB вбив пропрієтарну зарядку. MCP вбиває кастомні інтеграції.
MCP — це найважливіше, що сталося з AI-тулінгом відтоді, як контекстні вікна — робоча пам'ять AI — стали достатньо великими, щоб вмістити реальну кодову базу. Це не сексі. Це JSON-RPC протокол через stdio. Але USB теж не був сексі — і він знищив кожен пропрієтарний конектор на своєму шляху.
Найрозумніше, що ви можете зробити прямо зараз: припиніть читати специфікації. Встановіть Postgres MCP-сервер, підключіть до Claude Code і запитайте щось про свою базу даних. Ви зрозумієте MCP за 30 секунд.
Специфікація — для тих, хто будує протокол. А ви ним користуєтесь. 😹




