Retour au Blog

Serveur MCP n8n : générer des leads avec un agent IA

Ilyas Yıldırım
Ilyas Yıldırım
10 min de lecture

Un AI Agent n8n peut désormais mener seul une recherche de leads Google Maps. Vous décrivez la mission en langage courant, l'agent choisit la catégorie, le pays, la ville et la taille de la recherche, puis relit les lignes terminées. La connexion tient en un nœud et une credential.

C'est une forme d'automatisation différente de celle du guide du workflow en polling, où chaque paramètre est fixé avant l'exécution. Ici, les paramètres sont la décision de l'agent. C'est réellement utile pour une recherche ouverte, et réellement risqué pour tout ce qui dépense de l'argent. L'essentiel de cet article porte sur la seconde moitié de cette phrase.

Workflow figé ou agent ?

Les deux voies appellent la même API et coûtent les mêmes crédits. Elles diffèrent sur qui choisit les arguments.

Workflow figé (HTTP Request)Agent IA (MCP)
Qui choisit la catégorie et la villeVous, à la constructionLe modèle, à l'exécution
ReproductibilitéIdentique à chaque foisVariable selon la demande
Adapté àLots planifiés, une niche par campagneRecherche, questions ponctuelles, demandes en chat
Mode de panneMauvais résultat, facile à tracerRésultat plausible issu de la mauvaise recherche
Relecture nécessaireUne foisAprès chaque changement de prompt

Une règle qui tient à l'usage : si vous pouvez écrire la recherche avant l'exécution, écrivez-la. Passez à l'agent quand la demande ressemble à une phrase plutôt qu'à un formulaire.

Ce que le point de terminaison donne à l'agent

Le serveur MCP est une seule URL. n8n gère la poignée de main.

RéglageValeur
Point de terminaisonhttps://www.basedonb.com/api/mcp
NœudMCP Client Tool, version 1.2 ou plus récente
TransportHTTP Streamable
AuthentificationMCP OAuth2 avec Dynamic Client Registration, ou Bearer avec une clé API portant la portée mcp

Une fois connecté, l'agent peut appeler dix outils :

OutilCe que l'agent en fait
submit_scrapeLance une recherche. Le seul outil qui dépense des crédits.
get_scrape_statusVérifie si un job tourne encore
get_scrape_resultsLit les lignes terminées, par pages
list_scrapesRegarde les jobs récents avant d'en lancer un autre
cancel_scrapeArrête un job lancé par erreur
get_accountLit le plan et l'état du compte
get_creditsVérifie le solde avant de le dépenser
list_countriesRésout un pays vers son code ISO
list_statesTrouve le code GeoNames pointé, par exemple US.TX
list_citiesConfirme l'orthographe d'une ville que le modèle a pu deviner

Les trois derniers comptent plus qu'il n'y paraît. Un modèle à qui l'on demande des dentistes au Texas inventera volontiers le code de la région. Les outils de liste lui permettent de vérifier au lieu de deviner, et leur appel ne coûte rien.

La connexion

1. Créez la credential une seule fois. Dans n8n, ajoutez une credential MCP pour le point de terminaison ci-dessus. Avec MCP OAuth2, vous laissez Dynamic Client Registration activé et n8n conserve le refresh token rotatif : la credential se configure une fois puis se laisse tranquille. Avec Bearer, vous collez une clé API créée dans le tableau de bord sous API et Webhooks. Donnez-lui la portée mcp et rien d'autre.

2. Ajoutez le nœud MCP Client Tool et sélectionnez cette credential. Laissez le transport sur HTTP Streamable.

3. Rattachez le nœud au port outils de l'AI Agent, à côté du modèle de conversation que vous utilisez. L'agent découvre seul la liste des outils.

4. Restreignez la liste des outils. Le nœud permet de n'en exposer qu'une partie. Commencez par les outils en lecture seule, testez quelques prompts, et n'ajoutez submit_scrape qu'ensuite. Un agent incapable de dépenser des crédits est un objet sûr sur lequel itérer.

Les garde-fous vivent dans le prompt système

Les outils décrivent ce qui est possible. Aucun ne décrit ce qui est raisonnable pour votre compte : c'est au prompt de le faire. Un point de départ qui fonctionne :

Tu trouves des leads d'entreprises locales avec les outils
BasedOnBusiness.

Avant toute recherche :
- Appelle get_credits. Si le solde est inférieur au nombre de
  leads demandés, arrête-toi et annonce le solde.
- Confirme chaque nom de lieu avec list_countries, list_states
  ou list_cities. N'invente jamais un code pays ou region.

Pendant la recherche :
- Ne demande jamais plus de 50 leads par job, sauf si la
  personne indique explicitement un nombre plus grand.
- Traite une seule categorie a la fois.
- Les credits partent au lancement du job, pas au retour des
  resultats. Une annulation ne rembourse rien.

Jamais pris en charge :
- La recherche par code postal et la recherche par rayon autour
  d'une adresse n'existent pas. Dis-le. Ne substitue pas une
  ville voisine.

Une fois le job termine, annonce le nombre de lignes et
arrete-toi. Ne colle pas la liste complete.

Chaque ligne existe à cause d'une manière précise dont cela dérape. La ligne coûteuse est celle des crédits.

Trois limites que l'agent ne peut pas deviner

Les crédits sont débités au lancement, sur le nombre demandé. Demander 500 leads coûte 500 crédits au moment où le job démarre, que 500 lignes reviennent ou douze. Un filtre appliqué ensuite ne réduit pas la facture, une annulation non plus. C'est la phrase la plus importante à mettre dans le prompt, car un modèle sans signal de coût arrondit les nombres vers le haut pour paraître complet.

Les jobs ont des plafonds fermes. Un job contient au plus 10 termes de recherche. Un compte garde au plus 2 jobs ouverts à la fois, et l'ensemble des jobs ouverts ne peut viser plus de 5 000 leads. Un agent qui lance un job par ville sur une liste de vingt collectera des réponses 429 au lieu de leads. Dites-lui de traiter les lieux un par un et de consulter list_scrapes avant d'en lancer un nouveau.

La géographie a un vocabulaire. Le pays est un code ISO comme GB. La région est un code GeoNames pointé comme US.TX, qu'aucun modèle ne connaît de façon fiable. La ville est un nom à confirmer. Les codes postaux et les recherches par rayon ne sont pas pris en charge du tout. L'option réelle la plus proche est un polygone dessiné passé en custom_geo, que l'agent génère mal et qui se gère mieux depuis le tableau de bord.

Gardez les lignes hors du modèle

La meilleure raison d'utiliser MCP est que l'agent choisit la recherche. Ce n'est pas une raison de lui faire porter les données.

Les résultats arrivent par pages d'au plus 500 lignes. Les faire passer dans le modèle brûle des tokens, tronque à des endroits imprévisibles et produit un résumé là où vous vouliez un tableur. Laissez l'agent décider quoi chercher et annoncer l'identifiant du job et le nombre de lignes, puis reprenez cet identifiant dans un nœud HTTP Request ordinaire et écrivez les lignes vers Google Sheets, un CRM ou une base de données. Le guide du workflow en polling traite cette moitié en détail, pagination par curseur et écriture sans doublons comprises.

Si vous voulez que l'agent raisonne sur la liste plutôt que la stocker, posez-lui une question précise sur une page bornée, ne lui demandez pas la liste elle-même.

Ce qui ne doit toujours pas être la décision de l'agent

Tout ce qui a un coût ou une conséquence hors de n8n. Qui est contacté, ce que dit le message, si un numéro peut légalement être appelé. Le guide juridique et confidentialité pose les règles de base, et aucune ne s'assouplit parce qu'un modèle a choisi les termes de recherche.

Une autre chose mérite d'être retenue : les fiches Google Maps n'ont pas de champ e-mail. Un agent à qui l'on demande des adresses travaille donc à partir de ce que l'étape d'enrichissement a trouvé sur le site de chaque entreprise, pas à partir de Maps. Le guide d'extraction des e-mails explique où se situe ce plafond.

FAQ

Qu'est-ce qu'un serveur MCP dans n8n ?

MCP est un protocole qui permet à un modèle d'IA d'appeler des outils externes. Dans n8n, vous rattachez un nœud MCP Client Tool à un AI Agent, vous indiquez une URL de serveur, et l'agent obtient tous les outils publiés par ce serveur. Le point de terminaison BasedOnB publie dix outils pour chercher dans les données d'entreprises Google Maps et lire les résultats.

Comment relier BasedOnB à un AI Agent n8n ?

Ajoutez un nœud MCP Client Tool, réglez le point de terminaison sur https://www.basedonb.com/api/mcp, choisissez le transport HTTP Streamable, puis authentifiez-vous avec MCP OAuth2 ou avec une clé API Bearer portant la portée mcp. Rattachez le nœud au port outils de l'AI Agent. Rien d'autre n'est nécessaire.

Un agent IA coûte-t-il plus de crédits qu'un workflow figé ?

Le prix est identique, car les deux voies appellent la même API. Le risque diffère. Les crédits sont débités au lancement de la recherche, sur le nombre de leads demandés. Un agent qui choisit un grand nombre les dépense donc immédiatement. Plafonnez ce nombre dans le prompt système et faites vérifier le solde avec get_credits.

L'agent peut-il chercher par code postal ou par rayon autour d'une adresse ?

Non. La recherche accepte un pays, éventuellement une région et éventuellement une ville, ou un polygone dessiné. Il n'existe ni saisie de code postal ni saisie de rayon. Si on lui demande un rayon de cinq kilomètres, l'agent doit répondre que cette forme n'est pas prise en charge plutôt que de lui substituer une ville.

Faut-il utiliser MCP ou l'API REST dans n8n ?

Utilisez l'API REST quand la catégorie, le lieu et les filtres sont fixés et que le workflow doit tourner à l'identique à chaque fois. Utilisez MCP quand la demande arrive en langage courant et que les bons paramètres ne sont pas connus d'avance. Beaucoup d'équipes font tourner les deux : l'agent pour la recherche exploratoire, un workflow figé pour les lots de production.

Quels outils exposer à l'agent ?

Uniquement ce dont la tâche a besoin. Un agent de recherche qui lit des jobs existants a besoin des outils de statut, de résultats et de listes, et de rien qui dépense de l'argent. N'ajoutez submit_scrape qu'une fois le prompt doté d'un plafond ferme sur le nombre de leads et l'agent testé face à des demandes vagues.

L'agent peut-il traiter la totalité des résultats ?

Il ne devrait pas essayer. Les résultats arrivent par pages de 500 lignes, et une grande liste épuise le contexte du modèle et consomme des tokens sans bénéfice. Laissez l'agent décider quoi chercher, puis déplacez les lignes vers Sheets, un CRM ou une base de données avec des nœuds n8n ordinaires.

Commencez par une mission que vous pouvez vous permettre

Donnez à l'agent des outils en lecture seule, un modèle de conversation et une question dont vous connaissez déjà la réponse. Vérifiez qu'il résout le code de la région au lieu de l'inventer, et qu'il refuse une demande par code postal au lieu de chercher discrètement une ville.

Ajoutez ensuite submit_scrape avec un plafond dans le prompt et lancez un petit job. Un nouveau compte BasedOnB arrive avec 50 crédits d'export uniques et sans carte bancaire, ce qui suffit à observer toute la boucle avant le premier vrai lot. Si vous préférez ne pas construire l'agent du tout, le modèle n8n prêt à l'emploi fait la version figée de ce travail en une dizaine de minutes.