Adobe Launch / Tags MCP Server
Servidor MCP de Adobe Launch / Tags
Un servidor MCP que envuelve la API de Reactor de Adobe Experience Platform — la API detrás de Adobe Launch, ahora llamado Adobe Experience Platform Tags.
Proporciona a un asistente acceso de lectura a tus propiedades de etiquetas, reglas, elementos de datos, extensiones, bibliotecas y entornos, además de la capacidad de realizar cambios. No publica nada por defecto. Nada de lo que hace este servidor llega a un sitio en vivo a menos que habilites explícitamente el modo dangerous y apruebes una compilación.
¿Se lo presentas a alguien? Consulta DEMO.md para un recorrido de 10 minutos.
Por qué existe esto
La API de Reactor es una superficie JSON:API con ~240 endpoints y algunos bordes afilados que la hacen incómoda de entregar a un modelo en bruto:
La configuración de delegados se almacena en un atributo
settingsque es una cadena codificada en JSON, no un objeto. Pasar un objeto devuelve un 422 críptico.Los recursos son pesados: un componente de regla lleva unos 20 campos de auditoría, por lo que una lista de 200 reglas saturará una ventana de contexto.
Las reglas no tienen sentido sin sus componentes de regla, que viven en un endpoint separado.
La creación y la publicación son preocupaciones completamente separadas, y es fácil confundirlas.
Este envoltorio maneja las cuatro: codifica y decodifica settings, da forma a las respuestas para que solo importe lo esencial, une las reglas con sus componentes y limita la publicación detrás de una aceptación explícita.
Related MCP server: adobe-custom
Configuración
1. Crear una credencial OAuth Server-to-Server
Adobe retiró el flujo de Service Account (JWT) el 1 de enero de 2025. Necesitas una credencial OAuth Server-to-Server.
Ve a la Adobe Developer Console e inicia sesión.
Crea un nuevo proyecto (o abre uno existente).
Add API → selecciona Adobe Experience Platform Launch API (listada bajo Experience Cloud).
Elige OAuth Server-to-Server como tipo de autenticación.
Selecciona el/los perfil(es) de producto que otorgan acceso a las propiedades que te interesan. Los perfiles de producto se gestionan en Adobe Admin Console; si no eres administrador, pregunta al tuyo qué perfil cubre tus propiedades. Esta es la causa más común de resultados vacíos o 403 — la credencial puede autenticarse correctamente y aun así no ver nada.
Desde la página de la credencial, copia:
Client ID →
REACTOR_CLIENT_IDClient Secret →
REACTOR_CLIENT_SECRETOrganization ID (termina en
@AdobeOrg) →REACTOR_ORG_IDScopes (la lista separada por comas que se muestra en la página de la credencial) →
REACTOR_SCOPES
El servidor intercambia estos por un token de acceso de 24 horas en https://ims-na1.adobelogin.com/ims/token/v3 y lo renueva automáticamente. Nunca manejas un token tú mismo.
2. Instalación
Un paquete precompilado y sin dependencias se incluye en build/adobe-launch-reactor-mcp.mjs. Es un único archivo ESM autocontenido — no se requiere npm install para ejecutar el servidor. Node 20+ es el único requisito previo.
Para reconstruirlo desde el código fuente, o para ejecutar las pruebas:
npm install
npm run build # tsc -> dist/
npm run bundle # single file -> build/adobe-launch-reactor-mcp.mjs
npm testEl servidor lee sus credenciales de variables de entorno proporcionadas por tu cliente MCP. No carga un archivo
.env—.env.examplees una referencia de qué valores configurar.
3. Configurar tu cliente MCP
Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"adobe-launch": {
"command": "node",
"args": ["/absolute/path/to/launch-mcp/build/adobe-launch-reactor-mcp.mjs"],
"env": {
"REACTOR_CLIENT_ID": "your-client-id",
"REACTOR_CLIENT_SECRET": "your-client-secret",
"REACTOR_ORG_ID": "XXXXXXXXXXXX@AdobeOrg",
"REACTOR_SCOPES": "openid,AdobeID,read_organizations,additional_info.projectedProductContext,additional_info.roles,session",
"REACTOR_WRITE_MODE": "read"
}
}
}
}Claude Code — claude mcp add:
claude mcp add adobe-launch \
--env REACTOR_CLIENT_ID=... \
--env REACTOR_CLIENT_SECRET=... \
--env REACTOR_ORG_ID=...@AdobeOrg \
--env REACTOR_WRITE_MODE=safe \
-- node /absolute/path/to/launch-mcp/build/adobe-launch-reactor-mcp.mjsLuego pregunta: "¿Qué reglas hay en mi propiedad Acme Web, y cuáles no están publicadas?"
Configuración
Variable | Requerida | Predeterminado | Propósito |
| sí | — | Client ID de Developer Console; también se envía como |
| sí | — | Secreto del cliente. |
| sí | — | ID de organización IMS, termina en |
| no |
| Scopes separados por comas. Copia la lista exacta de tu página de credenciales — el predeterminado es típico pero no universal. |
| no |
|
|
| no | — | Fija una propiedad para que las herramientas no necesiten |
| no | — | Fija una empresa, omitiendo una llamada de búsqueda. |
| no |
| Anulación para pruebas. |
| no |
| Cambiar para regiones IMS que no sean NA1. |
| no |
| Límite en una sola respuesta de herramienta antes de truncar. |
| no |
| Tiempo de espera por solicitud. |
Modos de escritura
Modo | Puede hacer | No puede hacer |
| Listar y obtener todo, buscar, leer eventos de auditoría | Cualquier mutación |
| Todo en | Eliminar, compilar, publicar |
| Todo, incluyendo eliminaciones, | — |
El modo se aplica en dos lugares: las herramientas de escritura simplemente no se registran por debajo de su nivel, y la vía de escape reactor_request permite métodos HTTP según el modo — por lo que un modelo no puede eludir el nivel llamando al endpoint en bruto.
safe es el predeterminado correcto para la mayoría del trabajo. La creación en Reactor no es destructiva: una regla nueva o editada se encuentra en el estado de creación de la propiedad y no cambia nada en un sitio en vivo hasta que se compile y publique una biblioteca que la contenga. Mantener la publicación en un nivel separado y explícitamente habilitado significa que un error es algo que arreglas en la interfaz, no un incidente.
Herramientas
Lectura (todos los modos)
Tool | Qué hace |
| Perfil + empresas visibles. Empieza aquí para verificar la autenticación. |
| Propiedades de una empresa. |
| Una propiedad con su configuración de plataforma. |
| Reglas de una propiedad. |
| Una regla más sus componentes — usa esto para responder "¿qué hace esta regla?". |
| Eventos, condiciones y acciones de una regla. |
| Elementos de datos, con la configuración decodificada. |
| Extensiones instaladas y su configuración. |
| El catálogo de extensiones instalables. |
| Descriptores de delegado que proporciona una extensión — así es como descubres valores válidos de |
| Bibliotecas y su estado de flujo de trabajo. |
| Una biblioteca más todas las reglas, elementos de datos y extensiones que contiene, y su última compilación. |
| Historial de compilaciones de una biblioteca. |
| Entornos con códigos de inserción. |
| Hosts de Akamai / SFTP. |
| Quién cambió qué, de más reciente a más antiguo. |
| Búsqueda estructurada entre tipos de recursos cuando no sabes en qué propiedad vive algo. |
| Notas adjuntas a un recurso. |
| Paso directo sin procesar para los ~200 endpoints sin una herramienta dedicada. Controlado por método según el modo de escritura. |
Autoría (safe y dangerous)
reactor_create_rule, reactor_update_rule, reactor_create_rule_component, reactor_update_rule_component, reactor_create_data_element, reactor_update_data_element, reactor_install_extension, reactor_update_extension, reactor_create_library, reactor_update_library, reactor_library_add_resources, reactor_library_remove_resources, reactor_create_note.
Destructivo (solo dangerous)
reactor_create_build, reactor_transition_library, reactor_delete_resource. Las tres requieren un argumento explícito confirm: true y llevan la anotación MCP destructiveHint, por lo que un cliente bien comportado pedirá confirmación antes de ejecutarlas.
Notas sobre la API
Filtrado. Las herramientas de listado aceptan un objeto filter con claves por atributo y valores de la forma "OPERATOR value". Operadores: EQ, NOT, LT, GT, BETWEEN, CONTAINS.
{ "filter": { "name": "CONTAINS checkout", "enabled": "EQ true" } }Adobe ignora silenciosamente los filtros en atributos no filtrables y devuelve el conjunto completo, por lo que un filtro que parece no hacer nada suele ser un error tipográfico o un atributo no compatible, más que un resultado realmente vacío.
Atributos filtrables por recurso:
rules, rule_components, data_elements:
name,enabled,dirty,published,published_at,revision_number,origin_id,created_at,updated_at(los componentes de regla tambiénnegate)properties:
name,platform,enabled,token,created_at,updated_atextensions:
name,display_name,version,enabled,dirty,published,revision_number,created_at,updated_atlibraries:
name,state,stale,published_at,created_at,updated_atenvironments:
name,stage,archive,token,created_at,updated_atbuilds:
status,token,created_at,updated_athosts:
name,type_of,created_at,updated_at
Paginación. 25 registros por página por defecto, 100 como máximo. Pasa fetch_all: true para recorrer todas las páginas (máximo 20 páginas). Las respuestas mayores que REACTOR_MAX_RESPONSE_CHARS se truncan en un límite de registro, de modo que el JSON sigue siendo analizable e indica cuánto se descartó.
Límites de frecuencia. El límite flexible de Reactor es de aproximadamente 120 solicitudes por minuto por integración. El cliente reintenta los errores 429 y 5xx con retroceso exponencial, respetando Retry-After.
Configuración. Reactor almacena la configuración de delegado como una cadena codificada en JSON. Las herramientas de escritura aceptan un objeto plano y lo codifican; las herramientas de lectura lo decodifican de nuevo. Si pasas una cadena, se transmite sin cambios.
Modelo de publicación. Los cambios de autoría son inertes. Para que un cambio entre en vigor: crea o edita recursos → añádelos a una biblioteca → compila la biblioteca → transiciónala a published. Los dos últimos pasos requieren el modo dangerous; de lo contrario, hazlos en la interfaz de Launch.
Desarrollo
npm run typecheck # tsc --noEmit
npm test # 35 tests against an in-memory mock of IMS + Reactor
npm run build # compile to dist/
npm run dev # run from source via tsxLa suite de pruebas cubre la construcción de la cabecera de autenticación y el almacenamiento en caché de tokens, la forma de la concesión client_credentials, la codificación de filtro/orden/página de JSON:API, el recorrido de varias páginas, el modelado y truncamiento de respuestas, el ida y vuelta de codificación/decodificación de settings, la construcción de relaciones, el control del modo de escritura (incluido que el paso directo sin procesar no puede usarse para evadirlo) y la calidad de los mensajes de error para 404/422/429/500.
Estructura
src/
config.ts env parsing, write-mode tiers
auth.ts IMS OAuth S2S token manager with caching + refresh collapsing
client.ts JSON:API client: headers, query encoding, retry, pagination, error formatting
format.ts response shaping and size-capped serialization
server.ts MCP server assembly
index.ts stdio entrypoint
tools/
common.ts shared argument schemas and helpers
read.ts read-only tools
write.ts authoring tools + dangerous tier
raw.ts method-gated passthroughLicencia
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read and write Drupal JSON:API nodes, taxonomy terms, users and files.
Manage repositories, users, releases, and automate GitHub workflows
Discover audiences, build segments, match and deliver data. Some actions may incur billable usage.
Search, read, and automate TextMine documents, records, workflows, integrations, and agent tasks.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceThe first full-featured MCP server for Adobe Experience Platform: 29 tools across schemas, datasets, profiles, segments, query service, and GDPR/CCPA privacy operations. Extends Adobe's read-only beta with production-grade write operations.72 npmApache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables Adobe Experience Platform and AEM content operations through a shared tool registry, exposing health checks, fragment search, sandbox management, dataset queries, and content fragment fetching via MCP and web interfaces.-
- AlicenseNot gradedqualityCmaintenanceEnables full Google Tag Manager management via the GTM API v2, including tags, triggers, variables, and version publishing, with workspace-based change tracking.MIT
- AlicenseAqualityCmaintenanceEnables policy-aware access to the Productive.io API v2 for managing projects, tasks, time tracking, resource planning, financials, CRM, and reports, with safe defaults and staged writes for sensitive operations.12Apache 2.0