{"id":29563337,"url":"https://github.com/activecampaign/postmark-mcp","last_synced_at":"2025-09-06T06:48:49.519Z","repository":{"id":298187419,"uuid":"997053178","full_name":"ActiveCampaign/postmark-mcp","owner":"ActiveCampaign","description":"Experimental MCP server for Postmark, built by Postmark Labs. Designed for tinkering, testing, and teleporting transactional email into inboxes with speed and style.","archived":false,"fork":false,"pushed_at":"2025-06-27T18:35:23.000Z","size":46,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-27T19:40:20.733Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ActiveCampaign.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-05T22:02:24.000Z","updated_at":"2025-06-27T18:35:27.000Z","dependencies_parsed_at":"2025-06-27T19:30:44.384Z","dependency_job_id":"699bc457-0548-4ed5-ac59-d1eb2746990b","html_url":"https://github.com/ActiveCampaign/postmark-mcp","commit_stats":null,"previous_names":["activecampaign/postmark-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ActiveCampaign/postmark-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ActiveCampaign%2Fpostmark-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ActiveCampaign%2Fpostmark-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ActiveCampaign%2Fpostmark-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ActiveCampaign%2Fpostmark-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ActiveCampaign","download_url":"https://codeload.github.com/ActiveCampaign/postmark-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ActiveCampaign%2Fpostmark-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273868143,"owners_count":25182423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-18T18:01:56.340Z","updated_at":"2025-09-06T06:48:49.511Z","avatar_url":"https://github.com/ActiveCampaign.png","language":"JavaScript","funding_links":[],"categories":["Communication"],"sub_categories":["How to Submit"],"readme":"# Postmark MCP Server\n\nAn MCP server implementation for Postmark email services.\n\n## Features\n- Exposes a Model Context Protocol (MCP) server for sending emails via Postmark\n- Simple configuration via environment variables\n- Comprehensive error handling and graceful shutdown\n- Secure logging practices (no sensitive data exposure)\n- Automatic email tracking configuration\n\n## Feedback\nWe'd love to hear from you! Please share your feedback and suggestions through our [feedback form](https://forms.gle/zVdZLAJPM81Vo2Wh8).\n\n## Requirements\n- Node.js (v16 or higher recommended)\n- A Postmark account and server token\n\n## Setup\n\n1. **Clone the repository:**\n   ```sh\n   git clone https://github.com/ActiveCampaign/postmark-mcp\n   cd postmark-mcp\n   ```\n\n2. **Install dependencies:**\n   ```sh\n   npm install\n   ```\n\n3. **Configure environment variables:**\n   - Copy `.env.example` to `.env`:\n     ```sh\n     cp .env.example .env\n     ```\n   - Edit `.env` and fill in your Postmark credentials and settings.\n\n   | Variable                | Description                                      | Required |\n   |------------------------|--------------------------------------------------|----------|\n   | POSTMARK_SERVER_TOKEN  | Your Postmark server API token                   | Yes      |\n   | DEFAULT_SENDER_EMAIL   | Default sender email address                     | Yes      |\n   | DEFAULT_MESSAGE_STREAM | Postmark message stream (e.g., 'outbound')      | Yes      |\n\n4. **Run the server:**\n   ```sh\n   npm start\n   ```\n\n## Quick Install via Cursor Deeplink\n\nYou can quickly install this MCP server in Cursor by clicking the following button:\n\n\u003cdiv\u003e\n  \u003ca href=\"cursor://anysphere.cursor-deeplink/mcp/install?name=Postmark\u0026config=eyJjb21tYW5kIjoibm9kZSIsImFyZ3MiOlsiaW5kZXguanMiXSwiZW52Ijp7IlBPU1RNQVJLX1NFUlZFUl9UT0tFTiI6IiIsIkRFRkFVTFRfU0VOREVSX0VNQUlMIjoiIiwiREVGQVVMVF9NRVNTQUdFX1NUUkVBTSI6Im91dGJvdW5kIn19\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Add_Postmark_MCP_Server-to_Cursor-00A4DB?style=for-the-badge\u0026logo=cursor\u0026logoColor=white\" alt=\"Add Postmark MCP Server to Cursor\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003e **Note**: After clicking the button, you'll need to:\n\u003e 1. Set your `POSTMARK_SERVER_TOKEN` in the MCP configuration\n\u003e 2. Set your `DEFAULT_SENDER_EMAIL` in the MCP configuration\n\u003e 3. Set your `DEFAULT_MESSAGE_STREAM` in the MCP configuration (defaults to \"outbound\")\n\n## Claude and Cursor MCP Configuration Example\n\n```json\n{\n  \"mcpServers\": {\n    \"postmark\": {\n      \"command\": \"node\",\n      \"args\": [\"path/to/postmark-mcp/index.js\"],\n      \"env\": {\n        \"POSTMARK_SERVER_TOKEN\": \"your-postmark-server-token\",\n        \"DEFAULT_SENDER_EMAIL\": \"your-sender-email@example.com\",\n        \"DEFAULT_MESSAGE_STREAM\": \"your-message-stream\"\n      }\n    }\n  }\n}\n```\n\n## Tool Reference\n\nThis section provides a complete reference for the Postmark MCP server tools, including example prompts and expected payloads for each.\n\n### Table of Contents\n\n- [Email Management Tools](#email-management-tools)\n  - [sendEmail](#1-sendemail)\n  - [sendEmailWithTemplate](#2-sendemailwithtemplate)\n- [Template Management Tools](#template-management-tools)\n  - [listTemplates](#3-listtemplates)\n- [Statistics \u0026 Tracking Tools](#statistics--tracking-tools)\n  - [getDeliveryStats](#4-getdeliverystats)\n\n## Email Management Tools\n\n### 1. sendEmail\n\nSends a single text email.\n\n**Example Prompt:**\n```\nSend 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).\"\"\n```\n\n**Expected Payload:**\n```json\n{\n  \"to\": \"recipient@example.com\",\n  \"subject\": \"Meeting Reminder\",\n  \"textBody\": \"Don't forget our team meeting tomorrow at 2 PM. Please bring your quarterly statistics report (and maybe some snacks).\",\n  \"htmlBody\": \"HTML version of the email body\", // Optional\n  \"from\": \"sender@example.com\", // Optional, uses DEFAULT_SENDER_EMAIL if not provided\n  \"tag\": \"meetings\" // Optional\n}\n```\n\n**Response Format:**\n```\nEmail sent successfully!\nMessageID: message-id-here\nTo: recipient@example.com\nSubject: Meeting Reminder\n```\n\n### 2. sendEmailWithTemplate\n\nSends an email using a pre-defined template.\n\n**Example Prompt:**\n```\nSend an email with Postmark template alias \"welcome\" to customer@example.com with the following template variables:\n{\n  \"name\": \"John Doe\",\n  \"product_name\": \"MyApp\",\n  \"login_url\": \"https://myapp.com/login\"\n}\n```\n\n**Expected Payload:**\n```json\n{\n  \"to\": \"customer@example.com\",\n  \"templateId\": 12345, // Either templateId or templateAlias must be provided, but not both\n  \"templateAlias\": \"welcome\", // Either templateId or templateAlias must be provided, but not both\n  \"templateModel\": {\n    \"name\": \"John Doe\",\n    \"product_name\": \"MyApp\",\n    \"login_url\": \"https://myapp.com/login\"\n  },\n  \"from\": \"sender@example.com\", // Optional, uses DEFAULT_SENDER_EMAIL if not provided\n  \"tag\": \"onboarding\" // Optional\n}\n```\n\n**Response Format:**\n```\nTemplate email sent successfully!\nMessageID: message-id-here\nTo: recipient@example.com\nTemplate: template-id-or-alias-here\n```\n\n## Template Management Tools\n\n### 3. listTemplates\n\nLists all available templates.\n\n**Example Prompt:**\n```\nShow me a list of all the email templates available in our Postmark account.\n```\n\n**Response Format:**\n```\n📋 Found 2 templates:\n\n• Basic\n  - ID: 12345678\n  - Alias: basic\n  - Subject: none\n\n• Welcome\n  - ID: 02345679\n  - Alias: welcome\n  - Subject: none\n```\n\n## Statistics \u0026 Tracking Tools\n\n### 4. getDeliveryStats\n\nRetrieves email delivery statistics.\n\n**Example Prompt:**\n```\nShow me our Postmark email delivery statistics from 2025-05-01 to 2025-05-15 for the \"marketing\" tag.\n```\n\n**Expected Payload:**\n```json\n{\n  \"tag\": \"marketing\", // Optional\n  \"fromDate\": \"2025-05-01\", // Optional, YYYY-MM-DD format\n  \"toDate\": \"2025-05-15\" // Optional, YYYY-MM-DD format\n}\n```\n\n**Response Format:**\n```\nEmail Statistics Summary\n\nSent: 100 emails\nOpen Rate: 45.5% (45/99 tracked emails)\nClick Rate: 15.2% (15/99 tracked links)\n\nPeriod: 2025-05-01 to 2025-05-15\nTag: marketing\n```\n\n## Implementation Details\n\n### Automatic Configuration\nAll emails are automatically configured with:\n- `TrackOpens: true`\n- `TrackLinks: \"HtmlAndText\"`\n- Message stream from `DEFAULT_MESSAGE_STREAM` environment variable\n\n### Error Handling\nThe server implements comprehensive error handling:\n- Validation of all required environment variables\n- Graceful shutdown on SIGTERM and SIGINT\n- Proper error handling for API calls\n- No exposure of sensitive information in logs\n- Consistent error message formatting\n\n### Logging\n- Uses appropriate log levels (`info` for normal operations, `error` for errors)\n- Excludes sensitive information from logs\n- Provides clear operation status and results\n\n---\n\n*For more information about the Postmark API, visit [Postmark's Developer Documentation](https://postmarkapp.com/developer).* ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factivecampaign%2Fpostmark-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Factivecampaign%2Fpostmark-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factivecampaign%2Fpostmark-mcp/lists"}