Agent Mailbox
Agent Mailbox
Agent Mailbox proporciona a las pruebas automatizadas y a los agentes de IA direcciones de correo electrónico de corta duración para flujos de registro, verificación, enlaces mágicos y restablecimiento de contraseña. Se ejecuta en tu propia cuenta de Cloudflare y expone tanto una API JSON como un endpoint MCP sin estado.
Cada dirección tiene un token de buzón aleatorio separado. Los mensajes viven en un Durable Object respaldado por SQLite, los adjuntos viven en R2, y una alarma elimina el buzón cuando expira su tiempo de vida.
Inicio rápido
Necesitas Node.js 24 o superior y una cuenta de Cloudflare con al menos un dominio activo. Crea e implementa una copia nueva con:
npx create-agent-mailbox@latestEl paquete
create-agent-mailboxestará disponible cuando se publique la primera versión pública. Hasta entonces, clona este repositorio y ejecuta:
pnpm install
pnpm run setupLa CLI de TypeScript utiliza el inicio de sesión del navegador de Wrangler, carga las zonas activas de tu cuenta y recomienda nombres de host dedicados mail.<domain> y mailbox.<domain>. Muestra un plan de implementación antes de realizar cualquier cambio. Una vez aprobado, configura Email Routing, subaddressing y Email Sending, ejecuta las comprobaciones del proyecto e implementa el Worker. Cloudflare aprovisiona el bucket R2, el Durable Object, los registros DNS y la regla de dirección entrante a partir de la configuración del Worker. La cuenta de la zona seleccionada se fija en la configuración generada del Worker, por lo que Wrangler no te pedirá que la elijas de nuevo.
El arrancador utiliza Corepack para instalar el lockfile exacto de pnpm del repositorio; no es necesario instalar pnpm globalmente.
Después de la implementación, el mismo flujo puede conectar Codex o Claude Code e instalar la habilidad Agent Mailbox incluida. El cliente recibe solo la ruta a un puente de credenciales local; la clave API permanece en el archivo de credenciales ignorado con modo 0600. Reinicia un cliente ya abierto después de conectarlo.
Cada zona seleccionada obtiene un Worker aislado con el nombre de la zona, como agent-mailbox-example-com. Puedes implementar Agent Mailbox para varios dominios en la misma cuenta de Cloudflare sin que una configuración reemplace el enrutamiento, almacenamiento, secretos o configuración de otro dominio. Mantén cada implementación de larga duración en su propio directorio de proyecto para que su configuración y credenciales generadas sigan disponibles; por ejemplo, usa npx create-agent-mailbox@latest mailbox-example-net para un segundo dominio.
Si Wrangler tiene varios perfiles de autenticación, la configuración pregunta cuál usar antes de cargar sus zonas. Un solo perfil se selecciona automáticamente. Para la configuración mediante scripts, pasa --profile <name> explícitamente.
El OAuth de Wrangler es suficiente; no necesitas crear un token de API de Cloudflare separado. Las comprobaciones de disponibilidad de DNS utilizan el resolutor DNS público de Cloudflare, y Wrangler maneja cualquier confirmación final de conflicto de dominio personalizado durante la implementación.
La CLI genera una clave API maestra y la envía a Wrangler a través de la entrada estándar, por lo que nunca aparece en la línea de comandos. Se escribe una copia local en el archivo ignorado .agent-mailbox.credentials.json con modo 0600; esta es la credencial que darás a los clientes API o MCP. Muévela a tu gestor de contraseñas si no quieres conservar la copia local.
Modos de configuración útiles:
# Validate local setup code and configuration. No login or Cloudflare changes.
pnpm mailbox deploy --check
# Log in, select a zone, and inspect DNS, but make no changes.
pnpm mailbox deploy --plan
# Scripted use after Wrangler is already authenticated.
pnpm mailbox deploy --zone example.com --yespnpm run setup sigue siendo un alias de compatibilidad para pnpm mailbox deploy.
Gestionar implementaciones
Agent Mailbox utiliza Cloudflare como fuente de verdad en lugar de mantener un segundo registro local:
# Find every Agent Mailbox Worker accessible to a Wrangler profile.
pnpm run list
# Check Worker bindings, custom domain, Email Routing, MX records, health,
# local credentials, and authenticated MCP connectivity.
pnpm run doctor
# Configure an installed MCP client and copy the portable Agent Skill.
pnpm run connect
# Safely remove one deployment after showing its exact Cloudflare resources.
pnpm run teardown
# Remove this checkout's MCP client connections and optionally its credentials.
pnpm run disconnect
# Empty and delete an R2 bucket retained by an earlier teardown.
pnpm run purge-datalist muestra qué implementación coincide con las credenciales en el checkout actual. doctor usa por defecto el Worker en wrangler.jsonc; pasa un nombre de Worker, dominio de correo o nombre de host MCP para inspeccionar otra instancia descubierta. Las comprobaciones MCP autenticadas se omiten para instancias cuya clave API no esté disponible localmente.
Para la configuración de cliente no interactiva, selecciona uno o más clientes explícitamente:
pnpm run connect --client codex --yes
pnpm run connect --client codex --client claude --yesLa habilidad incluida se instala en el directorio de habilidades de usuario del cliente seleccionado. Usa --no-skill si solo quieres la conexión MCP. Las conexiones de cliente existentes o los directorios de habilidades con contenido diferente no se modifican.
Eliminar una implementación
teardown selecciona una instancia descubierta y requiere su nombre completo de Worker como confirmación. Elimina solo la regla exacta de Email Routing entrante de ese Worker, el dominio personalizado, el Worker y el espacio de nombres del Durable Object. El DNS de Email Routing a nivel de zona compartido, el subaddressing, el Email Sending y otras implementaciones de Agent Mailbox permanecen sin cambios.
# Inspect the exact removal plan without changing Cloudflare.
pnpm run teardown -- agent-mailbox-example-com --dry-run
# Remove the Worker while retaining its R2 attachment bucket.
pnpm run teardown -- agent-mailbox-example-com
# Irreversibly empty and delete the attachment bucket as well.
pnpm run teardown -- agent-mailbox-example-com --purge-dataLa operación está ordenada para que el Worker se elimine al final. Si un paso anterior falla, vuelve a ejecutar el mismo comando para continuar de forma segura. Para uso desatendido, proporciona la instancia, el perfil de Wrangler y --yes explícitamente.
Cuando teardown conserva adjuntos, escribe un recibo de limpieza ignorado con modo 0600 en el directorio del proyecto. Esto mantiene la cuenta y el bucket exactos descubribles después de que el Worker haya desaparecido. Elimínalo más tarde con:
pnpm run purge-dataUsa disconnect por separado para la limpieza local. Por defecto elimina las conexiones MCP seleccionadas y conserva tanto las credenciales como la habilidad compartida. El modo interactivo ofrece eliminar las credenciales coincidentes; el uso mediante scripts requiere --remove-credentials. Debido a que la habilidad puede servir a múltiples implementaciones, solo se elimina con la opción explícita --remove-skill.
Reimplementar, actualizar y rotar credenciales
Volver a ejecutar la configuración para el mismo dominio es una reimplementación segura. Si este proyecto tiene credenciales locales coincidentes, la configuración reinstala la misma clave API maestra en lugar de invalidar a los clientes conectados. Reemplazar la clave siempre requiere una elección explícita o --rotate-credentials.
Para actualizar una implementación desde una futura versión etiquetada, crea el nuevo código fuente sin implementar, copia la configuración generada y las credenciales ignoradas del proyecto anterior, revisa los cambios y luego ejecuta la configuración:
npx create-agent-mailbox@X.Y.Z agent-mailbox-next --no-deploy
cp agent-mailbox/wrangler.jsonc agent-mailbox/.agent-mailbox.credentials.json agent-mailbox-next/
cd agent-mailbox-next
corepack pnpm run setup
corepack pnpm run doctorMantén el directorio anterior hasta que doctor tenga éxito. Wrangler conserva versiones anteriores del Worker para la reversión. Si las credenciales locales no están disponibles, la configuración rechaza el reemplazo no interactivo a menos que se proporcione --rotate-credentials.
Modelo de seguridad
Una clave API maestra protege cada solicitud API y MCP.
Un token de buzón separado protege cada buzón creado.
Los buzones expiran automáticamente después de como máximo el TTL máximo configurado.
El correo entrante a direcciones desconocidas o expiradas se rechaza.
Los contenidos de correo electrónico son datos no confiables. La extracción de enlaces y códigos es determinista.
El envío saliente está limitado por buzón y está destinado solo a correos de prueba.
Las respuestas API que contienen datos de buzón usan
Cache-Control: no-store.
No expongas una implementación sin una clave API maestra fuerte. Este proyecto es una herramienta de prueba autoalojada, no un servicio público de correo desechable.
Requisitos
Node.js 24 o superior. pnpm 10 solo se requiere cuando se desarrolla desde un clon.
Una cuenta de Cloudflare con un dominio en Cloudflare.
Acceso a Cloudflare Email Routing y Email Sending para ese dominio.
La CLI requiere subdominios dedicados en lugar de tomar un dominio raíz. Agent Mailbox crea direcciones como inbox+purpose-random@mail.example.com. Algunos servicios rechazan o normalizan los alias +; esos servicios pueden requerir una implementación dedicada de captura de todo en una futura versión.
Implementación manual
La CLI de configuración es la ruta recomendada. Estos son los pasos manuales equivalentes.
1. Configurar el Worker
Edita wrangler.jsonc y reemplaza cada valor example.com:
namedebe ser único para cada implementación de Agent Mailbox en la cuenta de Cloudflare.addresses[0]es la dirección base entrante, normalmenteinbox@<EMAIL_DOMAIN>.routes[0].patternes el nombre de host público de API y MCP.vars.EMAIL_DOMAINes el dominio utilizado para las direcciones generadas.vars.MCP_HOSTNAMEes el nombre de host permitido por el transporte MCP.
Si cambias los nombres de los enlaces, ejecuta pnpm exec wrangler types y confirma el worker-configuration.d.ts actualizado.
2. Aprovisionar funciones de correo a nivel de dominio
En el panel de Cloudflare, abre Compute → Email Service:
Habilita el subaddressing en su configuración de Email Routing.
Incorpora el mismo dominio en Email Sending.
La entrada addresses de Wrangler crea la regla de dirección entrante cuando se implementa el Worker, pero el DNS, el enrutamiento a nivel de zona, el subaddressing y la elegibilidad de envío ya deben estar configurados.
3. Verificar e implementar
pnpm check
pnpm deployWrangler aprovisiona el bucket R2, el Durable Object, el nombre de host personalizado y la regla de dirección entrante desde wrangler.jsonc. Esto implementa la aplicación en tu cuenta de Cloudflare; no publica este repositorio Git.
4. Proteger la implementación
Crea un valor aleatorio largo en tu gestor de contraseñas y luego introdúcelo en el prompt interactivo de Wrangler:
pnpm exec wrangler secret put AGENT_API_KEYNunca pongas este valor en wrangler.jsonc, en un comando de shell o en el control de código fuente.
5. Verificar la implementación
Verifica el endpoint público de salud:
curl https://mailbox.example.com/healthReemplaza el nombre de host con tu ruta configurada. Una respuesta exitosa es {"ok":true}.
Desarrollo local
pnpm install
cp .dev.vars.example .dev.vars
pnpm devReemplaza el secreto de ejemplo en .dev.vars antes de iniciar el Worker. El estado local del Durable Object y R2 se almacena en el directorio ignorado .wrangler.
Ejecuta la suite de verificación completa con:
pnpm checkAPI JSON
Todas las rutas de buzón requieren la clave maestra:
Authorization: Bearer <AGENT_API_KEY>Las operaciones específicas del buzón también requieren el token devuelto en la creación:
X-Mailbox-Token: <MAILBOX_TOKEN>Crear un buzón
curl -X POST https://mailbox.example.com/api/mailboxes \
-H "Authorization: Bearer $AGENT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"purpose":"signup","ttlSeconds":3600}'La respuesta contiene address, mailboxToken y expiresAt. Guarda el token del buzón; no se puede recuperar.
Esperar un correo de verificación
curl "https://mailbox.example.com/api/mailboxes/$ADDRESS/wait?subject=verify&timeoutSeconds=20" \
-H "Authorization: Bearer $AGENT_API_KEY" \
-H "X-Mailbox-Token: $MAILBOX_TOKEN"Rutas:
POST /api/mailboxesGET /api/mailboxes/:address/messagesGET /api/mailboxes/:address/messages/:idGET /api/mailboxes/:address/messages/:id/linksGET /api/mailboxes/:address/messages/:id/codesGET /api/mailboxes/:address/messages/:id/attachments/:indexGET /api/mailboxes/:address/waitPOST /api/mailboxes/:address/sendDELETE /api/mailboxes/:addressGET /health
Los índices de adjuntos provienen del array attachments devuelto con un mensaje completo y son de base cero.
MCP
El endpoint HTTP Streamable es https://<your-hostname>/mcp. Configura tu cliente MCP con esa URL y este encabezado:
Authorization: Bearer <AGENT_API_KEY>Herramientas disponibles:
create_mailboxwait_for_emaillist_emailsget_emailget_linksget_codessend_emaildelete_mailbox
La configuración de cliente más fácil es:
pnpm run connectEsto es compatible con Codex y Claude Code. Da a cada implementación un nombre de conexión MCP único, lo que permite a los clientes distinguir múltiples dominios de Agent Mailbox.
Puente stdio opcional
Los clientes MCP más antiguos pueden usar bin/agent-mailbox-mcp, que ejecuta mcp-remote desde las dependencias de este proyecto. Después de la configuración automatizada, lee el endpoint y la clave de .agent-mailbox.credentials.json:
bin/agent-mailbox-mcpPuedes sobrescribir esos valores generados con variables de entorno:
export AGENT_MAILBOX_MCP_URL=https://mailbox.example.com/mcp
export AGENT_MAILBOX_API_KEY='<master-api-key>'
bin/agent-mailbox-mcpPara clientes gráficos de Linux, almacena la clave en Secret Service en lugar de una variable de entorno y configura estos atributos de búsqueda no secretos:
export AGENT_MAILBOX_MCP_URL=https://mailbox.example.com/mcp
export AGENT_MAILBOX_KEYRING_SERVICE=agent-mailbox
export AGENT_MAILBOX_KEYRING_ACCOUNT=agent-mailbox
bin/agent-mailbox-mcpOperaciones
TTL de buzón predeterminado: un día.
TTL máximo de buzón: siete días.
Límite de envío predeterminado: 20 mensajes por buzón por día UTC.
Los registros y trazas de Workers están habilitados en
wrangler.jsonc; ajusta el muestreo según tu tráfico y presupuesto esperados.Eliminar o expirar un buzón también elimina sus adjuntos R2.
Trata la clave API maestra y cada token de buzón como credenciales. Los cuerpos de correo, encabezados, enlaces, códigos y adjuntos pueden contener datos personales o sensibles.
Soporte, contribuciones y seguridad
Abre un issue de GitHub para errores reproducibles, solicitudes de funciones y preguntas de uso comunes. Consulta CONTRIBUTING.md para obtener orientación sobre desarrollo y SECURITY.md para informar vulnerabilidades de forma privada. Nunca incluyas credenciales, contenidos de buzones o identificadores de implementación privados en un issue.
Licencia
Agent Mailbox está disponible bajo la Licencia MIT.
This server cannot be installed
Maintenance
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
Shipmail MCP server for AI agent custom-domain email inboxes with REST API and webhooks.
Hosted email MCP for AI agents with inboxes, send/receive, memory, recovery, and credits.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/stumct/agent-mailbox'
If you have feedback or need assistance with the MCP directory API, please join our Discord server