Loading...
Loading...
Loading...
- [ЧАСТЬ 1: ЧТО ТАКОЕ MCP И ЗАЧЕМ ОН НУЖЕН](#часть-1-что-такое-mcp-и-зачем-он-нужен)
# MODEL CONTEXT PROTOCOL (MCP)
## 📋 Содержание
- [ЧАСТЬ 1: ЧТО ТАКОЕ MCP И ЗАЧЕМ ОН НУЖЕН](#часть-1-что-такое-mcp-и-зачем-он-нужен)
- [1.1 Проблема до MCP](#11-проблема-до-mcp)
- [1.2 Что такое MCP](#12-что-такое-mcp)
- [1.3 История MCP](#13-история-mcp)
- [ЧАСТЬ 2: АРХИТЕКТУРА MCP](#часть-2-архитектура-mcp)
- [2.1 Три компонента MCP](#21-три-компонента-mcp)
---
# ЧАСТЬ 1: ЧТО ТАКОЕ MCP И ЗАЧЕМ ОН НУЖЕН
## 1.1 Проблема до MCP
### 🤔 Представь такую ситуацию
Ты хочешь подключить AI инструмент к Google Drive.
**До появления MCP это выглядело так:**
```
Для подключения Claude к Google Drive
↓
Пишешь свой кастомный код
- OAuth авторизация
- API запросы
- Обработка ошибок
- 200+ строк кода
Для подключения ChatGPT к Google Drive
↓
Пишешь ДРУГОЙ код
- Их API отличается
- Другая структура
- Снова 200+ строк
Для подключения Cursor к Google Drive
↓
Снова новый код!
```
### 📊 N × M проблема
Вот что происходило в индустрии:
**N моделей × M сервисов = тысячи кастомных интеграций**
| | Google Drive | Slack | GitHub | PostgreSQL | Notion |
|---|---|---|---|---|---|
| **Claude** | Свой код | Свой код | Свой код | Свой код | Свой код |
| **GPT** | Свой код | Свой код | Свой код | Свой код | Свой код |
| **Gemini** | Свой код | Свой код | Свой код | Свой код | Свой код |
| **Cursor** | Свой код | Свой код | Свой код | Свой код | Свой код |
| **Codex** | Свой код | Свой код | Свой код | Свой код | Свой код |
**Результат:**
- 🔴 5 AI инструментов × 5 сервисов = **25 разных интеграций**
- 🔴 Каждая интеграция = 200+ строк кода
- 🔴 Обновление API = переписывать код везде
- 🔴 Новый сервис = N новых интеграций
### 💡 Аналогия: Мир до USB
В 1990-е годы каждое устройство имело свой уникальный разъём:
```
┌─────────────────────────────────────────┐
│ КОМПЬЮТЕР В 1995 ГОДУ │
│ │
│ Клавиатура → PS/2 разъём (круглый) │
│ Мышь → COM порт (9 контактов) │
│ Принтер → LPT порт (25 контактов) │
│ Сканер → SCSI (50 контактов) │
│ Джойстик → Game port (15 контактов)│
│ Модем → Отдельный COM порт │
└─────────────────────────────────────────┘
Проблемы:
❌ Разные драйверы для каждого устройства
❌ Конфликты портов
❌ Сложная настройка
❌ Ограниченное количество портов
```
**Потом появился USB (1996):**
```
┌─────────────────────────────────────────┐
│ КОМПЬЮТЕР С USB │
│ │
│ Все устройства → USB порт (один тип) │
│ │
│ ✅ Клавиатура │
│ ✅ Мышь │
│ ✅ Принтер │
│ ✅ Сканер │
│ ✅ Джойстик │
│ ✅ Флешка │
│ ✅ Камера │
│ ✅ ... любое устройство! │
└─────────────────────────────────────────┘
Результат:
✅ Один стандарт
✅ Plug & play (подключил и работает)
✅ Один драйвер
✅ Работает везде
```
**MCP для AI = то же самое что USB для компьютеров! 🎯**
---
## 1.2 Что такое MCP
### 📖 Определение
**MCP (Model Context Protocol)** = универсальный стандарт для подключения AI к внешним данным и сервисам
### 🎯 Простыми словами
```
MCP = единый "USB разъём" для AI инструментов
Вместо того чтобы каждый AI инструмент писал свой код
для подключения к Google Drive, Slack, GitHub...
MCP говорит:
"Все используйте один стандартный способ!"
```
### 🔌 Что может подключить MCP?
**Файлы и хранилища:**
- 📁 Google Drive
- 📦 Dropbox
- 🗂️ Локальная файловая система
- 📝 Notion
- 📄 Confluence
**Базы данных:**
- 🐘 PostgreSQL
- 🍃 MongoDB
- 🔴 Redis
- 🐬 MySQL
- 📊 SQLite
**Коммуникация:**
- 💬 Slack
- 📧 Gmail
- 🎮 Discord
**Dev Tools:**
- 🐙 GitHub
- 🦊 GitLab
- 🎯 Jira
- 📈 Linear
- 🎨 Figma
**Облака:**
- 🔵 Google Cloud
- 🌐 Cloudflare
**И любые другие сервисы с API!**
---
### 🏗️ Архитектура MCP (высокоуровневая)
```
┌──────────────────────────────────────────────────────┐
│ AI КЛИЕНТЫ │
│ (используют MCP для подключения к данным) │
├──────────────────────────────────────────────────────┤
│ │
│ 🤖 Claude Code 💻 Cursor 🧠 ChatGPT │
│ 🔮 Windsurf 🎨 Codex 🌐 Gemini │
│ │
└────────────────────┬─────────────────────────────────┘
│
│ MCP Protocol
│ (единый стандарт)
│
┌────────────────┴────────┬────────────┬───────────┐
↓ ↓ ↓ ↓
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Google │ │ Slack │ │ GitHub │ │ Postgres│
│ Drive │ │ │ │ │ │ SQL │
│ │ │ │ │ │ │ │
│ MCP │ │ MCP │ │ MCP │ │ MCP │
│ Server │ │ Server │ │ Server │ │ Server │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
```
**Как это работает:**
1. **AI клиент** (например, Claude Code) хочет получить доступ к файлу в Google Drive
2. Вместо того чтобы писать кастомный код, он использует **MCP Protocol**
3. **MCP сервер Google Drive** понимает запрос и отдаёт файл
4. Данные возвращаются AI клиенту
**Магия:** Если завтра появится новый AI инструмент — ему не нужно писать код для всех сервисов! Он просто поддерживает MCP, и всё работает! ✨
---
### 🎓 Официальное описание от Anthropic
> **Model Context Protocol (MCP)** — это открытый протокол, который стандартизирует способ подключения AI систем к внешним источникам данных и инструментам.
**Ключевые слова:**
- 🔓 **Открытый** — не проприетарный, любой может использовать
- 📏 **Стандартизирует** — единые правила для всех
- 🔌 **Подключение** — живая связь с сервисами
- 🌐 **Универсальный** — работает с любыми AI системами
---
## 1.3 История MCP
### 📅 Timeline развития
```
ИСТОРИЯ MCP
2021-2023
────────
🔴 Хаос интеграций
Каждая компания пишет свой код для подключения AI к данным
N × M проблема достигает пика
Ноябрь 2024
───────────
🎉 РОЖДЕНИЕ MCP
Anthropic выпускает MCP как open standard
Первые серверы: filesystem, GitHub, Slack
Декабрь 2024
────────────
🚀 Рост экосистемы
- 50+ MCP серверов от community
- 10M+ загрузок SDK
- Поддержка в Claude Desktop и Claude Code
Январь 2025
───────────
🤖 OpenAI присоединяется
Sam Altman в Twitter: "People love MCP. We're adding support."
ChatGPT и Codex начинают поддерживать MCP
Март 2025
─────────
🔵 Google DeepMind анонсирует поддержку
Gemini API получает MCP integration
Google создаёт MCP серверы для Google Workspace
Апрель 2025
───────────
💼 Microsoft входит в игру
GitHub Copilot добавляет MCP
Azure AI Services поддерживают MCP
Декабрь 2025
────────────
🏛️ Linux Foundation
MCP передаётся Linux Foundation (Agentic AI Foundation)
Создан governance board из представителей:
- Anthropic
- OpenAI
- Google
- Microsoft
- IBM
Февраль 2026 (сегодня)
───────────────────────
📈 МАССОВОЕ ПРИНЯТИЕ
- 5,800+ MCP серверов
- 300+ AI клиентов
- 97M+ загрузок SDK ежемесячно
- Стандарт де-факто в индустрии
═════════════════════════════════════════════════════════
```
---
### 🎯 Почему MCP победил?
**3 ключевые причины:**
#### 1️⃣ **Открытость**
```
❌ Проприетарные решения:
- API OpenAI (только для GPT)
- Langchain (привязка к экосистеме)
- Каждый сам по себе
✅ MCP:
- Open source
- Apache 2.0 лицензия
- Любой может использовать
- Нет vendor lock-in
```
#### 2️⃣ **Простота интеграции**
```
До MCP:
200-300 строк кода для одной интеграции
С MCP:
10-20 строк конфигурации
```
**Пример:**
```json
// Подключение Google Drive БЕЗ MCP
// ~ 250 строк кода с OAuth, API вызовами, обработкой ошибок...
// Подключение Google Drive С MCP
{
"mcpServers": {
"gdrive": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-gdrive"],
"env": {
"GDRIVE_API_KEY": "your_key"
}
}
}
}
// Всё! 🎉
```
#### 3️⃣ **Network Effect (сетевой эффект)**
```
Больше AI инструментов поддерживают MCP
↓
Больше сервисов создают MCP серверы
↓
Ещё больше AI инструментов присоединяются
↓
...цикл усиливается...
```
**Цифры:**
| Дата | AI клиентов | MCP серверов |
|------|-------------|--------------|
| Ноябрь 2024 | 1 (Claude) | 5 |
| Январь 2025 | 10 | 50 |
| Апрель 2025 | 50 | 500 |
| Февраль 2026 | 300+ | 5,800+ |
**Вывод:** Когда все используют один стандарт — все в выигрыше! 🏆
---
# ЧАСТЬ 2: АРХИТЕКТУРА MCP
## 2.1 Три компонента MCP
MCP состоит из **трёх ключевых компонентов**, которые работают вместе:
```
┌──────────────────────────────────────────────────────┐
│ MCP HOST │
│ (Координатор всего процесса) │
│ │
│ Например: Claude Code, Cursor, ChatGPT app │
│ │
│ Что делает: │
│ • Управляет жизненным циклом клиентов │
│ • Контролирует безопасность │
│ • Координирует сессии │
│ • Обрабатывает user consent │
│ │
│ ┌────────────────────┐ ┌─────────────────────┐ │
│ │ MCP CLIENT 1 │ │ MCP CLIENT 2 │ │
│ │ (для GitHub) │ │ (для Slack) │ │
│ │ │ │ │ │
│ │ • Держит сессию │ │ • Держит сессию │ │
│ │ • Вызывает tools │ │ • Вызывает tools │ │
│ │ • Получает данные │ │ • Получает данные │ │
│ └─────────┬──────────┘ └──────────┬──────────┘ │
└────────────┼─────────────────────────┼──────────────┘
│ │
MCP Protocol MCP Protocol
(JSON-RPC 2.0) (JSON-RPC 2.0)
│ │
┌────────┴────────┐ ┌────────┴────────┐
│ GitHub Server │ │ Slack Server │
│ │ │ │
│ • Предоставляет│ │ • Предоставляет│
│ tools │ │ tools │
│ • Выполняет │ │ • Выполняет │
│ операции │ │ операции │
│ • Возвращает │ │ • Возвращает │
│ данные │ │ данные │
└─────────────────┘ └─────────────────┘
```
---
### 🏢 КОМПОНЕНТ 1: Host (Хост)
**Что это:**
Главный координатор. Обычно это AI инструмент, который ты используешь (Claude Code, Cursor, ChatGPT).
**Обязанности Host:**
1. **Управление клиентами**
```
Host запускает и останавливает MCP клиенты
Следит за их состоянием
Перезапускает при сбоях
```
2. **Контроль безопасности**
```
Host решает:
- Какие серверы разрешено подключать
- Нужно ли спрашивать разрешение у пользователя
- Какие операции разрешены
```
3. **Координация сессий**
```
Host управляет:
- Когда начинать новую сессию
- Как распределять запросы между клиентами
- Когда завершать работу
```
**Пример:**
```
Ты работаешь в Claude Code (это Host)
Claude Code:
├─ Запускает MCP клиент для GitHub
├─ Запускает MCP клиент для Google Drive
├─ Спрашивает у тебя: "Разрешить доступ к GitHub?"
├─ После твоего "Да" — разрешает клиенту работать
└─ Координирует все запросы
```
---
### 🔌 КОМПОНЕНТ 2: Client (Клиент)
**Что это:**
Соединение между Host и конкретным MCP сервером. Каждый клиент работает с одним сервером.
**Важно:**
- 1 клиент = 1 сервер
- Хочешь подключить GitHub и Slack? = 2 клиента
**Обязанности Client:**
1. **Установка соединения**
```
Client:
- Подключается к серверу
- Договаривается о capabilities (что сервер умеет)
- Держит соединение живым
```
2. **Выполнение запросов**
```
AI хочет прочитать файл из GitHub:
↓
Host передаёт запрос GitHub Client
↓
Client вызывает tool на GitHub Server
↓
Получает ответ и отдаёт Host
```
3. **Обработка ошибок**
```
Если сервер недоступен:
Client сообщает Host
Host показывает ошибку пользователю
```
**Визуализация:**
```
┌─────────────┐
│ Claude │ ← Host
│ Code │
└──────┬──────┘
│
├──→ Client 1 → GitHub Server
├──→ Client 2 → Slack Server
├──→ Client 3 → Google Drive Server
└──→ Client 4 → PostgreSQL Server
```
---
### 🖥️ КОМПОНЕНТ 3: Server (Сервер)
**Что это:**
Программа, которая предоставляет доступ к конкретному сервису (GitHub, Slack, БД...).
**Обязанности Server:**
1. **Предоставление capabilities**
```
Сервер говорит клиенту:
"Вот что я умею:
- tool: search_files (искать файлы)
- tool: read_file (читать файл)
- tool: create_issue (создать issue)
- resource: /repo/file.md (доступ к файлу)"
```
2. **Выполнение операций**
```
Client просит: "Создай issue в GitHub"
↓
Server:
1. Проверяет права доступа
2. Делает API запрос к GitHub
3. Обрабатывает ответ
4. Возвращает результат клиенту
```
3. **Управление ресурсами**
```
Server держит:
- API ключи
- Токены авторизации
- Соединения с базами данных
- Кэш данных
```
**Типы серверов:**
```
📍 Локальные серверы (на твоём компьютере):
- Filesystem Server (доступ к файлам)
- SQLite Server (локальная БД)
🌐 Удалённые серверы (в облаке):
- Google Drive Server
- Slack Server
- GitHub Server
```
---
### 🔄 Как всё работает вместе
**Полный цикл запроса:**
```
═══════════════════════════════════════════════════════
Сценарий: AI хочет создать issue в GitHub
═══════════════════════════════════════════════════════
Шаг 1: Пользователь даёт команду
─────────────────────────────────
Ты: "Создай issue 'Fix login bug' в GitHub"
↓
┌──────────┐
│ Claude │ ← HOST получает команду
│ Code │
└──────────┘
Шаг 2: Host передаёт задачу клиенту
────────────────────────────────────
┌──────────┐
│ Claude │ "Создай issue"
│ Code │ ──────────────┐
└──────────┘ ↓
┌─────────────┐
│GitHub Client│ ← CLIENT для GitHub
└─────────────┘
Шаг 3: Client вызывает tool на сервере
───────────────────────────────────────
┌─────────────┐
│GitHub Client│
└──────┬──────┘
│ "tools/call: create_issue"
│ args: { title: "Fix login bug" }
↓
┌─────────────┐
│GitHub Server│ ← SERVER
└─────────────┘
Шаг 4: Server выполняет операцию
─────────────────────────────────
┌─────────────┐
│GitHub Server│
└──────┬──────┘
│
↓ делает запрос к GitHub API
┌──────────────┐
│ GitHub.com │
│ API │
└──────────────┘
"Created issue #123"
Шаг 5: Ответ возвращается обратно
──────────────────────────────────
GitHub API → GitHub Server → GitHub Client → Host → Пользователь
Результат:
┌──────────┐
│ Claude │ "✅ Issue #123 создан: Fix login bug"
│ Code │ "Ссылка: github.com/repo/issues/123"
└──────────┘
═══════════════════════════════════════════════════════
```
---
### 💡 Аналогия: Ресторан
Представь MCP как ресторан:
```
┌─────────────────────────────────────────────┐
│ РЕСТОРАН │
│ │
│ 👤 Клиент (ты) = Пользователь │
│ ↓ │
│ 👔 Официант = HOST │
│ ↓ │
│ 📋 Заказ = MCP CLIENT │
│ ↓ │
│ 👨🍳 Повар = MCP SERVER │
│ ↓ │
│ 🍽️ Блюдо = Данные/Результат │
└─────────────────────────────────────────────┘
Как это работает:
1. ТЫ говоришь официанту: "Хочу пасту"
(Пользователь → Host)
2. ОФИЦИАНТ записывает заказ и передаёт на кухню
(Host → Client)
3. ЗАКАЗ попадает к нужному повару
(Client → Server)
4. ПОВАР готовит блюдо
(Server выполняет операцию)
5. Блюдо возвращается через официанта к тебе
(Server → Client → Host → Пользователь)
```
From libdwarf-code CODINGSTYLE.md as of 01 October 2024.
Tu es un ingénieur ML spécialisé en quantization de LLM et optimisation GPU.
trigger: model_decision