Архитектура MCP: клиенты, серверы, инструменты, ресурсы и промпты
Понимание того, как Model Context Protocol работает изнутри, помогает создавать лучшие интеграции и устранять неполадки. Это руководство объясняет основные архитектурные концепции MCP.
Обзор архитектуры MCP
MCP построен по клиент-серверной архитектуре, где ИИ-ассистенты (клиенты) подключаются к сервисам (серверам), предоставляющим инструменты и данные. Вот как это работает:
Схема архитектуры (текстовое описание)
┌─────────────────┐
│ ИИ-ассистент │
│ (клиент MCP) │
│ │
│ - Claude │
│ - Cursor │
│ - Windsurf │
└────────┬────────┘
│
│ Соединение HTTP/SSE
│ (с заголовком Auth)
│
▼
┌─────────────────┐
│ Сервер MCP 1 │ ┌─────────────────┐
│ (Workify) │ │ Сервер MCP 2 │
│ │ │ (другой сервис)│
│ Инструменты: │ │ │
│ - list_tasks │ │ Инструменты: │
│ - create_task │ │ - read_file │
│ - start_timer │ │ - search_code │
└─────────────────┘ └─────────────────┘
│ │
└─────────┬───────────┘
│
┌─────────▼─────────┐
│ Источники данных │
│ (БД Workify, │
│ файловая система)│
└───────────────────┘Один клиент MCP может подключаться к нескольким серверам MCP одновременно, давая ИИ-ассистенту доступ к инструментам разных сервисов в одном разговоре.
Клиент MCP: ИИ-ассистент
Клиент MCP — это приложение ИИ-ассистента, с которым взаимодействуют пользователи. Оно отвечает за:
- Управление соединениями: установление и поддержание соединений с серверами MCP
- Обнаружение инструментов: запрос и кэширование доступных инструментов с каждого сервера
- Маршрутизацию запросов: определение, к какому серверу обращаться для каждого инструмента
- Обработку ответов: обработку результатов инструментов и представление их пользователям
- Управление ошибками: корректную обработку сбоев соединения, таймаутов и ошибок
Пример: Claude Desktop как клиент MCP
Когда вы спрашиваете Claude Desktop «Какие задачи нужно выполнить на этой неделе?», клиент:
- Определяет, что для этого требуется вызов инструмента с сервера MCP Workify
- Отправляет запрос на
https://app.workify.ru/mcpс вашим API-ключом - Вызывает инструмент
list_tasksс подходящими фильтрами - Получает список задач и форматирует его для вас
Сервер MCP: поставщик сервиса
Сервер MCP предоставляет клиентам инструменты, ресурсы и промпты. Сервер MCP Workify предоставляет возможности управления проектами:
Обязанности сервера
- Аутентификация запросов (API-ключи)
- Авторизация операций (ограничение по команде)
- Выполнение вызовов инструментов
- Возврат структурированных ответов
- Корректная обработка ошибок
Возможности сервера
- Предоставление схем инструментов
- Предоставление метаданных ресурсов
- Предложение шаблонов промптов
- Поддержка потоковых ответов
- Логирование операций для аудита
Обнаружение инструментов: как клиенты находят инструменты
Когда клиент MCP подключается к серверу, он сначала обнаруживает доступные инструменты через эндпоинт tools/list:
Процесс обнаружения
- Клиент подключается к серверу с аутентификацией
- Клиент запрашивает
tools/list, чтобы получить доступные инструменты - Сервер отвечает схемами инструментов (имя, описание, параметры)
- Клиент кэширует информацию об инструментах на время сессии
- Клиент теперь может вызывать инструменты по имени при необходимости
Каждый инструмент имеет схему, которая описывает:
- Имя: уникальный идентификатор (например,
list_tasks) - Описание: что делает инструмент
- Параметры: обязательные и опциональные входные данные
- Возвращает: ожидаемый формат вывода
Как проходят вызовы инструментов
Когда вы просите ИИ-ассистента выполнить действие, вот что происходит за кулисами:
Пример потока вызова инструмента
1. Пользователь: «Создай задачу связаться с Acme Corp»
2. ИИ-ассистент (клиент):
- Анализирует запрос
- Определяет, что нужен инструмент create_task
- Определяет, что инструмент с сервера MCP Workify
- Извлекает параметры: title, description и т. д.
3. Запрос клиент → сервер:
POST https://app.workify.ru/mcp
Headers: Authorization: Bearer API_KEY
Body: {
"tool": "create_task",
"arguments": {
"title": "Follow up with Acme Corp",
"description": "...",
"due_date": "..."
}
}
4. Обработка на сервере:
- Проверяет API-ключ
- Проверяет права доступа
- Создаёт задачу в базе данных
- Возвращает объект задачи
5. Ответ сервер → клиент:
{
"task": {
"id": 123,
"title": "Follow up with Acme Corp",
"status": "open",
...
}
}
6. ИИ-ассистент (клиент):
- Получает ответ
- Форматирует для пользователя
- Подтверждает создание задачи
7. Пользователь видит: «Я создал задачу #123: связаться с Acme Corp»Инструменты MCP Workify в действии
Вот как инструменты MCP Workify соотносятся с типичными действиями по управлению проектами:
Создание задачи
Запрос пользователя: «Создай задачу проверить отчёт за 4-й квартал»
Вызванный инструмент: create_task
Параметры:
- title: «Проверить отчёт за 4-й квартал»
- description: (сгенерировано из контекста)
- project_id: (выведено или указано)
Результат: новая задача создана, возвращены ID и полные детали
Добавление комментария
Запрос пользователя: «Добавь к задаче #123 комментарий, что я завершил изменения API»
Вызванный инструмент: add_task_comment
Параметры:
- task_id: 123
- comment: «Изменения API завершены. Готово к проверке.»
Результат: комментарий добавлен к задаче с меткой времени
Запуск учёта времени
Запрос пользователя: «Начни отсчёт времени по моей текущей задаче»
Вызванный инструмент: start_time_tracking
Параметры:
- task_id: (определено из контекста или активной задачи пользователя)
Результат: учёт времени запущен, таймер идёт
Несколько серверов, один разговор
Одна из мощных возможностей MCP — способность подключаться к нескольким серверам одновременно. Ваш ИИ-ассистент может использовать инструменты разных сервисов в одном разговоре:
Пример: рабочий процесс с несколькими серверами
Пользователь: «Создай задачу проверить документацию API, затем поищи в нашей кодовой базе похожие паттерны»
ИИ-ассистент:
- Вызывает
create_taskс сервера MCP Workify - Вызывает
search_codeс сервера MCP кодовой базы - Объединяет результаты и представляет единый ответ
Транспортный уровень: HTTP vs STDIO
MCP поддерживает два транспортных механизма:
Удалённые серверы (HTTP/SSE)
Workify использует этот подход:
- Сервер работает как веб-сервис
- Клиент подключается через HTTP/HTTPS
- Поддерживает Server-Sent Events (SSE) для потоковой передачи
- Многопользовательское централизованное развёртывание
- Лучше для SaaS-приложений
Локальные серверы (STDIO)
Альтернативный подход:
- Сервер работает как локальный процесс
- Клиент взаимодействует через стандартный ввод/вывод
- Однопользовательское локальное развёртывание
- Лучше для персональных инструментов
- Сеть не требуется
Узнайте больше о компромиссах в нашем руководстве по удалённым и локальным серверам MCP.
Обработка ошибок и отказоустойчивость
MCP включает встроенную обработку ошибок:
- Ошибки соединения: клиенты повторяют попытки с экспоненциальной задержкой
- Сбои аутентификации: понятные сообщения об ошибках подсказывают пользователям, как исправить API-ключи
- Ошибки валидации: серверы возвращают подробные сообщения об ошибках для неверных параметров
- Ограничение частоты: серверы могут сигнализировать о лимитах, клиенты снижают нагрузку соответственно
- Обработка таймаутов: длительные операции можно отменить или опрашивать
Готовы строить с MCP?
Подключите своего ИИ-ассистента к Workify и начните автоматизировать рабочие процессы
Банковская карта не требуется