GroupeZ Docs
Configuration

Configuration Principale

Fichier de configuration principal (config.yml) pour zEssentials

Cette page documente chaque option du fichier principal config.yml situé dans plugins/zEssentials/config.yml. Ce fichier contrôle le comportement global du plugin : stockage, cooldowns, restrictions, couleurs des messages, paramètres de vol, etc. Les paramètres propres à chaque module se trouvent dans plugins/zEssentials/modules/<module>/config.yml.


Debug

Active ou désactive le mode debug. Lorsqu'il est activé, le plugin affiche des logs supplémentaires dans la console, ce qui est utile pour diagnostiquer un problème.

enable-debug: false
OptionTypeDéfautDescription
enable-debugBooleanfalseActive les logs de debug détaillés dans la console du serveur

Si vous demandez de l'aide, activez le mode debug et envoyez les logs. Ne le laissez activé que pendant le diagnostic : la sortie de debug peut être très verbeuse.


Stockage

Configure la façon dont zEssentials stocke les données, le type de serveur et les informations de connexion à la base de données et à Redis. Consultez la page Base de données pour le schéma complet.

Type de stockage

storage-type: SQLITE
ValeurDescription
SQLITEStockage local dans un fichier (plugins/zEssentials/database.db). Uniquement prévu pour installer et tester le plugin, certaines fonctionnalités sont limitées.
MYSQLBase MySQL via un pool de connexions HikariCP.
MARIADBBase MariaDB via un pool de connexions HikariCP, avec le driver MariaDB.
HIKARICPBase MySQL/MariaDB via un pool de connexions HikariCP. Recommandé en production.
JSONUn fichier JSON par joueur dans plugins/zEssentials/users/. Toutes les fonctionnalités ne sont pas supportées.

Utilisez MYSQL, MARIADB ou HIKARICP en production. SQLite sert uniquement à installer le plugin et à faire des tests, et le stockage JSON ne supporte pas toutes les fonctionnalités (coffres, boîte aux lettres d'items, historique du chat, baltop...).

Type de serveur

server-type: PAPER
ValeurDescription
PAPERMode par défaut. Toutes les données sont gérées localement.
REDISMode multi-serveurs avec synchronisation via le pub/sub Redis. Actuellement en développement : dans la version actuelle, le serveur Redis n'est pas démarré et cette valeur se comporte comme PAPER.

Configuration de la base de données

Utilisée lorsque storage-type vaut MYSQL, MARIADB ou HIKARICP.

database-configuration:
  table-prefix: "zessentials_"
  host: 192.168.10.10
  port: 3306
  user: homestead
  password: 'secret'
  database: zessentials
  debug: false
OptionTypeDéfautDescription
table-prefixStringzessentials_Préfixe appliqué à toutes les tables. Utile si la base est partagée avec d'autres plugins. Il est conseillé de ne pas le modifier.
hostString192.168.10.10Nom d'hôte ou adresse IP du serveur de base de données.
portInteger3306Port d'écoute du serveur de base de données.
userStringhomesteadNom d'utilisateur de la base de données.
passwordStringsecretMot de passe de la base de données.
databaseStringzessentialsNom de la base de données à utiliser. Elle doit déjà exister.
debugBooleanfalseAffiche les requêtes SQL exécutées dans la console.

Changez les identifiants par défaut avant de passer en production. Les valeurs par défaut (homestead / secret) sont des exemples et ne doivent pas être utilisées sur un serveur en ligne.

Sauvegarde par lots

batch-auto-save: 10000
OptionTypeDéfautDescription
batch-auto-saveLong10000Intervalle en millisecondes entre deux écritures groupées en base. Les logs (commandes, messages du chat, messages privés, transactions économiques) et les mises à jour du temps de vol sont mis en file d'attente puis envoyés en un seul lot à cet intervalle.

Configuration Redis

Utilisée par le type de serveur REDIS.

redis-configuration:
  host: "192.168.10.10"
  port: 6379
  password: "123456a"
OptionTypeDéfautDescription
hostString192.168.10.10Nom d'hôte ou adresse IP du serveur Redis.
portInteger6379Port d'écoute du serveur Redis.
passwordString123456aMot de passe Redis.

Commandes

Commandes forcées

Les commandes listées ici restent utilisables même si leur module est désactivé. Indiquez le nom principal de la commande, sans le /.

force-commands:
  # - rtp
  # - home
OptionTypeDéfautDescription
force-commandsListe de String(vide)Noms principaux des commandes qui restent disponibles quand leur module est désactivé.

Contournement des cooldowns

enable-cooldown-bypass: true
OptionTypeDéfautDescription
enable-cooldown-bypassBooleantrueSi activé, les joueurs ayant la permission essentials.bypass.cooldown ignorent les cooldowns définis dans command-cooldowns.

Cooldowns des commandes

Définit un cooldown (en secondes) par commande, avec des valeurs différentes selon les permissions. Le cooldown est appliqué après l'exécution réussie de la commande.

  • command : le nom principal de la commande (sans le /).
  • cooldown : le cooldown de base en secondes.
  • permissions : une liste de cooldowns par permission. Si le joueur possède plusieurs permissions correspondantes, le cooldown le plus bas est utilisé. Un cooldown de 0 signifie aucun cooldown.
command-cooldowns:
  - command: heal
    cooldown: 60
    permissions:
      - permission: "essentials.cooldown.heal.vip"
        cooldown: 40
      - permission: "essentials.cooldown.heal.staff"
        cooldown: 20
  - command: tpr
    cooldown: 300
    permissions:
      - permission: "essentials.cooldown.rtp.vip"
        cooldown: 120
      - permission: "essentials.cooldown.rtp.staff"
        cooldown: 0

Exemple détaillé pour heal :

Type de joueurPermissionCooldown
Par défaut(aucune)60 secondes
VIPessentials.cooldown.heal.vip40 secondes
Staffessentials.cooldown.heal.staff20 secondes

Exemple détaillé pour tpr :

Type de joueurPermissionCooldown
Par défaut(aucune)300 secondes (5 minutes)
VIPessentials.cooldown.rtp.vip120 secondes (2 minutes)
Staffessentials.cooldown.rtp.staff0 seconde (aucun cooldown)

Restrictions de commandes

Désactive des commandes dans certains mondes ou à l'intérieur de zones cuboïdes. Les joueurs ayant la permission de contournement ignorent la restriction.

command-restrictions:
  - commands:
      - "spawn"
    bypass-permission: "essentials.bypass.commandrestriction.spawn"
    worlds:
      - "world_nether"
    cuboids:
      - "world,0,0,0,100,255,100"
OptionTypeDescription
commandsListe de StringLes commandes à restreindre (sans le /). Le label tapé par le joueur est comparé, ajoutez donc aussi les alias si nécessaire.
bypass-permissionStringPermission permettant d'ignorer cette restriction.
worldsListe de StringMondes dans lesquels les commandes sont bloquées.
cuboidsListe de StringZones cuboïdes dans lesquelles les commandes sont bloquées. Format : world,x1,y1,z1,x2,y2,z2

Le cuboïde est défini par deux coins opposés ; tout joueur se trouvant à l'intérieur ne peut pas utiliser les commandes listées. Vous pouvez définir plusieurs restrictions.

Anti-spam des commandes

Cooldown progressif empêchant les joueurs de spammer des commandes. Chaque entrée signifie : « si le joueur a exécuté messages commandes durant les cooldown dernières millisecondes, la commande suivante est bloquée ».

cooldowns:
  - messages: 2
    cooldown: 1500 # max 1.5s
  - messages: 4
    cooldown: 5000 # max 5s
  - messages: 8
    cooldown: 10000 # max 10s
OptionTypeDescription
messagesIntegerNombre de commandes exécutées.
cooldownLongFenêtre de temps en millisecondes.

Pour désactiver ce système, utilisez cooldowns: []. Les joueurs ayant la permission essentials.cooldown.command.bypass ne sont pas concernés.

Log des commandes

enable-command-log: true
OptionTypeDéfautDescription
enable-command-logBooleantrueEnregistre chaque commande exécutée par les joueurs dans la table commands. Fonctionne uniquement avec un stockage SQL.

Items

Poubelle

trash-size: 27
OptionTypeDéfautDescription
trash-sizeInteger27Taille de l'inventaire /trash. Doit valoir 9, 18, 27, 36, 45 ou 54.

Matériaux compactables

Matériaux pouvant être compactés avec les commandes /compact (/condense) et /compactall (/condenseall). Chaque entrée associe un matériau (from) à sa forme compactée (to).

compact-materials:
  - from: COAL
    to: COAL_BLOCK
  - from: REDSTONE
    to: REDSTONE_BLOCK
  - from: LAPIS_LAZULI
    to: LAPIS_BLOCK
  - from: IRON_INGOT
    to: IRON_BLOCK
  - from: GOLD_INGOT
    to: GOLD_BLOCK
  - from: IRON_NUGGET
    to: IRON_INGOT
  - from: GOLD_NUGGET
    to: GOLD_INGOT
  - from: DIAMOND
    to: DIAMOND_BLOCK
  - from: EMERALD
    to: EMERALD_BLOCK
  - from: COPPER_INGOT
    to: COPPER_BLOCK
  - from: NETHERITE_INGOT
    to: NETHERITE_BLOCK

Les noms doivent correspondre à des Material Bukkit valides.

Matériaux cuisables

Matériaux pouvant être cuits instantanément avec la commande /furnace.

smeltable-materials:
  - from: RAW_IRON
    to: IRON_INGOT
  - from: RAW_COPPER
    to: COPPER_INGOT
  - from: RAW_GOLD
    to: GOLD_INGOT
  - from: SAND
    to: GLASS
  - from: CLAY_BALL
    to: BRICK
  - from: ANCIENT_DEBRIS
    to: NETHERITE_SCRAP
  - from: WET_SPONGE
    to: SPONGE
  - from: CACTUS
    to: GREEN_DYE
  - from: KELP
    to: DRIED_KELP

Couleurs des messages

Clés de couleur remplacées dans tous les messages du plugin. Vous pouvez ajouter vos propres clés.

message-colors:
  - key: "<primary>"
    color: "#24d65d"
  - key: "<secondary>"
    color: "#656665"
  - key: "<error>"
    color: "#ff0000"
  - key: "<success>"
    color: "#00ff00"
CléDéfautDescription
<primary>#24d65dCouleur principale pour les éléments mis en avant et les valeurs importantes.
<secondary>#656665Couleur secondaire pour le texte moins important.
<error>#ff0000Couleur des messages d'erreur.
<success>#00ff00Couleur des confirmations de succès.

Placeholders

Valeur vide

placeholder-empty: "Empty"
OptionTypeDéfautDescription
placeholder-emptyStringEmptyValeur renvoyée par les placeholders lorsqu'aucune donnée n'est disponible.

Remplacement de placeholders

Remplace le résultat d'un placeholder PlaceholderAPI par une autre valeur, par exemple pour ajouter des couleurs. Utilisez le placeholder %zessentials_replace_<placeholder>% pour appliquer la configuration (par exemple %zessentials_replace_player_ping%).

replace-placeholders:
  - placeholder: 'player_ping' # Placeholder à remplacer, sans %
    default: '&c%result%' # Utilisé si aucune condition ne correspond
    replaces:
      - type: STRING
        equalsTo: 0
        value: '&aWHOA YOU DONT HAVE PING WTF YOU ARE IN A DATACENTER ?'
      - type: NUMBER
        max: 50
        value: '&a%result%'
      - type: NUMBER
        max: 99
        value: '&2%result%'
      - type: NUMBER
        max: 199
        value: '&e%result%'
      - type: NUMBER
        max: 299
        value: '&c%result%'
OptionDescription
placeholderLe placeholder PlaceholderAPI à remplacer, sans les %.
defaultValeur utilisée lorsqu'aucune condition ne correspond.
replacesListe de conditions, vérifiées dans l'ordre. La première condition qui correspond est utilisée.

Types de conditions :

TypePropriétésCorrespond lorsque
STRINGequalsTo, valueLe résultat du placeholder est égal (sans tenir compte de la casse) à equalsTo.
NUMBERmax, valueLe résultat du placeholder est un nombre inférieur ou égal à max.

Dans value et default, %result% est remplacé par la valeur d'origine du placeholder.

Mots aléatoires

Mots renvoyés par le placeholder %zessentials_random_word% (un mot n'est jamais donné deux fois tant que la liste n'a pas été réinitialisée avec /zessentials clear-random-word).

random-words:
  - "enderdragon"
  - "netherite"
  - "crafting"
  - "survival"
  - "adventure"
  - "exploration"
  - "obsidian"
  - "diamond"
  - "goldmine"
  - "enderchest"

Near

near-distance: 50.0

near-direction-replacements:
  forward: "↑"
  forward-right: "↗"
  right: "→"
  back-right: "↘"
  back: "↓"
  back-left: "↙"
  left: "←"
  forward-left: "↖"

near-permissions:
  - permission: "essentials.near.vip"
    distance: 100.0
  - permission: "essentials.near.staff"
    distance: 200.0
OptionTypeDéfautDescription
near-distanceDouble50.0Rayon par défaut (en blocs) de la commande /near.
near-direction-replacementsSection(flèches)Flèches utilisées pour afficher la direction de chaque joueur dans /near.
near-permissionsListe(voir ci-dessus)Rayon selon la permission. La première permission que possède le joueur est utilisée.

Temps

day-time: 1000
night-time: 13000
time-smooth-change: false
OptionTypeDéfautDescription
day-timeLong1000Heure du monde définie par la commande /day.
night-timeLong13000Heure du monde définie par la commande /night.
time-smooth-changeBooleanfalseAnime le changement d'heure de /day et /night au lieu d'un changement instantané.

Paramètres de vol

temp-fly-task: false

disable-fly-world:
  - world_the_end

enable-fly-return: false

fly-task-announce:
  - 7200 # 2 heures
  - 3600 # 1 heure
  - 1800 # 30 minutes
  - 900 # 15 minutes
  - 300 # 5 minutes
  - 120 # 2 minutes
  - 60 # 1 minute
  - 30
  - 10
  - 5
  - 4
  - 3
  - 2
  - 1
OptionTypeDéfautDescription
temp-fly-taskBooleanfalseActive la tâche (exécutée chaque seconde) qui décrémente le temps de vol temporaire des joueurs (/fly add, /fly set...).
disable-fly-worldListe de String[world_the_end]Mondes dans lesquels le vol est désactivé. Contournement : essentials.fly.bypass.world.
enable-fly-returnBooleanfalseRéactive le vol lorsque le joueur revient dans un monde où il est autorisé.
fly-task-announceListe d'Integer(voir ci-dessus)Temps de vol restants (en secondes) auxquels le joueur est prévenu.

Back

disable-back-world:
  - world_the_end
OptionTypeDéfautDescription
disable-back-worldListe de String[world_the_end]Mondes dans lesquels /back est désactivé : la dernière position n'y est pas enregistrée.

Joueurs

Noms des joueurs hors ligne

enable-offline-player-names: true
OptionTypeDéfautDescription
enable-offline-player-namesBooleantrueAffiche les noms des joueurs en ligne et hors ligne dans l'autocomplétion des commandes.

UUID blacklistés

Les joueurs dont l'UUID est listé ici ne peuvent pas se connecter au serveur (ils sont expulsés à la connexion avec le message « Unable to verify your connection, please try again. »).

blacklist-uuids:
  - "00000000-0000-0000-0000-000000000000"

Options par défaut

Valeurs des options appliquées aux nouveaux joueurs lors de leur première connexion.

default-options:
  - option: WORLDEDIT_INVENTORY
    value: true
OptionDescription
SOCIAL_SPYEspionner les messages privés entre joueurs.
GODRend le joueur invincible.
BANLe joueur est banni.
MUTELe joueur est muet.
INVSEEPermet de consulter l'inventaire des autres joueurs.
VANISHRend le joueur invisible.
PRIVATE_MESSAGE_DISABLEDésactive les messages privés.
PAY_DISABLEDésactive la réception de paiements.
POWER_TOOLS_DISABLEDésactive les power tools.
DISABLE_SCOREBOARDDésactive le scoreboard.
NIGHT_VISIONVision nocturne permanente.
PHANTOMS_DISABLEDésactive l'apparition des phantoms.
WORLDEDIT_INVENTORYUtilise l'inventaire du joueur pour WorldEdit.
WORLDEDIT_BOSSBAR_DISABLEDésactive la boss bar de WorldEdit.
TELEPORT_REQUEST_DISABLEDésactive la réception des demandes de téléportation (/tpa).
TELEPORT_HERE_REQUEST_DISABLEDésactive la réception des demandes /tpahere.
DEATH_MESSAGE_DISABLEMasque les messages de mort.
PAY_NOTIFICATION_DISABLEDésactive les notifications de paiement.
PLAYER_PING_SOUND_DISABLEDésactive le son de ping du chat.

Téléportation à la première connexion

enable-first-join-teleport: false
OptionTypeDéfautDescription
enable-first-join-teleportBooleanfalseTéléporte les joueurs lors de leur première connexion au premier spawn configuré, ou au spawn si aucun premier spawn n'est défini, ou à une position aléatoire si enable-first-join-rtp est activé dans modules/teleportation/config.yml. Désactivé par défaut depuis la 1.0.3.9.

Si vous utilisiez le premier spawn avant la 1.0.3.9, passez cette option à true pour conserver l'ancien comportement.


Format de date

global-date-format: "yyyy-MM-dd HH:mm:ss"
OptionTypeDéfautDescription
global-date-formatStringyyyy-MM-dd HH:mm:ssFormat de date utilisé lorsqu'aucun autre format n'est disponible. Suit les motifs de Java SimpleDateFormat.

Formats courants :

MotifDescriptionExemple
yyyy-MM-dd HH:mm:ssStyle ISO 86012026-02-04 14:30:00
dd/MM/yyyy HH:mm:ssJour/Mois/Année, format 24 h04/02/2026 14:30:00
MM/dd/yyyy hh:mm aFormat américain avec AM/PM02/04/2026 02:30 PM

Statistiques

Depuis la 1.0.3.9, zEssentials envoie des statistiques d'utilisation et des erreurs anonymes à FastStats. Ce n'est pas configuré dans config.yml : FastStats crée son propre fichier de configuration dans le dossier faststats de votre répertoire plugins/, dans lequel vous pouvez le désactiver.


Configuration par défaut complète

Voici le config.yml complet par défaut :

# Displays debug items in the console, if you request support, please enable debug and send logs with debugs
enable-debug: false

# Storage:
# SQLITE - For the launch of the plugin only.
# MYSQL - Allows creating a simple connection to the database, only for small servers.
# HIKARICP - HikariCP is a fast and lightweight JDBC connection pool.
storage-type: SQLITE

# PAPER - Default type
# REDIS - Allows connecting several servers (currently in development)
server-type: PAPER

database-configuration:
  table-prefix: "zessentials_"
  host: 192.168.10.10
  port: 3306
  user: homestead
  password: 'secret'
  database: zessentials
  debug: false

# Sends requests available in batch to the database (history of messages, commands, etc.)
batch-auto-save: 10000

redis-configuration:
  host: "192.168.10.10"
  port: 6379
  password: "123456a"

# Commands that will work even if their module is disabled
force-commands:
  # - rtp
  # - home

enable-cooldown-bypass: true

command-cooldowns:
  - command: heal
    cooldown: 60
    permissions:
      - permission: "essentials.cooldown.heal.vip"
        cooldown: 40
      - permission: "essentials.cooldown.heal.staff"
        cooldown: 20
  - command: tpr
    cooldown: 300
    permissions:
      - permission: "essentials.cooldown.rtp.vip"
        cooldown: 120
      - permission: "essentials.cooldown.rtp.staff"
        cooldown: 0

command-restrictions:
  - commands:
      - "spawn"
    bypass-permission: "essentials.bypass.commandrestriction.spawn"
    worlds:
      - "world_nether"
    cuboids:
      - "world,0,0,0,100,255,100"

trash-size: 27

compact-materials:
  - from: COAL
    to: COAL_BLOCK
  - from: REDSTONE
    to: REDSTONE_BLOCK
  - from: LAPIS_LAZULI
    to: LAPIS_BLOCK
  - from: IRON_INGOT
    to: IRON_BLOCK
  - from: GOLD_INGOT
    to: GOLD_BLOCK
  - from: IRON_NUGGET
    to: IRON_INGOT
  - from: GOLD_NUGGET
    to: GOLD_INGOT
  - from: DIAMOND
    to: DIAMOND_BLOCK
  - from: EMERALD
    to: EMERALD_BLOCK
  - from: COPPER_INGOT
    to: COPPER_BLOCK
  - from: NETHERITE_INGOT
    to: NETHERITE_BLOCK

message-colors:
  - key: "<primary>"
    color: "#24d65d"
  - key: "<secondary>"
    color: "#656665"
  - key: "<error>"
    color: "#ff0000"
  - key: "<success>"
    color: "#00ff00"

cooldowns:
  - messages: 2
    cooldown: 1500 # max 1.5s
  - messages: 4
    cooldown: 5000 # max 5s
  - messages: 8
    cooldown: 10000 # max 10s

enable-command-log: true

smeltable-materials:
  - from: RAW_IRON
    to: IRON_INGOT
  - from: RAW_COPPER
    to: COPPER_INGOT
  - from: RAW_GOLD
    to: GOLD_INGOT
  - from: SAND
    to: GLASS
  - from: CLAY_BALL
    to: BRICK
  - from: ANCIENT_DEBRIS
    to: NETHERITE_SCRAP
  - from: WET_SPONGE
    to: SPONGE
  - from: CACTUS
    to: GREEN_DYE
  - from: KELP
    to: DRIED_KELP

placeholder-empty: "Empty"

near-distance: 50.0

near-direction-replacements:
  forward: "↑"
  forward-right: "↗"
  right: "→"
  back-right: "↘"
  back: "↓"
  back-left: "↙"
  left: "←"
  forward-left: "↖"

day-time: 1000
night-time: 13000
time-smooth-change: false

near-permissions:
  - permission: "essentials.near.vip"
    distance: 100.0
  - permission: "essentials.near.staff"
    distance: 200.0

global-date-format: "yyyy-MM-dd HH:mm:ss"

replace-placeholders:
  - placeholder: 'player_ping'
    default: '&c%result%'
    replaces:
      - type: STRING
        equalsTo: 0
        value: '&aWHOA YOU DONT HAVE PING WTF YOU ARE IN A DATACENTER ?'
      - type: NUMBER
        max: 50
        value: '&a%result%'
      - type: NUMBER
        max: 99
        value: '&2%result%'
      - type: NUMBER
        max: 199
        value: '&e%result%'
      - type: NUMBER
        max: 299
        value: '&c%result%'

temp-fly-task: false

disable-fly-world:
  - world_the_end

enable-fly-return: false

fly-task-announce:
  - 7200
  - 3600
  - 1800
  - 900
  - 300
  - 120
  - 60
  - 30
  - 10
  - 5
  - 4
  - 3
  - 2
  - 1

disable-back-world:
  - world_the_end

random-words:
  - "enderdragon"
  - "netherite"
  - "crafting"
  - "survival"
  - "adventure"
  - "exploration"
  - "obsidian"
  - "diamond"
  - "goldmine"
  - "enderchest"

enable-offline-player-names: true

blacklist-uuids:
  - "00000000-0000-0000-0000-000000000000"

default-options:
  - option: WORLDEDIT_INVENTORY
    value: true

# Teleports players on their first join to the configured first-spawn, spawn, or random teleport location
enable-first-join-teleport: false

Sur cette page

GroupeZ MCP

La documentation dans ton IA

Le MCP permet à ton IA de chercher dans la documentation GroupeZ et de lire les exemples à jour pour t’aider à configurer tes plugins.

Lecture seule · Sans clé API côté documentation

1. Copie l’adresse du serveur

Transport : HTTP (Streamable HTTP). Authentification : aucune. Ton outil utilise son propre modèle et ses propres limites d’abonnement.

  1. Ouvre Plugins dans ChatGPT sur le web, puis + → Ajouter un serveur MCP personnalisé.
  2. Nomme-le « GroupeZ Documentation », colle l’URL ci-dessus et choisis « Aucune authentification ». Crée puis installe le plugin.
  3. Dans une conversation, tape @ et sélectionne ce plugin avant d’envoyer ta question. Si nécessaire, active search, get_page et list_pages dans ses paramètres.
Guide officiel de cet outil

3. Pose une question

Utilise le MCP GroupeZ pour m’aider à créer un inventaire zMenu. Recherche les pages pertinentes, lis les exemples et cite tes sources.
Autres clients et dépannage

Pour les clients utilisant mcpServers, adapte cet exemple à leur format :

{
  "mcpServers": {
    "groupez-docs": {
      "url": ""
    }
  }
}

Les outils disponibles sont search, get_page et list_pages. Après une mise à jour, actualise les outils du connecteur. Si ton IA n’y accède pas, vérifie que le connecteur est activé dans la conversation et que ton compte autorise les MCP personnalisés. Ouvrir l’URL dans un navigateur n’est pas un test MCP.