📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Воркшоп: "MCP в n8n. Превращаем любой workflow в MCP"

Codex Town Club58:00

Transcription

Ну что, всем привет. А снова пятница, снова Кодекн. Сегодня у нас снова практический воркшоп, который, я надеюсь, займёт не больше получаса ценного предвыходного времени и будет полезен для всех, кто пользуется N8N, но там по каким-то причинам, возможно, не успевает следить за всеми нововведениями, которые в последнее время стали прямо очень и очень частыми.

Последний апдейт вышел буквально 2 дня назад и принёс с собой часть весьма полезного функционала для всех, кто имеет дело с агентами. И в целом NEN продолжает развиваться уже не столько как инструмент для автоматизации, а скорее как полноценное средство для создания агентов. И вот, собственно, существенная часть функционала, которая в некоторых последних обновлениях добавлялась, она буквально этому и посвящена. И, собственно, о ней мы сегодня и поговорим.

И хотя наша тема звучит как MCP в N8N, поговорим мы не только об этом, но и о паре других фишек, которые, вот, как я сказал, добавились буквально 2 дня назад и которые, весьма сильно меняют, а, процесс создания, ну, не меняют, а оптимизируют процесс подготовки агентов, который как раз превращает NВСмен в полноценную и невероятно мощную платформу.

Собственно, во-первых, мы поговорим, собственно, о нашей сегодняшней теме. А что такое MCP? Как он работает. Коротко пройдёмся. Я прекрасно понимаю, что тема уже не новая. В интернете есть огромное количество видео, которые можно на эту тему посмотреть, поэтому мы будем на более конкретные вещи давить. Поговорим, как любой Workflow превратить в MCP-сервер, как MN вообще может работать как энд для MCP-серверов, которые можно использовать изнутри, там курсоры, изнутри clotд desktop и тому подобное. А посмотрим, как MCP можно использовать для расширения возможностей и агентов.

А, и дальше чуть-чуть поговорим про вот эту самую, а, волшебную, на мой взгляд, штуку, потому что давно, давным-давно, на протяжении, наверное, последних месяцев восьми ходили разговоры, а с тех самых пор, как мы начали, э, трогать N8N, возникали вопросы: "А нельзя ли автоматизировать процесс создания этих workкflow?" И даже несмотря на то, что в интернете появлялось довольно много сервисов, даже платных, которые заявляли о том, что типа всё, мы теперь с помощью чат GPT сможем, а, генерировать в автоматическом режиме этих эти рабочие пространства, но до недавнего времени никому это так полноценно и не удавалось. До недавнего времени. Как раз сегодня разберём один из, а, продуктов бесплатных, открытых, selfhosted, которые позволяют весь этот процесс автоматизировать.

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

И начнём с того, что для тех, кто, например, смотрит нас впервые, напомним, что такое, собственно, MCP. а-а, MCP или Model Context Protocol. Это, ну, собственно, протокол взаимодействия, э, между агентами и внешними сервисами, разработанный для, как сейчас модно говорить, LLM First среды. А разработан он был компанией Antropic, а, то есть изначально как бы разработан под продукты, а, Clot и тому подобное. А, и в принципе MCP - это вот, ну, протокол, который определяет, как агенты могут обращаться друг к другу и к вот этим всем внешним сервисам через стандартизированный интерфейс. По сути, прямым текстом говорят: "Дай мне такой-то инструмент, выполни такую-то функцию, верни мне такой-то результат".

По сути, MCP - это такая своеобразная обёртка для API, практически любого сервиса, который даёт возможность, а, и агентам с этим сервисом взаимодействовать. Если раньше нужно было для подключения практически любого внешнего, э, продукта придумывать какую-то собственную связку, как это апи завернуть, подкрутить и прикрутить, собственно, к ЛМагенту, теперь этого ничего делать не нужно. Теперь а есть унифицированный протокол. И самое главное, есть огромное количество готовых наработок в интернете, которые можно взять, спокойно использовать, и ваши агенты, а, будут из коробки взаимодействовать с практически любыми сервисами.

Количество доступных MCP-серверов увеличивается буквально день от дня. Есть отдельные подборки, э, типа Awesome, MCP и тому подобное. Ссылочки на них будут в описании под видео. Э, где можно понравившийся вам сервис просто найти и совершенно спокойно использовать. И ещё, что важно, MCP - это, несмотря на то, что он был разработан корпорацией Anтроopic - это универсальные истории. И в принципе сегодня огромное количество продуктов на рынке поддерживают этот протокол и позволяют использовать эти серверы, например, в первую очередь, естественно, из программы Cloud Desktop, но также практически из любого можно установить свой любимый курсор, добавить туда, например, MCP по управлению там Гитхабом или Google диском или тикетами в Джире и так далее. и в автоматическом режиме просто задавать, а, своему агенту те или иные вопросы и инициировать практически любые действия.

А при этом, что важно, самим сервером может являться практически что угодно. Это может быть там, например, отдельный агент, это может быть какая-то простая функция, которая вызывает какое-то одно действие, либо это может быть огромная комплексная история, которая выполняет огромное количество функций. А нам это всё совершенно неважно, потому что даже общаться с ним будет тот агент, которого мы сделаем. Вот.

А, ну что такое MCP, надеюсь, рассказывать не нужно, но если опять же кто-то вдруг смотрит нас впервые с этого видео, N8N - это открытая selfhosted платформа для автоматизации практически чего угодно, а, в том числе при помощи еагентов. Именно агенты стали основным фокусом внимания для этой платформы за последнее время. А если хотите разобраться поглубже, как её установить себе локально, развернуть на собственном сервере, у нас тоже есть подробный гайд, четыре разных гайда. Ссылочки тоже будут в описании под видео. Там отвечаются на все остальные основные вопросы.

Ну и вот, собственно, с версией 193 уже там чуть больше месяца назад в NEN появились нативные ноды для взаимодействия с MCP. А в первую очередь это MCP сервер Trigger. по сути точка входа для любых агентов, которые теперь могут а взаимодействовать на уровне MCP с любым workflow внутри NVEN. Ну и вторая история - это MCP Client, тоже специальная нода, которая позволяет уже агентам изнутри NMН обращаться к практически произвольным, а, MCP-серверам. И теперь благодаря этим двум нодам практически любой ваш workflow можно взять и превратить в полноценный MCP-сервер, который можно, ну, например, развернуть на своём хостинге и обращаться к нему из там локального а-а курсора. И, естественно, писать для этого не придётся ни одной строчки кода.

Давайте сразу попробуем небольшую демку. А, представим, что у нас есть какой-нибудь готовый workflow. Ну вот, например, простейшая история. Неоднократно мы её писали. а, обычный агент, который, а, взаимодействует с календарём. Ничего сложного здесь нету. Ээ, обычный агент, у которого, э, по сути даже не задан системный пром. Стандартный Helpful Assistant, стандартная передача даты. И дальше четыре инструмента: создать, удалить, найти или обновить, >> а, события. А, опять же, абсолютно всё автоматизировано, ничего мы здесь не делаем. Более того, с недавних пор появился автоматический инструмент заполнения в N8N. Указываем, что все параметры, которые для этой ноды должны быть указаны, указываются с помощью непосредственно самого, а, самой модельки. А-а, ну, и, собственно, всё. И теперь, если мы спросим этого агента, типа, какое у меня расписание на выходные, ну, и то увидим, как он, собственно, один из этих инструментов дёрнет, найдёт и нужные события, и дальше просто преобразует и покажет мне, а что у меня на эти выходные написано. А стандартная история, удобная, но совершенно не масштабируемая, потому что, чтобы нам дальше взаимодействовать уже с этим агентом на более высоком уровне, нужно будет вызывать само это рабочее пространство. А что далеко не всегда бывает удобно, потому что, ну, как бы рабочее пространство мы можем вызвать либо только изнутри N семен, либо нам придётся добавлять а весь этот огород с вебхуми и тому подобное.

Давайте всё это стандартизируем, тем более, что теперь мы можем это сделать очень и очень просто. Во-первых, вместо этого агента мы можем взять и создать просто теперь MCP сервер. Для этого нам и понадобится та самая нода MCP Server Trigger. Это, собственно, триггерная нода. Она -э нужна нам для того, чтобы повесить на неё набор инструментов и дальше вызывать её из любого совместимого продукта. Не только N8, но и, как я говорил раньше, Clopп, курсор или любой другой поддерживающий этот интерфейс-продукт. А внутри всё достаточно просто. Мы сразу с порога получаем набор ссылок для вызова этого самого сервера. Если кто-то уже работал с MCP, вы прекрасно себе представляете. MCP - это, собственно, URL в первую очередь, которому нужно, а, кидать эти наши обращения. И здесь MC NM даёт нам возможность сразу из коробки его получить.

Дальше самые базовые настройки. А это, собственно, имя нашего э сервера. Здесь уже заранее предустановлено. Можем поставить туда что-то более, а удобочитаемое. Ну, пусть будет мой календарь. А, и возможность аутентификации. Так как это всё потенциально будет хоститься на открытом вебе, пускать туда, а кого бы то ни стало, нам не имеет смысла. И здесь у нас есть возможность задать, а специальный токен для ээ секунду. специальный токен для авторизации, который дальше мы можем, а, указать в самих настройках. А про настройки поговорим чуть позже. Пока что посмотрим, как это именно внутри самого NEN работает. В принципе, это всё. А теперь всё, что нам нужно сделать - это отсоединить наши инструменты от существующего агента и подсоединить их, а, к нашему MCP-серверу. В принципе, этого будет уже достаточно для того, чтобы сам сервак работал.

Теперь, если мы, э, сейчас давайте их соединим. а сохраним и сделаем наш workflow активным, то вот этот самый prodction URL, который мы здесь видим, будет полноценно работать как ээ сервер, как наш собственный MCP-сервер. И, например, мы можем а теперь взять и внутри любого из приложений в стандартном интерфейсе, опять же, практически все вот подобные приложения, они используют стандартный интерфейс подключения через, а, SSI, то есть север events, ээ, по сути, давая возможность внутри чего угодно нам его подключить. Если мы зайдём в настройки, например, курсора, это будет ровно такой же конфигурационный файл. Если мы зайдём в настройки, там, например, Cloud Desktop, это будет вот, собственно, такой же самый файлик, где мы указываем наши серверы. И здесь мы можем просто указать аа в подобном синтаксисе. То есть, что нам здесь нужно? Нам нужен URL, э, production URL нашего сервера. Берём его, вставляем. А, и в принципе этого уже достаточно, но так как я сказал, для продакшн истории необходимо ограничить доступ для, а, скажем так, несанкционированных пользователей, и у нас есть возможность как бы указать авторизацию. Авторизация указывается очень просто. Э здесь мы выбираем а один из форматов представления этого токена. А мы выберем Authentification. А и дальше нам нужно будет просто сам этот токен указать. Токен указывается неконкретно для каждого workflлоу. Используется стандартная схема аутентификации NVO CEN, то есть через стандартные credentials. Заходим аэ в меню выбора, нажимаем создать новый credentials. И всё, что нам здесь нужно ввести- это, собственно, сам этот токен. Токен, причём, мы придумываем сами. Это может быть любая, например, последовательность чисел. Ну, например, вот поставим сюда 1 2 3 4 5 6 7 8 9. А после чего сохраняем, закрываем, указываем этот credential в строке выбора и дальше указываем его в настройках нашего MCP-сервера. Всё. Дальше мы сохраняем этот файл, и наш MCP-сервер готов, доступен в интернете и может быть использован для чего угодно.

А, собственно, давайте попробуем его и использовать. Но, естественно, попробуем мы его сейчас не с внешней историей, а внутри того же N8N, потому что теперь мы как бы можем аэ с помощью всех этих моделей, с помощью превращения традиционных workкфлоow в MCP-серверы, мы можем забыть про всю эту огромную чихорду с А когда для того, чтобы создать систему из нескольких агентов, нам приходилось ломать себе голову, создавать кучу параллельных workкфлоу. каждый из которых использовал копии всё одних и тех же инструментов. Ну, в общем, те, кто сталкивались с этим, я думаю, вы понимаете, о какой головной боли я говорю. И теперь, если мы создаём мультиагентную систему, ну, например, если у нас есть агент-исследователь, агент-редактор, агент дизайнер, и каждому из них нужны свои собственные уникальные инструменты, мы можем очень легко с помощью MCP с ними всеми взаимодействовать, потому что теперь нам не нужно, а, дублировать все эти инструменты. Теперь нам достаточно в отдельном workкфлоу создать отдельный MCP-сервер со своим триггером, а в самом агенте, с которым мы взаимодействуем, достаточно добавить, а, собственно, новый тул, который тоже стал доступен, который так и называется, а, MCP client Tool, а, и который, а, собственно, даёт нам возможность теперь подключаться к любым произвольным, а, MCP серверам.

Аа при этом, да, что важно, э-э если опять же вы помните, MCP используют два формата подключения STDIO и SSE. Аа NM пока из коробки использует SSE. Есть ворунды, которые позволяют подключать вообще практически любые серверы. Там есть специальный, а, проксирвис, мы его сейчас разбирать не будем, но, например, аа, у наших коллег на канале Продуктовый совет было хорошее видео, где как раз они объясняли, каким образом можно любой MCP-сервер под подключить к NN. Аа, по сути, там нужно просто запустить небольшой локальный скрипт, который, собственно, их и транслирует. Но нам это, по сути, сейчас особо не важно, потому что у нас тема всё-таки про подключение и трансформацию именно NVO CM Workflow. И здесь нам сервер сайта. Собственно, те данные, которые нам здесь нужны - это Сейчас момент, проверим только секунду. 1 2 3 4 5 6 7 8 90 будет нашим токеном. Аа и всё, что нам здесь нужно сделать - это добавить к любому агенту новый инструмент под названием MCP Client. И всё, что нам здесь нужно будет сделать - это, по сути, провести всё те же операции только в обратном порядке. указать URL, который нам сервер наш выдал, указать аутентификацию, если она нам нужна. И здесь мы сразу же можем подцепить аэ ту, которую мы задали раньше. И дальше мы можем выбрать а либо мы будем использовать все инструменты, которые есть в сервере по умолчанию, либо какие-то определённые. А здесь сейчас у нас ничего не сработает, потому что мы, собственно, не указали сам URL. Вернёмся к нашему MCP-серверу. скопируем а URL, который нам нужен. И ещё раз обратим внимание, что здесь у нас типа MCпишка, у которой есть четыре инструмента: create, delete, search и update event. А если всё сработает правильно, именно их мы и увидим э в настройках. Указываем наш адрес. Аэ, и дальше, чтобы проверить, что у нас всё корректно сработало, ну, как раз попробуем выбрать, а, инструменты, которые у нас, а, сервер предлагает использовать. И если всё сработало, здесь мы увидим как раз списочек из тех четырёх инструментов, которые у нас и были. А, собственно, как мы видим, всё работает. А зачем это нужно? Потому что многие серверы упаковывают огромное количество различных действий. И не факт, что нашему конкретному агенту сразу ко всем. А всё-таки не будем забывать, что вся эта история на более низком уровне работает всё на том же расширении контекста к самому агенту. И по сути в тот момент, когда агент у нас взаимодействует с MCP-сервером, он просто в контекст ему загружается, а, список всех этих возможных инструментов. Соответственно, чем больше инструментов мы передаём агенту, тем больше мы захломляем а окно контекста. И лучше так, естественно, не делать. Лучше всё-таки ограничивать э именно те инструменты, которые нам здесь необходимы. Но в данном случае мы можем особо по этому поводу не париться, указать все. И в принципе на этом всё. А теперь у нас появился агент, которому можем взять и попробовать задать тот же самый вопрос: "А что у меня на выходных?" Но теперь он должен, по сути, указать нам тот же самый ответ. Но, как мы увидим, он это сделает чуть-чуть иначе. Он это уже сделает не внутри одного workflow, он воспользуется MCP-сервером, кинет запрос ему через, а, https, вот, собственно, этот самый SSE а сервер, и дальше получит через него ответ. Ну и, как мы видим, у нас всё прекрасно работает. А если мы теперь зайдём в Executions, то, э-э, мы увидим, что наша, а, workflow отработал именно так, как и надо. А основной агент кинул запрос в MCP-сервер, а сам MCP-сервер уже отработал всю эту историю через запрос ивентов и вернул её обратно. А при этом ещё раз заострю внимание, здесь мы специально как бы сделали эту историю в таком формате, что как бы всё в одном месте. Но по факту этих MCP-серверов может быть сколько угодно. Они могут быть у нас запущены в качестве абсолютно автономных workкфлоу, а-а, висеть в любой момент времени на фоне. И мы можем совершенно спокойно с ними работать. Повторюсь, не только из Workкflow в NM, а откуда угодно.

Ну и самое главное, не будем забывать, что сюда мы можем подключить всё, что угодно. То есть мы здесь можем использовать как весь а функционал NV Cмен, доступный на текущий момент, то есть автоматизации любых практически сервисов. Но и в том числе мы можем использовать произвольную логику, которую мы сделали раньше. Мы можем взять и подключить сюда практически любой workflow, который у нас уже существует. А причём, более того, если этот workflow подразумевает введение каких-то внешних данных, то они будут прямо здесь и указаны. Мы можем выполнять произвольный код, мы можем кидать запросы на любые внешние сайты через httpпрос. Да что там? Мы можем взять и просто подключить к нашему MCP-серверу такой же MCP-клиент. И мы можем таким образом собирать целые связки из различных MCP-серверов, объединяя и комбинируя уже существующие инструменты, создавая так называемые метаинструменты для наших агентов, которые будут, ну, содержать в себе практически любой функционал. Аа вот, собственно, надеюсь, а такая штука показалась вам достаточно интересной, и теперь вы можете по-другому взглянуть на а те workкфлоу, которые у вас уже созданы в NVEN, а либо, может быть, это наведёт вас на мысли о каких-то новых автоматизациях того, что можно сделать и до чего в какой-то момент не доходили руки.

Аа это, собственно, была первая часть про MCP внутри НВО семе. Но на самом деле, как бы я хотел рассказать о немножко другой истории, о, скажем так, небольшой магии. А вполне вероятно, после этого вам вообще не придётся думать о том, как реализовывать как раз-таки нужную задачу внутри N CN, потому что, о чудо, сегодня появился MCP-сервер, который позволяет напрямую взаимодействовать с N8N и создавать через него работающие workflow, в том числе создавать через него новые MCP-сервера. Ну и, как я говорил ранее, вообще задача про автоматизацию очень старая, но, повторюсь, ни одного работающего продукта до сих пор не было. И вот буквально несколько дней назад, как бы запустив руки вот в эту новую историю, а которая теперь стала доступно, я как который раз воскликнул: "Ода!" Потому что это правда было похоже на магию. Аа появился продукт, который так и называется N8N MCP. Аэ, открытый, доступный, э-э, по лицензии MIT распространяемый, а-а, который работает как отдельный MCP сервак, то есть то же самое. Он подключается куда угодно, он подключается к нативному клоду, работает изнутри курсоры и тому подобное и позволяет буквально за пару запросов на натуральном языке взять и создать практически произвольное а workкфлоу в NEN, который, самое удивительное будет работать.

А причём, ну, давайте чуть-чуть про установку. На самом деле, именно это мы сейчас и попробуем сделать. Ставится он очень просто. А есть два способа. А ну, во-первых, сам сайт доступен по адресу nvm mcp.com. Аа доступен, доступна установка двумя способами. А первый, самый простой способ - это, а, запуск через консоль. Заходим в консоль, вводим команду NPX N8N MCP и всё. Собственно, он у нас загружает все актуальные данные. А и работает единственная с оговоркой только в том случае, если у вас есть установленный Note JS. Аа и, собственно, после этого становится доступен внутри всех приложений. А сейчас мы на это тоже посмотрим. А, и второй вариант - это через установку отдельного докерконтейнера. А про это есть раздел в документации. Нужно просто запустить одну команду в докере. И его имеет смысл использовать, если у вас по каким-то причинам есть установленный докер, но нет установленного nots. А сложностей опять же никаких. То есть мы буквально запускаем однуединственную команду и после этого а сервер у нас начинает крутиться. М при этом после запуска скрипт сам автоматически качает все необходимые зависимости. А потом всё, что нам останется сделать - это открыть, а, ну, во-первых, открыть свой NВО CN, а, и зайти здесь в настройки, сейчас момент, зайти в настройки самого NVEN и открыть раздел NVEN API. Так как этот сервер должен непосредственно подключаться к нашему инстансу N8N, нам понадобится API ключ. Нажмём создать ключ, укажем нужные нам параметры. А, получим этот ключ, скопируем его. И сейчас я его создавать не буду, потому что я уже прописал. И всё, что нам останется сделать - это, например, открыть клод, а, зайти в настройки, зайти в локальные MCP-серверы, и там у нас как раз-таки и будет вот тот самый файлик с настройками. Файлик выглядит примерно вот таким образом. Всё, что нам туда нужно будет добавить - это вот этот самый новый раздел с новым MCP-сервером Nem MCP. И дальше всё, что нужно будет сюда вставить собственное - это ссылку на домен вашего развёрнутого MCP, либо если это локальная установка, то на адрес, как как он доступен на локальном сервере, и API ключ а вашего, а, пардон и API ключ N8N, который мы только что отсюда, а, получили. А после этого сохраняем файлик, запускаем клод и всё. Мы получаем полноценного ассистента внутри любого нашего приложения, которого мы можем вызывать, а, сейчас, которого мы можем, а, вызывать изнутри и которого мы можем просить создавать наши workflow.

При этом, естественно, наверное, многие из вас пробовали этот процесс делать, например, через Chatт GPT. Многие из вас, наверное, даже указывали ему ссылочку на документацию НВО Семен, которая вроде как должна была делать его чуть более мощным, но я думаю, вы прекрасно понимаете, что ничего хорошего из этого, как правило, не выходило. Любой сложный workкфлоу, который просишь сделать, он так или иначе не работает. А-а здесь же ситуация немножко другая. Здесь очень классно разработчики подошли к созданию программного продукта. И он не просто генерирует код, это отдельный агент. который по шагам, во-первых, а, кидает поиск по, ну, типа, раскладывает ваш запрос на список нот, анализирует документацию по каждой из этой но анализирует общую документацию и, а, разбивает задачу на логические элементы и подбирает конкретные ноды под каждую каждый логический элемент вашей задачи. Дальше делает себе отдельный как бы документацию с параметрами и зависимостями этих нот. Потом он пытается собрать workкфлоу из этих нот. И дальше, самое главное, он пытается настроить каждую ноду по отдельности и после этого валидирует её до тех пор, пока она у него конкретно по отдельности не заработает. После того, как эти ноды окажутся завалидированными, он валидирует весь workflow целиком. И только после этого он напрямую взаимодействует с вашим инстансом N8N и, собственно, отправляется туда и создаёт этот workflow прямо внутри него. То есть даже не нужно там импортировать, экспортировать jйсонки. Всё работает прямо из коробки.

При этом это ещё не всё. А этот агент умеет, во-первых, разбирать ошибки исполнения, а сам смотреть влоги, вытаскивать ошибки из этих лог и вносить правки в эти самые workflow. То есть, если вам нужно добавить новый функционал или исправить какую-то ошибку, он не будет ничего городить заново. Он исправит то, что уже есть, и внесёт все необходимые исправления. снова их завалидирует через вот этот огромный а пайплайн валидации и отдаст вам результат только в том случае, если он будет работать, как э-э было изначально заложено. А-а, ну да, и, наверное, последнее, что здесь нужно подчеркнуть, то, что ещё раз, эта вся история работает как MCP-сервер. То есть, возвращаясь к тому, что мы, а, создавали внутри N8N, это всё может работать между собой. То есть мы можем создать внутри N8N агента, который будет дёргать MCP-сервер для генерации workflow внутри NEN, которые будут автоматически валидироваться. А и дальше мы можем создавать вот такие бесконечно вложенные истории, когда агенты создают новые workflлоow просто под конкретную задачу, если эта задача возникает. То есть сейчас мы, по сути, стали на один шаг ближе к полноценному агентному, а, к агентным корпорациям, которые могут существовать просто внутри N. А, и можно, например, уже создавать мультиагентные какие-то истории, где там у нас один генератор workflлоow, точнее, один агент - это, э, сборщик ээ исходных данных, второй - это генератор workflow, третий - это тестировщик, а четвёртый - это оркестратор между всеми этими тремя агентами. А причём, если раньше, опять же, для того, чтобы заняться отладкой ошибок внутри workкфлоу, нам приходилось выдирать код, копировать этот код ээ в а того же самого клода и дальше там типа вайп-кодить до посинения, пока что у

нас ничего не произойдёт. Теперь мы можем просто там, не знаю, скопировать адрес этой ошибки, сказать не работает. И дальше агент не будет ни с чем разбираться, он автоматически посмотрит влоги нашего N8N и всё. А, найдёт нужные исправления и будет работать над ними, пока это всё не заработает.

Собственно, давайте попробуем это всё сделать. А потому что выглядит это всё как раз-таки близко к магии. У меня есть уже установленный этот агент в NV Семен. Причём, более того, я подготовился. Там ещё у самого агента есть специальный промт. Он доступен на сайте, который очень чётко как бы моделирует его поведение, так чтобы он чётко по шагам всё делал до тех пор, пока не всё всё не будет работать. Вот давайте просто посмотрим, как он будет работать на практике.

Например, я хочу сделать какую-то максимально простую историю. давно хотел сделать себе агента новостняка, который на кеcker News берёт новости по искусственному интеллекту, прогоняет их, ну, выбирает из них самые интересные и прогоняет их через отдельного агента-редактора, который а-а там переводит их мне на русский язык и там переформулирует в определённом стиле. Ну и, например, отправляет их мне в Telegram. Собственно, давайте попросим его именно это и сделать. И причём можем попросить его сделать это совсем по хардкору. Укажем модель Clot OPUS и скажем ему: "Думай лучше". А, запустим этот агент и посмотрим, что он сделает. А, должно быть довольно интересно.

Сразу решил подцепить русский язык. Довольно любопытно. В тестах такого не было. А, ну вот посмотрим, что он как раз и делает. Он сначала обращается к документации, аа, читает эту документацию на предмет вот тех самых логических шагов, которые у нас есть и которые ему нужно а использовать. То есть он уже разобрался, то, то, что ему нужен hcker News, Open, Telegram. А, и теперь, а, потихоньку он будет через инструменты поиска этих нот, а, искать, что у него есть, а, он успешно нашёл необходимые ему ноды. А-а, выбрать из них то, что лучше всего подходит для задачи. А, возьмёт расписание. Ну, в общем, собственно, как и полноценный разработчик будет всё это делать. А у него довольно большой набор инструментария в первую очередь для взаимодействия непосредственно с документацией и поиском, а, информации по различным нодам. И, э, вторая часть - это по взаимодействию как раз-таки с N8N и запуска разных штук.

Собственно, нет, наверное, мне смысла под руку ему говорить, потому что интереснее как раз наблюдать о том, что здесь происходит. Сейчас, э, unexpected capacity constraints. Ну, ёлки-палки. А-а, ничего, не так страшно. Потому что я успел подготовиться заранее ко всей этой истории. Как раз-таки а магия была связана именно с этим запросом. Именно его я и попробовал сделать. Просто, видимо, нужен, э, клод всё-таки Professional за много денег, потому что, ну, не знаю, ночью у меня это всё сработало прекрасно, и сейчас, а, сделаем проще. А, сделаем проще и посмотрим, а-а, на процесс, который был уже сделан. Собственно, тот же самый запрос, просто чуть-чуть раньше по времени был ему дан. А, и дальше всё происходило следующим образом. Он, э, собственно, весь тот же самый процесс сделал, получил данные, а, нашёл необходимые ноды. И после чего, изучив то, как эти ноды между собой связывать, аэ, он взял и собрал workflow. А вот, то есть у него он генерирует готовый код для этого workflow. а проверяет его и на этапе проверки утыкается в ошибку о том, что у него эти соединения между ними некорректно сделаны, вносит исправление, а, и вот как бы гордится тем, то, что у него всё было сделано. А единственное, на вот первый запуск этого workркфлоу выдал достаточно специфическую ошибку. То есть он просто не подставлял, он выдавал, э, генеген генерацию данных он делал, но сами новости он выдавал не совсем корректно. Вот такой, собственно, workкflow он сделал. Сейчас мы его чуть-чуть по поглубже изучим. Ну, в общем, что здесь более интересно, потому что это было уже исправлено. А когда оказалась ошибка, я ему просто прислал то, что что-то приходит не то, и он сразу же изучил, что типа open не обрабатывает переменные в шаблоне. Сейчас мы это всё исправим. А взял, поменял workflлоу, а проверил и после того, как всё оказалось проверенное, такой типа: "Всё о'кей, сейчас сгенерю тебе документацию". и, собственно, сгенерил полноценную доку для этой штуки, где, собственно, описал, что типа каждые 4 часа проверяется топ-30 новостей на Hacker News. Фильтруются новости только обян инструментах, выбираются три самые популярные, переписывает их через агента с остроумным стилем на русском языке и публикует, а, в Telegram-канал. Ну вот, единственное, я его просил не в Telegram-канал делать, а напрямую мне присылать. Получилось два готовых workкфлоу, один из которых проверяет дубликаты, и второй без проверки дубликатов. Всё, что нужно сделать - это установить Open AP и Botтокен в Телеграме. А дальше подробная документация, собственно, как это всё работает, какие фильтры для новостей он берёт. То есть он не просто кидает запрос про искусственный интеллект, он собирает все, а, популярные новости и потом их фильтрует по огромному количеству ключевых слов. Показывает, э-э, создал сам промт. То есть, ещё раз, я никаких вообще исправлений в готовый Workflow не вносил. Я один раз написал в чатик о том, что там произошла ошибка. После этого он сам внёс исправление. И всё, что мне нужно было сделать после этого - это указать свой собственный Telegram ID мм внутри этого workflow и нажать кнопочку активировать.

Сейчас, собственно, посмотрим, как работает сам а-э да, даже как тестировать а всю эту историю, искать посты с дубликатами, а потенциальные неполадки, ну и так далее и тому подобное. Ещё можно даже было добавить какой-то дополнительный функционал. Но теперь посмотрим на ещё раз полностью в автоматическом режиме созданный Workflow. Он сам откуда-то нашёл адрес для э сбора новостей оттуда, чтобы ему сразу типа топ-новости передавались дальше. Ну, лимитируем его на 30 штук. Генерим, а-э, забираем оттуда данные всех новостей целиком. Давайте, собственно, через него весь-то и пройдём. Вот он, собственно, кидает айдишники новостей, а фильтрует эти новости по частям, генерит оттуда, а, забирает оттуда три основных, а, нет, пардон, а, получает общую информацию об этих новостях. Вот мы можем посмотреть, он их там с полноценным текстом вытащил, а фильтрует их по ключевым словам, которые он сам же создал и написал. То есть всё не я, я указал просто новости про искусственный интеллект. Он сам там типа выбрал подходящие ключевики и по этим ключевикам это всё отфильтровал. Вот у него получилось там пять новостей. Эти новости дальше он мы фильтруем по оценке. Оставляем три основных. Вот у нас сейчас а 30 основных. Ну и дальше отдаём их в агента, чтобы он их переписал. Переписал. У нас три переписанные новости у агента появились. И дальше вот, собственно, единственное, что я здесьделал- это указал чат ID. Изначально здесь стояло айдишник Telegram-группы, куда он должен был бы написать. Нажимаем генерацию и открываем Telegram. Собственно, если, собственно, да, даже всё про, а, пеликало о том, что новости сделаны. А, и таким образом вот буквально за меньше чем 10 минут мы получили полноценного бота, не делая вообще ничего. Мы получили бота, который пишет аэ новости, забирая их из там нужных нам источников данных. И причём, ну, даже довольно неплохо переписывает их. Ну, как бы здесь понятно то, что переписывает искусственный интеллект, но сам факт, как бы чуть сложнее промт, тем, больше будет качество этих самых новостей. И реально как бы с сегодняшней ночи каждые 4 часа он мне кидает эти новости, а, переписанные, переоформленные, готовые в Telegram-канал. А-а, вот такая штука. Причём, опять же повторюсь, он позволяет делать разные вещи. После этого я ещё пару раз его, а, попробовал потестировать, и у меня получилась, например, такая же история. Я хотел сделать это в виде MCP-сервера и попросил его создать мне MCP-сервер, который бы работал как ээ ассипишка, к которой можно было обращаться. И здесь и сорри, здесь он, правда, это сделал не в формате как бы со стандартными нодами. А с помощью собственного кода, где он просто полученные данные в автоматическом режиме структурирует так, чтобы они были похожи на ответ MCP-сервера и отвечает через тот же самый webхуhook. Но опять же самое главное здесь то, что эта штука работает. Она работает прямо из коробки без каких-либо а дополнительных ухищрений. А всё, что требовалось - это просто написать ему задачку. И дальше по результатам этой задачки как бы всё было создано. Ну, как бы, несмотря ни на что, здесь довольно такие, ну, если не суперхайлевеel, но вполне себе как бы мидle уровень создания подобных вещей. Как бы на более сложных задачах он как бы в принципе тоже себя показывает достаточно неплохо. И ещё, что самое главное, эта штука развивается. Эта штука становится лучше всё с каждым новым релизом. И это правда похоже на магию, потому что когда мы вот просим его что-то сделать, он его делает, исправляет, показывает и так далее и тому подобное.

Что здесь ещё, э, любопытно было? Вот как раз один из, а, диалогов, где я просил его что-то делать, у него чуть больше ошибок было. А, но при этом как бы ошибки вот там как раз сервер, каким образом он работает, тот, который мы видели пару минут назад, а, он сам для него создал а отдельный URL и сказал: "Типa хочешь его попробовать, запусти ээ запустил запрос, который тебе что-то выдаст". А вот можем, кстати, сейчас проверить, продолжает ли он работать или нет. Сейчас работает, выдаёт нужные данные и кидает поиск. А причём, да, что любопытно, вот он, когда это делал, у него не получилось, он начал искать ошибку, и дальше он сам ушёл в собственный цикл и там несколько минут пытался это всё переделать, до тех пор, пока не выдал, что теперь всё работает прекрасно. Сам его перепроверил и сказал: "Типa теперь вот всё вот так работает". А, поэтому, да, здесь как раз крутая штука в том, что он содержит просто невероятную степень автоматизации и, в принципе, на каких-то базовых задачах э работает просто прекрасно. Вот. Так что очень рекомендую всем поставить, всем попробовать. Вполне вероятно эта штука действительно поменяет то, как вы с N взаимодействуете, потому что позволяет очень и очень, а, круто весь этот процесс автоматизировать. Вот.

Ну, а мы, э, вернёмся к нашему расписанию. Собственно, я обещал не больше получаса. У нас осталось буквально два элемента, а, достаточно простых, но которые, как я сказал, довольно сильно оптимизируют процесс взаимодействия и создания, и агента внутри NV Cмен. Они не связаны непосредственно с темой MCP, но тоже классные. В первую очередь это AI agent to Tool. Создадим базовый workflow, chat message, а, AI agent. И до недавнего времени, если наш workflow включал в себя какое-то мультиагентное взаимодействие, если нам нужно было как раз-таки оркестрировать между собой нескольких разных агентов, то это было набор из разных workкфлоу. Внутри каждого workкфлоу сидел свой агент, отдельное workкфлоу с агентом-оркестратором, к которому мы эти workкфлоу подключали отдельно. И получалось такая ветвящаяся история, которую нужно было открывать в десятки разных окон, которые было дико неудобно дебажить, аа в которой не было возможности использования глобальных переменных. В общем, это была такая довольно неудобная каша. А, но теперь всё изменилось. Теперь у нас появилась прекрасная вещь под названием AI agent to Tool. который работает следующим образом. А теперь, создавая егентов, мы можем а создавать ветви из этих самых агентов. Теперь у нас появился инструмент, который так и называется, агентуol, который, а, даёт нам возможность каждому агенту подцеплять другого агента в виде инструмента. А причём у дочерних дочерних агентов есть собственные промты, а есть собственная возможность использования э любой модели. Мы можем типа делать агенты с более простыми, э, модельками, делать для каких-то задач более сложные модельки. Они могут использовать отдельную память, отдельные там таблицы в базе данных. И самое главное, у каждого из этих агентов может быть свой собственный набор инструментов, которые теперь, как мы понимаем, може могут себе представлять и разные MCP-серверы. То есть теперь мы можем внутри одного workкфлоу заранее задать огромное количество, а, глобальных переменных, передавать эти переменные между агентами. И самое главное, сверху у нас останется только один агент-ркестратор, который будет управлять всем этим пучком агентов, а, и у которого будет внутри промта просто написано, каким образом он должен управлять, а всё остальное останется на его подчинённых. В общем, это довольно революционная штука, потому что, наконец-то, мы можем создавать полноценные мультиагентные системы. То есть теперь мы можем взять один огромный промт, разделить его на части, э, по сути ограничить зону ответственности каждого агента. Ну и как результат ограничи оптимизировать и стоимость, и время, и ресурсы. И теперь у нас больше не будет десятков различных workкflow внутри, десятков различных окон, всё будет внутри. Аа что нужно помнить, там есть паранических нюансов. А сам контекст выполнения, те переменные, которые внутри конкретно агента появились, они по умолчанию не передаются в погента. Поэтому, а, либо используем workroundound, когда мы встраиваем в начало, а, блок set и указываем здесь какие-то переменные окружения, а, которые нам нужны, и дальше внутри промтофагента адресуем его, аа, сейчас адресуем его напрямую с указанием конкретной ноды. А, то есть там типа Global V у нас будет. И там мы указываем уже, а, непосредственно не через наследование, а через указание на ээ вот эту самую ноду, которая у нас здесь находится. Ээ вот, э, вторая вещь - это поводу экзекюшена. Так как у нас теперь один workflow, то и execution у нас один, а значит, как бы логирование и, соответственно, дебагинг всего этого добра у нас тоже будет централизованный. А, но с другой стороны, тем же проще нам взаимодействовать и, например, кидать эти логи в общего агента. А вот, но по факту теперь станет гораздо проще этих агентов делать.

А, ну и последняя на сегодня вещь. У нас есть агенты, у нас есть инструменты, у нас есть мультиагентная оркестрация. А ещё одна проблема, которая тоже, а, часто встречалась с N7N - это роутинг между моделями. А вопросы бывают разные. Вопросы бывают разные сложности. Совершенно не факт, что если у нас у родительского агента, ну, то есть логично, особенно вот в такой истории, что там, например, агент оркестратор, он использует более сложную модель, аа, но при этом даже верхнеуровневому агенту могут может прилететь какая-нибудь небольшая задача и, соответственно, а её нелогично обрабатывать через более дорогую модель. И, соответственно, ээ возникал вопрос роутинга. И до недавнего времени никакой возможности для этого не было. Но теперь у нас появилась ещё одна нода под названием Mode Selector. А-а, работает она следующим образом. Это, по сути, роутер, который работает точно так же, как и как роутер if, который позволяет в зависимости от наступления тех или иных условий роутить то или иное направление. Только здесь вместо направлений у нас выбирается конкретная модель. Подключим, например, сюда 41 mini. Подключим сюда, например, там Open Router какой-нибудь с четвёркой, ну и тому подобное. То есть, э, и дальше всё, что нам останется сделать - это указать здесь условия. А единственное условия здесь, а, задаются не интеллектуально, это прямо обычный алгоритмический выбор. То есть, если у нас, например, заранее какой-нибудь агент стоит, который, э, уже оценивает нашу задачу и в зависимости от оценки этой задачи вешает ей какой-то флаг. И вот, например, если у нас там есть, например, флаг Task Type, то мы можем сказать, что типа если этот там равен, например, драфт, то у нас, а, выбирается модель один. Если у нас там модель два, то если у нас выбирается там переменная task type равна, например, анализировать. А если там, то есть анализ у нас более сложная модель. Если там наметить какой-нибудь черновик, то используется более простая модель. И вот таким образом мы можем теперь роутить ответы между конкретными моделями. Причём, опять же, это может быть достаточно сложная история. Например, если у нас вдруг аа какая-то модель возвращает ошибку, если у нас, например, в Open AI закончились кредиты, значит, мы таким образом можем автоматически перескочить и использовать модели, например, которые мы тянем из Openроутера, а, ну и так далее. Аа, ещё раз, то есть вся эта история работает как стандартная Noda switch. А, указываем условия, и в зависимости от этого условия уже наш конкретный агент будет использовать ту или иную модель. Причём, опять же, зная всю эту историю, мы можем делать даже вот такие штуки, когда у нас к этому модель селектору подключаются все наши агенты одновременно. А и теперь появляется гораздо более интеллектуальная история, когда разные агенты получают возможность выбора э-э той модели, которая более эффективно решит их конкретную задачу. Вот точно также мы можем, например, переключать модель, если у нас здесь агент, который взаимодействует с пользователем. Мы вытащили у пользователя данные, и если а там это премиум пользователь, мы его можем роутить на более дорогую модель. Если это пользователь там условно бесплатный или там который там ну определённого уровня, то мы его роутим на более дешёвую модель, ну и так далее. Более того, здесь можно делать даже совсем сложные истории, потому что теперь мы, например, можем делать что-то вроде а-тестирования моделей. Мы можем, а, например, у нас есть задача типа самаризация, а, и мы не знаем, какую модель здесь лучше использовать. У нас есть доступ к огромному количеству, но как бы качество этих моделей, а-э, оно достаточно сильно различается. И до текущего момента нам нужно было просто прогонять это workкфлоу, переключая каждые модели друг от друга. А здесь мы можем просто создать, а workflow, в котором, ну, например, мы рандомизируем выбор модели через переменную, а результат этой каждой генерации сохраняется, а дальше мы потом просто эти результаты генерации, ну, например, направляем на сайт, собираем пользовательские метрики и в зависимости от этого постфактом уже понимаем, какая модель нам а лучше или хуже отработала.

А, вот, собственно, это как раз-таки те самые вещи, которые хотелось донести с точки зрения обновления NEN. А, надеюсь, было понятно и было полезно. А, собственно, в записи, в описании будут подробности о каждом инструменте, о котором мы сегодня поговорили. Для участников сообщества будет ещё доступен, а, отдельный текстовый разбор, где подробно будет описано, как все эти истории устанавливать, использовать, а, вместе с тестовыми workflow. А, в общем, подытоживая, я хотел бы, а, наверное, здесь зафиксировать как основную историю это то, что, э, Nos круто и NEN потихоньку становится, на мой взгляд, самым удобным инструментом для создания автономных агентов. А вместе с таким инструментарием, как, например, MCP для NVM, и само создание этих workflow становится всё более и более простой историей. Ну а посоветовать всем я могу только экспериментировать, использовать, а, тем более, что сейчас становится всё проще и проще. А и предлагаю как раз в следующий раз, а, возможно, уже обсудить ваши собственные наработки, что вам удастся через подобные инструменты сделать. Вот на этом у меня всё. Час подходит к концу. Надеюсь, это было полезно. Если есть вопросы, буду рад на них ответить. А если вопросов нету, то всем хороших выходных и увидимся в следующий раз.

А, Денис, правильно я понимаю, что это версии вот 111.1?

>> Аа, сейчас скажу. Э-э, ну это последняя актуальная,

>> ну, вроде бы она актуальная, да. До точно других нет.

>> Ой-ой-ойой-ой. Сейчас момент. Та, которая вышла 23 июля, по-моему, 11102на.

>> А, понятно, понятно. Почему-то у меня ещё не светится, что, ну, есть новое обновление.

>> Аа, да. 113.2.

>> А, а, 103.2. А вот, вот тогда хорошо. Обновось. И ещё такой вопрос. А вот эту ноду, мм, то есть MCPN сервер ээ через docй надо ставить или всё-таки лучше напрямую? Вот как

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

>> А как

>> самый простой вариант

>> локально на на интернет, на виртуальной машине, естественно? Да. Не на компе. Не на своём компе.

>> На компе на своём компе.

>> А это у меня же я на Хёснере работаю.

>> А тогда не будет сложнее. Точно так же можно через СШ запустить. Она работает контейнер. Э, в принципе, там есть понятно.

>> А, ну через доплой не надо, чтобы в одном месте было всё для удобства или как что посоветуешь?

>> А-а, хороший вопрос, на самом деле, потому что, по-моему, там, ну, надо будет руками просто написать docker compose файл для неё, потому что, ну, проще её подключиться к серверу по SSH и просто одной командой этот doкер контейнер в фоне поднять. Здесь для этого доплой всё-таки не нужен. Ну, то есть так как он висит в фоне, её проще использовать просто как фоновую историю, которой можно будет подключаться. Вот. А просто, ну, исполь, ну, а для локальной истории, которая, ну, то есть, ещё раз, клод локальный, MCP сервер локальный, а у меня только NO семен на сервере хостится. И, собственно, вся эта локальная история, она на сервер обращается только в тот момент, когда он уже доделал workflлоow и создал его на конечном сервере. Поэтому, так как у меня вся разработка идёт на локальном компьютере, мне гораздо удобнее его именно локально ставить, поэтому я бы его на серваке даже бы не не разворачивал.

>> А, понятно. То есть то есть есть смысл у себя локально тоже поставить.

>> Да. Дадада. То есть, ну, вот самое удобное, когда N8N он ну, естественно, развёрнут на сервере, потому что иначе у нас нету доменного имени. А всё остальное локально, мне кажется, гораздо удобнее.

>> А, ясно, ясно, хорошо, хорошо, попробуем. Там же, ээ, суперкарта- это не надо видео.

>> Нет, нет, ты вообще ничего не Он, максимально простой.

>> А, ясно, ясно, Я про клод имею в виду. А я с хлодом ещё не работа.

>> Там есть такое же приложение, как у Chat GPT, абсолютно нетребовательные к ресурсам на базе электронных.

>> Ну понятно. Ну тогда у меня всё хватит.

>> Такая штука, да, он вообще нетребовательный.

>> Ладно, хорошо, попробуем. Вот где-нибудь что-нибудь есть ещё? Можно посмотреть, ээ, вот как локально установить себе клод.

>> Ну, локально это прямо приложенька, она качается с сайта антропика и

>> работает абсолютно так же, как приложенька у Chat GPT. То есть здесь точно никаких проблем не должно возникнуть.

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

>> Ясно. Попробуем. Да,

>> спасибо.

>> Вот что. Отлично. Тогда всем спасибо, всем хороших выходных и

>> выходных.

>> Пока-пока.