Official Postmark MCP server for sending emails via Claude and AI assistants
npm install @activecampaign/postmark-mcpSend emails with Postmark using Claude and other MCP-compatible AI assistants.
Follow us on X - @postmarkapp
---
sh
git clone https://github.com/ActiveCampaign/postmark-mcp
cd postmark-mcp
`Install dependencies:
`sh
npm install
or
yarn
or
bun install
`Configuration (Local Development)
Create your own environment file from the example
`sh
cp .env.example .env
`Edit your
.env to contain your Postmark credentials and settings.Important: This is intended for local development purposes only. Secrets should never be stored in version control and
.env type files should be added to .gitignore.| Variable | Description | Required |
|---------------------------|--------------------------------------------------|------------|
| POSTMARK_SERVER_TOKEN | Your Postmark server API token | Yes |
| DEFAULT_SENDER_EMAIL | Default sender email address | Yes |
| DEFAULT_MESSAGE_STREAM | Postmark message stream (e.g., 'outbound') | Yes |
Run the server:
`sh
npm start
or
yarn start
or
bun start
`Cursor Quick Install
After installing the MCP, update your configuration to set:
-
POSTMARK_SERVER_TOKEN
- DEFAULT_SENDER_EMAIL
- DEFAULT_MESSAGE_STREAM (default: outbound)Claude and Cursor MCP Configuration Example
`json
{
"mcpServers": {
"postmark": {
"command": "node",
"args": ["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": "your-message-stream"
}
}
}
}
`Tools
This section provides a complete reference for the Postmark MCP server tools including example prompts and payloads.$3
- Email Management Tools
- sendEmail
- sendEmailWithTemplate
- Template Management Tools
- listTemplates
- Statistics & Tracking Tools
- getDeliveryStatsEmail Management Tools
$3
Sends a single text email.Example Prompt:
`
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. Please bring your quarterly statistics report (and maybe some snacks).""
`Expected Payload:
`json
{
"to": "recipient@example.com",
"subject": "Meeting Reminder",
"textBody": "Don't forget our team meeting tomorrow at 2 PM. Please bring your quarterly statistics report (and maybe some snacks).",
"htmlBody": "HTML version of the email body", // Optional
"from": "sender@example.com", // Optional, uses DEFAULT_SENDER_EMAIL if not provided
"tag": "meetings" // Optional
}
`Response Format:
`
Email sent successfully!
MessageID: message-id-here
To: recipient@example.com
Subject: Meeting Reminder
`$3
Sends an email using a pre-defined template.Example Prompt:
`
Send an email with Postmark template alias "welcome" to customer@example.com with the following template variables:
{
"name": "John Doe",
"product_name": "MyApp",
"login_url": "https://myapp.com/login"
}
`Expected Payload:
`json
{
"to": "customer@example.com",
"templateId": 12345, // Either templateId or templateAlias must be provided, but not both
"templateAlias": "welcome", // Either templateId or templateAlias must be provided, but not both
"templateModel": {
"name": "John Doe",
"product_name": "MyApp",
"login_url": "https://myapp.com/login"
},
"from": "sender@example.com", // Optional, uses DEFAULT_SENDER_EMAIL if not provided
"tag": "onboarding" // Optional
}
`Response Format:
`
Template email sent successfully!
MessageID: message-id-here
To: recipient@example.com
Template: template-id-or-alias-here
`Template Management Tools
$3
Lists all available templates.
Example Prompt:
`
Show me a list of all the email templates available in our Postmark account.
`Response Format:
`
š Found 2 templates:⢠Basic
- ID: 12345678
- Alias: basic
- Subject: none
⢠Welcome
- ID: 02345679
- Alias: welcome
- Subject: none
`Statistics & Tracking Tools
$3
Retrieves email delivery statistics.
Example Prompt:
`
Show me our Postmark email delivery statistics from 2025-05-01 to 2025-05-15 for the "marketing" tag.
`Expected Payload:
`json
{
"tag": "marketing", // Optional
"fromDate": "2025-05-01", // Optional, YYYY-MM-DD format
"toDate": "2025-05-15" // Optional, YYYY-MM-DD format
}
`Response Format:
`
Email Statistics SummarySent: 100 emails
Open Rate: 45.5% (45/99 tracked emails)
Click Rate: 15.2% (15/99 tracked links)
Period: 2025-05-01 to 2025-05-15
Tag: marketing
`Implementation Details
$3
All emails are automatically configured with:
- TrackOpens: true
- TrackLinks: "HtmlAndText"
- Message stream from DEFAULT_MESSAGE_STREAM environment variable$3
The server implements comprehensive error handling:
- Validation of all required environment variables
- Graceful shutdown on SIGTERM and SIGINT
- Proper error handling for API calls
- No exposure of sensitive information in logs
- Consistent error message formatting$3
- Uses appropriate log levels (info for normal operations, error` for errors)---
For more information about the Postmark API, visit Postmark's Developer Documentation.