Перейти к основному содержимому
ИнженерияMar 28, 2026

Как MCP стал USB-C для AI-интеграций — технический глубокий разбор

OS
Open Soft Team

Engineering Team

Проблема N x M интеграций

До появления Model Context Protocol подключение AI-моделей к внешним инструментам было упражнением в комбинаторном взрыве. Каждому AI-приложению (Claude, GPT, Gemini, Copilot) требовалась отдельная интеграция для каждого инструмента (Slack, Jira, GitHub, базы данных, API). При M AI-приложениях и N инструментах индустрии требовалось M x N кастомных адаптеров — каждый со своим потоком аутентификации, форматом данных, обработкой ошибок и затратами на поддержку.

Оцените масштаб: к 2025 году существовало около 20 крупных AI-платформ и сотни корпоративных инструментов. Математика была неустойчивой. Каждая новая AI-платформа должна была пересоздавать интеграции с нуля. Каждый новый инструмент должен был писать адаптеры для каждой AI-платформы. Это была та же проблема, с которой столкнулась индустрия оборудования до USB: каждое устройство имело проприетарный разъём, и каждому компьютеру нужны были разные порты.

MCP решает эту проблему так же, как USB-C решил проблему разъёмов: стандартизирует интерфейс. С MCP каждое AI-приложение реализует один MCP-клиент, а каждый инструмент реализует один MCP-сервер. Проблема M x N становится M + N. Один протокол, универсальная совместимость.

Архитектура протокола: JSON-RPC, возможности и три примитива

MCP построен на JSON-RPC 2.0 — том же легковесном RPC-протоколе, который используется в Language Server Protocol (LSP), обеспечивающем работу каждого современного редактора кода. Это был осознанный выбор: JSON-RPC прост, хорошо изучен, языконезависим и проверен в бою.

Фундамент JSON-RPC

Каждое MCP-сообщение — это JSON-RPC объект:

// Запрос
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "query_database",
    "arguments": {
      "sql": "SELECT * FROM users LIMIT 10"
    }
  }
}

// Ответ
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "[{\"id\": 1, \"name\": \"Alice\"}, ...]"
      }
    ]
  }
}

// Уведомление (без id, ответ не ожидается)
{
  "jsonrpc": "2.0",
  "method": "notifications/tools/list_changed"
}

Три типа сообщений: запросы (ожидают ответа), ответы (отвечают на запрос) и уведомления (fire-and-forget). Это точно соответствует коммуникационным паттернам MCP.

Согласование возможностей

Хендшейк initialize — место, где клиент и сервер договариваются о поддерживаемых функциях:

// Клиент -> Сервер
{
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-03-26",
    "capabilities": {
      "roots": { "listChanged": true },
      "sampling": {}
    },
    "clientInfo": {
      "name": "claude-desktop",
      "version": "1.5.0"
    }
  }
}

// Сервер -> Клиент
{
  "result": {
    "protocolVersion": "2025-03-26",
    "capabilities": {
      "tools": { "listChanged": true },
      "resources": { "subscribe": true },
      "prompts": { "listChanged": true },
      "logging": {}
    },
    "serverInfo": {
      "name": "enterprise-db",
      "version": "2.1.0"
    }
  }
}

Это грейсфул-деградация по замыслу. Простому серверу, предлагающему только инструменты, не нужно реализовывать ресурсы или промпты. Клиент, не поддерживающий семплирование, просто опускает эту возможность. Обе стороны адаптируются.

Три примитива

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

1. Инструменты (Tools) — функции, управляемые моделью

Инструменты — наиболее используемый примитив. Они представляют действия, которые AI-модель может вызвать. Модель решает когда и как их вызывать на основе запроса пользователя.

{
  "name": "create_github_issue",
  "description": "Создать новый issue в GitHub-репозитории",
  "inputSchema": {
    "type": "object",
    "properties": {
      "repo": { "type": "string", "description": "формат owner/repo" },
      "title": { "type": "string" },
      "body": { "type": "string" },
      "labels": { "type": "array", "items": { "type": "string" } }
    },
    "required": ["repo", "title"]
  }
}

2. Ресурсы (Resources) — данные, управляемые приложением

Ресурсы предоставляют данные, которые хост-приложение (не модель) решает включить в контекст. Идентифицируются URI и возвращают контент в различных MIME-типах.

{
  "uri": "github://repos/anthropic/mcp/issues?state=open",
  "name": "Открытые MCP Issues",
  "description": "Текущие открытые issues в репозитории MCP",
  "mimeType": "application/json"
}

3. Промпты (Prompts) — шаблоны, управляемые пользователем

Промпты — переиспользуемые шаблоны, которые пользователь может выбрать. Они предоставляют доменно-специфичные воркфлоу, комбинирующие инструкции с динамическими данными.

{
  "name": "code_review",
  "description": "Ревью пулл-реквеста на баги, стиль и безопасность",
  "arguments": [
    {
      "name": "pr_url",
      "description": "URL пулл-реквеста на GitHub",
      "required": true
    }
  ]
}

Дизайн с тремя примитивами покрывает весь спектр AI-инструментального взаимодействия. Инструменты обрабатывают действия, ресурсы обрабатывают данные, промпты обрабатывают воркфлоу.

Сравнение с альтернативами

MCP не появился в вакууме. Несколько существующих подходов к подключению AI к инструментам существовали до MCP. Понимание различий объясняет, почему MCP победил.

MCP vs Function Calling

Function calling (используемый OpenAI, Anthropic, Google) определяет инструменты инлайново в каждом API-запросе. Определения инструментов отправляются как часть промпта, и модель отвечает вызовом функции, который код приложения должен выполнить.

АспектFunction CallingMCP
Определение инструментовПокаждый запрос, в промптеПостоянное, от сервера
ОбнаружениеСтатическое, определено разработчикомДинамическое, серверы объявляют инструменты
ВыполнениеКод приложения обрабатываетMCP-сервер обрабатывает
ПереиспользуемостьКопирование между проектамиОдин сервер обслуживает все клиенты
Стейтфул-сессииНетДа
Стандартный протоколНет (вендор-специфичный)Да (открытая спецификация)
Мультимодельная поддержкаПривязка к вендоруУниверсальная

Function calling подходит для простых, специфичных для приложения инструментов. MCP лучше, когда нужны переиспользуемые, обнаруживаемые, независимо развёртываемые серверы инструментов.

MCP vs OpenAPI / REST API

OpenAPI определяет HTTP API. AI-приложения могут вызывать REST-эндпоинты напрямую, часто используя спецификации OpenAPI для определения инструментов.

АспектOpenAPI / RESTMCP
ПротоколHTTP (запрос/ответ)JSON-RPC (двунаправленный)
СтримингОграниченный (SSE, WebSocket)Нативный (уведомления, прогресс)
AI-специфичные функцииНетРесурсы, промпты, семплирование
Согласование возможностейНетВстроено
Управление сессиямиСтатлесс по умолчаниюСтейтфул-сессии
Качество описаний инструментовВарьируетсяСтандартизировано для AI

REST API не были разработаны для AI-взаимодействия. MCP предоставляет AI-специфичные абстракции (ресурсы, промпты, семплирование), которых REST лишён. Однако MCP-серверы часто оборачивают REST API — они добавляют AI-дружественный протокольный слой поверх существующих HTTP-сервисов.

MCP vs LangChain / LlamaIndex Tools

Фреймворк-специфичные абстракции инструментов (LangChain Tools, LlamaIndex Tools) определяют инструменты внутри конкретного AI-фреймворка.

АспектФреймворк-инструментыMCP
Зависимость от фреймворкаПривязка к одному фреймворкуФреймворк-агностичный
Зависимость от языкаPython (преимущественно)Любой язык
РазвёртываниеВ процессеОтдельный процесс/сервис
Совместное использованиеИмпорт библиотечного кодаПодключение к работающему серверу
Управление версиямиВерсии пакетовВерсионирование серверов
Граница безопасностиТот же процессИзоляция процесса/сети

Фреймворк-инструменты удобны для прототипирования внутри одного фреймворка. MCP лучше для продакшен-развёртываний, где инструменты нужно разделять между командами, фреймворками и AI-платформами.

Хронология внедрения: от эксперимента Anthropic до отраслевого стандарта

Путь MCP от эксперимента одной компании до отраслевого стандарта прошёл быстрее, чем кто-либо ожидал.

2024: Запуск

  • Ноябрь 2024: Anthropic публикует спецификацию MCP как открытый протокол. Начальные SDK для TypeScript и Python.
  • Декабрь 2024: Claude Desktop выпущен с поддержкой MCP. Разработчики создают первые MCP-серверы для файловых систем, баз данных и веб-поиска.

2025: Рост экосистемы

  • Q1 2025: Cursor, Windsurf и другие AI-редакторы кода внедряют MCP. Экосистема инструментов разработчика взрывается.
  • Q2 2025: OpenAI объявляет о поддержке MCP в их Agents SDK. Google DeepMind интегрирует MCP в Gemini tools.
  • Q3 2025: Microsoft добавляет поддержку MCP в Copilot Studio. Транспорт Streamable HTTP добавлен в спецификацию.
  • Q4 2025: Корпоративное внедрение ускоряется. Salesforce, ServiceNow и Atlassian выпускают официальные MCP-серверы для своих платформ.

2026: Отраслевой стандарт

  • Q1 2026: Gartner называет MCP «ключевой технологией» для AI-агентов. MCP Registry (публичный каталог MCP-серверов) запускается с 2000+ серверами.
  • Март 2026: Linux Foundation объявляет о размещении управления MCP. SDK для Java, Kotlin, C# и Swift достигают версии 1.0.
  • Прогноз: к концу 2026 года 40% корпоративных приложений будут включать возможности AI-агентов, и MCP будет доминирующим протоколом интеграции инструментов.

Архитектурные решения, обеспечившие внедрение

Несколько конкретных проектных решений сделали MCP успешным там, где предыдущие стандарты провалились:

1. Транспортная агностичность

Отделив протокол от транспорта, MCP работает везде. Одна и та же серверная логика работает через stdio (локально), SSE (веб) или Streamable HTTP (продакшен). Разработчики выбирают транспорт, подходящий их развёртыванию, а не тот, который диктует протокол.

2. Прогрессивная сложность

Минимальный MCP-сервер требует всего 20 строк кода. Ресурсы, промпты, аутентификацию и мультитенантную поддержку можно добавлять инкрементально. Протокол не нагружает сложностью с самого начала.

3. Наследие LSP

Построение на JSON-RPC 2.0 — том же фундаменте, что и Language Server Protocol — дало MCP мгновенный кредит доверия среди команд разработчиков инструментов. Они уже понимали коммуникационную модель.

4. Двунаправленная коммуникация

В отличие от REST (только инициируемого клиентом), MCP поддерживает уведомления сервер-клиент. Это обеспечивает обновления в реальном времени, отчёты о прогрессе и объявления об изменении возможностей без поллинга.

5. Безопасность по замыслу

MCP включает интеграцию OAuth 2.0, скоупинг возможностей и подтверждение человеком для чувствительных операций. Корпоративные команды безопасности могут одобрить внедрение MCP без обширных кастомных ревью.

Будущее: межагентная коммуникация и корпоративные MCP-шлюзы

Межагентная коммуникация через MCP

Следующий рубеж для MCP — межагентная коммуникация. Сегодня MCP подключает AI-модели к инструментам. Завтра MCP-серверы сами будут AI-агентами, создавая цепочки AI-powered сервисов.

Рассмотрим пайплайн разработки ПО:

Агент проект-менеджера (MCP-клиент)
  -> Агент архитектуры (MCP-сервер + клиент)
    -> Агент генерации кода (MCP-сервер + клиент)
      -> Агент код-ревью (MCP-сервер + клиент)
        -> Агент развёртывания (MCP-сервер)

Каждый агент одновременно является MCP-сервером (предоставляет свои возможности) и MCP-клиентом (потребляет возможности других агентов). Протокол обрабатывает обнаружение возможностей, аутентификацию и маршрутизацию сообщений на каждом хопе.

Корпоративные MCP-шлюзы

Крупные организации будут развёртывать MCP-шлюзы — централизованную инфраструктуру управления всем MCP-трафиком:

  • Обнаружение: реестр всех внутренних MCP-серверов и их возможностей.
  • Аутентификация: единая SSO-интеграция, чтобы каждому MCP-серверу не нужен был свой поток аутентификации.
  • Авторизация: гранулярные RBAC-политики: какие пользователи/агенты могут обращаться к каким инструментам.
  • Ограничение частоты: глобальные и поpользовательские лимиты для предотвращения перегрузки бэкенд-систем зацикленными AI-агентами.
  • Аудит: полный аудит-трейл каждого вызова инструмента для комплаенса.
  • Версионирование: blue-green развёртывание MCP-серверов с автоматической маршрутизацией клиентов.

Стандартизирующие органы

Участие Linux Foundation сигнализирует о долгосрочной стабильности. Ожидаются формальные RFC-подобные документы спецификаций, наборы тестов на совместимость и программы сертификации реализаций MCP к 2027 году.

FAQ

В: MCP — это замена REST API? О: Нет. MCP — это слой поверх существующих систем. Большинство MCP-серверов внутри вызывают REST API. MCP добавляет AI-специфичные возможности (обнаружение инструментов, ресурсы, промпты, двунаправленная коммуникация), которые REST не предоставляет нативно.

В: Почему JSON-RPC, а не gRPC или GraphQL? О: JSON-RPC — простейший двунаправленный RPC-протокол. Не требует кодогенерации (в отличие от gRPC), интроспекции схемы (в отличие от GraphQL) и работает с любым языком, способным парсить JSON. Простота обеспечила внедрение.

В: Может ли MCP работать офлайн? О: Да. С транспортом stdio MCP работает полностью локально без сетевого доступа. AI-модель и MCP-сервер работают на одной машине, общаясь через пайпы процессов.

В: Как MCP обрабатывает конфликты версий? О: Хендшейк initialize включает согласование версий протокола. Если клиент и сервер поддерживают разные версии, они согласовывают наивысшую взаимно поддерживаемую версию. Для изменений на уровне инструментов серверы отправляют notifications/tools/list_changed для информирования клиентов.

В: Что происходит при падении MCP-сервера в середине сессии? О: Клиент обнаруживает потерю соединения и может попытаться переподключиться. С транспортом Streamable HTTP состояние сессии хранится внешне (Redis, база данных), поэтому новый экземпляр сервера может возобновить сессию. С stdio хост-приложение обычно перезапускает серверный процесс.

В: Есть ли ограничение на размер MCP-сообщений? О: Сам протокол не определяет ограничений. Практические лимиты зависят от транспорта и инфраструктуры. Для продакшен-развёртываний держите ответы менее 10 МБ и используйте пагинацию или стриминг для больших наборов данных.

Теги