EZOUEU
Guides

Comment publier depuis Claude Code ou Cursor

Branchez Claude Code ou Cursor à EZOU.EU avec le MCP local et un jeton : l’agent publie le dossier dist, le scan passe, vous récupérez l’URL et le résultat.

Connecter mon agent à EZOU.EUVoir tous les articles →

Depuis Claude Code ou Cursor, EZOU.EU publie le dossier que l’agent vient de construire : vous posez un jeton hors du chat, l’agent envoie dist/, le scan tourne, vous récupérez une URL. Claude.ai et Claude Desktop, eux, se branchent avec une URL de connecteur — ce n’est pas le même geste.

Publier depuis l’éditeur

  1. Isoler le dossier à publier

    Demandez à l’agent de générer ou compiler dans dist/. Le dossier doit contenir index.html à sa racine et fonctionner sans serveur.

    projet/
    ├── src/
    ├── .env          # ne jamais publier
    ├── package.json
    └── dist/         # seul dossier publiable
        ├── index.html
        └── assets/

    Refusez les liens symboliques qui sortent du répertoire et les sources inutiles. La compilation peut intégrer une valeur absente des sources : contrôlez dist/ après le build.

  2. Configurer le MCP local et le jeton

    Dans Cursor ou Claude Code, le serveur MCP stdio lit les fichiers sur le disque et les envoie par URL pré-signée — les plafonds sont ceux de l’offre, pas 2 Mo.

    Posez EZOU_TOKEN dans l’environnement de l’agent, jamais dans le chat. Le jeton s’émet depuis l’onglet Jeton d’API du tableau de bord ; en émettre un nouveau révoque le précédent. Sans jeton, l’agent ne publie pas du tout : l’API répond 401 account_required.

    Pour brancher Claude.ai / Desktop, ne suivez pas cette étape : utilisez l’URL de connecteur.

  3. Demander l’URL, puis vérifier

    Une primitive claire : « publie dist/, accès non listé, 24 heures ». L’agent doit rendre l’URL, l’expiration, le mode d’accès, le résultat du scan et delete_with. Ouvrez le lien en fenêtre privée avant de le transférer.

1. Écrire la règle avant d’installer l’outil

Définissez ce que Claude Code, Cursor ou un autre agent a le droit de publier :

  • formats et taille maximum ;
  • accès public permis ou interdit ;
  • durée maximale ;
  • répertoires lisibles ;
  • catégories de secrets ou données bloquées ;
  • cas nécessitant une confirmation humaine ;
  • propriétaire et motif de publication.

L’agent ne doit pas inventer ces réponses. Les défauts prudents sont un dossier de build isolé, une URL non listée, 24 heures et aucun secret détecté. Une instruction dans le prompt guide l’agent ; une règle côté serveur l’empêche réellement de la contourner.

EZOU.EU applique les politiques de workspace max_expiry, allowed_access_modes et pii_mode au moment de la finalisation : les règles restent côté serveur, quel que soit le prompt utilisé par l’agent.

2. Construire dans un répertoire dédié

Le dossier à publier est dist/, déjà décrit plus haut. Contrôlez-le après le build : la compilation peut y coller une valeur absente des sources. Pas de liens symboliques hors du répertoire, pas de fichiers cachés inattendus.

3. API HTTP, MCP local, ou conversation Claude

Trois chemins, trois contextes.

L’API HTTP convient à un script ou une CI : les octets vont au stockage par URL pré-signée, sans plafond de 2 Mo.

# 1. Déclarer le site et les fichiers à envoyer.
curl -X POST https://api.ezou.eu/v1/sites \
  -H 'Authorization: Bearer <jeton>' \
  -H 'Content-Type: application/json' \
  -d '{"expiry":"24h","access":"private","files":[{"path":"index.html","size":272}]}'
{
  "site_id": "s_GQCRaNmkXtcX97Cm",
  "claim_token": "c_…",
  "upload": [
    { "path": "index.html", "url": "https://…?X-Amz-Signature=…" }
  ],
  "expiry": "24h",
  "delete_with": "DELETE https://api.ezou.eu/v1/sites/s_GQCRaNmkXtcX97Cm"
}
# 2. Transférer chaque fichier vers son URL pré-signée.
curl -T dist/index.html "$UPLOAD_URL"

# 3. Finaliser : le scan tourne, l'adresse est rendue.
curl -X POST https://api.ezou.eu/v1/sites/s_GQCRaNmkXtcX97Cm/finalize \
  -H 'Authorization: Bearer <jeton>'

Le connecteur MCP de Claude.ai / Desktop n’est pas ce chemin : le contenu voyage dans l’appel, plafonné à 2 Mo. La procédure complète est dans connecter Claude à EZOU.EU via MCP.

Le MCP stdio de Cursor et Claude Code, lui, lit le disque et utilise les mêmes plafonds que l’API.

Le transport importe moins que son contrat. Une primitive claire exprime « publier dist/, accès non listé, 24 heures » plutôt qu’un simple deploy(path) dont les effets restent implicites.

4. Inspecter avant exposition

Placez le contrôle avant l’obtention d’une URL servie. Recherchez notamment :

  1. tokens de fournisseurs cloud et d’API ;
  2. clés privées, mots de passe et fichiers .env ;
  3. IBAN, cartes, identifiants nationaux ou exports clients ;
  4. sourcemaps révélant du code ou des endpoints ;
  5. dépendances runtime non approuvées.

Le scan EZOU.EU s’exécute de manière synchrone à la finalisation. Une tentative bloquée n’obtient pas d’adresse : l’appel répond en erreur et nomme ce qui a été trouvé.

{
  "error": "pii_blocked",
  "hint": "Publication blocked: the content contains data that must not be published…",
  "retry": false,
  "details": {
    "blocked_types": ["technical_secret"],
    "findings": [
      {
        "type": "technical_secret",
        "severity": "block",
        "count": 1,
        "locations": [{ "file": "index.html", "offset": 134, "length": 20 }]
      }
    ]
  }
}

Le rapport donne le type, le fichier et la position — jamais la valeur détectée. Un agent peut donc le relayer dans une conversation sans y recopier le secret qu’il vient de produire. retry: false lui indique qu’insister ne sert à rien : c’est le contenu qu’il faut corriger.

Message d’erreur rouge : publication bloquée, un secret technique détecté dans index.html avec sa position.
Le même refus, côté interface : les deux chemins partagent le contrôle, pas seulement le stockage.

5. Proportionner l’autorisation au risque

Risque Exemple Décision recommandée
Faible Démo avec fausses données Publication temporaire automatique
Moyen Prototype client non annoncé Confirmation humaine et mot de passe
Élevé Données personnelles réelles Blocage ou environnement approuvé

Cette matrice réserve la friction aux cas où l’impact est réel. L’objectif n’est pas de remettre un humain dans chaque boucle : c’est de savoir lesquelles s’en passent.

6. Exiger une sortie structurée

Après publication, l’agent restitue immédiatement les champs utiles. Voici la réponse réelle d’une finalisation :

{
  "url": "https://sbgipveesfxmubde7aegbeebbn.ezou.eu",
  "site_id": "s_GQCRaNmkXtcX97Cm",
  "status": "live",
  "expires_at": "2026-08-23T00:06:54+02:00",
  "pii_scan": {
    "status": "clean",
    "findings": [],
    "files_scanned": 1,
    "bytes_scanned": 272,
    "duration_ms": 2,
    "mode": "warn"
  },
  "delete_with": "DELETE https://api.ezou.eu/v1/sites/s_GQCRaNmkXtcX97Cm"
}

Trois détails méritent l’attention. L’adresse par défaut porte 130 bits d’entropie : la valeur private de l’API désigne une URL non listée, pas une authentification du lecteur. delete_with est rendu à la création : un agent qui publie sait donc déjà comment défaire son geste. Et mode indique le régime du scan appliqué à cette publication — utile lorsqu’une politique d’équipe le durcit.

7. Suivre ce que les agents ont publié

Un jeton rattache chaque publication au compte. Les liens créés par un agent apparaissent dans le tableau de bord avec leur mode d’accès et leur échéance, au même endroit que ceux publiés depuis le navigateur — c’est la même liste, quelle que soit la porte d’entrée.

Tableau de bord EZOU.EU : compteurs de sites en ligne, prochaine expiration, consultations et stockage, puis la liste des publications avec leur accès et leur durée.
Deux publications d’agent : l’une non listée qui expire dans vingt-trois heures, l’autre protégée par mot de passe pour sept jours.

8. Faire d’EZOU.EU la sortie standard de vos agents

Quand le connecteur ou le jeton fait partie de l’environnement de l’agent, « publie ce dossier pendant 24 heures » devient une action structurée plutôt qu’une improvisation d’infrastructure. L’offre Business ajoute ensuite les plafonds de durée, les modes d’accès autorisés et le niveau DLP communs à toute l’équipe.

Branchez l’API dans votre CI, ou collez l’URL de connecteur dans votre client MCP. Dans les deux cas, le parcours contrôlé est le même.

Références utiles

Questions fréquentes

MCP rend-il automatiquement la publication par agent plus sûre ?

Non. MCP standardise l’appel d’outil. La sécurité dépend encore des permissions, du schéma, des confirmations, du scan et des règles imposées côté serveur.

Un agent peut-il publier sans validation humaine ?

Oui pour des cas faibles en risque si des limites techniques sont imposées. Un contenu sensible devrait déclencher un blocage, une approbation ou un environnement dédié.

Quelle durée choisir pour une preview générée par un agent ?

Commencez par 24 heures pour un test et sept jours pour une revue. Prolongez explicitement lorsque le besoin persiste au lieu de créer une URL permanente par défaut.

Faut-il donner à l’agent l’accès à tout le dépôt ?

Non. Le meilleur périmètre est un dossier de build isolé. Écartez l’historique Git, les fichiers .env, les fixtures et les données de développement.

Que se passe-t-il si l’agent publie sans jeton d’API ?

Elle échoue : l’API répond 401 account_required. La publication anonyme a existé puis a été retirée le 24 août 2026, et le jeton est désormais le seul chemin. Il rattache le site à votre compte dès sa création, donc la publication apparaît dans votre liste avec son mode d’accès et son échéance.

Continuer avec EZOU.EU