issue-collector
send_issue_email MCP
Отправляет контактный email и описание проблемы, оставленные пользователем при переводе на оператора, через SMTP на фиксированный служебный почтовый ящик.
Агент видит только один инструмент: send_issue_email(email, question).
Какие три почтовых ящика здесь участвуют
Роль | Источник | Назначение |
Отправитель |
| Аккаунт, который реально отправляет письмо через SMTP |
Получатель |
| Ваш фиксированный служебный ящик для приёма проблем |
Почта пользователя | Параметр инструмента | Записывается в тему и тело письма, а также задаётся как |
.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=问题收集机器人Переменная | Описание |
| Почтовый ящик для приёма проблем, обязательно |
| SMTP-сервер |
| Учётные данные для входа. Для Gmail обязательно использовать пароль приложения, а не пароль от аккаунта |
|
|
| Отправитель, по умолчанию равен |
| Отображаемое имя отправителя |
Два эквивалентных варианта для Gmail:
Способ |
|
|
SSL (рекомендуется) |
|
|
STARTTLS |
|
|
У корпоративных / учебных аккаунтов Google администратор может отключить SMTP — в таком случае подключиться не получится.
MCP-транспорт (удалённый клиент)
智齿 отправляет POST / на корневой путь указанного вами URL, поэтому для удалённого режима по умолчанию используется следующее:
MCP_TRANSPORT=streamable-http
MCP_HOST=0.0.0.0
MCP_PORT=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 на корневой путь, а сервис слушает |
|
| Порт уже занят предыдущим экземпляром MCP | Остановите старый процесс и запустите заново, не держите два экземпляра одновременно |
В логах | В URL лишний | Замените на корневой путь |
Скрипт по-прежнему отправляет на старый | В терминале уже есть старые переменные окружения, | Выполните |
SMTP успешен, но письма нет в ящике | Письмо попало в спам/карантин, или смотрите не тот ящик | Проверьте «Отправленные» у отправителя, возвраты, спам у получателя |
Gmail | Использован пароль от аккаунта или не включена двухэтапная проверка | Используйте пароль приложения |
load_dotenv() выполняется один раз при запуске server.py. Если изменить только .env, не перезапуская процесс, работающий сервис не увидит новые значения.
This server cannot be deployed
Maintenance
Related MCP Connectors
Email infrastructure as a service: mailboxes, domains, dedicated IPs, sending, deliverability.
Send transactional emails for AI agents via SMTP. Templates included.
Send transactional email over a verified domain — templates, attachments, custom headers.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables sending emails via SMTP with template management, supporting multiple SMTP configurations, template creation with variable substitution, and bulk email sending with rate limiting.6227 npm24MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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.-
- AlicenseNot gradedqualityDmaintenanceEnables sending emails through SMTP using nodemailer, allowing AI assistants to send plain text and HTML emails with configurable SMTP credentials.25 npm2ISC
- AlicenseNot gradedqualityDmaintenanceEnables sending and receiving emails through SMTP, IMAP, and POP3 protocols with support for attachments, HTML content, and email validation.MIT