Avec les dernières dingueries de l’IA en production de code cette dernière année et l’avènement du Vibe Coding, je me suis sérieusement posé la question suivante :
Est-ce que ça vaut encore la peine de faire du Nocode, si ça devient plus rapide de produire le même résultat avec l’IA ?
Alors quand j’ai vu que plusieurs personnes commençaient à générer leur workflow n8n grâce à l’IA, je me suis dis JACKPOT 🎰
Mais là, grosse déception : aucune des solutions que j’ai testées ne me permettaient de créer et surtout d’itérer des vrais workflows production-ready…
Mon intuition : ils essaient de générer le workflow complet en un coup…
Alors que mon approche quotidienne, c’est de partir d’un plan, d’implémenter les nodes un par un, de les tester et d’ajuster en continu !
C’est en implémentant cette approche que j’ai cracké la production de workflow n8n fonctionnel et pertinent, assisté par IA !
a.k.a le Vibe Nocoding
Et aujourd’hui je t’explique EXACTEMENT comment j’ai fait et pourquoi ça marche !
TL;DR:
L’idée ici c’est qu’avec le combo Chat GPT o3 + Windsurf + le bon MCP, tu peux automatiser n’importe quelle tâche !
Tout le sujet est de comprendre que ce qui fait un bon MCP, c’est une bonne liste de ses actions :
Il doit permettre à nos agents IA d’itérer sur nos outils grâce à des actions simples mais précises, qui renvoient des messages d’erreur explicites et détaillés : on oublie les workflows à rallonge qui font 10 trucs en 1 !
Chaque action et ses paramètres doivent être documentés de manière claire et concise, une simple phrase suffit !
Mais un MCP n’est rien sans un process maîtrisé qui montre à nos agents comment s’en servir ! Windsurf nous permet de ranger et d’appeler ces process de manière optimale
Ensuite n8n nous permet de créer n’importe quel MCP en respectant les bonnes pratiques ci-dessus : je te détaille donc tout le parcours que j’ai eu pour faire un MCP n8n… sur n8n lui-même 🔁
Warning : ceci n’est pas un JSON à copier coller
Pourquoi ?
Car ça en ferait un n-ième doc à collectionner qui prend la poussière au fond d’un Notion
Là je vais donner le pur jus derrière, la réflexion profonde qui s’applique à tout process, aussi bien création de contenu, setting, prospection, closing, Ads que création d’agents n8n.
Je vais te montrer comment devenir AI-first avec l’Agent OS : IA + Windsurf + MCP
Derrière ces termes, rien de sorcier et je t’illustre ça avec notre exemple de Vibe Nocoding n8n
📣
Ceci reste une version encore assez brute, donc n’hésite pas à me faire tes retours sur ce qui n’est pas clair pour que je l’améliore ;)
Tout est itération LEAN
De la même manière qu’un agent IA qui marche vraiment doit procéder de manière itérative, j’ai appliqué les bons vieux principes du LEAN pour développer cette solution.
Finalement nous et les agents IA sommes pareils : on utilise la même méthode pour être efficace
Learn → Ideas : S’inspirer de ce qui se fait déjà dans différents domaines et les combiner en une nouvelle approche
On démarre par une phase de recherche et de planification :
Je rassemble différentes ressources (repo git, vidéos, outils,…) qui s’attaquent à la même problématique et mets tout dans Gemini 2.5 pro pour qu’il en extrait les principes premiers
Avec tout ça, je commence à avoir une vision claire de ce que sera le Vibe nocoding
Build → Product : appliquons nos hypothèses une à une
Le process du Vibe Nocoding fonctionnera en 3 étapes :
D’abord, on a une prompt simple qui va spécifier un besoin en liste de workflows n8n, chacun détaillé étape par étape, grâce à ChatGPT o3 (ex : je veux être inbox 0 grâce à n8n)
Pour chaque workflow, Windsurf applique le plan étape par étape et créer les nodes 1 par 1 grâce à notre MCP n8n
Puis chaque node est testé et validé avant de passer au suivant. Les nodes sont documentés par groupe pertinents avec des sticky Notes.
Place au paramétrage des outils qui vont concrétiser cette vision !
ChatGPT o3
Honnêtement, o3 est tellement performant qu’une prompt triviale fait largement le taff
Aide-moi à atteindre l'inbox zéro grâce à des workflows et des agents N8N, parce que j'en peux plus d'avoir des milliers de mails qui s'entassent sur mon compte Gmail. Là c'est trop, je ne sais plus quoi faire.
Il suffit ensuite de rapidement vérifier si la réflexion est pertinente, si les sources sont fiables et si le résultat convient à notre besoin, puis on copie le résultat.
Windsurf
On va utiliser 2 features pratiques de l’outil : les Rules et les Workflows
ne des choses que j’apprécie particulièrement avec Windsurf, c’est de pouvoir initialiser son projet directement depuis le chat !
Pour guider la création du projet de manière optimisée pour notre process, j’utilise la global rule suivante (qui n’est rien d’autre qu’un prompt) :
# New workspace creation guidelines
When user is not on a workspace and use /new-project command, help him create one by following the steps :
## o3 Roadmap Analysis
- Ask user to provide a o3 generated plan if not provided
- Analyze given plan to undertand project
- Redact full usecase PRD : goal, context, important notes, edge cases,...
- Identify future n8n workflows to deploy (a workflow here is 1 trigger followed by different actions/paths/etc...)
## Workspace files creation
- Create a new Windsurf Cascade project with a slug-name relevant to usecase
- Save previously redacted usecase PRD in PLAN.md file at workspace root
- Save identified n8n workflows each in its own file at workspace root (like workflow-RELEVANT_NAME.md) following below format :
### WORKFLOW REPRESENTATION FORMAT
1. WORKFLOW_PLAN:
- Brief description of the overall workflow
- List of nodes with their :
- n8n official node name
- n8n resource name if relevant
- n8n operation name if relevant
- description / purpose
- Required input variables
- Settings and parameters
- Output variables
2. WORKFLOW_NAME:
"Descriptive Name For The Workflow"
3. WORKFLOW_DIAGRAM:
- Use this concise format to represent workflows:
```
START: NodeType: Description
→ NextNode: Description
→ ConditionalNode: Description
└→ [Condition1] → ResultingNode: Description
└→ [Condition2] → AlternativeNode: Description
```
- For AI Agent nodes, use this expanded format:
```
→ AI Agent: Description
└→ [Model] → model-name, reasoning effort level
└→ [Memory] → Description of memory context
└→ [Tool] → ToolName: Description
└→ [Tool] → AnotherTool: Description
└→ [Output Parser] → Format: Description/Schema
```
## Default Rule & Workflows import
- Duplicate content from /Users/mory/CascadeProjects/template/.windsurf into this workspace .windsurf folder to set needed default rules and workflows
Le wording exact n’est pas le plus important, ce qu’il faut en retenir c’est que :
J’utilise une commande clé /new-project pour faciliter la décision de l’agent d’appliquer ce process de création de projet ou non
Je pars du résultat copié depuis o3 pour définir la roadmap globale et les spécifications détaillés pour chaque workflow
Je propose un format de schéma (concis pour économiser des tokens, mais assez visuel pour que je le comprenne en un coup d’oeil) pour décrire mes workflows n8n
Je récupère ma liste de Rules & Workflows par défaut qui servent à piloter la création de workflow n8n via le MCP
🤏
Chaque project rule est limitée à 6000 caractères : c’est court, mais c’est fait exprès !
Une rule doit se concentrer sur un aspect particulier, par exemple guider l’agent sur comment créer un node Code n8n fonctionnel
C’est dans le workflow /build-workflow que tout va se jouer :
On va y décrire précisément les étapes que doit suivre l’agent, les cas dans lesquelles il doit utiliser quelle rule, et surtout comment utiliser notre MCP n8n.
Donc avant de détailler ce workflow, parlons en de ce fameux MCP !
Le MCP n8n
C’est là le gros du travail : la création du serveur MCP !
⚡
Avec n8n, c’est très simple de créer son propre MCP et d’ailleurs ça donne la meilleure explication de ce que c’est :
Un simple ENDPOINT qui donne à un agent accès à plusieurs TOOLS en décrivant le rôle de chaque tool ainsi que les paramètres que l’agent doit générer pour l’utiliser.
Tout l’enjeu est de créer une suite de tools assez flexible et robuste pour appliquer notre vision du step by step itératif.
🐙
L’idée principale ici est de mettre à disposition de notre agent des outils simples et précis, pour qu’il puissent les combiner comme bon lui semble pour s’adapter au maximum de situations possibles !
Pour organiser ces différents tools, ma technique préférée est de passer par un unique trigger When Executed by Another Workflow , dans lequel je définis les différents paramètres possibles:
Il suffit ensuite de continuer le workflow vers les bons node en fonction du paramètre operation
De cette manière on pourra définir chaque tool directement sur le même workflow pour garder une vision globale de notre MCP, et simplement sélectionner les paramètres pertinents pour chacun, avec une courte indication de comment les utiliser proprement (grâce à l’option Defined automatically by the model)
Détaillons-en certains :
Pour chaque étape, le tool get_node_recommandation trouve les 3 nodes les plus pertinents : gemini 2.5 flash avec son 1M de contexte, son faible coût et sa rapidité est idéale pour notre RAG ici
Extrait de la prompt :
You are the n8n librarian. You find from your library the most fitting n8n node for user need.
Make your top 3 recommandation ranked from most relevant to less relevant.
<n8n_node_library>
[
{
"name": "@n8n/n8n-nodes-langchain.agent",
"displayName": "AI Agent",
"description": "Generates an action plan and executes it. Can use external tools."
},
{
"name": "@n8n/n8n-nodes-langchain.chainLlm",
"displayName": "Basic LLM Chain",
"description": "A simple chain to prompt a large language model"
},
{
...
fetch_n8n_node fournit les spécifications exactes du node pour permettre un paramétrage correct
⚡
Il s’avère que les configs de tous les noeuds sont disponible en 1 seul appel API sur son instance n8n (y compris les customs nodes qui y sont installés !)
initiate_workflow permet de créer un workflow en démarrant par son trigger
Les outils CRUD des nodes (opérations de création, lecture, mise à jour, suppression d’un node)
update_connection pour changer le branchement d’un node aux autres au besoin
⚡
Il ne suffit plus maintenant que de copier coller le lien de production, donné par le MCP server trigger, dans Windsurf de la manière suivante (fichier mcp_config.json)
Ça marche ou pas ? et surtout, si ça ne marche pas, il faut comprendre pourquoi !
Pour cela, 2 choses sont ultra importantes :
Traiter TOUS les cas d’erreurs dans nos workflows : il va falloir faire de l’option Continue using error output de n8n une habitude !
Générer des rapports d’erreurs les plus détaillés possible, pour que notre agent IA ait le plus d’informations possibles pour s’ajuster, débugger ou même nous notifier nous d’un problème dans notre MCP
Par exemple, quand je génère le JSON d’un node pour le mettre dans un workflow, il faut que je m’assure qu’il respecte un format stricte imposé par n8n !
🦾
Ici, en regardant les travaux des précédents MCP, j’ai découvert la librairie Zod qui permet de valider un JSON et surtout qui renvoie une erreur détaillée si invalide !
Ensuite j’ai demandé à Windsurf de générer et tester le code pour moi, et après quelques aller-retours j’ai pu copier-coller le résultat dans n8n
📚
À noter que pour utiliser une libraire JS externe comme Zod sur n8n, il faut être en version selfhost !
Et si tu déploies via un Dockerfile, il faut juste npm install -g zod
Puis ajouter zod à la liste dans la variable d’environnement NODE_FUNCTION_ALLOW_EXTERNAL
Testons le process /build-workflow
Pour tester si notre MCP est fonctionnel, il faut le mettre dans les mains de l’agent Cascade et observer comment il s’en sort !
On lui donne le process suivant :
Partir du fichier specs du workflow n8n
Identifier le déclencheur (point de départ) du workflow
Si le déclencheur fait partie des nœuds de base, utiliser la règle Windsurf @n8n-core-nodes.md
Sélectionner la recommandation la plus pertinente, éventuellement demander les préférences de l'utilisateur
Appeler l'outil MCP fetch_n8n_properties sur le nœud choisi pour comprendre sa structure
Générer un JSON de nœud valide et appeler l'outil MCP initiate_workflow pour créer le workflow
Demander à l'utilisateur de tester le workflow nouvellement créé et épingler les données (le guider dans le processus si nécessaire)
Si l'utilisateur rencontre un problème pendant le test, demander plus de détails si nécessaire et le guider vers la solution
Une fois le workflow initialisé, garder en mémoire son nom et son identifiant pour une utilisation ultérieure (également mettre à jour le fichier de spécifications .md de ce workflow pour y ajouter l'identifiant)
Répéter les étapes pour les nodes suivants en utilisant append_node_to_workflow avec un json de connexion valide
Voilà qui lui donne pas mal de choses à faire !
Voici l’extrait de la prompt qui retrace l’essentiel du process :
# Initiate workflow
- Ask which workflow user wants to build if not already defined in tasks
- Read related workflow specs .md file to understand what you must build
- Identify trigger (starting point) of the workflow
- if trigger is one of core nodes, use Winsurf rule @n8n-core-nodes.md
- else Call mcp my-n8n-mcp tool get_node_recommandation
- Pick most relevant recommandation, eventually asks for user preferences
- Call mcp my-n8n-mcp tool fetch_n8n_properties on chosen node to understand its structure
- Generate a full valid node json for this trigger (use short description as node name for better documentation) and call mcp my-n8n-mcp tool initiate_workflow to start a workflow with this trigger
- Ask user to check newly created workflow, test trigger and pin datas (guide him through process if needed)
- If user encounter a problem during test, ask for more details if needed and guide him to solution
- Once workflow is initiated, keep in memory its name & id for further use (also update this workflow .md spec file to add id inside)
- Once workflow is successfully tested, ask for user to give trigger output datas, and save it (in memory & specs) for later use
# Complete node by node
- Follow workflow plan in related .md file to add one node to it at a time
- For each node you add, follow steps...
Notre rôle maintenant, c’est d’être son copilote : je regarde sa réflexion et sa progression en temps réel pour vérifier que c’est pertinent, MAIS SURTOUT pour le remettre dans le droit chemin quand il aura une hallucination !
🚨
L’agent aura forcément une hallucination à un moment ou un autre, c’est dans sa nature probabiliste !
C’est pour ça que je ne crois pas encore aux agents 100% autonomes : il faut un copilote humain qui maîtrise son sujet pour ne pas se faire arnaquer par un modèle qui affirme quelque chose de faux avec la plus grande conviction !
Prochaines itérations
Je vois déjà pas mal de choses à améliorer :
Les credentials : il faut ajouter un tool pour lister les différentes clés d’api disponible sur le n8n, pour que l’agent puisse choisir la plus pertinente (ou demander confirmation!)
Les Sticky Notes : je les utilises pour documenter mes Workflows, donc dans l’idéal des tools pour ajouter/modifier/supprimer des notes au bon endroit c’est un plus !
Les propriétés dynamiques : certaines propriétés ne sont pas fixes, par exemple pour créer une page dans ma bdd Notion, les propriétés dépendent de la base en question (et donc des credentials) : il faudra identifier l’appel API effectué et lui aussi en faire un tool
La phase de tests : pour l’instant si le workflow ne démarre pas par un Webhook ou un Execute Workflow, pas évident de pouvoir déclencher le tests depuis un MCP… à creuser donc pour rendre cette partie d’allers-retours n8n ↔ Windsurf plus fluide
Heureusement, j’ai déjà ma petite idée sur comment implémenter tous ces ajustements et j’aurais bouclé tout ça d’ici juillet pour le lancement de ma nouvelle formation Agent OS 👀
Si tu veux en savoir plus ou que tu as besoin d’un coup de main pour prendre en main et implémenter le process, réserve un créneau et parlons-en ;)
En tout cas, je vais mitrailler les démos de ce système sur plein de cas d’usage dans les prochaines semaines qui arrivent, stay tuned !