Fonctionnalités
Une fois le serveur connecté, votre agent IA peut interagir avec Kameleoon pour :- Découvrir et inspecter les expériences, feature flags, objectifs, segments et règles de ciblage.
- Construire des expériences de bout en bout : créer, dupliquer et exécuter le cycle de vie complet (démarrer, mettre en pause, reprendre, arrêter, supprimer).
- Gérer les feature flags : créer, dupliquer, supprimer, activer/désactiver par environnement et consulter l’historique des modifications.
- Configurer la livraison des flags : ajouter des règles ciblées et d’expérimentation, des variations personnalisées et des variables typées.
- Créer et maintenir des objectifs et des segments d’audience, et associer des segments aux expériences.
- Analyser les résultats des expériences et des feature-flag-experiments, et extraire le code brut des variations (JavaScript et CSS).
- Automatiser le cycle de vie complet de l’implémentation, depuis une variation gagnante jusqu’à un rollout en production sécurisé par feature flag.
Le workflow principal : de l’expérience gagnante à la production
Le serveur MCP Kameleoon automatise le « dernier kilomètre » de l’implémentation. Sans quitter l’IDE, vous pouvez demander à votre assistant IA d’exécuter le workflow suivant :- Récupérer les résultats de l’expérience et identifier la variation gagnante.
- Extraire le code brut de la variation depuis Kameleoon.
- Convertir le code en code natif prêt pour la production (comme des composants React) aligné sur la base de code existante.
- Créer un feature flag dans Kameleoon.
- Encapsuler la nouvelle implémentation derrière le feature flag.
- Activer et valider la fonctionnalité en production.
Outils disponibles
Le serveur expose les outils ci-dessous, regroupés par domaine. Chaque outil correspond à une action unique et bien délimitée, vous permettant de les composer en workflows plus larges (par exemple : lire les résultats, extraire le code, créer un flag, ajouter une règle, l’activer).Expériences
Créez, inspectez et exécutez des tests A/B (expériences Web).| Outil | Description | Exemple de prompt |
|---|---|---|
experiment_list | Rechercher des expériences par nom ou ID. Renvoie des résumés paginés (id, nom, statut, tags). | « List active experiments on site d1alzzxd7k. » |
experiment_get | Récupérer la configuration complète d’une expérience : variations, répartition du trafic, objectifs et ciblage. | « Show the configuration for experiment 149640. » |
experiment_code_get | Extraire le JavaScript, CSS et JSON personnalisé bruts d’une variation, ainsi que le JS et CSS communs partagés de l’expérience. | « Pull the code for variation 1 of experiment 149640. » |
experiment_results_get | Récupérer les résultats statistiques : taux de conversion par variation, significativité, intervalles de confiance et gagnant. | « Summarize results for experiment 149640. » |
experiment_create | Créer une expérience en brouillon (type, URL de base, objectifs, code commun optionnel). | « Create a CLASSIC experiment Homepage hero on site d1alzzxd7k. » |
experiment_duplicate | Cloner une expérience dans un nouveau brouillon, en copiant les variations, le code, les déviations et le ciblage. | « Duplicate experiment 149640. » |
experiment_lifecycle_update | Piloter le cycle de vie : démarrer, mettre en pause, reprendre, arrêter ou supprimer (arrêter et supprimer nécessitent une confirmation). | « Start experiment 149640. » |
Feature flags
Créez et opérez des feature flags, activez-les ou désactivez-les par environnement, et consultez leur historique et leurs résultats.| Outil | Description | Exemple de prompt |
|---|---|---|
feature_flag_list | Rechercher des feature flags par clé, nom ou ID. | « List all feature flags for site d1alzzxd7k. » |
feature_flag_get | Récupérer la configuration complète d’un flag dans un environnement : variations, variables, objectif principal et chaîne de règles. | « Show configuration for flag snake_game. » |
feature_flag_create | Créer un flag avec les variations on et off par défaut. | « Create a flag ui_refresh for site d1alzzxd7k. » |
feature_flag_duplicate | Cloner un flag existant (la copie démarre désactivée dans chaque environnement). | « Duplicate the new_search flag. » |
feature_flag_delete | Supprimer définitivement un flag et toute sa configuration. | « Delete the flag ui_refresh. » |
feature_flag_enable | Activer l’interrupteur principal par environnement afin que le SDK évalue les règles. | « Enable new_search in production. » |
feature_flag_disable | Désactiver l’interrupteur principal par environnement (les règles sont conservées). | « Disable new_search in staging. » |
feature_flag_activity_logs_get | Lire l’historique d’audit des modifications de flags (qui a changé quoi et quand). | « Show the recent change history for our feature flags. » |
feature_flag_experiment_results_get | Récupérer les résultats statistiques de la règle d’expérimentation d’un flag. | « Get the experiment results for the rule on new_search. » |
Livraison des flags, variations et variables
Façonnez la manière dont un flag est livré, et définissez les variations et variables typées qu’il sert.| Outil | Description | Exemple de prompt |
|---|---|---|
feature_flag_rule_targeted_create | Ajouter une règle de livraison ciblée : servir une variation à un pourcentage du trafic, avec planification optionnelle. | « Roll new_search out to 20% in production. » |
feature_flag_rule_experimentation_create | Ajouter une règle d’expérimentation A/B qui répartit le trafic entre les variations avec suivi statistique. | « A/B test off vs on 50/50 on new_search. » |
feature_flag_variation_create | Ajouter une variation personnalisée (un état nommé de la fonctionnalité) à un flag. | « Add a variant_a variation to new_search. » |
feature_flag_variable_create | Définir une variable typée (BOOLEAN, NUMBER, STRING, JSON, JS, CSS, ENUM) avec une valeur par défaut. | « Add a STRING variable label defaulting to Search. » |
feature_flag_variation_variable_set | Surcharger la valeur d’une variable pour une variation spécifique. | « Set label to Find on variant_a. » |
Objectifs
Créez et maintenez les objectifs de conversion utilisés par les expériences et les flags.| Outil | Description | Exemple de prompt |
|---|---|---|
goal_list | Parcourir les objectifs d’un site, avec leur nombre d’utilisations dans les expériences, flags et personnalisations. | « List goals for site d1alzzxd7k. » |
goal_get | Inspecter la configuration de type, les tags et les comptages d’utilisation d’un objectif. | « Show goal 271552. » |
goal_search | Rechercher un objectif par une sous-chaîne de son nom. | « Search goals for checkout. » |
goal_create | Créer un objectif de tout type (URL, CLICK, SCROLL, PAGE_VIEWS, TIME_SPENT, CUSTOM, et plus). | « Create a URL goal that matches /thank-you. » |
goal_update | Modifier le nom, la description, les tags, les outils de suivi ou le paramètre de conversions multiples d’un objectif. | « Rename goal 271552 to Signup complete. » |
goal_update_type | Changer le type d’un objectif et remplacer sa configuration spécifique au type (les tags sont conservés). | « Change goal 271552 to a CLICK goal. » |
goal_delete | Supprimer définitivement un objectif. | « Delete goal 271552. » |
Segments
Définissez et inspectez les audiences que vous ciblez.| Outil | Description | Exemple de prompt |
|---|---|---|
segment_list | Parcourir les segments d’un site, avec leur nombre d’utilisations. | « List segments for site d1alzzxd7k. » |
segment_get | Inspecter l’arbre de conditions d’un segment (JSON brut plus un résumé lisible). | « Show segment 200604. » |
segment_create | Créer un segment d’audience à partir d’un arbre de conditions (géolocalisation, appareil, navigateur, données personnalisées, et plus). | « Create a segment for desktop visitors in France. » |
segment_delete | Supprimer un segment. Bloqué par défaut lorsque le segment est utilisé (à contourner avec force). | « Delete segment 200604. » |
Sites et règles de ciblage
Découvrez vos projets et associez des segments à des expériences.| Outil | Description | Exemple de prompt |
|---|---|---|
site_list | Lister les sites (projets) auxquels vous avez accès, avec le code, le nom et le statut de suivi de chaque site. | « List my Kameleoon sites. » |
targeting_rule_list | Lister les règles de ciblage d’un site. | « List targeting rules for site d1alzzxd7k. » |
targeting_rule_get | Inspecter une règle de ciblage unique (segment, configuration, déclencheur et l’expérience à laquelle elle appartient). | « Show targeting rule 118605. » |
targeting_rule_create | Associer un segment à une expérience pour contrôler qui y participe. | « Target experiment 149640 to segment 200604. » |
Intégration Claude Code
Étape 1 : Enregistrer le serveur
Pour enregistrer le serveur pour votre profil utilisateur (le rendant disponible dans tous les projets), ouvrez un terminal et exécutez la commande suivante :.mcp.json à votre dépôt pour le partage en équipe), exécutez :
kameleoon: ... - ✗ Failed to connect (Ceci est normal car vous n’avez pas encore terminé l’authentification).
Étape 2 : Terminer l’authentification OAuth
Dans le même terminal, déclenchez le flux de connexion :- La commande ouvre automatiquement un onglet de navigateur. Si ce n’est pas le cas, copiez l’URL affichée dans le terminal et ouvrez-la manuellement.
- Connectez-vous à votre compte Kameleoon.
- Cliquez sur Authorize.
- Lorsque le navigateur affiche un message de succès, appuyez sur
Ctrl+Cdans votre terminal.
kameleoon: ... - ✓ Connected
Étape 3 : Démarrer une nouvelle session Claude Code
Claude Code rend les outils des serveurs MCP nouvellement ajoutés disponibles uniquement dans les sessions que vous démarrez après l’enregistrement du serveur. Fermez votre session de chat Claude Code en cours et ouvrez-en une nouvelle.Étape 4 : Vérifier la connexion
Dans une nouvelle conversation Claude Code, essayez les prompts suivants :- « List my Kameleoon feature flags. »
- « What experiments are active on site X? »
- « Show me the status of experiment Y. »
- « Show me the code for variation 1 of experiment Z. »
Dépannage Claude
| Symptôme | Cause | Solution | |
|---|---|---|---|
| Le navigateur ne s’ouvre pas. | Échec du lancement automatique. | Copiez l’URL depuis le terminal et ouvrez-la manuellement. | |
| Connexion refusée sur le port 35535. | Le port est utilisé. | Exécutez `netstat -ano | findstr :35535`, terminez le processus et réessayez. |
| Échec de la connexion après OAuth. | Le jeton n’a pas persisté. | Réexécutez la commande de l’étape 2 pour rafraîchir votre jeton. | |
| Les outils ne sont pas visibles dans Claude. | La session a commencé avant l’ajout du serveur. | Démarrez une nouvelle conversation Claude Code. | |
Clé mcpServers rejetée dans settings.json. | Mauvais fichier ; Claude Code n’utilise pas cette clé. | Utilisez plutôt la commande claude mcp add. | |
| Erreur d’authentification après une longue période. | Jeton OAuth expiré. | Réexécutez la commande de l’étape 2. |
Intégration Antigravity
Configuration rapide
Collez le prompt d’auto-démarrage suivant directement dans votre chat Antigravity pour vous connecter automatiquement :
« Connect to the Kameleoon MCP production server. The endpoint is https://mcp.kameleoon.com/mcp, using mcp-remote@0.1.37 on port 35535 with the openid scope. Authenticate by running the npx mcp-remote command to trigger my browser, then verify the connection. »
Configuration manuelle
Modifiez le fichier de configuration à~/.gemini/antigravity/mcp_config.json et ajoutez le bloc JSON suivant :
Intégration Codex
Configuration rapide
Collez le prompt d’auto-démarrage suivant dans votre chat Codex :
« Configure the Kameleoon MCP server at https://mcp.kameleoon.com/mcp. Use port 35535 for callback. Once configured, run the login command to trigger my browser and then list my feature flags. »
Configuration manuelle
Ajoutez le bloc suivant à~/.codex/config.toml. Créez le fichier s’il n’existe pas :
Authentifier la connexion
Le serveur MCP Kameleoon utilise OAuth. Exécutez la commande suivante dans votre terminal pour démarrer le flux d’autorisation :- Le navigateur ouvre automatiquement une fenêtre.
- Cliquez sur Authorize sur la page de connexion Kameleoon.
- Kameleoon complète le callback local sur le port 35535.
- Le terminal confirme que le proxy s’est connecté avec succès.
Vérifier les opérations des outils
Après vous être authentifié, exécutez les vérifications suivantes pour confirmer que les outils fonctionnent comme prévu :- Lister les outils disponibles : Confirmez que
tools/listréussit et renvoie les outils Kameleoon. Assurez-vous que la sortie inclut les outils listés dans le tableau des outils, commeexperiment_code_get,feature_flag_listetfeature_flag_create. - Récupérer les feature flags : Exécutez
feature_flag_list(siteCode = "d1alzzxd7k"). Une réponse réussie renvoie une liste de feature flags pour le site spécifié. - Récupérer les résultats d’expérience : Exécutez
experiment_results_get(experimentId = 149640). Une réponse réussie inclut le nom de l’expérience, le code du site, le type et le statut.
Intégration Cursor
Cursor intègre les outils MCP directement dans la barre latérale Chat de l’IDE, ce qui les rend disponibles pendant que vous codez.Option 1 : Configurer via l’UI Cursor (Recommandé)
- Ouvrez les paramètres Cursor (
Cmd+Shift+Jsur macOS,Ctrl+Shift+Jsur Windows/Linux). - Naviguez vers Features > MCP Servers > + Add New MCP Server.
- Définissez le Name sur
kameleoon. - Définissez le Type sur
command. - Saisissez la chaîne suivante comme Command :
- Enregistrez la configuration.
Option 2 : Configurer via mcp.json (Avancé)
Ouvrez~/.cursor/mcp.json (créez le fichier s’il n’existe pas) et ajoutez l’entrée suivante à l’objet mcpServers :
Redémarrez Cursor après avoir modifié le fichier manuellement.
Exemples de prompts pour les workflows développeur
Une fois le serveur MCP Kameleoon connecté, utilisez des prompts comme les suivants dans votre IDE :- « List the Kameleoon MCP tools available in this session. »
- « Show me all feature flags for site code
d1alzzxd7k. » - « Get the details for feature flag new_search on site
d1alzzxd7k. » - « Fetch experiment results for experiment
149640and summarize the current status. » - « Pull the variation code for experiment
<experimentId>and variation<variationId>. »
- « Inspect feature flag new_search for site
d1alzzxd7kand explain what environments and variations it currently has. » - « Summarize experiment
149640for an engineer. Include status, site code, winner state, and whether any variation data is available. » - « List the active feature flags for site
d1alzzxd7kand point out any flags that look like stale candidates. » - « Retrieve the code for variation
<variationId>in experiment<experimentId>and explain what frontend behavior it changes. » - « Create a new feature flag named
<name>with key<featureKey>for sited1alzzxd7k. » - « Turn on feature flag
<featureKey>in the staging environment for sited1alzzxd7k. » - « Turn off feature flag
<featureKey>in the production environment for sited1alzzxd7k. »
Workflow avancé : Automatisation de bout en bout
Pour découvrir toutes les capacités du serveur MCP, utilisez un prompt système complet. L’exemple suivant montre comment transposer le code de la variation gagnante en composants React, ce qui est principalement destiné aux applications React. Il demande à l’agent IA de gérer l’ensemble du cycle de vie d’implémentation, depuis la récupération des résultats gagnants jusqu’à la génération de code natif prêt pour la production, encadré par un nouveau feature flag, puis de le déployer et de le valider, le tout via les outils MCP. Collez le prompt suivant dans votre assistant IA :You are integrating a Kameleoon A/B experiment into a production codebase by converting a Kameleoon PBX variation into maintainable native React code. ContextRules
- Experiment ID: 373001
- Mode: strict_winner_only (default) or manual_variation_conversion (Fallback variation: 1266752)
Workflow steps
- Inspect the repo first and follow existing conventions (structure, styling, routing, tests, feature flags).
- Do not copy experiment code directly. Re-implement using idiomatic React (components, hooks, state).
- Do not keep experiment-specific logic (IDs, Kameleoon APIs) in production code.
- Prefer existing feature flag systems for rollout. Use the Kameleoon MCP feature-flag tools to create and gate the flag.
- Avoid DOM manipulation (no querySelector, MutationObserver, etc.).
- Do not add new dependencies unless necessary.
- Do not modify the source experiment’s lifecycle (do not stop or delete it) unless explicitly asked.
- Be explicit if something is unclear.
- Get experiment results (
experiment_results_get).- Decide integration:
- Mode A (default:
strict_winner_only): Proceed only ifwinner.status == "clear_winner".- Mode B (manual): Use the fallback variation provided in the context.
- Get the variation code and the prompt that was used (
experiment_code_get).- Convert the code to React (convert JS code to React components/hooks, and CSS code to the project styling system).
- Create a feature flag “pbx-winning-experiment-373001” (
feature_flag_create). If the implementation needs more than a simple on/off, add variations and typed variables (feature_flag_variation_create,feature_flag_variable_create,feature_flag_variation_variable_set), then gate the converted code behind the flag.- Roll out and validate: add a delivery rule (
feature_flag_rule_targeted_createfor a staged percentage rollout, orfeature_flag_rule_experimentation_createto keep measuring), enable the flag in the target environment (feature_flag_enable), and confirm the final configuration withfeature_flag_get.
Référence des paramètres des outils
Utilisez les noms exacts des outils et des paramètres retournés partools/list. Le schéma MCP en direct prend en charge les paramètres suivants.
Expériences
| Outil | Paramètres requis | Paramètres optionnels |
|---|---|---|
experiment_list | Aucun | siteCode, filterQuery, page, perPage, sortField, sortOrder |
experiment_get | experimentId | Aucun |
experiment_code_get | experimentId, variationId | Aucun |
experiment_results_get | experimentId | Aucun |
experiment_create | payload (siteCode, name, type, baseURL) | payload : mainGoalId, goals, tags, description, commonJavaScriptCode, commonCssCode, trafficAllocationMethod, collectingDataEnabled, multipleTestingCorrection, executeCodeForReference |
experiment_duplicate | experimentId | Aucun |
experiment_lifecycle_update | experimentId, status | confirm (requis pour stopped et deleted), reason |
Feature flags
| Outil | Paramètres requis | Paramètres optionnels |
|---|---|---|
feature_flag_list | Aucun | siteCode, filterQuery, page, perPage, sortField, sortOrder |
feature_flag_get | featureKey, siteCode | environmentKey (* pour tous les environnements) |
feature_flag_create | siteCode, featureKey, name | description |
feature_flag_duplicate | featureKey, siteCode | Aucun |
feature_flag_delete | featureKey, siteCode | Aucun |
feature_flag_enable | featureKey, siteCode, environmentKey | Aucun |
feature_flag_disable | featureKey, siteCode, environmentKey | Aucun |
feature_flag_activity_logs_get | Aucun | type, sortKey (timestamp), sortOrder, page, perPage |
feature_flag_experiment_results_get | featureKey, siteCode, environmentKey, experimentId | Aucun |
Livraison des flags, variations et variables
| Outil | Paramètres requis | Paramètres optionnels |
|---|---|---|
feature_flag_rule_targeted_create | siteCode, featureKey, environmentKey, variationKey, exposition, releaseDateTime, timeZone | ruleName |
feature_flag_rule_experimentation_create | siteCode, featureKey, environmentKey, controlVariationKey, trafficAllocations, exposition, releaseDateTime, timeZone | ruleName |
feature_flag_variation_create | siteCode, featureKey, variationKey, variationName | Aucun |
feature_flag_variable_create | siteCode, featureKey, variableKey, variableType, defaultValue | Aucun |
feature_flag_variation_variable_set | siteCode, featureKey, variationKey, variableKey, value | Aucun |
Objectifs
| Outil | Paramètres requis | Paramètres optionnels |
|---|---|---|
goal_list | Aucun | siteCode, page, perPage |
goal_get | goalId | Aucun |
goal_search | query | siteCode, page, perPage |
goal_create | payload (name, siteCode, type, hasMultipleConversions) | payload : paramètres spécifiques au type (matchString, matchType, scrollType, scrollValue, timeSeconds, pageViews, url, jsCode), tags, description, status, trackingTools |
goal_update | goalId | name, description, tags, trackingTools, hasMultipleConversions |
goal_update_type | goalId, type | paramètres spécifiques au type |
goal_delete | goalId | Aucun |
Segments
| Outil | Paramètres requis | Paramètres optionnels |
|---|---|---|
segment_list | Aucun | siteCode, query, page, perPage |
segment_get | segmentId | Aucun |
segment_create | name, siteCode | conditionDataTree, description |
segment_delete | segmentId | force |
Sites et règles de ciblage
| Outil | Paramètres requis | Paramètres optionnels |
|---|---|---|
site_list | Aucun | Aucun |
targeting_rule_list | Aucun | siteCode, page, perPage |
targeting_rule_get | targetingRuleId | Aucun |
targeting_rule_create | segmentConfiguration, siteCode, experimentId | segmentId, triggerConfiguration, triggerId, targetingConfigurationParam |
experiment_lifecycle_update.status est started, resumed, paused, stopped ou deleted. Le type d’expérience est AI, CLASSIC, DEVELOPER, MVT, PROMPT ou SDK_HYBRID. Le type d’objectif est CLICK, CUSTOM, SCROLL, PAGE_VIEWS, URL, TIME_SPENT, RETENTION_RATE, WAREHOUSE ou RATIO_METRICS. variableType est BOOLEAN, NUMBER, STRING, JSON, JS, CSS ou ENUM. trafficAllocations est une chaîne variationKey:percentage séparée par des virgules dont la somme est 100 (par exemple off:50,on:50). releaseDateTime est une date-heure locale ISO-8601 sans décalage (par exemple 2026-07-01T09:00:00) et timeZone est une zone IANA (par exemple Europe/Paris ou UTC).
Conseils de prompting
- Incluez le code du site lorsque vous travaillez avec des feature flags.
- Incluez l’ID d’expérience lorsque vous interrogez des expériences ou leurs résultats.
- Incluez à la fois
experimentIdetvariationIdlorsque vous demandez le code d’une variation. - Nommez explicitement l’environnement cible lorsque vous demandez à l’agent d’activer ou de désactiver un feature flag.
- Demandez un résumé en langage clair si vous voulez que votre agent IA interprète la réponse MCP plutôt que de simplement récupérer les données brutes.
Dépannage général
Le port 35535 est déjà utilisé
Si l’authentification échoue avec une erreurEADDRINUSE, un autre processus écoute déjà sur le port de callback OAuth.
- Cause : Un processus
mcp-remoteobsolète reste actif depuis une tentative d’authentification précédente. - Solution : Arrêtez le processus obsolète qui utilise le port 35535, puis relancez la commande OAuth.
Le serveur MCP n’apparaît pas dans le chat Codex
Codex peut ne pas recharger à chaud les serveurs MCP nouvellement ajoutés dans un thread déjà en cours d’exécution.- Solution : Rafraîchissez Codex ou démarrez une nouvelle session après avoir mis à jour
config.toml.
Le flux du navigateur ne se termine pas
Si la fenêtre du navigateur OAuth s’ouvre mais que l’autorisation ne se termine pas :- Confirmez que vous avez cliqué sur le bouton Authorize sur la page de connexion Kameleoon.
- Vérifiez que les paramètres de votre navigateur ou de votre système ne bloquent pas les callbacks
localhost. - Ouvrez manuellement l’URL de callback si votre navigateur ne parvient pas à la lancer automatiquement.
Les agents headless ou distants ne parviennent pas à s’authentifier
Les agents distants ou headless (comme Codex hébergé dans le cloud) ne peuvent pas effectuer l’étape d’autorisation basée sur le navigateur.- Solution : Utilisez à la place une version desktop de votre outil.
Commande npx introuvable
Si la commande échoue avec une erreur « not found », assurez-vous quenpx est disponible sur le chemin de votre système. Les versions de Node.js 5.2 et ultérieures incluent npx par défaut.