Model Context Protocol (MCP) - це відкритий стандарт, створений Anthropic, який визначає, як AI-моделі взаємодіють із зовнішніми інструментами, джерелами даних та сервісами. Уявіть собі це як "USB-C для AI" - універсальний конектор, який дозволяє будь-якому AI-агенту спілкуватися з будь-яким інструментом через стандартизований інтерфейс.
З моменту запуску MCP перевищив 97 мільйонів щомісячних завантажень SDK і був прийнятий усіма основними постачальниками AI: Anthropic, OpenAI, Google, Microsoft та Amazon. У цьому посібнику ми розглянемо все, що вам потрібно знати для роботи з MCP.
Чому MCP існує
До MCP кожен AI-додаток мав створювати власні інтеграції для кожного інструменту, який хотів використовувати. Хочете, щоб ваш AI читав файли? Пишіть власний код. Робити запити до бази даних? Ще більше власного коду. Публікувати в Slack? Ще одна інтеграція.
Це створювало проблему N×M: N AI-додатків, кожному з яких потрібно M власних інтеграцій, що призводило до дублювання зусиль та фрагментації екосистем.
MCP вирішує це за допомогою єдиного протоколу, який будь-який AI-клієнт може використовувати для зв'язку з будь-яким MCP-сервером:
Основні концепції
MCP має три фундаментальні примітиви:
1. Інструменти (Tools)
Інструменти - це функції, які AI може викликати. Вони представляють дії на кшталт "створити файл", "запитати базу даних" або "надіслати повідомлення". Кожен інструмент має назву, опис та JSON Schema для своїх параметрів.
{ name: "create_issue", description: "Create a new GitHub issue", inputSchema: { type: "object", properties: { title: { type: "string", description: "Issue title" }, body: { type: "string", description: "Issue body" }, repo: { type: "string", description: "Repository name" } }, required: ["title", "repo"] } }
2. Ресурси (Resources)
Ресурси - це дані, які AI може читати. Вони представляють файли, записи бази даних, відповіді API або будь-яке інше джерело даних. Ресурси ідентифікуються за URI.
{ uri: "file:///Users/dev/project/README.md", name: "Project README", mimeType: "text/markdown" }
3. Промпти (Prompts)
Промпти - це багаторазові шаблони, які допомагають структурувати взаємодії. Вони можуть включати динамічні параметри та корисні для стандартизації типових робочих процесів.
{ name: "code_review", description: "Review code changes for quality and security", arguments: [ { name: "diff", description: "The code diff to review", required: true } ] }
Архітектура
MCP дотримується клієнт-серверної архітектури:
- Хост: AI-додаток (Claude Desktop, Cursor, ваш власний додаток)
- Клієнт: Підтримує з'єднання 1:1 з MCP-сервером
- Сервер: Надає інструменти, ресурси та промпти клієнту
- Транспорт: Зв'язок здійснюється через JSON-RPC 2.0 по stdio (локально) або Server-Sent Events (віддалено)
Створення MCP-сервера
Давайте створимо практичний MCP-сервер, який взаємодіє зі списком завдань, збереженим у JSON-файлі.
Налаштування
mkdir mcp-todo-server && cd mcp-todo-server npm init -y npm install @modelcontextprotocol/sdk zod
Реалізація сервера
// src/index.ts import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; import fs from "fs"; const TODO_FILE = "./todos.json"; function readTodos(): { id: number; text: string; done: boolean }[] { if (!fs.existsSync(TODO_FILE)) return []; return JSON.parse(fs.readFileSync(TODO_FILE, "utf-8")); } function writeTodos(todos: { id: number; text: string; done: boolean }[]) { fs.writeFileSync(TODO_FILE, JSON.stringify(todos, null, 2)); } const server = new McpServer({ name: "todo-server", version: "1.0.0", }); // Tool: Add a todo server.tool( "add_todo", "Add a new todo item", { text: z.string().describe("The todo text") }, async ({ text }) => { const todos = readTodos(); const newTodo = { id: Date.now(), text, done: false }; todos.push(newTodo); writeTodos(todos); return { content: [{ type: "text", text: `Added: "${text}"` }] }; } ); // Tool: List todos server.tool( "list_todos", "List all todo items", {}, async () => { const todos = readTodos(); const list = todos .map((t) => `${t.done ? "✅" : "⬜"} [${t.id}] ${t.text}`) .join("\n"); return { content: [{ type: "text", text: list || "No todos yet." }] }; } ); // Tool: Complete a todo server.tool( "complete_todo", "Mark a todo as completed", { id: z.number().describe("The todo ID to complete") }, async ({ id }) => { const todos = readTodos(); const todo = todos.find((t) => t.id === id); if (!todo) return { content: [{ type: "text", text: "Todo not found." }] }; todo.done = true; writeTodos(todos); return { content: [{ type: "text", text: `Completed: "${todo.text}"` }] }; } ); // Resource: Current todos as a readable resource server.resource( "todos://list", "Current todo list", async () => ({ contents: [{ uri: "todos://list", mimeType: "application/json", text: JSON.stringify(readTodos(), null, 2), }], }) ); // Start the server const transport = new StdioServerTransport(); await server.connect(transport);
Конфігурація
Щоб використовувати цей сервер з Claude Desktop, додайте його до вашої конфігурації:
{ "mcpServers": { "todo": { "command": "npx", "args": ["tsx", "/path/to/mcp-todo-server/src/index.ts"] } } }
Створення MCP-клієнта
Ви також можете створити власний клієнт, який підключається до будь-якого MCP-сервера:
import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; const transport = new StdioClientTransport({ command: "npx", args: ["tsx", "./src/index.ts"], }); const client = new Client({ name: "my-client", version: "1.0.0" }); await client.connect(transport); // List available tools const { tools } = await client.listTools(); console.log("Available tools:", tools.map((t) => t.name)); // Call a tool const result = await client.callTool({ name: "add_todo", arguments: { text: "Write MCP blog post" }, }); console.log(result);
Популярні MCP-сервери
Екосистема MCP швидко зросла. Ось деякі з найпопулярніших серверів:
| Сервер | Опис | Сценарій використання |
|---|---|---|
| GitHub | Створення issues, PR, управління репозиторіями | Робочі процеси розробки |
| Slack | Надсилання повідомлень, управління каналами | Командна комунікація |
| PostgreSQL | Запити та управління базами даних | Доступ до даних |
| Filesystem | Читання, запис та пошук файлів | Локальна розробка |
| Puppeteer | Автоматизація браузера та скрейпінг | Веб-тестування |
| Sentry | Моніторинг помилок та налагодження | Підтримка продакшену |
| Supabase | База даних, автентифікація, сховище | Бекенд-операції |
MCP проти A2A (Agent-to-Agent)
MCP обробляє комунікацію агент-інструмент, тоді як протокол A2A (Agent-to-Agent) від Google обробляє комунікацію агент-агент. Вони доповнюють один одного:
- MCP: Як AI-агент використовує інструменти (вертикальна інтеграція)
- A2A: Як AI-агенти співпрацюють один з одним (горизонтальна інтеграція)
Найкращі практики
- Тримайте сервери сфокусованими: Один сервер на домен (сервер GitHub, сервер Slack тощо). Не створюйте монолітні сервери.
- Валідуйте вхідні дані за допомогою Zod: Завжди валідуйте вхідні дані інструментів правильними схемами.
- Обробляйте помилки коректно: Повертайте зрозумілі повідомлення про помилки, а не стек-трейси.
- Використовуйте ресурси для даних лише для читання: Якщо AI потрібно лише читати дані, надавайте їх як ресурс, а не як інструмент.
- Додавайте хороші описи: Хороші описи інструментів та параметрів допомагають AI зрозуміти, коли і як використовувати кожен інструмент.
- Тестуйте за допомогою MCP Inspector: Використовуйте
npx @modelcontextprotocol/inspectorдля інтерактивного тестування вашого сервера.
Початок роботи
# Create a new MCP server from template npx @modelcontextprotocol/create-server my-server # Test with the MCP Inspector npx @modelcontextprotocol/inspector npx tsx ./src/index.ts
Висновок
MCP став де-факто стандартом використання AI-інструментів у 2026 році. Незалежно від того, чи ви створюєте власних AI-агентів, розширюєте Claude Code або створюєте інтеграції для існуючих платформ, розуміння MCP є необхідним. Протокол достатньо простий, щоб вивчити його за півдня, але достатньо потужний для створення AI-робочих процесів виробничого рівня.
Наступні кроки:
- Ознайомтесь зі Специфікацією MCP
- Перегляньте існуючі MCP-сервери для натхнення
- Створіть свій перший сервер з TypeScript або Python SDK
- Протестуйте його з Claude Desktop або MCP Inspector