Postmark

listing.by

Send transactional email, manage templates and check bounces, delivery stats and webhooks in your Postmark account.

state.local.long (state.local.title)listing.badge.runs_withstate.key.long

listing.install

listing.local.explain

npx -y @activecampaign/postmark-mcp

listing.local.needs listing.local.note

  • POSTMARK_SERVER_TOKEN listing.env.secret Postmark server API token.
  • DEFAULT_SENDER_EMAIL Verified sender address.
  • DEFAULT_MESSAGE_STREAM Message stream ID, e.g. outbound.

listing.share.h

listing.share.p_local

mcp.tc/i/postmark

listing.about

Connects an AI assistant to a Postmark account. It has 24 tools for sending single and batch email, managing templates, searching sent messages, diagnosing delivery, handling bounces and suppressions, reading delivery stats and managing webhooks. Tools carry read-only and destructive hints so clients can confirm risky actions.

Runs locally over stdio with Node.js 20 or higher, started with npx -y @activecampaign/postmark-mcp. It needs a Postmark server token and a verified sender address set as environment variables. Use only the scoped @activecampaign package, not the unscoped postmark-mcp package on npm.

listing.can

  • Send single or batch emails, with or without templates
  • Create, edit, validate and delete email templates
  • Search outbound messages and view message details
  • Diagnose delivery problems for a recipient
  • Search bounces, fetch bounce dumps and reactivate bounces
  • List, create and delete suppressions
  • Read delivery stats and server info
  • List, create and delete webhooks

listing.tools

listing.notools.key

listing.prompts

  • Send a welcome email to jane@example.com using my welcome template.

  • Show delivery stats for the last 7 days.

  • Why did my email to bob@example.com not arrive?

  • List recent bounces and reactivate the one for sam@example.com.

listing.setup.h

listing.setup.local

Claude Code

  1. Run this in a terminal, in your project folder:
claude mcp add --transport stdio postmark --env "POSTMARK_SERVER_TOKEN=<YOUR_POSTMARK_SERVER_TOKEN>" --env "DEFAULT_SENDER_EMAIL=<YOUR_DEFAULT_SENDER_EMAIL>" --env "DEFAULT_MESSAGE_STREAM=<YOUR_DEFAULT_MESSAGE_STREAM>" -- npx -y @activecampaign/postmark-mcp
  1. Start Claude Code and type /mcp. postmark should show as connected.

Add --scope user to make it available in every project. Replace the placeholders with your own values.

Claude Desktop

  1. Open Settings → Developer → Edit Config. It opens claude_desktop_config.json. Add:
claude_desktop_config.json
{
  "mcpServers": {
    "postmark": {
      "command": "npx",
      "args": [
        "-y",
        "@activecampaign/postmark-mcp"
      ],
      "env": {
        "POSTMARK_SERVER_TOKEN": "<YOUR_POSTMARK_SERVER_TOKEN>",
        "DEFAULT_SENDER_EMAIL": "<YOUR_DEFAULT_SENDER_EMAIL>",
        "DEFAULT_MESSAGE_STREAM": "<YOUR_DEFAULT_MESSAGE_STREAM>"
      }
    }
  }
}
  1. Save the file and restart Claude Desktop. Replace the placeholders with your own values.

Needs Node.js on your computer. The file lives in ~/Library/Application Support/Claude/ on macOS and %APPDATA%\Claude\ on Windows.

Cursor

Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):

mcp.json
{
  "mcpServers": {
    "postmark": {
      "command": "npx",
      "args": [
        "-y",
        "@activecampaign/postmark-mcp"
      ],
      "env": {
        "POSTMARK_SERVER_TOKEN": "<YOUR_POSTMARK_SERVER_TOKEN>",
        "DEFAULT_SENDER_EMAIL": "<YOUR_DEFAULT_SENDER_EMAIL>",
        "DEFAULT_MESSAGE_STREAM": "<YOUR_DEFAULT_MESSAGE_STREAM>"
      }
    }
  }
}

Needs Node.js on your computer. Replace the placeholders with your own values.

VS Code

Add it to .vscode/mcp.json. VS Code asks for the secret the first time and stores it securely:

.vscode/mcp.json
{
  "servers": {
    "postmark": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@activecampaign/postmark-mcp"
      ],
      "env": {
        "POSTMARK_SERVER_TOKEN": "${input:postmark-server-token}",
        "DEFAULT_SENDER_EMAIL": "<YOUR_DEFAULT_SENDER_EMAIL>",
        "DEFAULT_MESSAGE_STREAM": "<YOUR_DEFAULT_MESSAGE_STREAM>"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "postmark-server-token",
      "description": "POSTMARK_SERVER_TOKEN",
      "password": true
    }
  ]
}

Needs Node.js on your computer.

Devin Desktop

  1. Add it to ~/.config/devin/mcp_config.json (macOS and Linux) or %APPDATA%\devin\mcp_config.json (Windows):
mcp_config.json
{
  "mcpServers": {
    "postmark": {
      "command": "npx",
      "args": [
        "-y",
        "@activecampaign/postmark-mcp"
      ],
      "env": {
        "POSTMARK_SERVER_TOKEN": "<YOUR_POSTMARK_SERVER_TOKEN>",
        "DEFAULT_SENDER_EMAIL": "<YOUR_DEFAULT_SENDER_EMAIL>",
        "DEFAULT_MESSAGE_STREAM": "<YOUR_DEFAULT_MESSAGE_STREAM>"
      }
    }
  }
}
  1. Refresh the MCP server list in Cascade. Replace the placeholders with your own values.

Devin Desktop is the new name for Windsurf.

Codex

codex mcp add postmark --env "POSTMARK_SERVER_TOKEN=<YOUR_POSTMARK_SERVER_TOKEN>" --env "DEFAULT_SENDER_EMAIL=<YOUR_DEFAULT_SENDER_EMAIL>" --env "DEFAULT_MESSAGE_STREAM=<YOUR_DEFAULT_MESSAGE_STREAM>" -- npx -y @activecampaign/postmark-mcp

Or edit ~/.codex/config.toml directly:

config.toml
[mcp_servers.postmark]
command = "npx"
args = ["-y", "@activecampaign/postmark-mcp"]
env = { POSTMARK_SERVER_TOKEN = "<YOUR_POSTMARK_SERVER_TOKEN>", DEFAULT_SENDER_EMAIL = "<YOUR_DEFAULT_SENDER_EMAIL>", DEFAULT_MESSAGE_STREAM = "<YOUR_DEFAULT_MESSAGE_STREAM>" }

Needs Node.js on your computer. Replace the placeholders with your own values.

Gemini CLI

gemini mcp add -e "POSTMARK_SERVER_TOKEN=<YOUR_POSTMARK_SERVER_TOKEN>" -e "DEFAULT_SENDER_EMAIL=<YOUR_DEFAULT_SENDER_EMAIL>" -e "DEFAULT_MESSAGE_STREAM=<YOUR_DEFAULT_MESSAGE_STREAM>" postmark npx -- -y @activecampaign/postmark-mcp

This adds it to the current project. Add -s user to use it everywhere.

Any client

Most clients that start local servers accept this shape:

{
  "mcpServers": {
    "postmark": {
      "command": "npx",
      "args": [
        "-y",
        "@activecampaign/postmark-mcp"
      ],
      "env": {
        "POSTMARK_SERVER_TOKEN": "<YOUR_POSTMARK_SERVER_TOKEN>",
        "DEFAULT_SENDER_EMAIL": "<YOUR_DEFAULT_SENDER_EMAIL>",
        "DEFAULT_MESSAGE_STREAM": "<YOUR_DEFAULT_MESSAGE_STREAM>"
      }
    }
  }
}

Zed puts servers under context_servers in its settings, with the same command, args and env fields.

Needs Node.js on your computer. Replace the placeholders with your own values.

listing.faq

Can I paste mcp.tc/i/postmark into my MCP client?

No. Postmark runs on your own computer, started by your client, so it has no web address to connect to. The quick link is the page to share; the install command is npx -y @activecampaign/postmark-mcp.

Does Postmark need an API key?

Yes. It reads POSTMARK_SERVER_TOKEN, DEFAULT_SENDER_EMAIL and DEFAULT_MESSAGE_STREAM from its environment, and POSTMARK_SERVER_TOKEN is a secret. Put the value in your client's config on your own machine, never in a shared file.

Is Postmark a remote or a local server?

Local. Your client starts it as a process on your computer with npx -y @activecampaign/postmark-mcp, which needs Node.js.

What can Postmark do?

You can send single or batch emails, with or without templates, create, edit, validate and delete email templates and search outbound messages and view message details.

Which clients can use it?

Any client that starts local servers: Claude Code, Claude Desktop, Cursor, VS Code, Devin Desktop, Codex, Gemini CLI, Zed and others. claude.ai and ChatGPT only connect to remote servers.

Who wrote this page?

mcp.tc's robot read Postmark's public metadata (its package and repository pages), and an AI model drafted the text from it. A person reviews anything the checks can't confirm. The text can still be wrong, so if you spot a mistake, use Report this listing on this page.

listing.em.h

listing.em.lead_local listing.em.how

listing.em.badge

em.prev_lightem.prev_dark
Markdown
[![Postmark on mcp.tc](https://mcp.tc/i/postmark/badge.svg)](https://mcp.tc/i/postmark)
HTML
<a href="https://mcp.tc/i/postmark"><img src="https://mcp.tc/i/postmark/badge.svg" alt="Postmark on mcp.tc" height="20"></a>

listing.em.badge_note

listing.em.widget

HTML
<script src="https://mcp.tc/w/postmark.js" async></script>

listing.em.widget_note

iframe

HTML
<iframe src="https://mcp.tc/embed/postmark" title="Postmark on mcp.tc" width="420" height="200" loading="lazy" allow="clipboard-write" style="border:0;border-radius:8px;max-width:100%"></iframe>

listing.em.iframe_note

JSON

listing.em.json_local

https://mcp.tc/i/postmark.json

listing.em.fields

listing.disclaimer_checked