Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Введение в MCP
intro

Введение в MCP

Что такое Model Context Protocol, зачем он нужен и какие проблемы решает. Основные концепции и терминология.

Введение в MCP (Model Context Protocol)

MCP — это USB для ИИ-агентов. Как USB стандартизировал подключение устройств к компьютеру, MCP стандартизирует подключение ИИ к данным и функциям.


#1. Почему появился MCP?

#Проблема: хаос интеграций

Представьте, что вы разработчик и хотите дать вашей LLM (например, Claude) доступ к:

  • Файлам на диске
  • Базе данных PostgreSQL
  • Внутреннему API компании
  • Календарю Google
  • Системе тикетов Jira

Без MCP вы бы делали так:

# Для каждой LLM — свой способ интеграции class ClaudeIntegration: def connect_to_db(self): ... def read_files(self): ... def call_api(self): ... class GPTIntegration: def connect_to_db(self): ... # Другой API! def read_files(self): ... # Другие методы! def call_api(self): ... # Другой формат!

Проблемы:

  • 🔴 Дублирование кода: каждая интеграция пишется с нуля
  • 🔴 Хрупкость: изменения в API LLM ломают интеграцию
  • 🔴 Безопасность: нет стандарта для контроля доступа
  • 🔴 Масштабирование: 10 LLM × 5 систем = 50 интеграций!

#Решение: MCP

MCP вводит стандартизированный слой между LLM и вашими системами:

┌─────────────────────────────────────────────────────────┐
│                    LLM (Claude, GPT)                    │
└────────────────────────┬────────────────────────────────┘
                         │ MCP Protocol (единый стандарт)
┌────────────────────────▼────────────────────────────────┐
│                   MCP Server (ваш код)                  │
│  ┌─────────────┬─────────────┬─────────────────────┐   │
│  │  Resources  │    Tools    │      Prompts        │   │
│  │  (данные)   │  (функции)  │   (шаблоны)         │   │
│  └─────────────┴─────────────┴─────────────────────┘   │
└────────────────────────┬────────────────────────────────┘
                         │
        ┌────────────────┼────────────────┐
        ▼                ▼                ▼
   ┌────────┐      ┌──────────┐     ┌─────────┐
   │  Files │      │ Database │     │   API   │
   └────────┘      └──────────┘     └─────────┘

Преимущества:

  • 🟢 Одна реализация: пишете MCP сервер один раз — работает с любой LLM
  • 🟢 Стандартизация: единый протокол для всех интеграций
  • 🟢 Безопасность: встроенные механизмы контроля доступа
  • 🟢 Экосистема: готовые библиотеки, инструменты, документация

#2. Что такое MCP?

Model Context Protocol (MCP) — это открытый протокол, который позволяет ИИ-моделям безопасно взаимодействовать с внешними системами через стандартизированный интерфейс.

#Три кита MCP

MCP предоставляет три типа взаимодействия:

ТипНазначениеПример
ResourcesДоступ к данным (чтение)Прочитать файл, получить запись из БД
ToolsВыполнение действий (запись/вычисления)Отправить email, создать тикет, выполнить запрос
PromptsШаблоны взаимодействия"Проверь код", "Напиши тест", "Сделай ревью"

#Resources (Ресурсы)

Ресурсы — это данные, к которым LLM может получить доступ.

# Пример: ресурс — файл в файловой системе URI: file:///home/user/docs/report.md MIME Type: text/markdown Content: "# Отчёт\n\nСодержимое файла..."

Ключевые концепции:

  • Каждый ресурс имеет URI (уникальный адрес)
  • Ресурс имеет MIME-тип (описывает формат данных)
  • Ресурсы могут быть динамическими (шаблоны URI)

#Tools (Инструменты)

Инструменты — это функции, которые LLM может вызвать.

# Пример: инструмент для поиска в базе знаний { "name": "search_knowledge_base", "description": "Поиск статей по ключевым словам", "inputSchema": { "type": "object", "properties": { "query": {"type": "string", "description": "Поисковый запрос"}, "limit": {"type": "integer", "description": "Максимум результатов", "default": 5} }, "required": ["query"] } }

Ключевые концепции:

  • Инструмент описывается через JSON Schema
  • LLM видит описание и решает, когда вызывать инструмент
  • Вызов инструмента возвращает результат обратно в LLM

#Prompts (Промпты)

Промпты — это предопределённые шаблоны для взаимодействия с LLM.

# Пример: промпт для код-ревью { "name": "code_review", "description": "Запросить проверку кода", "arguments": { "code": {"type": "string", "description": "Код для проверки"}, "language": {"type": "string", "description": "Язык программирования"} } }

Ключевые концепции:

  • Промпты стандартизируют частые сценарии использования
  • Могут иметь аргументы для динамической генерации
  • Упрощают жизнь пользователю (не нужно помнить сложные инструкции)

#3. Архитектура MCP: главные компоненты

#Компоненты системы

┌──────────────────────────────────────────────────────────────┐
│                         MCP Host                             │
│  (приложение с LLM: Claude Desktop, IDE, кастомное приложение)│
│  ┌────────────────────────────────────────────────────────┐  │
│  │                   MCP Client                           │  │
│  │  (устанавливает соединение, отправляет запросы)        │  │
│  └────────────────────────────────────────────────────────┘  │
└──────────────────────────┬───────────────────────────────────┘
                           │ MCP Protocol
                           │ (stdio / SSE / WebSocket)
┌──────────────────────────▼───────────────────────────────────┐
│                        MCP Server                            │
│  (ваш сервер с бизнес-логикой)                               │
│  ┌──────────────┬──────────────┬─────────────────────────┐  │
│  │  Resources   │    Tools     │       Prompts           │  │
│  │  Provider    │   Provider   │      Provider           │  │
│  └──────────────┴──────────────┴─────────────────────────┘  │
└──────────────────────────────────────────────────────────────┘

#MCP Host

Host — это приложение, которое:

  • Запускает LLM (или подключается к ней)
  • Управляет MCP Client
  • Обрабатывает запросы от LLM к MCP серверам

Примеры Host:

  • Claude Desktop (официальное приложение Anthropic)
  • IDE с ИИ-плагинами (Cursor, Windsurf)
  • Кастомные приложения на mcp-python

#MCP Client

Client — компонент внутри Host, который:

  • Устанавливает соединение с MCP Server
  • Отправляет запросы по протоколу MCP
  • Получает ответы и передаёт их Host

#MCP Server

Server — ваш код, который:

  • Предоставляет Resources, Tools, Prompts
  • Обрабатывает запросы от Client
  • Возвращает результаты в стандартном формате

#4. Транспортные протоколы

MCP поддерживает несколько транспортов для разных сценариев:

#stdio (стандартные потоки)

Как работает: MCP сервер запускается как процесс, общение через stdin/stdout.

# Запуск сервера python mcp_server.py # Сообщения передаются через stdin/stdout в формате JSON-RPC

Когда использовать:

  • ✅ Локальная разработка
  • ✅ Desktop-приложения (Claude Desktop)
  • ✅ Простые сценарии без сети

Преимущества:

  • Простота настройки
  • Нет сетевых задержек
  • Безопасно (нет сетевого интерфейса)

Недостатки:

  • Только локальное подключение
  • Нужно управлять процессом сервера

#SSE (Server-Sent Events)

Как работает: HTTP-соединение, сервер отправляет события клиенту.

# FastAPI + SSE @app.get("/sse") async def sse_endpoint(): async def event_generator(): yield f"data: {message}\n\n" return StreamingResponse(event_generator(), media_type="text/event-stream")

Когда использовать:

  • ✅ Удалённые MCP серверы
  • ✅ Продакшен в облаке
  • ✅ Один клиент (или редкие клиенты)

Преимущества:

  • Работает через HTTP/HTTPS
  • Поддержка брандмауэрами
  • Простая реализация

Недостатки:

  • Однонаправленная связь (сервер → клиент)
  • Для запросов нужен отдельный HTTP endpoint

#WebSocket

Как работает: Двустороннее постоянное соединение.

# WebSocket сервер @websocket("/ws") async def websocket_endpoint(websocket: WebSocket): await websocket.accept() while True: data = await websocket.receive_text() response = await process(data) await websocket.send_text(response)

Когда использовать:

  • ✅ Realtime-взаимодействие
  • ✅ Множество клиентов
  • ✅ Низкие задержки

Преимущества:

  • Двусторонняя связь
  • Низкие задержки
  • Масштабируемость

Недостатки:

  • Сложнее в настройке
  • Требует WebSocket-сервер

#5. Экосистема MCP

#Официальные ресурсы

РесурсОписание
spec.modelcontextprotocol.ioСпецификация протокола
github.com/modelcontextprotocolОфициальный репозиторий
glama.ai/mcp/serversКаталог MCP серверов

#Библиотеки Python

БиблиотекаНазначение
mcpОфициальный SDK для создания MCP серверов
mcp-pythonКлиентская библиотека для подключения к серверам
fastapi-mcpИнтеграция MCP с FastAPI

#Готовые MCP серверы

Сообщество уже создало серверы для:

  • 📁 Файловой системы
  • 🗄️ PostgreSQL, MySQL, MongoDB
  • 🔍 Поиска (Google, Bing, Elasticsearch)
  • 📧 Email (Gmail, Outlook)
  • 📅 Календарей (Google Calendar)
  • 🎫 Тикет-систем (Jira, Linear)
  • 💬 Мессенджеров (Slack, Discord)
  • ☁️ Облаков (AWS, GCP, Azure)

#6. Безопасность в MCP

MCP проектировался с учётом безопасности:

#Принципы безопасности

  1. Явное разрешение: пользователь должен явно разрешить подключение к серверу
  2. Контроль доступа: сервер может требовать аутентификацию и авторизацию
  3. Валидация входных данных: все параметры инструментов валидируются через JSON Schema
  4. Изоляция: сервер работает в отдельном процессе/контейнере
  5. Логирование: все действия логируются для аудита

#Пример: защита от SQL-инъекций

# ❌ ПЛОХО: уязвимость SQL-инъекции async def search_users(query: str): cursor.execute(f"SELECT * FROM users WHERE name = '{query}'") return cursor.fetchall() # ✅ ХОРОШО: параметризированный запрос async def search_users(query: str): cursor.execute("SELECT * FROM users WHERE name = %s", (query,)) return cursor.fetchall()

#Пример: контроль доступа

# ✅ Проверка прав перед выполнением инструмента async def delete_user(user_id: int, current_user: User): if not current_user.has_permission("users.delete"): raise PermissionError("Недостаточно прав для удаления пользователей") await db.users.delete(user_id)

#7. Use Cases: где применять MCP?

#Сценарий 1: ИИ-ассистент для внутренней базы знаний

Проблема: Сотрудники тратят часы на поиск документации.

Решение: MCP сервер с доступом к Confluence/Notion.

Инструменты:
- search_docs(query, limit) — поиск статей
- get_doc(id) — получение статьи по ID
- suggest_related(query) — похожие статьи

Результат: Сотрудник спрашивает у Claude: 
"Как оформить отпуск?" → Claude ищет в базе → даёт точный ответ.

#Сценарий 2: Автоматизация поддержки

Проблема: Поддержка отвечает на одинаковые вопросы.

Решение: MCP сервер с доступом к тикетам и базе знаний.

Инструменты:
- get_ticket(id) — информация о тикете
- search_solutions(query) — поиск решений
- create_response(template, data) — генерация ответа

Результат: ИИ предлагает готовые ответы операторам.

#Сценарий 3: DevOps-ассистент

Проблема: Разработчики тратят время на рутинные DevOps-задачи.

Решение: MCP сервер с доступом к Kubernetes, логам, метрикам.

Инструменты:
- get_pod_status(namespace) — статус подов
- get_logs(pod_name, lines) — логи пода
- restart_deployment(name) — перезапуск деплоймента

Результат: Разработчик просит Claude: 
"Почему упал сервис?" → Claude проверяет логи → находит ошибку.

#Сценарий 4: Аналитик данных

Проблема: Менеджеры просят аналитиков делать простые выборки.

Решение: MCP сервер с безопасным доступом к PostgreSQL.

Инструменты:
- run_query(query) — выполнение SELECT-запросов (только чтение!)
- get_table_schema(table) — структура таблицы
- export_to_csv(query) — экспорт результатов

Результат: Менеджер спрашивает: 
"Покажи продажи за последний квартал" → Claude формирует запрос → показывает данные.

#8. Что дальше?

Вы узнали основы MCP. В следующих темах курса вы:

  1. Изучите архитектуру детально — как устроены сообщения, сессии, жизненный цикл
  2. Настроите окружение — установите Python SDK, подготовите инструменты
  3. Создадите первый сервер — Hello World с нуля
  4. Освоите все три API — Resources, Tools, Prompts
  5. Научитесь деплоить — Docker, Kubernetes, мониторинг

#Ключевые выводы

КонцепцияСуть
MCPСтандарт взаимодействия LLM с внешними системами
ResourcesДоступ к данным (чтение)
ToolsВыполнение действий (функции)
PromptsШаблоны взаимодействия
HostПриложение с LLM (Claude Desktop, IDE)
ServerВаш код, предоставляющий данные/функции
Транспортыstdio (локально), SSE/WebSocket (сеть)

Следующая тема: Архитектура MCP — детальное устройство протокола, форматы сообщений, жизненный цикл сессии.

Далее: Архитектура MCP