mcpField
P
Postmark MCP Server

Postmark MCP Server

本地服务
github.com/ActiveCampaign通信协作602 天前更新

关于 Postmark MCP Server

Postmark MCP Server 将 Postmark 邮件服务接入兼容 MCP 的助手,支持事务邮件及账户管理操作,包括模板、投递诊断和 Webhook。

主要功能

  1. 01发送单封、批量及模板邮件
  2. 02创建、编辑、验证和删除模板
  3. 03搜索邮件并诊断投递
  4. 04管理退信、抑制名单和 Webhook
  5. 05查看投递统计和服务器信息

适用场景

  1. 01通过助手发送事务邮件
  2. 02批量发送个性化模板邮件
  3. 03排查投递失败和退信
  4. 04查看 Postmark 活动并配置 Webhook

MCP 相关

向 MCP 客户端提供 Postmark 账户操作工具。工具注解可区分只读、修改和破坏性操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Official Postmark MCP Server   NPM Version  MIT licensed

使用 Claude 和其他兼容 MCP 的 AI 助手,通过 Postmark 发送电子邮件。

Postmark MCP setup video

功能

  • 提供由你的 Postmark 账户支持的模型上下文协议(MCP)服务
  • 提供 24 种工具,涵盖电子邮件发送(单封和批量)、模板(CRUD 和验证)、消息搜索、投递诊断、退信、抑制列表、统计信息、服务信息和 Webhook
  • MCP 工具注释(readOnlyHint、destructiveHint)可让支持这些注释的客户端自动批准安全的读取操作,并在执行修改或破坏性操作前要求确认
  • 通过环境变量轻松配置
  • 完善的错误处理和优雅关停
  • 将结构化 JSON 日志记录到 stderr,并可选择持久化到日志文件;默认会部分屏蔽电子邮件地址
  • 强制使用 HTTPS,并可选配域名允许列表以注册 Webhook
  • 每次发送时自动跟踪打开和点击情况

实用文档

反馈

欢迎告诉我们你的想法!请通过我们的反馈表单分享反馈和建议。

在 X 上关注我们 - @postmarkapp


设置

要求

安装(本地开发)

克隆代码库:

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_STREAMPostmark 消息流(例如,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_FULLfalse设置为 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_TOKEN
  • DEFAULT_SENDER_EMAIL
  • DEFAULT_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 / 未知)
clickLocationHTML 与纯文本中的点击位置

默认摘要响应:

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-ClientMCP 宿主应用的名称和版本(例如 claude-desktop/1.0),从 MCP initialize 握手中获取。如果客户端未提供此信息,则省略。
X-Agent-LabelAGENT_LABEL 环境变量的值。未设置时省略。

此服务使用自己的 HTTP 客户端(不使用 postmark npm 软件包),以便 Postmark 日志和支持工单能够将 MCP 流量识别为 postmark-mcp。

自动配置

所有邮件都会自动配置为:

  • TrackOpens: true
  • TrackLinks: "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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。