devtoolAI

[𝗧𝗨𝗧𝗢𝗥𝗜𝗘𝗟] 𝗖𝗼𝗻𝗻𝗲𝗰𝘁𝗲𝗿 𝗖𝗹𝗮𝘂𝗱𝗲 𝗗𝗲𝘀𝗸𝘁𝗼𝗽 à 𝗻𝟴𝗻 (𝗦𝗲𝗹𝗳-𝗵𝗼𝘀𝘁𝗲𝗱) 𝘃𝗶𝗮 𝗠𝗖𝗣 🛠️

[𝗧𝗨𝗧𝗢𝗥𝗜𝗘𝗟] 𝗖𝗼𝗻𝗻𝗲𝗰𝘁𝗲𝗿 𝗖𝗹𝗮𝘂𝗱𝗲 𝗗𝗲𝘀𝗸𝘁𝗼𝗽 à 𝗻𝟴𝗻 (𝗦𝗲𝗹𝗳-𝗵𝗼𝘀𝘁𝗲𝗱) 𝘃𝗶𝗮 𝗠𝗖𝗣 🛠️

Vous hébergez n8n sur un Raspberry Pi et souhaitez le piloter directement depuis Claude Desktop ? Découvrez comment configurer le nouveau protocole MCP (Model Context Protocol) en toute sécurité derrière un Tunnel Cloudflare. Ce guide pas-à-pas vous aide à contourner les pièges techniques (cache Docker, blocage Zero Trust, WAF) pour créer un pont sécurisé entre votre IA et vos automatisations, le tout sans ouvrir un seul port sur votre box internet.

Tutoriel : Connecter Claude Desktop à votre N8N sur Raspberry Pi (via Cloudflare Tunnel)

Vous rêvez de demander à Claude : "Analyse mes derniers workflows et dis-moi s'il y a des erreurs" ? C'est désormais possible grâce au Model Context Protocol (MCP).

Cependant, quand on héberge soi-même n8n (Self-hosted) sur un Raspberry Pi à la maison, le rendre accessible à une IA dans le Cloud de manière sécurisée est un défi. Ce guide vous explique comment créer ce pont sécurisé en utilisant Cloudflare Tunnel, sans jamais ouvrir de port sur votre box internet.

Claude Desktop se connectant au Raspberry Pi via un Tunnel sécurisé.

Pourquoi Cloudflare Tunnel ?

Plutôt que d'ouvrir le port 5678 sur votre routeur (ce qui est risqué), nous utilisons un logiciel léger (cloudflared) sur le Raspberry Pi. Il crée un lien sortant chiffré vers Cloudflare. Résultat :

  • Aucun port ouvert chez vous.
  • Votre n8n a une URL HTTPS propre (ex : n8n.votre-domaine.com).
  • Le pare-feu (WAF) de Cloudflare bloque les attaques avant qu'elles n'atteignent votre salon.

Étape 1 : Préparer n8n (Attention au piège du cache !)

Le support MCP est arrivé avec la version 2.1 de n8n. Si vous utilisez Docker, attention : Docker aime "mettre en cache" les installations. Il faut forcer la mise à jour.

1. Activer le MCP dans Docker Compose

Ajoutez cette variable d'environnement dans votre fichier docker-compose.yml (attention aux espaces !) :

docker-compose.yml
1environment:
2 - N8N_MCP_ENABLED=true

2. Forcer la reconstruction

Lancez ces commandes pour obliger Docker à télécharger la vraie dernière version contenant le serveur MCP :

zsh
1docker compose build --no-cache n8n
2docker compose up -d

Le build peut prendre jusqu'à une dizaine de minutes ! Astuce : Vérifiez les logs avec docker compose logs n8n. Si vous ne voyez pas la ligne "MCP server started", c'est que la mise à jour n'a pas pris.

Étape 2 : Configurer la sécurité Cloudflare (Zero Trust)

Si vous protégez votre n8n avec une page de login Cloudflare (Zero Trust) comme je l'ai fait, Claude sera bloqué. Il faut lui donner un laisser-passer.

  1. Allez dans le dashboard Zero Trust > Access > Applications.
  2. Dans votre application n8n, ajoutez une Policy.
  3. Action : Choisissez Bypass (Contourner).
  4. Règle : Sélectionnez Path starts with et entrez /mcp-server/.

Pourquoi ? L'URL /mcp-server/ est le point d'entrée standard que n8n utilise pour dialoguer avec les IA.

Aussi, si vous avez d'autres règles WAF CloudFlare, n'oubliez pas de whitelister l'URI Path qui commence par "/mcp/".

Étape 3 : Configurer Claude Desktop (Sur votre Mac/PC)

Nous allons utiliser supergateway via npx pour gérer la connexion. C'est la méthode recommandée pour gérer l'authentification.

  1. Dans n8n, allez dans Settings > Instance-Level MCP, puis en haut à droite cliquez sur "Connect" et allez sur l'onglet "Access Token" afin de générer votre clé API.
  2. Ouvrez le fichier de config de Claude (sur Mac) :
    ~/Library/Application Support/Claude/claude_desktop_config.json
  3. Collez le code JSON fourni (en remplaçant la clé générée juste au-dessus) :

Interface n8n pour configurer le MCP.

claude_desktop_config.json
1{
2 "mcpServers": {
3 "n8n-mcp": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "supergateway",
8 "--streamableHttp",
9 "https://n8n.votre-domaine.com/mcp-server/http",
10 "--header",
11 "Authorization: Bearer VOTRE_CLE_API_COMPLETE_ICI"
12 ]
13 }
14 }
15}

Important : Notez l'utilisation de /mcp-server/http qui est plus stable que le SSE classique pour traverser les protections Cloudflare.

Étape 4 : Le test de vérité (Curl)

Avant de lancer Claude, testons si le tunnel fonctionne. Ouvrez votre terminal et lancez cette commande :

zsh
1curl -v -X POST https://n8n.votre-domaine.com/mcp-server/http \
2 -H "Authorization: Bearer VOTRE_CLE_API" \
3 -H "Content-Type: application/json" \
4 -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}},"id":1}'
  • Si vous recevez du HTML (<!DOCTYPE html>) : Cloudflare bloque encore (revérifiez l'étape 2).
  • Si vous recevez un JSON avec "serverInfo" : C'est gagné ! 🎉

🔒 Note sur la sécurité

Cette configuration est sécurisée car :

  1. Tout passe par HTTPS via le Tunnel.
  2. Même si on contourne la page de login Cloudflare, l'accès reste protégé par le Token n8n. Sans ce token, impossible d'entrer.
  3. N'oubliez pas de créer une clé API dédiée que vous pourrez révoquer si besoin.


Si vous m'avez suivi jusqu'ici, bravo ! En tout cas, je reste disponible si vous avez besoin d'aide.

Laurent