UnCorreoTemporal /Documentación/MCP Server

MCP Email Server

Servidor MCP nativo que expone 5 herramientas para agentes de IA. Compatible con Claude Desktop, Cursor, Continue y cualquier cliente que implemente el Model Context Protocol .

¿Qué es MCP?

El Model Context Protocol (MCP) es un estándar abierto creado por Anthropic que permite a los agentes de IA acceder a herramientas externas de forma nativa. En lugar de escribir prompts para simular acciones, el agente llama directamente a funciones tipadas con parámetros y respuestas estructuradas.

Nativo, no simulado

El agente llama funciones reales con parámetros tipados. No depende de que el LLM interprete texto libre.

Sin estado compartido

Cada llamada es independiente. El servidor MCP gestiona la autenticación una sola vez al arrancar.

Compatible con cualquier LLM

Claude, GPT-4, Gemini — cualquier modelo con soporte MCP puede usar estas herramientas.

Instalación

1 Obtener una API Key

El servidor MCP requiere un plan Pro o superior. Crea tu cuenta, activa un plan Pro o Team y genera una API key con prefijo uct_ .

2 Configurar Claude Desktop

Agrega la siguiente entrada a claude_desktop_config.json (ubicado en ~/Library/Application Support/Claude/ en macOS):

claude_desktop_config.json
{
  "mcpServers": {
    "uncorreotemporal": {
      "url": "https://uncorreotemporal.com/mcp",
      "headers": {
        "Authorization": "Bearer uct_xxxxx"
      }
    }
  }
}

Sin instalación local. El servidor corre en https://uncorreotemporal.com/mcp y autentica cada sesión con tu API key. Reinicia Claude Desktop tras guardar para que aparezcan las 5 herramientas.

create_signup_inboxtool

Crea un inbox temporal etiquetado con el nombre del servicio donde el agente va a registrarse. Devuelve el email listo para usar.

Parámetros

service_namerequerido · string
ttl_minutesopcional · integer ≥ 1

Retorna

{
  inbox_id: "uuid",
  email: "slug@uncorreotemporal.com",
  expires_at: "ISO8601",
  service_name: "github"
}
wait_for_verification_emailtool

Espera hasta que llegue un email al inbox, con polling interno y timeout configurable. Retorna inmediatamente cuando detecta el mensaje — sin que el agente tenga que hacer polling manual.

Parámetros

inbox_idrequerido · string
timeout_secondsopcional · default 90
subject_containsopcional · filtro de asunto
from_containsopcional · filtro de remitente

Retorna

{
  status: "received" | "timeout",
  message_id, subject,
  from_address, body_text,
  body_html
}
get_latest_emailtool

Lee el último email recibido en el inbox, incluyendo el cuerpo completo. Útil cuando el email ya llegó y no se necesita esperar.

Parámetros

inbox_idrequerido · string
mark_as_readopcional · boolean, default false

Retorna

message_id, subject,
from_address, body_text,
body_html, has_attachments,
marked_as_read
extract_otp_codetool

Extrae el código OTP (4–8 dígitos) de un mensaje. Puede recibir el texto directamente o buscar el mensaje por inbox_id + message_id.

Parámetros (al menos uno requerido)

message_textopcional · string
inbox_idopcional · string
message_idopcional · string
otp_length_min / maxopcional · default 4/8

Retorna

{
  otp_code: "847291",
  candidates: ["847291"]
}

Flujo completo — Registro autónomo

El siguiente ejemplo muestra cómo un agente Claude usa las 5 herramientas para registrarse en un servicio web sin intervención humana:

Prompt al agente Claude

"Regístrate en example.com con un email temporal, confirma la cuenta y dime el nombre de usuario generado."

1.
create_signup_inbox(service_name="example") → obtiene slug42@uncorreotemporal.com (inbox_id: "uuid-...")
2.
[browser action] → se registra en example.com con ese email
3.
wait_for_verification_email(inbox_id="uuid-...", timeout_seconds=90) → status="received" — email de noreply@example.com detectado
4.
extract_otp_code(inbox_id="uuid-...", message_id="...") → otp_code="847291"
5.
[browser action] → ingresa el código → cuenta confirmada

Límites por plan

PlanMCPReq/día
Free
Builder
Pro✓ Incluido2,000/día
Team✓ Incluido10,000/día

Al superar el límite de llamadas, la herramienta retorna {"error": "quota_exceeded"}. El agente debe manejar este caso y notificar al usuario.