Image

Разверните своего помощника на основе искусственного интеллекта для мониторинга и отладки рабочих процессов n8n с помощью Claude и MCP

Используйте Claude AI для мониторинга, анализа и устранения неполадок в рабочих процессах автоматизации n8n посредством естественного общения.

Делиться

fd91446dde1b2383127ad2fbb9a3bdcd

Если вы когда-либо развертывали рабочие процессы n8n в производственной среде, то вы знаете, каково это — слышать о сбое процесса и копаться в журналах, чтобы найти первопричину.

Пользователь: Самир, ваша автоматизация больше не работает, я не получил уведомление!

Первый шаг — открыть интерфейс n8n и просмотреть последние выполнения, чтобы выявить проблемы.

45a081a14d9fa57820d95ab3d405a1dd

Через несколько минут вы обнаружите, что переключаетесь между выполнениями, сравниваете временные метки и читаете ошибки JSON, чтобы понять, где что-то сломалось.

56f0d64920d4b3aa2b99ff0417098434

Что если бы агент мог сказать вам, почему ваш рабочий процесс дал сбой в 3 часа ночи, и вам не пришлось бы копаться в журналах?

Это возможно!

В качестве эксперимента я подключил API n8n, который обеспечивает доступ к журналам выполнения моего экземпляра, к серверу MCP на базе Claude.

5a25f1edd6f7cf64732e4eca492b38f1

Результатом стал помощник на основе искусственного интеллекта, который может отслеживать рабочие процессы, анализировать сбои и объяснять на естественном языке, что пошло не так.

2162740c6fa1a0098c8fedc29ffb4adf

В этой статье я пошагово расскажу вам о процессе создания этой системы.

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

31cb67875805f624b2ae30e10a958c57

Мы воспользуемся этим случаем, чтобы увидеть, как агент выявляет проблемы и объясняет их первопричины.

Затем я подробно расскажу, как я подключил API моего экземпляра n8n к серверу MCP с помощью веб-перехватчика, чтобы позволить Claude Desktop извлекать данные о выполнении для отладки на естественном языке.

2a2b6bc7f9bf1d450111b8e180571136

Веб-хук включает в себя три функции:

  • Получить активные рабочие процессы : список всех активных рабочих процессов.
  • Получить последние казни : включает информацию о последних n казнях
  • Получить сведения о выполнении (статус = ошибка) : сведения о неудачных выполнениях, отформатированные для поддержки анализа первопричин.

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

Демонстрация: использование ИИ для анализа неудачных казней n8n

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

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

4ed111b89fa91d0f5c488092c9d2e161

Чтобы протестировать решение, я начну с того, что попрошу агента составить список активных рабочих процессов.

Шаг 1: Сколько рабочих процессов активно?

a85ba1334a94e9d0ae0fdb43ad18a185

Основываясь только на вопросе, Клод понял, что ему необходимо взаимодействовать с инструментом n8n-monitor , который был создан с использованием сервера MCP.

80c4fbc0a0c4d79ccf639ab4c9132baf

Оттуда он автоматически выбрал соответствующую функцию Get Active Workflows , чтобы получить список активных автоматизаций из моего экземпляра n8n.

5133ae84bd4eb993159e9ee8e3b8c40f

Вот здесь вы начинаете ощущать силу модели.

Он автоматически классифицировал рабочие процессы на основе их названий.

  • 8 рабочих процессов для подключения к извлечению событий из API и их обработки
  • 3 других рабочих процесса, которые находятся в процессе разработки, включая тот, который используется для извлечения журналов
ba9fe763c3f04b9331b3212ba432967b

Это знаменует начало анализа; все эти выводы будут использованы при анализе первопричин.

Шаг 2: Проанализируйте последние n казней

На этом этапе мы можем попросить Клода предоставить нам данные о последних казнях для анализа.

2955ad4a005af13968976d0bcee91761

Благодаря контексту, предоставленному в строках документации, который я объясню в следующем разделе, Клод понял, что ему необходимо вызвать выполнение рабочего процесса get.

Он получит сводку выполнений с указанием процента сбоев и количества рабочих процессов, затронутых этими сбоями.

{ «summary»: { «totalExecutions»: 25, «successfulExecutions»: 22, «failedExecutions»: 3, «failureRate»: «12.00%», «successRate»: «88.00%», «totalWorkflowsExecuted»: 7, «workflowsWithFailures»: 1 }, «executionModes»: { «webhook»: 7, «trigger»: 18 }, «timing»: { «averageExecutionTime»: «15.75 секунд», «maxExecutionTime»: «107.18 секунд», «minExecutionTime»: «0.08 секунд», «timeRange»: { «from»: «2025-10-24T06:14:23.127Z», «to»: «2025-10-24T11:11:49.890Z» } }, […]

Это первое, чем он с вами поделится: он даст четкий обзор ситуации.

fb3fe5454a480b989197e2116fa4d810

Во второй части результатов вы можете найти подробную разбивку сбоев для каждого затронутого рабочего процесса.

«failureAnalysis»: { «workflowsImpactedByFailures»: [ «7uvA2XQPMB5l4kI5» ], «failedExecutionsByWorkflow»: { «7uvA2XQPMB5l4kI5»: { «workflowId»: «7uvA2XQPMB5l4kI5», «failures»: [ { «id»: «13691», «startedAt»: «2025-10-24T11:00:15.072Z», «stoppedAt»: «2025-10-24T11:00:15.508Z», «mode»: «trigger» }, { «id»: «13683», «startedAt»: «2025-10-24T09:00:57.274Z», «stoppedAt»: «2025-10-24T09:00:57.979Z», «mode»: «trigger» }, { «id»: «13677», «startedAt»: «2025-10-24T07:00:57.167Z», «stoppedAt»: «2025-10-24T07:00:57.685Z», «mode»: «trigger» } ], «failureCount»: 3 } }, «recentFailures»: [ { «id»: «13691», «workflowId»: «7uvA2XQPMB5l4kI5», «startedAt»: «2025-10-24T11:00:15.072Z», «mode»: «trigger» }, { «id»: «13683», «workflowId»: «7uvA2XQPMB5l4kI5», «startedAt»: «2025-10-24T09:00:57.274Z», «mode»: «trigger» }, { «id»: «13677», «workflowId»: «7uvA2XQPMB5l4kI5», «startedAt»: «2025-10-24T07:00:57.167Z», «mode»: «trigger» } ] },

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

1a006eb1a1f631fb1d19ee2d3b1a6d12

В этом конкретном случае рабочий процесс «Встреча в Бангкоке» запускается каждый час.

Мы увидели, что за последние пять часов у нас возникли проблемы три раза (из пяти).

Примечание: последнее предложение можно проигнорировать, поскольку у агента пока нет доступа к сведениям о выполнении.

Последний раздел результатов включает анализ общей производительности рабочих процессов.

«workflowPerformance»: { «allWorkflowMetrics»: { «CGvCrnUyGHgB7fi8»: { «workflowId»: «CGvCrnUyGHgB7fi8», «totalExecutions»: 7, «successfulExecutions»: 7, «failedExecutions»: 0, «successRate»: «100.00%», «failureRate»: «0.00%», «lastExecution»: «2025-10-24T11:11:49.890Z», «executionModes»: { «webhook»: 7 } }, [… другие рабочие процессы …] , «topProblematicWorkflows»: [ { «workflowId»: «7uvA2XQPMB5l4kI5», «totalExecutions»: 5, «successfulExecutions»: 2, «failedExecutions»: 3, «successRate»: «40.00%», «failureRate»: «60.00%», «lastExecution»: «2025-10-24T11:00:15.072Z», «executionModes»: { «trigger»: 5 } }, { «workflowId»: «CGvCrnUyGHgB7fi8», «totalExecutions»: 7, «successfulExecutions»: 7, «failedExecutions»: 0, «successRate»: «100.00%», «failureRate»: «0.00%», «lastExecution»: «2025-10-24T11:11:49.890Z», «executionModes»: { «webhook»: 7 } }, [… другие рабочие процессы …] } ] }

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

0a2372cb455651b43189625d6a5c3513

В этом конкретном примере у меня есть только один неудавшийся рабочий процесс — Ⓜ️ Встреча в Бангкоке .

Что делать, если я хочу узнать, когда начались проблемы?

Не волнуйтесь, я добавил раздел с подробностями казни по часам.

«timeSeriesData»: { «2025-10-24T11:00»: { «всего»: 5, «успех»: 4, «ошибка»: 1 }, «2025-10-24T10:00»: { «всего»: 6, «успех»: 6, «ошибка»: 0 }, «2025-10-24T09:00»: { «всего»: 3, «успех»: 2, «ошибка»: 1 }, «2025-10-24T08:00»: { «всего»: 3, «успех»: 3, «ошибка»: 0 }, «2025-10-24T07:00»: { «всего»: 3, «успех»: 2, «ошибка»: 1 }, «2025-10-24T06:00»: { «всего»: 5, «успех»: 5, «ошибка»: 0 } }

Вам просто нужно позволить Клоду создать красивое визуальное представление, подобное тому, что вы видите ниже.

4007fd0c050b474fddd425cde69687a1

Позвольте мне напомнить вам, что я не давал Клоду никаких предложений по представлению результатов; это все его собственная инициатива!

Впечатляет, не правда ли?

Шаг 3: Анализ первопричин

Теперь, когда мы знаем, в каких рабочих процессах возникают проблемы, нам следует найти основную причину(ы).

61052cecda2cea95e94f5ed2b1158cd6

Клоду обычно следует вызывать функцию Get Error Executions , чтобы получить сведения о   казни с неудачами.

К вашему сведению, сбой этого рабочего процесса произошел из-за ошибки в узле JSON Tech , который обрабатывает выходные данные вызова API.

  • Meetup Tech отправляет HTTP-запрос к API Meetup
  • Обработано узлом Result Tech
  • Технология JSON должна преобразовать этот вывод в преобразованный JSON.
c1f9d636fb23e3cbbec0ad9829b208cf

Вот что происходит, когда все идет хорошо.

43e8d4bd2a543645609f0da6e579f045

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

Примечание: с тех пор эта проблема была исправлена в рабочей версии (теперь узел кода стал более надежным), но я оставил ее здесь для демонстрации.

Давайте посмотрим, сможет ли Клод найти первопричину.

Вот вывод функции Get Error Executions .

{ «workflow_id»: «7uvA2XQPMB5l4kI5», «workflow_name»: «Ⓜ️ Bangkok Meetup», «error_count»: 5, «errors»: [ { «id»: «13691», «workflow_name»: «Ⓜ️ Bangkok Meetup», «status»: «error», «mode»: «trigger», «started_at»: «2025-10-24T11:00:15.072Z», «stopped_at»: «2025-10-24T11:00:15.508Z», «duration_seconds»: 0.436, «finished»: false, «retry_of»: null, «retry_success_id»: null, «error»: { «message»: «Свойство 'json' не является объектом [элемент 0]», «description»: «В возвращаемых данных каждый Ключ с именем 'json' должен указывать на объект.», «http_code»: null, «level»: «error», «timestamp»: null }, «failed_node»: { «name»: «JSON Tech», «type»: «n8n-nodes-base.code», «id»: «dc46a767-55c8-48a1-a078-3d401ea6f43e», «position»: [ -768, -1232 ] }, «trigger»: {} }, [… 4 другие ошибки …] ], «summary»: { «total_errors»: 5, «error_patterns»: { «Свойство 'json' не является объектом [item 0]»: { «count»: 5, «executions»: [ «13691», «13683», «13677», «13660», «13654» ] } }, «failed_nodes»: { «JSON Tech»: 5 }, «time_range»: { «oldest»: «2025-10-24T05:00:57.105Z», «newest»: «2025-10-24T11:00:15.072Z» } } }

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

cce06a6581e21dcdfbe04639c4049a12

В ответе выше вы можете видеть, что Клод обобщил результаты нескольких казней в одном анализе.

Теперь мы знаем, что:

  • Ошибки происходили каждый час, за исключением 08:00 утра.
  • Каждый раз один и тот же узел, называемый «JSON Tech», подвергается воздействию
  • Ошибка возникает вскоре после запуска рабочего процесса.

Этот описательный анализ завершается к началу диагностики.

13830efe7613dadb7877cecd6090437d

Это утверждение не является неверным, о чем свидетельствует сообщение об ошибке в пользовательском интерфейсе n8n.

8e916f91e65bf5b92c18642e3e8ab1f1

Однако из-за ограниченного контекста Клод начинает давать рекомендации по исправлению рабочего процесса, которые неверны.

fe40d30a09e59fd82c929800eb77896c

Помимо исправления кода, он предоставляет план действий.

b62495f4720d10cc0185d9430ef298e3

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

e85b5036edaf6d7a5ceda35d22831a7e

В конце концов он оспорил первоначальное предложение резолюции и начал делиться предположениями о коренных причинах.

cfac30218183b1547d52d2ca0f0ba841

Это приближает нас к истинной первопричине, давая достаточно информации для начала изучения рабочего процесса.

357471aaa844102d3e7e417764eb77f0

Исправленное исправление теперь лучше, поскольку оно учитывает возможность того, что проблема возникает из-за входных данных узла.

Для меня это лучшее, чего я мог ожидать от Клода, учитывая ограниченность имеющейся у него информации.

Заключение: Ценностное предложение этого инструмента

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

Прежде чем вручную проверять выполнения и журналы, вы можете сначала связаться со своей системой автоматизации, чтобы узнать, что именно не удалось, почему это произошло, и получить контекстно-зависимые объяснения в течение нескольких секунд.

Это не заменит вас полностью, но может ускорить процесс анализа первопричин.

В следующем разделе я кратко расскажу, как я настроил MCP Server для подключения Claude Desktop к моему экземпляру.

Создание локального сервера MCP для подключения Claude Desktop к микросервису FastAPI

Чтобы снабдить Клода тремя функциями, доступными в веб-перехватчике ( получить активные рабочие процессы, получить выполнение рабочих процессов и получить выполнение ошибок ), я реализовал сервер MCP.

9bb5dd62b0e89a3695313b78993cb5f7

В этом разделе я кратко расскажу о реализации, сосредоточившись только на Get Active Workflows и Get Workflows Executions, чтобы продемонстрировать, как я объясняю Клоду использование этих инструментов.

Для всестороннего и подробного ознакомления с решением, включая инструкции по его развертыванию на вашем компьютере, приглашаю вас посмотреть это руководство на моем канале YouTube.

Вы также найдете исходный код сервера MCP и рабочий процесс n8n веб-перехватчика.

Создайте класс для запроса рабочего процесса

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

Вы можете найти его в файле Python: ./utils/n8n_monitory_sync.py

import logging import os from datetime import datetime, timedelta from typing import Any, Dict, Optional import requests import traceback logger = logging.getLogger(__name__) class N8nMonitor: «»»Обработчик для операций мониторинга n8n — синхронная версия»»» def __init__(self): self.webhook_url = os.getenv(«N8N_WEBHOOK_URL», «») self.timeout = 30

По сути, мы извлекаем URL-адрес веб-перехватчика из переменной среды и устанавливаем время ожидания запроса в 30 секунд.

Первая функция get_active_workflows запрашивает веб-перехватчик, передавая в качестве параметра: «action»: get_active_workflows.

def get_active_workflows(self) -> Dict[str, Any]: «»»Извлечь все активные рабочие процессы из n8n»»» if not self.webhook_url: logger.error(«Переменная среды N8N_WEBHOOK_URL не настроена») return {«error»: «Переменная среды N8N_WEBHOOK_URL не установлена»} try: logger.info(«Извлечение активных рабочих процессов из n8n») response = requests.post( self.webhook_url, json={«action»: «get_active_workflows»}, timeout=self.timeout ) response.raise_for_status() data = response.json() logger.debug(f»Тип ответа: {type(data)}») # Список всех рабочих процессов workflows = [] if isinstance(data, list): workflows = [item for item in data if isinstance(item, dict)] if не рабочие процессы и данные: logger.error(f»Ожидался список словарей, получен список {type(data[0]).__name__}») return {«error»: «Webhook вернул недопустимый формат данных»} elif isinstance(data, dict): if «data» in data: workflows = data[«data»] else: logger.error(f»Неожиданный ответ словаря с ключами: {list(data.keys())} n {traceback.format_exc()}») return {«error»: «Неожиданный формат ответа»} else: logger.error(f»Неожиданный тип ответа: {type(data)} n {traceback.format_exc()}») return {«error»: f»Неожиданный тип ответа: {type(data).__name__}»} logger.info(f»Успешно извлечено {len(workflows)} активных рабочих процессов») return { «total_active»: len(workflows), «workflows»: [ { «id»: wf.get(«id», «unknown»), «name»: wf.get(«name», «Unnamed»), «created»: wf.get(«createdAt», «»), «updated»: wf.get(«updatedAt», «»), «archived»: wf.get(«isArchived», «false») == «true» } for wf in workflows ], «summary»: { «total»: len(workflows), «names»: [wf.get(«name», «Unnamed») for wf in workflows] } } except requests.exceptions.RequestException as e: logger.error(f»Ошибка при извлечении рабочих процессов: {e} n {traceback.format_exc()}») return {«error»: f»Не удалось извлечь рабочие процессы: {str(e)} n {traceback.format_exc()}»} except Exception as e: logger.error(f»Неожиданная ошибка при извлечении рабочих процессов: {e} n {traceback.format_exc()}») return {«error»: f»Неожиданная ошибка: {str(e)} n {traceback.format_exc()}»}

Я добавил много проверок, поскольку API иногда не возвращает ожидаемый формат данных.

Это решение более надежное и предоставляет Клоду всю информацию, необходимую для понимания причины сбоя запроса.

Теперь, когда первая функция рассмотрена, мы можем сосредоточиться на получении всех последних n выполнений с помощью get_workflow_executions.

def get_workflow_executions( self, limit: int = 50, includes_kpis: bool = False, ) -> Dict[str, Any]: «»»Извлечь выполнения рабочего процесса для последних 'limit' выполнений с KPI или без них «»» if not self.webhook_url: logger.error(«Переменная среды N8N_WEBHOOK_URL не задана») return {«error»: «Переменная среды N8N_WEBHOOK_URL не задана»} try: logger.info(f»Извлечение последних {limit} выполнений») payload = { «action»: «get_workflow_executions», «limit»: limit } response = requests.post( self.webhook_url, json=payload, timeout=self.timeout ) response.raise_for_status() data = response.json() if isinstance(data, list) and len(data) > 0: data = data[0] logger.info(«Данные о выполнении успешно получены») if includes_kpis and isinstance(data, dict): logger.info(«Включая KPI в данные о выполнении») if «summary» in data: summary = data[«summary»] failure_rate = float(summary.get(«failureRate», «0»).rstrip(«%»)) data[«insights»] = { «health_status»: «🟢 Healthy» if failure_rate < 10 else "🟡 Warning" if failure_rate < 25 else "🔴 Critical", "message": f"{summary.get('totalExecutions', 0)} выполнения с {summary.get('failureRate', '0%')} показателем отказов" } return data except requests.exceptions.RequestException as e: logger.error(f"HTTP error выборка выполнений: {e} n {traceback.format_exc()}") return {"error": f"Не удалось выбрать выполнения: {str(e)}"} except Exception as e: logger.error(f"Неожиданная ошибка при выборке выполнений: {e} n {traceback.format_exc()}") return {"error": f"Неожиданная ошибка: {str(e)}"}

Единственным параметром здесь является количество n выполнений, которое вы хотите получить: «limit»: n.

Выходные данные включают сводку с состоянием работоспособности, которая генерируется узлом кода «Аудит обработки». (Подробнее в руководстве)

a024d8ec75f68dd5ddd53c5adf0b2421

Функция get_workflow_executions только извлекает выходные данные для форматирования перед отправкой их агенту.

Теперь, когда мы определили наши основные функции, мы можем создать инструменты для оснащения Клода через сервер MCP.

Настройка сервера MCP с помощью инструментов

Теперь пришло время создать наш MCP-сервер с инструментами и ресурсами для оснащения (и обучения) Клода.

из mcp.server.fastmcp импорт FastMCP импорт ведение журнала из ввода импорта Необязательный, Словарь, Любой из utils.n8n_monitor_sync импорт N8nMonitor ведение журнала.basicConfig( уровень=ведение журнала.INFO, формат='%(asctime)s — %(levelname)s — %(message)s', обработчики=[ ведение журнала.FileHandler(«n8n_monitor.log»), ведение журнала.StreamHandler() ] ) регистратор = ведение журнала.getLogger(__name__) mcp = FastMCP(«n8n-monitor») монитор = N8nMonitor()

Это базовая реализация с использованием FastMCP и импорта n8n_monitor_sync.py с функциями, определенными в предыдущем разделе.

# Ресурс для агента (Самир: обновляйте его каждый раз при добавлении инструмента) @mcp.resource(«n8n://help») def get_help() -> str: «»»Получить справочную документацию по инструментам мониторинга n8n»»» return «»» 📊 ИНСТРУМЕНТЫ МОНИТОРИНГА N8N ======================= МОНИТОРИНГ РАБОЧЕГО ПРОЦЕССА: • get_active_workflows() Список всех активных рабочих процессов с именами и идентификаторами ОТСЛЕЖИВАНИЕ ВЫПОЛНЕНИЯ: • get_workflow_executions(limit=50, include_kpis=True) Получить журналы выполнения с подробными KPI — limit: Количество последних выполнений для извлечения (1-100) — include_kpis: Рассчитать метрики производительности ОТЛАДКА ОШИБОК: • get_error_executions(workflow_id) Получить подробную информацию об ошибках для определенного рабочего процесса — Возвращает последний 5 ошибок с подробными данными отладки — Показывает сообщения об ошибках, неисправные узлы, данные триггера — Определяет шаблоны ошибок и проблемные узлы — Включает коды HTTP, уровни ошибок и информацию о времени ОТЧЕТНОСТЬ СОСТОЯНИЯ: • get_workflow_health_report(limit=50) Генерация всестороннего анализа состояния на основе недавних выполнений — Определяет проблемные рабочие процессы — Показывает показатели успеха/неудачи — Предоставляет метрики времени выполнения ПРЕДОСТАВЛЯЕМЫЕ КЛЮЧЕВЫЕ МЕТРИКИ: • Общее количество выполнений • Показатели успеха/неудачи • Время выполнения (среднее, мин., макс.) • Рабочие процессы со сбоями • Режимы выполнения (ручной, триггерный, интегрированный) • Шаблоны и частота ошибок • Идентификация неисправного узла ИНДИКАТОРЫ СОСТОЯНИЯ СОСТОЯНИЯ: • 🟢 Исправно: <10% частота сбоев • 🟡 Предупреждение: 10–25% частота сбоев • 🔴 Критически: >25% частота сбоев ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ: — «Показать мне все активные рабочие процессы» — «Что Рабочие процессы дают сбои?» — «Создать отчёт о работоспособности моего экземпляра n8n» — «Показать показатели выполнения за последние 48 часов» — «Отладка ошибок в рабочем процессе CGvCrnUyGHgB7fi8» — «Что вызывает сбои в моём рабочем процессе обработки данных?» РАБОЧИЙ ПРОЦЕСС ОТЛАДКИ: 1. Используйте get_workflow_executions() для выявления проблемных рабочих процессов. 2. Используйте get_error_executions() для подробного анализа ошибок. 3. Проверьте шаблоны ошибок, чтобы выявить повторяющиеся проблемы. 4. Просмотрите сведения о сбойном узле и данные триггера. 5. Используйте workflow_id и execution_id для целевых исправлений.

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

Теперь мы можем определить первый инструмент для получения всех активных рабочих процессов.

@mcp.tool() def get_active_workflows() -> Dict[str, Any]: «»» Получает все активные рабочие процессы в экземпляре n8n. Возвращает: словарь со списком активных рабочих процессов и их подробностями. «»» try: logger.info(«Извлечение активных рабочих процессов») result = monitor.get_active_workflows() if «error» in result: logger.error(f»Не удалось получить рабочие процессы: {result['error']}») else: logger.info(f»Найдено {result.get('total_active', 0)} активных рабочих процессов») return result except Exception as e: logger.error(f»Неожиданная ошибка: {str(e)}») return {«error»: str(e)}

Строка документации, используемая для объяснения серверу MCP, как использовать инструмент, относительно коротка, поскольку для get_active_workflows() нет входных параметров.

Давайте сделаем то же самое для второго инструмента, чтобы получить последние n выполнений.

@mcp.tool() def get_workflow_executions( limit: int = 50, include_kpis: bool = True ) -> Dict[str, Any]: «»» Получить журналы выполнения рабочего процесса и ключевые показатели эффективности для последних N выполнений. Аргументы: limit: Количество выполнений для извлечения (по умолчанию: 50) include_kpis: Включить вычисленные ключевые показатели эффективности (по умолчанию: true) Возвращает: Словарь с данными о выполнении и ключевыми показателями эффективности «»» try: logger.info(f»Извлечение последних {limit} выполнений») result = monitor.get_workflow_executions( limit=limit, includes_kpis=include_kpis ) if «error» in result: logger.error(f»Не удалось получить выполнения: {result['error']}») else: if «summary» in result: summary = result[«summary»] logger.info(f»Выполнения: {summary.get('totalExecutions', 0)}, » f»Интенсивность отказов: {summary.get('failureRate', 'N/A')}») возвращает результат, за исключением исключения в виде e: logger.error(f»Неожиданная ошибка: {str(e)}») возвращает {«ошибка»: str(e)}

В отличие от предыдущего инструмента, нам необходимо указать входные данные со значением по умолчанию.

Теперь мы снабдили Клода этими двумя инструментами, которые можно использовать, как в примере, представленном в предыдущем разделе.

Что дальше? Разверните его на своём компьютере!

Поскольку я хотел сделать статью краткой, я расскажу только об этих двух инструментах.

Для ознакомления с остальными функциями приглашаю вас посмотреть это полное руководство на моем канале YouTube.

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

Заключение

Это только начало!

Мы можем рассматривать это как версию 1.0 того, что может стать суперагентом для управления вашими рабочими процессами n8n.

Что я имею в виду?

Существует огромный потенциал для улучшения этого решения, особенно в части анализа первопричин путем:

  • Предоставление агенту большего контекста с помощью стикеров внутри рабочих процессов
  • Демонстрация того, насколько хорошо выглядят входы и выходы с узлами оценки, чтобы помочь Клоду выполнить анализ пробелов
  • Использование других конечных точек API n8n для более точного анализа

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

Поэтому я хотел поделиться этим с сообществами Towards Data Science и n8n в виде решения с открытым исходным кодом, доступного в моем профиле GitHub.

Вам нужно вдохновение, чтобы начать автоматизировать с помощью n8n?

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

8b29fd7790e8dc629343683773c12df6

Основное внимание уделялось логистике и операциям в цепочке поставок с реальными примерами:

  • Автоматизируйте рабочие процессы аналитики цепочки поставок с помощью агентов ИИ с использованием n8n
  • Агенты ИИ для оптимизации цепочки поставок: планирование производства

На моем канале YouTube Supply Science также есть полный плейлист с более чем 15 обучающими материалами.

972b27e817165a9fc5984dbca60ff73f

Вы можете следовать этим руководствам, чтобы развернуть рабочие процессы, которыми я делюсь в своем профиле создателя n8n (ссылка на него в описаниях), которые охватывают:

  • Автоматизация процессов логистики и цепочки поставок
  • Рабочие процессы на базе ИИ для создания контента
  • Продуктивность и изучение языка

Не стесняйтесь задавать свои вопросы в комментариях к видео.

Другие примеры реализации MCP-сервера

Это не первая моя реализация MCP-серверов.

В другом эксперименте я подключил Claude Desktop к инструменту оптимизации сети поставок.

5913cbc78b0b8264c93e333f9c7fb367

В этом примере рабочий процесс n8n заменяется микросервисом FastAPI, размещающим алгоритм линейного программирования.

4b55610e6ad9d42f8e6faf59f618dc01

Цель — определить оптимальный набор заводов для производства и поставки продукции на рынок с минимальными затратами и минимальным воздействием на окружающую среду.

4cd5dfc26bbfa740d405ce794f003708

В этом типе упражнений Клод прекрасно справляется с синтезом и представлением результатов.

Более подробную информацию можно найти в статье из рубрики «На пути к науке о данных».

Обо мне

Давайте общаться в Linkedin и Twitter. Я инженер по цепочке поставок, использующий аналитику данных для оптимизации логистических операций и снижения затрат.

Если вам нужна консультация или совет по аналитике и устойчивой трансформации цепочки поставок, свяжитесь со мной через Logigreen Consulting.

Если вас интересуют аналитика данных и цепочка поставок, посетите мой сайт.

Самир Сачи | Наука о данных и производительность

Источник: towardsdatascience.com

✅ Найденные теги: новости, Разверните

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Залитый солнцем лес с деревьями и болотистой водой, покрытой зелёной растительностью.
Пленка NeoFilm 100 на деревянном столе в окружении упаковок.
Деревянный минималистичный сундук с подсветкой в интерьере.
Обложка отчета о преодолении разрыва в операционном ИИ от MIT Technology Review.
Твит о разработке в 2026: выполнение сложных задач до пробуждения США, чтобы избежать проблем с ИИ.
Прозрачный раствор в бутылочке с черной крышкой, химическая формула на этикетке.
Диаграмма ложной идентичности: реальность и самозванец, высокие и низкие частоты.
Изображение крупным планом дрона с логотипом Anduril.
ideipro logotyp
Image Not Found
Пленка NeoFilm 100 на деревянном столе в окружении упаковок.

Цифровая камера OPT NeoFilm 100 в формате плёнки

Компактная камера OPT NeoFilm 100 выполнена в виде классической 35-мм плёнки, но внутри скрывается не аналоговый механизм, а цифровая «начинка», способная снимать фото и видео.  Камера оснащена 1-мегапиксельным сенсором, который позволяет получать изображения с разрешением до 3…

Мар 5, 2026
Деревянный минималистичный сундук с подсветкой в интерьере.

«Умная» кровать-трансформер Roll

Хорватский дизайнер Лука Булян разработал проект складной кровати Roll, которая по нажатию кнопки сворачивается в аккуратный деревянный шкаф. Главная идея строится на принципе ежедневного скручивания матраса без потери его свойств. Конструкция оснащена тихим электродвигателем и плавным механизмом…

Мар 5, 2026
Обложка отчета о преодолении разрыва в операционном ИИ от MIT Technology Review.

Преодоление разрыва в операционном применении ИИ

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

Мар 5, 2026
Прозрачный раствор в бутылочке с черной крышкой, химическая формула на этикетке.

Ученые усовершенствовали метод получения промышленного спирта

Полученный α-кумиловый спирт © Елена Редина. Ученые разработали новый метод получения α-кумилового спирта — ключевого продукта для производства полимеров, косметики и моющих средств. Этот спирт также служит основой для получения вещества, придающего пластикам прочность и устойчивость к…

Мар 5, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых