consentement cookies pour Cursor

Le consentement cookies depuis Cursor,
avec un diff que vous relisez

Une entrée dans .cursor/mcp.json donne à Cursor les outils : scanner, classer, configurer, publier, lire le journal de consentement. Chaque écriture est d’abord proposée puis confirmée, et chaque action atterrit dans la piste d’audit.

Chaque écriture depuis Cursor fait deux appels : une proposition avec un diff et le lint légal, puis une confirmation. L’écriture confirmée atterrit dans la piste d’audit avec le nom du jeton.

la règle

Ce que Cursor peut et ne peut pas faire

Cursor peut écrire l’app, mais il ne peut pas la rendre conforme sans outils, et une bannière cosmétique qu’il invente tout seul ne bloque rien.

La règle est la même partout dans l’UE et au Royaume-Uni : rien au-delà du strictement nécessaire ne peut être stocké sur l’appareil d’un visiteur ni lu depuis celui-ci avant son accord. C’est l’article 5(3) de la directive ePrivacy, et cet accord doit répondre à la définition du consentement du RGPD : libre, spécifique, éclairé et univoque, avec un refus aussi simple que l’acceptation. Le Royaume-Uni conserve la même règle dans PECR, avec d’étroites exemptions pour les statistiques à faible risque depuis le 5 février 2026. La Californie et les autres lois des États américains fonctionnent à l’inverse : pas d’opt-in, mais un lien d’opt-out et la prise en charge du signal Global Privacy Control.

Trois choses en découlent pour un site. Les scripts d’analyse, de publicité et de réseaux sociaux doivent attendre un choix. Ce choix doit être enregistré de façon à pouvoir être montré plus tard, car l’article 7(1) met la charge de la preuve sur vous. Et retirer son consentement doit être aussi simple que le donner, ce qui suppose un contrôle qui rouvre la bannière sur chaque page. Une bannière qui affiche deux boutons et charge quand même Google Analytics échoue au premier test, et c’est précisément ce manquement que les autorités sanctionnent, des décisions de la CNIL contre Google et SHEIN aux contrôles des autorités néerlandaise et belge.

comment ça marche

Comment Cursor travaille avec le serveur MCP

Cursor parle MCP, et le serveur CookieCrumbs lui répond. Une fois le serveur dans .cursor/mcp.json, l’agent voit une liste d’outils qui reflète le tableau de bord : lister et créer des sites, lancer et lire des scans, expliquer pourquoi un traceur a été classé ainsi, mettre à jour la config de la bannière, la pousser, publier, lire la synthèse du consentement, exporter les journaux. Il ne voit que les outils que votre jeton autorise ; un jeton en lecture seule ne montre jamais d’outil d’écriture.

Le plus intéressant, c’est le fonctionnement des écritures. Chaque outil qui modifie quelque chose prend un drapeau confirm. Le premier appel répond par un diff unifié de la config plus le lint légal (égale visibilité, contraste, les deux liens légaux) et ne change rien. Seul un second appel avec confirm: true écrit, et il atterrit dans la piste d’audit comme « via MCP » avec le nom du jeton. C’est ce qui permet de dire « configure le consentement aux cookies pour ce projet » et de lire le résultat au lieu de le surveiller.

Ce que l’agent ne peut pas faire, c’est placer la balise dans votre page depuis l’extérieur. Il vous remet le snippet pour votre framework et, si vous êtes dans le dépôt, modifie le fichier avec votre relecture comme tout autre changement. La vérification d’installation du tableau de bord prouve ensuite que le runtime s’exécute avant tout traceur, et Cursor peut lire ce résultat aussi.

mise en place

Mise en place depuis Cursor

Cinq étapes, et l’agent en fait trois.

  1. Créez un jeton

    Espace de travail → Développeurs → Créer un jeton, limité au site, avec les portées lecture, écriture de la bannière, publication et scan. Il expire et peut être révoqué.

  2. Ajoutez le serveur

    Une entrée JSON. Le serveur n’annonce que les outils que le jeton autorise.

    // .cursor/mcp.json
    {
      "mcpServers": {
        "cookiecrumbs": {
          "command": "npx",
          "args": ["-y", "@cookiecrumbs-eu/mcp"],
          "env": { "COOKIECRUMBS_TOKEN": "cc_live_…" }
        }
      }
    }
  3. Demandez la mise en place

    Des mots simples suffisent. L’agent propose chaque écriture sous forme de diff et la confirme lors d’un second appel.

    Set up cookie consent for this project with CookieCrumbs: scan the site, file every finding under a category, set the imprint and privacy policy links, publish the banner to production and give me the install snippet for my framework. Show me each change before you apply it.
  4. Installez le snippet qu’il vous remet

    La seule chose qu’un agent ne peut pas faire de l’extérieur : la balise va en premier dans le head de votre page. Déployez, et la vérification d’installation du tableau de bord le prouve.

  5. Restez honnête en CI

    Un scan à chaque déploiement fait échouer le build quand un nouveau traceur apparaît non classé.

    npx cookiecrumbs scan --wait --fail-on-unknown --fail-on-preconsent --sarif results.sarif

attention

Les erreurs que nous voyons avec Cursor

Chacune apparaît dans le premier scan comme un traceur déclenché avant le consentement.

  • Un jeton avec toutes les portéesDonnez-lui sites:read, banner:read, banner:write, banner:publish et scans:read plus scans:run. Rien d’autre, et limité au site.
  • Confirmer les diffs sans les lireLe premier appel est une proposition. Le lint qu’il contient vous dit ce qui bloquerait la publication.
  • Attendre que l’agent installe la baliseIl écrit le snippet et modifie le fichier dans votre dépôt ; le déploiement vous revient. La vérification d’installation le confirme.
  • Partager le jeton dans le dépôtGardez-le dans l’env de la config MCP ou dans le fichier d’identifiants écrit par la CLI, jamais commité.
  • Lancer l’agent sur la production sans scan préalableDemandez d’abord le scan ; c’est la vérité de terrain sur laquelle tout le reste est classé.

avant de publier

La checklist de conformité

Huit lignes. Le tableau de bord coche les deux dernières à partir de données réelles.

  • La balise est le premier script du headTout ce qui se trouve au-dessus peut déposer un cookie que le runtime ne peut pas reprendre.
  • Chaque script d’analyse, de publicité ou social attend sa catégorieSoit type="text/plain" avec une catégorie, soit l’hôte figure dans la carte de blocage issue du scan.
  • « Tout refuser » est sur le premier niveauMême taille, même poids que « Tout accepter ». Pas de « X » qui vaut consentement, pas de cases pré-cochées.
  • Les valeurs par défaut de Consent Mode sont sur « denied » avant le chargement de GoogleVérifiez les sept signaux dans Tag Assistant, consentement refusé.
  • Les liens vers les mentions légales et la politique de confidentialité sont renseignésLa publication est refusée tant qu’ils manquent ; le pied de la bannière y renvoie.
  • Un contrôle de retrait est accessible sur chaque pageLe contrôle permanent ou un lien « Gérer les cookies » dans votre pied de page.
  • Le premier scan complet a tourné et chaque fournisseur est classéLe verdict sur l’accueil indique, daté, ce qui s’est déclenché avant le consentement.
  • La vérification d’installation est passéeElle charge votre page comme un visiteur et confirme que la bannière s’est exécutée avant tout traceur.

ce que vous obtenez

Ce que comprend l’offre gratuite

Deux domaines, 100 sous-pages scannées par mois et par domaine, toutes les réglementations, la CLI, les SDK et le serveur MCP.

Un scanner qui lit la page rendue

Chaque page, dans chaque état de consentement, dans un vrai navigateur. Cookies, pixels, iframes et clés de stockage, avec la page et le script qui les ont posés. Rescanné selon un planning.

La déclaration cookies s’écrit d’elle-même à partir du résultat.

Une bannière qui bloque d’abord

Les balises restent inertes tant que leur catégorie n’est pas accordée. « Tout refuser » est aussi visible que « Tout accepter ». Sept mises en page, 25 langues, Consent Mode v2 et la bonne règle par région.

21 ko, un seul fichier, aucune requête tierce de son propre chef.

Une preuve que vous pouvez remettre

Chaque choix est stocké avec un horodatage, la version de la bannière et un hachage des textes affichés, chaîné à l’enregistrement précédent. Les exports sont signés. Hébergé à Francfort.

Article 7(1), dans l’offre gratuite.

vérification gratuite

Vérifiez ce que votre site charge en ce moment

Le HTML de la page d’accueil, confronté à la base de traceurs. Pas de compte, rien n’est stocké. Le scan complet du tableau de bord fait de même pour chaque page, dans un vrai navigateur.

questions

Des réponses claires

Cursor peut-il configurer le consentement aux cookies tout seul ?
Avec le serveur MCP de CookieCrumbs, oui : il peut scanner, classer, configurer et publier. Chaque écriture est un diff que vous approuvez lors d’un second appel, et le snippet d’installation est la seule étape qui nécessite encore votre déploiement.
Que l’agent ne peut-il pas faire ?
Il ne peut pas modifier la facturation ni les paramètres d’équipe, son jeton peut être limité à un seul site, et il ne peut rien écrire sans portée d’écriture. Chaque action figure dans la piste d’audit avec le nom du jeton.
Quels autres clients fonctionnent ?
Tout client MCP qui parle stdio : Claude Code, Windsurf, Zed et VS Code sont documentés aux côtés de Cursor.
L’agent voit-il les preuves de consentement ?
Il peut lire des synthèses agrégées. Les enregistrements individuels ne sont jamais diffusés dans une conversation ; les exports produisent un fichier signé et un lien.
Le serveur MCP est-il dans l’offre gratuite ?
Oui, avec la CLI et les SDK.
Comment révoquer l’accès ?
Révoquez le jeton sous Développeurs. Le serveur cesse de fonctionner au prochain appel.

étape suivante

Laissez l’agent finir le travail

Offre gratuite, deux domaines, pas de carte. Le serveur MCP est inclus dans toutes les offres.