September 2

MCP

Новые версии моделей появляются едва ли не каждый день, новые инструменты постоянно кто-то разрабатывает и обновляет. Особенно с обновлениями боль: как авторы что-то перепишут, так всё сразу ломается. У меня регулярно по этому поводу страдания: написала код, отладила, протестировала – всё хорошо. Ушла в отпуск на две недели, возвращаюсь – ничего не работает, потому что обновился фреймворк, и теперь надо раскапывать в документации, что же они такого добавили. Или убрали. В общем, опять двадцать пять.

И тут выходит Anthropic наш любимый, и говорит: «Возрадуйтесь, товарищи, мы сделали для вас MCP!» Ну не прям так говорит, но смысл примерно такой.

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

Это протокол – Model Context Protocol, – то есть, набор правил, по которым информация передается между моделью и внешним миром: базами данных, поисковиками и любыми инструментами вообще.

Раньше как было: вы хотите использовать модель с какой-нибудь своей базой данных, например, по продажам вашего товара. Берете модель, берете базу и стыкуете их между собой так, чтобы данные, которые передает модель, были в формате, который принимает база, и наоборот. Если вы пользовались фреймворком вроде LangGraph или CrewAI, эту задачу решал за вас фреймворк, вам надо было только подключить нужный инструмент.

Фреймворк – это, грубо говоря, набор инструментов, которые снимают с вас часть нагрузки по разработке приложения. Пример для поиска в Интернете: без фреймворка вы пишете запрос в браузер и функцию, которая извлекает нужные данные и преобразует их в человекочитаемый формат. С фреймворком вы выбираете инструмент «поиск в Интернете» и делаете запрос к нему, а он решает вопросики с браузером и форматом. Удобно.

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

Или там вы договорились с компанией-партнером, и она вам персонально дает доступ к своим инструментам, которых ни в каких фреймворках нет. И тут на помощь приходит MCP.

Если вы любите путешествовать, у вас наверняка есть хотя бы один переходник для розеток: в него вставляется наша привычная вилка с двумя зубцами, а сам переходник вставляется в розетку той формы, которая используется в стране пребывания.

Картинку стянула из поста про китайские электроприборы

MCP играет рошль как раз такого переходника, только он еще может принимать любой вход и выход вне зависимости от формы розеток и вилок. Точнее, сам MCP ничего не принимает, потому что это просто набор правил: какие данные какого типа как должны быть переданы и обработаны, в какой связи и последовательности. Работу по преобразованию данных осуществляет MCP-сервер.

Обычно под сервером мы понимаем компьютер, который хранит, обрабатывает и передает данные. В случае с MCP сервер – это специальная программа. Ее можно открыть и прочитать, можно и написать самостоятельно. У каждого сервера есть клиент – дополнительный небольшой процесс, который переводит входящий запрос на язык MCP.

То есть, работа происходит так:

  1. Пользователь пишет запрос к модели (например: «Найди в Интернете картинку с котиками»).
  2. Модель получает запрос и вызывает инструмент «Поиск в Интернете». Передает запрос ему.
  3. MCP-клиент, используя правила протокола, приводит данные к нужному формату и передает в MCP-сервер.
  4. MCP-сервер этот запрос понимает, обрабатывает и возвращает результат, полученный после применения инструмента.
  5. MCP-клиент снова переводит данные так, чтобы их могла обработать модель.
  6. Модель выдает вам картинку с котиками.

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

Я через такие серверы объединила несколько своих любимых инструментов для работы с кодом и промптами и сижу теперь радуюсь.

А в этом году Google выпустил A2A-протокол для взаимодействия ИИ-агентов. Как раз активно разбираюсь с одним из инструментов, который его использует, так что расскажу про него тоже потом как-нибудь.