Skip to main content
Glama
luleigreat

issue-collector

by luleigreat

send_issue_email MCP

Отправляет контактный email и описание проблемы, оставленные пользователем при переводе на оператора, через SMTP на фиксированный служебный почтовый ящик.

Агент видит только один инструмент: send_issue_email(email, question).

Какие три почтовых ящика здесь участвуют

Роль

Источник

Назначение

Отправитель From

SENDER_EMAIL / SMTP_USERNAME из .env

Аккаунт, который реально отправляет письмо через SMTP

Получатель To

TARGET_EMAIL из .env

Ваш фиксированный служебный ящик для приёма проблем

Почта пользователя

Параметр инструмента email

Записывается в тему и тело письма, а также задаётся как Reply-To, чтобы оператор мог ответить пользователю напрямую

.env — это инфраструктура, настраивается один раз. email / question меняются в каждом диалоге и передаются агентом из переменных диалога (например, $邮箱, $问题).

Related MCP server: MCP Sendmail Server

Требования к окружению

  • Python 3.10+

  • Доступ к используемому SMTP (для прямого подключения к Gmail с этой машины нужен исходящий доступ на порты 465/587)

Установка

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

Заполните .env по инструкции ниже, не коммитьте .env в репозиторий.

Настройка .env

Обязательно: получатель и 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=问题收集机器人

Переменная

Описание

TARGET_EMAIL

Почтовый ящик для приёма проблем, обязательно

SMTP_HOST / SMTP_PORT

SMTP-сервер

SMTP_USERNAME / SMTP_PASSWORD

Учётные данные для входа. Для Gmail обязательно использовать пароль приложения, а не пароль от аккаунта

SMTP_USE_SSL

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

SENDER_EMAIL

Отправитель, по умолчанию равен SMTP_USERNAME

SENDER_NAME

Отображаемое имя отправителя

Два эквивалентных варианта для Gmail:

Способ

SMTP_PORT

SMTP_USE_SSL

SSL (рекомендуется)

465

true

STARTTLS

587

false

У корпоративных / учебных аккаунтов Google администратор может отключить SMTP — в таком случае подключиться не получится.

MCP-транспорт (удалённый клиент)

智齿 отправляет POST / на корневой путь указанного вами URL, поэтому для удалённого режима по умолчанию используется следующее:

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

Переменная

Описание

MCP_TRANSPORT

streamable-http: удалённый режим (智齿); stdio: локальный агент запускает процесс; sse: устаревший GET /sse (智齿 сейчас не использует этот режим)

MCP_HOST

Адрес прослушивания, для удалённого режима — 0.0.0.0

MCP_PORT

Порт прослушивания. На локальной машине 8000 часто занят другими проектами, можно использовать 8765

MCP_PATH

Путь HTTP-эндпоинта. Для 智齿 обязательно /

После изменения .env: если в терминале уже были export-ированы переменные с теми же именами, load_dotenv() не перезапишет их. Откройте новый терминал или сначала выполните unset MCP_TRANSPORT TARGET_EMAIL, а затем запускайте.

Сначала проверьте отправку письма (без запуска MCP)

source .venv/bin/activate
python test_email.py

При успехе будет выведено: 成功:问题已发送至服务邮箱 ...

Первый аргумент скрипта — это имитируемый контактный email пользователя, а не отправитель. Рекомендуется заменить его на свой реальный адрес для теста, чтобы письмо с example.com не попало в спам у получателя.

Успех SMTP означает лишь, что почтовый сервер принял письмо. Если цель — корпоративная почта типа Feishu, дополнительно проверьте папку «Отправленные» у отправителя, наличие возвратов и папку спама/карантин у получателя.

Запуск MCP (智齿 / удалённый режим)

source .venv/bin/activate
python server.py

В логах должно появиться примерно следующее:

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

Не запускайте два экземпляра одновременно, иначе будет address already in use. При перезапуске сначала остановите старый процесс.

URL, который нужно указать в 智齿

Тип передачи — Streamable HTTP / HTTP (не выбирайте SSE).

В URL не добавляйте /sse или /mcp, укажите корневой адрес, по которому доступна эта машина:

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

Например, в локальной сети: http://192.168.x.x:8765/

Если 智齿 — облачный SaaS, до внутреннего IP он не достучится. Потребуется публичный IP, домен или туннель; URL также указывается с корневым путём, без суффиксов.

После сохранения переподключитесь. В логах сервиса должно быть POST / HTTP/1.1" 200, а не 404.

Локальная самопроверка

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"}}}'

При нормальной работе возвращается JSON с "jsonrpc":"2.0" и "serverInfo":{"name":"issue-collector"...}.

Запуск MCP (локальный stdio)

После установки MCP_TRANSPORT=stdio в .env локальный клиент (например, Cursor) запускает процесс командой:

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

В режиме stdio не выводите обычные логи в stdout.

Соглашения об инструменте

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

  • email: контактный email пользователя

  • question: проблема/запрос

  • Возвращает строку, начинающуюся с 成功: или 错误:, по которой агент выбирает ветку

Тема письма: [问题收集] 来自用户 {email} ({时间})
В теле — email пользователя, время отправки и описание проблемы; Reply-To — email пользователя.

После успешного send_message результат MCP возвращается сразу, а QUIT/закрытие соединения SMTP выполняется в фоновом потоке, чтобы закрытие SSL не превысило таймаут 智齿.

Логи

Логи выполнения пишутся в log/ в каталоге проекта, один файл в день; при нескольких запусках в течение дня записи добавляются:

log/2026-08-19.log

Содержат начало/конец HTTP-запросов, вызовы инструментов, время подключения/входа/отправки SMTP и результат фонового закрытия. Пароль SMTP не логируется.

Устранение неполадок

Симптом

Причина

Решение

智齿: «服务响应格式异常»; в логах POST / 404

Клиент отправляет POST на корневой путь, а сервис слушает /sse или нужный транспорт не запущен

MCP_TRANSPORT=streamable-http, MCP_PATH=/, в URL не добавлять /sse

[Errno 48] address already in use

Порт уже занят предыдущим экземпляром MCP

Остановите старый процесс и запустите заново, не держите два экземпляра одновременно

В логах POST /sse 404

В URL лишний /sse

Замените на корневой путь /

Скрипт по-прежнему отправляет на старый TARGET_EMAIL

В терминале уже есть старые переменные окружения, load_dotenv() их не перезаписывает

Выполните unset TARGET_EMAIL или откройте новый терминал

SMTP успешен, но письма нет в ящике

Письмо попало в спам/карантин, или смотрите не тот ящик

Проверьте «Отправленные» у отправителя, возвраты, спам у получателя

Gmail 535 / Password not accepted

Использован пароль от аккаунта или не включена двухэтапная проверка

Используйте пароль приложения

load_dotenv() выполняется один раз при запуске server.py. Если изменить только .env, не перезапуская процесс, работающий сервис не увидит новые значения.

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