Skip to main content
Glama
luleigreat

issue-collector

by luleigreat

send_issue_email MCP

Envía el correo de contacto y la descripción del problema que deja el usuario al transferir a un agente humano, mediante SMTP, a un buzón de servicio fijo.

El agente solo ve una herramienta: send_issue_email(email, question).

Cuáles son los tres correos

Rol

Origen

Uso

Remitente From

SENDER_EMAIL / SMTP_USERNAME del .env

La cuenta que inicia sesión en SMTP y envía realmente

Destinatario To

TARGET_EMAIL del .env

El buzón de servicio fijo donde recibís los problemas

Correo del usuario

Parámetro de la herramienta email

Se escribe en el asunto y el cuerpo, y se define como Reply-To para que el soporte pueda responder directamente al usuario

El .env es infraestructura y se despliega una sola vez. email / question cambian en cada conversación y los pasa el agente desde las variables de la conversación (como $邮箱, $问题).

Related MCP server: MCP Sendmail Server

Requisitos del entorno

  • Python 3.10+

  • Acceso al SMTP utilizado (para conectar directamente a Gmail desde la máquina local se necesita salida por los puertos 465/587)

Instalación

cd send_issue_email_mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env

Completá el .env según las instrucciones siguientes. No subas el .env al repositorio.

Configuración del .env

Obligatorios: recepción y SMTP

TARGET_EMAIL=issues@example.com

SMTP_HOST=smtp.gmail.com
SMTP_PORT=465
SMTP_USERNAME=your_account@gmail.com
SMTP_PASSWORD=xxxx xxxx xxxx xxxx
SMTP_USE_SSL=true

SENDER_EMAIL=your_account@gmail.com
SENDER_NAME=问题收集机器人

Variable

Descripción

TARGET_EMAIL

Buzón de recepción de problemas, obligatorio

SMTP_HOST / SMTP_PORT

Servidor SMTP

SMTP_USERNAME / SMTP_PASSWORD

Credenciales de acceso. En Gmail se debe usar una contraseña de aplicación, no la contraseña de la cuenta

SMTP_USE_SSL

true = SSL (465); false = STARTTLS (587)

SENDER_EMAIL

Remitente; por defecto es igual a SMTP_USERNAME

SENDER_NAME

Nombre visible del remitente

Dos combinaciones equivalentes para Gmail:

Método

SMTP_PORT

SMTP_USE_SSL

SSL (recomendado)

465

true

STARTTLS

587

false

Las cuentas de Google de Workspace / ámbito educativo pueden tener el SMTP deshabilitado por el administrador; en ese caso no se puede conectar.

Transporte MCP (clientes remotos)

智齿 envía POST / a la raíz de la URL que completás, por lo que la configuración remota por defecto es la siguiente:

MCP_TRANSPORT=streamable-http
MCP_HOST=0.0.0.0
MCP_PORT=8765
MCP_PATH=/

Variable

Descripción

MCP_TRANSPORT

streamable-http: remoto (智齿); stdio: el agente local levanta el proceso; sse: versión antigua con GET /sse (智齿 actualmente no usa esta)

MCP_HOST

Dirección de escucha; para remoto, 0.0.0.0

MCP_PORT

Puerto de escucha. En local, el 8000 suele estar ocupado por otros proyectos; se puede usar 8765

MCP_PATH

Ruta del endpoint HTTP. Con 智齿 debe ser /

Después de modificar el .env, si ya exportaste variables con el mismo nombre en la terminal, load_dotenv() no las sobrescribe. Abrí una terminal nueva o ejecutá primero unset MCP_TRANSPORT TARGET_EMAIL antes de iniciar.

Verificar primero el envío de correo (sin iniciar MCP)

source .venv/bin/activate
python test_email.py

Si tiene éxito, imprime: 成功:问题已发送至服务邮箱 ...

El primer argumento del script es el correo de contacto simulado del usuario, no el remitente. Se recomienda cambiarlo por tu propio correo real para probar y evitar que example.com sea bloqueado por el destinatario y caiga en spam.

Que SMTP tenga éxito solo significa que el servidor de correo aceptó el mensaje. Si el destino es un buzón corporativo como Feishu, revisá también la carpeta «Enviados» del remitente, si hay rebotes y la carpeta de spam/cuarentena del destinatario.

Iniciar MCP (智齿 / remoto)

source .venv/bin/activate
python server.py

En el registro debería aparecer algo similar a:

transport 'streamable-http' (stateless) on http://0.0.0.0:8765/

No ejecutes dos instancias a la vez, de lo contrario dará address already in use. Si necesitás reiniciar, detené primero el proceso anterior y luego iniciá de nuevo.

URL que se completa en 智齿

Elegí el tipo de transporte Streamable HTTP / HTTP (no elijas SSE).

La URL no debe llevar /sse ni /mcp; completá la dirección raíz que llegue a esta máquina:

http://<这台机器的可达地址>:<MCP_PORT>/

Por ejemplo, en red local: http://192.168.x.x:8765/

Si 智齿 es un SaaS en la nube, no podrá acceder a una IP de red interna. Se necesita una IP pública, un dominio o un túnel; la URL también es la ruta raíz, sin sufijos.

Guardá y volvé a conectar. En el registro del servicio debería aparecer POST / HTTP/1.1" 200, no 404.

Autocomprobación local

curl -sS -X POST http://127.0.0.1:8765/ \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"check","version":"0.0.1"}}}'

En una respuesta normal se obtiene un JSON con "jsonrpc":"2.0" y "serverInfo":{"name":"issue-collector"...}.

Iniciar MCP (stdio local)

Después de configurar MCP_TRANSPORT=stdio en el .env, un cliente local como Cursor lo levanta mediante un comando, por ejemplo:

{
  "mcpServers": {
    "issue-collector": {
      "command": "/绝对路径/send_issue_email_mcp/.venv/bin/python",
      "args": ["/绝对路径/send_issue_email_mcp/server.py"]
    }
  }
}

En modo stdio no se deben escribir registros normales en stdout.

Convención de la herramienta

send_issue_email(email: str, question: str) -> str

  • email: correo de contacto del usuario

  • question: problema/solicitud

  • Devuelve una cadena que comienza con 成功: o 错误:, para que el agente pueda ramificar

Asunto del correo: [问题收集] 来自用户 {email} ({时间})
El cuerpo incluye el correo del usuario, la hora de envío y la descripción del problema; Reply-To es el correo del usuario.

Después de que send_message tiene éxito, devuelve inmediatamente el resultado de MCP; el QUIT de SMTP / cierre de la conexión se realiza en un hilo en segundo plano, para evitar que el cierre de SSL supere el tiempo de espera de 智齿.

Registros

Los registros de ejecución se escriben en log/ dentro del proyecto, un archivo por día; si se inicia varias veces el mismo día, se agrega al final:

log/2026-08-19.log

Incluyen inicio y fin de las solicitudes HTTP, llamadas a herramientas, tiempos de conexión/inicio de sesión/envío de SMTP y el resultado del cierre en segundo plano. No incluyen la contraseña de SMTP.

Solución de problemas

Síntoma

Causa

Solución

智齿 muestra «formato de respuesta del servicio anómalo»; en el registro POST / 404

El cliente hace POST a la ruta raíz, pero el servicio está en /sse o no se inició el transporte correspondiente

MCP_TRANSPORT=streamable-http, MCP_PATH=/, y la URL sin /sse

[Errno 48] address already in use

El puerto ya está ocupado por la instancia anterior de MCP

Detené el proceso anterior antes de iniciar; no ejecutes dos instancias a la vez

En el registro POST /sse 404

La URL tiene /sse de más

Cambiala a la ruta raíz /

El script sigue enviando al TARGET_EMAIL anterior

Ya hay variables de entorno antiguas en la terminal y load_dotenv() no las sobrescribe

Ejecutá unset TARGET_EMAIL o abrí una terminal nueva

SMTP tiene éxito pero no llega a la bandeja de entrada

Cayó en spam/cuarentena, o se está mirando la cuenta de recepción equivocada

Revisá los enviados del remitente, rebotes y el spam del destinatario

Gmail 535 / Password not accepted

Se usó la contraseña de la cuenta o no se activó la verificación en dos pasos

Usá una contraseña de aplicación

load_dotenv() se ejecuta una sola vez al iniciar server.py. Si solo modificás el .env sin reiniciar el proceso, el servicio en ejecución no leerá los valores nuevos.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables sending emails via SMTP with template management, supporting multiple SMTP configurations, template creation with variable substitution, and bulk email sending with rate limiting.
    6
    434
    19
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables sending emails via SMTP with support for HTML content, attachments, bulk sending, and template-based emails. Features session management and full MCP Streamable HTTP transport compliance.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables sending emails through SMTP using nodemailer, allowing AI assistants to send plain text and HTML emails with configurable SMTP credentials.
    107
    2
    ISC

View all related MCP servers

Related MCP Connectors

  • Send transactional email over a verified domain — templates, attachments, custom headers.

  • Fully-managed email as MCP tools - register domains, real mailboxes, send and receive mail.

  • Authenticated email gateway for AI agents — per-agent inboxes, HITL approval, SPF/DKIM verified.

View all MCP Connectors

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/luleigreat/send_issue_email_mcp'

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