 ](https://www.npmjs.com/package/mcp-mailtrap)
MCP邮件陷阱服务器
一个MCP服务器,提供通过Mailtrap在沙箱中发送和测试的工具。
先决条件
在使用此MCP服务器之前,您需要:
- 创建邮件陷阱帐户
- 验证您的域名
- 从获取您的API令牌 Mailtrap API设置
- 从获取您的帐户ID 邮件陷阱帐户管理
所需的环境变量:
MAILTRAP_API_TOKEN-所有功能都需要MAILTRAP_ACCOUNT_ID-模板、统计数据、电子邮件日志、沙盒列表/显示和发送域都是必需的。仅适用于发送电子邮件和发送沙盒电子邮件。
可选(可以作为工具参数传递):
DEFAULT_FROM_EMAIL-默认发件人电子邮件from不提供用于发送电子邮件或发送沙盒电子邮件。允许通过以下方式切换每次通话的发件人from参数。MAILTRAP_TEST_INBOX_ID-沙盒工具的默认测试收件箱IDtest_inbox_id未提供。允许通过以下方式在每次通话的收件箱之间切换test_inbox_id参数。
快速安装

](https://insiders.vscode.dev/redirect/mcp/install?name=mailtrap&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22mcp-mailtrap%22%5D%2C%22env%22%3A%7B%22MAILTRAP_API_TOKEN%22%3A%22%24%7Binput%3AmailtrapApiToken%7D%22%2C%22DEFAULT_FROM_EMAIL%22%3A%22%24%7Binput%3AsenderEmail%7D%22%2C%22MAILTRAP_ACCOUNT_ID%22%3A%22%24%7Binput%3AmailtrapAccountId%7D%22%2C%22MAILTRAP_TEST_INBOX_ID%22%3A%22%24%7Binput%3AmailtrapTestInboxId%7D%22%7D%7D&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22mailtrapApiToken%22%2C%22description%22%3A%22Mailtrap+API+Token%22%2C%22password%22%3Atrue%7D%2C%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22senderEmail%22%2C%22description%22%3A%22Sender+Email+Address%22%7D%2C%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22mailtrapAccountId%22%2C%22description%22%3A%22Mailtrap+Account+ID%22%7D%2C%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22mailtrapTestInboxId%22%2C%22description%22%3A%22Mailtrap+Test+Inbox+ID+%28optional%29%22%7D%5D)
Smithery CLI
铁匠铺 是适用于所有AI客户端的MCP服务器的注册表安装程序和管理器。
npx @smithery/cli install mailtrapSmithery自动处理客户端配置,并提供交互式设置过程。这是在本地开始使用MCP服务器的最简单方法。
设置
克劳德桌面版
使用MCPB安装邮件陷阱服务器。您可以在以下位置找到这些文件 发布. 下载。MCPB文件并打开它。如果你有克劳德桌面,它会打开它并建议配置。
克劳德桌面或光标
添加以下配置:
{
"mcpServers": {
"mailtrap": {
"command": "npx",
"args": ["-y", "mcp-mailtrap"],
"env": {
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "your_sender@example.com",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}如果您正在使用 asdf 为了管理Node.js,您必须使用可执行文件的绝对路径(例如Mac)
{
"mcpServers": {
"mailtrap": {
"command": "/Users//.asdf/shims/npx",
"args": ["-y", "mcp-mailtrap"],
"env": {
"PATH": "/Users//.asdf/shims:/usr/bin:/bin",
"ASDF_DIR": "/opt/homebrew/opt/asdf/libexec",
"ASDF_DATA_DIR": "/Users//.asdf",
"ASDF_NODEJS_VERSION": "20.6.1",
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "your_sender@example.com",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}Claude桌面配置文件位置
苹果电脑: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
游标配置文件位置
苹果电脑: ~/.cursor/mcp.json
视窗: %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": "your_sender@example.com",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}
}\[!提示\] 更改“env”部分后,不要忘记重新启动MCP服务器。
MCP束(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/.
用法
配置后,您可以要求代理发送电子邮件和管理模板,例如:
电子邮件发送操作:
- “发送电子邮件至john.doe@example.com主题为“明天的会议”,并友好地提醒我们即将举行的会议。"
- “电子邮件sarah@example.com关于项目更新,CC团队team@example.com"
- “发送欢迎模板(uuid
b81aabcd-1a1e-41cf-91b6-eca0254b3d96)tonew@example.com带变量{ name: 'Alex' }" - “向发送沙盒电子邮件test@example.com主题为“测试模板”,预览我们的欢迎电子邮件的外观”
电子邮件日志(调试传递):
- “列出我最近发送的电子邮件日志”
- “显示发送到的电子邮件的电子邮件日志user@example.com"
- “获取ID abc-123-uuid的电子邮件日志消息,以检查传递状态”
发送统计信息:
- “获取发送2025年1月的统计数据”
- “显示上个月按域细分的交付率”
- “从2025年1月1日到2025年01月31日,我的电子邮件统计数据按类别是什么?”
沙盒操作:
- “从我的沙盒收件箱获取所有邮件”
- “显示沙盒消息的第一页”
- “在我的沙盒收件箱中搜索包含'test'的邮件”
- “显示ID为5159037506的沙盒消息的详细信息”
模板操作:
- “列出我的邮件陷阱帐户中的所有电子邮件模板”
- “创建一个名为“欢迎电子邮件”的新电子邮件模板,主题为“欢迎来到我们的平台!”
- “更新ID为12345的模板,将主题更改为“更新的欢迎消息””
- “删除ID为67890的模板”
发送域名:
- “列出我的发送域”
- “获取ID为3938的发送域”
- “创建一个发送域,例如.com”
- “删除发送域3938”
- “获取发送域3938的DNS设置说明”
可用工具
发送电子邮件
通过Mailtrap发送事务性电子邮件。支持两种互斥模式-- 展示内嵌内容 (subject + text/html)或 基于模板 (template_uuid).
参数:
from(可选):发件人为电子邮件字符串或{ email, name? }如果没有提供,DEFAULT_FROM_EMAIL使用。to(可选):收件人--一封电子邮件/{ email, name? }或阵列。可选,如果cc或bcc提供;至少一个to/cc/bcc必须包含收件人。cc(可选):抄送收件人数组(电子邮件字符串或{ email, name? }每个)。bcc(可选):BCC收件人数组(电子邮件字符串或{ email, name? }每个)。subject(有条件):电子邮件主题行。内联发送需要;在以下情况下必须省略template_uuid已设置。text(条件):电子邮件正文。必需(与或代替html)用于内联发送;在以下情况下必须省略template_uuid已设置。html(条件):电子邮件正文的HTML版本。必需(与或代替text)用于内联发送;在以下情况下必须省略template_uuid已设置。category(可选):用于跟踪和分析的电子邮件类别。在以下情况下必须省略template_uuid已设置。template_uuid(可选):使用邮件陷阱电子邮件模板而不是内联内容。当设置时,subject/text/html/category必须省略(根据Mailtrap API)。template_variables(可选):替换到由引用的模板中的变量对象template_uuid。只允许与template_uuid.
列出电子邮件日志
列出已发送的电子邮件日志(传递历史),并可选择分页和过滤器。用于从IDE调试交付问题。
参数:
search_after(可选):从上一个响应的分页光标next_page_cursorsent_after(可选):ISO 8601日期/时间;仅在此时间之后发送日志sent_before(可选):ISO 8601日期/时间;仅在此时间之前发送的日志from_email(可选):按发件人电子邮件过滤;与...一起使用from_operator(默认值:ci_equal)to_email(可选):按收件人电子邮件过滤;与...一起使用to_operator(默认值:ci_equal)status(可选):按交付状态过滤:已交付、未交付、已排队、已选择退出;与...一起使用status_operator(默认值:相等)subject(可选):按电子邮件主题筛选;与...一起使用subject_operator(默认值:ci_contain)。使用subject_operator:empty/not_empty按主题的存在进行筛选。sending_domain_id(可选):通过发送域ID(数字)进行过滤;与...一起使用sending_domain_id_operator(默认值:相等)sending_stream(可选):按流过滤:事务性或批量;与...一起使用sending_stream_operator(默认值:相等)events(可选):按事件类型筛选:送达、打开、点击、退回、垃圾邮件、取消订阅、软取消、拒绝、暂停;与...一起使用events_operator(包括事件/不包括事件)clicks_count/opens_count(可选):点击过滤/打开计数;与...一起使用*_operator:相等、大于、小于client_ip/sending_ip(可选):按IP过滤;与...一起使用*_operator:相等、不相等、包含、不包含email_service_provider_response(可选):按提供者响应文本筛选;与...一起使用*_operator(ci_contain等)email_service_provider(可选):按提供商筛选(精确);与...一起使用*_operator:相等,不相等recipient_mx(可选):按收件人MX筛选;与...一起使用recipient_mx_operator(ci_contain等)category(可选):按电子邮件类别筛选;与...一起使用category_operator:相等,不相等
所有参数都是可选的。
获取电子邮件日志消息
按ID(UUID)获取单个电子邮件日志消息:可读摘要(发件人、收件人、主题、发送时间、状态、类别、流、参与、传递上下文),然后是详细的事件历史记录。可选地,与 include_content: true,您还可以在Mailtrap公开原始消息URL时加载并显示消息正文(HTML和纯文本)。
参数:
message_id(必填):电子邮件日志消息的UUID(来自发送响应或列表电子邮件日志)。使用list-email-logs查找消息ID。include_content(可选):当true,获取原始EML(如果raw_message_url可用)并附加解析的HTML和纯文本正文部分,类似于显示沙盒电子邮件消息。
获取发送统计数据
获取某一日期范围内的电子邮件发送统计数据(投递、退回、打开、点击、垃圾邮件率)。可选择按域、类别、电子邮件服务提供商或日期进行细分。在不离开编辑的情况下检查交货率。
参数:
start_date(必填):统计范围的开始日期(YYYY-MM-DD)end_date(必填):统计范围的结束日期(YYYY-MM-DD)breakdown(可选):如何分解统计数据:aggregated(默认),by_domain,by_category,by_email_service_provider,或by_datesending_domain_ids(可选):将结果限制为这些发送域ID(整数数组)sending_streams(可选):限制为transactional和bulk(字符串数组)categories(可选):仅限于这些电子邮件类别(字符串数组)email_service_providers(可选):仅限于这些提供商,例如谷歌、雅虎、Outlook(字符串数组)
创建模板
在您的Mailtrap帐户中创建新的电子邮件模板。
参数:
name(必填):模板名称subject(必填):电子邮件主题行html(或text必填):模板的HTML内容text(或html必填):模板的纯文本版本category(可选):模板类别(默认为“常规”)
列表模板
列出您的Mailtrap帐户中的所有电子邮件模板。
参数:
- 无需参数
更新模板
更新现有电子邮件模板。
参数:
template_id(必填):要更新的模板的IDname(可选):模板的新名称subject(可选):新电子邮件主题行html(可选):模板的新HTML内容text(可选):模板的新纯文本版本category(可选):模板的新类别
\[!注意\] 调用更新模板执行更新时,必须至少提供一个可更新字段(名称、主题、html、文本或类别)。
删除模板
删除现有电子邮件模板。
参数:
template_id(必填):要删除的模板的ID
发送沙盒电子邮件
出于开发和测试目的,向您的Mailtrap测试收件箱发送电子邮件。这非常适合在不向真实收件人发送电子邮件的情况下测试电子邮件模板。支持与相同的两种模式 send-email — 展示内嵌内容 或 基于模板 (template_uuid).
参数:
test_inbox_id(可选):邮件陷阱测试收件箱ID。除非MAILTRAP_TEST_INBOX_ID已设置;通过每次通话来定位特定的收件箱。from(可选):发件人为电子邮件字符串或{ email, name? }如果没有提供,DEFAULT_FROM_EMAIL使用。to(可选):收件人以逗号分隔的字符串或电子邮件字符串数组表示/{ email, name? }物体。可选,如果cc或bcc提供;至少一个to/cc/bcc必须包含收件人。cc(可选):抄送收件人数组(电子邮件字符串或{ email, name? }每个)。bcc(可选):BCC收件人数组(电子邮件字符串或{ email, name? }每个)。subject(有条件):电子邮件主题行。内联发送需要;在以下情况下必须省略template_uuid已设置。text(条件):电子邮件正文。必需(与或代替html)用于内联发送;在以下情况下必须省略template_uuid已设置。html(条件):电子邮件正文的HTML版本。必需(与或代替text)用于内联发送;在以下情况下必须省略template_uuid已设置。category(可选):用于跟踪的电子邮件类别。在以下情况下必须省略template_uuid已设置。template_uuid(可选):使用邮件陷阱电子邮件模板而不是内联内容。当设置时,subject/text/html/category必须省略。template_variables(可选):替换到由引用的模板中的变量对象template_uuid。只允许与template_uuid.
\[!注意\] 对于沙盒工具,请提供test_inbox_id在工具调用中或设置MAILTRAP_TEST_INBOX_ID环境变量。您可以通过传递在每次通话的收件箱之间切换test_inbox_id.
获取沙盒消息
从邮件陷阱测试收件箱中检索邮件列表。在测试期间,可用于检查沙盒中收到了哪些电子邮件。
参数:
page(可选):分页页码(最小:1)last_id(可选):使用最后一个消息ID进行分页。返回指定消息ID后的消息(最小值:1)search(可选):搜索查询以筛选邮件
\[!注意\] 所有参数都是可选的。如果没有提供,将返回收件箱中的第一页邮件。使用page进行传统分页,last_id进行基于光标的分页,或搜索按内容过滤消息。
显示沙盒电子邮件消息
显示来自Mailtrap测试收件箱的特定电子邮件的详细信息和内容,包括HTML和文本正文内容。
参数:
message_id(必填):要检索的沙盒电子邮件的ID
\[!注意\] 使用 get-sandbox-messages 首先获取消息列表及其ID,然后使用此工具查看特定消息的完整内容。列出发送域
列出发送域及其DNS验证状态。
参数:
- 无需参数
获取发送域
通过ID及其验证状态(包括DNS记录)获取发送域。通过设置,可选地包括DNS设置说明 include_setup_instructions 到 true.
参数:
sending_domain_id(必填):发送域IDinclude_setup_instructions(可选):如果true,将DNS设置说明附加到响应中。违约:false
创建发送域
创建新的发送域。创建后,添加DNS记录以验证域(使用get发送域 include_setup_instructions: true 查看记录)。
参数:
domain_name(必填):域名(例如example.com)
删除发送域
删除发送域。
参数:
sending_domain_id(必填):发送要删除的域ID
发展
- 克隆存储库:
git clone https://github.com/mailtrap/mailtrap-mcp.git
cd mailtrap-mcp- 安装依赖项:
npm install使用克劳德桌面或光标进行配置
\[!提示\] 请参阅配置文件的位置 设置 部分。
添加以下配置:
{
"mcpServers": {
"mailtrap": {
"command": "node",
"args": ["/path/to/mailtrap-mcp/dist/index.js"],
"env": {
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "your_sender@example.com",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}如果您正在使用 asdf 为了管理Node.js,你应该使用可执行文件的绝对路径:
(以Mac为例)
{
"mcpServers": {
"mailtrap": {
"command": "/Users//.asdf/shims/node",
"args": ["/path/to/mailtrap-mcp/dist/index.js"],
"env": {
"PATH": "/Users//.asdf/shims:/usr/bin:/bin",
"ASDF_DIR": "/opt/homebrew/opt/asdf/libexec",
"ASDF_DATA_DIR": "/Users//.asdf",
"ASDF_NODEJS_VERSION": "20.6.1",
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "your_sender@example.com",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}VS Code
\[!提示\] 请参阅配置文件的位置 设置 部分。
{
"mcp": {
"servers": {
"mailtrap": {
"command": "node",
"args": ["/path/to/mailtrap-mcp/dist/index.js"],
"env": {
"MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
"DEFAULT_FROM_EMAIL": "your_sender@example.com",
"MAILTRAP_ACCOUNT_ID": "your_account_id",
"MAILTRAP_TEST_INBOX_ID": "your_test_inbox_id"
}
}
}
}
}测试
您可以使用 MCP检查员:
npm run dev运行MCPB服务器
# Run the MCPB server directly
node dist/mcpb-server.js
# Or use the provided binary
mailtrap-mcpb-server\[!提示\] 关于MCP Inspector的开发:
npm run dev:mcpb错误处理
此服务器使用与MCP约定一致的结构化错误处理:
VALIDATION_ERROR:输入验证失败CONFIGURATION_ERROR:配置缺失或无效EXECUTION_ERROR:运行时执行错误TIMEOUT:操作超时(默认30秒)
错误包括可操作的消息,并以结构化形式记录。
安全
- 通过Zod模式验证输入
- 安全处理环境变量
- 操作超时保护(30秒)
- 在错误输出中清除敏感细节
日志记录
具有以下级别的结构化JSON日志:信息、警告、错误、调试。
通过设置启用调试日志记录 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环境 - 超时错误:检查网络连接和Mailtrap API状态
- 验证错误:确保提供了所有必填字段
贡献
欢迎在上提交Bug报告和拉取请求 。该项目旨在成为一个安全、温馨的合作空间,贡献者应遵守 行为准则.
许可证
该软件包可根据以下条款作为开源软件提供 MIT许可证.
行为准则
在Mailtrap项目的代码库、问题跟踪器、聊天室和邮件列表中交互的每个人都应该遵循 行为准则.


