Skip to main content
Glama
cyanheads

@cyanheads/mailchimp-mcp-server

by cyanheads

npm Version License Docker MCP SDK TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


Herramientas

Dieciocho herramientas siempre activas más dos condicionales — mailchimp_assets (cuando MAILCHIMP_ASSETS_DIR está definido) y mailchimp_local_templates (cuando MAILCHIMP_TEMPLATES_DIR está definido). Los asistentes de flujo de trabajo orquestan flujos comunes de principio a fin, las herramientas primitivas exponen CRUD de grano fino, y la herramienta de instrucción devuelve orientación procedimental combinada con el estado de la cuenta en tiempo real.

Nombre de la herramienta

Descripción

mailchimp_account

Perfil de la cuenta, plan, centro de datos, suscriptores totales y el feed de actividad de Chimp Chatter.

mailchimp_audiences

Gestiona audiencias (listas): lectura, creación/actualización, análisis por audiencia, configuración del formulario de suscripción. Sin eliminación.

mailchimp_audience_overview

Resumen de salud de la audiencia en una sola llamada: información, estadísticas, historial de crecimiento, principales clientes de correo, esquema de campos de combinación.

mailchimp_subscribers

CRUD de suscriptores + etiquetas/notas/actividad. archive es la eliminación más fuerte disponible.

mailchimp_upsert_subscriber

Añade o actualiza un suscriptor de forma idempotente con estado, campos de combinación, etiquetas y nota opcional.

mailchimp_find_subscriber

Localiza un suscriptor por correo electrónico en una audiencia o en toda la cuenta.

mailchimp_import_subscribers

Añadir/actualizar suscriptores por lotes (máximo 500/llamada). El estado por defecto es pending (doble opt-in).

mailchimp_segments

CRUD para segmentos de audiencia (guardados, estáticos, difusos) más listado de miembros y añadir/eliminar por lotes.

mailchimp_merge_fields

Lectura + creación/actualización de atributos personalizados de suscriptores. Sin eliminación — elimina datos de todos los suscriptores.

mailchimp_campaigns

Gestión de registros de campañas: listar/obtener/crear/actualizar, replicar, contenido, lista de verificación, controles de RSS/reenvío.

mailchimp_send_campaign

Redacta y envía (o programa/prueba) una campaña en una sola llamada. Solicita confirmación humana reentrante antes de las mutaciones de envío/programación.

mailchimp_replicate_campaign

Duplica una campaña con anulaciones opcionales y luego borrador/prueba/envío/programación. Mismas semánticas de confirmación y limpieza.

mailchimp_reports

Informes de campaña: segmentador genérico en diez dimensiones (clics, aperturas, ubicaciones, etc.).

mailchimp_campaign_report

Resumen de análisis posterior al envío: métricas principales + 5 cortes principales en una respuesta.

mailchimp_templates

Lectura/escritura de plantillas de correo: las lecturas (list/get) funcionan gratis para tipos base/user; las escrituras (create/update/delete) y gallery requieren un plan de pago.

mailchimp_files

Administrador de archivos (Content Studio): sube, lista, obtiene, renombra y elimina archivos en el CDN de Mailchimp. Incrusta el fullSizeUrl devuelto en el HTML de la campaña. Funciona gratis; 1 MB por imagen / 10 MB por otro archivo.

mailchimp_search

Búsqueda global en miembros o campañas. Descubrimiento ligero — usa find_subscriber para obtener detalles.

mailchimp_assets (condicional — establece MAILCHIMP_ASSETS_DIR)

Superficie de activos locales. Lista tu directorio de activos, inspecciona el estado de la caché, precarga subidas antes de un envío. La mayoría de los flujos de trabajo no llaman esto directamente: las referencias @assets/<path> en el HTML de la campaña se suben automáticamente mediante mailchimp_send_campaign y mailchimp_campaigns set-content.

mailchimp_local_templates (condicional — establece MAILCHIMP_TEMPLATES_DIR)

Superficie de creación de plantillas locales. Lista/obtén/vista previa de renderizado de tus plantillas .eta con sidecars opcionales <name>.meta.yaml. seed-from-mailchimp inicializa una plantilla local a partir de un iniciador base/user de Mailchimp. Usa content.localTemplate en las herramientas de campaña para renderizar en el momento del envío. Ruta de escritura canónica en Mailchimp gratuito, donde la API de plantillas upstream es de solo lectura.

mailchimp_playbook

Devuelve un manual de procedimientos estructurado combinado con el estado de la cuenta en vivo. Solo consejos, sin escrituras.


mailchimp_send_campaign

Redacta y envía (o programa/prueba) una campaña en una sola llamada.

  • Encadena crear → contenido → lista de verificación → prueba opcional → enviar/programar

  • Solicita confirmación humana mediante una ronda de entrada reentrante antes de cualquier mutación de campaña cuando mode: 'send' | 'schedule'

  • Elimina automáticamente los borradores fallidos cuando cleanupOnError: true (por defecto); la confirmación rechazada deja un borrador revisable

  • Admite formularios de contenido html, plaintext, templateId + templateSections y plantillas Eta locales


mailchimp_replicate_campaign

Duplica una campaña existente con anulaciones opcionales y luego envía/programa/prueba o déjala como borrador.

  • Anulaciones: asunto, nombre del remitente, responder a, audiencia, segmento, contenido

  • Mismas semánticas de confirmación reentrante + limpieza que mailchimp_send_campaign

  • Optimizado para el patrón común de "enviar v2 del boletín de la semana pasada con una introducción actualizada"


mailchimp_upsert_subscriber

Añade o actualiza un suscriptor en una sola llamada idempotente.

  • Sincronización declarativa de etiquetas — pasa el conjunto activo deseado y la herramienta calcula el delta de añadir/eliminar

  • preserveTags protege las membresías de segmentos con nombre (Mailchimp almacena la membresía de segmentos estáticos como etiquetas)

  • status: 'pending' activa el correo de doble opt-in de Mailchimp; 'subscribed' requiere consentimiento documentado

  • PUT /members/{hash} para la ruta de creación, PATCH para la actualización y omitir la revalidación de campos de combinación preexistentes


mailchimp_import_subscribers

Añade (y opcionalmente actualiza) suscriptores por lotes en una sola llamada.

  • Limitado a 500 filas por llamada — divide importaciones más grandes en el lado del cliente

  • El estado por defecto es pending (doble opt-in) para evitar envíos masivos accidentales

  • Devuelve por fila correcto/fallido con motivos de error


mailchimp_campaign_report

Análisis agregado posterior al envío para una campaña.

  • Métricas de entrega principales: enviados, rebotes, informes de abuso

  • Interacción: aperturas, clics, bajas

  • Enlaces más clicados (Top-N), ubicaciones, bajas recientes

  • Referencias del sector cuando estén disponibles

  • Usa mailchimp_reports con operation: 'slice' para una sola dimensión en detalle


mailchimp_audience_overview

Resumen de salud de la audiencia en una sola llamada: responde a «¿cómo es esta audiencia?» en una sola petición.

  • Información de la audiencia + estadísticas en vivo

  • Historial de crecimiento configurable en meses

  • Principales clientes de correo

  • Esquema completo de campos de combinación

  • Actividad reciente


mailchimp_playbook

Devuelve un manual de procedimientos estructurado combinado con el estado en vivo de la cuenta. Solo asesoramiento: el agente ejecuta los pasos posteriores con otras herramientas.

  • Temas: send, post-send-review, deliverability, list-hygiene, onboarding, subscriber-triage, design-campaign

  • Devuelve instrucciones en markdown + una instantánea del estado en vivo

  • nextToolSuggestions rellena previamente los argumentos para la siguiente llamada a herramienta probable

Related MCP server: Mailchimp MCP Server

Recursos y prompts

Tipo

Nombre

Descripción

Recurso

mailchimp://account

Instantánea de la información de la cuenta: perfil, plan, centro de datos, suscriptores totales.

Recurso

mailchimp://audiences/{audienceId}

Instantánea de la audiencia: nombre, contacto, estadísticas, estado de doble opt-in.

Recurso

mailchimp://campaigns/{campaignId}

Instantánea de la campaña: estado, ajustes, resumen de destinatarios.

Recurso

mailchimp://campaigns/{campaignId}/report

Métricas principales del informe de campaña tras el envío.

Prompt

newsletter_from_source

Iniciador invocable por el usuario: redacta un boletín editorial mensual a partir de una URL o un resumen. Se encadena con mailchimp_playbook (topic: design-campaign) y recorre el flujo borrador → prueba → envío.

Todos los datos de los recursos también son accesibles a través de las herramientas. Las colecciones grandes (audiences, campaigns) no se exponen como recursos: usa la operación list en la herramienta correspondiente. Referencia de diseño para el prompt: docs/email-design-playbook.md.

Características

Construido sobre @cyanheads/mcp-ts-core:

  • Definiciones declarativas de herramientas, recursos y prompts: un solo archivo por primitiva, el framework gestiona el registro y la validación

  • Manejo de errores unificado: los manejadores lanzan excepciones, el framework las captura, clasifica y formatea

  • Autenticación conectable: none, jwt, oauth

  • Registro estructurado con trazado opcional de OpenTelemetry

  • Transportes STDIO y Streamable HTTP

Específico de Mailchimp:

  • Deriva automáticamente la URL base de la API a partir del sufijo -dc de la clave de API

  • Flujos de envío seguros por defecto: confirmación reentrante, importaciones en estado pendiente, sin eliminaciones permanentes desde la superficie del agente

  • Las herramientas de flujo de trabajo paralelizan las subpeticiones relacionadas bajo un límite de concurrencia configurable

  • La normalización de dominio transforma las cargas útiles dispersas de upstream en una salida compacta y amigable para LLM sin inventar valores

Primeros pasos

Añade lo siguiente a tu archivo de configuración del cliente MCP. Consulta docs/api-key.md para saber cómo generar una clave de API de Mailchimp.

{
  "mcpServers": {
    "mailchimp-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/mailchimp-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "MAILCHIMP_API_KEY": "your-key-with-dc-suffix-e.g.-us22"
      }
    }
  }
}

O con npx (no se requiere Bun):

{
  "mcpServers": {
    "mailchimp-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/mailchimp-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "MAILCHIMP_API_KEY": "your-key-with-dc-suffix-e.g.-us22"
      }
    }
  }
}

O con Docker:

{
  "mcpServers": {
    "mailchimp-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "-e", "MAILCHIMP_API_KEY=your-key-with-dc-suffix-e.g.-us22",
        "ghcr.io/cyanheads/mailchimp-mcp-server:latest"
      ]
    }
  }
}

Para Streamable HTTP, configura el transporte e inicia el servidor:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 MAILCHIMP_API_KEY=... bun run start:http
# Server listens at http://localhost:3010/mcp

Requisitos previos

  • Bun v1.4.0 o superior (o Node.js v24+).

  • Una clave de API de Mailchimp Marketing: el sufijo -dc de la clave (p. ej. -us22) identifica tu centro de datos y se analiza al inicio.

Instalación

  1. Clona el repositorio:

git clone https://github.com/cyanheads/mailchimp-mcp-server.git
  1. Accede al directorio:

cd mailchimp-mcp-server
  1. Instala las dependencias:

bun install
  1. Configura el entorno:

cp .env.example .env
# edit .env and set MAILCHIMP_API_KEY

Configuración

Variable

Descripción

Por defecto

MAILCHIMP_API_KEY

Obligatoria. Clave de API de Mailchimp Marketing, incluido el sufijo -dc (p. ej. abc…-us22).

MAILCHIMP_BASE_URL

Sobrescribe la URL base de la API (para servidores simulados o pruebas).

https://{dc}.api.mailchimp.com/3.0

MAILCHIMP_TIMEOUT_MS

Tiempo de espera por petición en milisegundos.

60000

MAILCHIMP_MAX_RETRIES

Número máximo de reintentos para fallos transitorios de upstream (0-10).

3

MAILCHIMP_CONCURRENCY_LIMIT

Máximo de peticiones upstream en curso por herramienta de flujo de trabajo (1-10).

4

MAILCHIMP_ASSETS_DIR

Ruta absoluta a un directorio local de recursos. Cuando se define (solo Node), habilita la herramienta mailchimp_assets y sube automáticamente las referencias @assets/<path> del HTML de la campaña a Mailchimp File Manager. Caché en <dir>/.mailchimp-cache.json.

sin definir

MAILCHIMP_TEMPLATES_DIR

Ruta absoluta a un directorio local de plantillas. Cuando se define (solo Node), habilita la herramienta mailchimp_local_templates y el soporte de content.localTemplate en las herramientas de campaña. Las plantillas son archivos .eta con archivos complementarios opcionales <name>.meta.yaml.

sin definir

MCP_TRANSPORT_TYPE

Transporte: stdio o http.

stdio

MCP_HTTP_HOST

Nombre de host del servidor HTTP.

127.0.0.1

MCP_HTTP_PORT

Puerto del servidor HTTP.

3010

MCP_HTTP_ENDPOINT_PATH

Ruta del endpoint de MCP.

/mcp

MCP_AUTH_MODE

Modo de autenticación: none, jwt u oauth.

none

MCP_LOG_LEVEL

Nivel de registro (RFC 5424).

info

LOGS_DIR

Directorio para los archivos de registro (solo Node.js).

<project-root>/logs

OTEL_ENABLED

Habilita OpenTelemetry.

false

Consulta .env.example para ver la lista completa de sobrescrituras opcionales.

Recursos locales (opcional)

Define MAILCHIMP_ASSETS_DIR para habilitar un flujo de trabajo de imágenes locales sobre Mailchimp File Manager. Coloca los archivos de imagen en el directorio, refiérelos en el HTML como @assets/<relative-path>, y el servidor los sube y reescribe en el momento del envío.

export MAILCHIMP_ASSETS_DIR=/Users/me/Pictures/email-assets

Luego, en una campaña:

<img src="@assets/hero.png" alt="Hero">
<a href="@assets/whitepaper.pdf">Download</a>

Cuando mailchimp_send_campaign (o mailchimp_campaigns set-content / mailchimp_replicate_campaign contentOverride) detecta estas referencias:

  1. Calcula el hash (SHA-256) de cada archivo referenciado.

  2. Sube los elementos no presentes en la caché a Mailchimp File Manager mediante la superficie de la herramienta mailchimp_files.

  3. Almacena en caché sha256 → file_id + URL en <assetsDir>/.mailchimp-cache.json (escrituras atómicas; se puede eliminar sin riesgo para forzar una nueva subida).

  4. Reescribe cada @assets/<path> a la URL pública del CDN antes de enviar el contenido a upstream.

La herramienta mailchimp_assets expone list, info, sync (precalentamiento) y clear-cache para inspección directa; la mayoría de los flujos de trabajo no la necesitan.

Advertencias:

  • Mailchimp limita las imágenes a 1 MB y el resto de archivos a 10 MB. Los archivos que superen el tamaño fallan antes de la subida con un error procesable.

  • Extensiones permitidas: consulta la descripción de la herramienta mailchimp_files. WebP y AVIF NO están en la lista de permitidos: conviértelos a PNG/JPG.

  • Se rechaza el path traversal (../ y las rutas absolutas lanzan Forbidden).

  • La herramienta mailchimp_assets es solo Node; en Cloudflare Workers no está registrada.

Plantillas locales (opcional)

Define MAILCHIMP_TEMPLATES_DIR para habilitar un flujo de trabajo de creación de plantillas locales sobre Eta (v4: rápido, nativo de ESM, compatible con parciales/condicionales/bucles). Esta es la vía de escritura canónica para plantillas en cuentas gratuitas de Mailchimp, donde la API /templates de upstream es de solo lectura.

export MAILCHIMP_TEMPLATES_DIR=/Users/me/email-templates
email-templates/
  welcome.eta              # body + optional YAML frontmatter
  newsletter.eta
  partials/
    header.eta
    footer.eta

Plantilla (welcome.eta): frontmatter YAML arriba, cuerpo Eta debajo:

---
subject: "Welcome to {{brand}}"
previewText: "Onboarding starts here"
vars:
  - firstName
  - brand
---
<%~ include('partials/header', it) %>
<h1>Hello <%= it.firstName %></h1>
<p>Welcome to <%= it.brand %>.</p>
<img src="@assets/hero.png" alt="Hero">

Frontmatter es opcional — un cuerpo sin bloque --- se trata como una plantilla sin metadatos. Todos los campos de metadatos también son opcionales. La lista vars: es solo informativa (las variables declaradas no están sujetas al esquema).

Respaldo sidecar (heredado): antes de v0.3.1, los metadatos se encontraban en un archivo <name>.meta.yaml separado junto al cuerpo. Esa forma sigue funcionando por compatibilidad hacia atrás — si un .eta no tiene frontmatter, el cargador recurre a leer el sidecar. El frontmatter tiene prioridad cuando ambos existen.

Referencia desde cualquier herramienta de campaña:

{
  "audienceId": "abc123",
  "subject": "Welcome to Acme",
  "fromName": "Casey",
  "replyTo": "casey@acme.com",
  "content": {
    "localTemplate": "welcome",
    "localTemplateVars": { "firstName": "Sam", "brand": "Acme" }
  },
  "mode": "draft"
}

El pipeline de renderizado:

  1. Eta renderiza welcome.eta con it = { firstName: 'Sam', brand: 'Acme' }.

  2. Si L1 está configurado, @assets/hero.png se sube al Administrador de archivos de Mailchimp y se reescribe a una URL de CDN.

  3. El HTML final se establece en la campaña mediante set-content de Mailchimp.

La herramienta mailchimp_local_templates expone list, get, render-preview (devuelve HTML sin enviar) y seed-from-mailchimp (lee una plantilla base/user de Mailchimp por ID y la escribe en disco como punto de partida — útil en el plan gratuito, donde puedes leer pero no escribir upstream).

Plantillas de ejemplo en este repositorio

El directorio templates/ contiene ejemplos funcionales — apunta MAILCHIMP_TEMPLATES_DIR directamente a él para probarlos, o cópialos a tu propio directorio como punto de partida:

Plantilla

Qué muestra

welcome.eta

Cuerpo mínimo — frontmatter que declara subject / previewText / vars, interpolación <%= it.firstName %>, bloque CTA condicional <% if %>

redden-gardens-april-2026.eta

Boletín HTML completo con estilos en línea. Demuestra la división recomendada: etiquetas de combinación de Mailchimp (*|FNAME|*) para la personalización por destinatario en envíos reales a listas, variables de Eta (volume / issue / monthYear / URLs) para constantes de toda la lista sustituidas en el momento del renderizado de la plantilla

Advertencias:

  • localTemplate es mutuamente excluyente con html y templateId en el mismo bloque de contenido.

  • La validación de variables no está impuesta por el esquema — las variables faltantes o sobrantes aparecen como errores de renderizado de Eta en el momento del envío.

  • Se rechaza el path traversal.

  • Solo Node; no disponible en Workers.

Ejecutar el servidor

Desarrollo local

  • Modo watch (transporte mediante MCP_TRANSPORT_TYPE):

    bun run dev                                     # stdio (default)
    MCP_TRANSPORT_TYPE=http bun run dev             # http
  • Compilar y ejecutar:

    bun run rebuild
    bun run start:stdio
    # or
    bun run start:http
  • Ejecutar comprobaciones y pruebas:

    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec

Docker

docker build -t mailchimp-mcp-server .
docker run --rm -e MAILCHIMP_API_KEY=your-key-us22 -p 3010:3010 mailchimp-mcp-server

El Dockerfile usa por defecto transporte HTTP, modo de sesión sin estado y registra en /var/log/mailchimp-mcp-server. Las dependencias pares de OpenTelemetry se instalan por defecto — compila con --build-arg OTEL_ENABLED=false para omitirlas.

Estructura del proyecto

Directorio

Propósito

src/index.ts

Punto de entrada de createApp(): registra herramientas/recursos/prompts e inicializa servicios.

src/config

Análisis y validación de variables de entorno específicas del servidor con Zod.

src/mcp-server/tools

Definiciones de herramientas (*.tool.ts). Dieciocho herramientas siempre activas más dos herramientas condicionales de espacio de trabajo local.

src/mcp-server/resources

Definiciones de recursos (*.resource.ts). Cuatro recursos de instantánea.

src/mcp-server/prompts

Definiciones de prompts (*.prompt.ts). Prompt inicial de boletín.

src/services/mailchimp

Envoltorio del cliente de Mailchimp: manejo HTTP, reintentos, normalización, superficie tipada.

tests/

Cobertura de Vitest para configuración, servicios, flujos de trabajo de herramientas, formato de salida, contratos del framework y regresiones.

Guía de desarrollo

Consulta CLAUDE.md para las pautas de desarrollo y las reglas arquitectónicas. La versión corta:

  • Los handlers lanzan excepciones, el framework las captura — no uses try/catch en la lógica de las herramientas.

  • Usa ctx.log para el registro con ámbito de solicitud.

  • Registra nuevas herramientas y recursos mediante los barrels en src/mcp-server/*/definitions/index.ts.

  • Envuelve las llamadas a API externas: valida el dato bruto → normaliza al tipo de dominio → devuelve el esquema de salida; nunca inventes campos faltantes.

Contribuciones

Las issues y los pull requests son bienvenidos. Ejecuta las comprobaciones y las pruebas antes de enviar:

bun run devcheck
bun run test

Licencia

Este proyecto está licenciado bajo la Licencia Apache 2.0. Consulta el archivo LICENSE para más detalles.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that interfaces with the Mailchimp Marketing API to manage audiences, email campaigns, and subscribers. It enables users to create and schedule campaigns, handle member lists, and send test or live emails through natural language commands.
    13
    29
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A production-grade MCP server that integrates with the Mailchimp Marketing API to manage campaigns, audiences, members, and reports. It provides 28 specialized tools for automating marketing tasks such as sending emails, managing subscriber tags, and analyzing performance data.
    71
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with the Mailchimp API for managing campaigns, lists, templates, reports, and automations through natural language.
    3
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Manage Mailchimp audiences, campaigns, and members via the Mailchimp Marketing API through natural language queries.
    12
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cyanheads/mailchimp-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server