Что такое MCP? (Model Context Protocol) - Введение

Model Context Protocol (MCP) — это открытый протокол, обеспечивающий бесшовную интеграцию между приложениями LLM и внешними источниками данных и инструментами. Он был анонсирован компанией Anthropic 25 ноября 2024 года.

Аналогия с USB

MCP можно рассматривать как «USB-стандарт» для систем искусственного интеллекта. Подобно тому, как USB создал универсальный интерфейс, позволяющий любому USB-устройству подключаться к любому USB-порту — устраняя необходимость в устройство-специфичных коннекторах — MCP создает стандартизированный способ для приложений ИИ подключаться к различным источникам данных и инструментам.

До появления USB каждое устройство требовало своего собственного проприетарного коннектора. Аналогично, до появления MCP разработчикам приходилось создавать пользовательские интеграции для каждой комбинации приложения ИИ и источника данных. MCP устанавливает общий протокол «plug and play», который позволяет любому MCP-совместимому клиенту работать с любым MCP-совместимым сервером, значительно снижая сложность интеграции и время разработки.

Как работает MCP

Архитектура

MCP следует клиент-серверной архитектуре и имеет пять основных компонентов:

Диаграмма архитектуры MCP, показывающая пять основных компонентов: MCP-хосты, MCP-клиенты, MCP-серверы, локальные источники данных и удаленные сервисы
  • MCP-хосты: Инструменты ИИ (чат-клиенты, IDE, агенты), которые хотят получить доступ к данным через MCP.
  • MCP-клиенты: Клиенты протокола, поддерживающие соединения 1:1 с серверами.
  • MCP-серверы: Программы, которые предоставляют определенные возможности через стандартизированный протокол контекста модели.
  • Локальные источники данных: Локальные базы данных, файлы и сервисы, содержащие информацию.
  • Удаленные сервисы: Внешние API или сервисы, к которым могут подключаться MCP-серверы.

Давайте продемонстрируем это на примере классического сценария использования ИИ — преобразования текста в SQL. Text-to-SQL переводит естественный язык в SQL. До появления MCP типичная реализация выглядела так:

Диаграмма традиционного рабочего процесса реализации Text-to-SQL, показывающая четыре шага: получение схемы, создание промпта, генерация SQL и выполнение
  1. SQL-клиент получает схему из целевых баз данных
  2. SQL-клиент отправляет LLM промпт, содержащий схему
  3. LLM отвечает с SQL
  4. SQL-клиент выполняет SQL против целевой базы данных

Без MCP каждый SQL-клиент должен реализовывать это для каждой поддерживаемой базы данных. С MCP SQL-клиенту нужно только реализовать протокол клиента MCP, а каждому поставщику базы данных нужно только один раз реализовать MCP-сервер.

Диаграмма интеграции базы данных на основе MCP, показывающая, как SQL-клиенты подключаются к различным движкам баз данных через слой протокола MCP

По сути, это превращает проблему M×N в решение M+N за счет абстрагирования с помощью еще одного уровня косвенности — MCP.

Основные примитивы

MCP построен вокруг трех фундаментальных примитивов, предоставляемых MCP-сервером:

  • Resources: Объекты данных, на которые можно ссылаться и которые можно извлекать. Это включает документы, изображения, схемы баз данных и другие структурированные данные.
  • Prompts: Шаблоны для генерации эффективного взаимодействия с языковой моделью, оптимизированные для конкретных задач или доменов.
  • Tools: Функции, которые могут быть выполнены языковой моделью для выполнения таких действий, как запрос к базе данных, вызов API или обработка данных.

Для сопоставления с примером Text-to-SQL:

Диаграмма Text-to-SQL с MCP, показывающая, как примитивы MCP (ресурсы, промпты и инструменты) реализуются в контексте базы данных
Примитив MCPПример Text-to-SQL
ResourcesИнформация о схеме, извлеченная из базы данных
PromptsПромпты, специфичные для домена баз данных, которые помогают модели генерировать правильный SQL
ToolsВыполнение SQL-команд против базы данных

Ключевые преимущества

MCP предлагает несколько значительных преимуществ для разработки систем ИИ:

  • Сокращение времени разработки: Разработчики могут использовать предварительно созданные MCP-серверы для распространенных задач вместо создания пользовательских интеграций для каждого источника данных или инструмента.
  • Улучшенная интероперабельность: Приложения, построенные с использованием MCP, могут бесшовно работать с любыми совместимыми инструментами и источниками данных — создавая по-настоящему компонуемую экосистему.
  • Модуляризация: Сквозные проблемы, такие как отладка, авторизация, аудит и цепочки, могут быть стандартизированы и реализованы один раз, а затем повторно использованы во всей экосистеме.

Технические предшественники

MCP основывается на успехе предыдущих стандартов, которые решали аналогичные проблемы в других областях:

  • SQL: Создал стандартизированный способ взаимодействия с базами данных, позволяя приложениям работать с любой SQL-совместимой базой данных.
  • Docker: Стандартизировал упаковку и развертывание приложений, делая приложения переносимыми между различными средами.
  • LSP (Language Server Protocol): Сходство названий не случайно — LSP стандартизировал взаимодействие редакторов кода с серверами различных языков программирования для таких функций, как автодополнение кода, подсветка синтаксиса, проверка ошибок.

Все эти стандарты решали проблемы M×N, вводя слой абстракции, который отделял клиентов от реализаций, значительно снижая сложность интеграции.

Открытость

Знаменитый комикс xkcd 927 напоминает нам о проблеме создания еще одного стандарта:

Комикс XKCD #927: Стандарты - Иллюстрирующий, как конкурирующие стандарты распространяются вместо объединения

Однако MCP показывает многообещающие признаки реальной открытости.

Хотя MCP был изобретен Anthropic, они разместили его под отдельной организацией (github.com/modelcontextprotocol), что свидетельствует об их стремлении сделать его открытым стандартом, а не проприетарным решением.

На момент написания (13 марта 2025 года) в рабочей группе насчитывается пять членов:

Члены рабочей группы Model Context Protocol, показывающие пять участников с их ролями и принадлежностью

Помимо Александра Сысоева из JetBrains, остальные четверо работают на Anthropic. Этот баланс понятен, поскольку проект все еще находится на начальных этапах, и наличие основной команды из одной организации может помочь обеспечить ясное направление во время начальной разработки.

Взгляд в будущее

MCP все еще находится на начальных этапах. Создание успешного протокола похоже на построение рынка — вам нужны как поставщики, так и потребители, чтобы достичь критической массы.

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

С технической точки зрения, MCP больше всего похож на LSP, который достиг большого успеха в области кодирования. В долгосрочной перспективе MCP может стать таким же важным, как SQL, превратившись в лингва франка в эпоху нативного ИИ.

Примечание: Если вы разработчик MCP-сервера, вы также можете прочитать мои заметки по разработке.

Ссылки