# @activecampaign/postmark-mcp 中文文档

规范地址：https://npmcn.com/package/%40activecampaign/postmark-mcp/

版本：2\.1\.1
npm 元数据更新时间：2026-07-14T21:06:38.771Z
中文译文更新时间：2026-11-06T03:12:35.227Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40activecampaign/postmark-mcp
原文对照：https://npmcn.com/package/%40activecampaign/postmark-mcp/?lang=original
项目主页：https://github.com/activecampaign/postmark-mcp#readme
源码仓库：https://github.com/activecampaign/postmark-mcp

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：137 kB，8 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=20\.0\.0
- 运行依赖：3 个
- 首次发布：2025-11-26T21:11:21.162Z
- 最新版本发布：2026-07-13T20:48:11.358Z
- 近 30 天下载量：5880（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 2 个）

## 中文简介

通过 Claude 和 AI 助手发送邮件的官方 Postmark MCP 服务器

## 安装

```sh
npm install @activecampaign/postmark-mcp
```

也可以使用：`pnpm add @activecampaign/postmark-mcp`、`yarn add @activecampaign/postmark-mcp`、`bun add @activecampaign/postmark-mcp`

## README

# 官方邮戳 MCP 服务器   [![NPM Version](https://img.shields.io/npm/v/@activecampaign/postmark-mcp.svg)](https://www.npmjs.com/package/@activecampaign/postmark-mcp)  ![MIT licensed](https://img.shields.io/npm/l/%40activecampaign%2Fpostmark-mcp)

使用 Claude 和其他 MCP 兼容的 AI 助手使用 Postmark 发送邮件 .

## 特征

-   显示由您支持的上下文协议( MCP) 模型服务器 [邮戳账户](https://account.postmarkapp.com/sign_up)
-   24个工具涵盖电子邮件发送(单一+批次)、模板(CRUD+验证)、消息搜索、发送诊断、弹出、压制、统计、服务器信息以及网络呼声
-   MCP 工具说明`readOnlyHint`, (中文(简体) ), `destructiveHint`() 支持客户自动接受安全读取,并在突变或破坏性操作前需要确认
-   通过环境变量简单配置
-   全面处理错误和优雅的关闭
-   结构化的 JSON 记录为可选日志文件持久性的 stderr ; 电子邮件地址默认被部分遮盖
-   HTTPS 强制执行和可选域名允许列表用于 webhook 注册
-   每次发送时自动打开/ 点击跟踪

## 有用的文档

-   [API 文档](https://postmarkapp.com/developer)
-   [API 浏览器](https://postmarkapp.com/api-explorer)
-   [\* 工程文章](https://postmarkapp.com/blog/topics/engineering)
-   [QQ 更改日志](https://npmcn.com/package/%40activecampaign/postmark-mcp/CHANGELOG.md) - 每一个版本有什么新内容

## 反馈

我们很想听到你的消息! 请利用我们 [反馈表单](https://forms.gle/zVdZLAJPM81Vo2Wh8)。 。 。 .

跟着我们X - [@ postmarkapp( 邮戳)](https://x.com/postmarkapp)

* * *

# 设置

## 所需资源

-   节点.js v20 或以上
-   A 类 [邮戳账户](https://account.postmarkapp.com/sign_up) 和服务器令牌

## 安装(当地开发)

**清除仓库 :**

```sh
git clone https://github.com/ActiveCampaign/postmark-mcp
cd postmark-mcp
```

**安装依赖性 :**

```sh
npm install
# or
yarn
# or
bun install
```

## 配置(当地开发)

从示例创建自己的环境文件

```sh
cp .env.example .env
```

编辑您的 `.env` 包含您的邮戳证书和设置.

**重要内容:** 这只是为了当地的发展目的。 机密永远不应存储在版本控制中 `.env` 类型文件应添加到 `.gitignore`。 。 。 .

### 需求

| 变量 | 说明 |
| --- | --- |
| `POSTMARK_SERVER_TOKEN` | 您的 Postmark 服务器 API 令牌 |
| `DEFAULT_SENDER_EMAIL` | 默认发送者电子邮件地址( 必须是 Postmark 中经过验证的发送者) |
| `DEFAULT_MESSAGE_STREAM` | 邮戳消息流( 例如 ), `outbound`(中文(简体) ) |

### 可选

| 变量 | 默认 | 说明 |
| --- | --- | --- |
| `AGENT_LABEL` | —— 说 | 此实例的标签( 例如 ), `prod`, (中文(简体) ), `staging`) (中文(简体) ). 发送为 `X-Agent-Label` 用于在日志或支持票中识别交通来源. |
| `WEBHOOK_URL_ALLOWLIST` | —— 说 | 以逗号分隔的 HTTPS URL 前缀列表 `createWebhook` 将接受(例如, `https://hooks.yourapp.com,https://inbound.corp.io`) (中文(简体) ). 未设定时, 任何有效的 HTTPS URL 都会被接受 . |
| `LOG_FILE` | —— 说 | 用于除 stderr 外附加结构化 JSON 日志的文件的路径 。 文件如果不存在则创建 。 不应用旋转或大小上限——使用外部工具,例如 `logrotate` 在长期部署中管理文件. |
| `LOG_EMAIL_FULL` | `false` | 设定为 `true` 在不蒙面的情况下登录电子邮件地址。 默认情况下,邮箱部分在日志中被遮住(`u**r@example.com`) (中文(简体) ). |

**运行服务器 :**

```sh
npm start
# or
yarn start
# or
bun start
```

**吸烟试验(要求有效) `.env`:**

Repo飞船2个烟雾测试实例文件. 运行前将每个复制到其非实例名称(被被 gitignored),所以你的本地编辑——包括任何经过核实的发件人地址——永远不会被承诺.

```sh
# 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`。不发送邮件或变异状态.

变异套件会运行完整的 Creative-edit-delete 生命周期用于模板(包括布局绑定),webhooks,以及压制,并在您配置的两个地址之间发送真实的电子邮件. 后能自清净. 当占位符值仍然存在时,脚本拒绝运行.

## 光标快速安装

![Add Postmark MCP Server to Cursor](https://img.shields.io/badge/Add_Postmark_MCP_Server-to_Cursor-00A4DB?style=for-the-badge&logo=cursor&logoColor=white)

  

在安装 MCP 后, 更新您的配置以设置 :

-   `POSTMARK_SERVER_TOKEN`
-   `DEFAULT_SENDER_EMAIL`
-   `DEFAULT_MESSAGE_STREAM` (默认 : `outbound`(中文(简体) )

## MCP 客户端配置

### 使用 npx( 建议—— 不需要克隆)

不管理本地副本而直接从 npm 安装 :

```json
{
  "mcpServers": {
    "postmark": {
      "command": "npx",
      "args": ["-y", "@activecampaign/postmark-mcp"],
      "env": {
        "POSTMARK_SERVER_TOKEN": "your-postmark-server-token",
        "DEFAULT_SENDER_EMAIL": "your-sender-email@example.com",
        "DEFAULT_MESSAGE_STREAM": "outbound"
      }
    }
  }
}
```

### 使用本地克隆

```json
{
  "mcpServers": {
    "postmark": {
      "command": "node",
      "args": ["/absolute/path/to/postmark-mcp/index.js"],
      "env": {
        "POSTMARK_SERVER_TOKEN": "your-postmark-server-token",
        "DEFAULT_SENDER_EMAIL": "your-sender-email@example.com",
        "DEFAULT_MESSAGE_STREAM": "outbound"
      }
    }
  }
}
```

两个片段一起工作 **克劳德桌面** (单位:千美元)`~/Library/Application Support/Claude/claude_desktop_config.json`, (中文(简体) ), **光标** (单位:千美元)`.cursor/mcp.json`),以及接受标准JSON配置格式的任何其他MCP客户端.

## 工具

本节为Postmark MCP服务器工具提供了完整的参考,包括示例提示和有效载荷. 服务器注册 **24个工具** 分为八类.

### 目录

-   [电子邮件](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-email)
    -   [发送电子邮件](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-sendemail)
    -   [用模板发送电子邮件](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-sendemailwithtemplate)
    -   [发送批次](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-sendbatch)
    -   [用模板发送批次](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-sendbatchwithtemplate)
-   [模板](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-templates)
    -   [列表模板](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-listtemplates)
    -   [获取模板](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-gettemplate)
    -   [创建模板](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-createtemplate)
    -   [编辑模板](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-edittemplate)
    -   [删除模板](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-deletetemplate)
    -   [校验模板](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-validatetemplate)
-   [信件](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-messages)
    -   [向外搜索消息](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-searchoutboundmessages)
    -   [获取Message 细节](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-getmessagedetails)
-   [诊断](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-diagnostics)
    -   [诊断交付](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-diagnosedelivery)
-   [弹跳](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-bounces)
    -   [搜索弹出](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-searchbounces)
    -   [跳跃](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-getbouncedump)
    -   [激活弹出](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-activatebounce)
-   [抑制](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-suppressions)
    -   [禁止列表](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-listsuppressions)
    -   [创建抑制](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-createsuppressions)
    -   [删除禁止](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-deletesuppressions)
-   [Stats 服务器( S)](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-stats--server)
    -   [获取交付数据](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-getdeliverystats)
    -   [获取服务器信息](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-getserverinfo)
-   [网络呼号](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-webhooks)
    -   [列表Webhooks](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-listwebhooks)
    -   [创建Webhook](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-createwebhook)
    -   [删除网易](https://npmcn.com/package/%40activecampaign/postmark-mcp/#readme-deletewebhook)

* * *

## 电子邮件

### 发送电子邮件

向一个收件人或最多50个收件人发送交易邮件.

**示例提示 :**

```
Send an email using Postmark to recipient@example.com with the subject "Meeting Reminder" and the message "Don't forget our team meeting tomorrow at 2 PM."
```

**预期有效载荷 :**

```json
{
  "to": "recipient@example.com",
  "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": "sender@example.com",
  "cc": "manager@example.com",
  "bcc": "archive@example.com",
  "replyTo": "support@example.com",
  "tag": "meetings"
}
```

`to` 接受单一地址或最多50个地址的数组. `htmlBody`, (中文(简体) ), `from`, (中文(简体) ), `cc`, (中文(简体) ), `bcc`, (中文(简体) ), `replyTo`,以及 `tag` 是可选的。 若为 `from` 删去, `DEFAULT_SENDER_EMAIL` 已使用.

**回应:**

```
Email sent successfully!
MessageID: 0a1b2c3d-...
To: recipient@example.com
Subject: Meeting Reminder
```

### 用模板发送电子邮件

使用 Postmark 模板发送电子邮件 .

**示例提示 :**

```
Send the "welcome" template to customer@example.com with name "John Doe" and login_url "https://myapp.com/login".
```

**预期有效载荷 :**

```json
{
  "to": "customer@example.com",
  "templateAlias": "welcome",
  "templateModel": {
    "name": "John Doe",
    "login_url": "https://myapp.com/login"
  },
  "from": "sender@example.com",
  "tag": "onboarding"
}
```

提供 **无论是** `templateId` (数目) **或者说** `templateAlias` (弦),不是两者.

**回应:**

```
Template email sent successfully!
MessageID: 0a1b2c3d-...
To: customer@example.com
Template: welcome
```

### 发送批次

在一个API电话中发送多达500个电子邮件. 每条信息都是完全独立的——它自己的接收者,主题,以及机构. 这包扎了邮戳 _同步_ 批量终点( e)`POST /email/batch`),它返回直接的每个消息结果.

> **说明:** 邮戳还提供了同步 [批量电子邮件 API](https://postmarkapp.com/developer/api/bulk-email) (单位:千美元)`POST /email/bulk`用于没有信息计数上限和50 MB有效载荷限制的大容量工作。 该端点使用提交-并发工作流程,目前没有被这个MCP服务器所包裹.

**预期有效载荷 :**

```json
{
  "messages": [
    {
      "to": "alice@example.com",
      "subject": "Order #1234 confirmed",
      "textBody": "Thanks Alice — your order is on its way.",
      "tag": "order-confirmation"
    },
    {
      "to": "bob@example.com",
      "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:
  - alice@example.com — abc-123-def
  - bob@example.com — abc-456-ghi
```

当一些消息在提交时失败(例如,被被压制的收件人),则首先将失败与他们的 `ErrorCode` 和理由:

```
Sent 8/10 successfully (2 failed)

Failures:
  - blocked@example.com — 406: Address has been suppressed.
  - bad@example.com — 300: Inactive recipient
...
```

### 用模板发送批次

发送多达500个模板邮件——同模板,每个接收者模板模型. 理想的“ 向每个新用户提供这个登入模板 ” 流量 .

**预期有效载荷 :**

```json
{
  "templateAlias": "welcome",
  "from": "hello@yourapp.com",
  "tag": "onboarding",
  "recipients": [
    { "to": "alice@example.com", "templateModel": { "name": "Alice", "plan": "Pro" } },
    { "to": "bob@example.com", "templateModel": { "name": "Bob", "plan": "Free" } }
  ]
}
```

提供 **无论是** `templateId` (数目) **或者说** `templateAlias` (弦声). 顶级 `from` 财务报告和审定财务报表 `tag` 适用于所有受援者,但每个受援者可以被推翻。 每个收件人也接受可选 `cc`, (中文(简体) ), `bcc`,以及 `replyTo`。 。 。 .

**回应:** 格式与 `sendBatch`。 。 。 .

* * *

## 模板

### 列表模板

此服务器上保存的模板列表 。 返回前100个模板;如果服务器超过100个,则尚未支持pagination,响应会显示结果被截断.

**回应:**

```
Found 2 templates:

• **Welcome**
  - ID: 12345678
  - Alias: welcome
  - Subject: Welcome to {{product_name}}
```

### 获取模板

检索单一模板的全部内容(HTML正文,正文正文,主题,类型).

**有效载荷 :** `{ "templateIdOrAlias": "welcome" }` ——接受数字ID或字符串别名.

### 创建模板

创建新模板。 要求数 `name`。其中至少有一个 `htmlBody` 或者说 `textBody` 必须提供.

`subject` 用于标准模板,必须 **删除** 对于布局模板——邮戳在布局上拒绝字段.

`layoutTemplate` (仅标准)用别名将新模板与已存在的布局绑定. 没有它,新的模板就使得没有被包装(没有任何布局的铬).

**预期有效载荷 :**

```json
{
  "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"`。 。 。 .

### 编辑模板

更新已有模板。 要求数 `templateIdOrAlias` 加号 **至少一个** 更新字段( e)`name`, (中文(简体) ), `subject`, (中文(简体) ), `htmlBody`, (中文(简体) ), `textBody`, (中文(简体) ), `alias`,或 `layoutTemplate`) (中文(简体) ).

过 `"layoutTemplate": null` 将模板从当前布局中解开(MCP将其翻译为清除关联所需的Postmark API空字符串).

### 删除模板

永久通过ID或别名删除模板. 版式模板无法被删除, 而标准模板仍然被绑定在它们上 — 未通过 `editTemplate` 先说.

**有效载荷 :** `{ "templateIdOrAlias": "order-confirmation" }`

### 校验模板

验证模板内容(Mustachio语法,未定义变量)而不保存. 至少其中一个 `subject`, (中文(简体) ), `htmlBody`,或 `textBody` 需要时间.

**预期有效载荷 :**

```json
{
  "subject": "Order #{{order_id}}",
  "htmlBody": "<p>Thanks {{name}}</p>",
  "textBody": "Thanks {{name}}",
  "testRenderModel": { "order_id": 42, "name": "John" },
  "templateType": "Standard"
}
```

* * *

## 信件

### 向外搜索消息

搜索输出的消息历史 .

**预期有效载荷( 所有过滤器可选) :**

```json
{
  "recipient": "user@example.com",
  "fromEmail": "sender@example.com",
  "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).

### 获取Message 细节

获取单个出局消息的全部细节和事件时间表.

**有效载荷 :** `{ "messageId": "0a1b2c3d-..." }`

* * *

## 诊断

### 诊断交付

复合分型工具. 回答"我的电子邮件是否到达了X,如果没有,为什么?",通过运行消息搜索,压制检查,并同时反弹历史检索到一个收件人地址,然后合成一个平通英语的推荐.

这是一个 **诊断** 工具:它将多个 Postmark API 调用成一个单一的连贯的答案,而不是镜像一个单一的终点.

**示例提示 :**

```
Did my email to recipient@example.com get delivered? If not, what should I do?
```

**预期有效载荷 :**

```json
{
  "recipient": "recipient@example.com",
  "messageId": "0a1b2c3d-...",
  "fromDate": "2026-04-21",
  "toDate": "2026-04-28",
  "messageStream": "outbound"
}
```

除了所有字段 `recipient` 是可选的。 若为 `messageId` ,则使用给收件人的最新消息。 默认搜索窗口为最后7天 .

**样本响应 :**

```
Delivery Diagnosis: recipient@example.com
────────────────────────────────────────────────

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`。 。 。 .

* * *

## 弹跳

### 搜索弹出

按类型,收件人,标签,消息ID,消息流,日期范围,以及活动/不活动状态,以可选过滤器来搜索弹出日志.

**预期有效载荷( 所有可选):**

```json
{
  "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` 值( 匹配邮戳的) `BounceType` enum -- -- 22个值: `AddressChange`, (中文(简体) ), `AutoResponder`, (中文(简体) ), `BadEmailAddress`, (中文(简体) ), `Blocked`, (中文(简体) ), `ChallengeVerification`, (中文(简体) ), `DMARCPolicy`, (中文(简体) ), `DnsError`, (中文(简体) ), `HardBounce`, (中文(简体) ), `InboundError`, (中文(简体) ), `ManuallyDeactivated`, (中文(简体) ), `OpenRelayTest`, (中文(简体) ), `SMTPApiError`, (中文(简体) ), `SoftBounce`, (中文(简体) ), `SpamComplaint`, (中文(简体) ), `SpamNotification`, (中文(简体) ), `Subscribe`, (中文(简体) ), `TemplateRenderingFailed`, (中文(简体) ), `Transient`, (中文(简体) ), `Unconfirmed`, (中文(简体) ), `Unknown`, (中文(简体) ), `Unsubscribe`, (中文(简体) ), `VirusNotification`。 。 。 .

### 跳跃

返回原始的 SMTP 垃圾堆进行回放 。 弹出垃圾场保留了30天.

**有效载荷 :** `{ "bounceId": 123456 }`

### 激活弹出

重新激活已关闭的电子邮件地址( 只弹出于 `CanActivate: true`) (中文(简体) ).

**有效载荷 :** `{ "bounceId": 123456 }`

* * *

## 抑制

### 禁止列表

列出消息流的压制 .

**预期有效载荷( 所有可选):**

```json
{
  "messageStream": "outbound",
  "suppressionReason": "HardBounce",
  "origin": "Recipient",
  "emailAddress": "user@example.com",
  "fromDate": "2025-05-01",
  "toDate": "2025-05-15"
}
```

`suppressionReason` ∈ `HardBounce`, (中文(简体) ), `SpamComplaint`, (中文(简体) ), `ManualSuppression`。 。 。 . `origin` ∈ `Recipient`, (中文(简体) ), `Customer`, (中文(简体) ), `Admin`如果 `messageStream` 删去, `DEFAULT_MESSAGE_STREAM` 已使用.

### 创建抑制

在消息流上压制多达50个电子邮件地址.

**有效载荷 :** `{ "emailAddresses": ["a@example.com", "b@example.com"], "messageStream": "outbound" }`

### 删除禁止

从压制名单上删除多达50个地址。 说明: `SpamComplaint` 压制不能被删除 .

**有效载荷 :** `{ "emailAddresses": ["a@example.com"], "messageStream": "outbound" }`

* * *

## Stats 服务器( S)

### 获取交付数据

统一统计工具。 默认行为返回友好标题摘要; 通过可选 `stat` 重点分解.

**预期有效载荷( 所有可选):**

```json
{
  "stat": "summary",
  "tag": "marketing",
  "fromDate": "2025-05-01",
  "toDate": "2025-05-15",
  "messageStream": "outbound"
}
```

支助 `stat` 值 :

| `stat` | 它的回报 |
| --- | --- |
| `summary` _(默认)_ | 标题打开/ 点击/ 弹出/ 垃圾邮件率 |
| `overview` | 所有概览计数(发送、跟踪、打开、点击、回弹、.) |
| `sent` | 发送数 |
| `bounces` | 按类型分列 |
| `spam` | 垃圾邮件投诉数 |
| `tracked` | 已跟踪电子邮件数 |
| `opens` | 共计 + 唯一打开 |
| `openPlatforms` | 开放平台分解( Desktop / Mobile / WebMail / 未知) |
| `openClients` | 前10名电子邮件客户端(Apple Mail, Gmail,...) |
| `openReadTimes` | 读取时间直方图 |
| `clicks` | 共计 + 唯一链接点击 |
| `clickBrowsers` | 点击前十名浏览器 |
| `clickPlatforms` | 点击平台分解( Desktop / Mobile / 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%)
```

### 获取服务器信息

返回 Postmark 服务器的名称、 颜色、 跟踪设置和 Webhook URL .

**有效载荷 :** `{}`

* * *

## 网络呼号

### 列表Webhooks

列表已配置了 Webhoks 。 可选 `messageStream` 过滤器.

### 创建Webhook

创建 Webhook 订阅。 需要一个 `url` 财务报告和审定财务报表 **至少一个** 触发.

**安全说明:** Webhooks是持久性的——一旦注册,Postmark将会POST事件数据(打开,点击,回弹,垃圾邮件投诉等)到目标URL,用于该服务器上所有未来的匹配事件,直到被删除. 只注册指向您控制的 URL 的 Webhooks 。 使用 `WEBHOOK_URL_ALLOWLIST` 将接受的URL限制在已知的前缀.

这个 `url` 必须使用 **HTTPS (韩语)**HTTP URL 被拒绝。 若为 `WEBHOOK_URL_ALLOWLIST` 设置后,URL也必须匹配所配置的前缀之一.

**预期有效载荷 :**

```json
{
  "url": "https://hooks.yourapp.com/postmark",
  "messageStream": "outbound",
  "openEnabled": true,
  "clickEnabled": true,
  "deliveryEnabled": false,
  "bounceEnabled": true,
  "spamComplaintEnabled": true,
  "subscriptionChangeEnabled": false
}
```

### 删除网易

以 ID 方式删除一个 webhook.

**有效载荷 :** `{ "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 客户端( 没有邮戳 npm 包) , 因此 MCP 流量可识别为 `postmark-mcp` 在邮戳日志和辅助票中.

### 自动配置

所有邮件自动配置为:

-   `TrackOpens: true`
-   `TrackLinks: "HtmlAndText"`
-   信件流来自 `DEFAULT_MESSAGE_STREAM` 环境变量

### 处理错误

服务器执行全面的错误处理 :

-   验证所有必要的环境变量
-   光荣地关闭了SIGTERM和SIGINT
-   API 调用的适当错误处理
-   日志中没有暴露敏感信息
-   一致错误消息格式化

### 日志

每个工具引用都会发出结构化的JSON行到 **标准**如果 `LOG_FILE` 设置,同一行也附在该文件后.

**日志条目形状 :**

```json
{
  "timestamp": "2026-06-16T20:34:01.123Z",
  "tool": "sendEmail",
  "clientName": "claude-desktop",
  "clientVersion": "1.0",
  "args": {
    "to": "u**r@example.com",
    "subject": "Meeting Reminder",
    "textBody": "[312ch]"
  },
  "status": "ok",
  "durationMs": 243
}
```

错误时, `status` 实值 `"error"` 还有一个 `error` 字段包含消息.

**是什么没有记录:**

| 数据 | 登录为 |
| --- | --- |
| 电子邮件地址 | 部分遮盖: `u**r@example.com` (一组) `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连通)继续以纯文本与JSON工具日志一起被写入 stderr.

* * *

## 安全考虑

### 访问范围

此 MCP 服务器在配置的全部权限下行事 `POSTMARK_SERVER_TOKEN`它向任何连接的MCP客户端披露了24个工具——包括散装电子邮件发送、模板管理、网页浏览登记和压制列表编辑.

邮戳有 [两种符号类型](https://postmarkapp.com/developer/api/overview#authentication)(单位:千美元) **服务器托肯** (在这里使用)和 **账户托肯**。既不支持子扫描权限——一个服务器Token允许完全访问它所属服务器上的所有操作。 限制接触的实际方法是结构性的:

-   创建一个 **专用邮戳服务器** 专用于MCP流量. 妥协仅限于服务器的数据和设置 而不是整个账户.
-   配置仅包含消息流的服务器,并验证它实际需要的发送者签名.
-   如果它被曝光, 则旋转它 .

### 工具爆炸半径

这24个工具包括若干高影响行动。 下文按风险水平分列:

| 类别 | 工具 |
| --- | --- |
| **破坏性** (不可逆转) | `editTemplate`, (中文(简体) ), `deleteTemplate`, (中文(简体) ), `deleteWebhook`, (中文(简体) ), `deleteSuppressions` |
| **发送** (外部电子邮件) | `sendEmail`, (中文(简体) ), `sendEmailWithTemplate`, (中文(简体) ), `sendBatch`, (中文(简体) ), `sendBatchWithTemplate` |
| **添加** (账户状态变化) | `createTemplate`, (中文(简体) ), `createSuppressions`, (中文(简体) ), `createWebhook`, (中文(简体) ), `activateBounce` |
| **只读** | 其余12个工具 |

所有工具都带有MCP说明(`readOnlyHint`, (中文(简体) ), `destructiveHint`, (中文(简体) ), `idempotentHint`). 尊重说明的MCP客户端——包括Cursor和Claude桌面——可以自动批准安全只读取的浏览(C`readOnlyHint: true`),并将表面确认提示任何不是读取的事物:发送,模板编辑,压制更改,以及webhook管理. 永久删除额外携带数据的工具 `destructiveHint: true` 对客户来说,这些客户区分破坏性行为和单纯的变异行为.

### Webhook URL 策略

`createWebhook` 在所有 URL 上执行 HTTPS 。 一旦一个 Webhook 注册, Postmark 将会将 POST 事件数据(打开,点击,回弹,垃圾邮件投诉)持续地输入到该 URL,直到webhook被删除. 为了防止一个被损坏或错误引导的工具呼叫 注册一个你无法控制的回调,设置 `WEBHOOK_URL_ALLOWLIST` 到 HTTPS 的前缀。 审计注册的网络用户 `listWebhooks` 或通过 [邮戳仪表板](https://account.postmarkapp.com/)。 。 。 .

为了保护您的网页接收器, 白名单 [邮戳发布发送IP](https://postmarkapp.com/support/article/800-what-are-the-postmark-ip-addresses) 在网络或防火墙级别上,所以只有Postmark可以将 POST 到您的端点.

### 快速注射风险

因为这个MCP服务器可以发送电子邮件和注册webhooks,所以它是一个潜在的目标 [即时注射](https://owasp.org/www-project-top-10-for-large-language-model-applications/) ——当电子邮件、模板或寄存器中的恶意内容使AI用意想不到的论据来援引工具时。 上面的缓解(专用代号,您MCP客户端的工具批准), `WEBHOOK_URL_ALLOWLIST`如果发生这种情况,则降低爆炸半径。 从不配置在不可信环境下发送或破坏性工具的自动批准 .

* * *

_关于Postmark API的更多信息,请访问 [Postmark 的开发者文档](https://postmarkapp.com/developer)。 。 。 ._

## 许可证

[麻省理工学院](https://npmcn.com/package/%40activecampaign/postmark-mcp/LICENSE) 活动模式

## 常见问题

### @activecampaign/postmark-mcp 是什么？

通过 Claude 和 AI 助手发送邮件的官方 Postmark MCP 服务器

### 如何安装 @activecampaign/postmark-mcp？

在项目目录运行 npm install @activecampaign/postmark-mcp，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 postmark-mcp，可以用 npx postmark-mcp 直接运行。

### @activecampaign/postmark-mcp 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/activecampaign\_\_postmark-mcp 是否存在。

### @activecampaign/postmark-mcp 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @activecampaign/postmark-mcp 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @activecampaign/postmark-mcp 可以商用吗？

@activecampaign/postmark-mcp 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @activecampaign/postmark-mcp 的下载量有多少？

根据 npm 官方下载统计，@activecampaign/postmark-mcp 在 2026/10/05 – 2026/11/03 这 30 天内被下载 5,880 次，日均约 196 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @activecampaign/postmark-mcp 还在维护吗？

最新版本 2\.1\.1 发布于 2026/07/14（3 个月前）；至今共发布 2 个版本，其中过去 12 个月发布了 2 个；首次发布于 2025/11/27。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

