Send emails with Postmark using Claude and other MCP-compatible AI assistants.
- Exposes a Model Context Protocol (MCP) server for sending emails via your Postmark account
- Simple configuration via environment variables
- Comprehensive error handling and graceful shutdown
- Secure logging practices (no sensitive data exposure)
- Automatic email tracking configuration
We'd love to hear from you! Please share your feedback and suggestions using our feedback form.
Follow us on X - @postmarkapp
- Node.js (v16 or higher recommended)
- A Postmark account and server token
Clone the repository:
git clone https://github.com/ActiveCampaign/postmark-mcp
cd postmark-mcpInstall dependencies:
npm install
# or
yarn
# or
bun installCreate your own environment file from the example
cp .env.example .envEdit 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:
npm start
# or
yarn start
# or
bun startAfter installing the MCP, update your configuration to set:
POSTMARK_SERVER_TOKENDEFAULT_SENDER_EMAILDEFAULT_MESSAGE_STREAM(default:outbound)
{
"mcpServers": {
"postmark": {
"command": "node",
"args": ["path/to/postmark-mcp/index.js"],
"env": {
"POSTMARK_SERVER_TOKEN": "your-postmark-server-token",
"DEFAULT_SENDER_EMAIL": "[email protected]",
"DEFAULT_MESSAGE_STREAM": "your-message-stream"
}
}
}
}This section provides a complete reference for the Postmark MCP server tools including example prompts and payloads.
Sends a single text email.
Example Prompt:
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. Please bring your quarterly statistics report (and maybe some snacks).""
Expected Payload:
{
"to": "[email protected]",
"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": "[email protected]", // Optional, uses DEFAULT_SENDER_EMAIL if not provided
"tag": "meetings" // Optional
}Response Format:
Email sent successfully!
MessageID: message-id-here
To: [email protected]
Subject: Meeting Reminder
Sends an email using a pre-defined template.
Example Prompt:
Send an email with Postmark template alias "welcome" to [email protected] with the following template variables:
{
"name": "John Doe",
"product_name": "MyApp",
"login_url": "https://myapp.com/login"
}
Expected Payload:
{
"to": "[email protected]",
"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": "[email protected]", // Optional, uses DEFAULT_SENDER_EMAIL if not provided
"tag": "onboarding" // Optional
}Response Format:
Template email sent successfully!
MessageID: message-id-here
To: [email protected]
Template: template-id-or-alias-here
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
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:
{
"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 Summary
Sent: 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
All emails are automatically configured with:
TrackOpens: trueTrackLinks: "HtmlAndText"- Message stream from
DEFAULT_MESSAGE_STREAMenvironment variable
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
- Uses appropriate log levels (
infofor normal operations,errorfor errors) - Excludes sensitive information from logs
- Provides clear operation status and results
For more information about the Postmark API, visit Postmark's Developer Documentation.
MIT Β© ActiveCampaign