Mailtrap MCP Server
официальныйИнтегрируется с Mailtrap Email API.
Документация
MCP-сервер Mailtrap
MCP-сервер, предоставляющий инструменты для отправки и тестирования в песочнице через Mailtrap.
Необходимые условия
Перед использованием этого MCP-сервера вам необходимо:
- Создать аккаунт Mailtrap
- Подтвердить ваш домен
- Получить ваш API-токен в настройках API Mailtrap
- Получить ваш ID аккаунта в управлении аккаунтом Mailtrap
Обязательные переменные окружения:
MAILTRAP_API_TOKEN— обязательна для всей функциональностиMAILTRAP_ACCOUNT_ID— обязательна для шаблонов, статистики, журналов писем, списка/просмотра песочницы и доменов отправки. Необязательна только для send-email и send-sandbox-email.
Необязательные (можно передавать как параметры инструментов):
DEFAULT_FROM_EMAIL— адрес отправителя по умолчанию, еслиfromне передан в send-email или send-sandbox-email. Позволяет менять отправителя при каждом вызове через параметрfrom.MAILTRAP_TEST_INBOX_ID— ID тестового входящего ящика по умолчанию для инструментов песочницы, еслиtest_inbox_idне передан. Позволяет переключаться между входящими ящиками при каждом вызове через параметрtest_inbox_id.MAILTRAP_SANDBOX_ID— ID песочницы по умолчанию для инструментов песочницы, еслиsandbox_idне передан. Позволяет переключаться между песочницами при каждом вызове через параметрsandbox_id.MAILTRAP_ORGANIZATION_ID— обязательна для инструментов организации (list-sub-accounts,create-sub-account).MAILTRAP_ORGANIZATION_API_TOKEN— API-токен с областью действия организации. Обязателен для инструментов организации (отдельно отMAILTRAP_API_TOKEN).
Быстрая установка
Smithery CLI
Smithery — это установщик и менеджер реестра для MCP-серверов, работающий со всеми AI-клиентами.
npx @smithery/cli install mailtrap
Smithery автоматически управляет конфигурацией клиента и предоставляет интерактивный процесс настройки. Это самый простой способ начать работу с MCP-серверами локально.
Настройка
Claude Desktop
Используйте MCPB для установки сервера Mailtrap. Эти файлы можно найти в Releases.
Скачайте файл .MCPB и откройте его. Если у вас есть Claude Desktop — он откроет его и предложит настроить.
Claude Desktop или Cursor
Добавьте следующую конфигурацию:
{
"mcpServers": {
"mailtrap": {
"command": "npx",
"args": ["-y", "mcp-mailtrap"],
"env": {
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "[email protected]",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}
Если вы используете asdf для управления Node.js, необходимо указать абсолютный путь к исполняемому файлу (пример для Mac)
{
"mcpServers": {
"mailtrap": {
"command": "/Users/<username>/.asdf/shims/npx",
"args": ["-y", "mcp-mailtrap"],
"env": {
"PATH": "/Users/<username>/.asdf/shims:/usr/bin:/bin",
"ASDF_DIR": "/opt/homebrew/opt/asdf/libexec",
"ASDF_DATA_DIR": "/Users/<username>/.asdf",
"ASDF_NODEJS_VERSION": "20.6.1",
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "[email protected]",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}
Расположение файла конфигурации Claude Desktop
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Расположение файла конфигурации Cursor
Mac: ~/.cursor/mcp.json
Windows: %USERPROFILE%\.cursor\mcp.json
VS Code
Ручное изменение конфигурации
Выполните в палитре команд: Preferences: Open User Settings (JSON)
Затем в файле настроек добавьте следующую конфигурацию:
{
"mcp": {
"servers": {
"mailtrap": {
"command": "npx",
"args": ["-y", "mcp-mailtrap"],
"env": {
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "[email protected]",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}
}
[!TIP] Не забудьте перезапустить MCP-сервер после изменения секции "env".
MCP Bundle (MCPB)
Для простой установки в хостах, поддерживающих MCP Bundles, вы можете распространять файл бандла .mcpb.
# Build TypeScript and pack the MCPB bundle
npm run mcpb:pack
# Inspect bundle metadata
npm run mcpb:info
# Sign the bundle for distribution (optional)
npm run mcpb:sign
Это создает mailtrap-mcp.mcpb, используя репозиторий manifest.json и собранные артефакты в dist/.
Использование
После настройки вы можете попросить агента отправлять письма и управлять шаблонами, например:
Операции отправки писем:
- "Отправь письмо на [email protected] с темой 'Встреча завтра' и дружеским напоминанием о нашей предстоящей встрече."
- "Напиши [email protected] об обновлении проекта и поставь в копию команду [email protected]"
- "Отправь приветственный шаблон (uuid
b81aabcd-1a1e-41cf-91b6-eca0254b3d96) на [email protected] с переменными{ name: 'Alex' }" - "Отправь письмо в песочнице на [email protected] с темой 'Тестовый шаблон', чтобы посмотреть, как выглядит наше приветственное письмо"
Журналы писем (отладка доставки):
- "Покажи мои последние журналы отправленных писем"
- "Покажи журналы писем, отправленных на [email protected]"
- "Получи сообщение журнала письма для ID abc-123-uuid, чтобы проверить статус доставки"
Статистика отправки:
- "Получи статистику отправки за январь 2025"
- "Покажи показатели доставки с разбивкой по доменам за последний месяц"
- "Какая у меня статистика писем по категориям с 2025-01-01 по 2025-01-31?"
Операции с песочницей:
- "Получи все сообщения из моего входящего ящика песочницы"
- "Покажи первую страницу сообщений песочницы"
- "Найди сообщения, содержащие 'test', в моем входящем ящике песочницы"
- "Покажи детали сообщения песочницы с ID 5159037506"
Операции с шаблонами:
- "Покажи все шаблоны писем в моем аккаунте Mailtrap"
- "Создай новый шаблон письма 'Приветственное письмо' с темой 'Добро пожаловать на нашу платформу!'"
- "Обнови шаблон с ID 12345, изменив тему на 'Обновленное приветственное сообщение'"
- "Удали шаблон с ID 67890"
Домены отправки:
- "Покажи мои домены отправки"
- "Получи домен отправки с ID 3938"
- "Создай домен отправки для example.com"
- "Удали домен отправки 3938"
- "Получи домен отправки 3938 с инструкциями по настройке DNS"
Доступные инструменты
send-email
Отправляет транзакционное письмо через Mailtrap. Поддерживает два взаимоисключающих режима — встроенный контент (subject + text/html) или на основе шаблона (template_uuid).
Параметры:
from(необязательный): Отправитель в виде строки email или{ email, name? }. Если не указан, используетсяDEFAULT_FROM_EMAIL.to(необязательный): Получатель(и) — один email/{ email, name? }или массив. Необязателен, если указанccилиbcc; хотя бы один изto/cc/bccдолжен содержать получателя.cc(необязательный): Массив получателей CC (каждый — строка email или{ email, name? }).bcc(необязательный): Массив получателей BCC (каждый — строка email или{ email, name? }).subject(условный): Тема письма. Обязательна для встроенной отправки; должна быть опущена, если заданtemplate_uuid.text(условный): Текстовое тело письма. Обязательно (вместе сhtmlили вместо него) для встроенной отправки; должно быть опущено, если заданtemplate_uuid.html(условный): HTML-версия тела письма. Обязательна (вместе сtextили вместо него) для встроенной отправки; должна быть опущена, если заданtemplate_uuid.category(необязательный): Категория письма для отслеживания и аналитики. Должна быть опущена, если заданtemplate_uuid.template_uuid(необязательный): Использовать шаблон письма Mailtrap вместо встроенного контента. Если задан,subject/text/html/categoryдолжны быть опущены (согласно API Mailtrap).template_variables(необязательный): Объект переменных, подставляемых в шаблон, на который ссылаетсяtemplate_uuid. Допустим только вместе сtemplate_uuid.
batch-send-transactional-email
Отправляет пакет транзакционных писем одним вызовом API Mailtrap (поток отправки по умолчанию). Общие поля указываются в base; переопределения для каждого получателя — в requests[]. Каждый запрос должен содержать хотя бы одного получателя через to, cc или bcc. То же взаимоисключение встроенного контента и шаблона, что и в send-email — проверяется после слияния базы с каждым запросом.
Параметры:
base(необязательный): Объект с полями, общими для всего пакета.from(необязательный): Отправитель в виде строки email или{ email, name? }. Возвращается кDEFAULT_FROM_EMAIL.reply_to(необязательный): Адрес для ответа.subject/text/html/category(необязательные, встроенный режим): Контент по умолчанию для каждого запроса.template_uuid/template_variables(необязательные, режим шаблона): Шаблон + переменные по умолчанию. Взаимоисключающие с полями встроенного режима.custom_variables(необязательный): Пользовательские переменные по умолчанию (строковые значения).headers(необязательный): Пользовательские заголовки по умолчанию.
requests(обязательный): Непустой массив сообщений для каждого получателя. Каждая запись содержит:to(необязательный): Получатель(и) — строка,{ email, name? }или массив. Необязателен, если указанccилиbcc; хотя бы один изto/cc/bccдолжен содержать получателя.cc,bcc,reply_to(необязательные).- Переопределения встроенного (
subject/text/html/category) или шаблонного (template_uuid/template_variables) режима; любое опущенное поле возвращается к соответствующему значению изbase. custom_variables,headers(необязательные).
batch-send-bulk-email
Отправляет пакет массовых писем через API массового потока Mailtrap. Та же форма base + requests[], валидация и правила встроенного контента/шаблона, что и в batch-send-transactional-email — единственное отличие в том, что этот инструмент направляет вызов через массовый эндпоинт вместо транзакционного. См. параметры выше.
list-email-logs
Выводит список журналов отправленных писем (история доставки) с опциональной пагинацией и фильтрами. Используется для отладки проблем доставки из IDE.
Параметры:
search_after(необязательный): Курсор пагинации из предыдущего ответаnext_page_cursorsent_after(необязательный): Дата/время ISO 8601; только журналы, отправленные после этого времениsent_before(необязательный): Дата/время ISO 8601; только журналы, отправленные до этого времениfrom_email(необязательный): Фильтр по email отправителя; используется сfrom_operator(по умолчанию: ci_equal)to_email(необязательный): Фильтр по email получателя; используется сto_operator(по умолчанию: ci_equal)status(необязательный): Фильтр по статусу доставки: delivered, not_delivered, enqueued, opted_out; используется сstatus_operator(по умолчанию: equal)subject(необязательный): Фильтр по теме письма; используется сsubject_operator(по умолчанию: ci_contain). Используйтеsubject_operator: empty/not_empty для фильтрации по наличию темы.sending_domain_id(необязательный): Фильтр по ID домена отправки (число); используется сsending_domain_id_operator(по умолчанию: equal)sending_stream(необязательный): Фильтр по потоку: transactional или bulk; используется сsending_stream_operator(по умолчанию: equal)events(необязательный): Фильтр по типу(ам) событий: delivery, open, click, bounce, spam, unsubscribe, soft_bounce, reject, suspension; используется сevents_operator(include_event / not_include_event)clicks_count/opens_count(необязательные): Фильтр по количеству кликов/открытий; используется с*_operator: equal, greater_than, less_thanclient_ip/sending_ip(необязательные): Фильтр по IP; используется с*_operator: equal, not_equal, contain, not_containemail_service_provider_response(необязательный): Фильтр по тексту ответа провайдера; используется с*_operator(ci_contain и т.д.)email_service_provider(необязательный): Фильтр по провайдеру (точное совпадение); используется с*_operator: equal, not_equalrecipient_mx(необязательный): Фильтр по MX получателя; используется сrecipient_mx_operator(ci_contain и т.д.)category(необязательный): Фильтр по категории письма; используется сcategory_operator: equal, not_equal
Все параметры необязательны.
get-email-log-message
Получает одно сообщение журнала письма по ID (UUID): читаемую сводку (от, кому, тема, время отправки, статус, категория, поток, вовлеченность, контекст доставки), затем подробную историю событий. Опционально, с include_content: true, можно также загрузить и показать тело сообщения (HTML и обычный текст), когда Mailtrap предоставляет URL исходного сообщения.
Параметры:
message_id(обязательный): UUID сообщения журнала письма (из ответа отправки или list-email-logs). Используйтеlist-email-logsдля поиска ID сообщений.include_content(необязательный): Еслиtrue, извлекает исходный EML (если доступенraw_message_url) и добавляет разобранные секции тела HTML и обычного текста, аналогично show-sandbox-email-message.
get-sending-stats
Получает статистику отправки писем (показатели доставки, отказов, открытий, кликов, спама) за диапазон дат. Опционально с разбивкой по домену, категории, провайдеру услуг email или дате. Проверяйте показатели доставки, не покидая редактор.
Параметры:
start_date(обязательный): Начальная дата для диапазона статистики (ГГГГ-ММ-ДД)end_date(обязательный): Конечная дата для диапазона статистики (ГГГГ-ММ-ДД)breakdown(необязательный): Способ разбивки статистики:aggregated(по умолчанию),by_domain,by_category,by_email_service_providerилиby_datesending_domain_ids(необязательный): Ограничить результаты указанными ID доменов-отправителей (массив целых чисел)sending_streams(необязательный): Ограничить типомtransactionalи/илиbulk(массив строк)categories(необязательный): Ограничить указанными категориями писем (массив строк)email_service_providers(необязательный): Ограничить указанными провайдерами, например Google, Yahoo, Outlook (массив строк)
create-template
Создаёт новый шаблон письма в вашем аккаунте Mailtrap.
Параметры:
name(обязательный): Название шаблонаsubject(обязательный): Тема письмаhtml(илиtextобязателен): HTML-содержимое шаблонаtext(илиhtmlобязателен): Текстовая версия шаблонаcategory(необязательный): Категория шаблона (по умолчанию "General")
list-templates
Выводит список всех шаблонов писем в вашем аккаунте Mailtrap.
Параметры:
- Параметры не требуются
get-template
Получить один шаблон письма по ID, включая тему, категорию и HTML/текстовое тело.
Параметры:
template_id(обязательный): ID шаблона для получения
update-template
Обновляет существующий шаблон письма.
Параметры:
template_id(обязательный): ID шаблона для обновленияname(необязательный): Новое название шаблонаsubject(необязательный): Новая тема письмаhtml(необязательный): Новое HTML-содержимое шаблонаtext(необязательный): Новая текстовая версия шаблонаcategory(необязательный): Новая категория шаблона
[!NOTE] При вызове update-template необходимо указать хотя бы одно обновляемое поле (name, subject, html, text или category), чтобы выполнить обновление.
delete-template
Удаляет существующий шаблон письма.
Параметры:
template_id(обязательный): ID шаблона для удаления
send-sandbox-email
Отправляет письмо в ваш тестовый почтовый ящик Mailtrap для целей разработки и тестирования. Идеально подходит для проверки шаблонов писем без отправки реальным получателям. Поддерживает те же два режима, что и send-email — встроенное содержимое или на основе шаблона (template_uuid).
Параметры:
test_inbox_id(необязательный): ID тестового ящика Mailtrap. Обязателен, если не заданMAILTRAP_TEST_INBOX_ID; передаётся при вызове для указания конкретного ящика.from(необязательный): Отправитель в виде строки email или{ email, name? }. Если не указан, используетсяDEFAULT_FROM_EMAIL.to(необязательный): Получатели в виде строки, разделённой запятыми, или массива строк email / объектов{ email, name? }. Необязателен, если указанccилиbcc; хотя бы один изto/cc/bccдолжен содержать получателя.cc(необязательный): Массив получателей копии (каждый — строка email или{ email, name? }).bcc(необязательный): Массив получателей скрытой копии (каждый — строка email или{ email, name? }).subject(условный): Тема письма. Обязательна для встроенной отправки; должна быть опущена, если заданtemplate_uuid.text(условный): Текстовое тело письма. Обязательно (вместе сhtmlили вместо него) для встроенной отправки; должно быть опущено, если заданtemplate_uuid.html(условный): HTML-версия тела письма. Обязательна (вместе сtextили вместо него) для встроенной отправки; должна быть опущена, если заданtemplate_uuid.category(необязательный): Категория письма для отслеживания. Должна быть опущена, если заданtemplate_uuid.template_uuid(необязательный): Использовать шаблон письма Mailtrap вместо встроенного содержимого. Если задан,subject/text/html/categoryдолжны быть опущены.template_variables(необязательный): Объект переменных, подставляемых в шаблон, указанный вtemplate_uuid. Допустим только вместе сtemplate_uuid.
[!NOTE] Для инструментов песочницы укажите
test_inbox_idв вызове инструмента или задайте переменную окруженияMAILTRAP_TEST_INBOX_ID. Вы можете переключаться между ящиками при каждом вызове, передаваяtest_inbox_id.
get-sandbox-messages
Получает список сообщений из вашего тестового ящика Mailtrap. Полезно для проверки того, какие письма были получены в вашей песочнице во время тестирования.
Параметры:
page(необязательный): Номер страницы для пагинации (минимум: 1)last_id(необязательный): Пагинация по ID последнего сообщения. Возвращает сообщения после указанного ID сообщения (минимум: 1)search(необязательный): Поисковый запрос для фильтрации сообщений
[!NOTE] Все параметры необязательны. Если ни один не указан, будет возвращена первая страница сообщений из ящика. Используйте page для традиционной пагинации, last_id для пагинации на основе курсора или search для фильтрации сообщений по содержимому.
show-sandbox-email-message
Показывает подробную информацию и содержимое конкретного email-сообщения из вашего тестового ящика Mailtrap, включая HTML и текстовое тело.
Параметры:
message_id(обязательный): ID сообщения песочницы для получения
[!NOTE] Сначала используйте
get-sandbox-messages, чтобы получить список сообщений и их ID, затем используйте этот инструмент для просмотра полного содержимого конкретного сообщения.
get-sandbox-project
Получить проект песочницы по ID, включая его ящики и количество писем.
Параметры:
project_id(обязательный): ID проекта для получения
update-sandbox-project
Переименовать существующий проект песочницы.
Параметры:
project_id(обязательный): ID проекта для обновленияname(обязательный): Новое название проекта (2–100 символов)
list-sandboxes
Вывести список всех песочниц, доступных для API-токена, по всем проектам.
Параметры:
- Параметры не требуются
mark-sandbox-as-read
Отметить все сообщения в песочнице как прочитанные.
Параметры:
sandbox_id(обязательный): ID песочницы для выполнения действия
reset-sandbox-credentials
Сбросить SMTP-учётные данные для песочницы. Возвращает новые имя пользователя/пароль.
Параметры:
sandbox_id(обязательный): ID песочницы для выполнения действия
enable-sandbox-email-address
Включить адрес для приёма писем для песочницы (включает адрес Mailtrap, который доставляет сообщения в песочницу через SMTP).
Параметры:
sandbox_id(обязательный): ID песочницы для выполнения действия
reset-sandbox-email-address
Сгенерировать новый адрес для приёма писем для песочницы.
Параметры:
sandbox_id(обязательный): ID песочницы для выполнения действия
forward-sandbox-message
Переслать сообщение песочницы на внешний адрес электронной почты. Учитывается в вашей месячной квоте пересылки.
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы для пересылкиemail(обязательный): Адрес электронной почты, на который нужно переслать сообщение
update-sandbox-message
Отметить сообщение песочницы как прочитанное или непрочитанное.
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы для обновленияis_read(обязательный):trueотмечает как прочитанное,falseотмечает как непрочитанное
delete-sandbox-message
Удалить одно сообщение песочницы.
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы для удаления
get-sandbox-message-spam-score
Получить отчёт SpamAssassin о спаме для сообщения песочницы (оценка, правила, полный отчёт). Автономная альтернатива include_spam_report: true в show-sandbox-email-message.
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы
get-sandbox-message-html-analysis
Получить отчёт анализа HTML для сообщения песочницы (оценки совместимости с клиентами, проблемные элементы). Автономная альтернатива include_html_analysis: true в show-sandbox-email-message.
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы
get-sandbox-message-headers
Получить разобранные заголовки письма для сообщения песочницы.
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы
get-sandbox-message-html
Получить отрендеренное HTML-тело сообщения песочницы.
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы
get-sandbox-message-text
Получить текстовое тело сообщения песочницы.
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы
get-sandbox-message-raw
Получить исходное сообщение в формате MIME (заголовки + тело) для сообщения песочницы.
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы
get-sandbox-message-eml
Получить сообщение в виде файла EML (подходит для прикрепления к тикету или импорта в другой почтовый клиент).
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы
get-sandbox-message-html-source
Получить неотрендеренный HTML-исходник сообщения песочницы (HTML до любых преобразований на стороне Mailtrap, таких как перезапись CID-ссылок).
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы
list-sandbox-attachments
Вывести список всех вложений сообщения песочницы (имя файла, тип содержимого, размер, путь для скачивания).
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы
get-sandbox-attachment
Получить метаданные и URL для скачивания одного вложения.
Параметры:
sandbox_id(необязательный): ID песочницы. Если не указан, используетсяMAILTRAP_SANDBOX_ID.message_id(обязательный): ID сообщения песочницы, содержащего вложениеattachment_id(обязательный): ID вложения для получения
list-sending-domains
Вывести список доменов-отправителей и статус их DNS-верификации.
Параметры:
- Параметры не требуются
get-sending-domain
Получить домен-отправитель по ID и его статус верификации (включая DNS-записи). При необходимости можно включить инструкции по настройке DNS, установив include_setup_instructions в true.
Параметры:
sending_domain_id(обязательный): ID домена-отправителяinclude_setup_instructions(необязательный): Еслиtrue, добавить инструкции по настройке DNS к ответу. По умолчанию:false
create-sending-domain
Создать новый домен-отправитель. После создания добавьте DNS-записи для верификации домена (используйте get-sending-domain с include_setup_instructions: true, чтобы увидеть записи).
Параметры:
domain_name(обязательный): Имя домена (например, example.com)
delete-sending-domain
Удалить домен-отправитель.
Параметры:
sending_domain_id(обязательный): ID домена-отправителя для удаления
send-sending-domain-setup-instructions
Отправить инструкции по настройке DNS для домена-отправителя на указанный адрес. Полезно для пересылки DNS-записей коллеге из DevOps.
Параметры:
sending_domain_id(обязательный): ID домена-отправителяemail(обязательный): Адрес электронной почты, на который нужно отправить инструкции по настройке DNS
list-suppressions
Вывести список или выполнить поиск по спискам подавления (жёсткие отказы, жалобы на спам, отписки, ручные импорты). Возвращает до 1000 результатов за вызов.
Параметры:
email(опционально): Фильтр по email. Возвращает только подавления, соответствующие этому адресу.
delete-suppression
Удалить подавление по ID. Mailtrap возобновит доставку на этот email, если он не будет подавлен снова.
Параметры:
suppression_id(обязательный): ID подавления для удаления
list-webhooks
Вывести все вебхуки, настроенные для аккаунта. Возвращает полные записи вебхуков в формате JSON.
Параметры:
- Параметры не требуются
get-webhook
Получить один вебхук по ID. Возвращает полную запись вебхука в формате JSON. Примечание: signing_secret не возвращается здесь — он доступен только в ответе от create-webhook.
Параметры:
webhook_id(обязательный): ID вебхука для получения
create-webhook
Создать вебхук. Ответ включает signing_secret для проверки подписей полезной нагрузки вебхука — этот секрет возвращается только при создании, поэтому сохраните его сейчас. Если вы его потеряете, пересоздайте вебхук.
Параметры:
url(обязательный): URL, на который Mailtrap будет отправлять события вебхукаwebhook_type(обязательный):"email_sending"или"audit_log"active(опционально, boolean): по умолчаниюtruepayload_format(опционально):"json"или"jsonlines". По умолчанию"json"sending_stream(опционально, толькоemail_sending):"transactional"или"bulk"event_types(опционально, толькоemail_sending): массив изdelivery,soft_bounce,bounce,suspension,unsubscribe,open,spam_complaint,click,rejectdomain_id(опционально, толькоemail_sending): ID домена отправки, которым ограничивается этот вебхук
update-webhook
Обновить изменяемые поля вебхука. webhook_type, sending_stream и domain_id нельзя изменить после создания — пересоздайте вебхук, если нужно их изменить.
Параметры:
webhook_id(обязательный): ID вебхука для обновленияurl(опционально): Новый URL вебхукаactive(опционально, boolean): Включить или отключить вебхукpayload_format(опционально):"json"или"jsonlines"event_types(опционально, толькоemail_sending): массив изdelivery,soft_bounce,bounce,suspension,unsubscribe,open,spam_complaint,click,reject
delete-webhook
Безвозвратно удалить вебхук по ID. Возвращает запись удаленного вебхука.
Параметры:
webhook_id(обязательный): ID вебхука для удаления
get-contact
Получить контакт по ID или email. Возвращает полную запись контакта (членство в списках, статус, пользовательские поля).
Параметры:
contact_identifier(обязательный): ID контакта или адрес email
create-contact
Создать новый контакт.
Параметры:
email(обязательный): Адрес emailfields(опционально): Значения пользовательских полей, ключом которых является тег слияния (например,first_name). Строковые, числовые или булевы значенияlist_ids(опционально): ID списков контактов, на которые нужно подписать этот контактunsubscribed(опционально, boolean): Создать контакт в статусеunsubscribed
update-contact
Обновить существующий контакт, идентифицированный по ID или email. list_ids заменяет полный набор членств контакта; list_ids_included/list_ids_excluded добавляют/удаляют, не затрагивая остальные.
Параметры:
contact_identifier(обязательный): ID контакта или emailemail(опционально): Новый адрес emailfields(опционально): Значения пользовательских полей, ключом которых является тег слиянияlist_ids(опционально): Заменить набор членств этим точным спискомlist_ids_included(опционально): ID списков для добавления (аддитивно)list_ids_excluded(опционально): ID списков для удаленияunsubscribed(опционально, boolean): Установить вunsubscribed(true) илиsubscribed(false)
delete-contact
Безвозвратно удалить контакт по ID или email. Возвращает запись удаленного контакта, если API отвечает ею; в противном случае возвращает подтверждающую полезную нагрузку.
Параметры:
contact_identifier(обязательный): ID контакта или email
create-contact-event
Записать событие контакта для контакта (по ID или email). Используется для запуска автоматизаций списка контактов.
Параметры:
contact_identifier(обязательный): ID контакта или emailname(обязательный): Имя события (соответствует триггерам автоматизации)params(обязательный): Объект с произвольными парами ключ/значение. Значения могут быть строковыми, числовыми, булевыми или null
list-contact-lists
Вывести все списки контактов для аккаунта.
Параметры:
- Параметры не требуются
get-contact-list
Получить список контактов по ID.
Параметры:
list_id(обязательный): ID списка контактов для получения
create-contact-list
Создать новый список контактов.
Параметры:
name(обязательный): Имя для нового списка
update-contact-list
Переименовать существующий список контактов.
Параметры:
list_id(обязательный): ID списка контактовname(обязательный): Новое имя для списка
delete-contact-list
Безвозвратно удалить список контактов по ID.
Параметры:
list_id(обязательный): ID списка контактов для удаления
list-contact-fields
Вывести все определения полей контактов для аккаунта.
Параметры:
- Параметры не требуются
get-contact-field
Получить определение поля контакта по ID.
Параметры:
field_id(обязательный): ID поля контакта
create-contact-field
Создать новое определение поля контакта. merge_tag должно быть уникальным в пределах аккаунта и используется как имя заполнителя в переменных шаблона.
Параметры:
name(обязательный): Отображаемое имя (например, "Имя")merge_tag(обязательный): Уникальное имя заполнителя (например,first_name)data_type(обязательный): Одно изtext,number,boolean,date
update-contact-field
Обновить определение поля контакта. Можно изменить любую комбинацию name, merge_tag и data_type.
Параметры:
field_id(обязательный): ID поля контактаname(опционально): Новое отображаемое имяmerge_tag(опционально): Новый тег слияния (должен оставаться уникальным)data_type(опционально): Одно изtext,number,boolean,date
delete-contact-field
Безвозвратно удалить определение поля контакта по ID.
Параметры:
field_id(обязательный): ID поля контакта для удаления
create-contact-import
Массовый импорт контактов. Возвращает запись задания импорта; опрашивайте его статус с помощью get-contact-import.
Параметры:
contacts(обязательный): Массив записей контактов. Каждая запись должна содержать:email(обязательный): Адрес email контактаfields(опционально): Значения пользовательских полей, ключом которых является тег слияния (строковые или числовые значения)list_ids_included(опционально): ID списков, в которые нужно добавить контактlist_ids_excluded(опционально): ID списков, из которых нужно удалить контакт
get-contact-import
Получить статус задания импорта контактов (создано/запущено/завершено/не удалось) с количеством созданных/обновленных/сверх лимита.
Параметры:
import_id(обязательный): ID задания импорта контактов
create-contact-export
Экспортировать контакты, соответствующие набору фильтров, объединенных по И. Возвращает запись задания экспорта; опрашивайте статус с помощью get-contact-export, чтобы получить URL для скачивания, когда status станет finished.
Параметры:
filters(обязательный): Массив объектов фильтра. Каждый содержит:name(обязательный): Поле для фильтрации (list_id,subscription_status,emailи т.д.)operator(обязательный): Одно изequal,not_equal,contains,not_contains,is_empty,is_not_emptyvalue(обязательный): Значение для сравнения (строка, число, булево или массив)
get-contact-export
Получить статус задания экспорта контактов. Когда status станет finished, поле url будет содержать ссылку для скачивания CSV.
Параметры:
export_id(обязательный): ID задания экспорта контактов
list-accounts
Вывести аккаунты Mailtrap, к которым имеет доступ текущий API-токен, с уровнями доступа каждого аккаунта.
Параметры:
- Параметры не требуются
get-billing-usage
Получить данные об использовании в текущем расчетном периоде для аккаунта: планы отправки и тестирования, лимиты и текущие показатели.
Параметры:
- Параметры не требуются
list-account-accesses
Вывести доступы к аккаунту (пользователи, приглашения, API-токены) для аккаунта. Опциональные фильтры сужают результат до конкретных ресурсов. Требуются права администратора/владельца аккаунта.
Параметры:
domain_uuids(опционально): Фильтр по UUID доменов отправки (массив строк)inbox_ids(опционально): Фильтр по ID входящих ящиков песочницы (массив строк)project_ids(опционально): Фильтр по ID проектов песочницы (массив строк)
remove-account-access
Удалить доступ к аккаунту по ID. Для спецификаторов User это отзывает их разрешения; для спецификаторов Invite или ApiToken это полностью удаляет спецификатор. Требуются права администратора/владельца.
Параметры:
account_access_id(обязательный): ID записи доступа для удаления
get-permission-resources
Получить все ресурсы (входящие ящики, проекты, домены, биллинг, аккаунт), к которым API-токен имеет административный доступ, сгруппированные по иерархии.
Параметры:
- Параметры не требуются
bulk-update-permissions
Массовое создание, обновление или удаление разрешений для одного доступа к аккаунту. Существующие пары (resource_type, resource_id) обновляются; новые создаются. Установите destroy: true для записи, чтобы удалить ее.
Параметры:
account_access_id(обязательный): ID целевого доступа к аккаунтуpermissions(обязательный): Массив записей разрешений. Каждая содержит:resource_id(обязательный): ID ресурса (число или строка)resource_type(обязательный): Одно изaccount,project,inbox,domain,billingaccess_level(опционально):admin/100илиviewer/10destroy(опционально, boolean): Если true, удаляет это разрешение вместо создания/обновления
list-api-tokens
Вывести все API-токены для аккаунта.
Параметры:
- Параметры не требуются
create-api-token
Создать новый API-токен. Ответ включает секретное значение token — это единственный раз, когда возвращается полный токен, поэтому сохраните его немедленно. Если вы его потеряете, пересоздайте токен.
Параметры:
name(обязательный): Отображаемое имя для токенаresources(опционально): Массив разрешений на ресурсы, которыми ограничивается токен. Каждая запись содержит:resource_type(обязательный): Одно изaccount,project,inbox,domain,billingresource_id(обязательный): ID ресурсаaccess_level(обязательный):100(admin) или10(viewer)
get-api-token
Получить API-токен по ID. Возвращает только метаданные — секретное значение токена не возвращается здесь (только из create-api-token / reset-api-token).
Параметры:
api_token_id(обязательный): ID API-токена
reset-api-token
Сбросить (ротировать) API-токен по ID. Ответ включает новое секретное значение token — возвращается только при этом вызове, поэтому сохраните его немедленно. Предыдущий токен становится недействительным.
Параметры:
api_token_id(обязательный): ID API-токена для сброса
delete-api-token
Безвозвратно удалить API-токен по ID. Токен больше не сможет аутентифицироваться после удаления.
Параметры:
api_token_id(обязательный): ID API-токена для удаления
list-sub-accounts
Вывести суб-аккаунты в организации. Требуется переменная окружения MAILTRAP_ORGANIZATION_ID и права на управление суб-аккаунтами.
Параметры:
- Параметры не требуются
create-sub-account
Создание новой суб-учетной записи в рамках организации. Требуется переменная окружения MAILTRAP_ORGANIZATION_ID и права на управление суб-учетными записями.
Параметры:
name(обязательный): Отображаемое имя для новой суб-учетной записи
Разработка
- Клонируйте репозиторий:
git clone https://github.com/mailtrap/mailtrap-mcp.git
cd mailtrap-mcp
- Установите зависимости:
npm install
Настройка с Claude Desktop или Cursor
[!TIP] Расположение файла конфигурации см. в разделе Настройка.
Добавьте следующую конфигурацию:
{
"mcpServers": {
"mailtrap": {
"command": "node",
"args": ["/path/to/mailtrap-mcp/dist/index.js"],
"env": {
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "[email protected]",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}
Если вы используете asdf для управления Node.js, укажите абсолютный путь к исполняемому файлу:
(пример для Mac)
{
"mcpServers": {
"mailtrap": {
"command": "/Users/<username>/.asdf/shims/node",
"args": ["/path/to/mailtrap-mcp/dist/index.js"],
"env": {
"PATH": "/Users/<username>/.asdf/shims:/usr/bin:/bin",
"ASDF_DIR": "/opt/homebrew/opt/asdf/libexec",
"ASDF_DATA_DIR": "/Users/<username>/.asdf",
"ASDF_NODEJS_VERSION": "20.6.1",
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "[email protected]",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}
VS Code
[!TIP] Расположение файла конфигурации см. в разделе Настройка.
{
"mcp": {
"servers": {
"mailtrap": {
"command": "node",
"args": ["/path/to/mailtrap-mcp/dist/index.js"],
"env": {
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "[email protected]",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}
}
Тестирование
Запуск инструментов с реальным Mailtrap
Существует два способа протестировать инструмент в реальных условиях с аккаунтом Mailtrap: браузерный интерфейс MCP Inspector для интерактивного исследования или его CLI-режим для одноразовых вызовов из командной строки.
Для обоих способов необходимо сначала собрать пакет:
npm run build
а также экспортировать MAILTRAP_API_TOKEN и MAILTRAP_ACCOUNT_ID в вашей оболочке (скрипт mcp:cli передает обе переменные запускаемому серверу).
Браузерный интерфейс
npm run dev
Inspector выводит URL вида http://localhost:6274. Откройте его, перейдите на вкладку Tools, выберите инструмент (например, get-template), заполните параметры в формате JSON и нажмите Run. Ответ Mailtrap появится на панели ниже.
CLI
Для одноразовых вызовов без интерфейса используйте npm run mcp:cli. Передайте CLI-флаги Inspector после --, чтобы npm пробросил их без изменений:
# List all tools
npm run mcp:cli -- --method tools/list
# Call a tool — flags after the `--`
npm run mcp:cli -- \
--method tools/call \
--tool-name get-template \
--tool-arg template_id=12345
# Multiple --tool-arg flags for tools with several params
npm run mcp:cli -- \
--method tools/call \
--tool-name send-sending-domain-setup-instructions \
--tool-arg sending_domain_id=3938 \
--tool-arg [email protected]
Запуск сервера MCPB
# Run the MCPB server directly
node dist/mcpb-server.js
# Or use the provided binary
mailtrap-mcpb-server
[!TIP] Для разработки с MCP Inspector:
npm run dev:mcpb
Обработка ошибок
Сервер использует структурированную обработку ошибок в соответствии с соглашениями MCP:
VALIDATION_ERROR: Ошибки валидации входных данныхCONFIGURATION_ERROR: Отсутствующая или неверная конфигурацияEXECUTION_ERROR: Ошибки времени выполненияTIMEOUT: Тайм-аут операции (по умолчанию 30 секунд)
Ошибки содержат полезные сообщения и записываются в структурированном виде.
Безопасность
- Входные данные проверяются через Zod-схемы
- Переменные окружения обрабатываются безопасно
- Защита операций по тайм-ауту (30 секунд)
- Конфиденциальные данные скрываются в выводе ошибок
Логирование
Структурированные JSON-логи с уровнями: INFO, WARN, ERROR, DEBUG.
Включите отладочное логирование, установив DEBUG=true.
# Example: enable debug logging
DEBUG=true node dist/mcpb-server.js
Важно: Сервер записывает логи в stderr, чтобы stdout оставался зарезервированным для кадров JSON-RPC. Это предотвращает ошибки парсинга JSON у хостов из-за вставки логов.
Пример анализа логов с помощью jq:
# Filter error logs
node dist/mcpb-server.js 2>&1 | jq 'select(.level == "error")'
# Filter debug logs
node dist/mcpb-server.js 2>&1 | jq 'select(.level == "debug")'
Устранение неполадок
Распространенные проблемы:
- Отсутствует API-токен: убедитесь, что установлена переменная
MAILTRAP_API_TOKEN - Песочница не работает: укажите
test_inbox_idв вызове инструмента или задайте переменную окруженияMAILTRAP_TEST_INBOX_ID - Ошибки тайм-аута: проверьте сетевое подключение и статус API Mailtrap
- Ошибки валидации: убедитесь, что все обязательные поля заполнены
Участие в разработке
Сообщения об ошибках и pull-запросы приветствуются на GitHub. Этот проект призван быть безопасным и дружелюбным пространством для сотрудничества, и от участников ожидается соблюдение кодекса поведения.
Лицензия
Пакет доступен с открытым исходным кодом на условиях лицензии MIT.
Кодекс поведения
Все участники взаимодействия в кодовых базах, трекерах задач, чатах и списках рассылки проекта Mailtrap обязаны следовать кодексу поведения.