Funcionalidades
Tras conectar el servidor, su agente de IA puede interactuar con Kameleoon para:- Descubrir e inspeccionar experimentos, feature flags, objetivos, segmentos y reglas de targeting.
- Crear experimentos de extremo a extremo: crear, duplicar y ejecutar el ciclo de vida completo (iniciar, pausar, reanudar, detener, eliminar).
- Gestionar feature flags: crear, duplicar, eliminar, alternar por entorno y revisar el historial de cambios.
- Configurar la entrega de los flags: añadir reglas de targeting y de experimentación, variaciones personalizadas y variables tipadas.
- Crear y mantener objetivos y segmentos de audiencia, y vincular segmentos a experimentos.
- Analizar los resultados de experimentos y de experimentos asociados a feature flags, y extraer código en bruto de variaciones (JavaScript y CSS).
- Automatizar el ciclo de vida completo de la implementación, desde una variación ganadora hasta un rollout a producción protegido por flags.
Flujo de trabajo principal: del experimento ganador a producción
El servidor MCP de Kameleoon automatiza la «última milla» de la implementación. Sin salir del IDE, puede indicar a su asistente de IA que ejecute el siguiente flujo de trabajo:- Recuperar los resultados del experimento e identificar la variación ganadora.
- Extraer el código en bruto de la variación desde Kameleoon.
- Convertir el código en código nativo listo para producción (como componentes React) alineado con la base de código existente.
- Crear un feature flag en Kameleoon.
- Encapsular la nueva implementación tras el feature flag.
- Habilitar y validar la funcionalidad en producción.
Herramientas disponibles
El servidor expone las herramientas que se indican a continuación, agrupadas por área. Cada herramienta se corresponde con una única acción bien delimitada, de modo que puede combinarlas en flujos de trabajo más amplios (por ejemplo: leer resultados, extraer código, crear un flag, añadir una regla y habilitarlo).Experimentos
Cree, inspeccione y ejecute tests A/B (experimentos web).| Herramienta | Descripción | Ejemplo de prompt |
|---|---|---|
experiment_list | Busca experimentos por nombre o ID. Devuelve resúmenes paginados (id, nombre, estado, etiquetas). | ”List active experiments on site d1alzzxd7k.” |
experiment_get | Recupera la configuración completa de un experimento: variaciones, reparto de tráfico, objetivos y targeting. | ”Show the configuration for experiment 149640.” |
experiment_code_get | Extrae el JavaScript, CSS y JSON personalizado en bruto de una variación, junto con el JS y CSS comunes compartidos del experimento. | ”Pull the code for variation 1 of experiment 149640.” |
experiment_results_get | Obtiene los resultados estadísticos: tasas de conversión por variación, significancia, intervalos de confianza y la ganadora. | ”Summarize results for experiment 149640.” |
experiment_create | Crea un experimento en borrador (tipo, URL base, objetivos, código común opcional). | ”Create a CLASSIC experiment Homepage hero on site d1alzzxd7k.” |
experiment_duplicate | Clona un experimento en un nuevo borrador, copiando variaciones, código, desviaciones y targeting. | ”Duplicate experiment 149640.” |
experiment_lifecycle_update | Gestiona el ciclo de vida: iniciar, pausar, reanudar, detener o eliminar (detener y eliminar requieren confirmación). | ”Start experiment 149640.” |
Feature flags
Cree y opere feature flags, altérnelos por entorno, y consulte su historial y resultados.| Herramienta | Descripción | Ejemplo de prompt |
|---|---|---|
feature_flag_list | Busca feature flags por clave, nombre o ID. | ”List all feature flags for site d1alzzxd7k.” |
feature_flag_get | Recupera la configuración completa de un flag en un entorno: variaciones, variables, objetivo principal y cadena de reglas. | ”Show configuration for flag snake_game.” |
feature_flag_create | Crea un flag con variaciones on y off por defecto. | ”Create a flag ui_refresh for site d1alzzxd7k.” |
feature_flag_duplicate | Clona un flag existente (la copia comienza deshabilitada en todos los entornos). | ”Duplicate the new_search flag.” |
feature_flag_delete | Elimina permanentemente un flag y toda su configuración. | ”Delete the flag ui_refresh.” |
feature_flag_enable | Activa el interruptor maestro por entorno para que el SDK evalúe las reglas. | ”Enable new_search in production.” |
feature_flag_disable | Desactiva el interruptor maestro por entorno (las reglas se conservan). | ”Disable new_search in staging.” |
feature_flag_activity_logs_get | Lee el registro de auditoría de los cambios del flag (quién cambió qué y cuándo). | ”Show the recent change history for our feature flags.” |
feature_flag_experiment_results_get | Obtiene los resultados estadísticos de la regla de experimentación de un flag. | ”Get the experiment results for the rule on new_search.” |
Entrega de flags, variaciones y variables
Defina cómo se entrega un flag y especifique las variaciones y variables tipadas que sirve.| Herramienta | Descripción | Ejemplo de prompt |
|---|---|---|
feature_flag_rule_targeted_create | Añade una regla de entrega segmentada: sirve una variación a un porcentaje del tráfico, con planificación opcional. | ”Roll new_search out to 20% in production.” |
feature_flag_rule_experimentation_create | Añade una regla de experimentación A/B que divide el tráfico entre variaciones con seguimiento estadístico. | ”A/B test off vs on 50/50 on new_search.” |
feature_flag_variation_create | Añade una variación personalizada (un estado con nombre de la funcionalidad) a un flag. | ”Add a variant_a variation to new_search.” |
feature_flag_variable_create | Define una variable tipada (BOOLEAN, NUMBER, STRING, JSON, JS, CSS, ENUM) con un valor por defecto. | ”Add a STRING variable label defaulting to Search.” |
feature_flag_variation_variable_set | Sobrescribe el valor de una variable para una variación específica. | ”Set label to Find on variant_a.” |
Objetivos
Cree y mantenga los objetivos de conversión utilizados por experimentos y flags.| Herramienta | Descripción | Ejemplo de prompt |
|---|---|---|
goal_list | Explora los objetivos de un sitio, con recuentos de uso en experimentos, flags y personalizaciones. | ”List goals for site d1alzzxd7k.” |
goal_get | Inspecciona la configuración del tipo, etiquetas y recuentos de uso de un objetivo. | ”Show goal 271552.” |
goal_search | Busca un objetivo por una subcadena de su nombre. | ”Search goals for checkout.” |
goal_create | Crea un objetivo de cualquier tipo (URL, CLICK, SCROLL, PAGE_VIEWS, TIME_SPENT, CUSTOM, entre otros). | ”Create a URL goal that matches /thank-you.” |
goal_update | Edita el nombre, descripción, etiquetas, herramientas de seguimiento o el ajuste de múltiples conversiones de un objetivo. | ”Rename goal 271552 to Signup complete.” |
goal_update_type | Cambia el tipo de un objetivo y sustituye su configuración específica de tipo (las etiquetas se conservan). | ”Change goal 271552 to a CLICK goal.” |
goal_delete | Elimina permanentemente un objetivo. | ”Delete goal 271552.” |
Segmentos
Defina e inspeccione las audiencias que segmenta.| Herramienta | Descripción | Ejemplo de prompt |
|---|---|---|
segment_list | Explora los segmentos de un sitio, con recuentos de uso. | ”List segments for site d1alzzxd7k.” |
segment_get | Inspecciona el árbol de condiciones de un segmento (JSON en bruto más un resumen legible para humanos). | ”Show segment 200604.” |
segment_create | Crea un segmento de audiencia a partir de un árbol de condiciones (geolocalización, dispositivo, navegador, datos personalizados y más). | ”Create a segment for desktop visitors in France.” |
segment_delete | Elimina un segmento. Bloqueado por defecto cuando el segmento está en uso (omitir con force). | ”Delete segment 200604.” |
Sitios y reglas de targeting
Descubra sus proyectos y vincule segmentos a experimentos.| Herramienta | Descripción | Ejemplo de prompt |
|---|---|---|
site_list | Lista los sitios (proyectos) a los que tiene acceso, con el código, nombre y estado de seguimiento de cada sitio. | ”List my Kameleoon sites.” |
targeting_rule_list | Lista las reglas de targeting de un sitio. | ”List targeting rules for site d1alzzxd7k.” |
targeting_rule_get | Inspecciona una única regla de targeting (segmento, configuración, trigger y el experimento al que pertenece). | ”Show targeting rule 118605.” |
targeting_rule_create | Vincula un segmento a un experimento para controlar quién participa. | ”Target experiment 149640 to segment 200604.” |
Integración con Claude Code
Paso 1: Registrar el servidor
Para registrar el servidor en su perfil de usuario (haciéndolo disponible en todos los proyectos), abra una terminal y ejecute el siguiente comando:.mcp.json a su repositorio para compartirlo con el equipo), ejecute:
kameleoon: ... - ✗ Failed to connect (Esto es normal porque aún no ha completado la autenticación).
Paso 2: Completar la autenticación OAuth
En la misma terminal, inicie el flujo de inicio de sesión:- El comando abre automáticamente una pestaña del navegador. Si no lo hace, copie la URL impresa en la terminal y ábrala manualmente.
- Inicie sesión en su cuenta de Kameleoon.
- Haga clic en Authorize.
- Cuando el navegador muestre un mensaje de éxito, pulse
Ctrl+Cen su terminal.
kameleoon: ... - ✓ Connected
Paso 3: Iniciar una nueva sesión de Claude Code
Claude Code hace que las herramientas de los servidores MCP recién añadidos estén disponibles solo en las sesiones que inicie después de registrar el servidor. Cierre su chat actual de Claude Code y abra uno nuevo.Paso 4: Verificar la conexión
En una nueva conversación de Claude Code, pruebe los siguientes prompts:- “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.”
Resolución de problemas en Claude
| Síntoma | Causa | Solución | |
|---|---|---|---|
| El navegador no se abre. | Falló el lanzamiento automático. | Copie la URL de la terminal y ábrala manualmente. | |
| Conexión rechazada en el puerto 35535. | El puerto está en uso. | Ejecute `netstat -ano | findstr :35535`, mate el proceso y reintente. |
| Error al conectar tras OAuth. | El token no persistió. | Vuelva a ejecutar el comando del Paso 2 para refrescar su token. | |
| Las herramientas no aparecen en Claude. | La sesión se inició antes de añadir el servidor. | Inicie una nueva conversación de Claude Code. | |
La clave mcpServers se rechaza en settings.json. | Archivo incorrecto; Claude Code no utiliza esa clave. | Use el comando claude mcp add en su lugar. | |
| Error de autenticación tras un largo periodo. | El token OAuth ha caducado. | Vuelva a ejecutar el comando del Paso 2. |
Integración con Antigravity
Configuración rápida
Pegue el siguiente prompt de inicio automático directamente en su chat de Antigravity para conectarse automáticamente:
“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.”
Configuración manual
Edite el archivo de configuración en~/.gemini/antigravity/mcp_config.json y añada el siguiente bloque JSON:
Integración con Codex
Configuración rápida
Pegue el siguiente prompt de inicio automático en su chat de 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.”
Configuración manual
Añada el siguiente bloque a~/.codex/config.toml. Cree el archivo si no existe:
Autenticar la conexión
El servidor MCP de Kameleoon utiliza OAuth. Ejecute el siguiente comando en su terminal para iniciar el flujo de autorización:- El navegador abre automáticamente una ventana.
- Haga clic en Authorize en la página de inicio de sesión de Kameleoon.
- Kameleoon completa la callback local en el puerto 35535.
- La terminal confirma que el proxy se ha conectado correctamente.
Verificar las operaciones de las herramientas
Tras autenticarse, ejecute las siguientes comprobaciones para confirmar que las herramientas funcionan como se espera:- Listar las herramientas disponibles: Confirme que
tools/listse ejecuta correctamente y devuelve las herramientas de Kameleoon. Asegúrese de que la salida incluye las herramientas listadas en la tabla de herramientas, comoexperiment_code_get,feature_flag_listyfeature_flag_create. - Recuperar feature flags: Ejecute
feature_flag_list(siteCode = "d1alzzxd7k"). Una respuesta exitosa devuelve una lista de feature flags para el sitio especificado. - Recuperar resultados de experimentos: Ejecute
experiment_results_get(experimentId = 149640). Una respuesta exitosa incluye el nombre del experimento, el código del sitio, el tipo y el estado.
Integración con Cursor
Cursor integra las herramientas MCP directamente en la barra lateral del chat del IDE, lo que las hace disponibles mientras programa.Opción 1: Configurar mediante la interfaz de Cursor (recomendado)
- Abra la configuración de Cursor (
Cmd+Shift+Jen macOS,Ctrl+Shift+Jen Windows/Linux). - Navegue a Features > MCP Servers > + Add New MCP Server.
- Establezca Name en
kameleoon. - Establezca Type en
command. - Introduzca la siguiente cadena como Command:
- Guarde la configuración.
Opción 2: Configurar mediante mcp.json (avanzado)
Abra~/.cursor/mcp.json (cree el archivo si no existe) y añada la siguiente entrada al objeto mcpServers:
Reinicie Cursor después de editar el archivo manualmente.
Ejemplos de prompts para flujos de trabajo de desarrollador
Tras conectar el servidor MCP de Kameleoon, utilice prompts como los siguientes en su 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.”
Flujo de trabajo avanzado: automatización de extremo a extremo
Para experimentar todas las capacidades del servidor MCP, utilice un prompt de sistema completo. El siguiente ejemplo muestra cómo trasladar el código de la variación ganadora a componentes React, lo que está pensado principalmente para aplicaciones React. Indica al agente de IA que gestione todo el ciclo de vida de la implementación, desde la recuperación de los resultados ganadores hasta la generación de código nativo listo para producción protegido tras un nuevo feature flag, y posteriormente su despliegue y validación, todo ello mediante las herramientas MCP. Pegue el siguiente prompt en su asistente de 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.
Referencia de parámetros de las herramientas
Utilice los nombres exactos de las herramientas y de los parámetros devueltos portools/list. El esquema MCP en producción admite los siguientes parámetros.
Experimentos
| Herramienta | Parámetros obligatorios | Parámetros opcionales |
|---|---|---|
experiment_list | Ninguno | siteCode, filterQuery, page, perPage, sortField, sortOrder |
experiment_get | experimentId | Ninguno |
experiment_code_get | experimentId, variationId | Ninguno |
experiment_results_get | experimentId | Ninguno |
experiment_create | payload (siteCode, name, type, baseURL) | payload: mainGoalId, goals, tags, description, commonJavaScriptCode, commonCssCode, trafficAllocationMethod, collectingDataEnabled, multipleTestingCorrection, executeCodeForReference |
experiment_duplicate | experimentId | Ninguno |
experiment_lifecycle_update | experimentId, status | confirm (obligatorio para stopped y deleted), reason |
Feature flags
| Herramienta | Parámetros obligatorios | Parámetros opcionales |
|---|---|---|
feature_flag_list | Ninguno | siteCode, filterQuery, page, perPage, sortField, sortOrder |
feature_flag_get | featureKey, siteCode | environmentKey (* para todos los entornos) |
feature_flag_create | siteCode, featureKey, name | description |
feature_flag_duplicate | featureKey, siteCode | Ninguno |
feature_flag_delete | featureKey, siteCode | Ninguno |
feature_flag_enable | featureKey, siteCode, environmentKey | Ninguno |
feature_flag_disable | featureKey, siteCode, environmentKey | Ninguno |
feature_flag_activity_logs_get | Ninguno | type, sortKey (timestamp), sortOrder, page, perPage |
feature_flag_experiment_results_get | featureKey, siteCode, environmentKey, experimentId | Ninguno |
Entrega de flags, variaciones y variables
| Herramienta | Parámetros obligatorios | Parámetros opcionales |
|---|---|---|
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 | Ninguno |
feature_flag_variable_create | siteCode, featureKey, variableKey, variableType, defaultValue | Ninguno |
feature_flag_variation_variable_set | siteCode, featureKey, variationKey, variableKey, value | Ninguno |
Objetivos
| Herramienta | Parámetros obligatorios | Parámetros opcionales |
|---|---|---|
goal_list | Ninguno | siteCode, page, perPage |
goal_get | goalId | Ninguno |
goal_search | query | siteCode, page, perPage |
goal_create | payload (name, siteCode, type, hasMultipleConversions) | payload: parámetros específicos del tipo (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 | parámetros específicos del tipo |
goal_delete | goalId | Ninguno |
Segmentos
| Herramienta | Parámetros obligatorios | Parámetros opcionales |
|---|---|---|
segment_list | Ninguno | siteCode, query, page, perPage |
segment_get | segmentId | Ninguno |
segment_create | name, siteCode | conditionDataTree, description |
segment_delete | segmentId | force |
Sitios y reglas de targeting
| Herramienta | Parámetros obligatorios | Parámetros opcionales |
|---|---|---|
site_list | Ninguno | Ninguno |
targeting_rule_list | Ninguno | siteCode, page, perPage |
targeting_rule_get | targetingRuleId | Ninguno |
targeting_rule_create | segmentConfiguration, siteCode, experimentId | segmentId, triggerConfiguration, triggerId, targetingConfigurationParam |
experiment_lifecycle_update.status es started, resumed, paused, stopped o deleted. El type de experimento es AI, CLASSIC, DEVELOPER, MVT, PROMPT o SDK_HYBRID. El type de objetivo es CLICK, CUSTOM, SCROLL, PAGE_VIEWS, URL, TIME_SPENT, RETENTION_RATE, WAREHOUSE o RATIO_METRICS. variableType es BOOLEAN, NUMBER, STRING, JSON, JS, CSS o ENUM. trafficAllocations es una cadena variationKey:percentage separada por comas cuya suma es 100 (por ejemplo, off:50,on:50). releaseDateTime es una fecha y hora local ISO-8601 sin offset (por ejemplo, 2026-07-01T09:00:00) y timeZone es una zona IANA (por ejemplo, Europe/Paris o UTC).
Consejos de prompting
- Incluya el código del sitio cuando trabaje con feature flags.
- Incluya el ID del experimento cuando consulte experimentos o sus resultados.
- Incluya tanto
experimentIdcomovariationIdcuando solicite código de una variación. - Nombre explícitamente el entorno objetivo cuando solicite al agente que habilite o deshabilite un feature flag.
- Solicite un resumen en lenguaje natural si desea que su agente de IA interprete la respuesta MCP en lugar de limitarse a recuperar los datos en bruto.
Resolución general de problemas
El puerto 35535 ya está en uso
Si la autenticación falla con un errorEADDRINUSE, otro proceso ya está escuchando en el puerto de callback de OAuth.
- Causa: Un proceso
mcp-remoteobsoleto sigue activo de un intento de autenticación anterior. - Solución: Detenga el proceso obsoleto que está usando el puerto 35535 y vuelva a ejecutar el comando OAuth.
El servidor MCP no aparece en el chat de Codex
Es posible que Codex no recargue en caliente los servidores MCP recién añadidos en un hilo ya en ejecución.- Solución: Refresque Codex o inicie una nueva sesión tras actualizar
config.toml.
El flujo del navegador no se completa
Si la ventana del navegador de OAuth se abre pero la autorización no finaliza:- Confirme que hizo clic en el botón Authorize en la página de inicio de sesión de Kameleoon.
- Compruebe que la configuración de su navegador o sistema no bloquea los callbacks a
localhost. - Abra la URL de callback manualmente si su navegador no consigue lanzarla automáticamente.
Los agentes headless o remotos fallan al autenticarse
Los agentes remotos o headless (como Codex alojado en la nube) no pueden completar el paso de autorización basado en navegador.- Solución: Utilice en su lugar una versión de escritorio de su herramienta.
Comando npx no encontrado
Si el comando falla con un error «not found», asegúrese de quenpx esté disponible en el path de su sistema. Las versiones 5.2 y posteriores de Node.js incluyen npx por defecto.