README
🚀 Postmark MCP 服务器
Postmark MCP 服务器是一个用于 Postmark 电子邮件服务的 MCP 服务器实现。它可以通过简单的配置,借助 Postmark 服务实现邮件发送功能,同时具备完善的错误处理和安全的日志记录等特性。
🚀 快速开始
环境要求
- Node.js(建议使用 v16 或更高版本)
- 一个 Postmark 账户和服务器令牌
安装步骤
- 克隆仓库:
git clone https://github.com/ActiveCampaign/postmark-mcp
cd postmark-mcp
- 安装依赖:
npm install
- 配置环境变量:
- 将
.env.example复制为.env:
- 将
cp .env.example .env
- 编辑 `.env` 文件,填写你的 Postmark 凭证和设置。
| 变量 | 描述 | 是否必需 | | ---- | ---- | ---- | | POSTMARK_SERVER_TOKEN | 你的 Postmark 服务器 API 令牌 | 是 | | DEFAULT_SENDER_EMAIL | 默认发件人电子邮件地址 | 是 | | DEFAULT_MESSAGE_STREAM | Postmark 消息流(例如 'outbound') | 是 |
- 启动服务器:
npm start
通过 Cursor 深度链接快速安装
你可以通过点击以下按钮,在 Cursor 中快速安装此 MCP 服务器:
⚠️ 重要提示
点击按钮后,你需要:
- 在 MCP 配置中设置
POSTMARK_SERVER_TOKEN。- 在 MCP 配置中设置
DEFAULT_SENDER_EMAIL。- 在 MCP 配置中设置
DEFAULT_MESSAGE_STREAM(默认为 "outbound")。
Claude 和 Cursor MCP 配置示例
{
"mcpServers": {
"Postmark": {
"command": "your-node-path", // 节点路径
"args": ["/Users/your-name/your-location/postmark-mcp/index.js"], // index.js 的实际路径
"env": {
"POSTMARK_SERVER_TOKEN": "your-postmark-server-token",
"DEFAULT_SENDER_EMAIL": "your-default-sender-email",
"DEFAULT_MESSAGE_STREAM": "your-default-message-stream"
}
}
}
}
✨ 主要特性
- 提供一个用于通过 Postmark 发送电子邮件的模型上下文协议(MCP)服务器。
- 通过环境变量进行简单配置。
- 具备完善的错误处理和优雅的关闭机制。
- 采用安全的日志记录方式(不暴露敏感数据)。
- 自动配置电子邮件跟踪。
💻 使用示例
工具参考
本节提供了 Postmark MCP 服务器工具的完整参考,包括每个工具的示例提示和预期有效负载。
目录
电子邮件管理工具
1. sendEmail
发送单封文本电子邮件。
示例提示:
使用 Postmark 向 recipient@example.com 发送一封主题为 "会议提醒" 的电子邮件,邮件内容为 "别忘了我们明天下午 2 点的团队会议。请带上你的季度统计报告(也许还可以带些零食)。"
预期有效负载:
{
"to": "recipient@example.com",
"subject": "会议提醒",
"textBody": "别忘了我们明天下午 2 点的团队会议。请带上你的季度统计报告(也许还可以带些零食)。",
"htmlBody": "电子邮件正文的 HTML 版本", // 可选
"from": "sender@example.com", // 可选,如果未提供则使用 DEFAULT_SENDER_EMAIL
"tag": "会议" // 可选
}
响应格式:
电子邮件发送成功!
MessageID: message-id-here
To: recipient@example.com
Subject: 会议提醒
2. sendEmailWithTemplate
使用预定义模板发送电子邮件。
示例提示:
使用 Postmark 模板别名 "welcome" 向 customer@example.com 发送一封电子邮件,并包含以下模板变量:
{
"name": "John Doe",
"product_name": "MyApp",
"login_url": "https://myapp.com/login"
}
预期有效负载:
{
"to": "customer@example.com",
"templateId": 12345, // 必须提供 templateId 或 templateAlias 之一,但不能同时提供
"templateAlias": "welcome", // 必须提供 templateId 或 templateAlias 之一,但不能同时提供
"templateModel": {
"name": "John Doe",
"product_name": "MyApp",
"login_url": "https://myapp.com/login"
},
"from": "sender@example.com", // 可选,如果未提供则使用 DEFAULT_SENDER_EMAIL
"tag": "入职" // 可选
}
响应格式:
模板电子邮件发送成功!
MessageID: message-id-here
To: recipient@example.com
Template: template-id-or-alias-here
模板管理工具
3. listTemplates
列出所有可用模板。
示例提示:
显示我们 Postmark 账户中所有可用的电子邮件模板列表。
响应格式:
📋 找到 2 个模板:
• 基本模板
- ID: 12345678
- 别名: basic
- 主题: 无
• 欢迎模板
- ID: 02345679
- 别名: welcome
- 主题: 无
统计与跟踪工具
4. getDeliveryStats
检索电子邮件送达统计信息。
示例提示:
显示我们从 2025 年 5 月 1 日到 2025 年 5 月 15 日标记为 "营销" 的 Postmark 电子邮件送达统计信息。
预期有效负载:
{
"tag": "营销", // 可选
"fromDate": "2025-05-01", // 可选,YYYY-MM-DD 格式
"toDate": "2025-05-15" // 可选,YYYY-MM-DD 格式
}
响应格式:
电子邮件统计摘要
发送: 100 封电子邮件
打开率: 45.5% (45/99 封跟踪电子邮件)
点击率: 15.2% (15/99 个跟踪链接)
时间段: 2025-05-01 至 2025-05-15
标签: 营销
🔧 技术细节
自动配置
所有电子邮件自动配置以下内容:
TrackOpens: trueTrackLinks: "HtmlAndText"- 消息流来自
DEFAULT_MESSAGE_STREAM环境变量
错误处理
服务器实现了完善的错误处理:
- 验证所有必需的环境变量。
- 在 SIGTERM 和 SIGINT 信号下优雅关闭。
- 对 API 调用进行适当的错误处理。
- 日志中不暴露敏感信息。
- 统一错误消息格式。
日志记录
- 使用适当的日志级别(正常操作使用
info,错误使用error)。 - 日志中排除敏感信息。
- 提供清晰的操作状态和结果。
有关 Postmark API 的更多信息,请访问 Postmark 开发者文档。
Scan to join WeChat group