关于 Postmark MCP Server
Postmark MCP Server 将 Postmark 邮件服务接入兼容 MCP 的助手,支持事务邮件及账户管理操作,包括模板、投递诊断和 Webhook。
主要功能
- 01发送单封、批量及模板邮件
- 02创建、编辑、验证和删除模板
- 03搜索邮件并诊断投递
- 04管理退信、抑制名单和 Webhook
- 05查看投递统计和服务器信息
适用场景
- 01通过助手发送事务邮件
- 02批量发送个性化模板邮件
- 03排查投递失败和退信
- 04查看 Postmark 活动并配置 Webhook
MCP 相关
向 MCP 客户端提供 Postmark 账户操作工具。工具注解可区分只读、修改和破坏性操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Official Postmark MCP Server

使用 Claude 和其他兼容 MCP 的 AI 助手,通过 Postmark 发送电子邮件。
功能
- 提供由你的 Postmark 账户支持的模型上下文协议(MCP)服务
- 提供 24 种工具,涵盖电子邮件发送(单封和批量)、模板(CRUD 和验证)、消息搜索、投递诊断、退信、抑制列表、统计信息、服务信息和 Webhook
- MCP 工具注释(
readOnlyHint、destructiveHint)可让支持这些注释的客户端自动批准安全的读取操作,并在执行修改或破坏性操作前要求确认 - 通过环境变量轻松配置
- 完善的错误处理和优雅关停
- 将结构化 JSON 日志记录到 stderr,并可选择持久化到日志文件;默认会部分屏蔽电子邮件地址
- 强制使用 HTTPS,并可选配域名允许列表以注册 Webhook
- 每次发送时自动跟踪打开和点击情况
实用文档
反馈
欢迎告诉我们你的想法!请通过我们的反馈表单分享反馈和建议。
在 X 上关注我们 - @postmarkapp
设置
要求
- Node.js v22 或更高版本。请运行你的 Node 版本线中的最新补丁版本;参见 2026 年 10 月 Node.js 安全版本。
- 一个 Postmark 账户和服务令牌
安装(本地开发)
克隆代码库:
git clone https://github.com/ActiveCampaign/postmark-mcp
cd postmark-mcp
安装依赖项:
npm install
# or
yarn
# or
bun install
配置(本地开发)
根据示例创建你自己的环境文件
cp .env.example .env
编辑你的 .env,填入 Postmark 凭据和设置。
重要: 此配置仅用于本地开发。切勿将密钥存储在版本控制中,并应将 .env 类型的文件添加到 .gitignore。
必需
| 变量 | 描述 |
|---|---|
POSTMARK_SERVER_TOKEN | 你的 Postmark 服务 API 令牌 |
DEFAULT_SENDER_EMAIL | 默认发件人电子邮件地址(必须是在 Postmark 中已验证的发件人) |
DEFAULT_MESSAGE_STREAM | Postmark 消息流(例如,outbound) |
可选
| 变量 | 默认值 | 描述 |
|---|---|---|
AGENT_LABEL | — | 此实例的标签(例如,prod、staging)。每次 Postmark API 请求都会将其作为 X-Agent-Label 发送,可用于在日志或支持工单中识别流量来源。 |
WEBHOOK_URL_ALLOWLIST | — | 以逗号分隔的 HTTPS URL 前缀列表,createWebhook 只接受列表中的前缀(例如,https://hooks.yourapp.com,https://inbound.corp.io)。未设置时,接受任何有效的 HTTPS URL。 |
LOG_FILE | — | 结构化 JSON 日志的写入文件路径。日志会追加到该文件,同时也会输出到 stderr。文件不存在时会自动创建。不进行日志轮转,也不限制文件大小——在长时间运行的部署中,请使用 logrotate 等外部工具管理该文件。 |
LOG_EMAIL_FULL | false | 设置为 true 可记录未屏蔽的电子邮件地址。默认情况下,日志中的邮箱部分会被部分屏蔽(u**[email protected])。 |
运行服务:
npm start
# or
yarn start
# or
bun start
冒烟测试(需要有效的 .env):
仓库提供两个冒烟测试示例文件。运行前,请将每个文件复制为不带示例标记的文件名(这些文件会被 gitignore 忽略),这样你的本地修改(包括任何已验证的发件人地址)就不会被提交。
# Read-only suite (25 checks). Optionally edit RECIPIENT_WITH_HISTORY.
cp smoke-test.example.mjs smoke-test.mjs
npm run smoke
# Mutating suite (full lifecycles + real email sends).
# REQUIRED: edit SENDER and RECIPIENT to two of your verified addresses.
cp smoke-test-mutating.example.mjs smoke-test-mutating.mjs
node smoke-test-mutating.mjs
只读测试套件会通过 stdio 启动服务,并针对你的 Postmark 账户测试所有读取工具,以及 editTemplate 和 createWebhook 的验证路径。它不会发送邮件或更改状态。
会更改数据的测试套件会完整执行模板(包括布局绑定)、webhook 和抑制项的创建→编辑→删除生命周期,并在你配置的两个地址之间发送真实邮件。测试结束后会自行清理。占位值仍未替换时,脚本会拒绝运行。
Cursor 快速安装
安装 MCP 后,请更新配置并设置:
POSTMARK_SERVER_TOKENDEFAULT_SENDER_EMAILDEFAULT_MESSAGE_STREAM(默认值:outbound)
MCP 客户端配置
使用 npx(推荐——无需克隆)
无需管理本地副本,直接从 npm 安装:
{
"mcpServers": {
"postmark": {
"command": "npx",
"args": ["-y", "@activecampaign/postmark-mcp"],
"env": {
"POSTMARK_SERVER_TOKEN": "your-postmark-server-token",
"DEFAULT_SENDER_EMAIL": "[email protected]",
"DEFAULT_MESSAGE_STREAM": "outbound"
}
}
}
}
使用本地克隆
{
"mcpServers": {
"postmark": {
"command": "node",
"args": ["/absolute/path/to/postmark-mcp/index.js"],
"env": {
"POSTMARK_SERVER_TOKEN": "your-postmark-server-token",
"DEFAULT_SENDER_EMAIL": "[email protected]",
"DEFAULT_MESSAGE_STREAM": "outbound"
}
}
}
}
这两段配置都适用于 Claude Desktop(~/Library/Application Support/Claude/claude_desktop_config.json)、Cursor(.cursor/mcp.json)以及任何接受标准 JSON 配置格式的其他 MCP 客户端。
工具
本节完整介绍 Postmark MCP 服务的工具,包括示例提示词和载荷。服务共注册 24 个工具,分为八个类别。
目录
电子邮件
sendEmail
向一位收件人或最多 50 位收件人发送事务性电子邮件。
示例提示词:
Send an email using Postmark to [email protected] with the subject "Meeting Reminder" and the message "Don't forget our team meeting tomorrow at 2 PM."
预期载荷:
{
"to": "[email protected]",
"subject": "Meeting Reminder",
"textBody": "Don't forget our team meeting tomorrow at 2 PM.",
"htmlBody": "<p>Don't forget our team meeting tomorrow at 2 PM.</p>",
"from": "[email protected]",
"cc": "[email protected]",
"bcc": "[email protected]",
"replyTo": "[email protected]",
"tag": "meetings"
}
to 可接受单个地址,也可接受最多包含 50 个地址的数组。htmlBody、from、cc、bcc、replyTo 和 tag 均为可选项。如果省略 from,则使用 DEFAULT_SENDER_EMAIL。
响应:
Email sent successfully!
MessageID: 0a1b2c3d-...
To: [email protected]
Subject: Meeting Reminder
sendEmailWithTemplate
使用 Postmark 模板发送电子邮件。
示例提示词:
Send the "welcome" template to [email protected] with name "John Doe" and login_url "https://myapp.com/login".
预期载荷:
{
"to": "[email protected]",
"templateAlias": "welcome",
"templateModel": {
"name": "John Doe",
"login_url": "https://myapp.com/login"
},
"from": "[email protected]",
"tag": "onboarding"
}
请提供 templateId(数字)或 templateAlias(字符串)之一,不能同时提供。
响应:
Template email sent successfully!
MessageID: 0a1b2c3d-...
To: [email protected]
Template: welcome
sendBatch
在单次 API 调用中发送最多 500 封电子邮件。每条消息彼此完全独立,拥有自己的收件人、主题和正文。此工具封装了 Postmark 的同步批量端点(POST /email/batch),该端点会立即返回每条消息的处理结果。
**注意:**Postmark 还提供用于大批量任务的批量电子邮件 API(
POST /email/bulk),没有消息数量上限,载荷限制为 50 MB。该端点采用提交后轮询的工作流,目前尚未由此 MCP 服务封装。
预期载荷:
{
"messages": [
{
"to": "[email protected]",
"subject": "Order #1234 confirmed",
"textBody": "Thanks Alice — your order is on its way.",
"tag": "order-confirmation"
},
{
"to": "[email protected]",
"subject": "Order #1235 confirmed",
"textBody": "Thanks Bob — your order is on its way.",
"tag": "order-confirmation"
}
]
}
每条消息的字段:to、subject、textBody 为必填项。htmlBody、from、cc、bcc、replyTo 和 tag 为可选项。如果某条消息省略 from,则使用 DEFAULT_SENDER_EMAIL。
响应:
Sent 2/2 successfully
Successes:
- [email protected] — abc-123-def
- [email protected] — abc-456-ghi
如果部分消息在提交时失败(例如,收件人被抑制),失败消息会列在前面,并附有其 ErrorCode 和原因:
Sent 8/10 successfully (2 failed)
Failures:
- [email protected] — 406: Address has been suppressed.
- [email protected] — 300: Inactive recipient
...
sendBatchWithTemplate
使用同一模板发送最多 500 封邮件,并为每位收件人分别提供模板模型。适合“为每位新用户渲染此入门模板”之类的流程。
预期载荷:
{
"templateAlias": "welcome",
"from": "[email protected]",
"tag": "onboarding",
"recipients": [
{ "to": "[email protected]", "templateModel": { "name": "Alice", "plan": "Pro" } },
{ "to": "[email protected]", "templateModel": { "name": "Bob", "plan": "Free" } }
]
}
请提供 templateId(数字)或 templateAlias(字符串)之一。顶层的 from 和 tag 会应用于所有收件人,但可按收件人覆盖。每位收件人还可选择提供 cc、bcc 和 replyTo。
**响应:**格式与 sendBatch 相同。
模板
listTemplates
列出此服务上保存的模板。返回前 100 个模板;如果服务上有 100 个以上的模板,目前不支持分页,响应会说明结果已截断。
响应:
Found 2 templates:
• **Welcome**
- ID: 12345678
- Alias: welcome
- Subject: Welcome to {{product_name}}
getTemplate
获取单个模板的完整内容(HTML 正文、文本正文、主题、类型)。
载荷:{ "templateIdOrAlias": "welcome" } — 接受数字 ID 或字符串别名。
createTemplate
创建新模板。需要 name。必须提供 htmlBody 或 textBody 中的至少一项。
Standard 模板必须提供 subject,Layout 模板则必须省略该字段——Postmark 不接受 Layout 中的此字段。
layoutTemplate(仅限 Standard)通过别名将新模板绑定到现有 Layout。若不提供,新模板将不经过 Layout 包装来渲染(不会应用任何 Layout 的外层样式)。
预期载荷:
{
"name": "Order Confirmation",
"subject": "Your order #{{order_id}} is confirmed",
"htmlBody": "<h1>Thanks {{name}}</h1>",
"textBody": "Thanks {{name}}",
"alias": "order-confirmation",
"templateType": "Standard",
"layoutTemplate": "basic"
}
templateType 可以是 "Standard"(默认值)或 "Layout"。
editTemplate
更新现有模板。需要 templateIdOrAlias,以及至少一个要更新的字段(name、subject、htmlBody、textBody、alias 或 layoutTemplate)。
传入 "layoutTemplate": null 可解除模板与当前 Layout 的绑定(MCP 会将其转换为 Postmark API 清除关联所需的空字符串)。
deleteTemplate
通过 ID 或别名永久删除模板。若 Standard 模板仍绑定到某个 Layout,则无法删除该 Layout 模板——请先通过 editTemplate 解除绑定。
载荷: { "templateIdOrAlias": "order-confirmation" }
validateTemplate
校验模板内容(Mustachio 语法、未定义变量),但不保存。必须提供 subject、htmlBody 或 textBody 中的至少一项。
预期载荷:
{
"subject": "Order #{{order_id}}",
"htmlBody": "<p>Thanks {{name}}</p>",
"textBody": "Thanks {{name}}",
"testRenderModel": { "order_id": 42, "name": "John" },
"templateType": "Standard"
}
消息
searchOutboundMessages
搜索外发邮件历史记录。
预期载荷(所有筛选条件均为可选):
{
"recipient": "[email protected]",
"fromEmail": "[email protected]",
"tag": "marketing",
"subject": "Welcome",
"status": "sent",
"messageStream": "outbound",
"fromDate": "2025-05-01",
"toDate": "2025-05-15",
"count": 50,
"offset": 0
}
status 的取值为 queued、sent、processed 之一。count 的范围为 1–500(默认值为 50)。
getMessageDetails
获取单封外发邮件的完整详情和事件时间线。
载荷: { "messageId": "0a1b2c3d-..." }
诊断
diagnoseDelivery
综合诊断工具。它会针对收件人地址,并行执行邮件搜索、抑制名单检查和退信历史查询,然后综合生成通俗易懂的建议,以回答“我的邮件是否送达了 X?如果没有,原因是什么?”
这是一个诊断工具:它将多个 Postmark API 调用整合为一个连贯的答复,而非对应单个端点。
提示词示例:
Did my email to [email protected] get delivered? If not, what should I do?
预期载荷:
{
"recipient": "[email protected]",
"messageId": "0a1b2c3d-...",
"fromDate": "2026-04-21",
"toDate": "2026-04-28",
"messageStream": "outbound"
}
除 recipient 外,所有字段均为可选。如果省略 messageId,则使用发给该收件人的最近一封邮件。默认搜索时间范围为过去 7 天。
响应示例:
Delivery Diagnosis: [email protected]
────────────────────────────────────────────────
Suppression: not suppressed on stream "outbound"
Most recent message:
MessageID: fadeae4e-fb04-4102-9303-9876078c7b81
Subject: Welcome to MyApp
Sent: 2026-04-27T18:42:19.0000000-04:00
Status: Sent
Events: Delivered, Opened×2, Clicked
Bounce history: none
Recommended action:
Email was delivered. If recipient says they didn't see it, check their
spam folder or ask them to whitelist the sender domain.
当收件人位于抑制名单中时,建议会根据原因而有所不同:SpamComplaint 为永久抑制,HardBounce 可能可以重新激活,ManualSuppression 可通过 deleteSuppressions 删除。
退信
searchBounces
搜索退信日志,可按类型、收件人、标签、邮件 ID、邮件流、日期范围以及启用/停用状态进行筛选。
预期载荷(均为可选):
{
"type": "HardBounce",
"inactive": true,
"emailFilter": "@example.com",
"tag": "marketing",
"messageID": "0a1b2c3d-...",
"messageStream": "outbound",
"fromDate": "2025-05-01",
"toDate": "2025-05-15",
"count": 50,
"offset": 0
}
支持的 type 值(与 Postmark 的 BounceType 枚举一致,共 22 个值):AddressChange、AutoResponder、BadEmailAddress、Blocked、ChallengeVerification、DMARCPolicy、DnsError、HardBounce、InboundError、ManuallyDeactivated、OpenRelayTest、SMTPApiError、SoftBounce、SpamComplaint、SpamNotification、Subscribe、TemplateRenderingFailed、Transient、Unconfirmed、Unknown、Unsubscribe、VirusNotification。
getBounceDump
返回退信的原始 SMTP 转储。退信转储会保留 30 天。
载荷: { "bounceId": 123456 }
activateBounce
重新激活已停用的电子邮件地址(仅适用于 CanActivate: true 的退信)。
载荷: { "bounceId": 123456 }
抑制名单
listSuppressions
列出某个邮件流的抑制名单。
预期载荷(均为可选):
{
"messageStream": "outbound",
"suppressionReason": "HardBounce",
"origin": "Recipient",
"emailAddress": "[email protected]",
"fromDate": "2025-05-01",
"toDate": "2025-05-15"
}
suppressionReason ∈ HardBounce、SpamComplaint、ManualSuppression。origin ∈ Recipient、Customer、Admin。若省略 messageStream,则使用 DEFAULT_MESSAGE_STREAM。
createSuppressions
在一个邮件流中最多抑制 50 个电子邮件地址。
Payload: { "emailAddresses": ["[email protected]", "[email protected]"], "messageStream": "outbound" }
deleteSuppressions
从抑制列表中最多移除 50 个地址。注意:无法删除 SpamComplaint 抑制项。
Payload: { "emailAddresses": ["[email protected]"], "messageStream": "outbound" }
统计信息与服务器
getDeliveryStats
统一统计工具。默认返回易读的摘要标题;传入可选的 stat 可查看特定细分统计。
预期 Payload(均为可选):
{
"stat": "summary",
"tag": "marketing",
"fromDate": "2025-05-01",
"toDate": "2025-05-15",
"messageStream": "outbound"
}
支持的 stat 值:
stat | 返回内容 |
|---|---|
summary (默认) | 打开 / 点击 / 退信 / 垃圾邮件投诉率的摘要 |
overview | 所有概览计数(已发送、已跟踪、打开、点击、退信等) |
sent | 已发送数量 |
bounces | 按类型细分的退信情况 |
spam | 垃圾邮件投诉数量 |
tracked | 已跟踪邮件数量 |
opens | 打开总数及独立打开数 |
openPlatforms | 按平台细分的打开情况(桌面 / 移动设备 / WebMail / 未知) |
openClients | 使用最多的 10 个电子邮件客户端(Apple Mail、Gmail 等) |
openReadTimes | 阅读时间直方图 |
clicks | 链接点击总数及独立点击数 |
clickBrowsers | 用于点击的 10 个主流浏览器 |
clickPlatforms | 按平台细分的点击情况(桌面 / 移动设备 / WebMail / 未知) |
clickLocation | HTML 与纯文本中的点击位置 |
默认摘要响应:
Email Delivery Summary
Sent: 74
Tracked: 33 (44.6% of sent)
Open rate: 93.9% (31/33 unique opens)
Click rate: 4.8% (10/207 unique links clicked)
Bounced: 1 (1.4%)
Spam: 0 (0.0%)
Period: 2025-05-01 → 2025-05-15
Tag: marketing
stat: "openPlatforms" 响应示例:
Open Platform Usage
Desktop 20 (64.5%)
Mobile 0 (0.0%)
WebMail 11 (35.5%)
Unknown 0 (0.0%)
getServerInfo
返回 Postmark 服务器的名称、颜色、跟踪设置和 webhook URL。
Payload: {}
Webhook
listWebhooks
列出已配置的 webhook。可选使用 messageStream 筛选。
createWebhook
创建 webhook 订阅。需要提供 url 和至少一个触发条件。
**安全提示:**Webhook 是持久的——注册后,在该服务器上发生匹配事件时,Postmark 会持续向目标 URL POST 事件数据(打开、点击、退信、垃圾邮件投诉等),直到删除该 webhook。仅注册指向你控制的 URL 的 webhook。使用 WEBHOOK_URL_ALLOWLIST 将可接受的 URL 限制为已知前缀。
url 必须使用 HTTPS。HTTP URL 会被拒绝。如果设置了 WEBHOOK_URL_ALLOWLIST,URL 还必须匹配其中一个已配置的前缀。
预期 Payload:
{
"url": "https://hooks.yourapp.com/postmark",
"messageStream": "outbound",
"openEnabled": true,
"clickEnabled": true,
"deliveryEnabled": false,
"bounceEnabled": true,
"spamComplaintEnabled": true,
"subscriptionChangeEnabled": false
}
deleteWebhook
按 ID 删除 webhook。
Payload: { "webhookId": 1234567 }
实现细节
API 请求头
所有发往 Postmark API 的请求都包含以下用于识别客户端的请求头:
| 请求头 | 描述 |
|---|---|
X-Postmark-Client | 始终为 postmark-mcp——标识此服务为请求来源 |
X-Postmark-Client-Version | 此 MCP 服务的版本,与软件包版本一致 |
X-Postmark-MCP-Client | MCP 宿主应用的名称和版本(例如 claude-desktop/1.0),从 MCP initialize 握手中获取。如果客户端未提供此信息,则省略。 |
X-Agent-Label | AGENT_LABEL 环境变量的值。未设置时省略。 |
此服务使用自己的 HTTP 客户端(不使用 postmark npm 软件包),以便 Postmark 日志和支持工单能够将 MCP 流量识别为 postmark-mcp。
自动配置
所有邮件都会自动配置为:
TrackOpens: trueTrackLinks: "HtmlAndText"- 使用
DEFAULT_MESSAGE_STREAM环境变量指定的邮件流
错误处理
此服务实现了全面的错误处理:
- 验证所有必需的环境变量
- 在 SIGTERM 和 SIGINT 时优雅关闭
- 妥善处理 API 调用错误
- 不在日志中暴露敏感信息
- 统一错误消息格式
日志记录
每次工具调用都会向 stderr 输出一行结构化 JSON。如果设置了 LOG_FILE,同一行也会追加到该文件中。
日志条目格式:
{
"timestamp": "2026-06-16T20:34:01.123Z",
"tool": "sendEmail",
"clientName": "claude-desktop",
"clientVersion": "1.0",
"args": {
"to": "u**[email protected]",
"subject": "Meeting Reminder",
"textBody": "[312ch]"
},
"status": "ok",
"durationMs": 243
}
发生错误时,status 为 "error",且 error 字段包含错误消息。
会记录和不会记录的内容:
| 数据 | 记录方式 |
|---|---|
| 电子邮件地址 | 部分掩码:u**[email protected](设置 LOG_EMAIL_FULL=true 可禁用) |
htmlBody / textBody | 仅记录字节数:[312ch] |
templateModel 和其他数据对象 | 仅记录键名:{ "_keys": ["name", "plan"] } |
批量 messages / recipients 数组 | 数量 + 收件人列表:{ "_count": 2, "_recipients": ["u**r@…", "a*b@…"] } |
与 password、secret、token、apikey 匹配的字段 | [redacted] |
| 工具名称、耗时、MCP 客户端身份、状态 | 完整记录 |
未结构化的运行消息(启动、关闭、API 连通性)仍会以纯文本形式写入 stderr,与 JSON 工具日志并存。
安全注意事项
访问范围
此 MCP 服务拥有已配置的 POSTMARK_SERVER_TOKEN 的全部权限。它向任何连接的 MCP 客户端开放 24 个工具,包括群发邮件、模板管理、Webhook 注册和抑制列表编辑。
Postmark 有两种令牌类型:Server Token(此处使用)和 Account Token。两者都不支持细分权限——Server Token 可完整访问其所属服务上的所有操作。实际限制暴露范围的方法是从结构上着手:
- 创建一个专用的 Postmark 服务,仅用于 MCP 流量。这样即使遭到入侵,影响也仅限于该服务的数据和设置,而非整个账户。
- 为该服务配置其实际所需的消息流和已验证发件人签名。
- 如果令牌遭到泄露,请轮换令牌。
工具影响范围
这 24 个工具中有数个具有高影响力的操作。以下按风险等级分类:
| 类别 | 工具 |
|---|---|
| 破坏性(不可逆) | editTemplate、deleteTemplate、deleteWebhook、deleteSuppressions |
| 发送(外发邮件) | sendEmail、sendEmailWithTemplate、sendBatch、sendBatchWithTemplate |
| 增量(更改账户状态) | createTemplate、createSuppressions、createWebhook、activateBounce |
| 只读 | 其余所有 12 个工具 |
所有工具都带有 MCP 注解(readOnlyHint、destructiveHint、idempotentHint)。遵循注解的 MCP 客户端(包括 Cursor 和 Claude Desktop)可以自动批准安全的只读查询(readOnlyHint: true),并会对非读取操作显示确认提示:发送邮件、编辑模板、更改抑制列表以及管理 Webhook。永久删除数据的工具还带有 destructiveHint: true,供能够区分破坏性操作与一般修改操作的客户端识别。
Webhook URL 策略
createWebhook 会强制要求所有 URL 使用 HTTPS。注册 Webhook 后,Postmark 会持续向该 URL POST 事件数据(打开、点击、退信、垃圾邮件投诉),直到删除该 Webhook。为防止遭到入侵或误定向的工具调用注册你无法控制的回调,请将你拥有的 HTTPS 前缀设置为 WEBHOOK_URL_ALLOWLIST。请定期使用 listWebhooks 或通过 Postmark 控制面板审计已注册的 Webhook。
为保护 Webhook 接收端,请在网络或防火墙层面将已公布的 Postmark 发送 IP加入白名单,确保只有 Postmark 能向你的端点 POST 请求。
提示注入风险
由于此 MCP 服务可以发送电子邮件和注册 Webhook,因此可能成为提示注入的目标——电子邮件、模板或代码库中的恶意内容可能诱使 AI 使用意外参数调用工具。上述缓解措施(专用令牌、在 MCP 客户端中审批工具、WEBHOOK_URL_ALLOWLIST)可在发生此类情况时缩小影响范围。切勿在不受信任的环境中为发送或破坏性工具配置自动审批。
有关 Postmark API 的更多信息,请访问 Postmark 开发者文档。
许可证
MIT © ActiveCampaign
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。