Lettr MCP
MCP para la API de correo electrónico transaccional de Lettr
Documentación
Servidor Lettr MCP
El servidor oficial de Model Context Protocol (MCP) para Lettr — la API de correo electrónico para desarrolladores. Envía correos transaccionales, gestiona plantillas con etiquetas de combinación, configura dominios y supervisa webhooks — directamente desde cualquier cliente MCP como Claude Desktop, Cursor o Claude Code.
¿Por qué Lettr?
Lettr es una plataforma moderna de envío de correos construida para desarrolladores. Ofrece una API REST limpia, un potente editor de plantillas de arrastrar y soltar, personalización con etiquetas de combinación, seguimiento de aperturas y clics, y la mejor capacidad de entrega de su clase. Ya sea que envíes restablecimientos de contraseña, confirmaciones de pedidos o secuencias de incorporación, Lettr lo hace simple y confiable.
- Referencia de API — Documentación completa de la API REST
- Plantillas — Editor visual de correos con etiquetas de combinación
- Dominios — Verificación de dominios y configuración de DNS
- Webhooks — Notificaciones de eventos en tiempo real
- Guías de inicio rápido — Node.js, PHP, Laravel, Python, Go, Rust y más
Características
- Enviar correos — Envía correos transaccionales con HTML, texto plano, CC/CCO, adjuntos, opciones de seguimiento, metadatos y etiquetas. Admite envío basado en plantillas con sustitución de etiquetas de combinación, entrega programada e inspección de mensajes y eventos enviados.
- Plantillas — Lista, crea, obtén, actualiza y elimina plantillas de correo, transaccionales o de campaña. Recupera el HTML renderizado y las etiquetas de combinación para descubrir qué variables espera una plantilla antes de enviar.
- Dominios — Lista, crea, obtén, elimina y verifica dominios de envío. Consulta los registros DNS requeridos para la autenticación SPF, DKIM y DMARC.
- Webhooks — Lista, crea, obtén, actualiza y elimina configuraciones de webhook para notificaciones de eventos de correo en tiempo real.
- Proyectos — Lista los proyectos disponibles para tu equipo para que puedas dirigir las herramientas de plantillas y correos a un proyecto específico.
- Audiencia — Gestiona contactos, listas, temas de suscripción, propiedades personalizadas y segmentos. Crea y actualiza contactos (con doble opt-in), adjunta contactos a listas y temas, importación masiva y construye segmentos a partir de condiciones de coincidencia.
- Sistema — Verificación de estado y validación de clave de API para configuración y diagnóstico del cliente.
Configuración
- Crea una cuenta gratuita de Lettr
- Crea una clave de API en tu panel de control
- Verifica tu dominio para enviar correos a cualquier destinatario
Uso
Claude Code
claude mcp add lettr -e LETTR_API_KEY=lttr_xxxxxxxxx -- npx -y lettr-mcp
Cursor
Abre la paleta de comandos y elige "Cursor Settings" > "MCP" > "Add new global MCP server".
{
"mcpServers": {
"lettr": {
"command": "npx",
"args": ["-y", "lettr-mcp"],
"env": {
"LETTR_API_KEY": "lttr_xxxxxxxxx"
}
}
}
}
Claude Desktop
Abre la configuración de Claude Desktop > pestaña "Developer" > "Edit Config".
{
"mcpServers": {
"lettr": {
"command": "npx",
"args": ["-y", "lettr-mcp"],
"env": {
"LETTR_API_KEY": "lttr_xxxxxxxxx"
}
}
}
}
Opciones
Puedes pasar argumentos adicionales para configurar el servidor:
--key: Tu clave de API de Lettr (alternativa a la variable de entornoLETTR_API_KEY)--sender: Dirección de correo del remitente predeterminada de un dominio verificado--reply-to: Dirección de correo de respuesta predeterminada
Variables de entorno:
LETTR_API_KEY: Tu clave de API de Lettr (obligatoria)SENDER_EMAIL_ADDRESS: Dirección de correo del remitente predeterminada de un dominio verificado (opcional)REPLY_TO_EMAIL_ADDRESS: Dirección de correo de respuesta predeterminada (opcional)
Nota: Si no proporcionas una dirección de correo del remitente, el servidor MCP la solicitará cada vez que envíes un correo.
Herramientas disponibles
Correos
| Herramienta | Descripción |
|---|---|
send-email | Envía un correo transaccional con HTML, texto plano, plantillas, adjuntos, seguimiento y personalización |
list-emails | Lista los correos enviados recientemente (paginados por cursor, con filtros de destinatario y fecha) |
list-email-events | Lista los eventos de correo (entrega, rebote, clic, apertura, …) con filtros por tipo, destinatario, transmisión y rango de fechas |
get-email-detail | Recupera la línea de tiempo completa de entrega de una sola transmisión por ID de solicitud |
schedule-email | Programa un correo transaccional para entrega futura (5+ minutos adelante, dentro de 30 días) |
list-scheduled-emails | Lista los correos en espera de envío, con un filtro de estado |
get-scheduled-email | Obtén el estado y los eventos de un correo programado |
cancel-scheduled-email | Cancela un correo programado antes de que se envíe |
Plantillas
| Herramienta | Descripción |
|---|---|
list-templates | Lista las plantillas de correo, filtrables por propósito y carpeta |
get-template | Obtén los detalles completos de la plantilla, incluido el contenido HTML |
create-template | Crea una nueva plantilla con HTML o JSON del editor visual, transaccional o de campaña |
update-template | Actualiza el nombre y/o contenido de la plantilla (crea una nueva versión) |
delete-template | Elimina permanentemente una plantilla y todas sus versiones |
get-merge-tags | Descubre las variables de etiquetas de combinación que espera una plantilla |
get-template-html | Recupera el HTML renderizado, el asunto y las etiquetas de combinación de una plantilla por ID de proyecto y slug |
Propósito de la plantilla. Una plantilla es transactional (el predeterminado — recibos, restablecimientos de contraseña, alertas) o campaign (marketing enviado a una lista de audiencia). Una campaña solo puede enviar una plantilla cuyo propósito sea campaign, y el propósito no se puede cambiar después de la creación, por lo que un boletín creado con el predeterminado debe reconstruirse. Pasa purpose a create-template siempre que el mensaje vaya a una audiencia en lugar de a una persona.
Estado de preparación. Las plantillas importadas se renderizan de forma asíncrona, por lo que una plantilla puede existir antes de poder enviarse. list-templates y get-template informan pending, ready o failed. Después de una actualización, el renderizado anterior sigue sirviendo hasta que el nuevo se asiente, por lo que una plantilla pendiente aún se envía — solo que aún no con el contenido nuevo.
Carpetas
| Herramienta | Descripción |
|---|---|
list-folders | Lista las carpetas en las que se archivan las plantillas, con propósito y recuento de plantillas |
Las carpetas son la única forma de descubrir un folder_id. Sin esta herramienta, la opción es omitir folder_id y aceptar la carpeta que elija la API, o adivinar un entero leído de una URL de la aplicación. El propósito de una carpeta es independiente del de sus plantillas — archivar una plantilla en una carpeta de campaña no la convierte en una plantilla de campaña.
Dominios
| Herramienta | Descripción |
|---|---|
list-domains | Lista todos los dominios de envío y su estado de verificación |
create-domain | Registra un nuevo dominio de envío |
get-domain | Obtén los detalles del dominio con registros DNS |
delete-domain | Elimina un dominio de envío |
verify-domain | Activa la verificación DNS de un dominio |
Webhooks
| Herramienta | Descripción |
|---|---|
list-webhooks | Lista todas las configuraciones de webhook |
get-webhook | Obtén los detalles del webhook y el estado de entrega |
create-webhook | Crea una nueva suscripción de webhook con autenticación y selección de tipo de evento |
update-webhook | Actualiza un webhook existente (nombre, URL, autenticación, eventos, indicador de activo) |
delete-webhook | Elimina una suscripción de webhook |
Proyectos
| Herramienta | Descripción |
|---|---|
list-projects | Lista los proyectos propiedad del equipo — útil para descubrir IDs de proyectos |
Audiencia
| Herramienta | Descripción |
|---|---|
list-audience-lists | Lista las listas de audiencia (contactos) con paginación |
create-audience-list | Crea una nueva lista de audiencia |
get-audience-list | Obtén una sola lista y su recuento de contactos |
update-audience-list | Renombra una lista de audiencia |
delete-audience-list | Elimina una lista de audiencia |
bulk-delete-audience-lists | Elimina hasta 50 listas en una sola llamada |
list-audience-contacts | Lista contactos con filtros de búsqueda, estado, lista y segmento |
get-audience-contact | Obtén un contacto con sus propiedades, listas y temas |
create-audience-contact | Crea un contacto, opcionalmente con doble opt-in |
bulk-create-audience-contacts | Crea muchos contactos, ya sea desde una lista plana de correos o una fila por contacto |
update-audience-contact | Actualiza el correo, estado o propiedades de un contacto |
delete-audience-contact | Elimina un contacto |
attach-contact-to-list | Agrega un contacto a una lista |
detach-contact-from-list | Elimina un contacto de una lista |
subscribe-contact-to-topic | Suscribe un contacto a un tema |
unsubscribe-contact-from-topic | Cancela la suscripción de un contacto a un tema |
bulk-attach-contacts-to-lists | Adjunta muchos contactos a muchas listas a la vez |
bulk-detach-contacts-from-lists | Desadjunta muchos contactos de muchas listas a la vez |
bulk-subscribe-contacts-to-topics | Suscribe muchos contactos a muchos temas a la vez |
bulk-unsubscribe-contacts-from-topics | Cancela la suscripción de muchos contactos a muchos temas a la vez |
list-audience-topics | Lista los temas de suscripción con paginación |
create-audience-topic | Crea un tema de suscripción |
get-audience-topic | Obtén un solo tema |
update-audience-topic | Actualiza el nombre, descripción o visibilidad de un tema |
delete-audience-topic | Elimina un tema de suscripción |
list-audience-properties | Lista las propiedades personalizadas de contactos |
create-audience-property | Define una nueva propiedad personalizada |
get-audience-property | Obtén una sola propiedad |
update-audience-property | Actualiza el valor de respaldo de una propiedad |
delete-audience-property | Elimina una propiedad personalizada |
list-audience-segments | Lista los segmentos, opcionalmente filtrados por lista |
create-audience-segment | Crea un segmento a partir de condiciones de coincidencia |
get-audience-segment | Obtén un solo segmento y sus condiciones |
update-audience-segment | Actualiza el nombre, lista o condiciones de un segmento |
delete-audience-segment | Elimina un segmento |
Sistema
| Herramienta | Descripción |
|---|---|
health-check | Verifica el estado de salud de la API de Lettr |
auth-check | Valida la clave de API configurada y devuelve el ID del equipo |
Desarrollo local
- Clona y compila:
git clone https://github.com/nicholasgriffintn/lettr-mcp.git
cd lettr-mcp
pnpm install
pnpm run build
- Usa la compilación local en tu cliente MCP:
{
"mcpServers": {
"lettr": {
"command": "node",
"args": ["ABSOLUTE_PATH_TO_PROJECT/dist/index.js"],
"env": {
"LETTR_API_KEY": "lttr_xxxxxxxxx"
}
}
}
}
Pruebas con MCP Inspector
Asegúrate de haber compilado el proyecto primero (consulta Desarrollo local arriba).
-
Establece tu clave de API:
export LETTR_API_KEY=lttr_your_key_here -
Inicia el inspector:
pnpm inspector -
En el navegador (Interfaz del Inspector):
- Elige stdio (iniciar un proceso).
- Comando:
node - Argumentos:
dist/index.js - Entorno:
LETTR_API_KEY=lttr_your_key_here - Haz clic en Conectar, luego usa "List tools" para verificar que el servidor funciona.
Recursos
- Sitio web de Lettr
- Documentación de la API
- Guía de configuración de MCP
- Referencia de herramientas MCP
- Lenguaje de plantillas
- Guías de configuración de DNS
- Base de conocimientos
Licencia
MIT